-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Auswertung eines GP1A71R(Radencoder)

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2004
    Ort
    Bremen
    Alter
    27
    Beiträge
    308

    Auswertung eines GP1A71R(Radencoder)

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.11.2003
    Beiträge
    355
    was genau willst du auswerten ? gibt mehre sachen:
    für einen bot meist alles aber wer weis
    position /winkel
    drehzahl
    drehrichtung

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    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.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2004
    Ort
    Bremen
    Alter
    27
    Beiträge
    308
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    stimmt denn die beiden signal sind gegeneinader verschoben... (siehe grafik im datenblatt)

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2004
    Ort
    Bremen
    Alter
    27
    Beiträge
    308
    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?

    Code:
    $crystal = 16000000
    
    Config Int0 = Rising
    On Int0 Test
    Enable Interrupts
    Enable Int0
    Do
    Waitms 1
    Loop
    
    
    Test:
    Return
    
    End
    MfG
    Rasmus

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    bei mir kompiliert Bascom das ganze anstandslos...
    ansonsen probier mal
    config int0 = falling

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2004
    Ort
    Bremen
    Alter
    27
    Beiträge
    308
    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

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    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...

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2004
    Ort
    Bremen
    Alter
    27
    Beiträge
    308
    Hi!
    Ich habe jetzt nochmal ein Programm geschrieben das die GPYA71R auswerten sollte, doch irgendwie funzt das nicht.
    Mache ich irgendetwas falsch?
    MfG
    Rasmus

    Code:
    $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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •