Sa oras na ito makitungo kami sa pagkonekta sa ADXL335 analog triaxial accelerometer sa Arduino.
Kailangan
- - Arduino;
- - accelerometer ADXL335;
- - isang personal na computer na may kapaligiran sa pag-unlad ng Arduino IDE.
Panuto
Hakbang 1
Ginagamit ang mga Accelerometers upang matukoy ang acceleration vector. Ang ADXL335 accelerometer ay may tatlong palakol, at salamat dito, matutukoy nito ang acceleration vector sa three-dimensional space. Dahil sa ang katunayan na ang lakas ng grabidad ay isang vector din, maaaring matukoy ng accelerometer ang sarili nitong oryentasyon sa tatlong-dimensional na puwang na may kaugnayan sa gitna ng Earth.
Ipinapakita ng ilustrasyon ang mga larawan mula sa pasaporte (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) para sa ADXL335 accelerometer. Ipinakita dito ang mga coordinate axes ng pagiging sensitibo ng accelerometer na may kaugnayan sa pagkakalagay ng geometriko ng katawan ng aparato sa kalawakan, pati na rin isang talahanayan ng mga halaga ng boltahe mula sa 3 mga channel ng accelerometer depende sa oryentasyon nito sa kalawakan. Ang data sa talahanayan ay ibinibigay para sa isang sensor nang pahinga.
Tingnan natin nang malapitan kung ano ang ipinapakita sa atin ng accelerometer. Hayaang humiga nang pahiga ang sensor, halimbawa, sa isang mesa. Pagkatapos ang projection ng acceleration vector ay magiging katumbas ng 1g kasama ang Z axis, o Zout = 1g. Ang iba pang dalawang mga palakol ay magkakaroon ng mga zero: Xout = 0 at Yout = 0. Kapag ang sensor ay nakabukas "sa likod nito", ididirekta ito sa kabaligtaran na direksyon na may kaugnayan sa gravity vector, ibig sabihin. Zout = -1g. Katulad nito, ang mga sukat ay kinuha sa lahat ng tatlong mga axes. Ito ay malinaw na ang accelerometer ay maaaring nakaposisyon tulad ng ninanais sa kalawakan, kaya kukuha kami ng mga pagbabasa maliban sa zero mula sa lahat ng tatlong mga channel.
Kung ang probe ay malakas na inalog kasama ang patayong Z-axis, ang halaga ng Zout ay magiging mas malaki kaysa sa "1g". Ang maximum na nasusukat na acceleration ay "3g" sa bawat axes sa anumang direksyon (ibig sabihin kapwa may "plus" at "minus").
Hakbang 2
Sa palagay ko nalaman namin ang prinsipyo ng pagpapatakbo ng accelerometer. Ngayon tingnan natin ang diagram ng koneksyon.
Ang ADXL335 analog accelerometer chip ay maliit at nakalagay sa isang BGA package, at mahirap i-mount ito sa isang board sa bahay. Samakatuwid, gagamit ako ng isang nakahandang module na GY-61 na may isang ADXL335 accelerometer. Ang nasabing mga module sa mga online na tindahan ng China ay nagkakahalaga ng halos isang sentimo.
Upang mapagana ang accelerometer, kinakailangan upang magbigay ng boltahe +3, 3 V sa pin ng VCC ng module. Ang mga channel ng pagsukat ng sensor ay konektado sa mga analog na pin ng Arduino, halimbawa, "A0", "A1" at " A2 ". Ito ang buong circuit:)
Hakbang 3
I-load natin ang sketch na ito sa memorya ng Arduino. Basahin namin ang mga pagbabasa mula sa mga analog na input sa tatlong mga channel, i-convert ang mga ito sa boltahe at i-output ang mga ito sa serial port.
Ang Arduino ay may 10-bit ADC, at ang maximum na pinapayagan na boltahe ng pin ay 5 volts. Ang mga sinusukat na boltahe ay naka-encode ng mga piraso na maaari lamang tumagal ng 2 halaga - 0 o 1. Nangangahulugan ito na ang buong saklaw ng pagsukat ay hahatiin ng (1 + 1) sa ika-10 lakas, ibig sabihin sa 1024 pantay na mga segment.
Upang mai-convert ang mga pagbasa sa volts, kailangan mong hatiin ang bawat halaga na sinusukat sa analog input ng 1024 (mga segment), at pagkatapos ay i-multiply ng 5 (volts).
Tingnan natin kung ano talaga ang nagmula sa accelerometer gamit ang Z-axis bilang isang halimbawa (ang huling haligi). Kapag ang sensor ay nakaposisyon nang pahalang at tumitingala, darating ang mga numero (2.03 +/- 0.01). Kaya't ito ay dapat na tumutugma sa pagpabilis ng "+ 1g" kasama ang Z axis at isang anggulo ng 0 degree. I-flip ang sensor. Dumating ang mga numero (1, 69 +/- 0, 01), na dapat na tumutugma sa "-1g" at isang anggulo ng 180 degree.
Hakbang 4
Kunin natin ang mga halaga mula sa accelerometer sa mga anggulo ng 90 at 270 degree at ipasok ang mga ito sa talahanayan. Ipinapakita ng talahanayan ang mga anggulo ng pag-ikot ng accelerometer (haligi "A") at ang mga kaukulang halaga ng Zout sa volts (haligi "B").
Para sa kalinawan, isang plot ng voltages sa output ng Zout kumpara sa anggulo ng pag-ikot ay ipinapakita. Ang asul na patlang ay ang saklaw ng pahinga (sa 1g acceleration). Ang kulay rosas na kahon sa grap ay isang margin upang masusukat namin ang pagpabilis hanggang sa + 3g at hanggang sa -3g.
Sa 90 degree na pag-ikot, ang Z-axis ay may zero acceleration. Yung. ang halaga ng 1.67 volts ay isang kondisyonal na zero Zo para sa Z axis. Pagkatapos ay mahahanap mo ang pagpabilis na tulad nito:
g = Zout - Zo / pagiging sensitibo_z, dito ang Zout ay ang sinusukat na halaga sa millivolts, ang Zo ay ang halaga sa zero na pagpabilis sa mga millivolts, ang pagiging sensitibo_z ay ang pagiging sensitibo ng sensor kasama ang axis ng Z. i-calibrate ang accelerometer at partikular na kalkulahin ang halaga ng pagiging sensitibo para sa iyong sensor gamit ang formula:
pagiging sensitibo_z = [Z (0 degree) - Z (90 degree)] * 1000. Sa kasong ito, ang pagiging sensitibo ng accelerometer kasama ang Z axis = (2, 03 - 1, 68) * 1000 = 350 mV. Katulad nito, ang pagkakasensitibo ay kailangang kalkulahin para sa X at Y axes.
Ipinapakita ng haligi na "C" ng talahanayan ang pagpabilis na kinakalkula para sa limang mga anggulo sa isang pagkasensitibo na 350. Tulad ng nakikita mo, praktikal na sumasabay sila sa ipinakita sa Larawan 1.
Hakbang 5
Naaalala ang pangunahing kurso na geometry, nakukuha namin ang formula para sa pagkalkula ng mga anggulo ng pag-ikot ng accelerometer:
anggulo_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Ang mga halaga ay nasa mga radiano. Upang mai-convert ang mga ito sa degree, hatiin ng Pi at i-multiply ng 180.
Bilang isang resulta, ang isang kumpletong sketch na kinakalkula ang mga anggulo ng pagpabilis at pag-ikot ng accelerometer kasama ang lahat ng mga palakol ay ipinapakita sa ilustrasyon. Ang mga komento ay nagbibigay ng mga paliwanag para sa code ng programa.
Kapag naglalabas sa "Serial.print ()" port, ang character na "\ t" ay nagpapahiwatig ng isang character na tab upang ang mga haligi ay pantay at ang mga halaga ay matatagpuan sa ilalim ng isa pa. Ang "+" ay nangangahulugang pagsasama (pagsasama) ng mga kuwerdas. Bukod dito, malinaw na sinabi ng operator ng "String ()" sa tagatala na ang halagang bilang ay dapat na mai-convert sa isang string. Ang bilog () na operator ay bilog ang sulok sa pinakamalapit na 1 degree.
Hakbang 6
Kaya, natutunan namin kung paano kumuha at magproseso ng data mula sa ADXL335 analog accelerometer gamit ang Arduino. Ngayon ay maaari naming gamitin ang accelerometer sa aming mga disenyo.