Šoreiz mēs nodarbosimies ar ADXL335 analogā trīsasu akselerometra pievienošanu Arduino.
Nepieciešams
- - Arduino;
- - akselerometrs ADXL335;
- - personālais dators ar Arduino IDE izstrādes vidi.
Instrukcijas
1. solis
Akselerometrus izmanto, lai noteiktu paātrinājuma vektoru. ADXL335 akselerometram ir trīs asis, un, pateicoties tam, tas var noteikt paātrinājuma vektoru trīsdimensiju telpā. Sakarā ar to, ka gravitācijas spēks ir arī vektors, akselerometrs var noteikt savu orientāciju trīsdimensiju telpā attiecībā pret Zemes centru.
Ilustrācijā redzami attēli no ADXL335 akselerometra pases (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf). Šeit ir parādītas akselerometra jutības koordinātu asis attiecībā pret ierīces korpusa ģeometrisko izvietojumu telpā, kā arī sprieguma vērtību tabula no 3 akselerometra kanāliem atkarībā no tā orientācijas telpā. Dati tabulā ir norādīti sensoram miera stāvoklī.
Apskatīsim tuvāk to, ko mums parāda akselerometrs. Ļaujiet sensoram gulēt horizontāli, piemēram, uz galda. Tad paātrinājuma vektora projekcija būs vienāda ar 1g gar Z asi, vai Zout = 1g. Pārējām divām asīm būs nulles: Xout = 0 un Yout = 0. Kad sensors tiek pagriezts "uz muguras", tas tiks virzīts pretējā virzienā attiecībā pret gravitācijas vektoru, ti. Zout = -1g. Līdzīgi mērījumus veic uz visām trim asīm. Ir skaidrs, ka akselerometru kosmosā var novietot pēc vēlēšanās, tāpēc no visiem trim kanāliem mēs ņemsim rādījumus, kas nav nulle.
Ja zondi stipri sakrata gar vertikālo Z asi, Zout vērtība būs lielāka par "1g". Maksimālais izmērāmais paātrinājums ir "3g" katrā asī jebkurā virzienā (ti, gan ar "plus", gan "mīnus").
2. solis
Es domāju, ka mēs izdomājām akselerometra darbības principu. Tagad apskatīsim savienojuma shēmu.
ADXL335 analogā akselerometra mikroshēma ir diezgan maza un ievietota BGA iepakojumā, un mājās to ir grūti uzstādīt uz tāfeles. Tāpēc es izmantošu gatavu GY-61 moduli ar ADXL335 akselerometru. Šādi moduļi Ķīnas tiešsaistes veikalos maksā gandrīz santīmu.
Lai darbinātu akselerometru, moduļa VCC tapai jāpievieno spriegums +3, 3 V. Sensora mērīšanas kanāli ir savienoti ar Arduino analogajām tapām, piemēram, "A0", "A1" un " A2 ". Šī ir visa ķēde:)
3. solis
Ielādēsim šo skici Arduino atmiņā. Mēs nolasīsim trīs kanālu analogo ieeju rādījumus, pārveidosim tos spriegumā un izvadīsim seriālajā portā.
Arduino ir 10 bitu ADC, un maksimālais pieļaujamais tapas spriegums ir 5 volti. Izmērītie spriegumi tiek kodēti ar bitiem, kuriem var būt tikai 2 vērtības - 0 vai 1. Tas nozīmē, ka viss mērījumu diapazons tiks dalīts ar (1 + 1) līdz 10. jaudai, t.i. uz 1024 vienādiem segmentiem.
Lai rādījumus pārvērstu voltos, katra analogajā ieejā izmērītā vērtība jāsadala ar 1024 (segmenti) un pēc tam jāreizina ar 5 (volti).
Apskatīsim, kas patiesībā nāk no akselerometra, kā piemēru izmantojot Z asi (pēdējā kolonna). Kad sensors ir novietots horizontāli un skatās uz augšu, nāk skaitļi (2,03 +/- 0,01). Tātad tam jāatbilst paātrinājumam "+ 1g" gar Z asi un 0 grādu leņķim. Apgrieziet sensoru. Pienāk skaitļi (1, 69 +/- 0, 01), kuriem jāatbilst "-1g" un 180 grādu leņķim.
4. solis
Paņemsim vērtības no akselerometra 90 un 270 grādu leņķī un ievadīsim tās tabulā. Tabulā parādīti akselerometra rotācijas leņķi (kolonna "A") un atbilstošās Zout vērtības voltos (kolonna "B").
Skaidrības labad tiek parādīts spriegumu diagramma Zout izejā pret pagrieziena leņķi. Zilais lauks ir diapazons miera stāvoklī (pie 1g paātrinājuma). Rozā rūtiņa grafikā ir mala, lai mēs varētu izmērīt paātrinājumu līdz + 3g un līdz -3g.
Pie 90 grādu rotācijas Z asij paātrinājums ir nulle. Tie. vērtība 1,67 volti ir nosacīta nulle Zo Z asij. Tad jūs varat atrast šādu paātrinājumu:
g = Zout - Zo / jūtīgums_z, šeit Zout ir izmērītā vērtība milivoltos, Zo ir nulles paātrinājuma vērtība milivoltos, jūtība_z ir sensora jutība gar Z asi. kalibrējiet akselerometru un aprēķiniet jutības vērtību tieši savam sensors, izmantojot formulu:
jutīgums_z = [Z (0 grādi) - Z (90 grādi)] * 1000. Šajā gadījumā akselerometra jutība gar Z asi = (2, 03 - 1, 68) * 1000 = 350 mV. Līdzīgi jutība būs jāaprēķina X un Y asīm.
Tabulas "C" kolonnā parādīts paātrinājums, kas aprēķināts pieciem leņķiem ar jutību 350. Kā redzat, tie praktiski sakrīt ar tiem, kas parādīti 1. attēlā.
5. solis
Atceroties ģeometrijas pamatkursu, mēs iegūstam formulu akselerometra rotācijas leņķu aprēķināšanai:
leņķis_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Vērtības ir radiānos. Lai tos konvertētu grādos, daliet ar Pi un reiziniet ar 180.
Rezultātā ilustrācijā parādīta pilnīga skice, kas aprēķina akselerometra paātrinājuma un rotācijas leņķus pa visām asīm. Komentāri sniedz paskaidrojumus par programmas kodu.
Ievadot portu "Serial.print ()", rakstzīme "\ t" apzīmē cilnes rakstzīmi tā, ka kolonnas ir vienmērīgas un vērtības atrodas viena pēc otras. "+" nozīmē virkņu savienošanu (savienošanu). Turklāt operators "String ()" kompilatoram skaidri norāda, ka skaitliskā vērtība jāpārvērš par virkni. Apaļais () operators noapaļo stūri līdz tuvākajam 1 grādam.
6. solis
Tātad, mēs uzzinājām, kā paņemt un apstrādāt datus no analogā akselerometra ADXL335, izmantojot Arduino. Tagad mēs varam izmantot akselerometru mūsu dizainā.