
En esta entrada vamos a emplear Arduino para medir la resistencia eléctrica de un dispositivo. ¿Por qué resulta esto interesante? ¿Por qué no usamos un polímetro y ya esta? Bueno, el motivo por el que es importante es porque muchos sensores proporcionan su medición mediante una variación de su resistencia. Para poder usar estos sensores (de luz, de temperatura) tenemos que poder medir su resistencia desde Arduino.
Lamentablemente en Arduino (en general, prácticamente en ningún autómata) no disponemos de una entrada donde medir directamente ni resistencias ni intensidades eléctricas. Lo único que podemos medir son señales de tensión digitales o analógicas. Pero podemos emplear estas y un pequeño montaje para medir fácilmente el valor de una resistencia desconocida, mediante comparación con una conocida.
En esta entrada vamos a usar de forma intensiva las entradas analógicas, por lo que se da por supuesto que se está familiarizado con su uso. Si no es así es aconsejable que visites esta entrada “Entradas analógicas en Arduino“, donde vimos como usar las entradas analógicas de Arduino..
Anuncio:
Esquema eléctrico y montaje
Como decíamos, nuestro procesador no puede medir resistencias ni intensidades eléctricas. Lo único que podemos medir son voltajes discretizados a través de sus entradas. Sin embargo podemos aprovecharr las entradas analógicas para medir fácilmente el valor de una resistencia desconocida, por comparación con otra que llamaremos de calibración.
El montaje que necesitamos es un simple divisor de tensión entre la resistencia de valor desconocido y nuestra resistencia de calibración. El esquema eléctrico que necesitamos es el siguiente.
Mientras que el montaje en una protoboard sería el siguiente.
Ejemplo de código
El código necesario para realizar la lectura es simple. Simplemente leemos el valor del tensión mediante la entrada analógica, y empleamos las ecuaciones del divisor de tensión para obtener el valor de la resistencia medida.
const int sensorPin = A0; const int Rc = 1500; // valor de la resistencia de calibración int V; // almacena el valor medido long Rsensor; // almacena la resistencia calculada void setup() { } void loop() { V = analogRead(sensorPin); //realizar la lectura Rsensor = 1024L * Rc / V - Rc; //calcular el valor de la resistencia //...haríamos lo que quisieramos por Rsensor delay(1000); }
Os fijaréis que hemos realizado todas los cálculos empleando aritmética de números enteros, evitando intencionadamente emplear variables de tipo float. El motivo es que las operaciones en coma flotante ocupan una gran cantidad de memoria y son significativamente más lentas.
El valor de la resistencia de calibración
Lo único que resta es que elegir es el valor de la resistencia de calibración. La respuestas no es única, y su valor dependerá totalmente del rango de resistencias que puede adoptar el sensor durante su funcionamiento. En general el valor a elegir dependerá de:
- Debe ser lo suficientemente grande para limitar la corriente que atraviesa el sensor cuando este adquiera su mínimo valor. Por ejemplo, si el sensor puede llegar a registrar 0 Ohmnios, la única resistencia que limitará la corriente será la resistencia de calibración.
- Debe ser lo suficientemente pequeña en comparación con la del sensor para limitar la pérdida de precisión de la medición. Por ejemplo, si la resistencia del sensor adquiere el mismo valor que la de calibración, estaremos perdiendo la mitad de la precisión disponible.
Para que os sirva de orientación, valores habituales de esta resistencia suelen ser 1k a 4,7k, aunque como hemos dicho depende del rango de resistencias del sensor. Podéis ayudaros de nuestra calculadora de divisores de tensión para determinar el valor de la resistencia de calibración, la intensidad que soportará, y la pérdida de precisión.
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github.
Anuncio:
Excelente me sirvio mucho, ahora una pregunta si debo medir resistencia que va entre 0,1K y 30K que resistencia de calibracion deberia usar?? para no perder sensibilidad por supuesto
Ok, Resistencia de calibración o también llamada de shunt
podrias explicar que pinta la L en la inea Rsensor = 1024L * Rc / V – Rc;
Hola. La ‘L’ en un literal indica que debe tratarse como tipo Long.
Hola, queria preguntar si en este caso el potenciometro está alimentado a 12V como hago la lectura de la resistencia en el pin analógico?