You are on page 1of 6

CONTADOR DE PULSOS DE ENCODER CON ARDUINO

(Recomiendo conocer primero el funcionamiento de los encoders, pueden ver


este link y/o buscar por otras fuentes)
Los encoders tienen como principio generan seales digitales en respuesta
al movimiento, sea de un disco o cinta perforada.
stos se utilizan, en su mayora de las aplicaciones, para el control de posicin
y/o velocidad de un motor. Considerando bsicamente el nmero de pulsos ledo
y la cantidad de ranuras que existen en un disco o cinta para controlar una
posicin especfica o una velocidad.

Sin embargo, este post se centrar en realizar el conteo de pulsos que genera
un encoder. Para ello se necesitar el sensor optoacoplador y el disco o cinta
ranurada, resistencias que se especifican en el circuito ms adelante y la placa
Arduino.
Recomendacin: Si se desea fabricar uno disco recomiendo utilizar programas
(como OPTICAL ENCODER CODEWHEEL GENERATOR) que puedan disear
stos e imprimirlos en cartulinas, tres o cuatro y pegarlas; pegar una hoja de
cartulina impresa en un cartn. Pero no utilizar plstico a no ser que se pegue
una cartulina impresa a cada lado.

Bueno, el sensor optoacoplador generar pulsos de acuerdo a cuantas franjas


blancas o transparentes detect. Estos pulsos sern contados por Arduino.

Como se sabe la sensibilidad de los sensores, es posible que en algunos casos


no est claro un pulso y exista errores pequeos que con el tiempo se van
haciendo muy notorios y eso afecta el objetivo final. Razn suficiente para
aadir un circuito extra un programa especfico. En este caso expongo el
primero, aadiendo un disparador Schmitt (74LS14) previniendo dicho ruido.

Efecto del uso del schmitt trigger


(B) en vez de un comparador (A)

Como se conoce los pulsos tienen nicamente dos respuestas ALTO(1) y


BAJO(0), que da lugar a conectar a una entrada digital del Arduino, como se
observa en la imagen.

Toma en cuenta el esquema del CI 74LS14. Para este caso nicamente se utiliza
4 pines de conexin, puedes considerar cualquier par que te sea ms cmodo
(Ix y Qx) y los de alimentacin (VCC y GND).

Considerando al optoacoplador:

La configuracin de estos sensores puede ser tambin de la siguiente manera


(considerando que su estructura interna es la misma).

El programa es de la siguiente manera:


boolean anterior = 0;
boolean actual = 0;
int contador = 0;
void setup()
{
Serial.begin(9600);
pinMode(2,INPUT);
}
boolean debounce(boolean dato_anterior)
{
boolean dato_actual = digitalRead(2);
if (dato_anterior != dato_actual)
{
delay(10);
dato_actual = digitalRead(2);
}
return dato_actual;

void loop()
{
actual = debounce(anterior);
if ( anterior == 0 && actual == 1)
{
contador++;

delay (100);
Serial.println(contador);
anterior = actual;

De esta manera acoplando un disco o cinta, como se mencion anteriormente,


slo para hacer la prueba podran interrumpir con una cartulina o cartn
interponindolo en el optoacoplador para observar el conteo de pulsos
generado.

Considere contar tambin con un mdulo para Arduino que compone de este
sensor y todo el circuito adicional acondicionado. ste tiene salidas digitales y
analgicos, los digitales ayudarn a ejecutar la tarea de contar los pulsos como
se present en este post. Mientras los analgicos ayudarn a usar a este sensor
como retroalimentacin en un lazo cerrado y as aplicar PID por ejemplo.