Quan s’estudia l’electricitat a la secundaria el millor dispositiu per a obtenir dades dels circuits elèctrics és un polímetre (multímetre, tester). Fins i tot els més senzills porten un voltímetre, un amperímetre i un òhmmetre, i un fusible de protecció. Son molt fàcils de fer-los funcionar i si es compren dels barats (n’hi ha per 10 €) pots tenir molts al laboratori no tenir por de que s’espatllin.
A més normalment, per exemple en estudiar la llei d’Ohm, no cal recollir més que unes poques dades discretes que no depenen del temps i això es fa estupendament amb un polímetre, una llibreta i un boli.
Tot això ho dic per afirmar que no cal ni pensar en utilitzar Arduino o el telèfon mòbil per obtenir dades de magnituds elèctriques, ja que només mesuren voltatges amb una entrada màxima de 5 V. A més, si és la canalla la que manipula hauria molts números de sobrepassar els 5 V i cremar els dispositius.
Hi ha, però, alguna situació en electricitat en la que sí interessa recollir dades continuadament al llarg del temps, com per exemple la que aquí ens ocuparà, la càrrega o la descàrrega dels condensadors, i en la que la tensió la subministrarà el propi aparell amb la qual cosa ja no es podrà passar d’aquests 5 V.
Càrrega i descàrrega d’un condensador
Una pràctica clàssica de Física general és la que porta per títol el d’aquesta entrada. No hi ha més que escriure “Pràctica càrrega i descàrrega d’un condensador” en un buscador i apareix una gran varietat de protocols. Per exemple Práctica 20. Carga y descarga de un condensador eléctrico del professor Manuel Navarro de la Universitat d’Almeria, on es proposa obtenir les dades d’intensitat i voltatge en la càrrega i descàrrega amb un parell de polímetres. La major part de les vegades en altres protocols, però, el instrumental que s’utilitza és un generador d’ones quadrades i un oscil·loscopi.
Podeu refrescar el fenomen en qualsevol llibre de física general com en el Curso Interactivo de Física en Internet del professor Angel Franco García de la Universitat del País Basc (Carga de un condensador, Descarga de un condensador i Carga y descarga de un condensador) que inclou simulacions del fenomen, o en el curs HyperPhysics que porta una calculadora dels valors elèctrics en la càrrega i descàrrega.
Com indica l’esquema del circuit per a la càrrega i descàrrega d’un condensador i les gràfiques corresponents en el dibuix del costat, les equacions que relacionen el voltatge del condensador i el temps mentre el condensador es va carregant o descarregant son exponencials. El terme t = RC es denomina constant del temps, serveix per definir el circuit i és igual al temps que necessita el condensador per a carregar-se un 63 % del seu valor màxim.
El muntatge

Per a muntar el circuit de dalt i obtenir el valor del voltatge del condensador en funció del temps es necessita un condensador electrolític i una resistència per ficar-la en sèrie. La font d’alimentació de corrent continu la proporciona la pròpia placa d’arduino (Arduino UNO, placa amb esp32, etc).
El condensador ha de ser electrolític ja que tenen una capacitat molt més gran que els ceràmics o altres (jo he utilitzat un de 220 µF i 16 V). Així com els ceràmics no tenen polaritat (son simètrics), els electrolítics tenen un pol positiu i un altre de negatiu, i s’han de ficar bé si no es volen espatllar. El pol negatiu és el de la pota més curta i ve marcat a la carcassa amb un signe o una marca.

Es necessita una resistència en sèrie amb el condensador de 10 kΩ, per exemple. Per a descarregar el condensador convé un polsador interruptor amb una altra resistència en sèrie amb ell de 10 kΩ que es ficaran el paral·lel al condensador. Si no es fica aquesta última resistència, el condensador es descarregarà quasi instantàniament. Quan més grans siguin els valors de les resistències més temps trigarà el condensador en carregar-se o descarregar-se.
La pota negativa del condensador ha d’anar connectada al terra de la placa (GND) i la resistència en sèrie amb el condensador es connecta a la sortida de 3,3 o 5 V segons la placa que utilitzem, tal i com es veu en el dibuix i la fotografia de sota. Per mesurar el voltatge s’ha de connectar la pota positiva del condensador (comú del condensador i la seva resistència en sèrie) a una entrada analògica de la placa, A0 en Arduino UNO o 02 en un esp32, per exemple.
Atenció! Si no sabeu si el condensador ha estat usat amb anterioritat a aquest experiment i pot estar carregat, descarregueu-lo prenent el polsador abans de connectar res a les plaques arduino ja que no aguanten més de 5 V.


Si us fa mandra prémer el polsador es pot fer un altre muntatge en el que en lloc de connectar a 3,3 o a 5 V fixos es pot aconseguir el voltatge d’una sortida digital de la placa que subministri una ona quadrada, com explica Juan P. Campillo en Carga y descarga de un condensador.
El projecte
Per a obtenir els valors de voltatge en el port sèrie del ordinador amb l’IDE d’Arduino o similar no es necessita cap llibreria ni codi especial. La única cosa és que les plaques arduino disposen d’un conversor analògic-digital per a transformar en zeros i uns el voltatge que els hi arriba per les entrades analògiques. N’hi ha plaques, com l’Arduino UNO (sense bluetooth) que tenen un conversor de 10 bits, és a dir que els 0-5 V son capaces de convertir-los en 0-1023 valors (210 = 1024), i n’hi ha d’altres plaques amb conversors de 12 o de 16 bits, per exemple.
Les plaques que porten un esp32 (amb bluetooth) tenen un conversor analògic –digital de 12 bits i transformen el valors de voltatge de 0 a 3,3 V o a 5 V en 0-4095 nivells (212 = 4096). Per això en els projectes per convertir nivells d’entrada en voltatge s’ha de dividir per 1023 o 4095 el que llegeix la placa segons s’utilitzi un Arduino UNO o un esp32, com s’indica en el codi dels projectes.


Aquest primer projecte només permet veure els valors del voltatge pel port sèrie de l’ordinador. Es pot descarregar l’arxiu sketch_condensador_IDE_Arduino.ino o copiar el codi de sota a l’IDE d’Arduino i després carregar-lo a la placa.
Atenció! No carregueu el projecte en la placa amb el circuit connectat a la sortida de voltatge. Connecteu-lo una vegada ha pujat el projecte.
//Carga y descarga de un condensador electrolítico //en una placa Arduino o con microprocesador esp32 //Se ha de seleccionar la placa que corresponda: Arduino Uno, ESP32 DEV Module o DOIT ESP32 DEVKIT V1 //Los datos se pueden visualizar en el monitor serie del IDE de Arduino //y con el programa para ordenador RealTerm, https://sourceforge.net/projects/realterm/ //Conexiones: Condensador en serie con resistencia de 10K //Resistencia a GND, condensador a +3.3 o +5 V, //común de la resistencia y el condensador a A0 (Arduino) o a 02 (esp32) //en paralelo al condensador, una resistencia de 10K y un pulsador conector const int condensador = 02; //Pin que recoje los datos del condensador en esp32 float voltaje; void setup() { Serial.begin(9600); //inicia el terminal serie } void loop() { int t = millis(); //Tiempo en milisegundos voltaje = analogRead(condensador); //Voltaje del condensador Serial.print(t); //Escribe el tiempo en milisegundos Serial.print("; "); //separa los valores de tiempo y distancia con un punto y coma Serial.println(voltaje*3.3/4095); //Escribe el voltaje del condensador en voltios //si se ha conectado a 3,3 V en un esp32 //Serial.println(voltaje*5/1023); //Escribe el voltaje del condensador en voltios //si se ha conectado a 5V en un Arduino UNO delay(10); }
Si es vol veure el fenomen en el telèfon o la tauleta amb Phyphox s’ha de descarregar el projecte sketch_condensador_phyphox.ino o copiar el següent codi i pegar-lo a l’IDE d’Arduino.
//Carga y descarga de un condensador electrolítico //en una placa con microprocesador esp32, que dispone de Bluetooth //Se ha de seleccionar la placa ESP32 DEV Module o DOIT ESP32 DEVKIT V1 //Los datos se pueden visualizar en el monitor serie del IDE de Arduino //y con el programa para ordenador RealTerm, https://sourceforge.net/projects/realterm/ //Los datos también se pueden visualizar en el teléfono móvil o la tableta //con la aplicación Phyphox (https://phyphox.org/) a través de BT (BlueTooth) //Este sketch és una adaptación del sketch Rangefinder, ejemplo incluído en la librería Phyphox BLE. //Conexiones: Condensador en serie con resistencia de 10K //Resistencia a GND, condensador a +3.3 o +5 V, //común de la resistencia y el condensador a A0 (Arduino) o a 2 (esp32) //en paralelo al condensador, una resistencia de 10K y un pulsador conector #include <phyphoxBle.h> //Phyphox BLE library const int condensador = 02; //Pin que recoje los datos del condensador en el esp32 float voltaje; float V; void setup() { PhyphoxBLE::start("Condensador"); //Experiment PhyphoxBleExperiment experiment; experiment.setTitle("Carga y descarga de un condensador"); experiment.setCategory("Arduino Experiments"); experiment.setDescription("Dibuja la gráfica del voltaje del condensador con relación al tiempo."); //View PhyphoxBleExperiment::View view; //Graph PhyphoxBleExperiment::Graph graph; graph.setLabel("Voltaje del condensador"); graph.setUnitX("s"); graph.setUnitY("V"); graph.setLabelX("tiempo"); graph.setLabelY("Voltaje"); //In contrast to other examples, we will not generate the timestamp on the phone. //For experiments with a high data rate, we can achieve a better temporal //accuracy if we generate the timestamp on the Arduino and send it in pairs with the //measured values. graph.setChannel(1,2); view.addElement(graph); //Attach graph to view experiment.addView(view); //Attach view to experiment PhyphoxBLE::addExperiment(experiment); //Attach experiment to server Serial.begin(9600); //inicia el terminal serie } void loop() { float t = 0.001*millis(); //Tiempo en segundos voltaje = analogRead(condensador); //Voltaje del condensador V = voltaje*3.3/4095; PhyphoxBLE::write(t, V); // envia los datos a phyphox Serial.print(t,3); //Escribe el tiempo en segundos con tres decimales Serial.print("; "); //separa los valores de tiempo y distancia con un punto y coma Serial.println(voltaje*3.3/4095); //Escribe el voltaje del condensador en voltios //si se ha conectado a 3,3 V en un esp32 //Serial.println(voltaje*5/1023); //Escribe el voltaje del condensador en voltios //si se ha conectado a 5V en un Arduino UNO delay(10); PhyphoxBLE::poll(); //Only required for the Arduino Nano 33 IoT, but it does no harm for other boards. }

Una vegada pujat el projecte a la placa esp32 s’obre l’aplicació Phyphox i s’afegeix un nou experiment pitjant en el botó + i afegint un experiment per a dispositiu bluetooth seleccionar Condensador entre els dispositius que vegi el telèfon o la tauleta. El telèfon ha de tenir connectat el bluetooth i la localització per a que el Phyphox vegi el bluetooth de la placa.
El resultat
Si es fica en marxa l’experiment en Phyphox i es prem el polsador del circuit un parell de vegades el condensador es descarregarà i carregarà dues vegades, com es veu en la captura de pantalla de sota.


Basta aquesta gràfica per a visualitzar qualitativament el que passa, però si es para la captura de dades i s’amplifica la gràfica en la Panorámica y zoom, es poden seleccionar datos en la corba pitjant en el punt que interessi. De la gràfica del costat, obtinguda amb un condensador de 220 µF i dues resistències de 10 kΩ, he extret les dades per a dibuixat la gràfica de sota de la càrrega del condensador.

Com que la teoria indica que el voltatge depèn del temps de la següent manera

Passant el voltatge màxim a l’esquerra de l’equació i prenent logaritmes neperians queda:

Si es representa gràficament el logaritme de (V0-V)/V0 en funció del temps, on V són els valors obtinguts a l’experiment, s’obté la gràfica de sota en la que el pendent de la recta és -0,452.

El pendent hauria de correspondre a -1/RC. En aquest cas R són 10 kΩ i C 220 µF, i per tant

el que quadra bastant amb els valors experimentals obtinguts.