- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 13

Thema: CMPS10 Genauigkeit

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.09.2007
    Beiträge
    211
    Hallo,

    ich konnte jetzt mein U testen. Die Teile sind magnetisch und mit Sicherheit für die Probleme verantwortlich. Ich überlege nun, ob ich das Teil umbaue oder den Sensor wegsetze.
    Wahrscheinlich werden magnetische Teile in der Nähe immer für Probleme sorgen, daher ist mit Sicherheit der Umbau die beste Lösung.

    Gruß
    Alex

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Ich habe jetzt die Auswertung der Rohdaten (Register 10-13) für x und y (atan2(y,x) damit Werte im Kompasswinkel rauskommen) hinzugefügt:
    Damit wird der aktuelle Kompasswinkel schnell und sicher berechnet, die Werte werden 4x pro Sekunde abgefragt und sind jedesmal aktualisiert. Kalibriert ist da in der Auswertung noch gar nichts.

    Der vom CMPS10 selbst berechnete Winkel (Register 2+3) dagegen stimmt nur im Bereich zwischen 0 und PI/2, und kommt mit neuer und zurückgestellt auf Werkskalibrierung nie über PI hinaus. Und bis sich hier ein stabiler neuer Wert einstellt vergehen schon mal ein 1-2 Sekunden, da wie oben erwähnt die Auswertung der Beschleunigungssensoren 640ms dauert, und ein paar Durchläufe für stabile Werte benötigt werden.

    Also ich bleib mal bei der Auswertung der Rohdaten, keine Ahnung warum mein CMPS10 selbst so falsche Werte berechnet.

    LG!
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.09.2007
    Beiträge
    211
    Kannst du deinen Code anfügen? Würde mich interessieren

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Hier der Code der Funktion, die Ergänzung ist schnell hingepfuscht. Ich verwende als Winkel Radiant*1000, dh PI/2 ist hier 3141 um in weiteren Berechnungen die schnelleren Integervariablen verweden zu können.

    Code:
    static inline void Kompass()
    {
    
    unsigned short h,l;
    short x,y,xx,yy,kompass_x;//,offset_x,offset_y;
    double temp;
    
    //offset_x=-125;offset_y=15;
    
        if(!(i2c_start(Adresse_Kompass)))    
                {
                i2c_write(2);      // register  
                i2c_rep_start(Adresse_Kompass+I2C_READ);      // restart        
                h=i2c_readAck();
                l=i2c_readAck();
                kompass_akt=uniq(l,h);    
                l=i2c_readAck();//4
                l=i2c_readAck();//5
                l=i2c_readAck();//6
                l=i2c_readAck();//7
                l=i2c_readAck();//8
                l=i2c_readAck();//9
                h=i2c_readAck();//10
                l=i2c_readAck();//11
                xx=uniq(l,h);
                h=i2c_readAck();//12
                l=i2c_readNak();//13    
                yy=uniq(l,h);
                i2c_stop();
    
                x=xx-(-125); // Offset Test
                y=yy-15; // Offset Test
    
                temp=1000*atan2(y,x); // für Kompasswinkel            
    
                kompass_x=(short)temp;
                if (kompass_x<0) kompass_x=kompass_x+6282;
    
    richtung_kom=(kompass_akt/10); // Umrechnen rad*1000
    richtung_kom=(richtung_kom*35)/2;
    // für Testauswertung debug_eins=richtung_kom; debug_zwei=kompass_x;
    debug_fuenf=xx; debug_sechs=yy;
    } else richtung_kom= (-9999); // verwerfen wenn keine neuen Daten vorhanden }
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

Ähnliche Themen

  1. CMPS10 defekt?
    Von avlbger im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 24.07.2012, 21:29
  2. CMPS10 E-I2C Example v1.1 for C-Control I V2.0
    Von Windt H.J. im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 09.11.2011, 12:11
  3. Timer 1 Genauigkeit
    Von asunn im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 27.06.2008, 22:51
  4. AD Genauigkeit erhöhen
    Von philiph im Forum Sensoren / Sensorik
    Antworten: 5
    Letzter Beitrag: 01.10.2006, 16:02
  5. AD-Wandler Genauigkeit
    Von Arexx-Henk im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 17.03.2006, 15:23

Berechtigungen

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

12V Akku bauen