Isaalang-alang natin ang koneksyon ng module na GY-273 sa Honeywell HMC5883L three-axis digital compass. Ang microcircuit na ito ay maaaring magamit para sa mga pagsukat ng magnetometric, sa pag-navigate, kung ang isang mataas na katumpakan ng pagsukat ay hindi kinakailangan (na may error na 1 … 2 degree at ang posibilidad ng pagkakalibrate). Ang aparato ay nakakonekta sa pamamagitan ng interface ng I2C.
Kailangan
- - Digital compass HMC5883;
- - Arduino;
- - prototype board at pagkonekta ng mga wire;
- - computer.
Panuto
Hakbang 1
Ito ang mga pangunahing tampok ng isang magnetic compass:
- 3-axis magnetically sensitibong sensor;
- 12-bit ADC na may resolusyon na 2 mGs (milligauss);
- built-in na pagsubok sa sarili;
- mababang boltahe sa pagpapatakbo at mababang pagkonsumo;
- digital interface I2C;
- mataas na rate ng botohan - hanggang sa 160 beses bawat segundo (oras ng isang pagsukat ay tungkol sa 6 ms);
- ang kawastuhan ng pagtukoy ng direksyon ay 1 °… 2 °;
- maaaring magamit sa mga malalakas na magnetic field (hanggang sa ± 8 Gauss).
Ang diagram para sa pagkonekta ng HMC5883L magnetic sensor sa Arduino ay ipinapakita sa pigura. Ito ay napaka-compact at simple, dahil Ang interface ng dalawang kawad na I2C ay mahusay sapagkat nangangailangan ito ng kaunting mga koneksyon. Maaari kang gumamit ng isang pisara.
Hakbang 2
Dapat magmukhang katulad ng larawan. Ikonekta ko rin ang isang analisa ng lohika sa mga bus ng SCL at SDA upang subaybayan ang pagpapalitan ng impormasyon sa pagitan ng Arduino at ng HMC5883 module. Hindi ito sapilitan.
Hakbang 3
Bilang isang unang kakilala, subukang basahin ang mga rehistro ng pagkakakilanlan 10 (0xA), 11 (0xB) at 12 (0xC) ng digital na kompas HMC5883 at isulat ang gayong sketch tulad ng pigura. Nagbibigay ito ng detalyadong mga komento.
Hakbang 4
Ang hudyat na nakuha sa tagapahiwatig ng lohika ay ipapakita sa ilustrasyon.
Ano ang ibig sabihin nito Ang unang byte ay ang I2C address kung saan namin (ang master device, Arduino) na nagtataguyod ng komunikasyon (mataas na 7 bits 0x1E), at ang mode ng pagsulat (mababang bit - 0x0); ang numero ay 0x3C. Ang pangalawang byte ay ang numero 0xA, na isinulat namin upang tugunan ang 0x1E at ang kumpirmasyon na bit mula sa sensor ng HMC5883L, na alipin. Ito ang numero ng rehistro kung saan magsisimula kaming magbasa ng data. Tinatapos nito ang unang transaksyon. Nagsisimula ang susunod. Ang pangatlong byte ay isang nabasa na kahilingan mula sa alipin (ang pinakamahalagang 7 bits ay ang address na 0x1E, ang ika-8 bit ay ang binasang operasyon na 0x1; ang nagresultang numero ay 0x3D). Ang huling 3 tatlong byte ay ang tugon mula sa alipin ng HMC5883L mula sa mga rehistro na 0xA, 0xB, at 0xC, ayon sa pagkakabanggit.
Ang digital compass HMC5883L ay gumagalaw sa pamamagitan ng mga pagrerehistro nang nakapag-iisa sa patuloy na pagbabasa. Yung. hindi kinakailangan (ngunit hindi ipinagbabawal) na tukuyin ang kaso sa bawat oras. Halimbawa, kung sa halip na 0xA magsusulat kami ng 0x3 at magbasa ng 10 beses, makakakuha kami ng mga halaga sa 10 rehistro, simula sa ika-3 hanggang ika-12.
At ano ang tatlong numero na ito - 0x48, 0x34, 0x33? Gamit muli ang data sheet para sa digital na compass ng HMC5883L, makikita natin na ito ang mga default na halaga para sa tatlong rehistro ng pagkakakilanlan.
Hakbang 5
Upang makuha ang data ng digital na kompas sa magnetic field, kailangan mong basahin ang mga rehistro ng 3 hanggang 8, tulad ng pagbabasa ng mga rehistro ng pagkakakilanlan. Ang pagkakaiba lamang ay ang data para sa bawat isa sa tatlong mga axes X, Y at Z ay ipinakita bilang mga dobleng byte na numero. Pag-convert sa kanila sa mga desimal na numero, nakakakuha kami ng mga direksyon kasama ang bawat isa sa tatlong mga axes.