Progettare sensori di movimento e di orientamento basati su MEMS con le schede di breakout Arduino
Contributo di Editori nordamericani di DigiKey
2020-11-25
I progettisti hanno sempre più bisogno di fornire ai sistemi finali capacità di orientamento e di movimento. Fortunatamente, i sensori basati su tecnologie a stato solido (semiconduttori) e sistemi microelettromeccanici (MEMS) vengono in aiuto. Le loro dimensioni compatte e il basso costo consentono il rilevamento del movimento e dell'orientamento in un'ampia gamma di sistemi, compresi droni, robot e, naturalmente, prodotti palmari come smartphone e tablet. Questi sensori sono utilizzati anche nei sistemi di manutenzione predittiva per l'Internet delle cose industriale (IIoT), fornendo dati per l'analisi basati sull'intelligenza artificiale (AI) e l'apprendimento automatico (ML) sul fronte periferico.
I principali tipi di sensori MEMS utilizzati per rilevare il movimento e l'orientamento sono accelerometri, giroscopi, magnetometri e varie combinazioni di questi. Anche se molti progettisti sono interessati a incorporare sensori di movimento e di orientamento nei loro progetti, spesso non sanno da dove iniziare.
Un'opzione è utilizzare i kit di valutazione e sviluppo offerti dai fornitori di sensori MEMS a supporto delle loro soluzioni. Se si parte dall'ipotesi che il livello di supporto sia buono, questo approccio va benissimo. Tuttavia, richiede al progettista di limitarsi all'uso di sensori provenienti da un unico fornitore o di imparare a utilizzare gli strumenti software di vari fornitori.
In alternativa, i progettisti che non sono abituati a lavorare con i sensori di movimento e di orientamento possono trarre vantaggio dalla sperimentazione e dalla prototipazione utilizzando schede di sviluppo per microcontroller di tipo open-source a basso costo fornite da Arduino, insieme al suo unico ambiente di sviluppo integrato (IDE), in combinazione con le schede di breakout (BOB) per sensori open-source e a basso costo dotate di sensori di più fornitori.
Per aiutare i progettisti a muovere i primi passi, questo articolo fornisce un glossario terminologico dei sensori e discute brevemente il ruolo dei sensori di movimento e di orientamento. Presenta poi una selezione di queste BOB per sensori di Adafruit e ne spiega l'utilizzo.
Glossario terminologico dei sensori
Due termini comunemente usati quando ci si riferisce ai sensori di movimento e di orientamento sono il "numero di assi" e i "gradi di libertà" (DOF). Purtroppo, questi termini sono spesso usati come sinonimi, il che può portare a confusione.
In generale, il termine asse può essere usato per descrivere la dimensionalità dei dati utilizzati da un sistema. Nel contesto del movimento e dell'orientamento, ci sono tre assi di interesse: X, Y e Z.
Il modo in cui questi assi vengono visualizzati dipende dal sistema in questione. Nel caso di uno smartphone con orientamento verticale, ad esempio, l'asse X è orizzontale rispetto allo schermo e punta a destra, l'asse Y è verticale rispetto allo schermo e punta verso l'alto, e l'asse Z, perpendicolare agli altri due assi, punta fuori dallo schermo (Figura 1).
Figura 1: Un sistema fisico può avere al massimo solo sei DOF perché ci sono solo sei modi in cui può muoversi nello spazio 3D: tre lineari e tre angolari. (Immagine per gentile concessione di Max Maxfield)
Per quanto riguarda un dispositivo come uno smartphone, ci sono due tipi di movimento di interesse: lineare e angolare. Nel caso del movimento lineare, il sistema può muoversi da un lato all'altro sull'asse X, su e giù sull'asse Y e avanti e indietro sull'asse Z. Nel caso del movimento angolare, il sistema può ruotare intorno a uno o più dei tre assi.
Nel contesto del movimento, il DOF si riferisce a una qualsiasi delle direzioni in cui può verificarsi un movimento indipendente. Su questa base, un sistema fisico può avere al massimo solo sei DOF (6DOF) perché ci sono solo sei modi in cui può muoversi nello spazio 3D (tre lineari e tre angolari).
Il termine "orientamento" si riferisce alla posizione fisica o alla direzione di qualcosa rispetto a qualcos'altro. Nel caso di uno smartphone, l'orientamento determina se il telefono è disteso sul dorso, eretto su un bordo (in modalità verticale oppure orizzontale) o inclinato in qualche modo a metà tra questi.
Un modo per capire l'orientamento di un dispositivo è dato dalla specificazione dei valori di tutti i possibili DOF in un certo punto temporale tX. In confronto, il moto di un dispositivo è determinato dalle differenze tra i valori di tutti i possibili DOF tra i tempi t0 e t1.
Sensori come accelerometri, giroscopi e magnetometri sono disponibili con uno, due o tre assi. Un accelerometro a 1 asse, per esempio, rileverà solo i cambiamenti lungo uno qualsiasi dei tre assi a cui è allineato, un sensore a 2 assi rileverà i cambiamenti su due dei tre assi e un sensore a 3 assi rileverà i cambiamenti su tutti e tre gli assi.
Se una piattaforma di sensori è descritta come l'inseguimento di più di sei assi, questo indica che essa fornisce un più alto grado di precisione inseguendo più punti dati lungo (o intorno) gli assi X, Y e Z. Un esempio è una suite di accelerometri a 12 assi che utilizza le misurazioni di accelerazione lineare da quattro accelerometri a 3 assi.
Purtroppo, è comune confondere il DOF con il numero di assi. Ad esempio, la combinazione di un accelerometro a 3 assi, un giroscopio a 3 assi e un magnetometro a 3 assi può essere descritta da alcuni fornitori come un sensore 9DOF, anche se dovrebbe essere descritta più correttamente come un sensore a 9 assi e 6DOF.
Fusione sensoriale
Oltre a misurare l'accelerazione, un accelerometro misura anche la gravità. Ad esempio, nel caso di uno smartphone, un accelerometro a 3 assi può determinare quale sia la direzione verso il basso, anche se l'utente è fermo e il dispositivo è immobile.
Un accelerometro a 3 assi può anche essere utilizzato per determinare l'orientamento verticale e orizzontale del dispositivo, che può utilizzare queste informazioni per presentare la visualizzazione in modalità verticale o orizzontale. Da solo, tuttavia, l'accelerometro non può essere utilizzato per determinare l'orientamento dello smartphone rispetto al campo magnetico terrestre. Questa capacità è necessaria per compiti come le app planetarie che permettono all'utente di identificare e localizzare stelle, pianeti e costellazioni nel cielo notturno semplicemente puntando il dispositivo verso l'area di interesse. In questo caso è necessario un magnetometro. Se lo smartphone fosse sempre appoggiato su un tavolo, sarebbe sufficiente un magnetometro a 1 asse. Poiché uno smartphone può essere utilizzato in qualsiasi orientamento, tuttavia, è necessario utilizzare un magnetometro a 3 assi.
Gli accelerometri non sono influenzati dal campo magnetico circostante, ma sono influenzati dal movimento e dalle vibrazioni. In confronto, i magnetometri non sono influenzati dal movimento e dalle vibrazioni di per sé, ma possono essere influenzati dai materiali magnetici e dai campi elettromagnetici nelle vicinanze.
Sebbene un accelerometro a 3 assi possa essere utilizzato anche per ricavare dati di rotazione, un giroscopio a 3 assi fornisce dati più precisi per quanto riguarda la quantità di moto angolare. I giroscopi funzionano bene quando si tratta di misurare la velocità di rotazione e non sono influenzati dall'accelerazione in direzione lineare o dai campi magnetici. Tuttavia, i giroscopi hanno la tendenza a generare una piccola velocità di rotazione "residua", anche quando sono fermi. Questo è noto come "offset a deriva zero". Il problema si pone se l'utente desidera determinare un angolo assoluto utilizzando il giroscopio, nel qual caso è necessario integrare la velocità di rotazione per ottenere la posizione angolare. Il problema dell'integrazione in questo scenario è che gli errori possono accumularsi. Un piccolo errore di soli 0,01 gradi nella prima misurazione può crescere ad esempio fino a un grado intero dopo 100 misurazioni. Questo problema è conosciuto come "deriva giroscopica".
Il termine "fusione sensoriale" si riferisce alla combinazione di dati sensoriali derivati da fonti disparate in modo tale che l'informazione risultante abbia meno incertezza di quanto sarebbe possibile se i dati provenienti da tali fonti fossero utilizzati singolarmente.
Nel caso di un array di sensori comprendente un accelerometro a 3 assi, un giroscopio a 3 assi e un magnetometro a 3 assi, ad esempio, i dati dell'accelerometro e del magnetometro possono essere utilizzati per annullare la deriva giroscopica. Nel frattempo, i dati del giroscopio possono essere usati per compensare qualsiasi rumore indotto dalle vibrazioni dell'accelerometro e il rumore indotto dal materiale magnetico/campo del magnetometro.
Il risultato dell'uso della fusione sensoriale è che la precisione dell'uscita supera la precisione dei singoli sensori.
Presentazione di alcuni sensori rappresentativi
A seconda dell'applicazione, il progettista può decidere di utilizzare un solo tipo di sensore di movimento/orientamento sotto forma di accelerometro, giroscopio o magnetometro.
Un buon accelerometro introduttivo è la BOB 2019 di Adafruit, che presenta un accelerometro a 3 assi con un convertitore analogico/digitale (ADC) a 14 bit (Figura 2).
Figura 2: La BOB 2019 di Adafruit è dotata di un accelerometro a 3 assi che può essere utilizzato per rilevare il movimento, l'inclinazione e l'orientamento di base. (Immagine per gentile concessione di Adafruit)
Il sensore a 3 assi ad alta precisione ha un ampio intervallo da ±2 g a ±8 g e può essere utilizzato per rilevare il movimento, l'inclinazione e l'orientamento di base. Il sensore richiede un'alimentazione a 3,3 V, ma la BOB include un regolatore a bassa caduta di tensione da 3,3 V e un circuito di traslazione di livello, che la rende così sicura per l'uso con potenza e logica a 3 V o 5 V. La comunicazione tra la BOB e Arduino (o un altro microcontroller) avviene tramite I2C.
Per le applicazioni che richiedono solo un sensore giroscopico per rilevare i movimenti di torsione e rotazione, una buona scheda di introduzione è la BOB 1032 di Adafruit con un giroscopio a 3 assi L3GD20H di STMicroelectronics. Con supporto sia dell'interfaccia I2C che SPI con Arduino (o un altro microcontroller), L3GD20H può essere impostato su una scala di ±250, ±500 o ±2000 gradi al secondo per un ampio intervallo di sensibilità. Il sensore richiede un'alimentazione a 3,3 V, ma la BOB include un regolatore a 3,3 V e un circuito di traslazione di livello che ne permette l'utilizzo con potenza e logica a 3 V o 5 V.
Analogamente, per le applicazioni che richiedono solo un sensore magnetico, una buona opzione di valutazione è la BOB 4479 di Adafruit, dotata del magnetometro a 3 assi LIS3MDL di STMicroelectronics. LIS3MDL può rilevare campi da ±4 gauss (±400 µT) fino a ±16 gauss (±1600 µT o 1,6 mT). La comunicazione tra la BOB e Arduino (o un altro microcontroller) avviene tramite I2C. Anche in questo caso, la BOB include un regolatore a 3,3 V e un circuito di traslazione di livello che lo rende sicuro per l'uso con potenza e logica a 3 V o 5 V.
È molto comune che più sensori vengano utilizzati in combinazione. Ad esempio, un accelerometro può essere usato in combinazione con un giroscopio per attività come la registrazione del movimento 3D e la misurazione inerziale; cioè per consentire all'utente di determinare come un oggetto si stia muovendo in uno spazio 3D. Un esempio di tale combinazione è la BOB 4480 di Adafruit (Figura 3), che presenta il chip sensore LSM6DS33 di STMicroelectronics.
Figura 3: La BOB 4480 di Adafruit è dotata dell'accelerometro a 3 assi LSM6DS33TR e di un giroscopio a 3 assi che può essere utilizzato per attività come la registrazione del movimento 3D e la misurazione inerziale. (Immagine per gentile concessione di Adafruit)
L'accelerometro a 3 assi può fornire dati sulla direzione verso la terra misurando la gravità e dati sulla velocità di accelerazione della scheda nello spazio 3D. Nel frattempo, il giroscopio a 3 assi può misurare la rotazione e la torsione. Come le altre BOB per sensori già discusse, la BOB 4480 include un regolatore a 3,3 V e un circuito di traslazione di livello, che la rende sicura per l'uso con potenza e logica a 3 V o 5 V. Inoltre, è possibile accedere ai dati del sensore utilizzando l'interfaccia I2C o SPI, e ciò ne consente l'utilizzo con un Arduino (o altro microcontroller) senza la necessità di una complicata configurazione hardware.
Un altro esempio di BOB a doppio sensore è 1120 di Adafruit, che presenta la combinazione di un accelerometro a 3 assi e di un magnetometro a 3 assi sotto forma di chip sensore LSM303 di STMicroelectronics. Le comunicazioni tra il microcontroller e la BOB 1120 avvengono tramite un'interfaccia I2C e la BOB include un regolatore da 3,3 V e un circuito di traslazione di livello, che la rende sicura per l'uso con potenza e logica a 3 V o 5 V.
Alcune applicazioni richiedono l'uso di accelerometri, giroscopi e magnetometri. In questo caso, un'utile BOB introduttiva è 3463 di Adafruit, che presenta due chip sensore: un giroscopio a 3 assi e un accelerometro a 3 assi con magnetometro a 3 assi. Le comunicazioni tra la BOB e il microcontroller sono implementate tramite un'interfaccia SPI. Inoltre, sono inclusi un regolatore da 3,3 V e un circuito di traslazione di livello, che la rende sicura per l'uso con potenza e logica a 3 V o 5 V.
Uno dei vantaggi della BOB 3463 è che il progettista ha accesso ai dati grezzi dei tre sensori. Uno svantaggio pero è che l'utilizzo di questo sensore (manipolazione ed elaborazione dei dati) richiederà circa 15 kB di memoria flash dal microcontroller e consumerà molti cicli di clock.
In alternativa, la BOB 2472 di Adafruit è dotata di un chip sensore BNO055 di Bosch. BNO055 comprende un accelerometro a 3 assi, un giroscopio a 3 assi e un magnetometro a 3 assi, tutti presentati in un unico contenitore (Figura 4).
Figura 4: Oltre a un accelerometro a 3 assi, un giroscopio a 3 assi e un magnetometro a 3 assi, il sensore BNO055 sulla BOB 2472 di Adafruit include anche un processore Arm Cortex-M0 che esegue la fusione sensoriale. (Immagine per gentile concessione di Adafruit)
Inoltre, BNO055 include un processore Arm Cortex-M0 a 32 bit, che prende i dati grezzi dai tre sensori, esegue una sofisticata fusione sensoriale e fornisce ai progettisti informazioni elaborate in forme utilizzabili: quaternioni, angoli di Eulero e vettori. In particolare, tramite l'interfaccia I2C della BOB 2472, i progettisti possono accedere rapidamente e facilmente a quanto segue:
- Orientamento assoluto (vettore di Eulero, 100 Hz): dati di orientamento su tre assi basati su una sfera a 360°.
- Orientamento assoluto (quaternione, 100 Hz): uscita quaternione a quattro punti per una più accurata manipolazione dei dati.
- Vettore di velocità angolare (100 Hz): "velocità di rotazione" su tre assi in rad/s.
- Vettore di accelerazione (100 Hz): accelerazione (gravità + movimento lineare) su tre assi in m/s2.
- Vettore di intensità del campo magnetico (20 Hz): rilevamento del campo magnetico su tre assi (in µT).
- Vettore di accelerazione lineare (100 Hz): dati di accelerazione lineare (accelerazione - gravità) su tre assi in m/s2.
- Vettore di gravità (100 Hz): accelerazione gravitazionale (meno qualsiasi movimento) su tre assi in m/s2.
- Temperatura (1 Hz): temperatura ambiente in gradi Celsius.
L'esecuzione della fusione sensoriale su chip libera la memoria del microcontroller principale e i cicli di calcolo, cosa ideale per i progettisti che creano sistemi in tempo reale a basso costo. Inoltre, gli algoritmi di fusione sensoriale possono essere difficili da padroneggiare. L'esecuzione della fusione sensoriale su chip consente agli sviluppatori di sistemi di essere operativi in pochi minuti, senza sprecare giorni o settimane per implementare gli algoritmi da zero.
Conclusione
Molti progettisti sono interessati a incorporare sensori di movimento e di orientamento nei loro progetti, ma non sanno da dove cominciare. Nel caso di progettisti non abituati a lavorare con questi dispositivi, familiarizzare con i sensori di vari produttori può essere difficile. Un modo per iniziare la sperimentazione e la prototipazione è quello di utilizzare schede di sviluppo per microcontroller open-source a basso costo, come Arduino, insieme a BOB di sensori open-source a basso costo con sensori di più fornitori.
Ulteriori letture
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.




