Uvažujme o připojení modulu GY-273 k tříosému digitálnímu kompasu Honeywell HMC5883L. Tento mikroobvod lze použít pro magnetometrická měření v navigaci, pokud není požadována vysoká přesnost měření (s chybou 1 … 2 stupně a možností kalibrace). Zařízení je připojeno přes rozhraní I2C.
Nezbytné
- - Digitální kompas HMC5883;
- - Arduino;
- - prototypová deska a spojovací dráty;
- - počítač.
Instrukce
Krok 1
Toto jsou hlavní rysy magnetického kompasu:
- 3osý magneticky citlivý senzor;
- 12bitový ADC s rozlišením 2 mGs (miligauss);
- integrovaný autotest;
- nízké provozní napětí a nízká spotřeba;
- digitální rozhraní I2C;
- vysoká rychlost dotazování - až 160krát za sekundu (doba jednoho měření je přibližně 6 ms);
- přesnost určení směru je 1 ° … 2 °;
- lze použít v silných magnetických polích (až do ± 8 Gauss).
Schéma připojení magnetického senzoru HMC5883L k Arduinu je znázorněno na obrázku. Je to velmi kompaktní a jednoduché, protože Dvouvodičové rozhraní I2C je skvělé, protože vyžaduje několik připojení. Můžete použít prkénko na prkénko.
Krok 2
Mělo by to vypadat jako fotka. Také připojím logický analyzátor k sběrnicím SCL a SDA, abych sledoval výměnu informací mezi Arduino a modulem HMC5883. Není to povinné.
Krok 3
Jako první známý si zkusme přečíst identifikační registry 10 (0xA), 11 (0xB) a 12 (0xC) digitálního kompasu HMC5883 a napsat takový náčrt jako na obrázku. Je opatřen podrobnými komentáři.
Krok 4
Signál získaný logickým analyzátorem bude zobrazen na obrázku.
Co to znamená? Prvním bajtem je adresa I2C, se kterou (hlavní zařízení, Arduino) navazujeme komunikaci (vysoká 7 bitů 0x1E) a režim zápisu (nízký bit - 0x0); číslo je 0x3C. Druhým bajtem je číslo 0xA, které jsme zapsali na adresu 0x1E, a potvrzovací bit ze senzoru HMC5883L, kterým je slave. Toto je číslo registru, ze kterého začneme číst data. Tím je uzavřena první transakce. Další začíná. Třetí bajt je požadavek na čtení od slave (nejvýznamnějších 7 bitů je adresa 0x1E, 8. bit je operace čtení 0x1; výsledné číslo je 0x3D). Poslední 3 tři bajty jsou odpovědí podřízeného HMC5883L z registrů 0xA, 0xB a 0xC.
Digitální kompas HMC5883L se během nepřetržitého čtení pohybuje v registrech samostatně. Ty. není nutné (ale není to zakázáno) případ specifikovat pokaždé. Například pokud namísto 0xA budeme psát 0x3 a číst 10krát, dostaneme hodnoty v 10 registrech, počínaje od 3. do 12..
A jaká jsou tato tři čísla - 0x48, 0x34, 0x33? Při dalším použití datového listu pro digitální kompas HMC5883L uvidíme, že se jedná o výchozí hodnoty pro tři identifikační registry.
Krok 5
Chcete-li získat data digitálního kompasu v magnetickém poli, musíte číst registry 3 až 8, stejně jako čteme identifikační registry. Jediným rozdílem je, že data pro každou ze tří os X, Y a Z jsou prezentována jako dvoubajtová čísla. Když je převedeme na desetinná čísla, dostaneme směry podél každé ze tří os.