Laten we eens kijken naar de verbinding van de GY-273-module met het Honeywell HMC5883L drie-assige digitale kompas. Deze microschakeling kan worden gebruikt voor magnetometrische metingen, in navigatie, als een hoge meetnauwkeurigheid niet vereist is (met een fout van 1 … 2 graden en de mogelijkheid van kalibratie). Het apparaat wordt aangesloten via de I2C-interface.
Noodzakelijk
- - Digitaal kompas HMC5883;
- -Arduino;
- - prototypebord en aansluitdraden;
- - computer.
instructies:
Stap 1
Dit zijn de belangrijkste kenmerken van een magnetisch kompas:
- 3-assige magnetisch gevoelige sensor;
- 12-bits ADC met een resolutie van 2 mGs (milligauss);
- ingebouwde zelftest;
- lage bedrijfsspanning en laag verbruik;
- digitale interface I2C;
- hoge pollingsnelheid - tot 160 keer per seconde (tijd van één meting is ongeveer 6 ms);
- de nauwkeurigheid van het bepalen van de richting is 1 °… 2 °;
- kan gebruikt worden in sterke magnetische velden (tot ± 8 Gauss).
Het diagram voor het aansluiten van de HMC5883L magnetische sensor op de Arduino wordt getoond in de afbeelding. Het is zeer compact en eenvoudig, omdat: De tweedraads I2C-interface is geweldig omdat er weinig verbindingen voor nodig zijn. Je kunt een breadboard gebruiken.
Stap 2
Het moet er ongeveer zo uitzien als op de foto. Ik zal ook een logic analyzer aansluiten op de SCL- en SDA-bussen om de informatie-uitwisseling tussen de Arduino en de HMC5883-module te bewaken. Het is niet verplicht.
Stap 3
Laten we als eerste kennismaking proberen de identificatieregisters 10 (0xA), 11 (0xB) en 12 (0xC) van het digitale kompas HMC5883 te lezen en zo'n schets te schrijven zoals in de figuur. Het is voorzien van gedetailleerde opmerkingen.
Stap 4
Het signaal dat met de logische analysator wordt verkregen, is zoals weergegeven in de afbeelding.
Wat betekent het? De eerste byte is het I2C-adres waarmee we (het masterapparaat, Arduino) communicatie tot stand brengen (high 7 bits 0x1E), en de schrijfmodus (low bit - 0x0); het nummer is 0x3C. De tweede byte is het nummer 0xA, dat we hebben geschreven om 0x1E te adresseren, en het bevestigingsbit van de HMC5883L-sensor, die de slave is. Dit is het registernummer van waaruit we gegevens gaan inlezen. Hiermee is de eerste transactie afgerond. De volgende begint. De derde byte is een leesverzoek van de slave (de meest significante 7 bits zijn het adres 0x1E, de 8e bit is de leesbewerking 0x1; het resulterende getal is 0x3D). De laatste 3 drie bytes zijn het antwoord van de HMC5883L-slave van respectievelijk de registers 0xA, 0xB en 0xC.
Het digitale kompas HMC5883L beweegt zelfstandig door de registers tijdens continu lezen. Die. het is niet nodig (maar niet verboden) om telkens het geval te specificeren. Als we bijvoorbeeld in plaats van 0xA 0x3 zouden schrijven en 10 keer zouden lezen, zouden we waarden krijgen in 10 registers, beginnend van de 3e tot de 12e.
En wat zijn deze drie getallen - 0x48, 0x34, 0x33? Als we het gegevensblad voor het HMC5883L digitale kompas opnieuw gebruiken, zullen we zien dat dit de standaardwaarden zijn voor de drie identificatieregisters.
Stap 5
Om de digitale kompasgegevens over het magnetische veld te krijgen, moet je registers 3 tot en met 8 lezen, net zoals we de identificatieregisters lezen. Het enige verschil is dat de gegevens voor elk van de drie assen X, Y en Z worden weergegeven als dubbelbytenummers. Door ze om te zetten in decimale getallen, krijgen we richtingen langs elk van de drie assen.