En esta publicación de blog, veremos cómo conectar un codificador rotatorio con un microcontrolador Raspberry Pi Pico. codificador rotatorio es un dispositivo de entrada común que se puede utilizar para medir y controlar la posición y la rotación del eje.de frambuesa pi picotiene pines GPIO y funcionalidad, proporcionando una gran plataforma para integrar un codificador rotatorio en su proyecto. Esta guía paso a paso lo guiará a través del proceso de conectar un codificador rotatorio a un Raspberry Pi Pico y escribir código para leer e interpretar su entrada.
Tabla de contenido
- Diferencia entre codificador rotatorio y potenciómetro
- Funcionamiento del codificador rotatorio
- Asignación de pines del codificador rotatorio
- Diagrama de circuito de interfaz de Raspberry Pi Pico y codificador rotatorio
- Raspberry Pi Pico y código de interfaz de codificador rotatorio
- Proyectos con Raspberry Pi Pico
- archivo de soporte
Diferencia entre codificador rotatorio y potenciómetro
pero, potenciómetro y codificador rotatorio Aunque se parecen, son muy diferentes entre sí.
La principal diferencia entre los codificadores rotatorios y los potenciómetros es su practicidad. Los codificadores rotatorios se usan cuando necesita conocer los cambios en el movimiento de la perilla, y los potenciómetros se usan cuando desea medir la posición exacta de una perilla.
El grado de movimiento también varía mucho, pero los codificadores rotatorios pueden moverse continuamente en cualquier dirección, mientras que los potenciómetros solo pueden moverse unos 270 grados.
Funcionamiento del codificador rotatorio
Imagina que tienes una perilla que se puede girar en cualquier dirección. Un codificador rotatorio es como un dispositivo inteligente que puede detectar y medir el movimiento y la rotación de las perillas. Puede saber cuánto se ha girado la perilla en qué dirección.
Un codificador rotatorio generalmente consta de un eje giratorio y dos partes llamadas canales “A” y “B”. A medida que se giran las perillas, estos canales producen una serie de señales eléctricas que los codificadores pueden entender (si están conectados a una tierra común). Usamos estas señales para rastrear la posición y el movimiento de la perilla.
Lo mejor de los codificadores rotatorios es que pueden brindarle información precisa y precisa sobre cuánto se ha girado una perilla. Ya sea que gire la perilla lenta o rápidamente, se pueden detectar incluso las rotaciones más pequeñas. También puede detectar pulsaciones como el botón central.
Los codificadores rotatorios se utilizan comúnmente en diversas aplicaciones. Por ejemplo, se utilizan en perillas de control de volumen para equipos de audio, sistemas de navegación, maquinaria industrial y robots. Proporcionan una forma conveniente y confiable de ingresar movimiento giratorio en sistemas electrónicos.
Asignación de pines del codificador rotatorio
A continuación se incluye una descripción de cada pin.
ballenas del sur (Interruptor): Este pin corresponde al interruptor de botón pulsador integrado en el codificador rotatorio. Cuando se presiona un botón, este pin generalmente emite una señal lógica BAJA o GND que indica un evento de presión de botón.
CCV (Suministro positivo): este pin está conectado al voltaje de suministro positivo del circuito (generalmente llamado Vcc). Suministra energía al codificador rotatorio.
TIERRA (Tierra): Este pin está conectado a la tierra del circuito o referencia 0V. Proporciona una conexión a tierra común para codificadores rotatorios.
DT (Datos) o Canal B: este pin proporciona una señal adicional para ayudar a determinar la dirección de rotación. Al analizar el orden y la sincronización de las señales de este pin y el pin CLK, se puede determinar la dirección de rotación.
CLK (Reloj) o Canal A: un pin que emite un pulso o señal que indica la rotación del codificador. Cada pulso corresponde a una cierta cantidad de rotación en sentido horario o antihorario.
Diagrama de circuito de interfaz de Raspberry Pi Pico y codificador rotatorio
- Conecte el pin VCC del codificador rotatorio al pin 3.3V del Pico.
- Conecte el pin GND del codificador rotatorio a cualquier pin GND en el Pico.
- Conecte el pin DATA del codificador rotatorio a un pin de entrada digital (como el pin 25) en el Pico.
- Conecte el pin CLK del codificador rotatorio a otro pin de entrada digital en el Pico, como el pin 24.
- Si su codificador rotatorio tiene un interruptor interno, puede conectar el pin SW a un pin de entrada digital (como el pin 26) en el pico.
Raspberry Pi Pico y código de interfaz de codificador rotatorio
A continuación, debe cargar su código en pico. Si ya sabe cómo hacerlo, puede continuar con el código. Si no, vea nuestro blog sobre resúmenes de circuitos. Explica como programar el pico usando el thonny ide.
Este código incluye una verificación adicional de las interrupciones del teclado para salir correctamente del programa y también muestra la salida cuando se presiona el botón central. Aquí hay una descripción de cada línea:
import time from rotary_irq_rp2 import RotaryIRQ from machine import Pin
Estas líneas importan los módulos que su código necesita para ejecutarse.
SW = Pin(20, Pin.IN, Pin.PULL_UP)
Esta línea establece un objeto pin llamado SW en el pin 20 de GPIO. Está configurado como un pin de entrada con una resistencia pull-up.
r = RotaryIRQ(pin_num_clk=18, pin_num_dt=19, min_val=0, reverse=False, range_mode=RotaryIRQ.RANGE_UNBOUNDED)
Esta línea crea un objeto RotaryIRQ llamado r. Al igual que el código anterior, configure los pines y parámetros del codificador rotatorio.
val_old = r.value()
Esta línea inicializa la variable val_old con el valor inicial de la posición del codificador rotatorio.
while True: try: val_new = r.value() if SW.value() == 0: print("Button Pressed") print("Selected Number is:", val_new) while SW.value() == 0: continue if val_old != val_new: val_old = val_new print('result=", val_new) time.sleep_ms(50) except KeyboardInterrupt: break
Este es el bucle principal del programa. Lea continuamente el valor del codificador rotatorio usando r.value() y guárdelo en val_new. Cuando se presiona el botón conectado al pin 20 (SW) (el valor es 0), se muestra “Botón presionado” con el valor actual. Valor del codificador rotatorio (val_new) Continúe emitiendo el valor mientras se presiona el botón (SW.value() == 0) Si el valor del codificador cambia (val_old es diferente de val_new), actualice val_old time .sleep_ms(50) pausa el programa 50 milisegundos antes de la siguiente iteración del bucle. Cuando se detecta una interrupción del teclado (Ctrl+C), el programa sale del bucle y sale correctamente.
La salida de este código será: –
Arriba, puede ver que al presionar el botón central se imprimirá la salida seleccionada.
Juguemos un poco con este codificador. También puede crear proyectos que controlen motores de CC con engranajes y servomotores. Si tiene alguna pregunta, háganoslo saber en los comentarios. Espero que hayas aprendido algo útil hoy. nos vemos pronto.
Proyectos con Raspberry Pi Pico

Descubra el fascinante mundo del control de la temperatura con nuestro último proyecto, el registrador de datos de temperatura. Aprovechando la potencia de Raspberry Pi Pico y la precisión del sensor de temperatura DHT22, hemos desarrollado una solución versátil y eficiente para rastrear los cambios de temperatura. Esta publicación de blog detallará el proceso de instalación del hardware, configuración del software y registro de datos de temperatura con una precisión sorprendente.

Aprenda sobre el emocionante mundo de la robótica mientras lo guiamos a través del proceso de creación de un robot seguidor de línea usando un microcontrolador Raspberry Pi Pico. Esta publicación de blog proporciona instrucciones paso a paso e información para ayudarlo a construir su propio robot que puede seguir líneas de forma autónoma. ¡Explora las posibilidades de la robótica!

Explore el potencial sin explotar del microcontrolador Raspberry Pi Pico mientras profundiza en el ámbito de la programación de doble núcleo con MicroPython. Esta publicación de blog describe el proceso de aprovechar el poder de ambos núcleos de Raspberry Pi Pico y desbloquear nuevas posibilidades para sus proyectos. Mejore sus habilidades de programación y prepárese para aprovechar al máximo las capacidades de su microcontrolador.
archivo de soporte
Puede descargar todos los archivos necesarios del repositorio de Circuit Digest GitHub en el siguiente enlace.
código
tiempo de importación
Importar RotaryIRQ desde rotary_irq_rp2
desde el pin de importación de la máquina
SW=pin(20,pin.IN,pin.PULL_UP)
r = RotaryIRQ(pin_num_clk=18,
pin_num_dt=19,
min_val=0,
inverso = falso,
range_mode=IRQ rotatorio.RANGE_UNBOUNDED)
val_old = r.valor()
Si es verdad:
intentar:
val_nuevo = r.valor()
Si SW.value()==0:
imprimir(“Boton presionado”)
print(“El número seleccionado es: “,val_new)
Si SW.value()==0:
Continuar
Si val_antiguo != val_nuevo:
valor_antiguo = valor_nuevo
imprimir(‘resultado=, val_nuevo)
tiempo.sleep_ms(50)
Excluyendo interrupciones de teclado:
descomponer