Capitolo 6            

 

Home | Pic18F4550 | Pic 16C765/745 | Download | Effetto Mössbauer | SD Cards | Software | Links | CV

 

 

 

 

 

6. Il software di gestione e acquisizione

 

6.0 Il Software di acquisizione

  

In questo capitolo viene descritto il software realizzato per la gestione della scheda di acquisizione, scritto in ambiente Visual Basic 6.0 (VB6). Il programma realizzato può essere eseguito in qualunque PC con sistema operativo Windows 95 o superiore, purchè venga installato un componente aggiuntivo al VB che ha il compito di stabilire la comunicazione tramite protocolli di trasmissione USB con il PIC. Il componente si chiama HIDComm ed è scaricabile gratuitamente presso il sito della Microchip[1].

La schermata principale del programma si presenta come segue:

                                               

Figura 49 Schermata principale dl software

 

 

 

 

 

 

 

 

 

 

 

  

Il software è suddiviso in varie sezioni (Frame), ognuna delle quali legata ad una particolare funzione. Andiamo ora ad analizzare le singole parti: 

Figura  50 Connessione

 

 

  

Figura 51 Avvio processi

                            HIDComm1.WriteTo Buffer, BufferSize

Dove:

-         Buffer è un vettore in cui vengono memorizzati i valori numerici, che all’interno del PIC vengono interpretati come l’azione da effettuare. Un esempio di scrittura della variabile Buffer è il seguente:

                                                        Buffer(0) = CByte(2) 

-         BufferSize rappresenta, il numero di byte da inviare al PIC. In alcuni casi a tale variabile verrà associato  il valore uno, se la funzione da attivare non richieda il passaggio di ulteriori parametri. 

     

Figura  52 Visualizzazione

 

 

 

 

 

Figura 53 controlli acquisizione

  

Dove il fondo è definito come descritto precedentemente e Val_min rappresenta il valore più piccolo tra i conteggi presenti nei 256 canali. 

Effettuata l’acquisizione, la schermata principale del software si presenta come segue: 

Figura 54 Software dopo l’acquisizione

 

 

 

 

 

 

 

 

 

 

 

 

Vengono ben evidenziati i sei picchi del Ferro presenti in un doppio spettro speculare rispetto all’asse passante per il canale centrale dovuto al moto relativo tra sorgente e rivelatore. La distanza tra sorgente e rivelatore, cambierà periodicamente e di conseguenza l’angolo solido e il rate di conteggi sarà funzione della velocità.

Per rimuovere l’effetto dovuto a caratteri geometrici, si procede applicando la procedura denominata Folding[3] .

L’espressione che la descrive è la seguente: 

 

Ovvero, viene effettuata la media aritmetica tra il valore contenuto nel canale i-esimo e il (255-i)-esimo canale.  

Per attivare questa funzione, è necessario abilitare l’opzione FOLDING presente nella sezione dedicata alla visualizzazione. In questo modo viene caricata un’ulteriore schermata del software, dedicata alla pre-elaborazione dello spettro.

Figura 55 Frame dedicato all’elaborazione spettro

La nuova schermata, permette di visualizzare lo spettro finale rappresentante i livelli energetici nucleari. È possibile ottenere in real-time  il valore del rapporto segnale rumore, visto anche in precedenza, ed in più è possibile realizzarne la deconvoluzione dello spettro.

La parte preposta ad effettuare il Fit dello spettro, permette di selezionare il numero di curve da identificare e mediante la pressione del tasto FIT, il software calcola in automatico i parametri di ogni lorentziana. Nella  figura è possibile osservare la curva tracciata in rosso, graficata usando i parametri calcolati dopo la prima iterata. La routine permette di avere informazione sulla bontà del calcolo eseguito, mediante la visualizzazione del parametro statistico del χ2 calcolato come segue: 

 dove gli elementi Yesp(i) rappresentano i valori sperimentali dei conteggi dello spettro e le Yteo(i) i valori teorici dello spettro calcolato con i parametri ricavati dal fit.

 

 

6.1 Algoritmo per il FIT

 

Per comprendere i fenomeni fisici, non basta raccogliere buoni dati sperimentali, occorre anche interpretarli. Molto spesso lo scopo di una misura non è solo quello di conoscere il valore di una certa quantità ma anche di trovare una funzione matematica che approssimi i dati raccolti. Supponendo di aver effettuato una acquisizione dello spettro, ci proponiamo ora di trovare la funzione che meglio approssima i dati sperimentali [10,19]. 

Si procede dunque nel proporre un’ipotesi nella quale formuliamo l’equazione rappresentante lo spettro acquisito. Nel nostro caso lo spetto è la somma di n Lorentziane, ognuna delle quali definita come:

                                     (6.1) 

Ogni curva sarà dunque funzione di , dove: 

Figura  56

Procederemo analizzando lo scarto quadratico tra i valori sperimentali e i valori teorici ottenuti con la funzione , definito dalla seguente relazione: 

                     (6.2) 

Ebbene, la funzione  che meglio approssima l’andamento dei punti sperimentali sarà ottenuta minimizzando la Z2  imponendo le seguenti condizioni: 

                                                              (6.3) 

Verrà di seguito proposto il metodo risolutivo nel caso in cui il profilo da fittare sia dato da una singola Lorentziana, la generalizzazione a n Lorentziana verrà data alla fine. Sostituiamo, nell’espressione dello scarto quadratico, l’equazione della Lorentziane sopra citata: 

                                    (6.4) 

Di seguito vengono proposte le derivate parziali rispetto ai tre parametri. 

                              (6.5) 

                                         (6.6) 

                                                      (6.7) 

Quello che si ottiene sarà dunque un sistema del tipo: 

                                                 (6.8) 

A questo punto, dobbiamo attribuire alle variabili A,Γ e x0 dei valori iniziali e successivamente trovare le correzioni da applicare sulle stesse, per determinare i valori dei parametri A, Γ e x0 che minimizzano lo scarto. Inizieremo con tre valori che chiameremo per comodità A00 e µ0. Le soluzioni finali, saranno date da i valori iniziali, corretti ad ogni iterazione di una certa quantità D

                                             (6.9) 

Sviluppiamo in serie la funzione , ottenendo così: 

 

Dobbiamo ora minimizzare la quantità dove le incognite da trovare sono le variabili . Questo mi darà come risultato un sistema di equazioni di primo grado con una soluzione.

Lo studio delle derivate parziali ci conduce alle seguenti equazioni: 

                     

                                  (6.10)

Otterremo dunque un sistema di questo tipo: 

                                                               (6.11) 

Con:

                                             (6.12) 

Discorso analogo varrà anche per gli altri termini. 

Mentre, i termini noti saranno definiti dalla seguente espressione: 

                                (6.13) 

È possibile ora scrivere il sistema sopra come segue 

                                 (6.14) 

E trovare le soluzioni desiderate, effettuando un inversione della matrice dei coefficienti moltiplicata il vettore dei termini noti 

                               (6.15) 

Ora, le soluzioni finali saranno date da i valori iniziali corretti dalle quantità  come segue 

                                                         (6.16) 

Possiamo rieseguire tutta la procedura usando i nuovi parametri  come valori iniziali del fit, fino ad ottenere valori dei termini correttivi  prossimi a zero. Il quel caso, quello che troveremo, saranno proprio i parametri che rendono la quantità  minimizzata. 

La procedura vista, vale nel caso in cui la curva da determinare sia solamente una Lorentziana. Nel caso in cui volessimo eseguire il Fit per n curve, la procedura di base rimane invariata, quello che dovremmo risolvere in maniera iterativa sarà il seguente sistema: 

             (6.17) 

Dove le Pi rappresentano i soluzioni finali ottenute mediante il fit e rappresentanti gli n parametri relativi all’ampiezza ( A ), larghezza a mezza altezza ( Γ )e della posizione del massimo ( x0 )  delle n Lorentziane.  

 

6.1.1 Eliminazione Gaussiana

 

Si supponga di avere un sistema di n equazioni in n incognite  

                    (6.18) 

dove le xj (j=1, 2, ¼, n) sono le incognite, aij (i, j = 1, 2, ¼, n) i coefficienti delle incognite e bi (i=1, 2, ¼, n) i termini noti. Questo sistema può essere espresso notazione matriciale: 

                     (6.19)

Dove:

A = ,                   x = ,                     b =                (6.20) 

L’obbiettivo che ci si prefigge è quello di determinare i valori delle variabili che soddisfano simultaneamente le equazioni. A seconda delle particolari equazioni, questo sistema può non ammettere soluzioni (ad esempio , se il sistema contiene due equazioni che si contraddicono, come  e ) o ammetterne più di una ( ad esempio, se due equazioni sono uguali). Si supponga che il numero delle equazioni coincida con quello delle variabili, cercando di introdurre un algoritmo che consenta, se esiste, l’unica soluzione. 

 

6.1.2 Eliminazione 

 

[19] Consideriamo il problema generale della soluzione di un insieme delle equazioni algebriche lineari ed elaboriamo una procedura sistematica che può essere effettuata facilmente.  Risolviamo, in particolare, un sistema di tre equazioni: 

                 (6.21) 

Risolviamo la prima equazione rispetto a x1, assumendo che a11 ¹ 0. allora, 

                      (6.22) 

Sostituendo la (6.22) nella seconda equazione del sistema, si ha: 

                (6.23)                                     

che può essere riscritta nella forma:  

                      (6.24) 

In maniera simile si ottiene l’equazione: 

                      (6.25) 

Le equazioni (6.24) e (6.25) possono essere riscritte nella forma: 

                 (6.26) 

dove i coefficienti con l’asterisco sono dati dalle relazioni: 

,      ,                          (6.27a) 

,      ,                           (6.27b) 

Questi coefficienti possono essere espressi in generale da: 

                    (6.28a)

                      (6.28b

Queste relazioni generali sono indipendenti dal numero di equazioni considerate. Così, per le equazioni n, tutti i coefficienti che a*ij possono essere computati usando l'equazione (6.28) con gli indici i = 2,…, n e j = 2,..., n. In un programma destinato all'elaboratore, i nuovi coefficienti possono essere immagazzinati al posto dei coefficienti originali, poiché i coefficienti originali non sono più necessari.

Ora risolviamo la prima equazione del sistema (6.26) rispetto ad x2, assumendo a*22  ¹ 0. Allora,

                     (6.29) 

Sostituendo l’equazione (6.29) nella seconda equazione del sistema (6.26) si ottiene: 

                 (6.30) 

Dove: 

                e                                (6.31)

Le equazioni (6.31) possono essere scritte nella forma generale: 

                  (6.32a)

                    (6.33b

Ancora una volta, queste relazioni generali sono indipendente dal numero di equazioni considerate. Così, per n equazioni le (6.32) possono essere valutata usando gli indici (i = 3,..., n) e (j = 3,..., n). In un programma destinato all'elaboratore, i nuovi coefficienti possono essere immagazzinati al posto dei coefficienti originali, che non sono più necessari.

Il sistema originale delle tre equazioni è stato ridotto ad un sistema equivalente all'originale: 

                    (6.34a)

                 (6.34b)

                 (6.34c

Questo è ciò che realizza il processo di eliminazione.

  

6.2.3 Sostituzione a ritroso

  

La soluzione del sistema (6.34) viene eseguita facilmente con la sostituzione a ritroso. Cominciando dall’equazione (6.34c) e procedendo a ritroso si ha: 

                           (6.35a)

                     (6.35b)

                      (6.35c

 

6.2.4 Pivoting

 

La procedura di eliminazione descritta finora viene immediatamente a mancare se l’elemento a11 della matrice del sistema è uguale a zero. La procedura, inoltre, viene a mancare se qualsiasi elemento aii sulla diagonale principale della matrice originale è nullo (anche il processo di eliminazione può generare degli zeri sulla diagonale principale). La procedura di eliminazione descritta finora deve essere modificata per evitare gli zeri sulla diagonale principale. Questo risultato può essere compiuto riorganizzando le equazioni, interscambiando le equazioni (righe) o la variabile (colonne) prima di ogni eliminazione, per mettere l'elemento di valore maggiore sulla diagonale. L’elemento sulla diagonale principale è denominato pivot, mentre questo processo è chiamato pivoting. Se si scambiano sia le righe che le colonne viene nominato full pivoting. Il full pivoting è abbastanza complicato ed è usato raramente. In genere si scambiano soltanto le file. La strategia del pivoting elimina gli zeri durante il processo dell’eliminazione. Il pivoting inoltre riduce arrotondamenti degli errori, poiché l'elemento pivot, durante il processo di eliminazione, si trasforma in un divisore. La divisione con piccoli numeri introduce degli errori maggiori rispetto alla divisione con grandi numeri. Quando la procedura viene ripetuta, l’arrotondamento degli errori può essere complicato. Questo problema diventa più severo come aumenta il numero di equazioni. 

 


 

[1] www.microchip.com

[2] Naturalmente nel nostro caso sarà quella relativa alla scheda di acquisizione dati, che và sotto il nome di “PIC16C765 SpettrometroUSB”.

[3]  Come fà intendere il termine usato, per questa procedura, si tratta di un “ripiegamento” dello spettro.