Você está na página 1de 5

Diseño Electrónico II Docente: Ing.

Roger Guachalla Narváez


xoroger@yahoo.es

PRACTICA 06: Codificador rotatorio


1. Objetivos
 Comprender el funcionamiento de un codificador rotatorio
 Controlar un motor paso-a-paso con el codificador rotatorio y la placa Arduino
2. Introducción
Un codificador giratorio es un tipo de sensor de posición que se utiliza para determinar la posición angular de un
eje giratorio. Genera una señal eléctrica, ya sea analógica o digital, de acuerdo con el movimiento de rotación

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:

5. Ejemplo B: Contador Ascendente/Descendente con display de 7-segemntos


Esquema de conexión:
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ][ ] |
| MOSI2/SCK2 [ ][ ] A5/SCL[ ] |
| 5V/MISO2 [ ][ ] A4/SDA[ ] |
| AREF[ ] |
| GND[ ] |
| [ ]N/C SCK/13[ ] | Terminal "g" del display
| [ ]IOREF MISO/12[ ] | Terminal "f" del display
| [ ]RST MOSI/11[ ]~| Terminal "e" del display
| [ ]3V3 +---+ 10[ ]~| Terminal "d" del display
| [ ]5v -| A |- 9[ ]~| Terminal "c" del display
| [ ]GND -| R |- 8[ ] | Terminal "b" del display
| [ ]GND -| D |- |
| [ ]Vin -| U |- 7[ ] | Terminal "a" del display
| -| I |- 6[ ]~| LED_Rojo(+)
| [ ]A0 -| N |- 5[ ]~| LED_Azul(+)
| [ ]A1 -| O |- 4[ ] | Pin CLK del codificador rotatorio
| [ ]A2 +---+ INT1/3[ ]~| Pin DT del codificador rotatorio
| [ ]A3 INT0/2[ ] |
| [ ]A4/SDA RST SCK MISO TX>1[ ] |
| [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
| [ ] [ ] [ ] |
| UNO_R3 GND MOSI 5V ____________/
\_______________________/
NOTAS:
- Alimentación del codificador rotatorio
- VCC --> +5V de Arduino.
- GND --> GND de Arduino.
- SW --> No conectado.
- El terminal "com" del display conectado a GND a través de una R=220 Ohms
- Cátodo (-) de los LEDS a GND a través de una R=220 Ohms (diferente para cada LED).
Descripción del código:
Se controla un conteo ascendente/descendente (del 0 al 9 y viceversa) mediante el codificador rotatorio.
Si se gira en el sentido horario, la cuenta aumenta y se enciende el LED Azul, y si se gira en el sentido anti
horario la cuenta disminuye y el LED Rojo se enciende.
Sketch Arduino:
1. Procedimiento de la práctica
PRIMERA FIRMA: Ejemplo A

SEGUNDA FIRMA: Ejemplo B


2. Informe de laboratorio
I. Firma del Docente en la Carátula que avale los ejemplos realizados en Laboratorio
II. Hojas con los códigos, resultados y gráficas obtenidas para la 1era y 2da Firma.
III. Conclusiones

Você também pode gostar