- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 16

Thema: Kompassmodul GY-271 läuft nicht am UNO

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.10.2016
    Beiträge
    45

    Kompassmodul GY-271 läuft nicht am UNO

    Hallo,
    nachdem ich schon viel getestet hatte, dann dachte mein Sensor ist kaputt und jetzt auch mit dem Nachbestellten kein Erfolg habe streck ich die Flügel. Anbei Bild der Verdrahtung der (Standard-)Sketch sowie die Ausgabe der wirren Zahlen.

    Folgende Fakten:
    Schon mit unterschiedlichen UNO-Clones erfolglos versucht
    Mit zwei GY-271 versucht
    I2C sollte an den Clones arbeiten da ich schon einen erfolgreichen I2C-Zugriff auf einen 24LC64 gemacht habe.

    Kann mir jemand helfen oder ist mir nicht mehr zu helfen

    Danke
    Frank
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken hard.jpg   soft.PNG  

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    14.10.2016
    Beiträge
    45
    Hallo,
    hab jetzt an die 10 Programme aus dem Internet getestet, mal mit HMC5883L.h mal nur mit Wire.h und hab auch den Sensor mit 30 cm langen Kabeln separiert .... nix
    Ich vermute es ist der Arduino Clone der sich nicht mit dem Sensor verträgt. Habe da aber auch unterschiedliche UNO's getestet. Die Clones haben alle den SCL und den SDA separat - beim originalen Arduino sind es ja die Anschlüsse A4 und A5.
    Wahrscheinlich investiere ich in einen professionellen CMPS10 und lass den GY-271 sausen.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von stepbystep Beitrag anzeigen
    Hallo,
    hab jetzt an die 10 Programme aus dem Internet getestet, mal mit HMC5883L.h mal nur mit Wire.h und hab auch den Sensor mit 30 cm langen Kabeln separiert .... nix
    Ich vermute es ist der Arduino Clone der sich nicht mit dem Sensor verträgt. Habe da aber auch unterschiedliche UNO's getestet. Die Clones haben alle den SCL und den SDA separat - beim originalen Arduino sind es ja die Anschlüsse A4 und A5.
    Wahrscheinlich investiere ich in einen professionellen CMPS10 und lass den GY-271 sausen.
    Das kannst du natürlich machen und wie der Zufall es so will, könntest du auch Erfolg haben. Wenn man mit genügend verschiedenen Teilen lange genug rumspielt, hat man möglicherweise irgendwann Erfolg. Du hast ein Problem mit deiner Schaltung und/oder deiner Software und mußt jetzt anfangen den Fehler zu finden und zu beseitigen. In diese Situation wirst du immer wieder kommen, es lohnt sich also mal mit dem Debuggen anzufangen. Und Fehlersuche heißt sicher nicht, immer wieder irgendwelche Software aus dem Internet zu laden.

    Ich verwende keine Arduino, kann daher im einzelnen nichts zu sagen. Ich würd aber so anfangen und Schritt für Schritt vorgehen:.

    Zuerst den Schaltplan mal aufzeichnen und die Schaltung auf dem Papier nachvollziehen. I2C ist ja einfach, sind nur zwei Leitungen. Haben alle Beteiligten eine passende Versorgung? Sind SCL und SDA möglicherweise vertauscht? Sind die Pullups da? Hängen möglicherweise andere, störende Bauteile am I2C Bus?

    Wenn das alles gut aussieht, gehts an die Software. Dazu ein kurzes Programm, das ein START, ein Byte und ein STOP ausgibt. Damit kann man dann mit Scope oder LA (hier besser mit Scope) die Signale ansehen. Die Frage, die sich hier ergeben sind: ist die I2C Hardware richtig initialisiert, sind die Pins richtig gewählt?

    Wenn das soweit funktioniert, sucht man im Datenblatt des Sensors nach seiner I2C Adresse und gibt diese aus. Jetzt sollte der Slave mit einem ACK reagieren. Dies kann man mit dem LA aber auch in der Software erkennen. Nun kann man schon mal mit dem Chip kommunizieren.

    Jetzt kann man sich um die Register des Sensors kümmern, sie nötigenfalls setzten und auslesen. Da hilft wieder das Datenblatt. Und am Ende wird es funktionieren. Ich hab noch jedes I2C Device zum Laufen bekommen, ob "professionell" oder Breakoutboard.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    14.10.2016
    Beiträge
    45
    Hallo,
    danke für die Motivationszeilen.

    Schaltplan ist ok, Pullups mit den richtigen Werten sind eingebaut
    Alle Spannungen gemessen und alles durchgepiepst
    Es hängt nur der GY-271 am I2C
    Adresse 0x1E anhand Datenblatt überprüft und im Programm eingetragen
    ---> Scannerprogramm finden bei 100 kHz die Adresse 0x13D und bei 400 kHz 0xD ??????????
    in anderen Programmen findet detectHMC5883L() jedoch wiederum "no device"
    SDA und SCL sollten funktionieren und nicht vertauscht sein da ich schon einmal ein Eeprom per I2C erfolgreich angesprochen hatte

    Wie sollte ich jetzt weiter vorgehen?

    Frank

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von stepbystep Beitrag anzeigen
    ---> Scannerprogramm finden bei 100 kHz die Adresse 0x13D und bei 400 kHz 0xD ??????????
    0x13D kann nicht sein. I2C Adressen haben 7 Bit, der Maximalwert ist also 0x7f. 0x13d braucht mehr als 8 Bit.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.208
    Das ist ein Fehler in der Konvertierung....13(dec) ergibt D(hex).
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  7. #7
    HaWe
    Gast
    Zitat Zitat von Klebwax Beitrag anzeigen
    0x13D kann nicht sein. I2C Adressen haben 7 Bit, der Maximalwert ist also 0x7f. 0x13d braucht mehr als 8 Bit.

    MfG Klebwax
    ich würde evtl auch noch mal die I2C Adresse(n) checken.
    Probier mal mein Programm

    Code:
        // --------------------------------------
        // i2c_scanner
        //    
        // This sketch tests the standard 7-bit addresses
        // Devices with higher bit address might not be seen properly.
        //
         
        #include <Wire.h>
        
        #define ESP_SDA 4 //GPIO4=D2 SDA ESP8266 default
        #define ESP_SCL 5 //GPIO5=D1 DCL ESP8266 default
    
        byte error, address;
        int nDevices;
     
        void setup()
        {            
          // Wire.begin(ESP_SDA,ESP_SCL);  // ESP8266 if not default
          Wire.begin();                    // AVR, ARM, Leonardo, ESP8266 default
     
          Serial.begin(115200);
          while (!Serial);                 // Leonardo: wait for serial monitor
    
          Serial.println("\nI2C Scanner");     
          Serial.println("\nScanning...");           
        }
         
         
        void loop()
        {
          nDevices = 0;
          for(address = 0; address < 128; address++ )
          {
    
            if (address%16 == 0)  {   
              Serial.println();  
              Serial.print( (address+1)/16);
              Serial.print("  ");
            }
    
            
            if(address==0 || address==127) {
               Serial.print("** ");
               continue;
            }
            
            Wire.beginTransmission(address);
            error = Wire.endTransmission();
         
            if (error == 0)  // no error, device found
            {          
              if (address<16) Serial.print("0"); 
              Serial.print(address,HEX); Serial.print(" ");         
              nDevices++;
            }
            else if (error==4)  // unknown error or conflicting
            {
              Serial.print("?? ");   
            }    
            else
            {      
               Serial.print("-- ");   // nothing found
            }          
          }
          
          Serial.println();
          Serial.print("found: "); Serial.print(nDevices); Serial.print(" devices \n");
          delay(10000);      
        }
    Geändert von HaWe (20.07.2017 um 15:31 Uhr) Grund: typo

Ähnliche Themen

  1. Code läuft nicht feherfrei, bitte um Hilfe! Input Capture und UART nicht gleichzeitig
    Von Accenter im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 04.06.2013, 21:00
  2. getsUSART auf mega168 läuft nicht [gelöst, nicht lesenswert]
    Von oberallgeier im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 24.05.2008, 20:47
  3. [läuft+Code] Servotest an ATtiny13 läuft nicht
    Von oberallgeier im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 18.10.2007, 17:49
  4. Kompassmodul CMPS03 funktioniert nicht
    Von tuxer im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 24.01.2007, 15:12
  5. Antworten: 3
    Letzter Beitrag: 15.08.2005, 17:41

Berechtigungen

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

LiFePO4 Speicher Test