Un potenciómetro y Arduino son una pareja muy útil en muchos skecth como por ejemplo, controlar la luminosidad de una pantalla LCD. Pero hasta ahora no le habíamos dedicado una entrada a este componentes tan habitual y ha llegado el momento que veamos el potenciómetro a fondo.
Indice de contenidos
Tipos de potenciómetro
El potenciómetro nos proporciona una resistencia variable según vayamos modificando su posición. Si está totalmente cerrado obtendremos como salida el máximo voltaje (el de entrada), si lo tenemos totalmente abierto, obtendremos 0 voltios y si lo tenemos en una posición intermedia obtendremos una fracción del voltaje de entrada proporcional a la posición en la que se encuentre. Este comportamiento se llama divisor de tensión.
Existen varios tipos de potenciómetros pero los más comunes y con los que casi siempre vamos a trabajar son:
- Variación lineal: La resistencia es directamente proporcional al ángulo de giro, es lineal.
- Variación logarítmica: La resistencia depende logarítmicamente del ángulo de giro.
Los primeros son los que utilizaremos normalmente y son los más comunes en los kit de Arduino. Los segundos potenciómetro se suelen utilizar para circuitos de audio. Si tienes un aparato multimedia que tenga un botón para girar y modificar el sonido, estarás utilizando un potenciómetro logarítmico.
En los primeros, a mitad del recorrido del potenciómetro nos devuelve el 50% del voltaje pero esto no ocurre en el logarítmico ya que a mitad del recorrido nos devolverá un porcentaje superior, la proporción en este caso no es lineal y describe una curva ascendente.
Potenciómetro de variación lineal
Como ya hemos visto, el potenciómetro de variación lineal nos permite modificar el voltaje de una forma lineal. Encontraremos potenciómetros de diferentes resustencias, la más típica es la de 10 kΩ.
Normalmente tienen 3 patillas, según el potenciómetro que utilicemos, deberemos identificar la funcionalidad de cada patilla. Una patilla irá conectada a la fuente de alimentación, otra a tierra o GND y por último la tercera patilla será la salida del potenciómetro.
En el caso de la siguiente imagen, la patilla A es el voltaje de operación, la patilla B es la salida y la patilla C es la tierra.
Utilizando el potenciómetro con Arduino
En la placa Arduino UNO tenemos 6 pines analógicos, desde A0 hasta A5 y su uso común es la lectura de datos de dispositivos analógicos como es el caso del potenciómetro. Tienen una resolución de 10 bits lo que implica que tenemos 1024 valores diferentes, es decir, podemos leer un rango de tensiones desde 0V hasta 5V detectando cambios de voltaje de 0.004V (5/1024). Por lo que los valores que obtendremos irán desde 0 hasta 1023.
Y como la mejor manera de entender algo son los ejemplos, empezamos con uno que mediante el monitor serie podremos ir viendo que valores vamos obteniendo en un pin analógico según vayamos modificando la posición del potenciómetro.
En el siguiente esquema te muestro el conexionado.
El código
Y el código que debes cargar en la placa es el siguiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//Variable donde almacenaremos el valor del potenciometro long valor; void setup() { //Inicializamos la comunicación serial Serial.begin(9600); //Escribimos por el monitor serie mensaje de inicio Serial.println("Inicio de sketch - valores del potenciometro"); } void loop() { // leemos del pin A0 valor valor = analogRead(A0); //Imprimimos por el monitor serie Serial.print("El valor es = "); Serial.println(valor); delay(1000); } |
Una vez hayas subido el código del potenciómetro a la placa, abre el monitor serie. La salida dependerá donde la posición del potenciómetro, ves girando la rueda y verás como el valor se va modificando.
En un extremo, la resistencia será mínima y dejará pasar los 5 V (valor analógico de 1023), y en otro extremo la resistencia será máxima y dejará pasar 0 V (valor analógico de 0).
Encendiendo LEDs con un potenciómetro
Vamos con el segundo ejemplo, ahora vamos añadir 4 LEDs a nuestro circuito. Así según vayamos modificando la posición del potenciómetro iremos encendiendo un LED u otro. Monta el cirucito del siguiente esquema
Hemos visto que podemos leer 1024 valores diferentes, desde 0 hasta 1023. Si dividimos entre 4 este rango y asignamos un rango a cada LED, podremos controlar que LED encender dependiendo del valor a la entrada del pin analógico.
Los rangos de valores que tenemos son los siguientes:
- De 0 a 255, encender LED 1
- De 256 a 511, encender LED 2
- De 512 a 767, encender LED 3
- De 768 a 1023, encender LED 4
Ahora, según el potenciómetro esté variando la entrada analógica, podremos encender un LED u otro. Esto lo vamos a programar a través de varios if anidados.
El código
Vamos a utilizar la propiedad del potenciómetro de resistencia variable para encender uno u otro LED. Haremos un serie de if para determinar que LED encender y apagar los otros, según el valor que obtengamos en la entrada del pin analógico. El código sería el siguiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
//Variable donde almacenaremos el valor del potenciometro long valor; //Declaramos los pins de los LEDs int LED_1 = 2; int LED_2 = 3; int LED_3 = 4; int LED_4 = 5; void setup() { //Inicializamos la comunicación serial Serial.begin(9600); //Escribimos por el monitor serie mensaje de inicio Serial.println("Inicio de sketch - valores del potenciometro"); pinMode(LED_1, OUTPUT); pinMode(LED_2, OUTPUT); pinMode(LED_3, OUTPUT); pinMode(LED_4, OUTPUT); } void loop() { // leemos del pin A0 valor valor = analogRead(A0); //Imprimimos por el monitor serie Serial.print("El valor es = "); Serial.println(valor); if(valor >= 0 && valor <=255) { digitalWrite(LED_1, HIGH); digitalWrite(LED_2, LOW); digitalWrite(LED_3, LOW); digitalWrite(LED_4, LOW); } if (valor >= 256 && valor <=511) { digitalWrite(LED_1, LOW); digitalWrite(LED_2, HIGH); digitalWrite(LED_3, LOW); digitalWrite(LED_4, LOW); } if (valor >= 512 && valor <=767) { digitalWrite(LED_1, LOW); digitalWrite(LED_2, LOW); digitalWrite(LED_3, HIGH); digitalWrite(LED_4, LOW); } if (valor >= 768 && valor <=1023) { digitalWrite(LED_1, LOW); digitalWrite(LED_2, LOW); digitalWrite(LED_3, LOW); digitalWrite(LED_4, HIGH); } } |
Conclusión
El potenciómetro es un componente electrónico muy utilizado en Arduino y es conveniente saber cómo se utiliza. En este artículo te he mostrado su uso básico. Intenta practicar con más ejemplos y familiarizarte con este componente.
Cualquier duda o sugerencia, deja un comentario aquí abajo. Gracias :).