• Non ci sono risultati.

Capitolo 4 Progetto hardware e firmware.

N/A
N/A
Protected

Academic year: 2021

Condividi "Capitolo 4 Progetto hardware e firmware."

Copied!
27
0
0

Testo completo

(1)

Capitolo 4

Progetto hardware e firmware.

4.1

Hardware e circuiti ausiliari.

Il core del dosimetro per neutroni è la fiala contenente l’emulsione surriscaldata; tuttavia l’innovativo sistema ottico per la rivelazione del numero di bolle presenti nella fiala necessita di un’opportuna circuiteria elettronica, che provveda non solo al pilotaggio dei componenti ottici, ma anche all’elaborazione e alla gestione dei dati acquisiti, nonché al controllo dell’interfaccia utente. I requisiti che, secondo le raccomandazioni dell’ICRP, [1], i dosimetri attivi devono possedere sono quasi interamente riconducibili al sistema elettronico ausiliario. In particolare si richiede:

• compattezza: il dosimetro deve essere facilmente manipolabile e non deve superare i 200 g di peso;

• autonomia sufficiente a coprire in modo affidabile un intero turno di lavoro (almeno 8 ore); • affidabilità e sicurezza: il dispositivo deve fornire una lettura corretta della dose, tenendo conto anche di fattori esterni (temperatura, urti..). Deve, in particolare, essere dotato anche di un sistema di allarme per la segnalazione di dosi superiori a quelle consentite;

• accessibilità: è necessario prevedere la presenza di un’interfaccia utente che garantisca una lettura diretta e continuativa;

• connettività: è richiesta la presenza di interfacce informatiche per l’integrazione nei sistemi di controllo degli accessi alle zone controllate e sorvegliate, [20].

Di seguito sono descritte le soluzioni appropriate per ciascuno di questi requisiti. Il circuito, il cui intero schema elettrico è riportato in Appendice A, presenta quattro unità funzionali, cromaticamente distinte nello schema di Figura 56.

(2)

Figura 56. Schema del dispositivo, le unità funzionali sono distinte cromaticamente.

Innanzitutto, per rispondere alla specifica di compattezza, il circuito è stato realizzato in tre parti, da disporre opportunamente all’interno del dosimetro, per una ripartizione ottimale dello spazio disponibile. In Figura 57 si riporta un disegno della versione finale del dosimetro, dove sono evidenziati gli spazi destinati alla circuiteria elettronica.

(3)

La realizzazione del prototipo nelle sue tre parti è descritto in dettaglio nel Capitolo 5.

Per quanto concerne l’autonomia del dispositivo, essa è affidata ad una batteria ricaricabile a polimeri di litio di capacità 430 mAh. Il consumo complessivo del dispositivo, di cui si riporta il dettaglio in Appendice B, si stima in modo conservativo sia pari a 3.52 mA, è dunque garantita un’autonomia del dispositivo di oltre 70 ore.

L’integrato MAX1811 provvede inoltre alla ricarica della batteria durante le ore non lavorative, in cui il dosimetro è alloggiato in un’apposita rastrelliera, [25] ove viene attuata la ricompressione meccanica delle bolle, unitamente all’acquisizione dei dati in un personal computer e alla ricarica della batteria.

Quest’ultima operazione è particolarmente delicata, poiché, se una pila a Li-Ion è scaricata sotto una certa tensione, possono verificarsi danni irreversibili. Di conseguenza è necessario dotare il dispositivo di un integrato che spenga il sistema quando la batteria viene scaricata sotto la soglia predefinita e ne controlli la carica massima, poiché l’immagazzinamento di una carica troppo elevata comporta una perdita di carica su lunghi periodi di utilizzo.

Per chiarire tali aspetti, si riporta, nella sezione seguente, una panoramica sul funzionamento degli accumulatori a polimeri di litio e sulle modalità di carica.

4.1.1 Batterie a polimeri di litio: procedure di carica e scarica.

Le batterie ricaricabili note come accumulatori litio-polimero (Li-Poly o LiPo) sono un’evoluzione delle batterie a ioni-litio. La principale caratteristica che li differenzia è che l'elettrolita in sale di litio non è contenuto in un solvente organico, come accade negli accumulatori a ioni-litio, ma si trova in un composito di polimero solido, tipicamente poliacrilonitrile. Il polimero solido, a differenza del solvente organico, non è infiammabile e dunque questi accumulatori sono meno soggetti a esplosione se esposti alle alte temperature, o alla luce diretta del sole.

L’utilizzo, come separatore, di un polimero permeabile agli ioni, anzichè un elettrolita liquido, introduce notevoli vantaggi. L'elettrolita polimerizzato, infatti, non solo non è infiammabile, ma esercita intrinsecamente una tenuta tra anodo e catodo, consentendo la realizzazione di batterie molto sottili, senza la necessità di un contenitore rigido che comprima reciprocamente gli elettrodi ed il separatore.

I vantaggi nell’impiego di batterie a polimeri di litio risiedono nell’alta densità energetica (Figura 58), rispetto agli altri tipi di batterie disponibili sul mercato e nell’assenza di effetto memoria: la capacità di carica non è inficiata dal numero di cicli di carica e scarica

(4)

Figura 58. Confronto della densità energetica delle batterie di uso comune.

L’accumulatore si compone di tre strati:

• Anodo: costituito da una lamina ultra sottile di litio o ossido misto di litio e cobalto;

• Membrana polimerica di separazione tra gli elettrodi, permeabile agli ioni, che funge da elettrolita;

• Catodo, realizzato in ossido di vanadio, magnesio o cobalto, unito ad un elettrolita polimerico e a carbonio per formare un composto plastico [Gold Peak Industries Ltd., Lithium Ion technical handbook].

La reazione globale di cella consiste nella migrazione di ioni litio tra i due elettrodi. Il processo di scarica avviene in senso opposto, come si vede nella Figura 59. Queste batterie, prima della messa in opera, sono completamente scariche; è necessario quindi imporre dall'esterno un potenziale adeguato per trasferire gli ioni Litio da un comparto (es. LiCoO2) all'altro (grafite) prima di poter

(5)

Figura 59. Schematizzazione del processo di carica (sinistra) e scarica (destra).

Questi dispositivi, come già accennato, possono facilmente perdere le loro caratteristiche quando sia il potenziale di scarica sia quello di carica non viene attentamente controllato. Il processo di generazione della corrente si basa su una membrana polimetrica che permette il passaggio di ioni positivi Li+ dal catodo negativo all’anodo positivo, secondo la seguente reazione di ossidoriduzione (valida per il LiCoO2):

Li1/2CO2 + Li1/2C6  C6 + LiCoO2

Le batterie LiPo hanno una tensione di circuito aperto nominale di 3.6 V e una tensione di ricarica tipica di 4.2V. La procedura di ricarica è a tensione costante con limite di corrente. Questo significa caricare con corrente costante finché una tensione di 4.2 V viene raggiunta dalla pila e continuare con tensione costante finché la corrente diventa nulla o quasi. (Tipicamente la carica viene terminata al 7% della corrente iniziale di carica). Tale metodo di carica, illustrato in Figura 60, è controllato, nel presente dispositivo, dall’apposito integrato MAX1811.

(6)

La capacità di carica di una batteria LiPo è profondamente affetta dalla temperatura e dal livello di carica che viene raggiunto. La seguente Tabella mostra la perdita di carica permanente che c'è con immagazzinamento ad un livello di carica e una temperatura dati, si può osservare come essa sia proporzionale alla percentuale di carica immagazzinata.

Tabella 8. Perdita Permanente di Capacità contro Condizioni di Immagazzinamento Temperatura di deposito 40% di Carica 100% di Carica

0 °C (32 °F) 2% di perdita dopo 1 anno 6% di perdita dopo 1 anno 25 °C (77 °F) 4% di perdita dopo 1 anno 20% di perdita dopo 1 anno 40 °C (104 °F) 15% di perdita dopo 1 anno 35% di perdita dopo 1 anno 60 °C (140 °F) 25% di perdita dopo 1 anno 40% di perdita dopo 3 mesi

La capacità di carica è anche fortemente affetta dai cicli di lavoro, infatti, sebbene le batterie LiPo siano prive di memoria in termini di prestazioni, esse presentano quella che è nota come “memoria digitale”. Infatti si riscontra una mancata calibrazione necessaria alla sincronizzazione tra la misura di capacità e lo stato di carica effettivo, tale fenomeno è principalmente dovuto a piccoli processi di scarica, immediatamente seguiti da scarica successiva. Le batterie LiPo hanno tipicamente un ciclo di vita di circa 3 anni e il loro invecchiamento (Figura 61), consistente nella perdita di capacità, è causato generalmente dall’aumento della resistenza interna alla cella a seguito di fenomeni di ossidazione.

Figura 61. Diminuzione della capacità di una batteria LiPo in funzione del numero di cicli.

Nel presente dispositivo la corrente di carica è fornita da una porta USB e opportunamente gestita dall’integrato MAX1811, che vi si interfaccia. L’integrato effettua la carica con una tensione stabilizzata di 4.1 o 4.2 V (accuratezza dello 0.5%), al fine massimizzare la capacità di carica, poiché una tensione di carica maggiore aumenta sì la capacità della batteria, ma ne riduce la vita.

(7)

L’integrato è dotato di uno stadio a transistori a effetto di campo in grado di fornire sia 100 che 500 mA di corrente, a seconda che l’host USB sia alimentato o meno. Le fasi di carica sono ciclicamente controllate, infatti, una volta impostata la tensione di carica, sono effettuati due controlli simultanei sulla corrente assorbita e sulla temperatura, le cui uscite pilotano un regolatore di corrente lineare. Il dispositivo (Figura 62, riquadro rosso) è inoltre dotato di un pin di uscita (CHG), il cui stato indica se la ricarica sta avvenendo in corrente o in tensione, permettendo in tal modo di monitorare dall’esterno la procedura di carica.

Low Output Battery

C11 0.1u C12 10u U36 max1836 2 1 6 5 3 4 GND FB OUT /SHDN IN LX Vbatt

2.9V voltage where the low-battery detector output(LBO) goes high impedance.

D8 LED 2 1 R13 249k D10 1.5KE10A SELVhi -->4.2 V battery SELIlow --> corrente di carica 100 mA R1 100k R3 10k U34 max1811 2 1 4 6 7 8 3 5 SELI SELV IN GND EN /CHG GND BATT R12 604k R4 316 Vbus FB1 L2 22uH U35 MAX1797 1 2 3 5 6 7 8 4 LBI FB LBO GND LX BAT OUT T SHDN JP1 usb_con 1 2 3 4 5 6 Vbus D-D+ GND GND1 GND2 C9 47u C7 2.2u C14 10n C13 150u C8 47u Q1 N DGS 1 3 2 VCC L3 22uH Vbatt Li-Ion batt 4.2V 5 V /SHDN non è usato R2 1.3M 5 V FB to GND = OUT 5V Low Output Battery

C11 0.1u C12 10u U36 max1836 2 1 6 5 3 4 GND FB OUT /SHDN IN LX Vbatt

2.9V voltage where the low-battery detector output(LBO) goes high impedance.

D8 LED 2 1 R13 249k D10 1.5KE10A SELVhi -->4.2 V battery SELIlow --> corrente di carica 100 mA R1 100k R3 10k U34 max1811 2 1 4 6 7 8 3 5 SELI SELV IN GND EN /CHG GND BATT R12 604k R4 316 Vbus FB1 L2 22uH U35 MAX1797 1 2 3 5 6 7 8 4 LBI FB LBO GND LX BAT OUT T SHDN JP1 usb_con 1 2 3 4 5 6 Vbus D-D+ GND GND1 GND2 C9 47u C7 2.2u C14 10n C13 150u C8 47u Q1 N DGS 1 3 2 VCC L3 22uH Vbatt Li-Ion batt 4.2V 5 V /SHDN non è usato R2 1.3M 5 V FB to GND = OUT 5V

Figura 62. Schema circuitale: integrati deputati alla gestione della tensione di alimentazione.

4.1.2 Circuito di alimentazione.

In Figura 62 è riportato l’intero circuito dedicato alla gestione dell’alimentazione del dispositivo, in particolare il MAX1811 (Figura 62, riquadro rosso) utilizza la corrente fornita da un

host USB per caricare una batteria LiPo; la tensione della batteria è successivamente stabilizzata a

5 V dal MAX1747 e a 3.3 V dal MAX8137. Il circuito prevede anche l’auto spegnimento in caso di batteria scarica e un LED per il monitoraggio della carica. Il livello di tensione 5 V si è reso necessario per aumentare la dinamica dello stadio di acquisizione. Il MAX1747 è un convertitore DC-DC step-up che regola la tensione VBATT a 5 V ed è in grado di fornire una corrente di 450 mA;

esso è in grado di disconnettere la batteria qualora questa sia scarica e limitarne la corrente al di sotto dei 2 µA. Il livello di carica della batteria, al di sotto del quale si attua l’auto-spegnimento, è impostabile mediante il dimensionamento di un partitore resistivo tra i pin VBATT e GND, il cui

valore è posto in ingresso al pin LBI. La connessione dei pin LBO (low-battery output) e SHDN (shutdown) consente all’integrato di disconnettere il carico se la batteria è scarica. Come accennato precedentemente, le batterie LiPo hanno un’impedenza diversa da zero e dipendente dal numero di cicli di carica. Quando dunque il MAX1747 disconnette la batteria scarica dal carico, non risente

(8)

più della caduta di tensione ai capi dell’impedenza interna della batteria, misurando dunque una tensione ai capi della batteria superiore di quella effettiva e conseguentemente la riaccende. Il MOS a canale n al pin LBO elimina tale oscillazione, infatti, quando la tensione di batteria è inferiore alla soglia di batteria scarica, LBO disconnette il carico e pone un valore alto su SHDN, accendendo il MOS e dunque stabilizzando la tensione su LBO.

4.1.3 Generazione e ricezione del segnale luminoso.

Come anticipato nel Capitolo 3, un requisito fondamentale affinché la potenza luminosa, e quindi l’irraggiamento dei 3 LED, sia uniforme è quello che nei tre dispositivi scorra la stessa corrente. A tale scopo è stato utilizzato un driver (MAX6967 – Maxim, Figura 63) alimentato dal microcontrollore; esso è in grado di fornire, su 10 pin, una corrente costante in uscita da 1.25 a 20 mA, oppure di valor medio arbitrario, che l’utente può selezionare tramite la modulazione PWM della forma d’onda in uscita.

U38 led 1 2 . CS1 . . M IS O SCK VCC U40 led 1 2 VCC U32 MAX6967 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 S C L K C S P 0 P 1 P 2 P 3 P 4 G N D P 5 P6 P7 P8 P9 DOU T /O S C D IN V + C5 0.1u U39 led 1 2 M O S I .

(9)

La comunicazione tra il microcontrollore e il MAX6967 avviene tramite protocollo seriale; la modalità di scambio dati è affrontata nella sezione dedicata al firmware. In Figura 64 si riporta una schematizzazione delle porte del driver.

Figura 64. Schemtizzazione delle porte di uscita del MAX6967.

Le porte, al momento dell’accensione, sono poste in alta impedenza, cosicché LED o carichi ad esse connesse non assorbano corrente; successivamente, a seconda dei valori contenuti nei registri di configurazione, possono fungere da generatori di corrente.

Verifiche sperimentali non hanno, inoltre, dimostrato alcuna influenza della dissipazione termica del circuito (dovuta in maggior parte ai led, per vicinanza alla fiala e quantità di corrente assorbita) su una eventuale variazione termica interna alla fiala. Si è dunque ritenuto possibile attuare un’illuminazione pulsata della fiala, acquisendo cioè il segnale luminoso a intervalli di tempo discreti; senza che ciò possa influire sullo stato termodinamico dell’emulsione sensibile.

Il front-end (Figura 65) deputato al trattamento del segnale rivelato dai fotodiodi è costituito da un amplificatore (OPA2340 - BurrBrown), in configurazione transresistiva (Figura 66), e da un convertitore analogico digitale (ADS1100 - BurrBrown) comunicante, tramite protocollo seriale I2C, con il microcontrollore.

(10)

.

C16 0.1u

a 2.9V LBO va in HZ --> SHDN va alto, il mos conduce e la Von torna a 3.3 V (partitore con la R del mos =1.3MOhm)

. Q2 MOSFET P DSG 1 3 2 . scl . D13 LTR-516 1 2 U37 opa2340 2 1 4 5 6 7 3 8 I_in1 Out1 VCC-NI_in2I_in2 Out2 NI_in1 VCC+ pw_ampl sda pw_ampl D11 LTR-516 1 2 R7 1k

serial data line . pw_ctl C1 1n 5 V C17 0.1u 5 V serial clock line U38 ads1100 2 1 6 5 3 GND 4 VIN+ VIN-VDD SCL SDA R6 1M D12 LTR-516 1 2

Figura 65. Componenti circuitali costituenti gli stadi di front-end analogico e conversione analogico-digitale.

Per risolvere il compromesso tra la massimizzazione della dinamica dell’amplificatore operazionale (alimentato per questo alla tensione stabilizzata di 5 V) e il ridimensionamento di dissipazione energetica, è stato introdotto un MOS a canale P, pilotato dal microcontrollore. In particolare, se il pin pw_ctl-PD3 dell’ATmega8, connesso al gate del transistore, è a livello alto, l’amplificatore, non alimentato, è spento ( VGS = 0 V; PMOS in zona interdizione:|VGS| < |VT|). Al contrario, un livello basso al pin pw_ctl, portando il PMOS in conduzione, alimenterà l’OPA2340. L’uso delle R7 e C16 è volto a limitare l’assorbimento di corrente da parte del PMOS all’accensione. La scelta del PMOS IRMLM6401 è stata effettuata comparando la potenza massima da esso tollerabile con la Potenza Statica mediamente dissipata dall’amplificatore. La Potenza Statica si ottiene dal prodotto della resistenza di canale in zona triodo (0.05 Ω) per il quadrato della corrente massima che lo attraversa. Tale corrente è pari a quella assorbita dall’amplificatore di 0.05 µA. La Potenza Dissipata Statica Media è dunque: PTOT=rdson*ITOT2 = 0.05 Ω *0.025 µA = 2.5 nW. Bisogna

confrontare il valore così ottenuto con la massima potenza dissipabile dal PMOS; essa è limitata dalla massima temperatura di giunzione accettabile (TJMAX) e dall’entità dello scambio termico con

l’ambiente esterno. Dal Data-Sheet del componente si riporta il valore di resistenza termica (inerzia al trasferimento di calore) tra la giunzione e l’ambiente: ΘJA = (ΘJC + ΘCA) = 72 °C/W. Vale dunque

la relazione:

(

max

)

max (150 25) 1,73 72 J amb JA T T C P W C W − − ° = = = ° Θ (3.3)

(11)

Tale valore è sensibilmente superiore a quello di Potenza Dissipata e dunque il PMOS può essere utilmente impiegato come interruttore per l’accensione e lo spegnimento dell’amplificatore senza la necessità dell’ulteriore introduzione di dissipatori esterni.

Figura 66. Generica caratteristica tensione-corrente di un fotodiodo.

Come è possibile osservare in Figura 67, a illuminazione nulla,

I

FD è assente e la caratteristica tensione-corrente del fotodiodo si riduce a quella di un diodo standard. Aumentando invece la luce incidente si riscontra un progressivo aumento della corrente inversa attraverso la giunzione ed una tensione inversa ai suoi capi.

La corrente inversa IFD, generalmente dell’ordine dei nA, necessita evidentemente di

un’amplificazione di tipo transresistivo, che presenti in uscita una tensione proporzionale alla corrente d’ingresso (IFD). -+ 3 4 6 7 2 Vout VCC C 1n

+

R 1M D13 LTR-516 1 2

-Ifd

Figura 67. Amplificatore operazionale in configurazione transresistiva.

In tali condizioni, la tensione d’uscita è nulla in assenza di illuminazione; risulterà in tal modo nullo anche qualsiasi possibile errore di offset della risposta.

(12)

La scelta di una resistenza di reazione (R) di valore elevato (1 MΩ), oltre ad aumentare il guadagno complessivo del sistema, concorre alla riduzione del rumore in uscita. Infatti, sebbene il rumore termico sia proporzionale al valore di R secondo la seguente relazione:

4

out

noise

=

kTBR

k = costante di Boltzmann 1.38*10–23 J/K; T = temperatura (°K); B = banda (Hz); R = resistenza (Ω)

Il segnale in uscita è pari a:

1 out FD R sig I RCjω = + Il rapporto segnale-rumore out

out

sig

noise migliora dunque proporzionalmente a R.

Il segnale presente in uscita all’amplificatore è successivamente discretizzato da un ADC di tipo Delta-Sigma a 14 bit e 32 SPS, che permette una risoluzione di 0.3 mV. Questo ADC è stato scelto poiché offre la risoluzione necessaria a fronte del costo ridotto.

Vin Σ Passa basso -+ DAC 1 bit clock Filtro Digitale -+ Vin Σ Passa basso -+ DAC 1 bit clock Filtro Digitale -+ Vref

Figura 68. Architettura semplificata di un ADC delta/sigma.

Il principio di funzionamento di un ADC delta/sigma, schematizzato in Figura 68, consiste nel garantire l’eguaglianza tra la porzione di banda del segnale d’ingresso compresa nel filtro passa basso e la sequenza in uscita. Il segnale d’uscita del convertitore è costituito da una serie di impulsi di ampiezza e durata costante. L’intervallo tra due impulsi consecutivi è invece variabile con proporzionalità inversa al segnale analogico in ingresso. Operando una media della sequenza di impulsi attraverso un filtro digitale, che rimuove anche il rumore di quantizzazione al di fuori della banda di interesse, è possibile risalire a Vin.

(13)

4.1.4 Interfaccia utente.

Un display LCD a 8x2 caratteri è l’interfaccia grafica del dispositivo; su di esso sarà possibile visualizzare continuamente la dose assorbita dall’utente, nonché altre informazioni a richiesta, dettagliate nel seguito. Il display selezionato (PC0802 - Powertip) è ad ingresso digitale. Tale scelta, sebbene implichi la necessità di un driver di pilotaggio, risulta sostanzialmente migliore di quella di un display ad ingresso analogico, assicurando concordanza totale tra i dati comunicati al pc host e quelli visualizzati (altrimenti non garantita) e beneficia dell’accurata conversione Analogico/Digitale dell’ADS1100.

Una tastiera, composta da sei tasti di scorrimento ed uno per lo spegnimento, costituisce l’interfaccia utente e permette di gestire lo scorrimento e l’uscita dal menu dei comandi. Una delle funzioni gestite dal microcontrollore, e controllabile dall’utente, è l’acquisizione dei dati su un personal computer.

4.1.5 Comunicazione USB.

Il trasferimento hardware dei dati avviene invece tramite l’FT2322BM (FTDIchip), che provvede alla gestione del complesso protocollo USB. Esso infatti rende trasparente la comunicazione di basso livello (endpoint) all’host, che vede soltanto un buffer FIFO e una Pipe bidirezionale, dotata di due flag indicanti quando il buffer in trasmissione è vuoto e quello in ricezione pieno. Tale modulo, compatibile con gli standard USB 1.1 e USB 2.0, gestisce completamente la periferica UART (Universal Asincronous Serial Transmitter) del microcontrollore e permette di selezionare le seguenti specifiche del pacchetto di comunicazione:

• 7 o 8 bit per i dati; • 1 o 2 bit di stop;

• Bit di parità in modalità: pari, dispari, space38, mark o assente.

La gestione software dell’integrato è facilitata dai “Virtual COM Port Drivers” (VCP), disponibili per tutte le attuali piattaforme di Windows, MAC e Linux (superiore a 2.40); essi consentono il trattamento della porta USB come fosse una porta COM aggiuntiva. La versione alternativa “D2XX Direct Drivers” permette, invece, all’utente di accedere all’interfaccia USB tramite librerie dedicate.

(14)

C10 33n R10 1k5 Vbus D9 LED 2 1 Vbus . R8 27 Vbus Vbus . R9 27 . C15 0.1u R5 470 U29 quartz 6 M1 2 . R11 220 U27 f t232bm 6 8 7 25 24 23 22 21 20 19 18 16 12 11 14 15 10 27 4 5 2 9 9 17 1 3 3 0 3 26 28 32 1 2 31 3V3OUT USBDM USBDP TXD RXD RTS# CTS# DTR# DSR# DCD# RI# TXDEN TXLED# RXLED# PWRCTL PWREN# SLEEP# XTIN RESET# RSTOUT# A G N D G N D G N D V C C IO A V C C V C C V C C XTOUT EECS EESK EEDATA TEST

Figura 69. Modulo FTDI FT232BM per la comunicazione dati mediante USB.

È di seguito illustrata la funzionalità dei pin d’interesse:

• Pin di alimentazione: VCC(n°3 e n°26), connessi al contatto di alimentazione (1) del connettore USB. L’introduzione di un anellino di ferrite, posto in serie all’alimentazione, con una capacità di 10 nF per il disaccoppiamento, è volta ad eliminare il rumore ad alta frequenza del bus di alimentazione, in conformità con la normativa EMI3922.

• VCCIO (n°13): analogo a VCC per logiche CMOS a 5 V. Il pin è altrimenti (logica a 3.3 V) connesso all’alimentazione (del bus USB o esterna).

• AVCC: alimentazione del moltiplicatore 8x interno. Quest’ultimo è sincronizzato con l’oscillatore esterno a 6 MHz e genera un clock a 12 MHz di riferimento per il blocco gestore del protocollo USB, il buffer FIFO della UART e la SIE (Serial Interface Engine).Sincronizza anche il generatore di Baud Rate, generando una frequenza di 8 MHz. • 3V3OUT: provvede al disaccoppiamento del regolatore Low Drop Out a 3.3 V con la terra.

Può, all’occorrenza, fornire una corrente inferiore a 5 mA per alimentare logiche a 3.3 V esterne.

Pin d’interfaccia USB:

22 Le schermature EMI sono appositamente progettate e realizzate al fine di evitare che il campo elettromagnetico prodotto

(15)

• USBDM (n°8): pin della componente negativa del segnale;

• USBDP (n°7): pin della componente positiva del segnale. La resistenza di pull-up di 1.5 kΩ, connessa a RSTOUT#, soddisfa la necessità di dichiararsi all’host come dispositivo di tipo High Speed. Una periferica USB comunica infatti la propria velocità all’host inserendo un pull-up a 3.3 V sui contatti D+ o D- , rispettivamente per periferiche di tipo Full e Low Speed (Figura 70). Le resistenze di pull-up da 1.5 K sono usate anche dall’host stesso per rilevare l’inserimento di una periferica, che in loro assenza non è riconosciuta.

Figura 70. Hardware di periferiche High e Low Speed.

Le periferiche High Speed si connettono inizialmente in modo analogo alle Full Speed, successivamente inviano un segnale ad alta velocità in fase di reset e, se l’hub la supporta, stabiliscono una comunicazione di tipo High Speed. Attraverso i due pin USDP e USDM avviene la comunicazione differenziale. Nello specifico, un 1 logico è trasmesso ponendo D+ a 2.8 V con un pull-up di 1.5 K verso GND e D- sotto i 0.3 V con 1.5 K a 3.6 V. Specularmente, per uno zero si hanno 2.8 V su D- e meno di 0.3V su D+; le resistenze di pull-up sono le stesse.

• RSTOUT#: è propriamente il pin d’uscita del generatore interno di RESET. Quest’ultimo è pilotato dal pin 3V3OUT e, in fase di reset, attiva RSTOUT,, portandolo ad un livello basso. Pin dedicati al circuito oscillatore:

• XTIN; • XTOUT.

La comunicazione USB è di tipo seriale ed asincrono. I dati, infatti, sono trasmessi senza un segnale di sincronizzazione intrinseco. Tuttavia, sia il trasmettitore che il ricevitore sono

(16)

dotati di un clock locale per l’interpretazione dei dati. A tale scopo viene introdotto il circuito in Figura 71.

Figura 71. Circuito di generazione del segnale di clock a 6 MHz.

XTIN e XTOUT sono rispettivamente ingresso e uscita di un invertitore CMOS a stadio singolo, che può essere sfruttato per realizzare un oscillatore aggiungendo esternamente all’integrato i componenti visibili nello schema, tra cui un quarzo, utilizzato per controllare la reazione positiva con cui si generano le oscillazioni.

Pin di comunicazione con la UART:

• RXD: pin di ricezione dei dati in modalità asincrona; • TXD: pin di trasmissione dei dati in modalità asincrona.

Per ciascun pin è previsto un buffer. I dati ricevuti sono continuamente memorizzati dal registro di ricezione al buffer RX (348 byte) e successivamente rimossi su comando del SIE (Serial Interface Engine – deputata alla conversione tra comunicazione seriale e parallela) quando l’hub USB del dispositivo a monte li richiede. I dati da in uscita, al contrario, transitano dal registro di trasmissione al buffer TX (128 byte) sotto il monitoraggio del controllore UART FIFO.

4.2 Funzionalità del dispositivo e logica di funzionamento.

4.2.1 Software e interfaccia grafica.

L’interfaccia grafica e il programma software di acquisizione dei dati sul PC sono stati realizzati con LabViewTM. LabView (versione 8.2) è un ambiente di programmazione grafica che viene

generalmente utilizzato per il controllo di processi automatizzati, in quanto ben si adatta all’acquisizione di dati provenienti da molteplici periferiche, grazie ai numerosi moduli specifici già implementati che possiede. Il programma è anche pensato per la creazione di interfacce grafiche a vari livelli di complessità, che risultino comunque di immediata comprensione per l’utente. Esso presenta due finestre

(17)

di lavoro: il Front Panel ed il Block Diagram (Figura 72). Sul Front Panel è possibile costruire il programma: si tratta di uno strumento virtuale (VI – Virtual Instruments) costituito da controlli (manopole, pulsanti, selettori..), indicatori (grafici Led e altri display) e finestre per l’inserimento di stringhe alfanumeriche. Tale strumento permette di controllare in tempo reale i dispositivi collegati al PC e replicarne le funzioni, implementate dai pulsanti dei rispettivi pannelli di controllo.

Figura 72. Schermata del programma LabView: a destra un esempio di Front Panel, a sinistra di Block Diagram.

Creata l’interfaccia utente, è possibile poi aggiungere il codice sul Block Diagram utilizzando VI e strutture che controllino gli oggetti del pannello frontale.

Procedendo dal livello di interazione con l’utente fino alla scrittura dei dati su un file, il primo stadio di controllo è l’interfaccia grafica (Figura 73).

(18)

Per poter utilizzare il programma realizzato non è necessario aver installato il programma LabView sul computer di utilizzo, infatti, grazie ad un add-on di LabView (Application Builder) che permette al programmatore di realizzare applicazioni stand alone che possono essere distribuite agli utilizzatori come programmi indipendenti. Per poter funzionare richiedono soltanto il componente “LabView Run-time Engine”, un applicativo che può essere scaricato gratuitamente dal sito della National Instruments o distribuito insieme all’applicazione stessa. Application Builder consente inoltre di creare:

• File di installazione (installer): pacchetti contenenti tutti i file necessari per il corretto funzionamento dell’applicazione principale;

• Librerie scritte in codice LabView che possono essere distribuite e interfacciate con altri linguaggi di programmazione quali LabWindows/CVI, Microsoft Visual C++, Microsoft Visual Basic, etc.

• File sorgenti che possono essere condivisi tra programmatori LabView con particolari protezioni (eliminazione del Block Diagram, apertura del file con password, etc.);

• File in formato compresso (ZIP) utili per distribuire materiale di grandi dimensioni.

Il Software sviluppato prevede due modalità operative: una in cui il dispositivo è connesso alla porta USB e un’altra indipendente dalla connessione del dosimetro. In quest’utlimo caso, l’unica opzione attiva è quella di ‘Apertura dei File’ e visualizzazione degli stessi all’interno della schermata del programma. Quando invece il dispositivo è connesso, la procedura implementata, descritta più avanti in Figura 74, prevede la comunicazione tra i due nodi della rete connessione. Affinché i dati ricevuti e trasmessi siano comprensibili al destinatario dell’informazione, la comunicazione tra il Personal Computer e il microcontrollore è stata opportunamente codificata. Il formato del pacchetto dei dati è infatti il seguente:

Figura 74. Formato del pacchetto dati.

Di seguito è illustrato il significato di ciascun frame, in ordine di analisi in ricezione:

• Il byte di STOP (0x0A, codifica ascii “NL – new line”) è quello che indica la fine del pacchetto inviato. Una volta rilevato, il pacchetto ricevuto è prelevato dal buffer dedicato e può iniziare la sua decodifica o memorizzazione.

(19)

• Il byte STATO è normalmente settato al valore 0x0B (cod. ascii “VT – vertical tab”); qualora si fosse verificato un errore nella ricezione da parte del PC, esso inizializzerà STATO a un valore diverso (0x0F) e il microcontrollore provvederà, di conseguenza, a inviare nuovamente l’ultimo pacchetto.

• Il byte di TIPO consente al microcontrollore di individuare il contenuto informativo del campo DATA, a cui corrisponde una specifica azione. Tale byte può dunque assumere diversi valori:

o 0x0C (cod. ascii “FF – form feed”): introduce l’aggiornamento dei parametri del dispositivo;

o 0x0D (cod. ascii “CR – carriage return”): predispone il dispositivo all’invio dei dati; • La sezione DATA – PAYLOAD, di dimensione variabile, come si può intuire dal nome

stesso, contiene effettivamente l’informazione. Può dunque trattarsi di una sequenza binaria da scrivere su file, oppure di parametri con cui aggiornare la memoria di programma. Nel caso in cui la sezione STATO sia diversa da 0x0B, DATA non contiene informazioni e non sarà dunque considerata valida.

Il codice ascii di ogni campo è stato specificato in quanto è stato adottato un metodo di codifica del codice da inviare tale da non ingenerare errori dovuti ad una confusione tra i campi DATA, STOP, START e TIPO. Infatti, nell’invio, i bit di payload vengono duplicati e convertiti nel carattere ascii corrispondente; in tal modo tale frame è rappresentato da una sequenza di caratteri ascii da 0x10 (“DLE – data link escape”) a 0xFF (“ÿ”) e non è dunque possibile che si verifichi un errore di mancato riconoscimento dei campi aggiuntivi. Evidentemente, in fase di ricezione, avviene la decodifica ascii-binario e il recupero del codice originario.

Nel momento in cui il dispositivo è connesso alla porta USB, l’utente può interagire con esso direttamente da PC; è in tal modo facilitato il controllo contemporaneo di più dispositivi, per ciascuno dei quali è possibile avviare una sessione indipendente.

La comunicazione è bidirezionale e avviene in maniera analoga sia per il trasferimento dei dati di dose, sia per la variazione dei parametri di misura del dosimetro; l’unica discriminazione tra i due casi è il contenuto del frame ‘TIPO’, dalla cui analisi il microcontrollore avvia l’azione da eseguire. In Figura 75 si riporta, ad esempio, la sequenza di operazioni previste per l’invio dei dati.

(20)

‘SCARICA DATI’

Richiesta dati

Ricezione

Memorizzazione dati Selezione COM1

Creazione File di log

Lettura EEPROM

Invio dati tramite USART

FINE ‘SCARICA DATI’ Richiesta dati Ricezione Memorizzazione dati Selezione COM1

Creazione File di log

Lettura EEPROM

Invio dati tramite USART

FINE

Figura 75. Schema concettuale del protocollo di comunicazione tra PC e microcontrollore, interno al dispositivo. [1. Oltre al numero della porta è possibile selezionare anche i parametri di comunicazione: BPS e bit di parità]

Tutte le fasi di invio dei dati si attengono al protocollo definito in precedenza; in Figura 76 si riporta la procedura di ricezione.

(21)

Rilevazione ‘START’

Ricezione dei dati in un buffer

Rilevazione ‘STOP’ Valutazione ‘STATO’

Invio ‘Errore’

Invio ‘Fine comunicazione’

? ? ? SI NO SI SI NO NO Rilevazione ‘START’

Ricezione dei dati in un buffer

Rilevazione ‘STOP’ Valutazione ‘STATO’

Invio ‘Errore’

Invio ‘Fine comunicazione’

? ? ? SI NO SI SI NO NO

Figura 76. Schema a blocchi relativo alla procedura di ricezione.

4.2.2 Firmware

Per firmware, nel presente caso, si intende la sequenza di istruzioni, residenti nella memoria di programma del microcontrollore, che saranno eseguite dallo stesso. Grazie all’AVR Studio 4, ambiente di sviluppo integrato (IDE), utile per scrivere e fare il debug di applicazioni per tutte le famiglie di microcontrollori Atmel negli ambienti Windows 9x/Me/NT/2000/XP, è stato possibile simulare l’esecuzione del programma stesso. Si può infatti monitorare in ogni momento l’effetto delle istruzioni sulle periferiche e la variazione del contenuto delle memorie e dei registri. L’intero codice è stato scritto in linguaggio C, che, in quanto linguaggio di programmazione simbolico, non permette la sua diretta esecuzione da parte del calcolatore, ma necessita una preventiva traduzione in linguaggio macchina (forma binaria). A tale scopo ci si è avvalsi del compilatore AVR-GCC, che è in grado di analizzare la correttezza sintattica del programma, generare il file oggetto e successivamente, collegandolo ad uno o più file di libreria, produrre l’eseguibile. I vantaggi apportati dalla preferenza della programmazione in C consistono principalmente nella sua maggior sinteticità e compattezza rispetto all’Assembly; ne consegue una facilitata gestione del programma nella sua globalità.

Il flusso d’esecuzione firmware, basato su una procedura di Scheduling ciclico, ripete indefinitivamente il ciclo di misura temporizzando opportunamente ogni singola operazione,

(22)

affinché l’intervallo di tempo tra due misure consecutive sia riproducibile ed impostabile dall’utente. Considerando i moduli hardware descritti nella sezione precedente, si riporta in Figura 77 uno schema esplicativo della sequenza di programma.

Inizializzazione Light_on Acquisizione Light_off Elaborazione Visualizzazione e Memorizzazione Inizializzazione Light_on Acquisizione Light_off Elaborazione Visualizzazione e Memorizzazione

Figura 77. Sequenza di programma.

Come si può riscontrare in Figura 77, successivamente all’accensione, con conseguente inizializzazione delle periferiche, il programma esegue continuamente una sequenza che prevede l’illuminazione della fiala; l’acquisizione del segnale rilevato dai fotodiodi; lo spegnimento dei LED e la successiva elaborazione dei dati acquisiti.

L’ipotesi che sottende tale procedura, supportata dai dati sperimentali (Capitolo 3), è che il segnale luminoso fornito in uscita dai fotodiodi sia proporzionale al numero di bolle presenti all’interno della fiala. Con tale premessa, sarebbe possibile adottare un periodo di lettura di decine di secondi, conseguendo un apprezzabile risparmio energetico; tuttavia è necessario che i dosimetri elettronici siano in grado di fornire istantaneamente letture incrementali di rateo di dose e dose integrata, per poter essere utilizzati anche da lavoratori potenzialmente esposte a ratei di dose elevati ed istantaneamente variabili. Per tali motivazioni, in accordo alle raccomandazioni dell’ICRP, è stato fissato un tempo minimo di scansione di 4 s.

Lo Scheduling, implementato dal programma, concorre positivamente a determinare la prontezza di risposta del dosimetro. Lo Scheduling, infatti, è un concetto chiave nel progetto di sistemi operativi

(23)

Nel presente caso, la frequenza di campionamento relativamente bassa (4 s) ha consentito l’implementazione dello Scheduling in modo piuttosto semplice. L’intero programma, come già espresso dalla Figura 75, è stato frazionato in sottounità, a ciascuna delle quali è stato assegnato un determinato slot temporale. Se la durata di ciascuna sottounità, scandita dal Timer0 del microcontrollore, è superiore al valore assegnato, il programma passa all’esecuzione del blocco successivo, riprendendo il task precedente solo dopo aver completato l’intero ciclo di esecuzione sopra descrittone. delimita l’esecuzione; se infatti essa viene superata, microcontrollore, in sotto I vantaggi della procedura di Scheduling ciclico

Come è possibile osservare, nel flusso di programma non è prevista la gestione delle richieste inoltrate dall’utente tramite tastiera. La scelta di trattare questa funzionalità separatamente è legata alla necessità di valutare lo stato dei tasti con un periodo inferiore a 4 s. Lo stato della tastiera è infatti controllato ogni 0.1 µs, mediante un evento di Interrupt generato dal Timer1 e, se è rilevata la pressione di un tasto, il task ad essa legato è messo in coda ed eseguito alla fine del ciclo interrotto.

4.2.2.1 Protocolli implementati

Gli integrati impiegati per assolvere alle diverse funzionalità comunicano con il microcontrollore, ‘intelligenza’ del circuito, mediante protocolli diversi, che è stato necessario comprendere ed implementare per garantire la globale funzionalità del dispositivo. Escludendo il protocollo USB, affrontato in precedenza, si riportano di seguito i tipi di comunicazione coordinati dal microcontrollore, indicando la periferica di riferimento:

• SPITM Driver dei LED

• I2CTM ADC

• One-wireTM Sensore di temperatura

Segue una breve descrizione di ciascuno, necessaria per comprendere la fase di validazione.

SPI

Il protocollo SPI, sviluppato dalla Motorola, è di tipo seriale full-duplex che prevede la comunicazione di tipo master-slave tra i dispositivi che lo adottano per la trasmissione e ricezione dei dati, con una frequenza di scambio dati che arriva fino a 1 Mbps. Il protocolllo SPI prevede la

(24)

presenza di quattro linee: SCLK (Clock), MOSI (Master Output Slave Input), MISO (Master Input Slave Output) e SS (Slave Select). Mentre gli ultimi tre segnali sono condivisi da tutti i dispositivi, SCLK è generato dal master, che nel presente caso è il microcontrollore. Il driver per i LED è però anche dotato del pin MOSI, che può venire utilizzato in configurazione daisy-chain con altri dispositivi dello stesso tipo. La selezione di una periferica è attuata dal Master portando la linea SS a livello basso. Sebbene tale protocollo risulti sensibile e veloce, esso è totalmente privo di controllo di flusso e meccanismi di riconoscimento degli Slave.

Esistono quattro modalità di funzionamento del bus SPI; esse sono combinazioni della coppia di parametri chiamati polarità del clock (CPOL) e fase del clock (CPHA) che determinano i fronti del segnale di clock sui quali i dati sono pilotati e campionati. Ognuno di detti parametri ha due stati possibili, quindi si hanno quattro combinazioni ognuna incompatibile con le altre. Ad esempio se la fase del clock é zero (C P H A = 0) e la polarità é anch'essa zero (C P OL = 0), allora i dati vengono scambiati al fianco di salita del clock; se invece avessimo C P H A = 0 e C P OL = 1, allora i dati verrebbero caricati al fianco di discesa del clock. Il pacchetto dati è riportato in

Figura 78 per il dispositivo MAX6967, driver dei Led.

Figura 78. Temporizzazione della trasmissione con il MAX6967 [DIN coincide con MOSI del microcontrollore]

I

2

C

Il protocollo I2C è stato messo a punto dalla Philips nella metà degli anni ottanta e consente di pilotare una vasta famiglia di integrati utilizzando solamente due linee I/O e il riferimento. Si tratta di un protocollo di comunicazione seriale a bassa o media velocità (100 kbit/s, 400 kbit/s o più recentemente 3.4 Mbit/s) il quale consente tuttavia di indirizzare fino a 8 dispositivi diversi che gestiscano il bus come master, grazie ad un codice d'indirizzo proprio a ciascun dispositivo.

La prima delle due linee di segnale del bus I2C, denominata SCK (max 3.4 MHz), è il clock della trasmissione e la seconda, denominata SDA, è la linea su cui transitano i dati scanditi dal fronte di salita (o discesa) di SCK. Il protocollo è dunque sincrono. Un tipico schema di connessione è quello riportato in Figura 79. Come è possibile osservare, le linee dati richiedono

(25)

ciascuna una resistenza di pull-up collegata all’alimentazione. Ogni dispositivo può infatti imporre un livello logico 0 sulla linea cortocircuitandola con la massa, oppure, di default, un livello logico 1.

Figura 79.Schema hardware di connessione di due dispositivi ad un bus I2C.

La comunicazione può essere avviata esclusivamente dal master, che lo fa forzando a 0 la linea dati, mentre il segnale di clock su SCK è a livello basso. Infatti solo durante la normale trasmissione i bit sono inviati in maniera sequenziale, incominciando da quello più significativo e le transizioni di stato avvengono quando il segnale SCK è alto. Infine, la condizione di STOP è simmetrica e segnala la fine della trasmissione mediante una transizione da livello logico basso a livello logico alto sulla linea SDA mentre SCK è alta. Il pacchetto dati è costituito, come riportato in Figura 80 per il dispositivo in oggetto, da 8 bit per l’indirizzamento del dispositivo e la comunicazione che sta avvenendo un accesso in lettura; i successivi 16 bit contengono invece il valore digitalizzato dall’ADC e gli ultimi 8, opzionali, riportano il contenuto del registro di configurazione dell’ADC. L’intero pacchetto è introdotto da una condizione di START e concluso da una di STOP.

(26)

One-wire

Il protocollo 1-Wire, sviluppato dalla Dallas/Maxim, è utilizzato da un master per controllare, attraverso una singola linea, uno o più dispositivi slave. Il sensore di temperatura che comunica mediante tale protocollo è uno slave. La configurazione hardware delle porte in grado di supportare tale protocollo sono riportate in Figura 81.

Figura 81. Configurazione hardware del bus One-Wire.

La sequenza di bit per la corretta comunicazione con il dispositivo DS18S20 prevede le seguenti fasi, di cui si riporta di seguito la temporizzazione:

• Inizializzazione;

• Invio codici ROM, necessari per definire il numero di dispositivi slave e il tipo di comunicazione che si intende effettuare;

• Comandi di funzione, attraverso i quali è possibile leggere il contenuto dei registri e dunque la temperatura convertita.

Figura 82. Temporizzazione della fase di inzializzazione, la linea nera in grassetto indica il pilotaggio basso della linea da parte del master, quella nera a tratto fine lo stato alto della linea determinato dai pull-up e la linea grigia

(27)

Figura 83. Temporizzazione della lettura e della scrittura da parte del master rispettivamente di un 1 e uno 0, valgono le considerazioni della Figura 82 per le codifiche cromatiche.

Figura

Figura 56. Schema del dispositivo, le unità funzionali sono distinte cromaticamente.
Figura 58. Confronto della densità energetica delle batterie di uso comune.
Figura 59. Schematizzazione del processo di carica (sinistra) e scarica (destra).
Tabella 8. Perdita Permanente di Capacità contro Condizioni di Immagazzinamento  Temperatura di deposito  40% di Carica  100% di Carica
+7

Riferimenti

Documenti correlati

• un’Europa più intelligente mediante innovazione, anche attraverso la cooperazione tra reti di Regioni lungo le catene del valore, e

d) nella possibilità per l’ente di accettare anche nel corso del 2021 cessioni di credito riferite a benefici fiscali maturati nel corso del 2020 dai titolari dei

documento di denuncia attestante il danno arrecato, fornito dalla Compagnia Aerea o dal soggetto avente in custodia o deposito il bagaglio. Pro Rata Temporis:

Fra le più gravi novità in materia di immigrazione troviamo l'introduzione del reato di ingresso e/o soggiorno illegale, l'obbligo di dimostrazione della regolarità del

pacchetto di rilevanti misure volte direttamente ed indirettamente ad alleviare gli effetti negativi che l’attuale globale recessione economica provoca sulle famiglie e sui

Il Cliente Consumatore dichiara di voler fruire delle detrazioni fiscali per il risparmio energetico (65%).. IMPORTO RATA: 20,50 EURO - DURATA FINANZIAMENTO:

e) Per gli importi a titolo di anticipo, l'Assicurato dovrà comunicare la causa della richiesta, l'ammontare della cifra necessaria, il suo recapito e le indicazioni delle referenze

In altre occasioni ho avuto modo di soffermarmi sul quadro generale di carattere giuridico e sociologico che rimane sullo sfondo delle questioni che hanno portato al varo