mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C + Honeywell HMC6343 3-Achs Sensor


Autor: Paul Klee (paulklee)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen HMC6343 Tilt compensated compass von Sparkfun bezogen.
Die Kommunikation erfolgt über I2C.

Zum Empfangen der aktuellen Positionsdaten nutze ich folgenden 
Pseudocode:

I2C.beginTransmission(slaveAddress); // (Standard 0x32)
I2C.send(0x50); // Send a "Get Data" (0x50) command to the HMC6343
I2C.endTransmission();
I2C.requestFrom(slaveAddress, 6); // Request the 6 bytes of data (MSB 
comes first)
  i = 0;
  while(I2C.available() && i < 6)
  {
    headingData[i] = I2C.receive();
    i++;
  }

Das ganze funktioniert auch problemlos - nur möchte ich gern die interne 
Update Rate des Kompassmoduls von seinen Standart 5 Hz auf 10 Hz 
erhöhen.
Hierfür muss ein Wert im EEPROM Register des Sensors geändert werden.

Dem Datenblatt folgend müsste dies per folgender Befehlsstruktur 
funktionieren:

Command Byte, argument 1 (address), argument 2 (Byte to write)

I2C.beginTransmission(slaveAddress);
 I2C.send(0xF1); // Write to EEPROM Befehl
 I2C.send(0x05); // EEPROM Adress
 I2C.send(0x02); // Byte to write to EEPROM (für 10HZ: 00000010)
I2C.endTransmission();

Tatsächlich werden die Register scheinbar gesetzt. Aber die Update Rate 
ändert sich nicht.

Irgendetwas mache ich falsch und über Hinweise wäre ich wirklich 
dankbar.

Paul

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,

ich habe mal mit dem HMC6352 was gemacht. Dort gab es EEPROM und RAM. 
Wenn Du die Daten im EEPROM änderst passiert erst mal nichts. Das ist 
nur der Speicher. Du muss das im RAM ändern. Wenn Du es ins EEPROM 
schreibst muss Du auf jeden Fall einen Neustart machen. Die Einstellung 
wird beim Start vom EEPROM ins RAM übernommen.

Ich hoffe das Hilft Dir weiter.

Gruß
Florian

Autor: Paul Klee (paulklee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian,

Vielen Dank. Du hattest natürlich völlig recht. Daran hatte ich gar 
nicht gedacht. Jetzt läuft alles wunderbar.

Tom

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul (Tom),

freut mich!
Kann der 6343 eigentlich Neigungen kompensieren? Meiner war sehr 
empfindlich bei eine Abweichung von der Waagerechten. Da passten Die 
Werte überhaupt nicht mehr. Kann der Sensor auch bei 45° Neigung die 
Richtung noch ordentlich anzeigen?

Gruß
Florian

Autor: Paul Klee (paulklee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, der 6343 kompensiert die Neigungen automatisch. Das funktioniert 
auch ganz gut und war der Grund warum ich mich für das doch etwas teure 
Teil entschieden hab. Der Nachteil davon ist, daß er im Gegensatz zu 
anderen Kompasssensoren maximal 10 Hz Updaterate schafft. Ich werd 
später also sicher auf einen anderen Sensor zurückgreifen und die 
Kompensierung vom Mikrocontroller erledigen lassen.

besten Gruß

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,

wie willst Du die Neigung mit dem µC kompensieren? Ich habe dazu mal 
einen 2 Achsigen Neigungssensor an den µC angeschlossen. Das Ding ist 
aber auch nicht gerade günstig gewesen. Was kostet denn der 6343? Meinst 
Du das sich der Aufwand lohnt?

Gruß
Florian

Autor: Paul Klee (paulklee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian,

Der 6343 kompensiert intern sicher auf die gleiche Art, wie auch ein µC 
dies tun kann: Er verfügt über 3 Magnetfeldsensoren die jeweils im 
Winkel von 90° zueinander (einmal gekippt und einmal geneigt) 
positioniert sind. Aus den 3 Daten lässt sich die Himmelsrichtung in 
einer Referenzebene bestimmen. Im Modellbau - Flugzeug und 
Helikopterbereich ist dies, soweit ich weiß, gängige Praxis.
Der Aufwand lohnt sich, wenn ich dafür entscheidend höhere Updateraten 
bekomme ( >30HZ ). Aber ich hab mich noch nicht nach möglichen Sensoren 
erkundigt.

Das gleiche macht übrigens 'Ocean Server Technologies' mt ihrem OS5000 
Kompass Modul. Auf der Platine sind ein 2-Achs Kompass + ein 1-Achs 
Kompass (plus Beschleunigungssensor). Mit integriertem µC wird daraus 
die Neigungskompensierte Himmelsrichtung bestimmt. Mit immerhin 40 Hz. 
Mir sind 250$ dann aber doch zuviel.

Besten Gruß

Paul

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,

habe mich mal nach dem Preis des 6343 erkundigt und bin hinten 
übergeschlagen! Du hast recht, es muss auch anders gehen! Es wurde mir 
ein HMC5843 empfohlen der auch 3 Achsen misst aber die Tilt-Compensation 
nicht selbst macht. Der kostet nur noch 1/4 dessen. Damit werde ich wohl 
auch mal mein Glück versuchen.
Viel Erfolg noch bei Deinem Projekt.

Gruß
Florian

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Ihr Pioniere im unbekannten Land des HMC6343,

ich suche die undokumentierten Kommandos für die Hard-Iron Calibration 
in der XY-Ebene allein, in der horizontalen Ebene, um die vertikale 
Achse allein.
Notwendig, wenn der 3D-HMC6343 in ein Auto montiert ist und als 
2D-Kompass "missbraucht" wird.

Aus dem Datenblatt: "User Hard-Iron Calibration: The HMC6343 provides a 
user calibration routine with the 0x71 command permitting entry into the 
calibration mode and the 0x7E command to exit the calibration mode."

Funktioniert so gut oder schlecht, wie man von Hand das Gerät mit dem 
HMC darin um die Ost-West-Achse drehen kann und dann um die vertikale.

Nun will ich den HMC auch in ein richtiges Auto einbauen. Darin ist er 
zwar "überqualifiziert", aber seine Wiederverwendung wäre preiswerter 
als die Entwicklung eines Sensors mit einem anderen HMC.
Das Auto kann ich mit eingeschlagenem Lenkrad bequem um die vertikale 
Achse rotieren lassen, aber den Überschlag möchte ich gern vermeiden.
Weder um die Längsachse rollen noch den Überschlag kopfüber um die 
Querachse.

Ich habe dazu das "Hard-Iron Calibration Offset for the Z-axis" 
0x12..0x13 mal auf NULL gesetzt mit dem Erfolg: Ab diesem Schreibvorgang 
hat der HMC6343 dies Register nie wieder anders beschrieben, bei keiner 
Kalibrierung. Auch nicht nach Reset.
Wie ich Schlampigkeit in der Produktkonzeption und Dokumentation hasse!

Gibt es undokumentierte Kommandos für diesen Zweck?

Ciao
Wolfgang Horn

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.