IPSIA “R. FRAU” A.S. 2019/2020 LABORATORIO DI FISICA CON ARDUINO Prof. Lorenzo Morresi Classe 2EMT-MAT San Ginesio Titolo progetto CARICA E SCARICA DI UN CONDENSATORE Scheda progetto n_17 Descrizione Utilizziamo Arduino per misurare la carica e la scarica di un condensatore elettrolitico. I dati ottenuti sono graficati mediante excel e quindi permettono di ricavare la costante di tempo tipica del circuito. Materiale necessario 1 ARDUINO UNO board 1 resistenza - 220 1 resistenza - 1000 1 resistenza - 10000 1 condensatore elettrolitico - 470 F 1 condensatore elettrolitico - 1000 F Sketch /*SELEZIONIAMO UNA DELLE PORTE ANALOGICHE (Analog In Pins (0-5)) PER LA MISURA DELLA TENSIONE AI CAPI DEL CONDENSATORE (IN QUESTO CASO LA 0)*/ #define analogPin 0 /*SELEZIONIAMO UNA DELLE PORTE DIGITALI (Digital I/O Pins 2-13) PER LA CARICA DEL CONDENSATORE (IN QUESTO CASO LA 2)*/ #define chargePin 2 int i; // indice del numero di misure int Nmis = 101; // numero di misure che si vogliono effettuare per la carica e per la scarica int Ntot = 202; // numero di misure complessive carica più scarica int deltaT = 200; // intervallo di tempo in ms tra due misure successive, in questo caso 200 ms int b=1; //variabile intera utilizzata per mettere in standby Arduino void setup() { pinMode(chargePin, OUTPUT); //Imposta la porta digitale in uscita digitalWrite(chargePin, LOW); //Imposta la porta digitale a 0 Volt, per scaricare il condensatore Serial.begin(9600); //Impostiamo la velocità di trasmissione dati a 9600 baud } void loop() { double t[Ntot]; // vettore dei tempi in cui si effettuano le misure double Vout[Ntot]; // vettore dei valori di tensione misurati //INFORMAZIONI VARIE SULLO STATO DELLA MISURA Serial.println("STO ASPETTANDO 15 S PER FAR SCARICARE COMPLETAMENTE IL CONDENSATORE"); delay(15000); //tempo di attesa in ms per essere certi di aver scaricato completamente il condensatore Serial.println("INIZIO IL PROCESSO DI CARICA E LA MISURA"); digitalWrite(chargePin, HIGH); // Si imposta la porta digitale a 5 Volt, per la carica del condensatore for(i=0;i<Nmis;i++) { Vout[i] = analogRead(analogPin)*5.0/1023.0; //lettura del valore di tensione e conversione da canali a Volt t[i] = millis( ); // istante in cui viene fatta la misura da quando è iniziato lo sketch in millisecondi delay(deltaT); // Aspetto deltaT ms prima della prossima misura } digitalWrite(chargePin, LOW); // Si imposta la porta digitale a 0 Volt, per scaricare il condensatore for(i= Nmis;i< Ntot;i++)