- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: RP6: Beispiel Devantech CMPS03

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    25.12.2008
    Beiträge
    27
    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    also ich bekomme das ganze irgendwie nicht richtig zum laufen. Den Kompass habe ich ca. 5 cm über den RP6 horizontal ausgerichtet befestigt und via I²C-Bus kalibriert. Leider zeigt mir das Modul immer nur Werte von ca. 170 Grad an, egal in welche Richtung ich den RP6 nun drehe. Wenn ich das Modul nun aber festhalte und den RP6 drehe kommen einigermaßen vernünftige Werte dabei raus. Die Motoren laufen dabei nicht! Dennoch scheint der RP6 den Kompass irgendwie zu beeinflussen.

    Hat einer von euch das Modul an den RP6 zum laufen bekommen? Wenn ja, wie groß ist der entsprechenden Abstand zwischen RP6 und Kompass? Muss man das ganze abschirmen?

    Ich hoffe dass jemand einen Tipp hat..

    mfg
    benx

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo benx,

    das Problem dürfte sein, dass die Motoren natürlich Permanentmagneten drin haben die "immer an sind" egal ob die Motoren laufen oder nicht.

    Also muss der Kompass so hoch wie möglich und da die Motoren eher im hinteren Bereich des Roboters liegen möglichst weit vorne am Roboter befestigt werden.

    (richtiges) Abschirmblech kann natürlich auch helfen.
    Musst dann aber welches nehmen das auch Magnetfelder abschirmt - also Kupfer wird eher nicht funktionieren
    Eisenblech, MuMetall und solche geschichten mein ich ...

    MfG,
    SlyD

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    25.12.2008
    Beiträge
    27
    Hallo SkyD,

    hatte mir genau ein Plätzchen ziemlich in der Mitte ausgesucht. Da hat man wohl keine Chance. Habe das Modul nun ganz vorne montiert... das klappt super. Aber jetzt wird das mit dem LCD auf dem M32 wohl etwas eng.. na mal schauen wie ich das löse...

    @offTopic: Planst Du eigentlich zur Zeit weitere Erweiterungen für den RP6?

    mfg
    benx

  4. #14
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Tag Zusammen,

    Nach langem rätseln und suchen hab ich es geschafft das Programm an meine M128 anzupassen - war gar nich mal so leicht, für mich als Einsteiger

    Allerdings hab ich noch zwei Probleme:

    Wie kann ich mir die Kommastelle anzeigen lassen? So wie bei dem Base Programm funktioniert das nicht.

    Des weiteren scheint der Kompass die Grade falsch zu messen.
    Norden -> 25°
    Osten -> 100°
    Süden -> 160°
    Westen -> 250°

    Ich hab meinen Kompass noch nicht kalibriert. Das Kompass Modul ist doch schon vorkalibriert - mit meinem Taschenkompass werde ich die Kalibrierung wohl auch nicht besser hinbekommen. In der nähe des RP6 hat man ja überall Magnetfelder (Motoren, etc.).
    Wie kalibriere ich den Kompass am besten?

    Hier noch mein Programm:
    Code:
    /*******************************************************************************
     * RP6 C-Control PRO M128 Erweiterungsmodul
     * ----------------------------------------------------------------------------
     * RP6 - M128 - CMPS03 Kompassmodul
     * ----------------------------------------------------------------------------
     *
     ******************************************************************************/
    
    // RP6CCLib einbinden
    #include "RP6CCLib.cc"
    
    // Stopwatch einbinden
    #include "RP6StopwatchesCClib.cc"
    
    // I2C 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
    
    void readCMPS03(void)
    {
        word messung;
        byte messung_low, messung_high;
        Thread_Lock(1);
        I2C_Start();
        I2C_Write(0xC0);
        I2C_Write(2); // Register 2 lesen
    
        I2C_Start();
        I2C_Write(0xC1); // Register 1 lesen
        messung_high = I2C_Read_ACK();
        messung_low = I2C_Read_NACK();
        messung = (( messung_high << 8 ) + messung_low);
        I2C_Stop();
        Thread_Lock(0);
    
        if (getStopwatch1() > 500) {
            print("Richtung: ");
            printInteger(messung / 10);
            println(" Grad");
            setStopwatch1(0);
        }
    }
    
    
    
    /** CMPS03 Kalibrierung
    
    void calibrateCMPS03(byte data)
    {
        if (data) {data = 255;}
        RP6_writeCMD_2parm(CMPS03_ADR, CALIBRATE, data);
    }
    */
    
    // Mainprogramm
    
    void main(void)
    {
        RP6_CCPRO_Init(); // Auf Startsignal warten!
        I2C_Init(I2C_100kHz);
    
        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();
        }
    }

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Wäre es nicht einfacher, direkt die I2C-Methoden aus der RP6 Lib zu nehmen?
    Beim Schreiben machst du das ja, aber beim Lesen noch nicht.

    Kannst dir ja mal den Quellcode zur Ansteuerung der SRF02 bei meiner Remotrol ansehen.
    Ansosnten solltest du zur Kalibrierung am besten nach draußen gehen.
    Dort stören dann auch eventuelle Stahlarmierungen im Boden nicht mehr.
    Außerdem solltest du natürlich den Kompass möglichst weit weg vom RP6 platzieren, 20 cm oder am besten noch mehr.

  6. #16
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Du meinst so: ?
    Code:
    void readCMPS03(void)
    {
        word messung;
        byte messung_low, messung_high;
        Thread_Lock(1);
        RP6_writeCMD(0xC0, 2);
    
        RP6_writeCMD(0xC0, 1);
    
        messung_high = RP6_readRegister(0xC0, 2);
        messung_low = RP6_readRegister(0xC0, 1);
        messung = (( messung_high << 8 ) + messung_low);
        Thread_Lock(0);
    
        if (getStopwatch1() > 500) {
            print("Richtung: ");
            printInteger(messung / 10);
            println(" Grad");
            setStopwatch1(0);
        }
    }
    Das komische ist das dann die Grade nur ca. alle 20° ausgelesen werden - die dazwischen werden nicht ausgegeben.

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    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.

  8. #18
    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?

  9. #19
    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

  10. #20
    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 (11.07.2011 um 00:28 Uhr)

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress