PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Encoder Progr. Erkl.



Astro
30.07.2007, 22:54
Kann mir jemand eventuell neben dem Programm ein Paar Erklärungen zu den Werten ind den Commandos schreiben das währe sehr gut das könnte mir weuiter helfen Danke für jeden Tip

Ich müsste dieses umschreibn so das es den Weg nicht misst sondern den weg durch den Encoder messen(keine msleep Programmierung) kann das ich kleine unangenehmen Abweichungen beheben kann

eventuell reichen auch Erklärungen zu den Werten und Den Commands

Controller ATMEL128

'################################################# ##
'rncontrol_drehzahl.BAS
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1
'Das neue preiswerte Controllerboard zum experimentieren

' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.8 getestet

'
'Aufgabe:
' Dieses Testprogramm demonstriert wie man mit Drehgeber
' die Umdrehungszahl von Motoren anzeigen kann
' Als Drehgeber wird ein Sharp GP1A030 mit Codescheibe
' verwendet (siehe http://www.robotikhardware.de Rubrik Sensoren)
' In diesem Demo wird nicht die Drehrichtung ausgewertet, daher
' wird nur ein Interrupt Port (INT0) an den Sensorausgang (VOA)
' angeschlossen. Zudem noch +5V, GND und +5V wüber 330 Ohm
' Widerstand an Anode des Sensors. Also einfachste Beschaltung.

' Wenn man nun Programm startet wird jede Sekunde die Drehzahl
' ermittelt und alle 3 Sekunden über RS232 auf einem
' Terminalprogramm (oder KN-KeyLCD) ausgegeben.

' Das Programm eigent sich somit zum Messen von Drehzahlen als
' als auch zur Überprüfung der Drehgeberfunktion. Es läßt sich
' sehr einfach zu Wegstrecken Auswertung ausbauen. Statt
' an einem Interrupt könnte man Sensor auch an einen Timereingang
' anschließen, jedoch wird dies hie rim Programm nicht berücksichtigt.



'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######



$regfile = "m32def.dat"
' bei Mega 16 $regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 16000000 'Quarzfrequenz
$baud = 9600



Config Int0 = Falling

Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
Const Markierungenproscheibe = 120

Dim Zaehlerirq0 As Long
Dim Impulseprosekunde As Long
Dim Impulseprominute As Long
Dim Umdrehungenprominute As Integer

Print
Print "* RN-CONTROL 1.4 *"
Print "Drehzahl Messung" "



Zaehlerirq0 = 0
On Int0 Irq0
Enable Int0

On Timer1 Timer_irq
Enable Timer1

Enable Interrupts


Do
Print
Print "Impulse Sek: " ; Impulseprosekunde
Impulseprominute = Impulseprosekunde * 60
Umdrehungenprominute = Impulseprominute / Markierungenproscheibe
Print "Umdreh. Min: " ; Umdrehungenprominute
Wait 3
Loop

End




'Pro Impuls (Markierung auf Scheibe) ein Aufruf
Irq0:
Incr Zaehlerirq0
Return


'Pro Sekunde ein Aufruf
Timer_irq:
Timer1 = Timervorgabe
Impulseprosekunde = Zaehlerirq0
Zaehlerirq0 = 0
Return

Astro
31.07.2007, 14:23
Wenn ich das oben in Bascom schreibe kann ich das ja ohne Probleme Compilieren in mega128 oder?

UlrichC
31.07.2007, 18:13
ist für einen Mega32 (m32def.dat) .



On Int0 Irq0 'Befehl = Wenn am interupt 0 was passiert springe zu Irq0(:)
Enable Int0 'Interupt aktivieren

On Timer1 Timer_irq 'Befehl = Wenn der Timer Anspricht springe zu Timer_irq(:)
Enable Timer1 'Timer aktivieren

---
Irq0: 'Zählt die Impule = Teilstriche auf Encoderscheibe

Timer1: 'Verrechnet jede Sekunde die ergebnise aus Irq0 und gibt die aus
--------------------


Ich hoffe das hilft etwas...
Sorry, ich kann sowas nicht wirklich erklären, weil es ja eigentlich selbsterklärend ist.

Grüße
Christian

Astro
31.07.2007, 18:43
Der oben genannte code ist also die weg strecke über Impuls aus dem Encoder an den Motor ( Kontrollierte Fahrt der weg strecke)
mit welche Code(Commando lass ich denn beide Motoren über beide Encoder laufen ca 1m mit einer scheibe von 120 strichen 1 Umdrehung ist 31,4cm?
sorry die frage aber ich fang erst an!

UlrichC
31.07.2007, 21:30
Hi!

Genau genommen ist der Code oben nur die Geschwindigkeit der Motoren.
Noch genauer genommen ist der Code nur ein Testprogramm für einen Encoder von dem man seine Wünsche ableiten kann.
Wieviel cm eine Umdrehung sind Berechnet man einfach mit Raddurchmesser(cm) * Pie(3,14xxxx).

Ich kann dir leider auf die Schnelle kein fertiges Programm aus dem Ärmel schütteln. Zudem würde dir das nicht wirklich Helfen.. denn Du willst ja was lernen ;-)
Versuche doch erstmal die Motoren zum laufen zu bringen.

Der Mega32 hat z.B. 2 Interupts die du dann verwenden könntest INT0 und INT1 ... das wären die "zwei" Encoder.

Mit was für einem Contoller bzw. Board arbeitest du?
Das ist wichtig, mit dieser Information können dir dann sicher mehrere helfen.
(Mega128 ?!?)

Das du gerade Anfängst ist super! Nur der Ansatz ist etwas weit vorne. Du solltest vl. erst etwas über die Programmiersprache und das Programmieren an sich in Erfahrung bringen.
Das Ziel hast du ja schonmal "Du willst den Code verstehen und für deine Motoren nutzen".
Da helfen die Grundlagen von BASCOM weiter als eine Coderklärung.
... 0. Mache ein paar schlichte Ausgaben mit "print"
1.bringe LEDs zum Blinken
2.bewege Motoren
3.lese Sensoren aus
X.dann erst ist der Zeitpunkt sich über Programmabläufe gedanken zu machen.
Ist irgendwie wie Autofahren erst Einsteigen und dann Anfahren und Blinken lernen usw. .

Ich hoffe mein Beitrag hat dich nicht zusehr generft oder entmutigt!

Grüße
Christian

Astro
31.07.2007, 22:17
Hi
Ich hab schon mal ein Programm mit einer Zeitschaltung also in ms geschrieben und da waren Schleifen drin wegen den Sensoren mein Board hat 2 intigrierte LEDs die blinken alle 500ms 1 mal am Anfang und per Button fährt der Robo. los nen Beeper der einen Signal Ton gibt hab ich auch zum beepen gebracht
das Ding ist Richtung Wohnzimmer gefahren aber dann hab ich gemerkt das es nichts bringt ohne die beiden Encoder und jetzt denk ich das ich da einiges dazu lernen muss um die Encoder zu benutzen da durch die Spannung ja doch der weg nicht genau gefahren werden kann und das Board ist ein Soccer Board(für Encoder Digital Ausgänge)+ 4 IR Sens. mir fehlen halt die Befehle und ich müsste halt wissen wo die Werte sind die ich ab ändern muss um den weg zu dirigieren den er zurück legen soll dann müsste ich mir wenn das geklappt hat noch in Erfahrung bringen wie ich die Sensoren in den block den ich schreibe bei den Motoren Intigriere da haberts dann auch wenn ich die Motoren mit den Encodern zu laufen gebracht habe!
Ich hoffe ich kann die Commandos die ich mir angeeignet für LED Button und Beeper bei der Zeitsteuerung noch benutzten und mit einbinden!
ich hab noch keine Ahnung was mich da erwartet mit den Encoder nur die Anwendung für den zweck versteh ich!

Es sollte irgendwann ein Service und (Vereinfachter-Sicherheits Roboter) werden!
Das mit dem Kurz Programm ist ja nicht viel nur so 1meter geradeaus und dann eine rechts Kurfe und mit beiden Sensoren noch mal 1meter,das reicht denke ich aus um dann den Parkur hoffe ich alleine schreiben zu können,eventuell nco ein parr tips dazu!

Ich find es klasse das mir da jemand einen Text schreibt der fast eine Din. A4 Seite ist danke!


Ps: Der Robo. auf der Seite ist genial das Getriebe ist irre kompliziert das da drin sein muss und schwenkbar denk ich ist ES auch ich kann zwar nicht rein schauen aber mit,ich denke 4 Motoren+Sensoren(Ich glaube eine IR Cam hab ich gesehen) und den ??????? das es verbiergt,da geht schon was was das Programm angeht da hast du in sachen Überwachung nicht viel ausgelassen!

MFG Rainer!!

UlrichC
03.08.2007, 00:56
Hallo Rainer,
hab mal ein wenig über dein Board gelesen.

Das Board nun für mich doch etwas transparenter geworden.

1. Wenn du bei denen die Encoder gekauft hast kannst du da (normalerweise) nix verklemmen.
Die Verkabelung ist schon fertig bzw. vorbereitet mit den entsprechenden Steckern.

2. Falls du die Encoder wo anders gekauft hast ist das auch kein Hexenwerk, da kann man auch nach der RN-Wissen Verkabelung verfahren.

3. Anhacken geht auf jeden Fall mit dem ATMega128 der hat mehr IOs als man zu Begin nutzen kann.

Hast du eine Beschreibung zu dem Board dazubekommen?
Wenn ja würde die mich mal interessieren.

Abgesehen vom offenbar missen Support usw. ist das Board an sich eigentlich ok.

Meld dich einfach wieder wenn eine Encoder eintrudeln

Bis denn
Christian

Astro
03.08.2007, 14:58
Hi!
Ich hab da ein Datenlatt über das Board ich denke da stehen die Digital Ports so drin das man die 5V ,Gnd und Signal Raus lesen kann schau dir das aber noch mal an ich wollte es nicht falsch anklemmen!
ich weiss nur nicht wo ich es hinschicken soll.

UlrichC
03.08.2007, 20:02
Hi!
Ich hab da ein Datenlatt über das Board ich denke da stehen die Digital Ports so drin das man die 5V ,Gnd und Signal Raus lesen kann schau dir das aber noch mal an ich wollte es nicht falsch anklemmen!
ich weiss nur nicht wo ich es hinschicken soll.
Tach,
zu mir geht das mit den Dateien mit einem Formular:
http://www.ulrichc.de/cgi-bin/exec/cu-upload.pl
Oder PM.
Meine E-Mail will ich hier nicht reinposten... sonst habe ich wieder 5 Wochen Spam im Mailer ;-)

Du kannst es auch hier posten (Add Attachment oder Dateinalage beim Beitrag erstellen). Das wäre sogar besser, denn vielleicht findet sich doch noch jemand hier der auch mit dem Board von QFix arbeitet oder zumindest den ATMega128 soweit kennt, das er dir helfen kann.

Viele Grüße,
Christian

PS: Wenn man die richtigen Antworten haben möchte kann man auch die Frage entsprechend optimieren..
Nenne diesen Thread mal in "Mega128 Encoder anschließen" um. Betreff "Encoder Progr. Erkl." macht keinen Spaß ;-)