Mesura de resistències amb Arduino

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.

Resistencies

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):

OhmetreEsquema

DivisorTensio

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 …

Monitoritzacio