- 3D-Druck Einstieg und Tipps         
Seite 5 von 5 ErsteErste ... 345
Ergebnis 41 bis 48 von 48

Thema: RP6 Kompass

  1. #41
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    30
    Beiträge
    129
    Anzeige

    E-Bike
    Ja der I2C Bus funktioniert noch.

    Also die Kommunikation von der M32 Platine und der Base klappt einwandfrei.

    Schade, ich vermute dass ich etwas beim Abrufen falsch mache aber ich habe leide keine Ahnung was.

    Mfg Berghuhn

  2. #42
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    30
    Beiträge
    129
    Hallo,

    ich hatte nun endlich, nach langem rumprobieren einen Durchbruch!

    Ich habe den Fehler gefunden, an dem es lag, dass immer nur ein Wert raus kam.

    Code:
    //bisherige Kompassadresse:
    //#define MAG_ADDRESS           (0x3C)
    
    
    //funktionierende Kompassadresse:
    #define MAG_ADDRESS           (0x3C >> 1)
    Ich bin eigentlich aus zufall darauf gekommen, bin aber daraus noch nicht schlau geworden.
    Wenn mir dass noch einer erklären kann wäre echt super .

    MfG,
    Berghuhn

  3. #43
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Die I2C Adressen sind 7 Bit lang - das unterste bit wird für lesen/schreiben verwendet.

  4. #44
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    30
    Beiträge
    129
    Achso, okay dann ergibt das sogar Sinn ^^.

    Jetzt hätte ich noch eine frage zum Kalibrieren. Wie genau mache ich das?
    Lege ich dabei einfach einen min, max Vektor fest?
    Oder muss ich es schon in das register des LSM303DLH eintragen?
    Wenn ja in welches?

  5. #45
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    30
    Beiträge
    129
    Nach langer Zeit habe ich nun endlich wieder Zeit gefunden meinen RP6 auszugraben und daran weiter zu machen ^^.
    der Kompass ist nur auf der M32 Platine angeschlossen und dass auslesen funktioniert fast ohne probleme ;D.

    Mein Problem ist, dass beim auslesen immer folgender Error kommt:
    I2C ERROR - TWI STATE: 0x20

    dieser wird durch folgenden Code verursacht:

    Code:
    void read_data_raw(vector *a, vector *m)
    {
        
            // read accelerometer values
            I2CTWI_transmitByte(0x30, 0x30);
            I2CTWI_transmitByte(0x30, OUT_X_L_A);
            
            unsigned char axl = I2CTWI_readByte(0x31);
    
            I2CTWI_transmitByte(0x30, OUT_X_H_A);
            unsigned char axh = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Y_L_A);
            unsigned char ayl = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Y_H_A);
            unsigned char ayh = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Z_L_A);
            unsigned char azl = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Z_H_A);
            unsigned char azh = I2CTWI_readByte(0x31);
    
            // read magnetometer values
            
            I2CTWI_transmitByte(MAG_ADDRESS, 0x3C);
            I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_H_M);
            
            unsigned char mxh = I2CTWI_readByte(0x3D);
            
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_L_M);
            unsigned char mxl = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_H_M);
            unsigned char myh = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_L_M);
            unsigned char myl = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_H_M);
            unsigned char mzh = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_L_M);
            unsigned char mzl = I2CTWI_readByte(0x3D);
            
    
            a->x = axh << 8 | axl;
            a->y = ayh << 8 | ayl;
            a->z = azh << 8 | azl;
            m->x = mxh << 8 | mxl;
            m->y = myh << 8 | myl;
            m->z = mzh << 8 | mzl;
        
    }
    
    //... 
    // in der main ist noch folgendes:
        I2CTWI_initMaster(100);  // muss ich diese zahl evtl höher machen?
        I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
        I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
    
        DDRC = 0;
        PORTC = (1 << PC1) | (1 << PC0); // enable pull-ups on SDA and SCL, respectively
    Danke schonmal im vorraus =)

  6. #46
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Hallo,

    was das 0x20 heisst findest Du in der RP6I2CMasterTWI.h aufgelistet dann wirds vermutlich klarer
    (Not-Acknowledge (NACK) received!)

    Die Adresse des Sensors ist 0x30 und nicht 0x31.
    Die I2C Funktionen kümmern sich selbst ums setzen des Read/Write Bits.

    MfG,
    SlyD

  7. #47
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    30
    Beiträge
    129
    Okay dass mit dem 0x20 hat sich geklärt danke =)

    Meine Frage wäre nun,
    könnte man mit einem 2D Kompass (wie z.B. der CMPS03 wenn er senkrecht hingestellt wird) auch die Inklination messen oder kann man damit nur die Deklination messen?

    MfG,
    Berghuhn

  8. #48
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Elektrisch gesehen wird nur eine Feldstärke gemessen und aus welcher Richtung die kommt ist dem Modul recht egal... so lange es seine Lage/Winklel in der Feldlinie feststellen kann. Aber die Inklination misst man ja sinnvollerweise gegen die Pole... was dabei rum kommt wenn man das ganze um 90 Grad dreht.. also entlang der geographischen Breite misst.. keine Ahnung.. aber vermutlich nichts Sinnvolles. Dementsprechend wären Messungen im Bereich von 1 bis 89° bzw. -1 bis -89° Abweichung vom Nordpol mit steigender Abweichung schnell ungenauer. Das sagt mir zumindest die Logik.
    LG Rolf
    Sind Sie auch ambivalent?

Seite 5 von 5 ErsteErste ... 345

Ähnliche Themen

  1. Kompass für RP6
    Von axel88 im Forum Robby RP6
    Antworten: 40
    Letzter Beitrag: 04.08.2008, 19:01
  2. Kompass für nur 5€?
    Von Rohbotiker im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 03.07.2007, 22:11
  3. Kompass
    Von sulu im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 15.08.2005, 11:06
  4. Kompass???
    Von Static im Forum Sensoren / Sensorik
    Antworten: 30
    Letzter Beitrag: 19.01.2005, 00:58
  5. !!!KOMPASS!!!
    Von phönix im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 17.05.2004, 18:14

Berechtigungen

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

LiFePO4 Speicher Test