- Labornetzteil AliExpress         
Ergebnis 1 bis 9 von 9

Thema: cmps03 kompassmodul

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941

    cmps03 kompassmodul

    Anzeige

    Praxistest und DIY Projekte
    hallo, ich Suche in Bascom eine routine für das compassmodul cmps03 .
    ich möchte es mit pwm auslesen.
    mfg pebisoft

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    49
    Beiträge
    851
    Hallo pebisoft!

    Das PWM-Signal genau zu lesen ist relativ aufwendig. Müsstest die positive Flanke des Signals als Trigger nehmen und bei der negativen Flanke die Zeit ermitteln und diese als Wert verwenden. Dazu muss man mit dem internen Timer programmieren.

    Ich würde ein RC-Glied nehmen zur Analogwertbildung und das an einen AD-Input legen. Dann muss man nur einfach den AD-Wert lesen lassen was sehr einfach ist.

    Grüsse Wolfgang

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Warum willst du es nciht per I2C versuchen, wenn das Modul schon eine so hohe Genauigkeit aufweist, sollte man doch versuchen diese zu nutzen.

    MFG Moritz

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    49
    Beiträge
    851
    Zitat Zitat von RCO
    Warum willst du es nciht per I2C versuchen, wenn das Modul schon eine so hohe Genauigkeit aufweist, sollte man doch versuchen diese zu nutzen.

    MFG Moritz
    Das verstehe ich auch nicht, PWM ist ja im Grunde maximal 8-Bit, I2C kann 16-Bit (3600 Stufen). Schade um das Teil, aber vieleicht genügt es ja oder es gibt keien Möglichkeit das mit dm I2C irgendwie zu realisieren weils der Controller nicht zulässt

    Grüsse Wolfgang

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo, habe euch verstanden. wie kann ich dieses modul mit I2C in Bascom betreiben. weiss zur zeit aber keine rouitne, wer weiss, wie es weitergeht, für einen lösungsansatz wäre ich dankbar. muss ich hier auch wie beim I2C eeprom 24c256 ein pullups von 10k zwischen scl sca anklemmen.
    mf gpebisoft

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    49
    Beiträge
    851
    Zitat Zitat von pebisoft
    hallo, habe euch verstanden. wie kann ich dieses modul mit I2C in Bascom betreiben. weiss zur zeit aber keine rouitne, wer weiss, wie es weitergeht, für einen lösungsansatz wäre ich dankbar. muss ich hier auch wie beim I2C eeprom 24c256 ein pullups von 10k zwischen scl sca anklemmen.
    mf gpebisoft
    Zum einen, mit Bascom kenne ich mich direkt nicht aus da ich nicht damit arbeite. Aber ich weis das es da fertige Bibliotheken gibt. Vieleicht kann dir da ein anderer BASCOM-User weiterhelfen. Die Pull-Up's brauchst du jedenfalls immer im I2C-Bus. Ohne die wird das ACK nie funktionieren.

    Grüsse Wolfgang

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941

    es läuft

    hallo, das kompassmodul läuft jetzt zu 99% genauigkeit.
    am besten ist wenn man den vorgeschlagenen druckschalter zwischen anschluss 6 und masse 9
    legt. ich habe den druckschalter zwischen gelassen, wenn mal wieder kalibriert werden
    muss. diese kalibrierung ist einfacher als über i2c, kann während der laufenden abfrage
    des moduls gemacht werden. ich gebe jetzt über das easy-radiomodul vom arbeitsplatz
    eine gradzahl vor und der robby hält gemäss programm die richtung innerhalb der vorgabe
    (+-5, ist ca +- 0.5 grad). macht richtig spass. unter "album" roboterbilder" ist ein bild
    vom küchenbrettroboter. wer fragen hat, soll fragen.


    Declare Sub K_werte(byval Ee_adresse As Byte)

    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud = 19200

    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , Rs = Portc.5 , E = Portc.4
    Config Lcd = 16 * 2

    Config Scl = Portb.3
    Config Sda = Portb.4

    Dim Daten As Byte , Temp As Byte
    Dim Ausgabe As Word
    Dim Adresse As Byte
    Adresse = 2

    Do

    Call K_werte(adresse)
    Print Ausgabe
    Waitms 500

    Loop

    End

    Function K_werte(byval Ee_adresse As Byte)
    Disable Interrupts
    I2cstart
    I2cwbyte &B11000000 , Ack
    I2cwbyte Ee_adresse
    Waitms 10
    I2cstart
    I2cwbyte &B11000001 , Ack
    I2crbyte Daten , Ack
    I2crbyte Temp , Nack
    Ausgabe = Daten * 256
    Ausgabe = Ausgabe + Temp
    I2cstop
    Waitms 10
    Enable Interrupts
    End Function

    mfg pebisoft

  8. #8
    Gast
    wer fragen hat, soll fragen.
    Das sieht gut aus, da scheint jemand ziemlich am gleichen Thema zu arbeiten siehe hier:

    https://www.roboternetz.de/phpBB2/ze...?p=50294#50294

    mfG
    Lance

  9. #9
    Lance
    Gast
    Das sieht gut aus, da scheint jemand ziemlich am gleichen Thema zu arbeiten siehe hier:
    Nein, ich habe es gemerkt, das ist ja das gleiche, ich bin nur durcheinander gekommen, weil die gleiche Nachricht an verschiedenen Stellen steht.
    Lance

    https://www.roboternetz.de/phpBB2/ze...?p=50296#50296

    https://www.roboternetz.de/phpBB2/ze...?p=50297#50297

    https://www.roboternetz.de/phpBB2/ze...?p=50294#50294

Berechtigungen

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

12V Akku bauen