- Labornetzteil 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 Begeisterter Techniker
    Registriert seit
    11.09.2007
    Beiträge
    211
    Kannst du deinen Code anfügen? Würde mich interessieren

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

LiFePO4 Speicher Test