Începeți cu proiectarea senzorului de mișcare și orientare bazat pe MEMS utilizând plăcile tip breakout de la Arduino
Contributed By DigiKey's North American Editors
2020-11-25
Proiectanții trebuie să asigure capacități de orientare și mișcare din ce în ce mai mari pentru sistemele pe care le proiectează. Din fericire, pentru a-i ajuta să facă acest lucru au apărut pe piață senzorii bazați pe tehnologiile sistemelor în stare solidă (semiconductoare) și ale sistemelor microelectromecanice (MEMS). Dimensiunile reduse și prețurile lor mici permit utilizarea detecției mișcării și orientării într-o gamă largă de sisteme, care includ dronele, roboții și, desigur, produsele portabile, precum smartphone-urile și tabletele. Acești senzori sunt utilizați și în sistemele de întreținere predictivă pentru Internetul industrial al obiectelor (IIoT), oferind date pentru analiză prin intermediul inteligenței artificiale (AI) și învățării automate (ML) aproape de sursă.
Principalele tipuri de senzori MEMS utilizați pentru detectarea mișcării și orientării sunt accelerometrele, giroscoapele, magnetometrele și diverse combinații dintre acestea. Chiar dacă mulți designeri sunt interesați să încorporeze senzorii de mișcare și orientare în proiectele lor, de cele mai multe ori nu sunt siguri cu ce trebuie să înceapă.
O opțiune este utilizarea seturilor de evaluare și dezvoltare furnizate de furnizorii senzorilor MEMS în sprijinul soluțiilor lor. Presupunând că se asigură un grad bun de susținere, aceasta este o abordare perfectă. Totuși, este necesar ca proiectantul fie să se limiteze la utilizarea senzorilor proveniți doar de la un singur furnizor, fie să învețe să utilizeze instrumentele software provenite de la mai mulți furnizori de senzori.
Alternativ, proiectanții care nu sunt obișnuiți să lucreze cu senzori de mișcare și orientare pot beneficia de posibilitatea de a face experimente și de a crea prototipuri utilizând plăci de dezvoltare cu microcontrolerele open source cu costuri reduse de la Arduino, alături de mediul unic de dezvoltare integrat (IDE), în asociere cu plăcile tip breakout (BOB) pentru senzori, tip open source, care oferă senzori proveniți de la mai mulți furnizori.
Pentru a-i ajuta pe proiectanți în activitățile lor de proiectare, acest articol oferă un glosar de terminologie pentru senzori și discută pe scurt rolul senzorilor de mișcare și orientare. Apoi, prezintă o selecție de astfel de senzori pentru plăcile BOB de la Adafruit, precum și utilizările acestora.
Glosar de terminologie pentru senzori
Doi termeni utilizați în mod obișnuit cu referire la senzorii de mișcare și orientare sunt „numărul de axe” și „gradele de mișcare liberă” (DOF). Din păcate, adesea acești termeni sunt folosiți ca sinonime, ceea ce poate crea confuzie.
În general vorbind, termenul de ax (axe plural) poate fi folosit pentru a descrie dimensiunile datelor utilizate de un sistem. În contextul mișcării și orientării, există trei axe de interes, X, Y și Z.
Modul în care sunt vizualizate aceste axe depinde de sistemul respectiv. În cazul unui smartphone cu orientarea setată la modul Portret, de exemplu, axa X este orizontală în raport cu ecranul și este îndreptată spre dreapta, axa Y este verticală în raport cu ecranul și este îndreptată în sus, iar axa Z, care este perpendiculară pe celelalte două axe, se consideră că este îndreptată în afara ecranului (Figura 1).
Figura 1: Un sistem fizic nu poate avea decât maximum șase DOF, deoarece există doar șase moduri în care se poate deplasa în spațiul 3D: trei liniare și trei unghiulare. (Sursă imagine: Max Maxfield)
În ceea ce privește dispozitivele, cum ar fi un smartphone, există două tipuri de mișcare care ne interesează: liniară și unghiulară. În cazul mișcării liniare, sistemul se poate deplasa dintr-o parte în alta pe axa X, în sus și în jos pe axa Y și înainte și înapoi pe axa Z. În cazul mișcării unghiulare, sistemul se poate roti în jurul uneia sau mai multora dintre cele trei axe.
În contextul mișcării, DOF se referă la oricare dintre direcțiile în care poate apărea mișcarea independentă. Din acest motiv, un sistem fizic nu poate avea decât maximum șase DOF (6DOF), deoarece există doar șase moduri în care se poate deplasa în spațiul 3D (trei liniare și trei unghiulare).
Termenul „orientare” se referă la poziția fizică sau la direcția unui lucru în raport de altul. În cazul unui smartphone, orientarea stabilește dacă telefonul stă întins pe orizontală, stă drept pe o margine (fie în modul Portret sau Peisaj), fie stă într-o poziție intermediară.
Un mod de a privi lucrurile este că orientarea unui dispozitiv poate fi specificată de valorile tuturor DOF-urilor posibile la un moment dat tX. Prin comparație, mișcarea unui dispozitiv este determinată de diferențele dintre valorile tuturor DOF-urilor posibile între timpii t0 și t1.
Senzorii precum accelerometrele, giroscoapele și magnetometrele sunt disponibili cu una, două sau trei axe. Un accelerometru cu o singură axă, de exemplu, va detecta modificări doar de-a lungul oricăreia dintre cele trei axe față de care este aliniat; un senzor pe 2 axe va detecta modificările pe două dintre cele trei axe; iar un senzor pe 3 axe va detecta modificările pe toate cele trei axe.
Dacă din descrierea unei platforme de senzori rezultă că aceasta urmărește mai mult de șase axe, înseamnă că oferă un grad mai mare de precizie, urmărind mai multe puncte de date de-a lungul (sau în jurul) axelor X, Y și Z. Un exemplu este o suită de accelerometre cu 12 axe, care utilizează măsurători ale accelerației liniare de la patru accelerometre cu 3 axe.
Din păcate, de multe ori se confundă DOF cu numărul de axe. De exemplu, combinația dintre un accelerometru cu 3 axe, un giroscop cu 3 axe și un magnetometru cu 3 axe poate fi descrisă de unii furnizori ca un senzor 9DOF, chiar dacă descrierea mai corectă ar trebui să fie un senzor pe 9 axe 6DOF.
Fuziunea senzorilor
Pe lângă accelerație, un accelerometru măsoară și gravitația. De exemplu, în cazul unui smartphone, un accelerometru cu 3 axe poate determina care este direcția în jos, chiar dacă nici utilizatorul, nici dispozitivul nu se mișcă.
De asemenea, un accelerometru cu 3 axe poate fi utilizat pentru a se stabili dacă orientarea dispozitivului este verticală sau orizontală, aceste informații putând fi utilizate pentru prezentarea afișajului în modurile portret sau peisaj. Cu toate acestea, accelerometrul nu poate fi utilizat pentru a determina orientarea smartphone-ului în raport de câmpul magnetic al Pământului. Această capacitate este necesară pentru sarcini precum aplicațiile de planetariu, care îi permit utilizatorului să identifice și să localizeze stele, planete și constelații pe cerul nocturn, îndreptând, pur și simplu, dispozitivul către zona de interes. În acest caz, este necesar un magnetometru. Dacă smartphone-ul ar sta așezat întotdeauna pe orizontală pe o masă, atunci ar fi suficient un magnetometru cu o singură axă. Având în vedere faptul că un smartphone poate fi utilizat în orice orientare, este necesară utilizarea unui magnetometru cu 3 axe.
Accelerometrele nu sunt afectate de câmpul magnetic înconjurător, dar sunt afectate de mișcare și de vibrații. Prin comparație, magnetometrele nu sunt afectate de mișcare și de vibrații în sine, dar pot fi influențate de materialele magnetice și de câmpurile electromagnetice din vecinătate.
Deși un accelerometru cu 3 axe poate fi utilizat și pentru a obține date de rotație, un giroscop cu 3 axe oferă date mai precise cu privire la impulsul unghiular. Giroscoapele funcționează bine atunci când vine vorba de măsurarea vitezei de rotație și nu sunt afectate de accelerație în direcție liniară sau de câmpurile magnetice. Cu toate acestea, giroscoapele au tendința de a genera o viteză mică de rotație „reziduală”, chiar și atunci când devin staționare. Acest lucru este cunoscut sub numele de „decalaj cu abatere zero”. Problema apare atunci când utilizatorul încearcă să determine un unghi absolut utilizând giroscopul, caz în care este necesară integrarea vitezei de rotație pentru obținerea poziției unghiulare. Problema pe care o ridică integrarea în acest scenariu este că erorile se pot acumula. De exemplu, o mică eroare de numai 0,01 grade în prima măsurare poate crește și ajunge la un grad întreg după 100 de măsurători. Acest lucru este cunoscut sub denumirea de „abaterea giroscopului”.
Termenul „fuziune senzori” se referă la combinarea datelor senzorilor derivate din surse disparate, astfel încât informațiile rezultate să prezinte o incertitudine mai mică decât ar permite utilizarea individuală a datelor derivate din sursele respective.
De exemplu, în cazul unui set de senzori ce include un accelerometru cu 3 axe, un giroscop cu 3 axe și un magnetometru cu 3 axe, datele de pe accelerometru și magnetometru pot fi utilizate pentru a anula abaterea giroscopului. Între timp, datele din giroscop pot fi utilizate pentru compensarea oricărui zgomot provocat de vibrații de la accelerometru și a oricărui zgomot provocat de materialul magnetic/de câmp de la magnetometru.
Rezultatul utilizării fuziunii senzorilor este că acuratețea rezultatelor depășește precizia senzorilor individuali.
Vă prezentăm câțiva senzori reprezentativi
În funcție de aplicație, proiectantul poate decide să utilizeze doar un singur tip de senzor de mișcare/orientare, sub forma unui accelerometru, giroscop sau magnetometru.
Un bun accelerometru pentru inițiere este BOB 2019 de la Adafruit, care prezintă un accelerometru cu 3 axe cu un convertor analog-digital pe 14 biți (ADC) (Figura 2).
Figura 2: BOB 2019 de la Adafruit prezintă un accelerometru cu 3 axe ce poate fi utilizat pentru detectarea mișcării, înclinării și orientării de bază. (Sursă imagine: Adafruit)
Senzorul cu 3 axe de înaltă precizie are o gamă largă, de la ±2 g la ±8 g, și poate fi utilizat pentru detectarea mișcării, înclinării și orientării de bază. Senzorul necesită o sursă de alimentare de 3,3 volți, dar BOB include un regulator de 3,3 volți cu cădere redusă de tensiune și circuite de schimbare a nivelului, ceea ce o face, astfel, sigură pentru utilizarea cu funcții logice și putere de 3 volți sau 5 volți. Comunicarea dintre BOB și Arduino (sau un alt microcontroler) se realizează cu ajutorul I2C.
Pentru aplicațiile care necesită doar un senzor giroscopic pentru a detecta mișcări de răsucire și rotire, o placă bună pentru inițiere este BOB 1032 de la Adafruit cu giroscopul L3GD20H cu 3 axe de la STMicroelectronics. Suportând atât interfețele I2C, cât și SPI pe Arduino (sau un alt microcontroler), L3GD20H poate fi setat la o scară de ±250, ±500 sau ±2000 de grade pe secundă pentru o gamă largă de sensibilitate. Încă o dată, senzorul necesită o sursă de alimentare de 3,3 volți, dar BOB include un regulator de 3,3 volți și circuite de schimbare a nivelului, ceea ce permite utilizarea acesteia cu funcții logice și putere de 3 volți sau de 5 volți.
În mod similar, pentru aplicațiile care necesită doar un senzor magnetic, o opțiune bună de evaluare este placa BOB 4479 de la Adafruit, care oferă magnetometrul cu 3 axe LIS3MDL de la STMicroelectronics. LIS3MDL poate detecta intervale de la ±4 gauși (±400 microtesle (µT)) până la ±16 gauși (± 1600 µT sau 1,6 millitesle (mT)). Comunicarea dintre BOB și Arduino (sau un alt microcontroler) se realizează cu ajutorul I2C. Din nou, placa BOB include regulatorul de 3,3 volți și circuite de schimbare a nivelului, ceea ce o face sigură pentru utilizarea cu funcții logice și putere de 3 volți sau 5 volți.
Se întâmplă foarte des ca mai mulți senzori să fie utilizați împreună. De exemplu, un accelerometru poate fi utilizat împreună cu un giroscop pentru a efectua sarcini precum captarea mișcării 3D și măsurarea inerțială; adică pentru a-i permite utilizatorului să determine cum se mișcă un obiect într-un spațiu 3D. Exemplul unei astfel de combinații este placa BOB 4480 de la Adafruit (Figura 3), care prezintă cipul senzorului LSM6DS33 de la STMicroelectronics.
Figura 3: Placa BOB 4480 de la Adafruit prezintă accelerometrul cu 3 axe LSM6DS33TR și un giroscop cu 3 axe ce pot fi utilizate pentru efectuarea unor sarcini precum captarea mișcării 3D și măsurarea inerțială. (Sursă imagine: Adafruit)
Accelerometrul cu 3 axe poate furniza date privind direcția spre Pământ prin măsurarea gravitației și privind viteza de accelerare a plăcii în spațiul 3D. Între timp, giroscopul cu 3 axe poate măsura rotirea și răsucirea. Ca în cazul celorlalte plăci BOB cu senzori prezentate mai devreme, placa BOB 4480 include un regulator de 3,3 volți și circuite de schimbare a nivelului, ceea ce o face sigură pentru utilizarea cu funcții logice și putere de 3 volți sau 5 volți. De asemenea, datele senzorului pot fi accesate utilizând atât interfețe I2C, cât și SPI, ceea ce permite utilizarea sa cu un Arduino (sau alt microcontroler) fără nicio configurare hardware complicată.
Un alt exemplu de placă BOB cu senzor dual este 1120 de la Adafruit, care prezintă combinația dintre un accelerometru cu 3 axe și un magnetometru cu 3 axe sub forma unui cip de senzor LSM303 de la STMicroelectronics. Comunicațiile între microcontroler și 1120 se realizează printr-o interfață I2C, iar placa BOB include un regulator de 3,3 volți și circuite de schimbare a nivelului, ceea ce o face sigură pentru utilizarea cu funcții logice și putere de 3 volți sau 5 volți.
Unele aplicații necesită utilizarea accelerometrelor, giroscoapelor și magnetometrelor. În acest caz, o placă BOB utilă de inițiere este modelul 3463 de la Adafruit, care prezintă două cipuri de senzori: un giroscop cu 3 axe și un accelerometru cu 3 axe cu un magnetometru cu 3 axe. Comunicațiile dintre BOB și microcontroler sunt implementate printr-o interfață SPI. De asemenea, sunt incluse un regulator de 3,3 volți și circuite de schimbare a nivelului, ceea ce o face sigură pentru utilizarea cu funcții logice și putere de 3 volți sau 5 volți.
Un avantaj al BOB 3463 este că proiectantul primeşte acces brut la datele celor trei senzori. Un dezavantaj aferent este că utilizarea acestui senzor (manipularea și prelucrarea datelor acestuia) va utiliza aproximativ 15 kiloocteți (Kbyte) din memoria flash a microcontrolerului și va consuma o mulțime de cicluri de funcționare a ceasului.
Ca alternativă, modelul BOB 2472 de la Adafruit are un cip senzor BNO055 de la Bosch. BNO055 include un accelerometru cu 3 axe, un giroscop cu 3 axe și un magnetometru cu 3 axe, toate prezentate într-un singur pachet (Figura 4).
Figura 4: În afară de un accelerometru cu 3 axe, un giroscop cu 3 axe și un magnetometru cu 3 axe, senzorul BNO055 de pe BOB 2472 de la Adafruit include și un procesor Arm Cortex-M0, care realizează fuziunea senzorilor. (Sursă imagine: Adafruit)
Mai mult, BNO055 include și un procesor Arm Cortex-M0 pe 32 de biți, care preia datele brute de la cei trei senzori, realizează fuziunea sofisticată a senzorilor, oferindu-le proiectanților informații procesate în forme pe care le pot utiliza: cuaternioni, unghiuri Euler și vectori. Mai precis, prin interfața I2C a BOB 2472, proiectanții pot accesa rapid și ușor următoarele:
- Orientarea absolută (vectorul Euler, 100 Hertzi (Hz)): date de orientare pe trei axe bazate pe o sferă de 360°.
- Orientarea absolută (Quatenrion, 100 Hz): ieșire cuaternară în patru puncte pentru o manipulare mai precisă a datelor.
- Vectorul vitezei unghiulare (100 Hz): trei axe ale „vitezei de rotație” în rad/s.
- Vectorul accelerației (100 Hz): trei axe ale accelerației (gravitație + mișcare liniară) în metri pe secundă la pătrat (m/s2).
- Vectorul intensității câmpului magnetic (20 Hz): trei axe de detectare a câmpului magnetic (în µT).
- Vectorul accelerației liniare (100 Hz): trei axe ale datelor de accelerație liniară (accelerație minus gravitație) în m/s2.
- Vectorul gravitației (100 Hz): trei axe de accelerație gravitațională (minus orice mișcare) în m/s2.
- Temperatura (1 Hz): temperatura ambientală în grade Celsius.
Realizarea fuziunii senzorului pe cip eliberează memoria microcontrolerului principal și ciclurile de calcul, ceea ce este ideal pentru proiectanții care creează sisteme de operare în timp real cu costuri reduse. Mai mult, utilizarea algoritmilor de fuziune a senzorilor poate fi dificilă și poate consuma mult timp. Realizarea fuziunii senzorului pe cip le permite dezvoltatorilor de sistem să utilizeze sistemele în câteva minute, în loc de zile sau săptămâni, dacă implementează algoritmii de la zero.
Concluzie
Mulți designeri sunt interesați să încorporeze senzori de mișcare și orientare în proiectele lor, dar nu sunt siguri cu ce trebuie să înceapă. În cazul proiectanților care nu sunt obișnuiți să lucreze cu aceste dispozitive, familiarizarea cu senzorii proveniți de la diferiți producători poate fi o provocare. O modalitate de a începe experimentarea și crearea prototipurilor este utilizarea plăcilor de dezvoltare cu microcontrolere open-source cu costuri reduse, cum ar fi cele de la Arduino, împreună cu senzorii de pe plăcile BOB open-source, cu costuri reduse, ce oferă senzori de la mai mulți furnizori.
Referințe suplimentare:
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




