-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

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

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2016
    Beiträge
    16

    Kompassmodul GY-271 läuft nicht am UNO

    Anzeige

    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
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2016
    Beiträge
    16
    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 Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.490
    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
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2016
    Beiträge
    16
    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 Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.490
    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 Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.319
    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
    https://github.com/mechasolution/Mecha_QMC5883
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken HMC5883_vs_QMC5883.jpg   HMC5883_vs_QMC5883.jpg  

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    68
    Beiträge
    1.133
    Blog-Einträge
    1
    Hallo Frank!
    Ich habe zwar den GY273, der hat auch den HMC5883L und hatte da mit und Arduino nie Probleme. Kann aber jetzt aus dem Stehgreif nicht auf ein Codebeispiel zu greiffen, weil es in den Tiefen der Datensicherung schlummert.
    Ich hatte das Modul zu meiner aktiven QuadroKopter Zeit zu Testzwecken bei der Code Entwicklung verwendet.
    Also wenn noch Probleme, schreibe mal ..ich bin aber erst mal einige Zeit im Urlaub

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    3.039
    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 14:31 Uhr) Grund: typo
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo Frank,

    ich würde mir da die Kommunikation auf dem I2C Bus mit Skop oder Softwareoszi über die PC Soundkarte ansehen. Da siehst du, was tatsächlich passiert, und wo du genauer hinsehen musst. Das Herumprobieren mit Software und Komponenten, ohne sich die Ergebnisse auf elektrischer Ebene anzusehen ist nur ein Stochern im Nebel. Kurz kann man das machen, aber wenn das nicht schnell hilft, sollte man ganz schnell damit wieder aufhören.

Seite 1 von 2 12 LetzteLetzte

Ä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, 20: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, 19:47
  3. [läuft+Code] Servotest an ATtiny13 läuft nicht
    Von oberallgeier im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 18.10.2007, 16:49
  4. Kompassmodul CMPS03 funktioniert nicht
    Von tuxer im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 24.01.2007, 14:12
  5. Antworten: 3
    Letzter Beitrag: 15.08.2005, 16:41

Berechtigungen

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