• Non ci sono risultati.

Capitolo 3

N/A
N/A
Protected

Academic year: 2021

Condividi "Capitolo 3"

Copied!
27
0
0

Testo completo

(1)

Capitolo 3

Progettazione della scheda di acquisizione

3.1 Introduzione

Si è osservato in precedenza come un parametro fondamentale per i sistemi indossabili sia quello di garantire un elevato comfort per l’utilizzatore finale. Il conseguimento di un risultato del genere passa in egual misura attraverso l’adozione di materiali e tecnologie sempre più innovative e versatili per la realizzazione dei sensori tessili, quanto attraverso lo sviluppo di sistemi elettronici dalle prestazioni sempre più elevate e dalle dimensioni sempre più ridotte.

È indiscutibile ad esempio, come la possibilità di effettuare la trasmissione wireless dei dati abbia offerto un impulso in avanti, proprio in termini di comodità per i sistemi indossabili, dal momento che un suo utilizzo permette di realizzare sistemi veramente indossabili.

In questa ottica si inserisce lo sforzo compiuto in questo lavoro di tesi per elaborare un prototipo di seconda generazione per l’elettronica di acquisizione a corredo del sistema guanto sensorizzato. L’obiettivo è quello di passare da un sistema che necessita di connessioni via cavo ad un Pc ad una elettronica di tipo portatile.

Il front-end analogico attualmente in uso richiede un amplificatore da strumentazione per ciascun sensore e risulta pertanto un sistema piuttosto oneroso sia in termini di dimensioni che di potenza richiesta.

Per ovviare a questa situazione siamo passati ad una configurazione che sfrutti un multiplexer analogico per portare i segnali provenienti dai sensori ad un solo amplificatore da strumentazione. Il controllo del multiplexer è affidato ad un microcontrollore che si occupa anche della conversione analogico/digitale dei segnali e di gestire la trasmissione dei dati al PC attraverso un modulo Bluetooth.

(2)

In questo capitolo pertanto, dopo una breve descrizione del sistema attualmente in uso tratteremo la progettazione della nuova scheda, i suoi principi di funzionamento ed i componenti scelti, fino alla realizzazione del prototipo.

Nel capitolo successivo verranno invece discussi i test effettuati e presentati i risultati del lavoro.

3.2 Sistema di acquisizione per il guanto sensorizzato

Un sistema per l’acquisizione di un segnale dal mondo esterno, come è noto, può essere suddiviso in alcuni blocchi ben precisi. Avremo quindi un trasduttore che trasforma il segnale da misurare in un’opportuna grandezza elettrica, successivamente un circuito di condizionamento (front-end analogico), uno stadio di conversione da segnale analogico a digitale ed infine il circuito di elaborazione.

Fig. 3.1: diagramma a blocchi per un sistema di acquisizione generico

Vediamo quale sia l’approccio seguito finora per l’acquisizione dei segnali provenienti dal guanto sensorizzato.

Come abbiamo gia avuto modo di osservare, la strategia di misurazione dei segnali generati dai sistemi ad elastomero conduttivo Elastosil 3162 si basa sul metodo delle quattro punte. Il sistema di sensori piezoresistivi infatti può essere assimilato ad una serie di resistenze variabili alimentate con una corrente continua costante (Fig. 3.2 a). Utilizzando quindi un front-end ad elevata impedenza d’ingresso (Fig. 3.2 b) è possibile prelevare la variazione di tensione sul singolo sensore in modo che le cadute di tensione sui connettori (che sono realizzate con lo stesso materiale dei sensori) non influenzino la misurazione.

(3)

Fig. 3.2: Generica topologia di sensori e connessioni e modello elettrico del sistema e front-end dell’elettronica di acquisizione

Lo schema del front-end analogico implementato per l’elettronica attualmente in uso con i sistemi ad elastomero conduttivo risulta quindi di immediata comprensione: si tratta infatti di utilizzare un amplificatore da strumentazione per ogni sensore del sistema (per il guanto sensorizzato sono 20).

Più precisamente, ogni canale della scheda è costituito da un amplificatore da strumentazione AD620 dell’Analog Devices alimentato tra +/- 15V ed un filtro passa basso del I ordine (con ft = 15 Hz ).

(4)

Il generatore di corrente che serve per alimentare la serie dei sensori è realizzato con un amplificatore operazionale LM324 in configurazione transconduttiva.

Riportiamo in Fig. 3.4 il layout del PCB disegnato per una scheda a 20 canali realizzata per il Guanto sensorizzato.

Fig. 3.4: PCB per scheda a 20 canali

I dati vengono convertiti e inviati al sistema di elaborazione (PC) attraverso una scheda National Instrument PCI-6071E.

3.3 Sistema di acquisizione multicanale

Avendo come obiettivo lo sviluppo di un elettronica portatile, la scelta più naturale era quella di un sistema di acquisizione multicanale [14] che sfrutti un multiplexer analogico (AMUX).

(5)

Fig. 3.5 :sistema di acquisizione multicanale generico

Il multiplexer ha la funzione di scorrere, con un’opportuna temporizzazione, i segnali presenti ai suoi ingressi e convogliarli su un'unica linea.

Questo comporta il grosso vantaggio di poter utilizzare un solo convertitore analogico digitale (ADC) per trattare tutti i segnali e di poter utilizzare un solo amplificatore da strumentazione per prelevare i segnali provenienti dai sensori. È chiaro che questo comporta, rispetto ad un sistema che preveda un elettronica di condizionamento per ogni segnale, minori costi e minore dispendio di potenza.

Nella progettazione di un sistema multicanale, particolare attenzione va rivolta alla temporizzazione dei vari componenti.

Fig. 3.6: effetto del multiplexer sui segnali di ingresso

Dati due segnali (Fig. 3.6) il multiplexer non fa altro che prendere una porzione di ciascun segnale per un certo intervallo di tempo. Il segnale che si ottiene in uscita

(6)

presenta delle componenti ad alta frequenza, evidenziati dalle forti transizioni, introdotte dal processo di multiplexing.

Per non compiere errori di lettura, diventa importante quindi sincronizzare l’ADC in modo da evitare di campionare in corrispondenza di queste discontinuità.

Un’altra fonte di errore di conversione è legata al settling time del segnale d’uscita del multiplexer nel momento in cui viene selezionato un canale. Il multiplexer analogico presenta infatti un comportamento dinamico rilevante, in quanto durante la commutazione tra due canali, che generalmente si trovano a potenziali differenti, le capacità parassite associate al componente, al trasduttore connesso al canale attivo ed al carico (in generale un amplificatore) producono dei ritardi temporali nell’assestamento del segnale. Per tenere conto di questi effetti il costruttore del componente dichiara un tempo di assestamento (settling time) che corrisponde al tempo necessario affinché il segnale si assesti all’interno di una fascia centrata attorno al valore di regime.

Per evitare fenomeni di aliasing a seguito del campionamento sappiamo che è spesso necessario introdurre dei filtri passa basso che limitino il segnale analogico ad una banda B ≤ fc/2 con fc frequenza di campionamento.

L’introduzione dei filtri antaliasing “rallenta ulteriormente” il segnale di uscita che, nel momento in cui l’AMUX effettua una transizione, impiegherà ancora più tempo per raggiungere il valore di regime.

(7)

Onde evitare di prelevare un valore non corretto del segnale, la conversione dovrà avvenire necessariamente una volta che sia trascorso tale intervallo di tempo. Nello sviluppo di un sistema multicanale per ovviare a tale problema è spesso preferito l’uso di un convertitore SAR (Successive Approximation Register) che offre la possibilità di stabilire la durata del tempo di campionamento prima di iniziare la conversione .

Fig. 3.8: comportamento del SAR relativamente al settling time

La gestione del settling time influenza ovviamente il throughput del sistema sviluppato, definito come il numero di campioni validi al secondo per tutti i canali. Il valore del throughput è dato dal rapporto tra data rate del convertitore e settling time espresso in cicli di clock. È possibile definire inoltre un channel data rate (numero di campioni validi al secondo per un singolo canale) ottenuto come rapporto tra throughput e numero di canali del multiplexer.

Vi sono infine alcuni parametri che vanno considerati nella scelta del multiplexer e che ne determinano le prestazioni.

Imprecisioni ed errori possono infatti essere introdotti da partizioni legate alla resistenza di ingresso (Ron) che il canale presenta nel momento in cui è selezionato. oppure da correnti di perdite sugli interruttori aperti e fenomeni di cross-talk tra canali.

I valori di tali parametri sono caratteristiche del componente scelto e quindi specificati nel relativo datasheet.

3.4 Sviluppo del prototipo: sezione analogica

In Fig. 3.9 è riportato uno schema di principio del prototipo che si intende realizzare. Come osservato nel paragrafo precedente, per poter ridurre il numero di componenti necessari e contenere i consumi in termini di potenza si è optato per l’uso di un multiplexer analogico per gestire i canali di ingresso.

(8)

Il sistema di condizionamento del segnale in tal modo può essere ridotto ad un singolo amplificatore da strumentazione (IN-AMP).

Fig. 3.9: schema di principio del prototipo della scheda di acquisizione

La logica del multiplexer è pilotata dal microcontrollore (Msp), collocato a valle dell’amplificatore, che si occupa inoltre della conversione in digitale del segnale e la conseguente trasmissione ad un modulo bluetooth che invierà i dati al sistema di elaborazione.

Entriamo nel merito della progettazione e realizzazione del prototipo. In questo paragrafo in particolare ci soffermeremo sulla “sezione analogica” e le problematiche ad essa relative. Verranno analizzate quindi le parti che la costituiscono, i componenti scelti e presentata infine la scheda realizzata per implementare tali funzioni.

3.4.1 Generatore di corrente

All’interno di quella che si è definita sezione analogica del prototipo, oltre al front-end trova posto la circuiteria deputata all’alimentazione del guanto sensorizzato.

Il principio per l’acquisizione dei segnali generati dal guanto è restato sostanzialmente invariato, pertanto la corrente fornita ai sensori è sempre generata attraverso un amplificatore operazionale con montaggio transconduttivo.

Chiaramente, dovendo essere il nostro un sistema di acquisizione portatile, quindi alimentato al più a 3,3 V , è stato necessario scegliere un OP-AMP adeguato, differente dall’amplificatore LM324 finora usato che sarebbe risultato sovradimensionato.

È stato scelto pertanto l’operazionale OPA333 della Texas Instruments [15]: si tratta di un operazionale ottimizzato per alimentazione a basso voltaggio (da 1,8V fino a 5,5V) di tipo single-ended. A D G 7 2 6 INA333 Msp 430f149 BT

(9)

Fig. 3.10: Generatore di corrente

Indicando con I3 e I4 la corrente rispettivamente in R3 e R4, la corrente nel carico risulta:

(3.1) Applicando il metodo del cortocircuito virtuale si ha La tensione Vout dell’operazionale varrà:

(3.2) Le correnti I3 e I4 si possono ottenere come:

Sostituendo i valori trovati nella (3.1) è possibile determinare il valore di I. Se si impone la condizione:

(10)

allora la corrente che scorre nel carico sarà indipendente dal carico:

In realtà la condizione espressa nella (3.5) non è così facile da realizzare a causa delle tolleranze delle resistenze. Nel dimensionamento del circuito bisogna inoltre sceglier un valore di corrente che garantisca un buon rapporto segnale rumore ma che allo stesso tempo non porti in saturazione l’amplificatore operazionale.

Si supponga infatti di scegliere R1=R2=R3=R4 in modo tale che l’uscita dell’operazionale risulti:

Se si assume Vs = Vmax, dove con Vmax è indicato il valore massimo che l’uscita dell’operazionale può raggiungere senza entrare in saturazione, si ricava un limite superiore per il rapporto Rl/R4 pari ad 1/2.

Questa relazione impone un limite anche alla corrente erogabile dal momento che deve essere:

Per poter offrire maggiore dinamica alla corrente senza incorrere nella saturazione dell’operazionale, si è pensato di utilizzare delle resistenze per cui risultasse:

in modo da avere .

Nelle prove effettuate, una soluzione del genere pur garantendo una protezione contro la saturazione, ha introdotto un maggiore effetto delle tolleranze delle resistenze, essendo queste ultime non più tutte dello stesso valore. Si è tuttavia osservato che rispettando il limite individuato per la Rl il circuito si rivela sufficientemente affidabile.

(11)

Fig. 3.11: Schema del generatore di corrente e del circuito regolatore

La tensione Vs è ottenuta dalla tensione di alimentazione attraverso un regolatore LM317 della National Semiconductor [16] con un trimmer sull’uscita che ci consente di selezionare il valore di tensione desiderato ed è portata all’ingresso del generatore attraverso un buffer realizzato sempre con un OPA333.

3.4.2 Multiplexer ADG726

Come sottolineato più volte l’acquisizione dei segnali generati dai sensori del guanto avviene in maniera differenziale. Questo aspetto ci ha spinto a scegliere un multiplexer analogico che potesse gestire ingressi di tipo differenziale.

L’ADG726 prodotto dalla Analog Devices [17] è un multiplexer basato su tecnologia CMOS a 16 canali duali\differenziali.

Esso può funzionare con un’alimentazione singola tra 1,8V a 5,5V oppure un’alimentazione duale ± 2,5V.

La chiusura degli switch è determinata attraverso la linea di indirizzamento a quattro bit A0, A1, A2, A3.

(12)

Il funzionamento in modalità differenziale si ottiene collegando allo stesso controllo i pin CSA e CSB attivi bassi.

Il multiplexer è abilitato attraverso un bit di abilitazione EN, quando questo non è selezionato tutti gli interruttori sono aperti.

L’ADG726 presenta una Ron di 7 Ω, questa insieme alla corrente di perdita (I Leakage) può costituire una fonte di errore sulla tensione misurata in uscita.

Infatti il canale del multiplexer selezionato, è modellato tramite una resistenza di canale indicata con Ron. Questa resistenza, nel momento in cui si chiude lo switch, va in serie alla impedenza di uscita della sorgente di segnale (indichiamola con Rs).

Se chiamiamo Rl la resistenza di carico, l’errore dovuto alla ripartizione del segnale d’ingresso Vs vale:

La corrente di perdita tiene invece conto della non idealità dei canali non selezionati: i canali aperti del multiplexer infatti, presentano una resistenza Roff non infinita che quindi comporta degli effetti seppur minimi della tensione di un canale non selezionato sull’uscita del multiplexer. Le correnti di leakage tengono conto di questo effetto. Esse sommate alla corrente di bias di un amplificatore posto all’uscita del AMUX possono produrre una tensione di offset stimabile come:

In questo caso entrambi gli effetti risultano trascurabili dal momento che l’amplificatore a valle dell’ADG726 offre una resistenza di ingresso di circa 2 GΩ (amplificatore da strumentazione INA333), mentre il valore riportato per la corrente di bias è all’incirca 70 pA che per il calcolo dell’offset vanno a sommarsi ai 500 pA indicati per la corrente di leakage.

Dal momento che la Rs che il sensore presenta è dell’ordine delle decine di KΩ si potrà generare un offset al più di qualche decina di µV, che a fronte di segnali di ingresso dell’ordine di centinaia di millivolt risulterà trascurabile.

Infine bisognerà tenere conto del tempo che il multiplexer impiegherà ad ogni commutazione per portare il segnale a regime.

(13)

ai pin CSA e CSB per selezionare la modalità differenziale, anche l’Enable in modo da mantenere sempre abilitato il MUX .Questa scelta è stata fatta infine anche per il pin di Write(WR). Mantenere il WR attivo basso comporta che i latches del decoder siano “trasparenti” per cui il multiplexer risponde direttamente alle variazioni di indirizzo. Per calcolare quindi indicativamente il settling time si dovrà considerare il tempo di transizione (T TRANSITION=52 ns), definito come il tempo che l’uscita impiega a raggiungere il 90% del valore di regime a seguito di una commutazione, a cui va aggiunto il Break Before Make Delay (TD = 26 ns) ovvero un ritardo introdotto appositamente tra l’apertura di un interruttore e la chiusura di un altro per evitare rischi di cortocircuito tra i due canali. Si ottiene così un tempo (78 ns) che fornisce un’indicazione su quale possa essere la velocità massima di commutazione per il multiplexer.

Tale valore andrà quindi considerato insieme al settling time dell’amplificatore e alla banda del segnale (teorema di Shannon-Nyqist) per determinare la frequenza di campionamento più opportuna.

3.4.3 L’amplificatore da strumentazione INA333

Lo stadio per la misura dei segnali è ottenuto attraverso l’amplificatore da strumentazione INA333 della Texas Instrument.

Fig. 3.13: schema dell’amplificatore INA333

Grazie agli alti valori dell’impedenza d’ingresso e del CMRR (Common Mode Rejection Ratio) oltre ad una bassa rumorosità introdotta dal componente stesso

(14)

      Hz nV

50 , l’amplificatore da strumentazione risulta l’apparecchiatura ideale per la misurazione delle variazioni di tensione anche di piccola entità provenienti da un sensore. Secondo i dati forniti dal costruttore [15] l’INA333 presenta una resistenza di ingresso (Rin) di 100 GΩ e un CMRR pari a 90 dB per un guadagno unitario che sale a 110 dB per guadagno G=10. Il guadagno dell’amplificatore è gestito attraverso la resistenza RG, esterna all’amplificatore, secondo l’equazione:

      Ω + = G R K G 1 100

Nel corso del progetto è stato impostato un guadagno pari a 10 in modo da poter adeguare il segnale alla dinamica dell’ADC del microcontrollore, mentre il pin di riferimento è stato messo a massa. Lo slew rate indicato sul datasheet del componente è

di       S V

µ

16 ,

0 , mentre il settling time indicato è di 50µs, entrambi valutati su un

gradino dell’uscita di 4V.

Prima di presentare la scheda realizzata per la sezione analogica, è opportuno motivare la scelta di non introdurre alcun tipo di filtro antialiasing.

Da un’analisi spettrale dei segnali provenienti dal guanto (Fig. 3.14), ovviamente prima di ogni tipo di filtraggio o elaborazione digitale, è possibile osservare come questi siano fortemente limitati in banda.

Fig. 3.14: FFT dei segnali relativi al movimento del dito anulare acquisiti con il sistema di prima generazione.

(15)

Il segnale in Fig. 3.14 è stato ottenuto aprendo e chiudendo il dito anulare per 5 volte in 10 secondi, il che spiega la componente frequenziale evidenziata dalla trasformata di Fourier attorno ai 0,5 Hz. Si può osservare come gia dai 4-5 Hz il segnale utile sia praticamente nullo. Avendo scelto una frequenza di campionamento fc =100 Hz, praticamente 20 volte la banda del segnale da convertire e, considerando che l’alimentazione tramite batteria prevista per la scheda, precludere la presenza dell’interferenza a 50 Hz dovuta alla rete domestica, si è supposto che questo fosse sufficiente per evitare fenomeni di aliasing.

3.4.4 Realizzazione della scheda analogica

Dopo aver discusso i principi di progettazione e scelto i componenti adeguati verrà ora descritta la fase di sviluppo della scheda.

La realizzazione dello schematico della scheda e il layout del PCB sono stati implementati attraverso l’uso del software di disegno circuitale Altium Designer [18]. Quello che si è cercato di realizzare è una scheda che fosse il più versatile possibile in modo da poter testare il prototipo in diverse condizioni di utilizzo.

(16)

Nello sviluppo della scheda è stata infatti contemplata la possibilità di sostituire agevolmente le resistenze sia per quel che concerne il generatore che la resistenza di guadagno dell’amplificatore da strumentazione.

Tra gli ingressi dei segnali e gli ingressi del multiplexer sono stati inseriti dei connettori (jumper), la cui funzione è quella di interrompere (attraverso un collegamento a massa) la serie dei sensori del guanto in modo da poter scegliere il numero di sensori da cui prelevare il segnale. Infine sono stati resi accessibili tutti i pin di controllo del multiplexer per l’interfacciamento con il microcontrollore.

Il PCB è stato realizzato nei laboratori del Centro Piaggio dell’Università di Pisa. Ovviamente trattandosi di un processo non industriale le dimensioni del prototipo necessariamente non sono ridotte, questo ha introdotto la necessità di dover realizzare degli adattatori per l’ADG726 e l’INA333 al fine di integrarli nella scheda.

Volendo infatti sviluppare un sistema portatile, i componenti scelti sono degli SMD (Surface Mounting Devices) quindi caratterizzati da un package molto piccolo con un passo tra i pin di soli 0,54 mm.

Realizzare un PCB integrando direttamente con questi componenti, comporterebbe delle regole di progettazione (dimensione delle piste e delle vias) assolutamente non adeguate al processo di produzione “handmade” utilizzato.

Fig. 3.16: layout del PCB per adattatore ADG726 e sua realizzazione

In Fig. 3.17 è riportato il prototipo realizzato per la sezione analogica del sistema di acquisizione, in cui si può notare come gli adattatori per i componenti SMD siano stati

(17)

posizionati sulla scheda. La connessione con il guanto è ottenuta attraverso i due connettori a 14 pin che oltre a prelevare le tensioni da misurare, provvedono a portare sui sensori la corrente di alimentazione e il riferimento a massa.

Fig. 3.17: scheda realizzata per la sezione analogica

3.5 Il microcontrollore MSP430F149

La parte di controllo del sistema di acquisizione è stata affidata ad un microcontrollore che, oltre a pilotare i canali del multiplexer, si occupa della conversione analogico digitale dei segnali e la loro trasmissione.

Il microcontrollore scelto è il modello MSP430F149 prodotto dalla Texas Instruments particolarmente adatto anche per i bassi consumi di potenza (280µA ad 1MHz, 2,2Volt di alimentazione). Nella realizzazione del prototipo per il sistema di acquisizione esso è stato utilizzato sfruttando un kit di sviluppo della IAR per i microcontrollori della famiglia MSP430: MSP430 Development Tool.

(18)

Il kit comprende oltre ad un evaluation board, un JTAG debugger e il software di sviluppo con compilatore per ARM C/C++. La scheda oltre a garantire il corretto funzionamento del MSP fornisce un facile accesso ai pin di interfacciamento del microcontrollore. Il dispositivo che consente di implementare ed effettuare il debug in tempo reale è il J-Link ARM che viene collegato alla porta JTAG della scheda di valutazione e tramite USB al PC.

Il pacchetto software in dotazione è costituito da un ambiente di sviluppo integrato (IDE): ARM IAR Embedded Workbench for MSP430 (EWARM). L’ambiente di sviluppo comprende il linker (IAR XLINK Linker), un editor, il compilatore (IAR ARM C/C++) e lo strumento di debugging (IAR C-SPY). Quest’ultimo molto utile per valutare la bontà dell’algoritmo implementato, consente inoltre la visualizzazione dello stato delle variabili, della memoria, dei registri, permettendo infine la possibilità di eseguire l’analisi dello stato di avanzamento dell’algoritmo tramite il corretto utilizzo dei breakpoint.

Nella descrizione del componente scelto l’analisi sarà prevalentemente incentrata sulle funzioni utili per lo sviluppo del sistema di acquisizione.

Il microcontrollore si presenta come un SMD con un package da 64 pin di dimensioni molto ridotte (11,8mm per lato), è alimentato con una tensione da 1,8V a 3,6V ed assorbe una corrente massima di 280µA.

Avendo deciso di alimentare il sistema di acquisizione a 3,3V, l’alimentazione del microcontrollore è stata adeguata a tale valore.

Tra le caratteristiche principali del microcontrollore è possibile citare: • CPU a 16 bit

• Memoria di programma (Flash) interna a 60 Kbyte, memoria dati (RAM) di 2 Kbyte

• Convertitore A/D SAR a 12 bit • 2 porte USART

• 6 porte I/O analogico digitali programmabili • Frequenza massima di funzionamento 8 MHz

(19)

Fig. 3.18: piedinatura MSP430F149

La gestione delle istruzioni è di tipo ad interruzione di programma. Quindi, abilitando le interruzioni globali (GIE), se nell’esecuzione del codice si verifica una particolare condizione, il componente coinvolto, se adeguatamente abilitato attraverso il suo registro di controllo, genera una richiesta di interrupt. Nel momento in cui è generato l’interrupt il flag relativo viene settato a 1 e quindi viene eseguita la routine di interrupt dichiarata nel codice scritto. A conclusione della routine il flag di interrupt del componente va resettato via software.

Il microcontrollore gestisce gli interrupt secondo una priorità interna in modo tale da poter sapere a quale richiesta dare precedenza nel caso ne arrivi più di una.

La generazione del clock di funzionamento del microcontrollore può avvenire attraverso due fonti principali: LFXT1CLK e DCOCLK.

LFTX1CLK offre la possibilità di acquisire un’oscillazione esterna attraverso i pin Xin (pin 8) e Xout (pin 9), che può essere sia in bassa frequenza (32KHz) che alta frequenza (450 KHz-8 MHz). Il DCOCLK è invece un clock prelevato da un oscillatore interno al microcontrollore controllato in modo digitale (DCO). Vi è inoltre la possibilità di prelevare un’ulteriore oscillazione in alta frequenza attraverso il XT2CLK.

Da questi segnali è possibile derivare altre tre fonti di clock ACLK (Auxiliary clock), MCLK (Main clock) e SMCLK (Sub Main clock).

(20)

In particolare il Main clock fornisce la frequenza di lavoro della CPU, mentre l’Auxiliary clock è utilizzato per generare dal LFTX1CLK le frequenze di lavoro delle periferiche interne al microcontrollore.

Nel corso del lavoro è stata selezionata una frequenza di lavoro per la CPU pari ad 8MHz gestita dal DCO, mentre le frequenze dei componenti interni sono ottenute a partire da una frequenza di 4MHz generata da un oscillatore al quarzo esterno al microcontrollore.

I registri coinvolti in questa operazione sono: • DCOCTL per settare il valore del DCOCLK

• BSCTL1 consente di settare la frequenza dell’ACLK. Nel progetto sviluppato è stata selezionata ad 1MHz, ottenuta dividendo per quattro il LFXT1CLK.

Si intende descrivere ora quali siano le funzioni del microcontrollore coinvolte nello sviluppo del sistema e come siano stati utilizzati.

Porte di I/O

Il microcontrollore MSP430F149 ha sei porte digitali ognuna costituita da 8 pin configurabili. La selezione della funzionalità del pin si ottiene settando il relativo bit del registro PxSEL (0 indica funzione I/O, 1 per funzione periferica). L’uso del pin quale ingresso o uscita è invece ottenuto attraverso il registro PxDIR. Infine i registri PxIN, PxOUT memorizzano il valore del segnale presente sul pin a seconda che questo sia utilizzato come ingresso o uscita.

Nel nostro progetto sono stati usati i primi quattro pin della porta P1 per l’indirizzamento del multiplexer, la porta P6 come ingresso al convertitore e il pin P3.4 per la trasmissione dei dati.

TIMER B

La frequenza di campionamento scelta per i segnali provenienti dai sensori del guanto è di fc = 100Hz. Questo parametro risulta vincolante nell’implementazione del codice in quanto si deve tener conto che il programma deve essere eseguito ciclicamente ogni 1/fc secondi.

(21)

Per garantire questa tempistica di esecuzione è stato utilizzato un timer presente nel microcontrollore: il TIMER B. Nello specifico il timer dovrà eseguire ogni 10 ms la sua routine di interrupt che abilita l’acquisizione e la conversione dei segnali e la loro trasmissione. Il registro di controllo del timer TBCTL consente di definire la frequenza di scorrimento del timer, il modo di funzionamento (UP mode) e di abilitare l’interrupt La frequenza selezionata è stata ottenuta dividendo per 8 il clock ACLK ottenendo un valore di 125Hz. Quindi il timer incrementerà il suo valore (contenuto nel registro TBR) fino a quando non raggiungerà un valore prefissato impostato nel registro TBCCR0 (1250). A questo punto viene posto ad 1 il flag TBIFG del registro TBIV (TIMER B Interrupt Vector), parte la routine, viene azzerato il registro TBR e resettato il flag di interrupt via software.

Il vettore di interrupt del TIMER B ha priorità maggiore rispetto a quelli generati dalle altre funzioni usate, questo garantisce che la frequenza di campionamento resti a 100Hz.

Convertitore ADC12

Per la conversione analogico digitale dei segnali provenienti dal guanto è stato utilizzato il convertitore ADC12 interno al microcontrollore.

Questi è un convertitore ad approssimazioni successive (SAR) con risoluzione a12 bit. La scala di valori entro cui avviene la conversione è definita attraverso due livelli di tensione VR+ e VR- selezionabili attraverso i registri di controllo del convertitore. In particolare le sorgenti dei riferimenti sono selezionabili tramite i bit SREFx del registro ADC12MCTL0. La scelta effettuata è stata quella di utilizzare per VR+ un riferimento

interno del microcontrollore e per VR- la massa del sistema. Il risultato della conversione pertanto verrà calcolato secondo la formula:

V

V

V

V

N

R R R IN ADC − + − − − =4095*

I segnali da convertire sono portati sui pin della porta P6 del MSP430 e selezionati per la conversione attraverso un multiplexer interno. Al convertitore sono associati 16 registri ADC12MEMx a 16 bit in cui è possibile memorizzare i dati convertiti.

(22)

Le modalità di funzionamento del convertitore sono ottenute configurando opportunamente i bit dei registri di controllo ADC12CTL0 e ADC12CTL1. Rispettivamente ADC12CTL0 consente di:

• Abilitare il convertitore (ADC12ON) e la conversione (ENC) • Abilitare l’uso del riferimento interno (REFON)

• Selezionare il riferimento utilizzato 1,5V o 2,5V (REF2_5) • Selezionare il tempo di campionamento per ogni canale (SHT)

• Imporre che una nuova conversione parta automaticamente al termine di quella precedente (MSC)

• Dare il via alla conversione (ADC12SC)

Il registro ADC12CTL1 è invece stato utilizzato per selezionare la sorgente del clock di funzionamento (ADC12SSELx), la modalità con cui il convertitore opera (CONSEQx), il comando che fa partire la conversione (SHSx) e il canale selezionato.

Visto che dalla scheda analogica arriva un solo segnale è stato deciso di far lavorare il convertitore in modalità single-channel-single-conversion.

Come frequenza di lavoro è stata utilizzata quella generata dall’oscillatore ADC12OSC interno al convertitore, pari a 5MHz.

Due parametri importanti per valutare che il segnale in uscita dal convertitore sia significativo sono il tempo di conversione e il tempo di campionamento.

Il tempo di conversione per un SAR a 12 bit è di 13 cicli di clock, esso è noto una volta stabilita la frequenza di funzionamento.

Il tempo di campionamento invece tiene conto delle non idealità introdotte dall’ingresso analogico al convertitore che può essere così schematizzato:

(23)

Per la valutazione del tempo di campionamento si dovrà considerare il tempo necessario al condensatore Ci per raggiungere il valore di regime Vs con la precisione necessaria alla conversione (±1/2 LSB).

Il suo valore può essere ricavato attraverso la formula empirica indicata nel datasheet del microcontrollore: ns

C

R

R

t

sample ( s i) ln(

2

) i 800 13 + × × + ≥

Considerando che la resistenza Rs è data dalla resistenza di uscita dell’amplificatore da strumentazione il tempo di campionamento che si ottiene è:

s ns pF K K

t

sample (2 2 ) ln(

2

) 40 800 2,24

µ

13 = + × × Ω + Ω ≥

Nel registro ADC12CTL0 andrà implementato pertanto almeno questo valore.

Anche la conversione è stata gestita attraverso un interrupt. La routine del convertitore si occupa di scorrere tutti i canali del multiplexer analogico e di effettuare la relativa conversione. Entrando più in dettaglio, la routine fornisce l’indirizzo del primo canale del ADG726, il dato viene convertito e salvato in una apposita variabile, viene fornito l’indirizzo successivo ed inviato il comando di conversione così fino all’ultimo canale del multiplexer. La necessità di non dover riabilitare il convertitore dopo ogni acquisizione è dovuta alla modalità single channel- single conversion utilizzata per l’ADC. Anche in questo caso la gestione ad interrupt ci offre una garanzia di corretta esecuzione delle operazioni dal momento che i dati saranno disponibili per la trasmissione solo quando saranno tutti effettivamente convertiti.

Porta seriale USART

Il microcontrollore MSP430F149 dispone per la trasmissione e ricezione dei dati di due porte seriali che possono funzionare in maniera sincrona o asincrona.

La porta utilizzata nello sviluppo del progetto è la USART0 configurata di default in modalità di trasmissione asincrona. I registri coinvolti nella selezione dei parametri d’uso della UART sono:

(24)

• UTCTL0 usato per selezionare la sequenza di riferimento • UCTL0 per definire la lunghezza del carattere

• U0BR0, U0BR1, UMCTL0 definiscono il baude rate • ME1 e IE1 per abilitare la trasmissione e le interruzioni

Nel lavoro svolto la porta UART è stata abilitata solo in trasmissione, effettuata sul pin P3.4. La lunghezza del carattere da trasmettere è di 1 byte, la frequenza di riferimento selezionata è pari ad 1MHz (ACLK) ed il baud rate è stato impostato a 115200 bit/s. Dal momento che i dati ottenuti dalla conversione A/D dei segnali occupano 12 bit è necessario effettuare 2 trasmissioni per ogni valore convertito.

La trasmissione ha inizio quando un carattere è inserito nel registro TXBUF0 a 8 bit. La scrittura del dato nel registro setta ad 1 il flag UTXIFG0 del registro IFG1, che indica la richiesta di interrupt della porta seriale. Per evitare che vi possano essere errori di sovrascrittura e quindi garantire che il dato trasmesso sia quello corretto, la routine di interrupt prevede un sistema di sicurezza. Infatti fintanto che il registro TXBUF0 è pieno il flag di interrupt viene automaticamente resettato in modo che non sia possibile inserire altri caratteri. Nel momento in cui il dato è stato inserito in un registro di scorrimento da cui poi verrà trasmesso, e quindi TXBUF0 è disponibile per un nuovo carattere, il flag viene nuovamente posto ad uno. La routine di interrupt può così proseguire finché verrà trasmesso l’ultimo carattere. A quel punto la routine terminerà ed il flag UTXIFG0 verrà azzerato e il codice continuerà la sua esecuzione.

Algoritmo sviluppato

Lo sviluppo del codice per il microcontrollore è stato effettuato sfruttando gli interrupt per garantire la corretta esecuzione dell’algoritmo.

Le possibili fonti di interrupt sono in ordine di priorità: il TIMER B, la porta seriale UART0 e infine il convertitore ADC12.

Al TIMER B è legata la frequenza di campionamento dei segnali del multiplexer analogico, pertanto è stato configurato in modo che la sua routine di interrupt venga eseguita ogni centesimo di secondo. Tale routine non fa altro che abilitare il convertitore e avviare la conversione (ADC12SC). Questo comando avvia la procedura

(25)

dal multiplexer analogico. La routine infatti imposta il valore dei pin della porta P1 attraverso cui è controllato l’AMUX e converte il segnale corrispondente che arriva all’ADC dall’uscita dell’amplificatore da strumentazione. La scansione dei canali avviene dal primo al sedicesimo canale.

Ultimata la conversione viene lanciata una funzione che si occupa di preparare i dati ottenuti dalla conversione per la trasmissione separandoli in due caratteri e di avviare la routine di interrupt della porta UART inserendo un primo carattere nel registro TXBUF0 in modo da generare la richiesta di interrupt. La routine di trasmissione effettua la trasmissione dei dati secondo i criteri appena descritti (Fig. 3,20).

(26)

START

T=10ms ?

Interrupt TIMER B

Conversione A/D

Dati pronti?

Funzione gestione dati

Interrupt UART Ultimo carattere inviato? NO Si Si NO NO Si

(27)

3.6 Modulo di trasmissione bluetooth

La trasmissione dei dati al PC è stata ottenuta attraverso un modulo bluetooth BlueSMiRF prodotto dalla SparkFun.

Fig. 3.21: modulo BlueSMiRF

Il modulo utilizzato è un trasmettitore di classe 1 (trasmissioni fino a 100m) ed offre un baude rate compreso tra 9600 ÷ 115200 bit/s.

Il BlueSMiRF consente la connessione diretta alla UART del microcontrollore senza dover utilizzare alcun adattatore per adeguare i livelli di tensione.

Il package presenta 6 pin, di cui 2 sono usati per controllo hardware mentre gli atri sono dedicati all’alimentazione, al GND, alla trasmissione ed alla ricezione.

Per il lavoro svolto è stato utilizzato solo in trasmissione con un baude rate 115200 bit/s, uniformato a quello del microcontrollore.

Figura

Fig. 3.1: diagramma a blocchi per un sistema di acquisizione generico
Fig. 3.2: Generica topologia di sensori e connessioni e modello elettrico del sistema e front-end  dell’elettronica di acquisizione
Fig. 3.4: PCB per scheda a 20 canali
Fig. 3.6: effetto del multiplexer sui segnali di ingresso
+7

Riferimenti

Documenti correlati

Près de vingt ans après l'adoption d'un programme d’ajustement structurel sous la coupe des bailleurs de fonds internationaux, Banque mondiale et Fonds monétaire

In the case of financial instruments established at EU level and managed by the Commission under direct management., the contributions of the Operational Programme from which

Our analysis reconsiders the two dominant hypotheses in the literature—the ‘client politics’ and the ‘embedded liberalism’ hypotheses—by showing how in the

funzionamento dei musei ed altri beni culturali; dagli strumenti individuati per un miglior espletamento dei propri compiti; dalla posizione stessa della Regione circa l’operato

L’enquête 2010 sur la main d’œuvre étrangère révèle que 74,6% des immigrés enquêtés étaient engagés dans un emploi avant de venir en Mauritanie, la proportion

Finally, the High Representative of the European Union, Federica Mogherini, stated that “the EU will remain committed to the continued full and effective implementation of the

si è riscontrata una certa somiglianza in tali ambiti: lo stile immediato, diretto e accattivate del prototesto, ricco di aggettivi ed esclamazioni, e l’uso della seconda

dove rappresenta il vettore contenente le coordinate immagine determinate sul piano di retina della telecamera degli n punti appartenenti al provino ( fig. 3.11 ) utilizzato per