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 ohminos) y un valor máximo Rmax. Valores habituales de Rmax son 5k, 10k o 20k ohmios.
Anuncio:
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. 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. Mientras, 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.
Anuncio:
Hola lo primero muchas gracias por compartir.
Me da error en:
position = V*100/Vcc;
‘Vcc’ was not declarated in this scope, yo lo declare con un
int Vcc = 5;
pero no se si esa es la manera de arreglarlo muchas gracias y perdonar a este novato.
Había una errata en el código. Sorry! Gracias por el aviso, ya está arreglado 🙂
Muchas gracias por compartir me resulta una duda hay alguna forma de controlar el potenciometro a traves del arduino ? es decir definir una variable y que esta aumente o disminuya la potencia con la que sale es netamente para aumentar o disminuir la velocidad de un ventilador
Gracias
No, el potenciómetro es un dispositivo de “entrada”, funciona en una única dirección. Si lo que quieres es el dispositivo inverso, es decir, que puedas cambiar su resistencia de forma eléctrica, lo que necesitas es un “digipot”. Son dispositivos baratos y fáciles de encontrar y usar (tengo pendiente hacer una entrada!) Lo único que son dispositivos que normalmente no están preparados para soportar grandes intensidades (típicamente unos pocos mA). Son más bien usados para hacer el calibrado fino de dispositivos. Si lo que quieres es variar la velocidad del ventilador… ¿Por qué no actúas directamente sobre la alimentación del ventilador,… Read more »
hola luis perdona que te moleste despues de tanto tiempo has creado la entrada del uso inverso? es decir que el arduino bien mediante un potenciometro o 2 botenes para subir o bajar modifique el valor de un potenciometro( mi idea es sustituir 2 potenciometros analogicos de 3 pines(que solo uso 2) con el arduino mediante un pulsador para subir y otro para bajar y imagino que con la salida pwm podria sustituir el potenciometro analogico por el arduino, muchas gracias por tu articulo.
El equivalente digital de un potenciómetro se llama “digipot”. Tengo pendiente hacer un tutorial sobre su uso. Sin embargo, en general no soportan mucha intensidad, por lo que habría que ver la aplicación en la que quieres instalarlo, y la función del potenciómetro que quieres sustituir (que corriente soporta, si sólo proporciona una referencia de tensión, etc)
En general, sustituir un potenciómetro por un controlador digital no es tan sencillo como puede parecer en un principio. Hay que analizar cada caso, y en algunos casos puede ser complicado.
Ya ya se que no aguantan mucha intensidad pero no no es ese el uso sino más bien como dices de referencia pero no sería para que pase x el la corriente de una bombilla o algo así tranquilo, te estaría muy agradecido si creas ese tutorial ya que explicas genial y es muy fácil comprenderte sobre todo por que al poner los códigos del arduino podemos probarlo en persona y ver en donde surgen dudas o ir probando cosas nosotros mismos. Una vez más gracias por tu tiempo y tu dedicacion
Hola! gracias por compartir! quería saber si existe la forma de conectar el potenciometro a un parlante (a través de arduino) y que el potenciometro regule las frecuencias en hertz que salen del parlante, es para lograr un dispositivo que se basa en el experimento de frecuencia y resonancia de Chladni. Cualquier ayuda es muy bienvenida, gracias!
Hola Luis, te comento que ya hace algunos años en el mercado de Guadalajara Jalisco, México y en la propia capital de México, dificílmente puedes encontrar potenciómetros de tipo lineal.,
quisiera que me dijeras que elemento resistivo se puede usar para hacer variar la resistencia de uno de 100 k ohmios y me orientaras en su fabricación, ( lo quiero lineal, por ser una manera cómoda de regular la salida de voltaje para hacer variar la velocidad de un motor de los llamados PWM.
Popr tu atención gracias
Hola Luis.
Estoy usando el potenciometro para fijar el valor de un umbral (leido por arduino), que una vez superado se activa un motor (desde arduino). El problema es que valor del umbral se ve afectado por el funcionamiento del motor. Es decir, que cuando hay cargas externas, estas influyen en el valor que devuelve el potenciometro. ¿Cómo controlarías esto? Lo que más me extraña es que el motor está alimentado por una fuente externa y controlado por arduino a través de un transistor, asi que no debería afectar.
Muchas gracias y enhorabuena por tu página!!!.
Un saludo.
[…] El siguiente componente es el potenciometro, para cual te dejamos un enlace que explica como se realiza la conexión de uno de forma detallada. Luis Llamas Potenciometro […]