Circuito RC

avevo pensato di sfruttare i pin analogici di arduino e la funzione analog read a frequenza di 100Hz (aggiornata ogni 10 millisecondi) per monitorare la carica , e successivamente la scarica di un condensatore elettrolitico da 2200 uF . In serie ho messo una resistenza da un Mohm.

inserito il seguente codice

int val0,val1;
double a,b;

void setup(){

a = (val0 * 5)/1023;
b = (val1 * 5)/1023;
Serial.begin (9600);

}

void loop(){
val0 = analogRead(0);
val1 = analogRead(1);
Serial.println ( );
Serial.println (val0);
delay(10);

}

Ho scelto valori piuttosto elevati in maniera da poter avere una costante di tempo elevata che mi permettesse di vedere chiaramente i valori della funzione esponenziale.

tuttavia aprendo e chiudendo l'interruttore , sul serial monitor i valori registrati passano direttamente da un valore sull'800 a uno mi pare sul 300, senza comunque variazioni apprezzabilmente spalmate nel tempo.

(PS: ho fatto anche la prova inserendo val1 al posto di val0 come argomento di serial print... macché!!)

vi posto il circuito (fatto con paint ;))

  • La trasmissione di 5 Byte sulla seriale a 9600 Baud dura ca 5 a 6 mSec.
  • l' entrata analogica ha una impedenza abbastanza bassa. Viene caricato un condensatore interno che tiene la tensione per tutto il tempo della conversone. Per caricarlo ci vuole un inpulso di corrente e percui l' impedenza é intorno ai 10kOhm.
    vedi http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf capitolo "23.6.1 Analog Input Circuitry" pagina 257.
    Tutte 2 le cose ti falsificano la misura.
    Soluzioni:
    Usa un Baudrate molto maggiore (1152000)
    Usa un operationale nella configuarzione di inseguitore di tensione per avere un impedenza di misura alta
    Amplificatore operazionale - Wikipedia
    Come operazionale usa un TL081 oppure un CA3031 ( modelli con un entrata JFET)

Caio Uwe

arabo, ma farò del mio meglio per decrittare...

Grazie lo stesso!!