I.T.I.S. “Enrico Mattei” 2008/2009 Sensore di Temperatura Wireless per PC Francesco Renzini 5°A/EN 1 INDICE - 1. Introduzione 2. Descrizionee del progetto 3. Dati di targga 4. Schema di principio 5. Blocchi circuiti mento 6. Funzionam 7. Applicazioni 8. Codice mponenti principali 9. Pinout com 10. Istruzionii per l’ uso 11. Teoria 12. Bibliograffia 2 1.Introduzione: Il seguente progetto non ha la pretesa di essere un dispositivo da commercializzare ma, semplicemente di riassumere il lavoro svolto durante i tre anni di specializzazione nelle diverse materie tecniche, applicando le competenze acquisite. Tutti i circuiti stampati (eccetto quelli dell’alimentazione), facenti parte del progetto, sono stati fatti a tecnologia smt (surface mount technology) e, realizzati utilizzando le apparecchiature e strumentazioni dei laboratori dell’istituto. Anche ogni cablaggio e collaudo è stato portato a termine con l’utilizzo di strumenti scolastici e personali. 2.Descrizione del progetto: Il “sensore di temperatura wireless per pc”, consiste in un termometro interfacciabile con il calcolatore, dotato di un sensore wireless, (cioè senza fili) che può essere spostato dalla base (collegata al computer) di circa 50 metri in linea d’aria (aperta). Si possono intuire le parti costituenti il progetto. Nel sensore portatile avremo: una parte di rilevazione della temperatura (trasduttore), una di acquisizione (ADC), una di elaborazione (μC) e trasmissione (modulo radio). Nella centralina invece avremo: una parte di ricezione dei dati trasmessi dal precedente modulo, quindi, un’ altro modulo, la parte di elaborazione (μC) e una parte di comunicazione con il calcolatore (interfaccia 232). Riassumendo, si utilizzano due moduli radio ( un Tx ed un Rx ), gestiti da microcontrollori. 3 3.Dati di targa: SENSORE ¾ INTERVALLO DI MISURA: 0°C – 50°C ¾ TENSIONE ALIMENTAZIONE: • • 9V D.C. utilizzando 6 batterie da 1.5V AA in serie Alimentatore stabilizzato da 9-15V D.C. ¾ CORRENTE ASSORBITA IN STAND-BY: 90mA ¾ CORRENTE ASSORBITA IN FUNZIONE: 100mA ¾ DISTANZA MASSIMA DALLA BASE IN LINEA D’ARIA LIBERA: 50m BASE ¾ TENSIONE ALIMENTAZIONE: • • 9V D.C. utilizzando 6 batterie da 1.5V AA in serie Alimentatore stabilizzato da 5-15V D.C. ¾ CORRENTE ASSORBITA IN STAND-BY: ---mA ¾ CORRENTE ASSORBITA IN FUNZIONE: ---mA ¾ PORTA INTERFACCIA PC: Seriale RS232: connettore DB9 femmina 4 4.Schema di principio: SENSORE ETERE BASE Il blocco sensore ha lo scopo di rilevare la temperatura e di trasmetterla via radio alla base, posta a distanza. L’etere, inteso come aria, è il mezzo nel quale viaggiano le onde elettromagnetiche, che compongono quelle radio portatrici di informazioni (quindi non si vuole intendere per etere, l’ “etere luminifero”, quell’ ipotetico mezzo, attraverso il quale, si propagano le onde elettromagnetiche, di cui Newton ipotizzò l’ esistenza, definitivamente smentita dalla teoria della Relatività Ristretta di Albert Einstein) Il blocco base ha lo scopo di captare i segnali radio informativi, elaborarli ed inviarli al calcolatore su richiesta dell’utente. 5.Blocchi circuiti: SENSORE STABILIZZATORE 3.3V 2 9‐15V C.C. 1 3 4 5 MODULO RADIO μC 5 TRASDUTTORE‐ CIRCUITO CONDIZIONAMENTO‐ FILTRO BASE 9‐15V C.C. 1 STABILIZZATORE 3.3V 2 6 MODULO RADIO 7 μC 8 RS232 9 PC 1) 9-15V C.C.: è l’alimentazione esterna, fornitagli da batterie o da un alimentatore stabilizzato. Tale tensione deve essere abbastanza stabile, in quanto serve ad alimentare la parte del circuito costituita dal trasduttore. Questa fonte di alimentazione deve essere in grado, almeno di erogare una corrente non inferiore a 100mA, quindi deve avere una potenza minima di 0.9W. Pmin= Vmin*Imin= 9 * 100*10-3 = 0.9W = 900mW Pmin= Potenza minima - Vmin = tensione minima - Imin= corrente minima Il valore minimo di tensione di alimentazione è 9V in quanto gli amplificatori operazionali del blocco del trasduttore, potrebbero non funzionare correttamente, non essendo “rail to rail”. Come valore massimo di tensione in ingresso si ha 15V, perché il sensore ti temperatura potrebbe lesionarsi. 6 Porta batterie per 6 AA 2) STABILIZZATORE 3.3V: è un circuito che serve a stabilizzare la tensione di alimentazione a 3.3V per alimentare il resto del circuito. È costituito da un regolatore di tensione lineare LD1086 e da alcune capacità di filtro (i cui valori sono imposti dal datasheet). Circuito stabilizzatore Schema elettrico Questo integrato ha un dropout basso, 1.3V a 1.5A (corrente massima erogabile). Si è scelto di utilizzare alimentatori lineari per semplicità di realizzazione e perché le potenze in gioco sono piccole. Quindi anche con un rendimento del 50-60% (rendimento tipico degli alimentatori lineari) la dissipazione in calore è limitata. 7 BOARD Lato rame Componenti 3) TRASDUTTORE-CIRCUITI CONDIZIONAMENTO-FILTRO è la parte del sensore vera e propria, in quanto composta dall’ elemento sensibile alla grandezza fisica da rilevare, e da circuiti che elaborano l’informazione prelevata. TRASDUTTORE CIRCUITO CONDIZIONAMENTO FILTRO Nel circuito viene utilizzato come trasduttore, l’integrato LM335, che è un sensore di temperatura analogico, che fornisce in uscita una tensione direttamente proporzionale alla temperatura rilevata in ingresso, data dalla seguente funzione: V=k*T Dove: V = tensione uscita k = 10mV/°K T = temperatura Come si può notare il segnale analogico informativo, viene espresso in funzione della temperatura in °K. La conversione da gradi Kelvin a Celsius può essere fatta a livello analogico, cioè operando direttamente sul segnale che contiene l’informazione o a livello digitale. Questo sensore ha un’accuratezza di 1°C, quindi di 10mV. Il circuito di condizionamento serve appunto a condizionare alle esigenze il segnale contente l’informazione; quindi si potrebbe realizzare un circuito di adattamento che esegua la conversione da °K a °C. Tale circuito richiederebbe una quantità di hardware non indifferente, quindi si preferisce eseguire la conversione digitalmente (tramite software caricato nel microcontrollore). In questo caso il circuito di condizionamento è costituito solamente dalla parte di taratura del sensore (R2) e da un buffer non invertente (IC1A), che ha la funzione di isolare il sensore dal resto del circuito, facendo in modo che esso 8 non eroghi corrente, in quanto l’impedenza d’ingresso del AO ad inseguitore di tensione, vista dal sensore è molto elevata. Il filtro, è un passa basso del quarto ordine VCVS con approssimazione alla Butterworth, con frequenza di taglio a circa 10Hz. Questo quadripolo ha la funzione di eliminare i disturbi in alta frequenza che renderebbero instabile la misurazione della temperatura. Risposta in frequenza del filtro 9 Schema elettrico BOARD Lato inferiore rame Lato superiore rame Circuito sensore 10 Componenti 4) μC: il microcontrollore è l’“autorità” che gestisce tutto il sensore. Il controllore utilizzato è uno Z8F6421 prodotto da Zilog, con un core da 8 bit. Il micro è organizzato con architettura Harvard ed è provvisto di: 64kB di flash rom 4kB ram ADC 8 canali a 10 bit 31 linee di I/O 3 timer da 16 bit 2 UART con IrDA 1 I2 C 1 SPI Di tutte queste periferiche si utilizza un canale del convertitore A/D, alcune linee di I/O, un timer, la SPI e la UART. Il μC converte la tensione presente nell’ingresso analogico, fornitagli dal circuito con il trasduttore e, la trasmette via SPI al modulo radio. Per eseguire la conversione A/D, l’ADC, necessita di una tensione di riferimento, nel nostro caso, utilizza la tensione di alimentazione filtrata con un condensatore. Conoscendo la tensione di alimentazione e il numero di bit del convertitore, è possibile calcolare il quanto q e l’errore di quantizzazione ε. q =Vref / 2n° bit = 3.3/210=3.22mV ε = q/2 = 3.22 = 1.61mV Osservando lo schema elettrico, è possibile notare la presenza di un quarzo da 18.432MHz, che serve da oscillatore per il microcontrollore. È presente anche un pulsante di reset, da premere all’avvio e ogni qualvolta si presenti un problema. Sono montati anche due diodi led, uno rosso ed uno verde che servono per segnalare all’utente l’esito della comunicazione radio con la stazione. Il codice sorgente è stato creato utilizzando il tool di sviluppo apposito, ZDSII. Il programma è stato scritto in ANSI C, in quanto l’utilizzo di un linguaggio a medio – alto livello, permette un’ astrazione del problema. Questo elevarsi dalla macchina, consente una portabilità del codice scritto qualora si volessero effettuare modifiche hardware (cambiare microcontrollore). 11 Il controllore è stato programmato tramite programmatore - debugger fornito dalla Zilog, utilizzando uno specifico connettore, collegato direttamente al pin DBG dello Z8. All’avvio il microcontrollore inizia ad eseguire il programma precedentemente caricato in flash, tramite apposito programmatore. Per la prototipazione sono stati utilizzati dei μC Z8F6423 mentre, per la realizzazione dei circuiti stampati, si sono usati due Z8F6421. 12 13 Lato inferiore rame Lato superiore rame Componenti Circuito controllo sensore 14 5) MODULO RADIO è un circuito prodotto da Cypress, il CYWM6935 è un modulo WirelessUSB (bus universale seriale senza fili). Questo dispositivo monta il chip CYWUSB6935 che è un radio transceiver sempre prodotto da Cypress, ed integra nel circuito stampato 2 trace antennas, amplificatori di potenza(fino ad 1mW) e rispettivi filtri. Caratteristiche CYWM6935: - Banda da 2.4GHz a 2.483GHz - Sensibilità in ricezione -95dBm - 50 m di portata in spazio libero - Livello di potenza uscita massimo 0dBm - Velocità massima di trasmissione di 62.5 kbits/sec - Interfaccia SPI a più di 2 MHz Il modulo per essere interfacciato con l’esterno, usa un connettore, da dove viene gestito tramite SPI (Serial Peripheral Interface) da un microcontrollore / microprocessore che, legge / scrive su dei registri presenti nell’ area di memoria del CYWUSB6935. Questo dispositivo utilizza un modem GFSK e due DSSS baseband riconfigurabili, che permettono di selezionare tra 80 canali radio. 15 Il chip è predisposto di uno PseudoNoise code da 8 byte che utilizza come espansione nella comunicazione DSSS. Mappa registri modulo radio Impostando determinati registri di configurazione è possibile abilitare/disabilitare la trasmissione/ricezione, impostare il canale radio, controllare il livello di rumore presente, abilitare diversi tipi di interruzione (in trasmissione e ricezione), controllare l’esito della trasmissione radio, impostare la potenza di trasmissione e cambiare il PN code. Per gestire i registri del modulo, il micro deve inviare via SPI, prima un byte (byte1), dove i 6 bit meno significativi indicano l’indirizzo del registro sul quale si vuole operare, il primo bit, se è a 0, indica che i dati vengono letti dal micro, mentre se è a 1 vengono scritti. Il secondo bit più significativo indica l’incremento, cioè se si vuole leggere o scrivere solo un registro va posto a 0, altrimenti, se si vogliono leggere o scrivere più registri va posto a 1; così facendo, la macchina stati presente sul CYWUSB6935, esegue 16 automaticamente l’incremento dell’indirizzo. I byte successivi sono costituiti dai dati. La presenza di una macchina stati e dei precedenti registri di configurazione, permette di utilizzare tali moduli in modo semplice e diretto. Ciruito modulo radio 17 TRANSIZIONI SPI Chiaramente i segnali SCK e SS sono gestiti dal master (Z8), quindi il segnale MOSI va dal microcontrollore al modulo radio, viceversa per il segnale MISO. 6) MODULO RADIO è uguale al precedente, solamente che utilizza anche il segnale IRQ (interrupt request), per segnalare al micro quando la trasmissione è stata eseguita, modificando una variabile di stato all’interno del programma. 7) μC anche lui è lo stesso modello di quello utilizzato per il sensore, solamente che, nella stazione, oltre a gestire il modulo radio, non deve effettuare alcun tipo di conversione A/D e, come abbiamo già detto, oltre a gestire 18 l’interruzione del modulo radio in trasmissione, gestisce anche l’ interruzione del pulsanti di RICHIESTA e quella della seriale. 8) RS232 consiste nella comunicazione seriale con il calcolatore e nell’integrato MAX3222. Questo componente è un driver di linea con una protezione ESD (scariche elettrostatiche) di ±15kV. Quest’ultimo integrato serve anche come traslatore di livello, in quanto i livelli di tensione di uscita dello Z8 sono 3.3V, il transceiver provederà a creare una differenza di potenziale di ±12V, necessari per la comunicazione. Per il collegamento tra calcolatore e centralina, si utilizzano due connettori DB9, connessi tramite cavo seriale a 9 poli. Della comunicazione seriale vengono usati solamente tre segnali, quello di trasmissione, quello di ricezione e la massa. 19 20 Lato inferiore rame Lato superiore rame Componenti 9) PC consiste nell’interfaccia utente, in questo caso nel software “Hyper Terminal” o in qualunque altro programma in grado di gestire le varie porte di comunicazione del calcolatore elettronico. Come impostare le caratteristiche della comunicazione seriale verrà spiegato nella parte relativa all’uso del dispositivo. 21 6.Funzionamento: Una volta avviati i due apparati, il blocco del sensore si mette in ascolto ed esegue la conversione A/D della temperatura, nel frattempo la base, inizializza le sue periferiche ed inizia a trasmette un byte di chiamata (0x11), quando il micro nella parte del sensore riceve questo byte e lo controlla, trasmette 2 byte: - Il nibble più significativo del primo byte è un codice di riconoscimento - Il nibble meno significativo, in particolare i due bit meno significativi, sono i due bit meno significativi ottenuti dalla conversione A/D - Il secondo byte contiene i rimanenti bit (i più significativi) della conversione A/D Se le comunicazioni avvengono con successo i micro accendono i led verdi, altrimenti quelli rossi. Alla richiesta dell’utente di visualizzare la temperatura, il micro della stazione calcola il massimo e il minimo da quando è stato acceso, in quanto i dati non vengono salvati in ROM ma in RAM; trasforma i valori numerici da 1023esimi in tensione (presente all’ingresso analogico del sensore) e successivamente in temperatura. Ottenuti i valori di temperatura essi vengono trasmessi via seriale; se l’utente richiede la visualizzazione mentre la comunicazione è interrotta (led rosso acceso), la stazione risponde con un messaggio di errore. Indipendentemente dall’esito della trasmissione, viene anche visualizzato il livello di rumore presente nel canale radio. Infatti il microcontrollore esegue la letture del registro dove è situato il risultato della conversione A/D, effettuata dal modulo, e la trasmette via cavo seriale al calcolatore. Questo valore è espresso in 32esimi (adc a 5 bit), e serve per dare un’idea all’utente, dei disturbi presenti, quindi del possibile mal funzionamento del dispositivo. Se viene letto un elevato livello di rumore, occore spostare i moduli dalle fonti di tali disturbi quali: modem wireless, cellulari, computer portatili, ecc. … Siccome la banda di frequenza di questa stazione, interseca quella dello standard wireless per computer (IEEE 802.11), potrebbero verificarsi malfunzionamenti sia ai calcolatori che alla centralina. 22 7.Applicazioni: Questo progetto vuole mostrare una semplice applicazione dei moduli radio CYWM6935, infatti il dispositivo è composto da un solo sensore. La presenza di più canali radio, di un espansore di banda e la possibilità di implementare un protocollo di comunicazione robusto, permette l’applicazione di tali moduli nei più svariati settori, semplicemente anche aggiungendo sensori a questo progetto e, magari anche realizzando un’ interfaccia software per computer. “Il sensore di temperatura wireless per PC” può essere utilizzato in numerosi ambienti: uffici, abitazioni, ecc. … e serve per controllare la temperatura di un luogo comodamente dal proprio computer, con la possibilità di elaborare i dati ricavati con applicativi standard o personalizzati. Questi moduli radio possono trovare applicazione in qualunque dispositivo elettronico, dove si vuole evitare l’utilizzo di lunghi, costosi e scomodi cavi elettrici. 8.Codice: Commento codice sensore Il codice caricato nella memoria dello Z8 presente nel sensore, inizia con le impostazioni delle GPIO del micro, dell’ADC interno, della SPI, del timer, delle interruzioni, del modulo WirelessUSB e dei led di segnalazione. Le GPIO servono a gestire i vari led presenti nel circuito (verde e rosso) ed ad attivare il modulo radio (operando sui segnali nPD e nRST), l’ADC per effettuare la conversione A/D della temperatura, il timer serve a dettare le temporizzazioni necessarie al micro. Il microcontrollore una volta entrato nel ciclo infinito, inizia a testare in polling se riceve il byte di comando (0x11) dal modulo wireless, in caso affermativo esegue la conversione analogico-digitale e trasmette alla base tale risultato. Nel frattempo controlla l’esito di tale comunicazione ed aggiorna i led adibiti alla visualizzazione del risultato della trasmissione radio. 23 Commento codice base Il listato memorizzato nella flash del microcontrollore montato nella base, comincia con le solite inizializzazioni, imposta le GPIO, il timer, la SPI, il modulo CYWM6935, la UART, le varie interruzioni e i led di visualizzazione. Le GPIO servono per gestire i led di visualizzazione (verde, rosso e bianco), il pulsante di RICHIESTA e ad attivare il modulo radio (operando sui segnali nPD e nRST), il timer per dare le giuste temporizzazioni necessarie, la SPI per comunicare con il modulo WirelessUSB, la UART è la seriale che tramite interfaccia (MAX3222), verrà adatta allo standard RS232. Le interruzioni che il micro gestisce sono: quella del timer, quella del modulo wireless, quella del pulsante di RICHIESTA e quella generata da seriale tramite la pressione del tasto invio da parte dell’ utente. Lo Z8 una volta entrato nel ciclo infinito del programma, inizia col trasmettere il byte di comando (0x11) e, se riceve la temperatura correttamente, esegue i calcoli del minimo e del massimo; per poi controllare il livello di rumore presente nel canale radio. Se l’utente richiede di visualizzare la temperatura, il micro esegue le varie conversioni dei dati e trasmette il messaggio tramite seriale. Nel frattempo gestisce anche i led di visualizzazione, se riceve una risposta corretta dal sensore, accende il led verde, altrimenti, se non riceve niente per un secondo o riceve dati non validi, attiva il led rosso. Ad ogni ciclo aggiorna anche lo stato del led bianco che indica l’ aggiornamento della temperatura (ad ogni lampeggio corrispondono due aggiornamenti). 24 File: 9 9 9 9 9 9 9 funzioni.c header.h interrupt.c main.c setting.c spi_function.c librerie Zilog 25 File: 9 9 9 9 9 9 9 9 calcoli.c header.h interrupt.c main.c setting.c spi_function.c stampa.c librerie Zilog 26 9.Pinout componenti principali: Z8 CYWM6935 MAX3222 27 10.Istruzioni per l’ uso: Connettere la base all’alimentazione, premere il tasto di RESET e attendere qualche secondo (circa 5s). Dovrebbe iniziare a lampeggiare il led BIANCO, se così non fosse, ripetere l’operazione di pressione del pulsante di RESET e attesa, fino a quando il led BIANCO non inizia a lampeggiare. Quando il led BIANCO lampeggia, connettere all’alimentazione il sensore wireless e premere il pulsante di reset del sensore. Connettere la centralina tramite PORTA SERIALE al calcolatore e aprire il programma Hyper Terminal. Creare una nuova connessione con la porta seriale utilizzata, impostando: - Bit per secondo: 57600 Bit di dati: 8 Parità: nessuno Bit di stop: 1 Controllo di flusso: nessuno A questo punto il dispositivo è pronto all’utilizzo. Premendo il tasto INVIO da tastiera o il pulsante di RICHIESTA, apparirà la temperatura, se i led accesi della centralina e del sensore sono quelli verdi, altrimenti Hyper Terminal apparirà un messaggio di errore. Il led BIANCO indica la frequenza di aggiornamento della temperatura, ad ogni accensione corrispondono due aggiornamenti. Il led VERDE sia del sensore che della centralina indica che la trasmissione dei dati è avvenuta con successo, quindi i dati ricevuti sono validi; mentre il led ROSSO indica un errore nella trasmissione, quindi i dati verranno scartati. Per qualunque malfunzionamento, premendo il pulsante RESET di entrambi i circuiti si dovrebbe risolvere il problema. Se rimangono accesi fissi i led ROSSI, potrebbe voler dire che la distanza tra sensore e centralina è troppo elevata, quindi occorre avvicinare i due apparati. Prima di accendere la stazione è conveniente scollegare il cavo seriale dall’apposito connettore. 28 11.Teoria: Introduzione In questa parte teorica non si trattano in modo approfondito tutti gli argomenti che possono riguardare il progetto ma, vengono accennati gli elementi fondamentali o novità, riguardanti il dispositivo precedentemente spiegato. Scheda di acquisizione Il progetto presenta chiaramente le caratteristiche di una scheda di acquisizione dati, in quanto una grandezza fisica analogica deve essere trattata da apparati digitali (calcolatore). CIRCUITO CONDIZIONAMENTO SISTEMA A μP CIRCUITO CONDIZIONAMENTO CIRCUITO CONDIZIONAMENTO Il primo elemento di una scheda di acquisizione è composta dal trasduttore, che è un dispositivo in grado di convertire una grandezza fisica analogica (temperatura, pressione, ecc. …), in una elettrica analogica (tensione, corrente o frequenza) oppure in una elettrica digitale, a scopo di misura. Ad esempio il sensore utilizzato in questo progetto (LM335) è un sensore che converte la temperatura (grandezza fisica analogica) in tensione (grandezza elettrica analogica). Questa sonda termica ha una caratteristica lineare, significa che la relazione che lega la grandezza fisica a quella elettrica, è di proporzionalità diretta. Esistono anche sensori con una curva di risposta esponenziale o logaritmica. Il circuito di condizionamento è un circuito analogico che ha la funzione di adattare il segnale informativo alle caratteristiche del sistema, come convertire il segnale elettrico contente l’informazione di una temperatura in gradi Kelvin in Centigradi, oppure, espandere all’interno del range misurabile il segnale informativo. Con la larga diffusione di sistemi digitali molto potenti, in grado anche di eseguire la FFT (Fast Fourier Transform), il circuito di condizionamento non viene più utilizzato per 29 eseguire le varie trasformazioni, che vengono effettuate via software, come nel progetto del “Sensore di temperatura wireless per pc”. Il sample/hold è un circuito analogico che serve a mantenere costante la grandezza elettrica analogica da convertire, per tutto il tempo di conversione dell’ADC. Quando la grandezza da campionare varia molto velocemente nel tempo, tale dispositivo è di fondamentale importanza, in quanto tutela la correttezza della conversione analogico/digitale. In genere i componenti fondamentali di questo circuito sono un condensatore di piccola capacità, (che si carica della tensione da campionare) che viene mantenuta costante da un buffer, che oltre ad isolare il circuito di condizionamento fa si che il condensatore non si scarichi, in quanto la resistenza di ingresso di un inseguitore è teoricamente infinita. L’inserzione di un sample/hold su ogni canale di ingresso analogico, garantisce una coerenza temporale. Se questa coerenza non è necessaria, si può montare un singolo sample/hold prima dell’ADC. Nel progetto il sample/hold non viene utilizzato, in quanto il segnale di uscita dal trasduttore viene assimilato come continuo, quindi che varia molto lentamente nel tempo. Il multiplexer analogico viene utilizzato se la scheda di acquisizione è composta da più canali di ingresso analogico. Esso serve a selezionare attraverso i selettori, il canale da campionare. Nel progetto del sensore wireless, avendo solamente il segnale di un trasduttore da campionare, il multiplexer non viene inserito nel circuito. L’ADC (Analog to Digital Converter) convertitore analogico digitale, è un dispositivo molto importante perché è in grado di convertire una grandezza analogica (tensione) in una digitale, espressa tramite una combinazione binaria. Il numero dei bit con la quale esegue la conversione dipende dal convertitore; per esempio nel progetto è stato utilizzato l’ADC interno allo Z8, che è provvisto di 10 bit. Ogni ADC per funzionare necessita di una tensione di riferimento con il quale confrontare quella da convertire, nel progetto si utilizza la tensione di alimentazione (3.3V). Esistono molti tipi di ADC, quali flashADC, ad approssimazioni successive, ecc. … È ora possibile definire il quanto, come la minima tensione in ingresso rilevabile 2 L’ errore di quantizzazione ε è definito come l’ errore massimo che si può compiere nella conversione A/D, ed è dato da: 30 2 La conversione consiste nel confrontare quante volte il quanto è contenuto nel segnale da convertire. Quindi il risultato della conversione n è dato da: Conoscendo il valore della conversione può essere utile risalire al valore di tensione con la seguente proporzione: 2 ° In generale tutti gli ADC sono disposti di due segnali il Soc (Start of Conversion) e EoC (End of Conversion). Il segnale di start è un segnale di input per il convertitore, in quanto la conversione viene avviata dall’esterno. Per tutto il tempo in cui viene effettuata la conversione, la tensione in ingresso si deve mantenere constante, per non generare errori, ciò è garantito dal sample/hold. Il tempo in cui il componente esegue la conversione viene chiamato tempo di conversione Tc, ed è intrinseco per ogni tipo di ADC. Il segnale EoC, viene inviato dall’ADC quando il convertitore termina la conversione. Tale segnale può essere gestito comodamente in interruzione da parte del microprocessore oppure in polling. Il sistema a microprocessore serve ad eseguire tutti i controlli necessari nel sistema di acquisizione, gestione periferiche, tra cui l’ADC, elaborare i dati ricavati da esso e magari trasmetterli, oppure visualizzarli. N.B.: È consigliato anteporre un filtro passa basso di ordine abbastanza elevato, all’ADC, in quanto esso provvederà all’eliminazione dei disturbi che inquinano il segnale informativo e che potrebbero dare luogo ad una conversione non proprio veritiera. Infatti nel progetto si è utilizzato un filtro passa basso VCVS del quarto ordine. Microcontrollore Il microcontrollore è un dispositivo programmabile ad alta scala di integrazione, che infatti è costituito da un sistema a microprocessore, più diverse periferiche esterne. Il vantaggio dell’utilizzo dei microcontrollori, rispetto ai microprocessori, è costituito dal fatto che, per organizzare un sistema provvisto di varie periferiche (ADC, timer, SPI…), con un μP queste devono essere tutte inserite nel dispositivo e progettate, 31 mentre con un μC non è necessario, in quanto è tutto integrato nello stesso chip. Il microcontrollore, essendo a tutti gli effetti un sistema a microprocessore, è composto da differenti bus, tra cui address bus, control bus e data bus. Quindi è possibile definire le due tipologie fondamentali di architetture di sistemi a microprocessore, architettura Von Neumann e Harvard. L’architettura Von Neumann è costituita Architettura Von Neumann da quattro elementi fondamentali: 1. 2. 3. 4. CPU, composta da CU e ALU Memoria Input/Output Bus Tale organizzazione di un sistema a microprocessore è caratterizzata dal fatto di avere in comune un bus di comunicazione per la memoria dati e per quella programma. Questa architettura è caduta in disuso nei moderni sistemi a microprocessore, in quanto non permette prestazioni elevate, a causa della presenza di un solo bus di indirizzamento. Esempi di applicazioni: sistema con microprocessore Zilog Z80. L’architettura Harvard, anch’essa costituita dai quattro blocchi fondamentali, solamente organizzati in modo differente. Come si può notare dal grafico, la memoria dati e la memoria programma sono separate, quindi utilizzano bus differenti. La presenza di due canali di indirizzamento, consente di eseguire il caricamento di un’istruzione del programma in parallelo al caricamento di un dato dalla memoria dati. Questo parallelismo consente di avere prestazioni migliori. L’architettura Harvard è attualmente utilizzata nei moderni sistemi a microprocessore e microcontrollore. 32 Esempi di applicazionni: microcontrollori modernni (Zilog, Atmel, Freescale… …), tra cui quello utilizzato per il progetto, lo Z8, DSP ecc. … I microcontrollori possonno essere classificati in base alla dimensione del core, ciooè dalla dimensione della CPU U, 8, 16, 32 bit; chiaramentte quelli a 32 bit hannno Architettura Harvarrd prestazioni di gran lungga migliori rispetto quelli a 8 biit. Un altro parametro importante è la frequenza f di lavoro, cioè la frequenza con cui ill processore esegue le istruzioni, chiam mato clock. Si può andare da circa 18-20 MHz per micro di media fascia ad 8 bit (Z Z8, ATmega168…), fino ad arrivare a frequenze di 1 GHz, per il Freescale i.MX51. Im mportante è anche la dimensione della memoria programma, p in genere flash rom, eprom m o e2prom, che va da pochi kByte a qualche centinaia. c Anche la RAM è importantee come la ROM, in quanto il programma, per i calcoli c numerici, utilizza la RAM. In geenere si va da pochi byte e qualche kbyte. Altrra caratteristica importante di un miccrocontrollore è la quantità e la qualità delle peeriferiche integrate nel chip. Per esemppio ci sono micro di fascia media con un ADC a 10 1 bit fino ad arrivare a μC con 24 bit di d ADC. La versatilità dei microcontrrollori, si può notare dalle infinite appplicazioni possibili, da semplici controlli di inpuut/output, fino a netPC, è per questo che c tali componenti sono tra i protagonisti del meercato elettronico. Filtro Sono dei quadripoli che sellezionano i segnali in base alla loro frequenza. f Esistono due tipi di filtri, quelli passiivi e quelli attivi. I passivi, sono com mposti solamente da elementi passivi, quali resisttori, condensatori, induttori. Mentre quuelli attivi, oltre ad essere costituiti da elementi passivi, sono costituiti anche da eleementi attivi, quali amplificatori operazionali. 33 Le caratteristiche principali dei filtri sono: • • • • • Larghezza di banda Il guadagno in banda passante Le frequenze di taglio L’ordine Il roll-off La larghezza di banda di un filtro è l’intervallo di frequenze che esso riesce a trattare, più in particolare è la differenza tra le due frequenze dove si ha un’attenuazione di 3dB rispetto il centro banda. Quindi si può dire che è l’intervallo di frequenze che lascia passare (passa-basso, passa-alto e passa-banda) o che elimina (notch) del segnale in ingresso. Il valore di quanto il filtro amplifica o attenua sarà il guadagno in banda passante. Le frequenze di taglio sono quelle frequenze dove il guadagno ha un’attenuazione di 3dB rispetto la banda passante. L’ordine del filtro è dato dal numero degli elementi reattivi (capacitivi o induttivi), che non generano maglie improprie, cioè che non è possibile ricondurre ad un unico elemento. A livello analitico, l’ordine è dato dal grado del polinomio a denominatore della funzione di trasferimento del filtro preso in esame. Il roll-off è la pendenza con cui inizia a variare il guadagno del filtro, all’allontanarsi dalla banda passante. Le approssimazioni di un filtro, sono delle tecniche per progettare filtri con una risposta in frequenza il più possibile simile a quella desiderata. Ne esistono tre. 1. Quella alla Butterworth, che consente una massima piattezza in banda passante 2. Alla Bessel, che permette di ottenere delle distorsioni di fase ridotte 3. Alla Chebyschev, che si utilizza per ottenere un roll-off più elevato Nel progetto viene utilizzata l’approssimazione alla Butterworth, in quanto si vogliono avere tutte le componenti armoniche della banda passante, trattate allo stesso modo. Verrà analizzato solamente il filtro passa-basso VCVS del quarto ordine, utilizzato nel progetto. Partiamo dalla forma canonica di un passa-basso del quarto ordine 34 Q 1 2ζ In generale la configurazione VCVS ha la seguente funzione di trasferimento: 1 Dove 1 Sostituendo: Y1=R1, Y2=C2, Y3=0, Y4=R2 e Y5=C2 quindi la GVCVS(s) diventa: 1 1 1 1 1 1 1 1 Se si utilizza come metodo di progettazione, come è stato usato nel progetto, un filtro a guadagno unitario, K=1 quindi diventa: 35 1 Utilizzando l’approssimazione alla Butterworth, i due stadi del filtro hanno una ζ rispettivamente 0.924 e 0.383. Quindi successivamente, conoscendo i dati necessari è possibile calcolare i valori dei componenti, utilizzando le relazioni precedenti. SPI Serial Peripheral Interface è un sistema di comunicazione tra un microcontrollore ed un circuito integrato o tra due microcontrollori. Questo sistema è seriale, in quanto viene trasmesso un bit alla volta sulla stessa linea, ed è sincrono, vista la presenza di un segnale di clock che coordina la trasmissione/ricezione e determina la velocità di trasmissione. La SPI è provvista di quattro linee di comunicazione: 1. SCLK, è il clock generato dal master 2. MOSI, Master Out Slave In, è la linea con cui il master trasmette 3. MISO, Master In Slave Out, è la linea con cui il master riceve 4. nSS, è il chip select, attivato dal master verso lo slave con cui comunica La SPI è anche full-duplex, in quanto è possibile ricevere e trasmettere contemporaneamente. Questo tipo di comunicazione è molto usato nei moderni apparati elettronici. UART La UART, Universal Asynchronous Receiver-Transmitter è la periferica interna al microprocessore, che in genere viene connessa alla RS-232 esterna, quindi, questo sistema di comunicazione è asincrono, non è presente alcun tipo di clock. RS-232 La RS-232 (Recommended Standard 232) è uno standard di comunicazione seriale a bassa velocità. È un tipo di comunicazione seriale asincrono bipolare. La seriale 232 può essere utilizzata in modalità full-duplex o half-duplex, ma sempre in modo asincrono. Il frame trasmesso è composto da singoli byte, con in più l’aggiunta di un 36 bit di start, codificato con lo zero logico e di uno o due bit di stop, codificati con l’uno logico (queste codifiche sono quelle della UART, alle quali corrisponderanno le codifiche RS232 successivamente spiegate). È possibile anche aggiungere un bit di controllo di parità, raramente utilizzato. Tipicamente la lunghezza del dato trasmesso è di un byte, ma può essere anche nove bit, al massimo 10 bit. I livelli elettrici della comunicazione sono i seguenti: ¾ lo zero logico viene codificato con una tensione che va da 3 a 15 V rispetto massa ¾ l’uno logico viene codificato con una tensione che va da -3 a -15 V rispetto massa. Dall’immagine si può notare il segnale uscente da una periferica UART alimentata a 5V, e la codifica eseguita da un transceiver da ±12V. Si può notare il bit di start, il dato “j”, composto da 8 bit ed un bit di stop. Questo tipo di comunicazione sta cadendo in disuso nei calcolatori a causa della ridotta velocità (nel progetto 57600 baud/s) ma rimane molto usato nei sistemi embedded. GFSK La Gaussian Frequency Shift Keying è una modulazione digitale su portante analogica (sinusoidale). Nella GFSK ai bit informativi vengono attribuiti delle variazioni della frequenza della portante, e non come nella FSK dove ai singoli bit vengono attribuiti due livelli di frequenze. Nella GFSK per esempio, la presenza di un 1 logico, incrementa di un certo Δf la frequenza della portante, mentre con uno 0 logico la decrementa di una certa quantità. L’utilizzo della GFSK consente di avere una banda ridotta rispetto la FSK. DSSS La Direct Sequence Spread Sprectrum è una tecnica di spreading, cioè il procedimento con cui lo spettro di un segnale che contiene informazione viene espanso all’interno di una banda molto più grande di quella del segnale informativo. 37 Questa espansione viene eseguita moltiplicando un segnale digitale, lo PseudoNoise Code, che nel modulo CYWM6935 è composto da 8 byte, per un segnale di spreading opportuno. Espandendo il segnale su una manda maggiore, fa si che che la potenza di tale segnale viene distribuita su tutta la banda. In questo modo la potenza per unità di banda diventa molto piccola, simile a quella del rumore. In ricezione per riottenere il segnale informativo è necessario moltiplicare il segnale ricevuto per lo stesso PN Code. L’utilizzo dell’espansione di spettro consente di trattare tutti i segnali trasmessi sulle stesse frequenze come rumore bianco e di avere una consistente protezione dalle interferenze. L’utilizzo di un PN code per generare e ricavare segnali informativi, consente di condividere le stesse frequenze con più apparati, per esempio nel progetto, avendo a disposizione di un PN Code di 8 byte, teoricamente potrebbero trasmettere contemporaneamente nello stesso canale radio ° 2 ° 2 18446744073709551616 trasmettitori. In quanto 8 byte danno 2 combinazioni possibili. È intuitivo quindi che, avere a disposizione 80 canali radio e un PN Code da 8 byte, consente la trasmissione ad un numero esorbitante di apparati. È questa versatilità che consente ai moduli radio l’applicazione ai più ambiziosi dispositivi. 12.Bibliografia Software utilizzati: • • • • CadSoft Eagle 4.13 OrCAD 10.5 ZDSII Z8Encore! 4.11.0 Hyper Terminal Private Edition Libri utilizzati: • Telecomunicazioni B di Onelio Bertazioli, Zanichelli • L’Elettronica Applicazioni di E. Ambrosini e I. Perlasca, Tramontana Siti web utilizzati: • Wikipedia 38 Un saaluto a tutto l’I.T.I.S. Francesco Renzini 39