A pplicazioni MEMS Studio applicativo su trasduttore accelerometrico 3D MEMS Andrea Corgiatini MEMS sono micromacchine integrate su silicio che possono essere utilizzati sia come sensori sia come veri e propri attuatori. Nella loro versione come sensori possono essere utilizzati per rilevare accelerazioni, angoli e pressioni. Essi trovano applicazione in campo automotive, medico, realtà virtuale, guida e ricerca automatica, stabilizzazioni di masse in movimento (giroscopi), rilievo di velocità e posizione, di supporto ai GPS nei brevi periodi in cui il segnale satellitare svanisce o risulta insufficiente, e così via. Le loro caratteristiche di basso costo, integrazione, consumi ridotti, li rendono interessanti per il mercato consumer per tutto ciò che la fantasia dei progettisti riuscirà a realizzare ovunque sia implicato un movimento da misurare o realizzare (in scale millimetriche). Nella loro versione come attuatori, si pensi per esempio alla tecnologia DLP (Digital Light Processing) usata per i video proiettori in cui micro specchi integrati sono comandati per formare l’immagine oggetto della proiezione oppure le stesse testine Ink-jet delle stampanti - solo per citarne due esempi In questo articolo viene descritto l’uso del trasduttore accelerometrico a 3 assi LIS3L02AS4 di STMicroelectronics ed evidenziate le possibili applicazioni pratiche dal punto di vista fisico-meccanico I 78 che hanno già da tempo pervaso il mercato consumer - entrano nella stessa categoria di dispositivi microelettromeccanici su silicio. Nella figura 1 viene riportato un grafico relativo al posizionamento della tecnologia MEMS in relazione alla tecnologia e ai mercati. Fig. 1 - Posizionamento dei MEMS in relazione alle tecnologie e ai mercati (da ST Journal OF Research - Volume 3 - Number 1 – MEMS luglio 2006) Attuali usi degli accelerometri Gli accelerometri sono impiegati in campo automobilistico nella sicurezza attiva (ABS) e passiva (centraline airbag) e stabilizzazioni di vario genere, ELETTRONICA OGGI 370 - SETTEMBRE 2007 A pplicazioni MEMS aiuto nella partenza in salita, e così via; nei game controller (recente successo del Wii di Nintendo), negli hard disk (per il distacco rapido della testine di lettura e scrittura in caso di urti e cadute), per rilevare il tilt (inclinazione) e il movimento (per esempio nei cellulari per adeguare il display e le scelte dell’utente all’inclinazione dello stesso). Caratteristiche del trasduttore accelerometrico x-y-z LIS3L02AS4 Di seguito vengono delineate le principali caratteristiche di questo trasduttore a 3 assi indipendenti di tipo lineare (dal data sheet del trasduttore): 1) sensibilità impostabile a ±2G oppure ±6G; 2) alimentazione in continua compresa tra 2,4V e 3,6V; 3) risoluzione di 0,5mG sopra i 100Hz di banda; 4) funzioni di self test e power down; 5) la risposta dei 3 canali rapportata all’alimentazione (sia l’ampiezza sia la sensibilità). Nel datasheet di ST viene riportato lo schema a blocchi interno descritto in figura 2. Per ogni asse, le accelerazioni agiscono su micro masse sospese libere di muoversi lungo la rispettiva direzione, ancorate in un punto fisso. Tali micro masse fanno parte di una capacità variabile, in particolare ne rappresentano l’armatura in grado di spostarsi in base alle accelerazioni, le quali divengono variazioni di capacità ad esse proporzionali, dell’ordine di alcuni fF rispetto al valore di alcuni pF con accelerazioni nulle. Alle massime accelerazioni si ottengono variazioni fino a 100fF. La variazione capacitiva che trasporta l’informazione di interesse è elaborata tramite una circuiteria 80 di tipo differenziale che all’esterno viene vista in modo single ended. Il segnale proveniente dai sensori è multiplexato e immesso in un amplificatore di carica a basso rumore, poi demultiplexato e dato a 3 distinti S&H che comunicano con le rispettive uscite x-yz. L’amplificatore di carica lavora a 200KHz, mentre i 3 S&H lavorano a 66KHz. Il chip ha subito una taratura in fabbrica sulla sensibilità e il valore a 0G, quindi non c’è bisogno di ulteriori calibrature per l’uso. Il costruttore consiglia di disaccoppiare le uscite x-y-z con inseguitori rea- Fig. 2 - Schema a blocchi del trasduttore accelerometrico x-y-z LIS3L02AS4 Fig. 3 - Layout del trasduttore con filtro PB in uscita e orientazione degli assi ELETTRONICA OGGI 370 - SETTEMBRE 2007 A pplicazioni MEMS Fig. 4 - Posizione del trasduttore rispetto al suolo e relative risposte per asse, Vdd=3,3V lizzati tramite operazionali, preceduti da un semplice filtro RC passa basso per canale, con la raccomandazione di progettare il filtro dalla DC alla frequenza max di 1,5KHz (frequenza di risonanza meccanica del trasduttore). La resistenza R è quella dello stadio di uscita dai S&H e la minima capacità C esterna sia pari a 320pF. Nelle figure 3 e 4 vengono riportate rispettivamente il layout del trasduttore con filtro PB in uscita e orientazione degli assi e la posizione del trasduttore rispetto al suolo e le relative risposte per asse con Vdd pari a 3,33 V. Di seguito viene riportato uno studio realizzato dall’autore con la collaborazione dell’ISIS “E. Fermi” di Bibbiena (AR). Schema elettrico per l’acquisizione del segnale del trasduttore Nella figura 5 viene riportato lo schema elettrico utilizzato per acquisire il segnale dal trasduttore. Quest’ultimo, ospitato in un package tipo SO24, è ELETTRONICA OGGI 370 - SETTEMBRE 2007 stato montato su una piccola basetta collegata con un flat cable di circa 1m ad un’altra basetta in cui è posta l’alimentazione e un condizionamento di segnale. Il prossimo sviluppo prevede la comunicazione di tipo wireless dei dati del trasduttore. Il segnale condizionato e costituito da tre tensioni comprese tra 0 e 3,3V relative alle 3 accelerazioni X-Y-Z devono essere inviati alla scheda di interfaccia per PC che ha solo 2 ingressi analogici: il problema è stato superato operando con un mux analogico e sincronizzando opportunamente la scheda di interfaccia. Descrizione di dettaglio L’elettronica è alimentata da una tensione stabilizzata di 12Vcc e per garantire una stabilizzazione della tensione al trasduttore (la cui risposta è influenzata proporzionalmente) si è utilizzato un integrato tipo 7805 con uno stadio successivo a diodo zener. In questo modo è possibile ottenere la tensione di 3,3V raccomandata da ST (NB: assorbimen- to di LIS3L02AS4 max=1,5mA). Il trasduttore è così impostato: - modo di funzionamento normale (pin 9 ST a massa); - modo di funzionamento normale nei riguardi del consumo (pin 11 PD a massa); - scala di misura a ±2G (pin 13 FS a massa). Il segnale proveniente dal trasduttore arriva con il flat cable alla basetta in cui tre filtri passa basso del 1 ordine tagliano a circa 14,5Hz: essi sono costituiti dalla Rout del chip (tipica Rout=110Kohm) e dalla capacità esterna da 100nF. Seguono 3 AO tipo LM 358 collegati come voltage follower. Il segnale Z è inviato direttamente alla scheda di interfaccia (tipo Velleman 8055) al canale analogico CH2 mentre l’altro canale analogico CH1 riceve in multiplex i segnali X e Y attraverso il mux analogico tipo CD 4051, pilotato dal segnale SELECT (1 bit) proveniente dall’uscita OUT1 della scheda di interfaccia. 81 A pplicazioni MEMS Si è reso necessario un segnale di reazione sulla scheda di interfaccia, dall’uscita di tipo digitale OUT2 verso l’ingresso digitale della stessa I1, che permetta al programma di gestione di ricevere il feedback di avvenuta commutazione del mux (difatti OUT2 riproduce OUT 1), quindi acquisire la coppia di valori analogici Z e X o Y, quindi di commutare di nuovo OUT1 e OUT2 in loop continuo. Software di gestione e acquisizione: descrizione generale Il programma di gestione e acquisizione è stato scritto in VB.net 2003 e usa le librerie fornite dal costruttore della scheda di interfaccia, contenute nell’annessa dll, per procedere all’acquisizione dei 3 segnali analogici che la stessa 82 scheda provvede a digitalizzare e fornire al PC via USB. Allo stato di revisione attuale il programma provvede a: 1) in base ad un input utente iniziale, si imposta la velocità di acquisizione dei dati sui 3 canali x-y-z (max 15,6 Hz con la scheda utilizzata, ogni canale fornisce 8 bit di risoluzione su una scala 05V) e il numero di campioni per canale che si desiderano; 2) visualizzazione “live” su progressbar delle 3 letture corrispondenti ai segnali di accelerazione x-y-z; 3) un calcolo, leggermente approssimato, della accelerazione esterna in modulo, cui il trasduttore è sottoposto, visualizzato su trackbar. Per accelerazione esterna, si intende quando il sensore risulta in movimento, avendo “tolto” l’effetto dell’accelerazione gravitazionale, si veda oltre; Fig. 5 - Schema elettrico utilizzato 4) la proiezione rispetto a x-y-z dell’accelerazione esterna cui è sottoposto il trasduttore; 5) il calcolo “live” dell’angolo ϕ rispetto ai versori x e y e dell’angolo θ rispetto al piano x-y delle componenti dell’accelerazione totale; 6) La registrazione su file della serie tripla di campioni di accelerazione acquisiti. Ove: xms2(i), yms2(i),zms2(i) rappreELETTRONICA OGGI 370 - SETTEMBRE 2007 A pplicazioni MEMS Software di gestione e acquisizione: analisi di dettagli salienti Di seguito, si evidenziano alcune righe di codice di particolare importanza. Misura dell’accelerazione espressa in m/s^2 – per singolo asse x(i) = datax * 5 / 256 ‘datax, datay, dataz: valori correnti in unità 0-255 corrispondenti alle letture X-Y-Z y(i) = datay * 5 / 256 ‘x(i),y(i),z(i): vettori accelerometrici per ogni canale, in volt, scala 0-5v z(i) = dataz * 5 / 256 xms2(i) = (x(i) - gx0 + offset_x) / gain / sensibility_x * 9.8 ‘accelerazione X in m/s^2 yms2(i) = (y(i) - gy0 + offset_y) / gain / sensibility_y * 9.8 ‘accelerazione Y in m/s^2 zms2(i) = (z(i) - gz0 + offset_z) / gain / sensibility_z * 9.8 ‘accelerazione Z in m/s^2 sentano 3 vettori contenenti rispettivamente i valori di accelerazione per canali x-y-z espressi in m/s^2. Tali valori si ottengono con la formula riportata sopra, tenendo conto che: Tali valori dipendono dal sensore e dal- ponendo l’asse del sensore “ortogonale” rispetto alla gravità, tenendolo fermo (come indicazione ci si può riferire alla lettura dell’asse parallelo alla gravità che deve dare la max lettura.....); la prova effettuata, con la preci- gx0 = 2.4 gy0 = 2.36 ‘offset a G=0 per ogni asse, in volt, sulla scheda di acquisizione gz0 = 2.53 l’elettronica di acquisizione, sono leggermente differenti per ogni asse, e vanno “accuratamente” rimisurati se il trasduttore deve essere sostituito. La valutazione di tali valori è stata eseguita per ogni canale nel seguente modo: 1) lettura della risposta a 1G—-> Vmax; 2) lettura della risposta a -1G—-> Vmin; 3) valore di offset a G=0—-> (VmaxVmin)/2=gi0; 4) verifica del valore stimato “gi0” sione dei rilievi (ed gli 8 bit a disposizione), ha praticamente confermato la linearità del trasduttore. of fset_x, of fset_y,of fset_z: valori modificabili “run time” tramite trackbar, servono per la regolazione fine in base al movimento o posizione del trasduttore e ai risultati che sono visualizzati. Hanno tutti valori standard pari a zero, possibile regolazione +-0.1, step 0.01. gain: guadagno introdotto dallo stadio di condizionamento =1,4545 nel nostro caso (impostazione sulla scheda di interfaccia per usare tutta la dinamica 05v del convertitore ADC). sensibility_x,sensibility_y,sensibility_z: valore di sensibilità per ogni asse. Il data sheet riporta come valore standard Vdd/5: nel nostro caso 3.3/5=0,66 V/G (volt/accelerazione di gravità). Sempre nell’ottica di ottenere il miglior valore possibile “reale” riferito all’elettronica ed a quel particolare trasduttore, è stata fatta per ogni asse tale misura e relativo calcolo: Sensibility_i=(ViGp-ViGn)/2/gain ove: ViGp= valore rilevato di tensione sull’asse i-esimo, dopo la scheda di interfaccia e quindi direttamente a video, con gravità parallela e a favore dello stesso asse. ViGn= valore rilevato di tensione sull’asse i-esimo, dopo la scheda di interfaccia e quindi direttamente a video, con gravità parallela e a sfavore dello stesso asse. Tale formula permette di calcolare l’ac- Fig. 6 - Varie posizioni del trasduttore rispetto alla gravità G e relativi angoli θeϕ 84 ELETTRONICA OGGI 370 - SETTEMBRE 2007 A pplicazioni MEMS Con il prototipo in questione, sono stati ottenuti i seguenti risultati: sensibility_z = 0.666 sensibility_x = 0.6583 ‘ sensibilità sul trasduttore, in V/G sensibility_y = 0.6463 Fig. 7 - Screen shot del programma di gestione e acquisizione: le barre di scorrimento in blu sono i valori in tensione rilevati di X-Y-Z (campionamento a circa 15,6 hz per canale, 8 bit); il trasduttore è fermo, per cui è interessato dalla sola gravità Misura dell’accelerazione espressa in m/s^2 : modulo aT = (xms2(i) ^ 2 + yms2(i) ^ 2 + zms2(i) ^ 2) ^ 0.5 ‘ modulo accelerazione totale in m/s^2 comprensiva della gravità celerazione complessiva cui è sottoposto il trasduttore, quindi c’è la gravità e accelerazioni dovute alle traslazioni ma non accelerazioni dovute alle rotazioni su se stesso, per cui il trasduttore è cieco (come è abbastanza logico supporre). Il calcolo dell’angolo θ in gradi (cioè lo ϕ rispetto all’asse x) presenta qualche problema: la formula è essenzialmente fi=atan (ay/ax), ove ay e ax rappresentano rispettivamente i valori di accelerazione rilevati lungo gli assi. Il calcolo: 1) risulta indeterminata quando i valori ay=ax= 0 e in pratica quando risultano se z all’accelerazione: se così fosse i valori di ax e ay sarebbero pressoché nulli. I valori di soglia prescelti sono per lo meno una differenza pari a 5° rispetto alla “non perpendicolarità” a cui è stata aggiunta la condizione che il valore di ax debba essere almeno pari a 0,4 m/s^2. Il punto 2) è stato risolto semplicemen- Misura dei 2 angoli “fi” e “teta” teta = Acos((zms2(i) / aT)) * 180 / pigreco If (Abs(teta - 180) > 5 And teta > 5) Then ‘solo se teta <> 0 oppure 180 gradi (almeno 5 gradi di differenza) If Abs(xms2(i) - 0.4) > 0 Then fi = Atan((yms2(i) / xms2(i))) * 180 / pigreco End If If xms2(i) < 0 Then fi = fi + 180 ‘ correzione quadrante 2 e 3 Else TextBox15.Text = “indeterminato” fi = 90 ‘ corrisponde ad indeterminato End If l’angolo del vettore accelerazione rispetto al piano x-y di un sistema di riferimento solidale con il trasduttore) non presenta particolari problematiche. Il calcolo dell’angolo ϕ (la componente del vettore accelerazione che si proietta sul piano x-y del traduttore, fa un angoELETTRONICA OGGI 370 - SETTEMBRE 2007 troppo “piccoli” (in particolare per il termine a denominatore ax) dando luogo a errori di calcolo numerico; 2) ϕ va corretto nel 2° e 3° quadrante. Il punto 1) è stato superato eseguendo il calcolo dell’arco tangente solo se θ segnala che il sensore non sia parallelo con l’as- te costatando che ϕ deve essere aumentato di 180° se i valori ax risultano negativi. Nel caso che ϕ non sia valutabile, è mostrato a video “indeterminato” e memorizzato nella variabile il valore di 90°. Nella figura 6 vengono riassunte le varie posizioni del trasduttore rispetto alla 85 A pplicazioni MEMS gravità G e relativi angoli θ e ϕ, mentre nella figura 7 viene proposto lo screen shoot del programma di gestione e acquisizione. Analisi dei risultati L’apparecchiatura di acquisizione utilizzata presenta delle caratteristiche che limitano in partenza la precisione dei risultati. Inoltre per ottenere le informazioni di velocità e posizione occorre integrare i valori di accelerazione, con il calcolo numerico che tenderà ad accumulare nel tempo l’errore, soprattutto nel calcolo della posizione. Le fonti di errore che influenzano il calcolo di velocità e posizione associati al trasduttore sono 3: 1) errore di quantizzazione; 2) offset G=0; 3) calcolo numerico associato alle integrazioni. Errore di quantizzazione: stima dell’errore introdotto dall’interfaccia elettronica I campioni sono a 8bit riferiti ad un intervallo 0-5V (passo di quantizzazione 5/256=19,5 mV, errore di quantizzazione +- 9,77 mV). Il data sheet del trasduttore riporta una sensibilità di 0,72V/G, cioè 73,4mV/(m/s^2) (NB: è un valore medio) ——> tale segnale viene amplificato di 1,4545 volte e diviene 106,8mV/m/s^2)——>l’errore di quantizzazione (stima media per ogni asse) equivale a sbagliare di+- 0,0915 m/s^2 per ogni campione (cioè ogni 1/15,6 s)——> quindi, supponendo tale errore “una accelerazione costante” troviamo che dopo 1 secondo S=0.5*a*t^2=+-4,6 cm—-> dopo un minuto: +-165m—-> cioè dopo un minuto, solo in base all’errore di quantizzazione il trasduttore assume una posizione che sta dentro una sfera di raggio 165m. Tale stima 86 sconforta, ma si possono fare le seguenti considerazioni: 1) bisogna rapportare il valore assoluto di tale errore di posizione ai valori effettivi di moto dell’oggetto, ottenendo un errore relativo, che comunque se il moto risulta uniforme, tende ad aumentare nel tempo; 2) per limitare l’errore di quantizzazione, ineliminabile, occorre aumentare il numero di bit: per ogni bit in più di quantizzazione l’“accelerazione” di errore che ne deriva si dimezza. Se utilizzassimo una conversione a 16 bit, ripetendo la stima fatta sopra, otterremmo dopo un minuto un’incertezza pari a +165/256=+-0,64m, con un’”accelerazione” di errore di quantizzazione pari a +3,57E-4m/s^2 Errore dovuto al valore a G=0: errore di offset gravitazionale Il trasduttore risponde alle sollecitazioni che lo accelerano con una tensione proporzionale; quando l’asse preso in considerazione non subisce accelerazione, si ha una risposta che il data sheet pone = Vdd/2 +-10%, fornendo anche il relativo diagramma di dispersione statistica per ogni asse di tale valore, indicato come offset G=0. Risulta evidente che occorre fare una taratura specifica per ogni asse e trasduttore con cui si abbia a che fare, e che ciò sia critico. Nel nostro caso, il valore di offset G=0 sono risultati pari a: Asse X = 2.4V Assey = 2.36V Assez = 2.53V A fronte di un risultato atteso pari a 2,4V. Per ottenere delle informazioni su velocità e posizione, senza ancora entrare in dettaglio, le uscite in tensione dei tre canali X-Y-Z vanno diminuite dei rispettivi valori di offset a G=0, poi pro- cedere ai calcoli e integrazioni. Come già osservato nella stima dell’errore di quantizzazione, per ogni 106,8mV abbiamo 1m/s^2 di accelerazione corrispondente: quindi errare di soli 10mV tale stima a G=0 implica l’introdurre un’”accelerazione” di errore corrispondente a 10/106,8 =0,0936m/s^2, che dopo un minuto comporterebbe un’incertezza stimata pari a+-168m. Per ricondurci ad un errore confrontabile con quello stimato con una conversione ADC a 16bit (”accelerazione” di errore di quantizzazione pari a +-3,57E4m/s^2), occorrebbe la conoscenza del valore a G=0 entro +-5000/2^17=+0,0381mV. Precedentemente abbiamo indicato il metodo seguito per la valutazione dei valori a G=0 per ogni asse, e per raggiungere l’accuratezza di +-0,0381mV dovremmo appunto avere per lo meno un convertitore a 16bit. L’ostacolo è parzialmente aggirabile dal momento che una prima taratura si ottiene con il metodo già indicato, mentre quella fine può essere svolta “runtime” agendo su delle regolazioni “fini” per canale, (Fig. 7) e ponendo il trasduttore fermo ma in varie posizioni angolari si deve avere: aT = abs((xms2(i) ^ 2 + yms2(i) ^ 2 + zms2(i) ^ 2) ^ 0.5 -9,8)=0, come indicato in figura 7 nella quarta barra a partire dall’alto. Nella figura 7 viene mostrato un valore numerico pari a 0.1366671 m/s^2 invece che un valore pari a 0, visto che il sensore è fermo. Considerazioni di tipo fisico-meccanico Un corpo rigido nello spazio ha 6gdl (gradi di libertà), in quanto ha 3 coordinate che ne individuano l’origine del proprio sistema di riferimento e altre 3 coordinate occorrono per individuarlo come orientamento rispetto al proprio ELETTRONICA OGGI 370 - SETTEMBRE 2007 A pplicazioni MEMS sistema di riferimento. Un punto nello spazio ha 3gdl. Un corpo rigido nel piano ha 3gdl (coordinata X, Y, e angolo di rotazione di se stesso rispetto al sistema di riferimento fisso). Un punto nel piano ha 2 gdl. Un trasduttore di accelerazione 3D fornisce potenzialmente le informazioni per poter risalire al moto nel caso di un punto (sia sul piano che nello spazio) che non subisca rotazioni, che tanto non sarebbero rilevabili e anzi, renderebbero i dati acquisiti non adatti alla ricostruzione del moto. Si supponga che il trasduttore sia reso wireless, solidale all’oggetto di cui si vuole risalire al moto di tipo traslazionale (senza rotazioni): se fosse nota costantemente l’inclinazione del sistema, rispetto al piano orizzontale, saremmo in grado di sottrarre la componente gravitazionale da ogni asse ed ottenere l’accelerazione ax-ay-az del punto “baricentrico” unicamente dovute al moto e integrando risalire alla velocità e posizione (a meno degli errori). Se si avesse un altro trasduttore che segnalasse costantemente l’inclinazione del sistema, il tutto funzionerebbe automaticamente e non ci sarebbe il vincolo di avere una inclinazione costante (rimarrebbe quello della non rotazione): purtroppo un altro trasduttore di accelerazione delegato a questo compito fallirebbe, visto che risponderebbe con dei segnali funzioni vettoriali sia del moto che dell’inclinazione. Di seguito si analizza il risultato ottenuto con due e tre sensori di accelerazione. Nel primo caso essi forniscono 6 informazioni, che scendono a 5 visto il vincolo che li lega; si perdono quindi altre 2 informazioni per gli assi ortogonali al moto (si pensi al moto sul piano X-Y: l’informazione lungo l’asse Z=z non è significativa). Rimangono 3 informazioni indipendenti necessarie e sufficienti a risolvere i 3 gdl del moto di un corpo rigido sul piano, che può traslare e ruotare. Unico vincolo: il corpo rigido non deve affrontare salite o discese: i 2 sensori non sarebbero in grado di capirlo e si otterrebbero risultati errati. Con tre sensori di accelerazione si riesce a fare praticamente tutto, anche se è sicuramente complicato. Infatti da tre trasduttori si ottengono 9 informazioni, non indipendenti, che scendono a 6 togliendo i 3 vincoli di distanza reciproca: tante quanti i 6gdl del corpo rigido nello spazio. ✍ ELETTRONICA OGGI 370 - SETTEMBRE 2007 87