Tällä kertaa käsittelemme ADXL335-analogisen kolmiaksiaalisen kiihtyvyysmittarin liittämistä Arduinoon.
Välttämätön
- - Arduino;
- - kiihtyvyysanturi ADXL335;
- - henkilökohtainen tietokone, jossa on Arduino IDE -kehitysympäristö.
Ohjeet
Vaihe 1
Kiihtyvyysmittareita käytetään kiihtyvyysvektorin määrittämiseen. ADXL335-kiihtyvyysanturilla on kolme akselia, ja tämän ansiosta se voi määrittää kiihtyvyysvektorin kolmiulotteisessa tilassa. Koska painovoima on myös vektori, kiihtyvyysanturi voi määrittää oman suuntauksensa kolmiulotteisessa avaruudessa maan keskipisteen suhteen.
Kuvassa on kuvia passista (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) ADXL335-kiihtyvyysmittarille. Tässä näytetään kiihtyvyysmittarin herkkyyden koordinaattiakselit suhteessa laitteen rungon geometriseen sijaintiin avaruudessa, sekä taulukko jännitearvoista kolmelta kiihtyvyysmittarin kanavalta riippuen sen suunnasta avaruudessa. Taulukon tiedot annetaan lepotilassa olevasta anturista.
Katsotaanpa tarkemmin, mitä kiihtyvyysanturi näyttää meille. Anna anturin olla vaakasuorassa esimerkiksi pöydällä. Tällöin kiihtyvyysvektorin projektio on yhtä suuri kuin 1 g Z-akselia pitkin, tai Zout = 1 g. Kahdella muulla akselilla on nollat: Xout = 0 ja Yout = 0. Kun anturi käännetään "takaisin", se ohjataan vastakkaiseen suuntaan painovoimavektoriin nähden, ts. Zout = -1 g. Samoin mitataan kaikki kolme akselia. On selvää, että kiihtyvyysanturi voidaan sijoittaa haluttuun tilaan avaruudessa, joten otamme kaikki lukemat kuin nolla kaikista kolmesta kanavasta.
Jos anturia ravistetaan voimakkaasti pystysuoraa Z-akselia pitkin, Zout-arvo on suurempi kuin "1g". Suurin mitattava kiihtyvyys on "3g" kullakin akselilla mihin tahansa suuntaan (ts. Sekä plus- että miinusmerkillä).
Vaihe 2
Luulen, että olemme selvittäneet kiihtyvyysanturin toimintaperiaatteen. Katsotaan nyt yhteyskaaviota.
ADXL335-analoginen kiihtyvyysmittarisiru on melko pieni ja sijoitettu BGA-pakettiin, ja sitä on vaikea asentaa levylle kotona. Siksi käytän valmiita GY-61-moduuleja ADXL335-kiihtyvyysanturilla. Tällaiset moduulit kiinalaisissa verkkokaupoissa maksavat melkein sentin.
Kiihtyvyysmittarin virran saamiseksi on syötettävä jännite +3, 3 V. moduulin VCC-napaan. Anturin mittauskanavat on kytketty Arduinon analogisiin nastoihin, esimerkiksi "A0", "A1" ja " A2 ". Tämä on koko piiri:)
Vaihe 3
Ladataan tämä luonnos Arduino-muistiin. Luemme kolmen kanavan analogiatulojen lukemat, muunnamme ne jännitteeksi ja lähetämme sarjaporttiin.
Arduinolla on 10-bittinen ADC, ja suurin sallittu nastajännite on 5 volttia. Mitatut jännitteet koodataan biteillä, jotka voivat ottaa vain 2 arvoa - 0 tai 1. Tämä tarkoittaa, että koko mittausalue jaetaan (1 + 1): lla 10. tehoon, ts. 1024 yhtä suurella segmentillä.
Lukemien muuntamiseksi voltteiksi sinun on jaettava kukin analogiatulossa mitattu arvo 1024: llä (segmentit) ja kerrottava sitten 5: llä (voltti).
Katsotaanpa, mitä todella tapahtuu kiihtyvyysmittarista, käyttämällä Z-akselia esimerkkinä (viimeinen sarake). Kun anturi on vaakasuorassa ja näyttää ylöspäin, numerot tulevat (2,03 +/- 0,01). Joten tämän pitäisi vastata kiihtyvyyttä "+ 1g" Z-akselilla ja 0 asteen kulmaa. Käännä anturi. Numerot saapuvat (1, 69 +/- 0, 01), joiden tulisi vastata "-1g" ja 180 asteen kulmaa.
Vaihe 4
Otetaan arvot kiihtyvyysmittarista 90 ja 270 asteen kulmissa ja syötetään ne taulukkoon. Taulukossa esitetään kiihtyvyysmittarin (sarake "A") kiertokulmat ja vastaavat Zout-arvot voltteina (sarake "B").
Selvyyden vuoksi näytetään jännitekaavio Zout-ulostulossa kiertokulman suhteen. Sininen kenttä on levossa oleva alue (1 g: n kiihtyvyydessä). Kaavion vaaleanpunainen ruutu on marginaali, jotta voimme mitata kiihtyvyyttä jopa + 3g ja jopa -3g.
90 asteen kiertämisessä Z-akselilla ei ole kiihtyvyyttä. Nuo. arvo 1,67 volttia on Z-akselin ehdollinen nolla Zo. Sitten löydät kiihtyvyyden seuraavasti:
g = Zout - Zo / herkkyys_z, tässä Zout on mitattu arvo millivoltteina, Zo on arvo nollakiihtyvyydessä millivoltteina, herkkyys_z on anturin herkkyys Z-akselilla. kalibroi kiihtyvyysanturi ja laske herkkyysarvo erityisesti omalle anturi käyttämällä kaavaa:
herkkyys_z = [Z (0 astetta) - Z (90 astetta)] * 1000. Tässä tapauksessa kiihtyvyysanturin herkkyys Z-akselilla = (2, 03 - 1, 68) * 1000 = 350 mV. Vastaavasti herkkyys on laskettava X- ja Y-akseleille.
Taulukon sarake "C" näyttää kiihtyvyyden, joka on laskettu viidelle kulmalle herkkyydellä 350. Kuten näette, ne käytännössä vastaavat kuvaa 1.
Vaihe 5
Muistamalla geometrian peruskurssi saadaan kaava kiihtyvyysmittarin pyörimiskulmien laskemiseksi:
kulma_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Arvot ovat radiaaneina. Muunna ne asteiksi jakamalla Pi ja kertomalla 180: llä.
Tuloksena on täydellinen piirros kiihtyvyysmittarin kiihtyvyys- ja kiertokulmien laskemisesta kaikissa akseleissa. Kommentit selittävät ohjelmakoodia.
Kun tulostetaan "Serial.print ()" -porttiin, "\ t" -merkki tarkoittaa sarkainmerkkiä siten, että sarakkeet ovat tasaiset ja arvot sijoittuvat toisensa alle. "+" tarkoittaa merkkijonojen ketjutusta (ketjutusta). Lisäksi "String ()" - operaattori kertoo kääntäjälle nimenomaisesti, että numeerinen arvo on muunnettava merkkijonoksi. Pyöreä () kuljettaja pyöristää kulman lähimpään 1 asteeseen.
Vaihe 6
Joten opimme kuinka ottaa ja käsitellä tietoja analogisesta ADXL335-kiihtyvyysmittarista Arduinon avulla. Nyt voimme käyttää kiihtyvyysanturia suunnitelmissamme.