.. meta:: :language: it :description language=it: Embedded Systems Architecture: Esercitazione carica/scarica di un condensatore :description language=en: Embedded Systems Architecture: Practice charge/discharge of a capacitor :keywords: Embedded Systems Architecture, charge/discharge of a capacitor :author: Luciano De Falco Alfano Sheet Arduino n.6 (charge/discharge of a capacitor) ======================================================= .. contents:: :local: [*Lezione del 26 nov 2019*] carica/scarica di un condensatore ----------------------------------- La `scheda della esercitazione n.6 `_, richiede di misurare il voltaggio di un condensatore durante il processo di carica, per poter avere l'andamento nel tempo della tensione. Siccome nel seguito poi si chiede di usare altre resistenze/capacità (ovvero: provare con circuiti che hanno diverse costanti *RC*) e di misurare anche la fase di scarica, mi sono organizzato come segue. Prima di tutto ho provato la sola carica con RC=0,1s. Campioni misurati: 101, ogni 200ms. Osservato che il tempo di campionamento (elevato) non permetteva di tracciare una curva dettagliata (questo è il relativo risultato: .. image:: ./exercises/v-220-470-200.png ) ho: * diminuito il tempo di campionamento a 20ms; * raddoppiato il buffer delle misure per includere la scarica; ma osservando comportamenti strani dell'Arduino, evidentemente generati da degli overflow in aree di memoria: * ho diminuito il numero di campionamenti da 101*2 a 71*2 (carica e successiva scarica); * quindi tracciato per rc=0,1s e successivamente per * RC=0,47s. Il seguente video sintetizza quanto detto: .. raw:: html Il dettaglio dello sketch è: .. literalinclude:: ./exercises/sketch_sh06.ino :language: c :linenos: Come si vede abbiamo tre cicli in successione. I primi due catturano le misure. Il primo durante la carica, il secondo durante la scarica. Il terzo ciclo stampa sul monitor della seriale i risultati collezionati. Analogamente a quanto fatto per l'esercizio precedente, il plottaggio di questi dati si può fare con questo programma python utilizzando la libreria matplotlib: .. literalinclude:: ./exercises/plot_sh06.py :language: python :linenos: In pratica otteniamo i seguenti grafici. Per RC=0,1s (R=220 Ohm, C=470 microF) campionando ogni 20 ms, abbiamo: .. image:: ./exercises/v-220-470-20-cd.png Come si vede il condensatore carica completamente in meno di 1 secondo, come ci possiamo attendere con una costante di tempo di 1 decimo di secondo. Quindi la successiva scarica parte da 5V per arrivare a 0V. Anche in questo caso in meno di 1 secondo. Invece per RC=0,47s (R=1 KOhm, C=470 microF), sempre campionando ogni 20 ms, abbiamo: .. image:: ./exercises/v-1k-470-20-cd.png Qui la costante di tempo di circa mezzo secondo non permette la completa carica del condensatore in poco meno di 1,5s. Siamo comunque oltre il 90% di carica (2,2*RC).