Capitolo 6
Home | Pic18F4550 | Pic 16C765/745 | Download | Effetto Mössbauer | SD Cards | Software | Links | CV
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.
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à A0,Γ0 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.
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.
[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)
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.
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)
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.