Kuidas Kiirendusmõõturit Arduinoga ühendada

Sisukord:

Kuidas Kiirendusmõõturit Arduinoga ühendada
Kuidas Kiirendusmõõturit Arduinoga ühendada

Video: Kuidas Kiirendusmõõturit Arduinoga ühendada

Video: Kuidas Kiirendusmõõturit Arduinoga ühendada
Video: Lesson16 GY-521 Module & MPU-6050 2024, Mai
Anonim

Seekord tegeleme ADXL335 analoogse kolmtelje kiirendusmõõturi ühendamisega Arduinoga.

Analoogkiirendusmõõtur ADXL335
Analoogkiirendusmõõtur ADXL335

Vajalik

  • - Arduino;
  • - kiirendusmõõtur ADXL335;
  • - Arduino IDE arenduskeskkonnaga personaalarvuti.

Juhised

Samm 1

Kiirendusvektori määramiseks kasutatakse kiirendusmõõtureid. ADXL335 kiirendusmõõturil on kolm telge ja tänu sellele saab see määrata kiirendusvektori kolmemõõtmelises ruumis. Tulenevalt asjaolust, et gravitatsioonijõud on ka vektor, saab kiirendusmõõtur ise määrata oma orientatsiooni kolmemõõtmelises ruumis Maa keskosa suhtes.

Joonisel on kujutatud ADXL335 kiirendusmõõturi passi pilte (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf). Siin on näidatud kiirendusmõõturi tundlikkuse koordinaatteljed seadme korpuse geomeetrilise paigutuse suhtes ruumis, samuti 3 kiirendusmõõtja kanali pingeväärtuste tabel sõltuvalt selle orientatsioonist ruumis. Tabelis olevad andmed on antud puhkeasendis oleva anduri kohta.

Vaatame lähemalt, mida kiirendusmõõtur meile näitab. Las andur lamab horisontaalselt näiteks laual. Siis on kiirendusvektori projektsioon võrdne 1g piki Z-telge või Zout = 1g. Kahel teisel teljel on nullid: Xout = 0 ja Yout = 0. Kui andur pööratakse "selga", suunatakse see gravitatsioonivektori suhtes vastupidises suunas, st. Zout = -1g. Samamoodi tehakse mõõtmised kõigil kolmel teljel. On selge, et kiirendusmõõturit saab kosmoses paigutada vastavalt soovile, seega võtame kõigist kolmest kanalist muud kui nullnäidud.

Kui sondi loksutatakse piki vertikaalset Z-telge, on Zouti väärtus suurem kui "1g". Maksimaalne mõõdetav kiirendus on igas teljes suvalises suunas "3g" (st nii "pluss" kui "miinus").

Kiirendusmõõturi tundlikkuse teljed ja väljundväärtuste tabel
Kiirendusmõõturi tundlikkuse teljed ja väljundväärtuste tabel

2. samm

Ma arvan, et me mõtlesime välja kiirendusmõõturi tööpõhimõtte. Nüüd vaatame ühendusskeemi.

Analoogkiirendusmõõturi kiip ADXL335 on üsna väike ja mahub BGA paketti ning seda on kodus keeruline tahvlile kinnitada. Seetõttu kasutan ADXL335 kiirendusmõõturiga valmis GY-61 moodulit. Sellised moodulid Hiina veebipoodides maksavad peaaegu senti.

Akseleromeetri toitmiseks on vaja mooduli VCC tihvtile anda pinge +3, 3 V. Anduri mõõtekanalid on ühendatud Arduino analoognõeltega, näiteks "A0", "A1" ja " A2 ". See on kogu ringkond:)

ADXL335 kiirendusmõõturi ühendusskeem Ardunole
ADXL335 kiirendusmõõturi ühendusskeem Ardunole

3. samm

Laadime selle visandi Arduino mällu. Me loeme kolme kanali analoogsisendite näitu, teisendame need pingeks ja väljastame jadaporti.

Arduinol on 10-bitine ADC ja maksimaalne lubatud tihvti pinge on 5 volti. Mõõdetud pinged on kodeeritud bittidega, mis võivad võtta ainult 2 väärtust - 0 või 1. See tähendab, et kogu mõõtepiirkond jagatakse (1 + 1) -ga 10. võimsuseni, s.t. 1024 võrdsel lõigul.

Näitude teisendamiseks voltideks peate jagama iga analoogsisendis mõõdetud väärtuse 1024-ga (segmendid) ja seejärel korrutama 5-ga (voltidega).

Vaatame, mis pärineb kiirendusmõõturist, kasutades näiteks Z-telge (viimane veerg). Kui andur on horisontaalselt paigutatud ja vaatab üles, tulevad numbrid (2,03 +/- 0,01). Nii et see peaks vastama kiirendusele "+ 1g" piki Z-telge ja 0-kraadisele nurgale. Pöörake andurit. Saabuvad numbrid (1, 69 +/- 0, 01), mis peaks vastama "-1g" -le ja 180-kraadisele nurgale.

Kiirendusmõõturi lugemisjoonis
Kiirendusmõõturi lugemisjoonis

4. samm

Võtame kiirendusmõõturilt 90 ja 270 kraadise nurga all olevad väärtused ja sisestame need tabelisse. Tabelis on toodud kiirendusmõõturi pöördenurgad (veerg "A") ja vastavad Zouti väärtused voltides (veerg "B").

Selguse huvides on näidatud pinge graafik Zouti väljundis ja pöördenurk. Sinine väli on puhkeulatus (1 g kiirendusel). Graafiku roosa kast on varu, et saaksime mõõta kiirendust kuni + 3g ja kuni -3g.

90-kraadise pöörde korral on Z-teljel kiirendus null. Need. väärtus 1,67 volti on Z-telje tingimuslik null Zo. Siis leiate kiirenduse järgmiselt:

g = Zout - Zo / tundlikkus_z, siin on Zout mõõdetud väärtus millivoltides, Zo on väärtus nullkiirendusel millivoltides, tundlikkus_z on sensori tundlikkus piki Z-telge. kalibreerige kiirendusmõõtur ja arvutage spetsiaalselt oma tundlikkuse väärtus andur, kasutades valemit:

tundlikkus_z = [Z (0 kraadi) - Z (90 kraadi)] * 1000. Sellisel juhul on kiirendusmõõturi tundlikkus piki Z-telge = (2, 03 - 1, 68) * 1000 = 350 mV. Samamoodi tuleb arvutada X- ja Y-telje tundlikkus.

Tabeli veerg "C" näitab kiirendust, mis on arvutatud viie nurga korral tundlikkusega 350. Nagu näete, langevad need praktiliselt kokku joonisel 1 näidatuga.

Kiirendusmõõturi pöördenurkade vastavus näitudele
Kiirendusmõõturi pöördenurkade vastavus näitudele

5. samm

Meenutades geomeetria põhikursust, saame kiirendusmõõturi pöördenurkade arvutamise valemi:

nurk_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Väärtused on radiaanides. Nende teisendamiseks kraadidesse jagage Pi-ga ja korrutage 180-ga.

Selle tulemusena on joonisel näidatud täielik visand, mis arvutab kiirendusmõõturi kiirendus- ja pöördenurga piki kõiki telgi. Kommentaarid annavad selgitusi programmi koodile.

Pordi "Serial.print ()" väljasaatmisel tähistab märk / \ t vahelehe märki, nii et veerud on paaris ja väärtused asuvad üksteise all. "+" tähendab stringide liitmist (liitmist). Lisaks ütleb operaator "String ()" kompilaatorile selgesõnaliselt, et arvuline väärtus tuleb teisendada stringiks. Ümmargune () operaator ümardab nurga 1 kraadi täpsusega.

Visand, mis arvutab kiirendusmõõturi kiirenduse ja nurgad
Visand, mis arvutab kiirendusmõõturi kiirenduse ja nurgad

6. samm

Niisiis, õppisime, kuidas Arduino abil andmeid võtta ja töödelda analoogkiirendusmõõturilt ADXL335. Nüüd saame oma disainides kasutada kiirendusmõõturit.

Soovitan: