- fchao-Sinus-Wechselrichter AliExpress         
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 Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Probiers mit einer neuen Kalibrierung, aber weit weg vom Schreibtisch, Heizkörpern, oder allen anderen großen Metallteilen. Dann geht es so halbwegs.
    Zusammen mit den Beschleunigungssensoren ist der Kompass etwas träge, er braucht 640ms um einen neuen Wert zu berechnen. Daher mal langsam die Plattform drehen.
    Ich will eine eigene Software für die Auswertung der Rohdaten basteln, aber kennt einer eine Methode wie man die Werte kalibriert?
    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.)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    365
    Hallo,

    also der CMPS10 ist recht genau, deine 10° sind absolut nicht nachvollziebar...
    Ich habe 2, brauchte bisher keinen Nachkalibrieren, dies kannst Du allerdings gern tun, man kann ihn ja wieder auf Werkskalibrierung zurücksetzen. Wichtig ist wirklich, je nach Metallart und Größe recht weit weg zu bleiben. Schon kleinere Teile welche man so im Bot verwendet störten bei mir bereits in 15cm Nähe. Eventuell kannst Du das Teil mit einem "Nichtmetallstab" von der Plattform (vielleicht nach oben) absetzen, natürlich weiß ich nicht ob dies bei Dir geht.
    Also ich lese auf Basis I²C in deutlich schnelleren Zyklen, nämlich im zweistelligen ms Bereich, aus, habe jetzt aber nicht ins Datenblatt geschaut, denke aber die 640ms sind sicher noch etwas anderes. Seriell und PWM habe ich allerdings keine Erfahrungen.

    Also teste ihn nochmal, weit ab von Metallteilen und Flächen und am besten mit Examples welche dazu angeboten werden. Es sei denn Du bist sicher, dass kein Fehler in Deiner Software ist, ich habe keine Abweichung größer 3° bei mir feststellen können.

    Gruß André

  3. #3
    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

  4. #4
    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.)

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

  6. #6
    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
  •  

Labornetzteil AliExpress