3 Achsen Magnetkompass EMC5843 (Auslaufmodell) NEU ---> EMC5883L
3-Axis Magnetoresistive Sensors
I2C Digital Interface
Wide Magnetic Field Range (+/-6 Oe)
range is 0xF800 to 0x07FF
Achtung auf der Platine von Sparkfun ist ein Fehler
Bildergalarie
(Quelle:SparkFun Electronics ®)
Datenblatt
Modul
Anschaltung an Propeller
Softwaremodule
' Der i2c-Treiber ist hier im anhang einzufügen.
CON 'All the I2C registers for the HMC5843 mag I2C address maximum bus speed is ???kHz.
HMC5843 = %0011_1100
HMC5843_CONFIG_A = $00
HMC5843_CONFIG_B = $01
HMC5843_MODE = $02
HMC5843_DATA_X_MSB = $03
HMC5843_DATA_X_LSB = $04
HMC5843_DATA_Y_MSB = $05
HMC5843_DATA_Y_LSB = $06
HMC5843_DATA_Z_MSB = $07
HMC5843_DATA_Z_LSB = $08
HMC5843_STATUS = $09
HMC5843_ID_A = $0A
HMC5843_ID_B = $0B
HMC5843_ID_C = $0C
VAR
long XC, YC, ZC 'Compass
PUB start
waitcnt(clkfreq + cnt) 'start-up delay
writeValue(HMC5843, HMC5843_ID_A)
if readValue24(HMC5843) == $00483433 '"H43"
' OK
writeLocation(HMC5843, HMC5843_CONFIG_A, $3C)
writeLocation(HMC5843, HMC5843_CONFIG_B, $02)
writeLocation(HMC5843, HMC5843_MODE, $00)
repeat
emc
else
' nOK
PRI emc
XC := readLocation16(HMC5843, HMC5843_DATA_X_MSB)
YC := readLocation16(HMC5843, HMC5843_DATA_Y_MSB)
ZC := readLocation16(HMC5843, HMC5843_DATA_Z_MSB)
i2c.spin
Funktionsbeispiel
Tip's
Werden nach dem Einschalten immer konstante Werte angezeigt dann:
- EMC5843 VCC vom Bord kurz trennen, danach sollte alles funktionieren.
- Ursache: der C1 ist warscheinlich kein 4,7µF lowest ESR