
Mesura de resistències amb Arduino
Quan se’ns acumulen les resistències de qualsevol manera, o les classifiquem o les llencem. Per classificar-les hem de conèixer el seu valor, però de vegades no tenim a mà un multímetre i ens fa mandra buscar el valor segons les franges de colors …
Per solucionar aquest problema he fet un òhmetre casolà que em permetrà visualitzar pel monitor sèrie d’Arduino el valor d’una resistència qualsevol.
El meu òhmetre consisteix en un divisor de tensió fet amb la resistència a mesurar (R1) en sèrie amb una altra resistència de valor conegut (R2 = 10 kΩ). El punt de mesura està connectat a un pin d’entrada analògic d’Arduino (A0):
Com que Arduino només treballa amb senyals de tensió 0V o 5V, per mesurar qualsevol magnitud haurem de relacionar-la amb la tensió.
La tensió en el punt de mesura serà Vsortida = (R2 / R1+R2) * Ventrada
Ventrada = 5V
Vsortida es traduirà en un valor entre 0 i 1023 llegit al pin A0.
Càlcul de la tensió
Com que els possibles valors de la lectura del pin analògic són 1024 i el valor màxim de la tensió és 5V, a cada unitat del valor de la lectura li corresponen (5/1024) V:
void setup() { Serial.begin(9600); // inici de la comunicació sèrie, per monitoritzar int lectura = analogRead (A0); // fixem el valor llegit al pin analògic float tensio = (5.00/1024)*lectura; // càlcul de la tensió corresponent (núm decimal) // monitorització de dades: Serial.print (lectura); // valor de la lectura ... Serial.print (" - "); Serial.print (tensio); // ... i valor de la tensió calculada Serial.println (" V"); } void loop() { }
Càlcul de la resistència
Un cop comprovat amb diferents resistències que la tensió monitoritzada coincideix amb la de càlcul, cal calcular el valor de la resistència a mesurar (R1 al divisor de tensió):
R1 = (R2 * Ventrada / Vsortida) – R2 → R1 = (10.000Ω · 5V / Vsortida) – 10.000Ω
void setup() { Serial.begin(9600); // inici de la comunicació sèrie, per monitoritzar int lectura = analogRead (A0); // fixem el valor llegit al pin analògic float tensio = (5.00/1024)*lectura; // càlcul de la tensió corresponent (núm decimal) float resistencia = (R2*5.00/tensio)-R2; // càlcul de la resistència // monitorització de dades: Serial.print (lectura); Serial.print (" - "); Serial.print (tensio); Serial.print (" V"); Serial.print (resistencia); Serial.println (" ohms"); } void loop() { }
Resultat
He comprovat el funcionament de l’òhmetre amb els tres valors de resistències que més utilitzo: 220 Ω, 10 kΩ i 1 MΩ.
Els resultats obtinguts em semblen acceptables, excepte en el cas de la resistència d’1 MΩ (desviació del 27% respecte el valor nominal).
Potser no es tracti tant d’una pèrdua de precisió de l’òhmetre com de la procència dubtosa de les resistències utilitzades …