Hur Man Ansluter Digital Kompass HMC5883 Till Arduino

Innehållsförteckning:

Hur Man Ansluter Digital Kompass HMC5883 Till Arduino
Hur Man Ansluter Digital Kompass HMC5883 Till Arduino

Video: Hur Man Ansluter Digital Kompass HMC5883 Till Arduino

Video: Hur Man Ansluter Digital Kompass HMC5883 Till Arduino
Video: Трехосевой цифровой компас HMC5883L и Arduino 2024, Maj
Anonim

Låt oss överväga anslutningen av GY-273-modulen till Honeywell HMC5883L treaxlig digital kompass. Denna mikrokrets kan användas för magnetometriska mätningar, vid navigering, om hög mätnoggrannhet inte krävs (med ett fel på 1 … 2 grader och möjlighet till kalibrering). Enheten ansluts via I2C-gränssnittet.

Digital kompass HMC5883
Digital kompass HMC5883

Nödvändig

  • - Digital kompass HMC5883;
  • - Arduino;
  • - prototypkort och anslutningskablar;
  • - dator.

Instruktioner

Steg 1

Dessa är huvudfunktionerna i en magnetisk kompass:

- 3-axlig magnetkänslig sensor;

- 12-bitars ADC med en upplösning på 2 mGs (milligauss);

- inbyggt självtest;

- låg driftspänning och låg förbrukning;

- digitalt gränssnitt I2C;

- hög avfrågningshastighet - upp till 160 gånger per sekund (tiden för en mätning är cirka 6 ms);

- noggrannheten för att bestämma riktningen är 1 ° … 2 °;

- kan användas i starka magnetfält (upp till ± 8 Gauss).

Diagrammet för att ansluta HMC5883L magnetisk sensor till Arduino visas i figuren. Det är väldigt kompakt och enkelt, för Två-tråds I2C-gränssnittet är utmärkt eftersom det kräver få anslutningar. Du kan använda ett brödbräda.

Ansluter den digitala kompassen HMC5883 till Arduino
Ansluter den digitala kompassen HMC5883 till Arduino

Steg 2

Det borde se ut som på fotot. Jag kommer också att ansluta en logisk analysator till SCL- och SDA-bussarna för att övervaka informationsutbytet mellan Arduino och HMC5883-modulen. Det är inte obligatoriskt.

HMC5883 digital kompass ansluten till Arduino på breadboard
HMC5883 digital kompass ansluten till Arduino på breadboard

Steg 3

Som en första bekantskap, låt oss försöka läsa identifieringsregisterna 10 (0xA), 11 (0xB) och 12 (0xC) för den digitala kompassen HMC5883 och skriva en sådan skiss som i figuren. Den har detaljerade kommentarer.

Skiss som läser identifieringsregistren för HMC5883
Skiss som läser identifieringsregistren för HMC5883

Steg 4

Den signal som erhålls med den logiska analysatorn kommer att visas som i bilden.

Vad betyder det? Den första byten är I2C-adressen med vilken vi (masterenheten, Arduino) etablerar kommunikation (höga 7 bitar 0x1E) och skrivläget (låg bit - 0x0); siffran är 0x3C. Den andra byten är siffran 0xA, som vi skrev till adressen 0x1E och bekräftelsebiten från HMC5883L-sensorn, som är slaven. Detta är det registernummer som vi kommer att börja läsa data från. Detta avslutar den första transaktionen. Nästa börjar. Den tredje byten är en läsförfrågan från slaven (de viktigaste 7 bitarna är adressen 0x1E, den 8: e biten är läsoperationen 0x1; det resulterande antalet är 0x3D). De tre sista tre byten är svaret från HMC5883L-slaven från register 0xA, 0xB respektive 0xC.

Den digitala kompassen HMC5883L rör sig oberoende av register under kontinuerlig avläsning. De där. det är inte nödvändigt (men inte förbjudet) att specificera fallet varje gång. Till exempel, om vi istället för 0xA skulle skriva 0x3 och läsa 10 gånger, skulle vi få värden i tio register, med början från 3: e till 12: e.

Och vad är dessa tre siffror - 0x48, 0x34, 0x33? Med hjälp av databladet för HMC5883L digital kompass igen ser vi att dessa är standardvärdena för de tre identifieringsregisterna.

Tidsdiagram för I2C-utbyte med HMC5883 digital kompass
Tidsdiagram för I2C-utbyte med HMC5883 digital kompass

Steg 5

För att få digital kompassdata på magnetfältet måste du läsa register 3 till 8, precis som vi läser identifieringsregisterna. Den enda skillnaden är att data för var och en av de tre axlarna X, Y och Z presenteras som dubbelbyte-nummer. Omvandla dem till decimaltal får vi anvisningar längs var och en av de tre axlarna.

Rekommenderad: