- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 25

Thema: RP6: Beispiel Devantech CMPS03

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Zitat Zitat von Fabian E.
    Ich würde sagen du musst vielleicht noch etwas zwischen dem Startbefehl und dem Auslesen der Werte warten?
    Ich kenn mich jetzt mit dem Kompass nicht aus, aber das könnte gut sein.
    Bau doch einfach mal dazischen ein kleines Sleep ein. So 50-100 ms oder so.
    In dem Bascom Beispiel auf RN Wissen seh ich jetzt nicht wirklich einen Wait Befehl, kann ich aber gerne versuchen.

    Hab aber grad ein anderes Problem - Ich hab versucht den Kompass zu kalibrieren (hätt ich besser nicht machen sollen )

    Hab mir extra ne LED an Pin 5 angelötet - RP6 Nach Norden ausgerichtet, eingeschaltet - Pin 6 mit GND verbunden, LED leuchtet, geht 1x kurz aus, Schalter geöffnet - RP6 um 90° weiter gedreht, Schalter geschlossen, LED geht kurz aus, Schalter geöffnet - usw.

    Jetzt hört der Kompass bei ca. 260° zu "zählen" auf - als ob er einen Winkel nicht gespeichert hätte. Hab schon mehrmals kalibriert - immer der selbe Mist
    Was mache ich falsch?

    Edit:
    Also ich empfehle jedem der sich so ein Modul kauft sich die englische Beschreibung durchzulesen - nicht nur die Übersetzung^^
    Kalibrierung hat jetzt geklappt

    @Fabian E.
    sleep hat nix gebracht - es wird immer nur ca. alle 20° gemessen.
    Könnte es daran liegen das beim RP6_readRegister Befehl immer mit NACK quitiert wird?

    ---

    Da das ganze jetzt soweit läuft wie könnte ich jetzt noch zu ner Kommastelle kommen?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    20.06.2011
    Beiträge
    18
    Hi ScummVM,
    wäre ja echt nett wenn Du zum Thema Kalikbrierung mal schreiben könntest weshalb es nicht geklappt hat bzw. was Du dann anders gemacht hast. Habe mir den nämlich auch bestellt und hätte ihn genauso kalibriert wie Du bei Deinem 1. Versuch. Ich hatte die englische Beschreibung gestern nacht mal als Schlaflektüre überflogen, wer mit der englischen Sprache aber nicht so zurecht kommt würde das doch auch gerne verstehen, meinst nicht auch Ich glaube auch gelesen zu haben das die kalibrierung nur vorgenommen werden muss wenn die Neigung(nicht die des kompass! Bezogen auf das Erdmagnetfeld) nicht bei etwa 67 grad liegt. Außerdem würde mich interessieren wie du das jetzt gelöst hast (etwa 4x 255 geschrieben, oder doch anders?). Wäre echt nett von Dir. Werde natürlich auch meine Erfahrungen posten wenn denn der Cmp03 endlich da ist (so in 2, 3 tagen hoffe ich).
    Ach, und wie genau arbeiet der Kompass denn?
    gruß littles

  3. #3
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Hi,
    Puh - ist schon ne Weile her
    Werde morgen mal nachgucken, hab das ganze Zeug auf meinem Netbook.
    Der Kompass arbeitet eigentlich ganz gut - ist aber sehr empfindlich gegenüber anderen Magnetfeldern. Da reicht ein angeschlossenes USB Kabel, aber auch ein normaler Kompass reagiert darauf.
    Der Rest kommt morgen - gn8
    Geändert von ScummVM (10.07.2011 um 23:28 Uhr)

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.06.2011
    Beiträge
    18
    ups, war wohl im gedanken noch in 2010. Dachte der beitrag wäre von letztem Monat. Meinst Du es würde ausreichen wenn ich den vorne auf ne Erweiterungsplatine setze? Ich hatte gehofft den Kompass unter anderem für Drehmanöver zu verwenden, also während der Drehung den kompass abzufragen? Odere reicht da die Distanz zu den Motoren nicht aus? Hab gelesen das er nicht auf den geografischen Nordpol ausgerichtet ist. Das stellt für meinen Verwendungszweck aber glaube keine so große rolle. Hatte vor mit meinen Sensoren und Dem Kompass eine Karte zu Zeichnen und die Strecke die gefahren wurde zurück zu fahren und Hindernisse so umgehen das er den Sinnvollsten weg zurück sucht. Dabei geht es weniger um Zeit als um Ressourcenschonung (manchmal ist weniger eben mehr). Die Empfindlichkeit gegen andere Magnetfelder liegt wenn ich mich da richtig erinnere mit dem verwendeten Material des Sensors zusammen. Ich hatte da mal was interessantes drüber gelesen.
    Ah, google sei dank ich habs gefunden:
    Im Prinzip gibt es verschiedene Möglichkeiten, statische Magnetfelder zu messen. Man könnte
    mit einer rotierenden Spule versuchen über die darin induzierte Spannung das Erdmagnetfeld
    zu bestimmen. Dagegen spricht, dass man bei einem voll elektronischen Kompass gerade
    versucht, rotierende Teile unbedingt zu vermeiden. Eine zweite Möglichkeit wäre ein Hall
    Sensor, jedoch reicht die Empfindlichkeit heutiger Hall Sensoren nicht aus, um einen Kompass
    mit hoher Auflösung zu bauen. Meist werden für Kompass - Magnetfeldsensoren
    weichmagnetische Materialien eingesetzt. Diese reagieren stark nichtlinear auf äußere statische
    Magnetfelder, beschreiben durch die bekannte Hysteresschleife. Weichmagnetische
    Sensoren für die Erdmagnetfeldmessung sind oft als Ring ausgebildet und werden dann als
    Flux - Gate - Sensoren bezeichnet.
    In unserem Fall verwenden wir jedoch einen stabförmigen Sensor aus amorphem weichmagnetischem
    Material. Es wurde uns kostenlos von der Vakuumschmelze Hanau zur Verfügung
    gestellt und hat die Form eines Bandes mit 1 mm Breite und 25 Mikrometer Dicke ( Vitrovac
    6018, Zusammensetzung (Co,Fe,Mn,Mo)70(Si,B)30 ). Amorphe weichmagnetische Materialen
    werden durch rasche Abkühlung einer Metallschmelze erzeugt, wobei die Abkühlgeschwindigkeit
    etwa eine Million Grad pro Sekunde beträgt, so dass die Schmelze keine Zeit
    hat, zu kristallisieren. Der Vorteil amorpher ferromagetischer Materialien ist, dass sie schon
    bei ziemlich geringem äußerem Magnetfeld in die Sättigung geraten, mechanisch aber relativ
    unempfindlich sind.
    Hier noch der link falls jemand interesse hat.
    http://www.fh-rosenheim.de/fileadmin...er_Kompass.pdf

  5. #5
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Mach ja nix wenn der Betrag schon etwas älter ist
    Hab mir die aktuelle Beschreibung des CMPS03 auf robotikhardware.de angesehen und festgestellt das die mittlerweile geändert wurde.
    Ich habe meinen Kompass mit der Pin Methode kalibriert nicht über I2C - im Endeffekt habe ich den Sensor 5x kalibriert Nord/Ost/Süd/West/Nord , dann hats funktioniert.

    Bei mir ist der Kompass ganz vorne auf der Erweiterungsplatine montiert. Gemessen habe ich nur im Stillstand, während der Fahrt habe ich nie gemessen, so hatte ich keine Probleme damit.
    Klicke auf die Grafik für eine größere Ansicht

Name:	RP6.jpg
Hits:	28
Größe:	86,9 KB
ID:	19306

    Zur Abschirmung wäre wohl µ-Metall (http://de.wikipedia.org/wiki/Mu-Metall) am besten geeignet - aber woher nehmen.

    --
    Hab grad festgestellt das ich mein laufendes Programm gar nicht mehr hier reingestellt habe.
    Code:
    /*******************************************************************************
     * RP6 C-Control PRO M128 Erweiterungsmodul
     * ----------------------------------------------------------------------------
     * RP6 - M128 - CMPS03 Kompassmodul Test / Display Test
     * ----------------------------------------------------------------------------
     * by ScummVM
     ******************************************************************************/
    
    // RP6CCLib einbinden
    #include "RP6CCLib.cc"
    
    // RP6 Master Lib einbinden
    #include "RP6MasterLib.cc"
    
    // Stopwatch einbinden
    #include "RP6StopwatchesCClib.cc"
    
    // I²C Bus Adresse des Controllers auf dem Mainboard
    #define RP6_BASE_ADR    10
    
    // Die I²C Adresse des CMPS03 ist 0xC0:
    #define CMPS03_ADR      0xC0
    
    // CMPS03 Daten Register:
    #define VERSION         0               // Firmware Version
    #define LOW             1               // Lowbyte
    #define HIGH            2               // Highbyte
    #define CALIBRATE       15              // Kalibrierung
    
    //CMPS03 DATEN REGISTER AUSLESEN
    
    float grad, value;
    word messung;
    char result[2];
    byte messung_low, messung_high, version;
    
    void readCMPS03(void)
    {
        I2C_Start();
        I2C_Write(0xC0);
        I2C_Write(0xC2); // Register 2 lesen
        I2C_Stop();
        I2C_Start();
        I2C_Write(0xC1); // Register 1 lesen
        messung_high = I2C_Read_ACK();
        messung_low = I2C_Read_NACK();
        version = RP6_readRegister(0xC0, 0);
        messung = (( messung_high << 8 ) + messung_low);
        I2C_Stop();
        RP6_readRegisters(RP6_BASE_ADR, I2C_REG_ADC_UBAT_L, messageBuf, 2);
        adcBat = (messageBuf[1] << 8) | (messageBuf[0]);
    
    
        if (getStopwatch1() > 500) {
    
            value = (adcBat / 102.4);          // Spannung umrechnen
            grad = (messung / 10.0);           // Grad umrechnen
            print("Version: ");                // Version seriell
            printInteger(version);             // Version seriell ausgeben
            print(" | Richtung: ");            // Richtung seriell
            clearLCD();                        // LCD löschen
            printlnLCD("Richtung:",0,0);       // Richtung LCD
            Str_WriteFloat(grad,1,result,0);   // Winkel seriell ausgeben
            Serial_WriteText(0,result);
            setCursorPosLCD(1,0);              // Cursor Position
            writeStringLCD(result);            // Winkel am LCD ausgeben
            println(" Grad");                  // Grad seriell
            print(" | Akku: ");                // Akku seriell
            Str_WriteFloat(value,2,result,0);  // Spannung seriell ausgeben
            Serial_WriteText(0,result);
            println(" V");                     // Einheit Spannung
            setCursorPosLCD(1,6);              // Cursor Position
            printLCD("Grad");                  // Grad LCD
            setStopwatch1(0);
        }
    }
    
    // Mainprogramm
    
    void main(void)
    {
        RP6_CCPRO_Init(); // Auf Startsignal warten!
        I2C_Init(I2C_400kHz);
    
        newline();
        println("   ________________________");
        println("   \\| RP6  ROBOT SYSTEM |/");
        println("    \\_-_-_-_-_-_-_-_-_-_/ ");
        newline();
        println("        CMPS03 Test  ");
        newline();
    
        showScreenLCD("CMPS03 Test","");
    
        beep(100, 200, 300);
    
        setStopwatch1(0);
        startStopwatch1();
    
        while(true)
        {
            readCMPS03();
        }
    }
    Das Programm gibt die Richtung mit Kommastelle auf dem LCD aus und über die Serielle Schnittstelle die Version, Richtung und Akkuspannung. Es lässt sich sicher alles besser lösen - aber es läuft. Das Programm benutzt die Stopwatches für die M128 von Dirk https://www.roboternetz.de/community...ight=stopwatch

    Gruß
    ScummVM

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    20.06.2011
    Beiträge
    18
    Hi!
    Das passt ja. Hab ihn heute zugestellt bekommen!!! Wollte ihn so ziemlich genau so wie Du anbringen, also bin ich schon mal echt begeistert! Den Code hatte ich mal kurz überflogen, konnte ihn aber leider noch nicht testen, da ich heute schon 2 kannen Kaffee intus hab und das dann wohl eher ein Lötfiasko würde , werde ihn aber morgen früh mal "ranschrauben" und testen. Werde ihn über I2C kalibrieren das scheint mir doch die einfachere Methode zu sein. Ansonsten schön Aufgebaut dein rp6. Zum Thema Abschirmung mit MU, http://www.matthey.ch die könnten das liefern, und auch in mengen unter 30 Kg . Aber mal im ernst könnte ich nicht irgendein nichtmagnetisches Metall zur Abschirmung nehmen bzw. sogar Aluminium? Da es ja nur schwach magnetisch ist sollte es doch für eine gewisse Abschirmung reichen, oder habe ich da falsche Erinnerung an den Physikunterricht (hatte ne hübsche Lehrerin, deshalb verzeiht mir bitte wenn ich mich da irre)?
    Gruß littles

  7. #7
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Und schon getestet?
    Probier erstmal wie der CMPS03 läuft - dann kann man immer noch über eine Abschirmung nachdenken (oder etwas höher montieren).
    Geändert von ScummVM (13.07.2011 um 22:49 Uhr)

Berechtigungen

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

LiFePO4 Speicher Test