• Non ci sono risultati.

Descrizione del sistema realizzato: Hardware e Software

N/A
N/A
Protected

Academic year: 2021

Condividi "Descrizione del sistema realizzato: Hardware e Software"

Copied!
29
0
0

Testo completo

(1)

CAPITOLO 3

Descrizione del sistema realizzato:

Hardware e Software

3.1

Introduzione

Lo scopo di questo progetto di tesi è quello di realizzare un sistema indossabile per il monitoraggio della postura e del movimento del corpo umano. Il sistema è composto da una coppia di accelerometri posti direttamente sul tronco del corpo dell’individuo, collegati via cavo ad un’unità portatile di controllo ed elaborazione, costituita dal Pic16F877 della Microchip, da un ICL232 della Intersil, traslatore di livello Uart/RS232, e da un trasmettitore/ricevitore Bluetooth per la trasmissione delle informazioni direttamente al pc.

In questo capitolo saranno descritti, singolarmente, tutti i componenti adottati e i programmi utilizzati per la loro gestione.

Lo schema a blocchi del sistema realizzato è mostrato nella figura 1, sottostante.

ELABORAZIONE

INTERFACCIA DATI

COPPIA

ACCELEROMETRI PIC16F877 RICEZIONE SU GRAFICA

PC TRASMISSIONE

BLUETOOTH

(2)

Capitolo 3

3.2 ADXL202JE

I sensori utilizzati in questo progetto, sono gli ADXL202JE, accelerometri capacitivi della Analog Device.

L’ADXL202JE è un accelerometro a due assi con uscite digitali, basso consumo di potenza e basso costo. Misura entrambe le accelerazioni dinamiche e statiche (accelerazione di gravità) minori di 2g. Con questo range d’accelerazione è possibile rilevare movimenti umani e variazioni di inclinazione.

Le uscite dell’accelerometro sono tensioni analogiche o segnali digitali il cui duty cycle (rapporto tra la durata della parte alta, T1, del segnale e il periodo) è proporzionale all’accelerazione. Il periodo dei segnali digitali è possibile settarlo inserendo in un apposito pin una resistenza che ne regola la durata da 0,5ms a 10 ms.

Figura 3.2 Schema a blocchi del funzionamento dell’ADXL202JE

L’ADXL202JE è fabbricato con tecniche di “surface micromachining” ed ha una struttura in polisilicio costruita sulla superficie del wafer di silicio. Le molle in polisilicio tengono sospesa la struttura sopra la superficie del wafer di silicio, che funge da massa di prova e fa resistenza alle forze d’accelerazione.

(3)

Capitolo 3

Figura 3.3 Struttura interna ADXL202

Lo spostamento della struttura è misurato utilizzando capacità differenziali che consistono in armature fisse e indipendenti e in un piatto centrale connesso direttamente alla massa mobile. I piatti fissi vengono fatti oscillare con onde quadre sfasate di 180°. Un’accelerazione provoca una deflessione della massa mobile e una variazione della capacità differenziale, ottenendo così un’onda quadra in uscita, proporzionale all’accelerazione. In seguito, tecniche di demodulazione di fase permettono di rettificare il segnale e di determinare la direzione dell’accelerazione.

Il segnale d’uscita del demodulatore viene filtrato passa basso, attraverso una semplice squadra RC, prima di arrivare al modulatore di duty cycle. Infatti, è possibile settare la larghezza di banda del segnale di ogni singolo asse, attraverso la scelta di un apposito valore di capacità applicabile su un pin esterno.

Il segnale, filtrato passa basso, è un’onda quadra la cui ampiezza è proporzionale alla accelerazione subita dal sensore. Questo segnale viene convertito in un segnale digitale modulato PWM , il cui duty cycle è proporzionale all’accelerazione.

(4)

Capitolo 3

In questo stadio di conversione PWM, è possibile inserire una resistenza che setta il periodo del segnale di uscita e che permette di attivare il modulatore duty cycle.

Figura 3.4 Tipico segnale digitale PWM

I segnali d’uscita possono essere prelevati sia come segnali PWM che come segnali analogici.

Questi ultimi possono essere ricostruiti filtrando passa basso il segnale di uscita PWM o bufferizzando il segnale in uscita dai pin XFilte Y . Filt

L’accelerometro ADXL202JE rileva sia accelerazioni dinamiche che statiche. Il sensore, quindi, è sensibile all’accelerazione di gravità che viene sfruttata per la calibrazione dell’accelerometro e che permette all’ADXL202JE di essere utilizzato anche come inclinometro, leggendo le variazioni di angolo rispetto alla direzione della accelerazione di gravità.

Il sensore dell’Analog Device è un accelerometro bi-assiale, che permette di calcolare l’accelerazione lungo i due assi X ed Y. E’ per questo, che in questo progetto di tesi ne sono stati utilizzati due, orientati perpendicolarmente tra loro, in modo da poter ricostruire un sistema di riferimento tridimensionale nel quale sia possibile valutare la posizione e la postura della persona che indossa il sistema sensorizzato.

L’ADXL202JE è sprovvisto di uno specifico zoccoletto o allogiamento che ne permetta la sua buona integrazione con l’elettronica necessaria per il suo corretto funzionamento.

(5)

Capitolo 3

E’ per questo che è stato necesario progettare e sviluppare un apposito PCB (Printed Circuit Board) per il suo posizionamento.

Il materiale di base è costituito da una normale basetta per circuito stampato su cui è stesa in modo omogeneo una particolare pellicola resistente all'incisione (photo-resist coated board); se si illumina questo tipo di basetta con luce ultravioletta il polimero che costituisce la struttura di base della vernice diventa solubile in una soluzione basica e quindi può essere facilmente rimosso. Spesso il supporto usato per la fotoincisione viene indicato come basetta presensibilizzata.

L'idea che sta alla base è questa: la basetta viene illuminata con raggi UV, viene rimossa per via chimica la vernice esposta e infine si incide con cloruro ferrico, togliendo il solo rame rimasto scoperto.

La prima fase è quella della realizzazione del master: esso è la stampa su lucido del progetto effettuato con software CAD dedicato, in questo caso è stato utilizzato il software Protel, del circuito elettrico. Il master servirà da maschera per la basetta presensibilizzata: le zone scure del layout definiscono le piste e le connessioni che saranno presenti nel circuito stampato, mentre le zone chiare lasceranno passare la luce ultravioletta, impressionando la parte sottostante della basetta presensibilizzata

(6)

Capitolo 3

Il bromografo è lo strumento che permette di stampare sulla basetta presensibilizzata, l'immagine del master attraverso la luce UV.

In sostanza si tratta di una sorgente di luce ultravioletta che illumina attraverso il master la basetta, inducendo le modificazioni chimiche solo alla parte di vernice illuminata. Ovviamente la luce può passare solo dove il master è trasparente. L’esposizione dura circa tre minuti. Per evidenziare il disegno delle piste dopo l'esposizione, è necessario utilizzare un'apposita soluzione alcalina (soluzione acqua-soda caustica): lo sviluppo non fa altro che sciogliere la vernice fotosensibile, illuminata dagli UV, lasciando intatta la parte rimasta in ombra.

La basetta si immerge nella soluzione di sviluppo con il rame verso l'alto e in qualche secondo si nota l'inizio della reazione: la superficie della basetta diventa di un colore verde o blu molto scuro, quasi nero. È opportuno agitare molto delicatamente con un pennello morbido la soluzione sulla superficie della basetta, in modo tale da rimuovere la patina nerastra presente e quindi poter vedere le piste, che devono apparire in 20-30 secondi.

Il tempo dello sviluppo deve essere tale da rimuovere completamente il photoresist inutile, lasciando però intatte le piste del circuito.

Una volta accuratamente lavata la basetta, per eliminare eventuali residui della soluzione acqua-soda caustica, si procede con l’incisione in cloruro ferrico.

L'incisione è l'operazione che permette di togliere chimicamente il rame in eccesso. Il rame che deve rimanere deve essere protetto da una vernice resistente alla corrosione. L'incisione termina quando tutto il rame non protetto dalla vernice viene asportato. A questo punto occorre togliere la vernice protettiva: infatti l’ultima fase è quella dello strippaggio, che consiste nell’immersione della basetta in una soluzione più diluita di acqua-soda caustica (o con l’utilizzo di trielina o acetone), per eliminare il fotoresist delle zone non impressionate.

Le schede per l’allogiamento degli accelerometri, sono mostrate nelle figure sottostanti; si può notare la connessione ortogonale dei due sensori per far si che gli accelerometri fossero capaci di rilevare le accelerazioni lungo i tre assi cartesiani.

(7)

Capitolo 3

Particolare attenzione è stata rivolta alla posizione del sensore alloggiato sulla basetta perpendicolare: essendo gli ADXL202JE accelerometri bi-assiali,infatti, doveva essere scelta la direzione di rilevazione, ortogonale al piano contenente le direzioni di rilevazione dell’altro accelerometro.

Figura 3.6 Sistema realizzato per l'alloggiamento degli accelerometri.

3.3 PIC16F877

Un MCU (MicroController Unit) è un dispositivo elettronico che opportunamente programmato è in grado di svolgere diverse funzioni in modo autonomo.

(8)

Capitolo 3

Essenzialmente gestisce delle linee di input e di output in relazione al programma in esso implementato. Al loro interno trova spazio un vero e proprio microprocessore completo di CPU, RAM, Timer e numerose linee di ingresso/uscita.

A differenza dei microprocessori più evoluti, negli MCU il programma è contenuto all'interno in un'apposita area di memoria (non volatile) e viene eseguito ciclicamente; anche la RAM per i dati volatili è all'interno dello stesso dispositivo ed alcuni dispongono di aree dati non volatili e riscrivibili (EEPROM). Lo stadio di IN/OUT è già implementato all'interno ed alcuni dispongono già di interfacce per segnali analogici, per comparatori o per comunicazioni seriali.

Spesso definito soluzione in un unico chip, l’MCU è costituito in genere dai seguenti componenti:

• Microprocessore a 4, 8, 16, 24 o 32 bit.

• Memoria RAM di dimensioni ridotte, usata solo per la memorizzazione delle variabili intermedie e delle variabili di ingresso e di uscita.

• Memoria FLASH per la memorizzazione del programma che il controllore deve eseguire.

• Dispositivi di I/O per la lettura e la generazione di segnali particolari, verso i quali il controllore è prodotto già specializzato.

• Memoria aggiuntiva, di tipo EEPROM, che permette all’MCU di memorizzare variabili in modo non volatile, così da preservarle anche in caso di mancanza di alimentazione.

• Contatori di tempo, o timer. • Moduli controllori di interrupt.

• Altri moduli aggiuntivi, quali convertitori Analogici/Digitali, convertitori Digitali/Analogici, moduli per le comunicazioni seriali su Bus, e così via.

Nel presente paragrafo si introdurranno le maggiori caratteristiche del microcontrollore della Microchip® del tipo PICmicro™ scelto, descrivendone, quindi, in maggior dettaglio le caratteristiche utilizzate in questo progetto di tesi.

(9)

Capitolo 3

Il microcontrollore utilizzato è il PIC16F877 con piedinatura PDIP da 40 pin, come mostrato nella figura 7.

Figura 3.7 Piedinatura del PIC16F877

Le principali caratterische di questo microcontrollore sono:

• Architettura RISC1 ad alte prestazioni con un ISA2 di sole 35 istruzionI

1 Il concetto di RISC (Reduced Instruction Set Computer) fu sviluppato da John Cocke dell’IBM

Research nel 1974. Le sue argomentazioni erano basate sul fatto che un computer usa solo il 20% del proprio set di istruzioni per il 90% del programma. Un processore, quindi, dovrebbe essere dotato di poche istruzioni che richiedono un minore numero di transistor. Il termine RISC fu coniato in seguito da David Patterson, docente alla University of California in Berkeley.

2 Instruction Set Architecture, (lett. Architettura dell’ Insieme di Istruzioni) è l’acronimo per livello del linguaggio macchina, ossia l’insieme delle istruzioni in linguaggio macchina di un processore.

(10)

Capitolo 3

• 8k ( ) word per la memoria programma di tipo Flash, con word a 14 bit.

8192 1024

*

8 =

• 368 byte di memoria dati (locazioni da 8 bit) di tipo RAM.

• 256 byte EEPROM (memoria permanente con possibilità di lettura e scrittura durante l’esecuzione del programma).

• Max frequenza di clock esterna DC a 20 Mhz. • Modi di indirizzamento diretto, indiretto e relativo.

• Gestione degli interrupt fino a 14 sorgenti (non vettorizzato). Caratteristiche su periferiche:

• Timer0: timer/contatore a 8 bit con prescaler ad 8 bit.

• Timer1: timer/contatore a 16 bit con prescaler che può essere incrementato durante lo SLEEP tramite il clock esterno.

• Timer2: timer/contatore con registro a periodo di 8 bit, prescaler e postscaler. • Capture a 16 bit, max. risoluzione 12.5 µsec.

• Compare a 16 bit, max. risoluzione 200 µsec. • PWM con max. risoluzione a 10 bit.

• Convertitore multi-canale Analogico-Digitale a 10 bit

• SSP (Synchronous Serial Port) con modalità Master (SPI) e Master/Slave (I2C). • Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI) con

detenzione di indirizzo a 9 bit.

• Parallel Slave Port (PSP) a 8 bit con controllo esterno RD, WR and CS. • Circuiteria per detenzione di Brown-Out per reset di Brown-Out (BOR).

Il PIC16F877 è stato utilizzato per effettuare le elaborazioni necessarie sui segnali provenienti dagli ADXL202JE, e ricavare le accelerazioni lungo i tre assi.

Le operazioni effettuate sono state: l’acquisizione di tre segnali digitali attraverso tre pin della porta B, il conteggio del periodo e della durata della parte alta del segnale proveniente dagli accelerometri, dopo una fase di calibrazione attivata tramite un tasto

(11)

Capitolo 3

collegato direttamente al piedino 4 della portaB, ed infine trasmissione su seriale dei dati calcolati. Verranno, quindi, approfondite in seguito le sole proprietà del Pic, utilizzate in questo progetto di tesi.

3.3.1 Porte di I/O: la porta B

Il PIC16F877 dispone di 5 Port di I/O a scopi generali (PORTA, PORTB e PORTC, PORTD, PORTE). Alcuni dei loro pin sono multiplexati con una funzione periferica alternativa: in tal caso se tale funzione è abilitata il pin non può essere utilizzato come I/O generico.

Ogni Port ha associato un registro Tris con cui si definisce la direzione di ogni suo piedino. In sostanza i registri Tris determinano il funzionamento in ingresso o in uscita di ogni singola linea mentre i registri Port determinano lo stato delle linee in uscita o riportano lo stato delle linee in ingresso.

Il PORTB è un gruppo di 8 piedini di I/O bidirezionali che hanno la particolarità di poter essere messi in pull-up via software. Tre piedini sono multiplexati con la funzione di programmazione a bassa tensione: RB3/PGM, RB6/PGC ed RB7/PGD.

Quattro pin della PORTB, RB7:RB4, hanno la particolarità di generare interruzioni quando avviene un cambiamento di stato. Solo i pin configurati in ingresso possono generare un Interrupt.

Sono stati utilizzati infatti, i pin RB7:RB5 per gli ingressi dei segnali degli accelerometri e il pin RB4 per il collegamento con il tasto, per avere la predisposizione del microcontrollore ad operare a gestione di interruzione. Questa è una possibile miglioria da apportare al sistema.

3.3.2 TIMER1

Il modulo Timer1 è un modulo contatore/timer con le seguenti caratteristiche: • Timer/contatore ad 16 bit.

(12)

Capitolo 3

• Prescaler a 8 bit programmabile via software. • Selezione di clock interna o esterna.

• Interrupt da overflow che si verifica al passaggio dal valore FFh a 00h. • Selezione del fronte attivo (salita/discesa) per il clock esterno.

Figura 3.8 Registro di controllo del timer1

In sostanza il modulo Timer1 è un registro di 16 bit, costituito da due registri da 8 bit, TMR1L,TMR1H, è leggibile e scrivibile come gli altri registri e capace di generare una segnalazione di overflow tramite un’interruzione dedicata.

E’ selezionabile come timer ponendo a 0 il bit TMR1CS (T1CON<1>), nel qual caso incrementerà il valore del registro ad ogni ciclo di istruzione (ossia ogni 4 cicli di clock esterni).

E’ selezionabile come contatore ponendo a 1 il bit TMR1CS (TICON<1>), ovvero un particolare tipo di registro il cui contenuto è incrementato al fronte attivo del clock selezionabile mediante il bit T1OSCEN (T1CON<3>).

In ogni caso genererà un’ interrupt in presenza di overflow, ossia al passaggio dal valore FFh a 00h.

In pratica, a differenza d’altri registri, il TMR1 non mantiene inalterato il valore che gli è memorizzato, ma lo incrementa continuamente a seguito del verificarsi di eventi. Quando il registro raggiunge lo zero si attiva un’interruzione.

Il TIMER1 è stato utilizzato in modalità timer, un incremento per ogni istruzione di ciclo, per eseguire i conti su i tre segnali digitali PWM della coppia di accelerometri. Infatti è stato implementato in linguaggio di Assembler, un programma che effettua

(13)

Capitolo 3

ciclicamente il conteggio della durata della parte alta (T1) e del periodo (T2), dei tre segnali digitali di uscita dagli ADXL202JE.

3.3.3 USART: Trasmissione Seriale

L’USART (Universal Synchronous Asynchronous Receiver Transmitter) è uno dei moduli seriali, conosciuto anche come SCI (Serial Communications Interface), che può essere configurato come sistema asincrono full-duplex, con la possibilità di comunicare con dispositivi periferici come un PC, o come sistema sincrono half-duplex con la possibilità di comunicare con dispositivi periferici come convertitori A/D, EEPROM seriali ed altri: in questa modalità può essere configurato sia come master che come slave.

Questo paragrafo descrive principalmente la trasmissione, trascurando la ricezione che non è stata utilizzata in questo lavoro di tesi.

La comunicazione seriale asincrona avviene utilizzando un’unica linea di collegamento sulla quale viaggiana serialmente i singoli bit costituenti l’informazione. I bit vengono inviati a trame , esse comprendono un bit di start (livello basso), 8 bit di dati (che nel nostro caso rappresentano il dato in uscita dal TIMER1 dopo la fase di conteggio) ed un bit di stop(livello alto).

Durante la trasmissione della trama, i bit che la costituiscono, vengono emessi con cadenza regolare e il numero di bit inviati nell’unità di tempo è detto bit-rate. Il PIC16F877 usa ilpin TX (RC6) per la trasmissione e il pin RX per la ricezione, essi devono essere configurati rispettivamente come uscita e ingresso agendo sui bit appositi del registro TRISC e abilitati ponendo il bit SPEN del registro RCSTA.

La velocità di trasmissione dell’USART è determinata dal programmatore, immettendo un valore opportuno nel registro SPBRG, che imposta il timer BRG (Baud Rate Generator). Nella trasmissione asincrona è possibile scegliere la modalità Low-speed o High-speed, ponendo a 0 oppure ad 1 il bit BRGH del registro TXSTA. Scelto il baud rate desiderato e nota la frequenza di clock del Pic (Fosc), il valore intero X (da 0 a 255)

(14)

Capitolo 3

da immettere nel registro SPBRG, è ottenuto tramite le formule riportate nella tabella seguente.

Low-speed (BRGH=0) Hi-speed (BRGH=1)

Baud Rate=Fosc/ 64

(

(

X +1

)

)

Baud Rate=Fosc/ 16

(

(

X +1

)

)

Tabella 3.1 Formule per il calcolo delle velocità di trasmissione

Al PIC è stato fornito, tramite un oscillatore opportunamente collegato tra i pin OSC1 e OSC2, un clock pari a 3,6864 MHz, perché come mostra la figura 9, con questo valore di oscillazione, la percentuale di errore nella trasmissione di un dato, è nulla per quasi tutte le velocità settabili.

Figura 3.9 Valori di trasmissioni

La velocità di trasmissione scelta è di 57600 Kbps, e il valore da immetere nel registro SPBRG risulta pari a 3.

(15)

Capitolo 3

La trasmissione seriale viene abilitata settando il bit TXEN, nel registro TXSTA, e comincia non appena il byte da inviare viene immesso nel registro TXREG. Da qui il byte passa al registro TSR (il bit TXIF del registro PIR1 indica l’avvenuto trasferimento) e viene inviato a partire dal bit meno significativo.

Figura 3.10 Diagramma a blocchi modulo di trasmissione dell’USART.

3.4

ICL232

Il collegamento diretto tra l’uscita UART del PIC16F877 e il Serial Port Adapter, modulo Bluetooth della ConnectBlue, non è possibile. Infatti i livelli di tensione sono completamente incompatibili.

Livello Valori di tensione

logico Logica TTL Standard RS232

"0" 0 ÷ 0,8 V + 3 ÷ +15 V "1" 2,4 ÷ 5 V - 3 ÷ -15 V

Tabella 3.2 Valori di tensioni nel protocollo TTL e RS232

Le ampiezze delle tensioni dello standard RS232 sono molto più grandi di quelle utilizzate nella logica TTL.

(16)

Capitolo 3

Si deve quindi interporre tra l’UART del Pic16F877, cioè i segnali RXD, TXD, CTS, RTS, DSR e DTR, e il cavo seriale un piccolo circuito che realizzi la conversione delle tensioni e dei livelli logici.

L’ICL232 dell’Intersil è un traslatore di livello; trasforma i livelli logici RS232 in TTL/CMOS e viceversa. E’ un componente a 16 pin alimentato a +5 V, permette data

rate di 200 Kbps ed è tipicamente utilizzato nelle applicazioni industriali per la sua flessibilità ed il suo basso costo.

L’ICL232 è costituito da tre sezioni:

• Convertitore di tensione a pompe di carico: il dispositivo contiene due pompe di carico che permettono di convertire la tensione di alimentazione 5 V in +10 V e –10 V. Il primo convertitore usa la capacità C1 per raddoppiare la tensione 5 V a +10 V sul pin V+ collegato alla capacità C3. Il secondo convertitore usa la capacità C2 per invertire la +10 V in –10 V sul pin V- sulla capacità C4.

• RS232 Driver: converte i segnali da livelli TTL/CMOS in RS232, tipicamente con livelli di tensione di ± 8V. La resistenza da 400 kΩ di pull-up, internamente collegata all’alimentazione, forza l’uscita ad essere bassa, quando il pin di ingresso non è collegato.

• RS232 Receiver: riceve i segnali seriali RS232 e li trasforma in segnali compatibili ai livelli logici TTL/CMOS. Gli ingressi possono resistere a sovratensioni di ± 25 V e sono forniti di resistenze di terminazione di 5 KΩ, utili nel caso in cui le porte non vengano usate.

(17)

Capitolo 3

Figura 3.11 Pinout ICL232 Figura 3.12 Configurazione di funzionamento

3.5

Bluetooth: Moduli ConnectBlue

Bluetooth permette di comunicare senza cavi tra strumenti compatibili, portatili e non. La tecnologia è basata sul collegamento radio che offre trasmissioni affidabili e veloci di dati e voce. Il protocollo wireless Bluetooth, è basato su un range di frequenze radio che assicura la completa compatibilità di comunicazione in tutto il mondo.

I moduli Bluetooth utilizzati sono della ConnectBlue, e sono dei “OEM Serial Port Adapter”, cioè permettono la comunicazione tra strumenti nei quali è presente una porta RS232/422/485 o che utilizzano per la trasmissione i livelli logici UART.

(18)

Capitolo 3

Figura 3.14 Schema a blocchi del funzionamento interno del modulo Bluetooth della ConnectBlue

Sono stati scelti i moduli della ConnectBlue, perché meno costosi di altri articoli presenti nel mercato, perché presentano proprietà necessarie per l’integrazione in questo lavoro di tesi, quali la configurazione via Bluetooth, inserimento su circuito stampato e velocità di trasmissioni superiori a 115200 Kbps, e perché offrono tante altre caratteristiche utilizzabili in applicazioni future.

I moduli acquistati dalla ConnectBlue sono:

I. OEM Serial Port Adapter, classe 1;

II. OEM Serial Port Adapter, classe 1, Kit Completo(cd con software di installazione,

(19)

Capitolo 3

I Serial Port Adapter possono operare in tre modi:

• Trasparent data-mode: in questa modalità , i dati inviati dal host system al modulo Bluetooth, attraverso l’interfaccia seriale viene inoltrato allo strumento connesso in remoto. Dati ricevuti da strumenti connessi in remoto vengono inoltrati allo host system attraverso l’interfaccia seriale.

• AT mode: in questa modalità l’host system è in grado di configurare e controllare il Serial Port Adapter, utilizzando i comandi AT.

• ECI packet mode: in questa modalità il Serial Port Adapter è configurato e controllato utilizzando il protocollo ECI. La configurazione con il wizard del software di installazione, è un esempio di applicazione del protocollo Eci da parte del Host

I moduli sono stati settati attraverso l’utilizzo del software in dotazione, che permette di poter scegliere il tipo di interfaccia seriale da utilizzare, le caratteristiche della comunicazione Bluetooth e il tipo di connessione da stabilire.

(20)

Capitolo 3

I Serial Port Adapter sono progettati per operare come DTE (Data Terminal Equipment). Quindi, quando vengono connessi a un Pc, che è anch’esso un DTE, bisogna avere particolare attenzione nelle connessioni. Infatti, come nel nostro caso, i pin Td e Rd devono essere incrociati, come mostra la figura 16.

Figura 3.16 Schematizzazione delle connessioni tra due DTE

Dopo una panoramica su tutti i compenti utilizzati in questo progetto di tesi, viene mostrato lo schema complessivo della scheda per l’acquisizione ed elaborazione dei segnali degli accelerometri, e il suo aspetto finale.

(21)
(22)

Figura 3.17 Foto del sistema realizzato

(23)

Capitolo 3

3.6

Software utilizzato

I software utilizzati in questo lavoro di tesi sono stati fondamentalmente due:

I. il linguaggio assembler per la programmazione del Pic, utilizzato con il software

MPlab della Microchip;

II. il Visual Basic per la creazione di un interfaccia grafica in grado di gestire i dati

inviati via bluetooth dal microcontrollore.

3.6.1 Il Linguaggio Assembler

Il linguaggio Assembler è un linguaggio a basso livello, nel senso che le istruzioni sono in corrispondenza uno ad uno con le istruzioni macchina. Esso permette di assegnare nomi simbolici alle locazioni di memoria e di riferirle tramite questi nomi, nonché di definire costanti, assengnando loro un nome simbolico col quale riferirle. Occorre poi avere un ambiente di programmazione in modo che il programma scritto in Assembler possa essere trasformato in linguaggio macchina e quindi trasferito alla memoria Flash del PIC. L’ambiente è appunto l’MPLAB IDE (Integrated Development Environment), fornito gratuitamente dalla Microchip. Nella prima fase viene prodotto un file .asm contenuto all’interno di un file .pjt (project). L’operazione di Build lo traduce in un file eseguibile .hex che può essere trasferito alla Program Memory del microcontrollore tramite il programmatore PICSTART PLUS.

Il programma del PIC16F877, è stato pensato per la gestione dei segnali digitali PWM provenienti dalla coppia d’accelerometri. L’elaborazione di questi segnali è stata dettata dalle relazioni che questi hanno con l’accelerazione subita dal sensore. Infatti, l’accelerazione è direttamente proporzionale alla durata della parte alta (T1) dei segnali digitali modulati PWM.

(24)

Capitolo 3

Figura 3.20 Segnali digitali PWM d’uscita dall'ADXL202JE

Il primo passo da compiere è la calibrazione iniziale dei sensori, rispetto all’acellerazione di gravità. Questa procedura viene effettuata, semplicemente, calcolando i valori di T1 e del periodo T2, a zero g. Queste costanti vengono definite come segue:

• T2cal, valore di T2 durante la fase di calibrazione; T2 può variare a causa della temperatura o avere dei jitter passando da una misurazione ad un’altra.

• ZXcal, valore di T1x durante la fase di calibrazione; • ZYcal, valore di T1y durante la fase di calibrazione; • ZZcal, valore di T1z durante la fase di calibrazione;

(25)

Capitolo 3

Il bit_scale_factor è utilizzato per determinare le dimensioni del risultato e quindi per avere il valore dell’accelerazione espressa in funzione di g, accelerazione di gravità, o in funzione della variazione d’angolo subita dal sensore.

L’espressione finale dell’accelerazione lungo i tre assi è data dalle formule sotto riportate:

XAcceleration = [ K * (T1x - ZXactual) ] / T2actual

YAcceleration = [ K * (T1y - ZYactual) ] / T2actual

ZAcceleration = [ K * (T1z - ZZactual) ] / T2actual

dove:

ZXactual, ZYactual, ZZactual, sono rispettivamente i valori ricavati dalle formule

ZXactual = ( ZXcal * T2actual)/T2cal, ZYactual = (ZYcal * T2actual)/T2cal, ZYactual = (ZYcal * T2actual)/T2cal,

con T2actual, valore della misurazione corrente di T2; questa operazione viene effettuata per eliminare gli effetti della temperatura.sulla durata del periodo T2.

Il programma di gestione del microcontrollore, quindi, effettua una prima fase di calibrazione, successivamente calcola, ripetutamente, il valore corrente di T1, relativo ai tre assi X, Y e Z e infine invia i dati calcolati in seriale.

Nella figura sottostante viene mostrato il diagramma di flusso del programma implementato sul PIC16F887 per il calcolo delle accelerazioni lungo gli assi X, Y eZ.

(26)

Capitolo 3

Settaggi Iniziali

Figura 3.21 Diagramma di flusso del programma sviluppato in assembler per il microcontrollore

RB4 è Zero? CALIBRAZIONE CALCOLO T1 INVIA RS232 NO RESET? SI NO SI CALCOLO T1 T1x,T1y,T1z CALCOLO T2 T2x,T2z CALIBRAZIONE

(27)

Capitolo 3

Le parti che compongono il programma sono:

• impostazioni iniziali, definizione delle costanti, dichiarazione delle variabili; • dichiarazione di macro e subroutine;

• main program.

Il programma si apre con alcune direttive:

list P=PIC16F877, F=INHX8M, ST=OFF, N=42, MM=OFF, B=6 radix dec

include "p16f877.inc" errorlevel -302

__CONFIG_XT_OSC&_PWRTE_OFF&_BODEN_OFF&_CP_OFF&_WDT_O FF&_LVP_OFF

list è una direttiva del compilatore assembler che indica per quale microprocessore è

stato scritto il nostro source. Le direttive non sono delle istruzioni mnemoniche, ma delle indicazioni rivolte al compilatore per determinare il funzionamento durante la compilazione. La direttiva radix serve ad informare il compilatore che i numeri riportati senza notazione, sono da intendersi come numeri decimali. Con include si indica al compilatore l’intenzione di includere nel source un secondo file denominato P16F877.INC. Il compilatore si limiterà a sostituire la linea contenente la direttiva con il contenuto del file indicato e ad effettuare quindi la compilazione come se fosse anch’esso parte del source. In esso sono elencate tutte le etichette con i nomi dei registri presenti nel PIC. La direttiva error level -302 fa si che,dopo la fase di compilazione, non compaia un messaggio di Warning che invita il programmatore a verificare l’indirizzo dei registri in memoria. L’ultima riga è relativa alle impostazioni in fase di programmazione del PIC. Il programma prosegue con la definizione delle costanti simboliche tramite la direttiva EQU e con la dichiarazione delle variabili tramite le istruzioni cblock e endc. Esse indicano al compilatore che intendiamo riservare un certo

(28)

Capitolo 3

numero di byte all’interno dell’area dati che denomineremo con una label e che nel resto del source assumerà il valore dell’indirizzo in cui è stata inserita.

Cbloch 20H è la direttiva che consente di definire l’indirizzo da cui si vuole che il compilatore inizi ad allocare i dati (variabili e contatori) all’interno della RAM del PIC; si parte dall’indirizzo 20H in quanto le locazioni precedenti sono occupate da altri registri specializzati per uso interno.

ORG 00H fa riferimento ad un indirizzo in area di programma (EEPROM) anziché in area dati. Da questo punto in poi, si andrà , infatti, ad inserire le istruzioni mnemoniche che il compilatore dovrà convertire negli opportuni opcode per il PIC. Il primo opcode eseguito dal PIC dopo il reset, è quello memorizzato nelle locazione 0, da quyi il valore 00H inserito nella ORG. Il programma si trova a partire dalla locazione 20.

Le subroutine sono sotto programmi chiamati dall’istruzione CALL. Questa istruzione salva nello Stack l’indirizzo dell’istruzione successiva (indirizzo di rientro) e trasferisce nel Program Counter l’indirizzo di salto. Il ritorno dal sottoprogramma avviene tramite l’istruzione RETURN con cui terminano tutte le subroutine.

Le subroutine riferite nel programma sono:

• ControllaCalibra: implementa la procedura di calibrazione dei sensori dopo che è stato premuto il tasto; in questa procedura vengono calcolati i valori di T1 e T2 per tutti e tre gli assi, X Y e Z, e memorizzati come valori di calibrazione; • CalcoloT2: utilizzata per il calcolo del periodo dei segnali digitali PWM dei due

accelerometri; viene richiamata all’interno della procedura ControllaCalibra e determina il valore del periodo dei segnali degli accelerometri contando, con il timer1 impostato a timer che si incrementa ad ogni istruzione di ciclo, la durata della parte alta e della parte bassa dei segnali digitali modulati PWM. Queste operazioni vengono fatte sui soli segnali X e Z, visto che dopo uno studio dei segnali dell’accelerometro (si rimanda al capitolo Risultati Sperimentali per approfondimenti), si è notato che il periodo di segnali digitali PWM provenienti dallo stesso sensore, sono coincidenti.

(29)

Capitolo 3

• CalcoloT1: procedura per il calcolo della durata della parte alta del segnale digitale dell’accelerometro; questa subroutine viene chiamata una prima volta durante la fase di calibrazione, e poi viene richiamata ripetutamente nel programma principale, per valutare la variazione d’accelerazione subita dai sensori.

Il programma principale inizia con i settaggi delle porte utilizzate, della trasmissione asincrona e la disabilitazione della gestione di interruzioni. Le porte utilizzate sono la PORTC per la trasmissione seriale, attraverso i piedini RC6 e RC7, rispettivamente per Tx e Rx, e la PORTB per la gestione dei segnali degli accelerometri e del tasto di attivazione della procedura di calibrazione. Si è scelto di utilizzare la PORTB, per la particolarità che offre questa porta: infatti, i pin RB7:RB4, se settati come ingressi, inviano una interruzione ogni volta che si verifica un cambiamento di stato nel segnale che essi ricevono. Poiché i segnali digitali degli accelerometri sono delle onde quadre, modulate PWM, si è ipotizzato una possibile gestione ad interruzione di programma, con probabile riduzione del tempo necessario al pic per effettuare i calcoli di T1 e T2. La scelta, quindi,di utilizzare la PORTB come ingresso per i segnali digitali dei due accelerometri, lascia al sistema la predisposizione per gestire il funzionamento del PIC a iterruzione di programma.

Il programma principale prosegue con la chiamata alla subroutine ControllaCalibra e al successivo invio via seriale dei dati di calibrazione. Il PIC invia tre caratteri di sincronismo, “s” “d” e “P”, quindi carica nel registro TXREG i dati calcolati nella procedura ControllaCalibra. Trasmessi tutti i valori di T1, T2 e Zcal, il ciclo ricomincia con la procedura CalcoloT1 e successivamente con la trasmissione via seriale dei valori aggiornati delle variabili T1, T2 e Zcal Il ciclo viene ripetuto fino a quando non viene schiacciato il tasto di Reset.

E’ utile sottolineare che a regime dopo i tre caratteri di sincronismo, si avranno i dati relativi al calcolo di T1, T1x T1y e T1z, successivamente quelli relativi al calcolo di T2, T2x e T2z, ed infine i valori relativi alla procedura di calibrazione, ZXcal ZYcal e ZZcal.

Figura

Figura 3.1   Schema a blocchi del sistema completo
Figura 3.2  Schema a blocchi del funzionamento dell’ADXL202JE
Figura 3.3  Struttura interna ADXL202
Figura 3.4  Tipico segnale digitale PWM
+7

Riferimenti

Documenti correlati

La palestra è stata pensata in simbiosi al progetto urbanistico per cercare di rendere la struttura il più possibile inserita nel contesto ambientale che andava sviluppandosi

In figura 4.10 sono mostrati due esempi nel quale questa operazione ` e l’unica direzione lungo la quale pu` o essere estratto il pezzo, considerando che il pezzo non pu` o essere

Si sono introdotte le definizioni e presentati i fatti necessari per descrivere il pro- cedimento di Gauss nella sua forma piu’ efficiente e generale: (1) si sono definite

[r]

utilizzando nuovamente una macchina termica reversibile si sfrutta tutto il lavoro L ottenuto in precedenza per pompare calore dal corpo 2+3 al corpo 13. ◦ Per ∆S abbastanza grande

993981 è stata avviata una trattativa diretta sul portale della pubblica amministrazione (MEPA) per la fornitura ed installazione di tre terminali presenze come da servizio

L'affidataria si impegna a dare immediata comunicazione alla stazione appaltante ed alla prefettura - ufficio territoriale del Governo della provincia di Trieste

La determinazione delle caratteristiche inerziali del simulatore per il volo in for- mazione ` e un aspetto fondamentale nell’ottica della progettazione del controllo d’as- setto a