Una volta che il meccanismo di analisi dati è stato impostato correttamente, si possono prendere dati per diversi valori della frequenza della forzante e verificare che la risposta segua la curva di risonanza data in (4).
Per automatizzare questa procedura, si può sfruttare il fatto che ROOT è in grado di passare comandi al sistema operativo tramite il metodo Exec(char * command) applicato all'oggetto gSystem che è sempre definito e rappresenta il sistema operativo sotto cui ROOT sta girando.
In pratica si tratterà di modificare il programma della sezione 5
in modo che faccia terminare l'emulatore al termine dell'acquisizione
dell'onda ed effettuare un ciclo in cui per ogni frequenza si usa
gSystem->Exec(
) per far partire l'emulatore ed
un altro per far partire l'acquisizione dati. Si tratta principalmente
di un lavoro di sprintf per scrivere le stringhe di comandi
correttamente.
In tal caso, a causa dei vari time out nella lettura/scrittura da
seriale, nel programma può valere la pena di introdurre a mando dei
ritardi tra l'invio del comando e la risposta, per dare al tempo all'emulatore
di terminare correttamente le operazioni. Per sospendere per un tempo
determinato l'esecuzione di un programma si può usare la funzione
unsigned int sleep(unsigned int secondi)
nelle librerie unistd.h.
Determinare i parametri che governano la risposta del circuito:
la frequanza di oscillazione intrinseca
e il tempo caratteristico
.
Si noti che, a meno di fare un fit non lineare all'equazione
per
risulta molto più semplice utilizzare il grafico
di
in quanto
può venire ricavato dalla
pendenza della fase a basse frequenze, mentre
si può determinare
dal punto in cui
attraversa
.
In qualunque modo si determinino questi parametri, si cerchi di dare una stima degli errori ad essi associati.
Provare a vedere la risposta del circuito ad un'onda quadra e verificare se i parametri determinati sono effettivamente corretti.