Salve a tutti,
devo fare un sistema per la misura della costante di tempo di un circuito RC basato su Arduino che:
Riceve dal SerialMonitor una indicazione della costante di tempo
Seleziona la frequenza adatta e la imposta
Esegue la misura campionando il segnale
Restituisce il valore misurato partendo da due punti
Calcola la regressione lineare e restituisce il risultato
Esegue la misura N volte calcola media e scarto tipo
Questo è quello che ho fatto:
int charging = 13; //pin che mi permette la carica
float Vref =4.6;
void setup()
{
pinMode(charging,OUTPUT);
Serial.begin(9600);
Serial.println("Charging");
}
void loop()
{
if (Serial.available())
{
unsigned long dato = Serial.read();
unsigned long theoric_tau = dato-48;
Serial.println ("tau");
Serial.println (theoric_tau,DEC);
digitalWrite(charging,HIGH);
delay(10);
digitalWrite(charging,LOW);
float start=micros();
int a=analogRead(A0);
float compTime = micros() - start;
delay(theoric_tau);
float endTime=micros();
int b =analogRead (A0);
Serial.println(a);
Serial.println(b);
float v1= ((a*Vref)/1023);
float v2= ((b*Vref)/1023);
float measured_tau = (float) (endTime - start)/log(v1/v2);
Serial.println ("deltat");
float deltat= endTime - start;
Serial.print("\n");
Serial.println(deltat);
Serial.print("\n");
Serial.print("Measured constant time is: ");
Serial.print(measured_tau);
Serial.println(" us");
Serial.println("Done Displaying");
Serial.println(v1,2);
Serial.print("\n");
Serial.println(v2);
}
}
Il problema è che l'esercizio richiede di usare interrupt e timer per prendere campioni a intervalli definiti e la possibilità di selezionare la frequenza adatta e quindi il prescaler in base al tau previsto. Qualcuno ha un esercizio simile svolto o sarebbe estremamente gentile da darmi una mano dato che è urgente e mi serve per una relazione d'esame.
[EDIT] aggiunto i tag Uwe[/EDIT]