-         
+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Problem mit Kompass CMPS03

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.04.2004
    Beiträge
    42

    Problem mit Kompass CMPS03

    Hallo!
    Ich habe ein Problem mit dem Kompass CMPS03von Devantech. Ansteuern kann man mittels I2C. Ausgben sollte er den Winkel in auf einen Wert, der normiert auf 0-255 ist. Aber meiner macht das irgendwie nicht. das ist mein Quellcode:

    define SDA port[9] 'DATENLEITUNG
    define SCL port[10] 'TAKTLEITUNG

    define I2C_DATEN byte[1]
    define Z byte[2]
    define KOMPASSWERT byte[3]

    'RUHEZUSTAND FÜR I2C-LEITUNGEN
    SDA = ON
    SCL = ON

    'BEGINN DES HAUPTPROGRAMMS
    #KOMPASS
    gosub I2C_START
    I2C_DATEN = 192
    gosub I2C_WRITE
    I2C_DATEN = 1
    gosub I2C_WRITE
    gosub I2C_STOPP

    gosub I2C_START
    I2C_DATEN = 193
    gosub I2C_WRITE
    gosub I2C_READ
    KOMPASSWERT = I2C_DATEN

    print " "
    print KOMPASSWERT

    gosub NO_ACK
    gosub I2C_STOPP
    goto KOMPASS


    'I2C-STANDARDROUTINEN
    #I2C_START
    SDA = OFF
    SCL = OFF
    return

    #I2C_STOPP
    SDA = OFF
    SCL = ON
    SDA = ON
    return

    #I2C_WRITE
    for Z = 1 to 8
    SDA = OFF
    if (I2C_DATEN and 12 = 128 then SDA = ON
    pulse SCL
    I2C_DATEN = I2C_DATEN shl 1
    next
    pulse SCL
    return

    #I2C_READ
    I2C_DATEN = 0
    deact SDA
    for Z = 1 to 8
    I2C_DATEN = I2C_DATEN shl 1
    SCL = ON
    if SDA then I2C_DATEN = I2C_DATEN + 1
    SCL = OFF
    next
    return

    #ACK
    SDA = 0
    pulse SCL
    return

    #NO_ACK
    SDA = 1
    pulse SCL
    return


    end


    Habe ich vielleicht irgendwo einen Fehler oder kennt jemand das Problem? Für Hilfe wäre ich dankbar!
    MfG
    Jonas

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    52
    Beiträge
    409

    Re: Problem mit Kompass CMPS03

    Hallo Jonas,

    #KOMPASS
    gosub I2C_START
    I2C_DATEN = 192
    gosub I2C_WRITE
    I2C_DATEN = 1
    gosub I2C_WRITE
    gosub I2C_STOPP

    gosub I2C_START
    I2C_DATEN = 193
    gosub I2C_WRITE
    gosub I2C_READ
    KOMPASSWERT = I2C_DATEN
    hier würde ich das I2C_STOPP herausnehmen und stattdessen I2C_START etwas ändern:

    Code:
    #I2C_START
       SDA = ON    ' Neu
       SCL = ON    ' Neu
       SDA = OFF
       SCL = OFF
    return
    Zumindest sind dann die Routinen OK. Natürlich kann es noch andere Fehler (Verdrahtung usw.) geben.

    HTH und Viele Grüße
    Jörg

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.04.2004
    Beiträge
    42
    Hallo!
    danke für den Tipp, aber ermacht keinen Unterschied.
    Vielleicht ist etwas an der externen Beschaltung:

    10müF Kondensator zwischen + und - um Spannugsspitzen abzublocken
    und jeweils einen 1,8kOhm Widerstand von SCL und SDA nach +5V

    Vielleicht passt hier was nicht, aber ich denke nicht.
    MfG

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    52
    Beiträge
    409
    Hallo,

    dann tippe ich wirklich auf ein Schaltungsproblem. Hast du die Massen von der CC und dem CMPS-Modul verbunden? Ist die Versorgungsspannung hinreichend stabil (5V). Die 1,8K Widerstände würde ich für diesen Zweck etwas vergrößern (auf 4,7K). Evtl. SCL und SDA vertauscht oder falsch angeschlossen?
    Ein Kunde hat mal die Portnummern für Anschlussklemmen-Nummern gehalten und das ging natürlich auch nicht.

    Was passiert eigentlich, kommen überhaupt keine Werte oder falsche Werte? Hast du einen Oszi um den Bus mal anzusehen?

    Viele Grüße
    Jörg

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.04.2004
    Beiträge
    42
    Hallo!
    Also Masse und +5V müssten stabil sein: Hab einen 14,4V Akku und erzeuge +5V mittels Spanungswandlers und Masse kann ich ja nur die von der Batterie nahemen.
    Dann versuch ichs mal mit den 4,7k Widerständen, aber verkabelt müsste eigentlich alles passen. Kann vielleicht die Drahtlänge etwas asmachen oder andere Bauteile?
    Als Ergebnis erhalte ich für de Bereich 0-255 nur Werte zwischen etwa 115 und 140, zwar sind sie linear und verändern sich, wenn ich den Roboter drehe, aber das bringt eigentlich nicht so viel.
    Der Kompass kann eigentlich nicht kaputt sein, denn ich habe mit einem am PWM-Ausgang nachgeschalteten Tiefpass sehr gute Werte erhalten (hab aber an CC1 keine analogen Eingägne mehr frei, aber der Tiefpass ist sehr träge und dasist nicht allzu gut)

    Grüße
    Jonas

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    52
    Beiträge
    409
    Hi Jonas,

    hast du einen Oszi um das Signalspiel auf dem Bus mal angucken zu können?

    Viele Grüße
    Jörg

+ Antworten

Berechtigungen

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