Tabla de contenido:

Tutorial de codificador rotatorio con Arduino: 6 pasos
Tutorial de codificador rotatorio con Arduino: 6 pasos

Video: Tutorial de codificador rotatorio con Arduino: 6 pasos

Video: Tutorial de codificador rotatorio con Arduino: 6 pasos
Video: Arduino desde cero en Español - Capítulo 22 - Codificador rotatorio KY-040 (rotary encoder) 2024, Noviembre
Anonim
Tutorial de codificador rotatorio con Arduino
Tutorial de codificador rotatorio con Arduino

El codificador rotatorio es un componente electrónico capaz de monitorear el movimiento y la posición al girar. El codificador rotatorio utiliza sensores ópticos que pueden generar pulsos cuando el codificador rotatorio gira. La aplicación del codificador rotatorio generalmente como un monitor de movimiento mecánico o robótico también se puede utilizar para la selección del menú en la pantalla. El codificador rotatorio tiene dos salidas para que pueda distinguir entre rotación negativa (CW) y positiva (CCW) y también tiene un solo botón.

Paso 1: Flujo de pulsos del codificador rotatorio

Flujo de pulsos del codificador rotatorio
Flujo de pulsos del codificador rotatorio

El flujo de pulsos generado por el siguiente codificador rotatorio es como la imagen de arriba.

Paso 2: Pinout del codificador rotatorio

Pinout del codificador rotatorio
Pinout del codificador rotatorio

Explicación:

  • GND GND
  • + + 5V
  • Botón SW del codificador rotatorio cuando se presiona
  • Datos DT
  • Datos CLK 2

Uno de los pines DT o CLK debe estar conectado al pie de interrupción de Arduino Uno, o tanto DT como CLK están conectados al pin de interrupción.

Paso 3: esquema

Esquemático
Esquemático
  • GND a GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Paso 4: Código

Código
Código

En el siguiente tutorial, el que se usará como interrupción es el PIN 2 de Arduino Uno, mientras que el PIN 3 solo se usa como entrada regular.

#define encoder0PinA 2 # define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; configuración vacía () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; bucle vacío () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } si (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); retraso (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = encoder0Pos / 2.5; }

En la línea 10 del boceto anterior se usa para habilitar la interrupción del pin 2 Arduino Uno. En la función "doEncoder" se calcula a partir del codificador rotatorio. Si el valor de DT y CLK (interrupción de pin de Arduino Uno) es el mismo, entonces se incrementará / agregará la variable "encoder0Pos", además de esa condición, se decrementará la variable "encoder0Pos".

Paso 5: Explicación

El valor de ValRotary es el valor del número de pasos que se han estado ejecutando. El valor de ValRotary se obtiene a partir del valor de lectura del codificador del sensor giratorio dividido por 2,5. Se obtiene un valor de 2.5 de la prueba, ya que un paso del codificador rotatorio puede exceder 1, entonces divida por 2.5 por su valor de acuerdo con el perstep y también la suma del retardo de lectura.

Mientras que en la línea 19 - 25 hay un programa para determinar si el codificador rotatorio giratorio CW o CCW. La explicación de las líneas 19 a 25 es cuando la lectura del codificador rotatorio actual es mayor que los datos rotativos anteriores y luego se expresan como CW. Mientras que si la lectura actual es menor que la lectura anterior, entonces se indica como CCW.

Paso 6: Salida

Producción
Producción

1 = el valor del botón de inicio del rotativo cuando no se ha presionado

Recomendado: