- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Kompasssensor cmps03 funktioniert nicht!?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.12.2007
    Beiträge
    15

    Kompasssensor cmps03 funktioniert nicht!?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Habe den Kompasssensor Cmps03 wie im RN-Wissensbereich angeschlossen und verwende das dort angegebene Beispielprogramm. Der Bascom-Terminal gibt mir aber nur einen konstanten Wert von 65535 aus egal wie ich den Sensor bewege.
    Wenn ich den Sensor von PortC abziehe und das Programm starte wird ebenfalls ein Wert von 65535 ausgegeben.

    Wie bekomme ich heraus, ob der Sensor noch funktioniert oder wo sonst das Problem liegt?

    MfG

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Glaskugel: Welche Hardware? Anschluß des CMPS03?

    Gruß Dirk

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.12.2007
    Beiträge
    15
    Hi,

    sorry habe mich etwas ungenau ausgedrückt.

    Ich verwende ein RN-Contrlerboard mit Mega32. Habe die PINs des Sensors: +5V, GND, SCL und SDA mit den zutreffenden PINs des Wannenstecker von PortC (I2C) verbunden.

    Das Programm habe ich aus dem RN-Artikelbereich:

    Code:
    Declare Function Rn_cmps_himmelsrichtung() As Word
    Declare Function Rn_cmps_firmware() As Byte
    
    
    ' ---------- Das RN-Control übliche --------------
    $regfile = "m32def.dat"
    $framesize = 42
    $swstack = 32
    $hwstack = 32
    
    $crystal = 16000000                 'Quarzfrequenz
    $baud = 9600
    Config Scl = Portc.0                'Ports fuer IIC-Bus
    Config Sda = Portc.1
    ' ------------------------------------------------
    
    Dim Himmelsrichtung As Word
    Dim Grad As Single
    Dim V As Byte
    
       Wait 3                           'Warte 3 Sekunde
       I2cinit
       Print "RN-Control CMPS03 Kompass Testprogramm "
       Print "CMPS03 Kompass Firmware Version:" ; Rn_cmps_firmware()
    
    
       V = 1
       Do
         Himmelsrichtung = Rn_cmps_himmelsrichtung()
         Print "Himmelsrichtung in 0,1 Grad Schritten: " ; Himmelsrichtung
         Grad = Himmelsrichtung / 10
         Print "Himmelsrichtung genau in Grad: " ; Grad
    
         V = V + 3
         Wait 1
       Loop
    
    End
    
    
    
    Function Rn_cmps_himmelsrichtung() As Word
    Local Lob As Byte
    Local Hib As Byte
    Local Cmps_slaveid As Byte
    Local Cmps_slaveid_read As Byte
    
       Cmps_slaveid = &HC0
       Cmps_slaveid_read = Cmps_slaveid + 1
    
       'Register auswählen
       I2cstart
       I2cwbyte Cmps_slaveid
       I2cwbyte 2
       I2cstop
    
       I2cstart
       I2cwbyte Cmps_slaveid_read
       I2crbyte Hib , Ack
       I2crbyte Lob , Nack
       I2cstop
    
       Rn_cmps_himmelsrichtung = Makeint(lob , Hib)
    End Function
    
    
    Function Rn_cmps_firmware() As Byte
    Local Firmware As Byte
    Local Cmps_slaveid As Byte
    Local Cmps_slaveid_read As Byte
    
       Cmps_slaveid = &HC0
       Cmps_slaveid_read = Cmps_slaveid + 1
    
       I2cstart
       I2cwbyte Cmps_slaveid
       I2cwbyte 0                'Leseregister festlegen
       I2cstop
    
       I2cstart
       I2cwbyte Cmps_slaveid_read
       I2crbyte Firmware , Nack
       I2cstop
    
       Rn_cmps_firmware = Firmware
    End Function
    Danke & Grüße
    Hendrik

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.12.2007
    Ort
    Hamburg
    Alter
    56
    Beiträge
    254
    Vieleicht falsch kallibriert?
    Meine Uhr (mit Kompass, Höhenmesser, Temperatursensor und Tiefenmesser, ...) hat am Anfang auch falsche Werte ausgegeben.
    Eine Kalibrierung mit 180 Grad drehung hat dann Erfolg gebracht.
    Dadurch wird z.B. eine Magnetisierung der Uhr selbst, ... herrausgerechnet. Es könnte sein, daß dein Sensor also nicht kalibriert wurde oder durch ein Störfeld abgelenkt wird.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Hendrix85,

    wenn er am Anfang die Software-Version zeigt, ist schon mal die Hardware-Seite und die I2C-Quatscherei ok.
    Wenn nicht, must du erst da suchen

    Kalibirieren würde ich zunächst nicht, weil die Werkskalibrierung meistens erstmal ok ist.

    Gruß Dirk

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    12.12.2007
    Beiträge
    15
    Hallo Dirk,

    Was meinst du mit: „wenn er am Anfang die Software-Version zeigt“ ?

    Wie gesagt, wenn ich den Sensor abziehe bringt er mir den selben Wert. Ich befürchte, dass der Sensor kaputt ist.

    Hat denn schon mal jemand das obige Programm genutzt?

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Was meinst du mit: „wenn er am Anfang die Software-Version zeigt“ ?
    Naja, am Anfang deines Progs gibt er doch seine Software-bzw. Firmware-Version aus. Du hast da den Befehl reingeschrieben:
    Print "CMPS03 Kompass Firmware Version:" ; Rn_cmps_firmware()

    Da müßte dann die Version als Zahl auf dem Terminal erscheinen. Mach 'mal probeweise dahinter ein längeres Wait oder End.
    Wenn es bis dahin funktioniert, dann redet der CMPS03 mit dir über I2C, d.h. er ist ansprechbar.

    Wenn das auch schon nicht klappt, dann hast du noch gar keine Verbindung zum CMPS03 und must die Hardware/Anschlüsse überprüfen!

    Gruß Dirk

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    12.12.2007
    Beiträge
    15
    Also Rn_cmps_firmware() gibt mir immer 255 aus, auch wenn der Sensor garnicht angeschlossen ist.

    Hier mal die kommplette Ausgabe am Terminal:

    "RN-Control CMPS03 Kompass Testprogramm
    CMPS03 Kompass Firmware Version:255
    Himmelsrichtung in 0,1 Grad Schritten: 65535
    Himmelsrichtung genau in Grad: 6553.5
    ..."

    und jetzt noch mal die genaue Verdrahtung vom Sensor zum Board:

    Sensor: Board(PortC):
    Pin1(+5V) -> Pin10(+5V)
    Pin2(SCL) -> Pin1(SCL)
    Pin3(SDA) -> Pin2(SDA)
    Pin9(GND) -> Pin9(GND)

    Grüße Hendrik

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    An Stecker PortC ist die Belegung ok.

    1. Du bist aber sicher, dass du nicht am I2C-Stecker angeschlossen hast, da wäre die Belegung nämlich anders?

    2. JTAG ausgeschaltet?

    3. Frage: Gibt es Pullup-Widerstände an SCL/SDA auf dem RN-Control? Wenn nein, jeweils 4k7 an +5V.

    Gruß Dirk

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    12.12.2007
    Beiträge
    15
    Hallo Dirk

    1. Du hast natürlich recht. Meine Angaben zur Verdrahtung beziehen sich auf den I2C-Stecker. Am PortC sind PC0 = SCL und PC1 = SDA. Das habe ich aber soweit richtig gemacht. Habe SCL und SDA auch schon direkt am PortC angeschlossen, was aber keine Änderung gebracht hat.

    2. JTAG? Da musste ich mich erstmal schlau machen und habe herausgefunden, dass das eine Schnittstelle für den Test von logischen Schaltungen ist ... Ich konnte aber nirgendwo finde, wie man diese aktiviert/deaktiviert. Läuft bestimmt über die Fuse-Bits?


    3. Auf dem RN-Control sollten Pullup-Wiederstände sein. Zumindest wird im Datenblatt auf der Robotikhardware-CD angegeben, dass mit der Verwendung eines RN-Control keine zusätzlichen Pullup's benötigt werden.

    Vielen Dank
    Grüße Hendrik

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test