Hoe Om Die Digitale Kompas HMC5883 Aan Arduino Te Koppel

INHOUDSOPGAWE:

Hoe Om Die Digitale Kompas HMC5883 Aan Arduino Te Koppel
Hoe Om Die Digitale Kompas HMC5883 Aan Arduino Te Koppel

Video: Hoe Om Die Digitale Kompas HMC5883 Aan Arduino Te Koppel

Video: Hoe Om Die Digitale Kompas HMC5883 Aan Arduino Te Koppel
Video: hmc5883l arduino compass,magnetometer sensor,compass navigation"Arduino Project for beginners 2024, Desember
Anonim

Kom ons kyk na die verbinding van die GY-273-module met die Honeywell HMC5883L drie-as digitale kompas. Hierdie mikrokring kan gebruik word vir magnetometriese metings, in navigasie, as 'n hoë meetnauwkeurigheid nie nodig is nie (met 'n fout van 1 … 2 grade en die moontlikheid van kalibrasie). Die toestel word via die I2C-koppelvlak gekoppel.

Digitale kompas HMC5883
Digitale kompas HMC5883

Nodig

  • - Digitale kompas HMC5883;
  • - Arduino;
  • - prototipe bord en verbindingsdrade;
  • - rekenaar.

Instruksies

Stap 1

Dit is die belangrikste kenmerke van 'n magnetiese kompas:

- 3-as magneties sensitiewe sensor;

- 12-bit ADC met 'n resolusie van 2 mGs (milligauss);

- ingeboude selftoets;

- lae werkspanning en lae verbruik;

- digitale koppelvlak I2C;

- hoë stempelsnelheid - tot 160 keer per sekonde (die tyd van een meting is ongeveer 6 ms);

- die akkuraatheid van die bepaling van die rigting is 1 ° … 2 °;

- kan in sterk magnetiese velde (tot ± 8 Gauss) gebruik word.

Die diagram vir die verbinding van die HMC5883L magnetiese sensor met die Arduino word in die figuur getoon. Dit is baie kompak en eenvoudig, want Die tweedraad-I2C-koppelvlak is wonderlik omdat dit min verbindings benodig. U kan 'n broodbord gebruik.

Verbind die HMC5883 digitale kompas met die Arduino
Verbind die HMC5883 digitale kompas met die Arduino

Stap 2

Dit moet soos die foto lyk. Ek sal ook 'n logiese ontleder verbind met die SCL- en SDA-busse om die uitruil van inligting tussen die Arduino en die HMC5883-module te monitor. Dit is nie verpligtend nie.

HMC5883 digitale kompas gekoppel aan Arduino op broodbord
HMC5883 digitale kompas gekoppel aan Arduino op broodbord

Stap 3

Laat ons as eerste kennismaking die identifikasieregisters 10 (0xA), 11 (0xB) en 12 (0xC) van die digitale kompas HMC5883 lees en so 'n skets skryf soos in die figuur. Dit word voorsien van gedetailleerde kommentaar.

Skets wat die identifikasieregisters van die HMC5883 lees
Skets wat die identifikasieregisters van die HMC5883 lees

Stap 4

Die sein wat met die logiese ontleder verkry word, is soos in die illustrasie getoon.

Wat beteken dit? Die eerste byte is die I2C-adres waarmee ons (die hooftoestel, Arduino) kommunikasie tot stand bring (hoë 7 bisse 0x1E), en die skryfmodus (lae bit - 0x0); die getal is 0x3C. Die tweede byte is die nommer 0xA, wat ons geskryf het om 0x1E aan te spreek en die bevestigingsbit van die HMC5883L-sensor, wat die slaaf is. Dit is die registernommer waarvandaan ons data sal begin lees. Dit sluit die eerste transaksie af. Die volgende een begin. Die derde byte is 'n leesversoek van die slaaf (die belangrikste 7 bisse is die adres 0x1E, die 8ste bit is die leesbewerking 0x1; die resultaat is 0x3D). Die laaste drie drie grepe is die antwoord van die HMC5883L-slaaf van registers 0xA, 0xB en 0xC.

Die digitale kompas HMC5883L beweeg onafhanklik deur die registers tydens deurlopende leeswerk. Diegene. dit is nie nodig nie (maar nie verbode nie) om die saak telkens te spesifiseer. As ons byvoorbeeld 0x3 in plaas van 0xA skryf en 10 keer lees, kry ons waardes in tien registers, vanaf die 3de tot die 12de.

En wat is hierdie drie getalle - 0x48, 0x34, 0x33? As ons die datablad vir die HMC5883L digitale kompas weer gebruik, sal ons sien dat dit die standaardwaardes vir die drie identifikasieregisters is.

Tyddiagram van I2C-uitruiling met HMC5883 digitale kompas
Tyddiagram van I2C-uitruiling met HMC5883 digitale kompas

Stap 5

Om die digitale kompasdata op die magnetiese veld te kry, moet u registers 3 tot 8 lees, net soos ons die identifikasieregisters lees. Die enigste verskil is dat die gegewens vir elk van die drie as X, Y en Z as dubbel-byte getalle aangebied word. As ons dit omskakel na desimale getalle, kry ons aanwysings langs elkeen van die drie asse.

Aanbeveel: