Prima di iniziare la misura dovrete verificare che i collegamenti
sulla basetta siano corretti, e dovrete voi stessi collegare e regolare
le alimentazioni.
Il circuito richiede una alimentazione positiva di +5V
ed una negativa di -9V (e naturalmente un riferimento a 0V).
Fate attenzione a non sbagliare i collegamenti, perché
potreste distruggere i componenti.
I data sheets complete dei due dispositivi sono disponibili
sulla pagina web del corso.
Struttura del programma
Inizializzazione
Calibrazione di V
Misura di I vs V
Fit di V vs I (determinazione di R)
Chiusura
Il main dovrà chiamare una funzione diversa a seconda dell'opzione fornita dall'utente
(calibrazione, misura o fit).
Inizializzazione
Deve inizializzare le porte (seriale e parallela) ed abilitare il pacchetto grafico
(ed eventualmente i files di I/O).
void Calibrazione(){ char buf; double tensione; for (int i=0; i<256;i++){ buf = i; write(parallela,&buf,1); // setta il valore di tensione sleep(2); tensione = lettura(); // leggo dal multimetro il valore di tensione ottenuto // scrive il valore del numero e tensione nel file di calibrazione } } la funzione lettura() è la funzione che esegue una misura (e ne legge il risultato) con il multimetro.
void Misura(){ char buf; double corrente,tensione; double vtun[256]; //legge i 256 valori di calibrazione dal file di calibrazione --> vtun[256]; for (int i=0; i<256;i++){ buf = i; write(parallela,&buf,1); // setta il valore di tensione sleep(2); corrente = lettura(); // leggo dal multimetro il valore di corrente ottenuto tensione = vtun[i]; // scrittura di corrente e tensione nel file di misure // grafico in tempo reale di I vs V } }
Fit di V vs I
Legge i valori di corrente e tensione dal file di misure e ne esegue il fit ricavando R.
Chiusura
Chiude le porte (seriale e parallela) ed il pacchetto grafico
(ed eventualmente i files di I/O).
Commenti generali
Calcolate i calori di V e I in unità SI (convertite cioé il valore
a seconda dell'unità).
Se si vogliono avere i valori esatti degli errori (fit)
occorre modificare la funzione lettura
affinché calcoli e ritorni anche l'errore:
double lettura() -----> void lettura(double& val, double &eval)