En esta entrada vamos a aprender a leer el valor de posición de un potenciómetro. Los potenciómetros son dispositivos que usaremos frecuentemente para introducir valores analógicos en nuestro Arduino (por ejemplo, para regular la intensidad de la luz de un Led, la velocidad de un motor DC, o la posición de un servo).
La medición del valor de un potenciómetro es similar (aunque no igual) a la medición de la resistencia desconocida, algo que vimos en esta entrada.
Los conceptos que vimos son necesarios para entender el contenido de esta entrada por lo que, si aún no lo habéis hecho, os recomiendo su lectura.
¿Qué es un potenciómetro?
Un potenciómetro es un dispositivo que permite variar su resistencia de forma manual, entre un valor mínimo Rmin, (normalmente 0 ohmnios) y un valor máximo Rmax. Valores habituales de Rmax son 5k, 10k o 20k ohmnios.
Internamente un potenciómetro está constituido por un contacto móvil que se desplaza a lo largo de una pista resistiva. De esta forma, al mover el potenciómetro movemos el contacto a lo largo de la pista, y variando la longitud del tramo de pista con el que estamos en contacto, y por tanto variando su resistencia.
Normalmente un potenciómetro tiene tres terminales.
- Los dos extremos están unidos a ambos lados de la pista, por lo que siempre registrarán la resistencia máximo Rmax.
- El terminal restante corresponde con el contacto móvil, y es en el que varía la resistencia.
Este terminal varia su resistencia respecto a los otros dos terminales a medida que accionamos el potenciómetro, siendo la suma de la resistencia a los otros terminales igual a Rmax.
Respecto a la geometría, podemos encontrar potenciómetros de tipo lineal o rotativo.
Por último, en cuanto a la relación entre posición y resistencia, encontramos potenciómetros de tipo lineal, parabólico o exponencial
- Los lineales presentan una proporcionalidad entre resistencia y desplazamiento, lo cuál significa un comportamiento más intuitivo.
- Los exponenciales permiten mayor precisión en valores de resistencia bajos, por lo que resultan adecuados cuando hace falta un ajuste fino en un amplio rango.
Esquema eléctrico
El esquema es similar al empleado para medir una resistencia variable, con una importante salvedad. No necesitamos una resistencia de calibrado dado que el propio potenciómetro actúa como divisor de tensión.
Por otro lado, la resistencia entre los terminales siempre es Rmax del potenciómetro, mientras que en el caso de una resistencia de calibrado sería Rs+Rc, por lo que las ecuaciones varían ligeramente.
El esquema definitivo es el siguiente.
Montaje
El montaje necesario se muestra en la siguiente imagen
Código
El código para leer el desplazamiento del potenciómetro es realmente sencillo. Simplemente usamos una entrada analógica para leer el valor de tensión, y lo transformamos en la posición interpolando con la función “map”.
const int analogPin = A0;
int value; //variable que almacena la lectura analógica raw
int position; //posicion del potenciometro en tanto por ciento
void setup() {
}
void loop() {
value = analogRead(analogPin); // realizar la lectura analógica raw
position = map(value, 0, 1023, 0, 100); // convertir a porcentaje
//...hacer lo que se quiera, con el valor de posición medido
delay(1000);
}
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github.