===== 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 == {{:sen_komp_emc5843:09371-02b.jpg|}} (Quelle:SparkFun Electronics ®) == Datenblatt == {{:sen_komp_emc5843:hmc5843.pdf|}} == Modul == {{:sen_komp_emc5843:hmc5843-v11-schematic.pdf|}} == Anschaltung an Propeller == {{:sen_komp_emc5843:hmc5843_2011_11_24.png|}} == 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:treiber|i2c.spin]] == Funktionsbeispiel == {{:sen_komp_emc5843:hmc5843.zip|Demoprogramm zum Sensortest}} == 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 {{:sen_komp_emc5843:pict0001.jpg|zum Testen angelöteter 100µF Elko}}