PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auswertung eines GP1A71R(Radencoder)



robotxy
23.05.2005, 12:21
Hi!
Ich bin dabei den GP1A71R zur Positionsbestimmung auszuwerten.
Irgendwie verstehe ich aber den Aufbau des TTL Pegels nicht.
Kann ich, wenn ich den Radencoder mit dem AVR auswerte auch noch einen Servo ansteuern, oder ist das Interrupt-technisch nicht möglich?
Für Codeschnipsel in QBASIC für den AVR wäre ich sehr dankbar!
MfG
Rasmus

MrNiemand
24.05.2005, 14:38
was genau willst du auswerten ? gibt mehre sachen:
für einen bot meist alles aber wer weis ;)
position /winkel
drehzahl
drehrichtung

uwegw
24.05.2005, 15:09
wenn deine interruptroutinen kurz genug sind ist die gleichzeitige ansteuerung von ein paar sevos kein problem...

die GP... haben tll-pegle, das heißt man kann sie direkt an die iengänge des avr anklemmen. eines der signale an nen externen interruptkanal, den anderen an eine normalen pin. wenn der interrupt ausgelöst wird schaun ob der andere pin gerade high ist, wenn ja hochzählen, sonst runter.

robotxy
24.05.2005, 19:32
Also wenn Signal 1 auf High geschaltet wird und der andere auch auf High ist, dann hat sich das Rad um eine Einheit nach vorne Gedreht, wenn das Signal 2 aber dann auf Low ist dann hat sich das Rad um eine Einheit nach hinten gedreht. Ist das Richtig?
MfG
Rasmus

uwegw
24.05.2005, 20:03
stimmt denn die beiden signal sind gegeneinader verschoben... (siehe grafik im datenblatt)

robotxy
25.05.2005, 16:53
Hi!
Ich verwende den Mega32 aber irgendwie bekomme ich bei folgendem Code eine Fehlermeldung:"INT0-INT3 are always low triggered in the Mega".
Oder muss ich das mit den Interrupts anders lösen?



$crystal = 16000000

Config Int0 = Rising
On Int0 Test
Enable Interrupts
Enable Int0
Do
Waitms 1
Loop


Test:
Return

End


MfG
Rasmus

uwegw
25.05.2005, 17:29
bei mir kompiliert bascom das ganze anstandslos...
ansonsen probier mal
config int0 = falling

robotxy
25.05.2005, 17:49
Ich glaube das liegt an meinem Controller, da er ja meint da sich der Fehler auf den Mega bezieht. Hast du Bascom auf den M32 umgestellt?
Ist das denn überhaupt der richtige Lösungsansatz? Achja "falling" geht auch nicht.
MfG
Rasmus

uwegw
26.05.2005, 11:25
Hast du Bascom auf den M32 umgestellt?
ich hab das regfile eingebunden und jetzt auch noch mal in den optionen mgeschaltet... er nimmts immer noch an...

welche verion hast du? ich hab die 1.11.7.3 demo...

robotxy
28.06.2005, 16:14
Hi!
Ich habe jetzt nochmal ein Programm geschrieben das die GPYA71R auswerten sollte, doch irgendwie funzt das nicht.
Mache ich irgendetwas falsch?
MfG
Rasmus



$crystal = 16000000
$baud = 9600
Config Pind.4 = Input
Config Pind.5 = Input
Dim Rechts As Long , Links As Long
Config Int0 = Falling
Config Int1 = Falling
On Int0 Enc1
On Int1 Enc2
Enable Interrupts
Enable Int0
Enable Int1
Do
Waitms 1000
Print Rechts
Print Links
Loop


Enc1:
If Pind.4 = 1 Then
Links = Links + 1
Else
Links = Links - 1
End If
Return
Enc2:
If Pind.5 = 1 Then
Rechts = Rechts + 1
Else
Rechts = Rechts - 1
End If
Return
End

cht
28.06.2005, 17:09
das dürfte dich interessieren - hier hatte bluesmash eine ähnliche frage:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=91390
wie dort schon erwähnt, Hardwarezähler haben Vorteile.
mfG

cht

robotxy
29.06.2005, 15:02
naja ich habe jetzt schon mehrmals gehört das das auch PRoblemlos mit einem Microcontroller geht. Aber irgendwie funzt mein Programm halt nicht.
MfG
Rasmus

PicNick
29.06.2005, 16:13
"INT0-INT3 are always low triggered in the Mega"

Dieser Fehler ist im BasCom 1.11.7.7 ( 8 ) behoben