Los potenciómetros y los codificadores rotatorios parecen casi idénticos a primera vista, pero funcionan de manera diferente. Descubre cómo usar ambos con un Arduino.

Entre los componentes electrónicos de control del usuario, las perillas giratorias se destacan como algunas de las más satisfactorias de usar. Pueden complementar las pantallas táctiles y otros dispositivos de entrada, además de funcionar bien con botones e interruptores. Pero, ¿cómo puede agregar una perilla a sus propios proyectos de bricolaje Arduino?

Tienes dos opciones principales: un potenciómetro o un codificador rotatorio. Estos componentes pueden parecer similares, pero los métodos para usarlos con un dispositivo como una placa de microcontrolador Arduino son muy diferentes. Veamos cómo se comparan entre sí.

Potenciómetros vs. Codificadores rotatorios

La mayoría de los potenciómetros y codificadores rotatorios que encontrarán los entusiastas del bricolaje vienen en un factor de forma similar. Tienen una base paralelepipédica o cilíndrica con patas conectoras adjuntas y un eje redondo que gira y tiene cortes para colocar una tapa.

instagram viewer

Algunos potenciómetros se ven diferentes, como los que vienen en forma de deslizadores largos, como los que se encuentran en las plataformas de mezclas de música. Sin embargo, cuando se trata del tipo rotatorio, a primera vista parecen casi idénticos a los codificadores rotatorios, por lo que se le perdonará que piense que son iguales.

¿Qué es un potenciómetro?

Un potenciómetro es, en esencia, una resistencia variable. A medida que se gira el eje, la resistencia dentro del potenciómetro cambia, lo que permite al usuario alterar las propiedades de un circuito sin tener que reconstruirlo. Los potenciómetros pueden ser tanto analógicos como digitales, pero los potenciómetros digitales imitan a los analógicos y esto hace que su uso sea muy similar.

Los potenciómetros siempre tienen un punto inicial y final definido donde el eje ya no se puede girar. Algunos potenciómetros tienen una sensación de baches cuando se giran, pero muchos también son suaves, como los que se encuentran en los estéreos antiguos.

A pesar de ser analógicos, los potenciómetros funcionan bien con microcontroladores. Tu puedes fácilmente configurar un potenciómetro con un Raspberry Pi Pico o Arduino.

¿Qué es un codificador rotatorio?

Los codificadores rotatorios determinan la posición de su eje mediante un sensor para proporcionar una señal analógica o digital al dispositivo al que están conectados. Esto le dice al dispositivo en qué posición está el codificador. Junto al eje giratorio, los codificadores rotatorios suelen tener también un botón integrado que se acciona empujando el eje hacia abajo.

A diferencia de los potenciómetros, los codificadores rotatorios pueden girar sin detenerse y casi siempre tienen golpes táctiles para cada una de las posiciones del eje. Muchos automóviles modernos usan codificadores rotatorios para controlar sus sistemas de entretenimiento.

Cómo usar un potenciómetro con un Arduino

Gracias a su diseño simple, usar un potenciómetro con un Arduino es simple. Su potenciómetro tiene tres conectores: tierra, salida y vref. Los pines de tierra y vref se conectan a los conectores GND y 5V de tu Arduino, respectivamente, mientras que el pin de salida del potenciómetro se conecta a una de las entradas analógicas de tu placa.

Código del potenciómetro Arduino

Su código de potenciómetro Arduino comienza con lo básico configuración() y bucle() plantilla que verá cuando cree un nuevo archivo en el IDE de Arduino. Primero, agregue un const int variable al comienzo del código para registrar la conexión del pin analógico del potenciómetro, en este caso, A0.

constanteEn t potenciómetro = A0;

A continuación de esto, el configuración() La función es simple: solo necesita declarar el pin de su potenciómetro como entrada. También puede iniciar una conexión en serie si desea enviar datos a su PC para el diagnóstico.

vacíoconfiguración(){
pinMode (potenciómetro, ENTRADA);
De serie.comenzar(9600);
}

A continuación, es hora de configurar el bucle() función. Comience por crear un En t variables usando el lectura analógica () función para almacenar la posición de su potenciómetro. Después de esto, puede utilizar el mapa() función para reducir el tamaño del valor con el que está tratando; en este ejemplo, para que coincida con las especificaciones de PWM, por ejemplo, para controlar el brillo de un LED. Agregue un breve retraso para garantizar la estabilidad.

vacíobucle(){
En t potentiometerValue = analogRead (potenciómetro);
mapa (potenciómetroValor, 0, 1023, 0, 255);
De serie.println(valor del potenciómetro);
retraso (10);
}

Ahora que tiene la posición de su potenciómetro, puede usarlo con otras partes del código. por ejemplo, un si La declaración funcionaría bien para activar el código cuando el potenciómetro está en una posición específica.

constanteEn t potenciómetro = A0;

vacíoconfiguración(){
pinMode (potenciómetro, ENTRADA);
De serie.comenzar(9600);
}

vacíobucle(){
En t potentiometerValue = analogRead (potenciómetro);
mapa (potenciómetroValor, 0, 1023, 0, 255);
De serie.println(valor del potenciómetro);
retraso (10);
}

Cómo usar un codificador rotatorio con un Arduino

Los codificadores rotatorios requieren un código más complejo que los potenciómetros, pero aun así es bastante fácil trabajar con ellos. Su codificador rotatorio tiene cinco pines: tierra, VCC, un pin de botón (SW), salida A (CLK) y salida B (DT). Los pines de tierra y VCC se conectan a los conectores de tierra y 5V en su Arduino, respectivamente, mientras que los pines SW, CLK y BT se conectan a conectores digitales individuales en Arduino.

Código del codificador rotatorio Arduino

Para hacer que nuestro código sea más simple y fácil de usar, usaremos la biblioteca SimpleRotary Arduino creada por MPrograms en GitHub. Asegúrese de tener esta biblioteca instalada antes de comenzar a trabajar en su código.

Al igual que su código de potenciómetro, puede iniciar su script de codificador rotatorio con el Arduino básico configuración() y bucle() plantilla de función. Comience declarando la biblioteca SimpleRotary y asignando los pines de su codificador en este orden; CLK, DT y SW.

#incluir 
SimpleRotary giratorio(1,2,3);

No necesita agregar nada a su configuración() función a menos que desee utilizar el monitor serie para diagnosticar su codificador rotatorio.

vacíoconfiguración(){
De serie.comenzar(9600);
}

El bucle() la función es otra historia. La determinación de la rotación del eje del codificador comienza con un rotatorio.rotar() llamada de función que se asigna a un En t variable. Si el resultado es 1, el codificador gira en el sentido de las agujas del reloj. Si el resultado es 2, el codificador gira en sentido contrario a las agujas del reloj. El resultado siempre será 0 si el codificador no ha girado desde la última comprobación.

Puedes usar si declaraciones para activar otro código dependiendo de la dirección de rotación del codificador.

vacíobucle(){
En t codificadorRotación;
encoderRotation = rotatorio.rotar();

if (rotación del codificador == 1) {
Serial.println("agujas del reloj");
}

si (rotación del codificador == 2) {
Serial.println("en sentido anti-horario");
}
}

También necesita agregar algún código para el botón de su codificador al bucle() función. Este proceso es muy similar, excepto que utilizará el rotatorio.push() función, en lugar de rotatorio.rotar().

vacíobucle(){
En t botóncodificador;
botóncodificador = rotatorio.push();

if (botoncodificador == 1) {
Serial.println("botón presionado");
}
}

Este script es bastante simple y puedes hacer mucho para personalizarlo. Vale la pena consultar la documentación del proyecto SimpleRotary para asegurarse de que está utilizando todas sus funciones clave. Una vez ensamblado, el código de su codificador debería verse así.

#incluir 
SimpleRotary giratorio(1,2,3);

vacíoconfiguración(){
De serie.comenzar(9600);
}

vacíobucle(){
En t codificadorRotación;
encoderRotation = rotatorio.rotar();

if (rotación del codificador == 1) {
Serial.println("agujas del reloj");
}

si (rotación del codificador == 2) {
Serial.println("en sentido anti-horario");
}

En t botóncodificador;
botóncodificador = rotatorio.push();

if (botoncodificador == 1) {
Serial.println("botón presionado");
}
}

Cómo elegir entre potenciómetros y codificadores rotatorios para proyectos

Como puede ver, los codificadores rotatorios y los potenciómetros funcionan de manera bastante diferente. Ambos componentes le brindan nuevas formas de controlar sus proyectos electrónicos, pero ¿cuál debe elegir?

Los potenciómetros son asequibles y fáciles de usar, pero solo permiten un rango de entrada limitado. Esto los hace excelentes cuando desea controlar el brillo de un LED, o aumentar y disminuir la potencia de componentes específicos y otras tareas similares.

Los codificadores rotatorios ofrecen mucho más alcance que los potenciómetros. La inclusión de un botón pulsador significa que son excelentes para los sistemas de control de menús, como se ve en muchos autos modernos. Este tipo de componente se ha vuelto muy popular en el espacio de construcción de teclados mecánicos. Tu puedes incluso construir un pequeño macropad con un codificador incorporado.

Apariencia similar, diferentes componentes

Con toda esta información en su haber, debería estar listo para comenzar un proyecto de electrónica con un potenciómetro o codificador rotatorio. Estos componentes pueden brindarle mucho control sobre los circuitos que construye, pero debe asegurarse de elegir la opción correcta para su proyecto.