Escolar Documentos
Profissional Documentos
Cultura Documentos
3. Principio de Funcionamiento
El codificador tiene un disco con zonas de contacto uniformemente espaciadas que están conectadas al pin
común C (Switch) y dos pines de contacto separados Out A y Out B, como se ilustra a continuación:
Cuando el disco comience a girar paso a paso, los pines A y B empezarán a hacer contacto con el pin común y en
consecuencia, las dos señales de salida de onda cuadrada se generarán.
Cualquiera de las dos salidas se puede usar para determinar la posición rotada si solo contamos los pulsos de la
señal. Sin embargo, si se desea determinar también la dirección de rotación, debemos considerar ambas señales
al mismo tiempo.
Podemos observar que las dos señales de salida se desplazan a 90 grados de fase una de la otra. Si el codificador
está girando en el sentido de las agujas del reloj, la salida A estará por delante de la salida B.
Si se cuentan los pasos cada vez que cambia la señal, de Alto a Bajo o de Bajo a Alto en dirección horaria, se nota
que en ese momento las dos señales de salida tienen valores opuestos. Y, viceversa, si el codificador está girando
en sentido anti horario, las señales de salida tienen valores iguales.
Entonces, tomando en cuenta estos valores, se puede programar fácilmente el procesador para leer la posición
del codificador y la dirección de rotación.
4. Ejemplo A: Encoder con Arduino
Descripción del código:
Primero, se definen los pines a los que se conecta el codificador y las variables del programa.
En la sección de configuración, se definen los dos pines como entradas, se inicia la comunicación serial
para imprimir los resultados en el monitor serie, y se lee el valor inicial de la salida A guardándola en la
variable aLastState.
Luego, en la sección de bucle se lee la salida A nuevamente, pero se guarda el valor en la variable aState.
Entonces, si se gira el codificador y se genera un pulso, estos dos valores serán diferentes y la primera
declaración "si" se convertirá en verdadera. Justo después de eso, usando la segunda declaración "si" se
determina la dirección de rotación. Si el estado de salida B difiere del estado de salida A, el contador se
incrementará en uno, de lo contrario, se reducirá.
Al final, después de imprimir los resultados en el monitor serie, se actualiza la variable aLastState con el
valor de la variable aState.
Sketch Arduino: