Capitolo 7
Acquisizione sul PC e Prove Sperimentali
7.1 Il Software LabView TM
Nello sviluppo del progetto abbiamo affiancato alla parte hardware anche l’im- plementazione di un’interfaccia su PC per l’immagazzinamento e la successiva elaborazione dei dati acquisiti tramite la scheda. L’interfaccia ` e stata imple- mentata con il software LabView
TMdella National Instruments [27]. Si tratta di un linguaggio ad oggetti in forma grafica che prende il nome di G Language.
In esso il programma viene implementato sotto forma di diagramma a bloc- chi e non di sequenza di codici. Questa caratteristica da a LabView
TMmolta flessibilit` a e fornisce al programmatore la possibilit` a di lavorare in pipeline, eseguendo operazioni in parallelo. Il flusso di programma, infatti, non ` e fissato dall’ordine con cui si presentano le istruzioni all’interno del codice scritto, co- me avviene nei linguaggi tradizionali, ed ogni istruzione viene eseguita appena sono disponibili i dati al suo ingresso. Nonostante questo, LabView
TMprevede, come gli altri linguaggi, le stesse strutture di controllo del flusso come i cicli WHILE, FOR ecc...
Un programma in ambiente labview viene chiamato Virtual Instrument (VI)
ed ` e contraddistinto da tre parti: il diagramma a blocchi, il pannello frontale
7.2 Il Programma di Acquisizione su PC
e l’icona/connettore. Se il diagramma a blocchi rappresenta il cuore del pro- gramma, in cui vengono interconnessi i vari blocchi per dar vita al programma vero e proprio, il pannello frontale rappresenta l’interfaccia grafica con cui l’u- tente pu` o interagire con il programma stesso. Esso si compone di controllori e indicatori: i primi rappresentano le variabili di ingresso al programma o ad alcuni blocchi del programma che l’utente pu` o impostare e modificare durante l’esecuzione; i secondi, invece, restituiscono le variabili di uscita del programma che possono essere visualizzate in forma numerica o di grafico. Ogni indicatore e controllore ` e implementato in forma grafica dando al pannello frontale l’aspet- to di un vero e proprio strumento virtuale. La coppia icona/connettore, infine, fornisce la rappresentazione grafica di un dato strumento virtuale (icona) con le proprie uscite e i propri ingressi (specificati univocamente dal connettore).
Ogni VI ` e dotato di una coppia icona/connettore che ne consente l’inserimento e l’interconnessione con altri blocchi per l’utilizzo come sub-VI all’interno di un altro VI.
7.2 Il Programma di Acquisizione su PC
Il diagramma a blocchi del programma complessivo ` e visibile in figura 7.1. Il programma ` e strutturato in modo da poter selezionare se acquisire i dati attra- verso il canale ad ultrasuoni oppure attraverso il canale di acquisizione digitale dei segnali a bassa frequenza. Il tutto ` e ottenuto con una struttura CASE che esegue uno dei due sottoprogrammi in base al valore della variabile booleana
“switch canale”impostata dall’utente. Nella 7.1 si vede solo uno dei due sot- toblocchi della struttura case, quello relativo al canale ultrasonico. Dopo aver abilitato inizialmente la porta seriale del PC, settando i vari parametri dello standard di comunicazione (baudrate, parit` a ecc...), il programma, all’interno di un ciclo WHILE, che si ripete finch` e il valore della variabile booleana Stop non diventa true, testa il valore di “switch canale”ed esegue il corrispondente sub-VI.
Nel caso sia selezionato il canale ultrasonico il relativo sottoprogramma ` e
105
7.2 Il Programma di Acquisizione su PC
Figura 7.1: Il programma di acquisizione dati
106
7.2 Il Programma di Acquisizione su PC
visualizzato in figura 7.2. Il sub-VI legge dalla seriale un numero di caratteri impostato dall’utente, convertendoli dalla codifica ASCII in un array di byte con rappresentazione unsigned. In seguito moltiplica il dato per 0, 2583, per avere in uscita la distanza tra il sensore e il target (la parete cardiaca). Tale valore ` e determinato facendo uso delle relazioni del capitolo 4. In particolare, dalla 4.11 espressa in millimetri, si ottiene la risoluzione spaziale corrisponden- te all’unit` a di conteggio, che, moltiplicata per il numero di conteggi, fornisce il valore cercato. Il blocco successivo viene eseguito solo se richiesto dall’utente ed esegue un controllo sui dati in arrivo dalla seriale. Esso scorre ad uno ad uno tutti gli elementi del vettore di bytes in ingresso, attraverso un ciclo FOR con i che va da 0 ad N − 1, con N dimensione dell’array, e quando trova il valore 65.8665, che corrisponde ad un valore 255 inviato dal PIC e quindi al verificarsi di un overflow (cfr. 4.3.3), lo rimpiazza con il valore immediatamente prece- dente. Il led luminoso “errore”sul pannello frontale si accende per segnalare l’evento. Se il controllo non ` e attivato, invece, i dati passano inalterati. Dopo il ciclo di controllo i dati vengono processati da un filtro a media mobile, gi` a presente nelle librerie di LabView
TM, di cui l’utente pu` o selezionare l’ordine.
Il filtro ha lo scopo di smussare le transizioni brusche introdotte dall’algorit- mo di rimpiazzo. Infine, i campioni cos`ı ottenuti vengono assemblati in una waveform, ovvero una tipologia di dati che contiene anche informazioni sulla distanza temporale tra un campione e l’altro. Tale valore viene immesso dall’u- tente in base al rate scelto per gli invio degli impulsi ultrasonici. La waveform ottenuta pu` o, a quel punto, essere visualizzata su grafico.
Nel caso sia selezionato il canale di acquisizione a bassa frequenza (d’ora in avanti indicato come canale ADC), il relativo sub-Vi che viene richiamato
`
e illustrato nella figura 7.3. Il sub-VI legge anch’esso dalla seriale un numero di caratteri impostati dall’utente e li converte in un array di bytes unsigned, estendendone la rappresentazione su 16 bit. Successivamente, poich` e il dato in arrivo dalla seriale ` e composto da 10 bit, contenuti in 2 bytes distinti (cfr. 5), il sottoprogramma esegue un ciclo For con i che va da 0 a
(N −1)2, dove N ` e la dimensione dell’array, in cui scorre gli elementi e somma le componenti pari,
107
7.2 Il Programma di Acquisizione su PC
Figura 7.2: Il sottoprogramma relativo al canale ultrasonico 108
7.2 Il Programma di Acquisizione su PC
Figura 7.3: Il sottoprogramma relativo al canale a bassa frequenza 109
7.2 Il Programma di Acquisizione su PC
corrispondenti ai primi 8 bit di ogni campione acquisito, con le componenti dispari moltiplicate per 256. Il risultato ` e il valore del campione acquisito. Il programma ` e anche dotato di un controllo per verificare la corretta sincroniz- zazione dei dati:se il secondo campione di ogni coppia, dopo la moltiplicazione, restituisce un valore inferiore a 768 vuol dire che la ricezione e successiva con- versione sono sincronizzate con l’invio da parte del PIC, altrimenti, poich` e il secondo byte di ogni campione ` e per forza ≤ 3, significa che si ha un disalli- neamento dei dati e che i bytes di ordine dispari dell’array corrispondono in realt` a al primo byte di ogni campione. In questo caso allora, si ha un valore true in uscita al blocco di test e quindi in uscita al successivo blocco OR. Tale variabile ` e resa disponibile per l’iterazione successiva del ciclo, in cui verr` a ese- guita la parte della struttura case relativa alla condizione true, diminuendo di 1 l’indice di scorrimento dell’array e ottenendo cos`ı la corretta sincronizzazione.
Da notare che, in seguito al verificarsi della condizione true e alla correzione dell’indicizzazione dell’array, all’iterazione successiva la condizione di test re- stituisce un valore false. Per questo si ` e inserito il blocco OR, che garantisce un uscita true per tutta la restante durata del ciclo For susseguente al verificarsi della condizione di disallineamento. Se cos`ı non fosse vi sarebbe un continuo
“palleggiamento”tra le due indicizzazioni e dunque si avrebbe la perdit` a di validit` a dei dati. Una volta ricostruito l’array di campioni, viene costruita anche qui una waveform contenente informazioni sulla distanza temporale dei campioni che, come illustrato nel capitolo 5, ` e di 250 µs. Proseguendo con la descrizione del programma principale, sempre con riferimento alla figura 7.1, in ognuno dei due casi selezionati, la waveform in uscita dalla struttura CASE viene graficata e il blocco frequency calcola la frequenza principale del segnale (quella con ampiezza maggiore). Inoltre si pu` o scegliere se salvare i dati su file attraverso il blocco Write To Measurement File. Solo nel caso che sia attivato il canale ADC vengono plottati i grafici relativi ai segnali cardiaci e respiratori, ottenuti come filtraggio software del segnale acquisito, attraverso filtri passa banda di butterworth rispettivamente con frequenza di taglio a 0.5 Hz e 0.25 Hz. All’utente il software si presenta solo attraverso il pannello frontale del
110
7.3 Prove Sperimentali
Figura 7.4: L’interfaccia utente su PC
programma, che ` e riportato in figura 7.4.
7.3 Prove Sperimentali
Il dispositivo finale ` e stato assemblato in forma prototipale, realizzando il PCB
1attraverso l’uso del CAD PROTEL2004
TMdi Altium Limited [28]. In Appen- dice a questo scritto sono riportati i Layout utilizzati per la stampa del circuito attraverso il processo fotolitografico. Il circuito finale, composto dai tre mo- duli separati, ` e quello di figura 7.5. Per il test del dispositivo si ` e proceduto dapprima ad una verifica del corretto funzionamento e poi alle prove in vivo sull’uomo. Naturalmente si ` e provveduto anche a testare tutti gli aspetti rela- tivi alla corretta trasmissione wireless dei dati e al funzionamento dello switch del canale tramite interruttore sulla scheda, verificandone la validit` a.
1