Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCION
Un artilugio en la industria que realiza esta tarea se llama "encoder". Hay mucha
informacin al respecto en internet. Su funcionamiento es complejo, aunque el principio
bsico de funcionamiento es sencillo de entender.
Existen 2 tipos bsicos de encoder o sensores de giro: absolutos e incrementales. Los que
explicaremos aqu son de tipo incremental, como los de los motores del NXT.
En pocas palabras, este sensor se basa en leer un disco codificado en colores blanco y
negro con un sensor de luz IR montado en barrera, como el de la imagen de arriba del todo,
el logo.
MATERIAL
Para construir este sensor, usaremos unos discos codificados. Puedes crearlos t mism@,
copiarlos de esta pgina con un pantallazo o usar alguno de los programas que existen por
la red. Te pongo un par de enlaces.
El primero sera este. Hay que descargar un pequeo programa y es el que yo he usado, ya
que te permite crear tus propios cdigos a medida. Adems, en la pgina del Codewheel
Generator encontrars amplia informacin sobre los encoders y el programa para descargar.
Una opcin ms esttica es crear una imagen especular del disco y pegarla por detrs. As,
la cara de detrs no se quedar en blanco. Para eso, simplemente pegas la imagen en un
programa de dibujo tipo Paint y lo giras verticalmente. Esa imagen la podrs superponer
por la parte posterior de la primera.
Incluso tienes la opcin de usar como disco codificado una rueda original de LEGO:
A uno y otro lado podras poner un LDR y un LED. El funcionamiento sera el mismo. Lo
nico es que el LDR no tiene una respuesta tan rpida como este sensor, y no se qu tal ira,
pero el principio de funcionamiento es el mismo.
Pinchas por su centro en un eje como en la foto superior y conectas el eje a un motor, lo
pones en marcha y le pones encima un sensor de luz: qu pasar?. El sensor de luz leer
sucesivamente blanco y negro. En valores "lgicos", leer ceros y unos. Contando el
nmero de cambios, sabremos la velocidad de giro. Concretamente con esta rueda, cada 8
cambios de blanco a negro, tendremos que el eje (y el disco) habr dado 1 vuelta.
Este tipo de sensor de giro se llama "encoder incremental" ya que segn va dando vueltas,
va aumentando el contador de las marcas de forma progresiva. Si paras el programa, el
contador se queda a cero y pierde la informacin de cunto haba avanzado. Los motores
del Mindstorms NXT llevan incorporados sensores de este tipo: el Built-in rotation sensor.
Realmente, no sera necesario imprimir toda la rueda anterior. Una pequea franja justo por
donde lee el sensor, sera suficiente. La siguiente es la misma rueda pero con 16 rayas
negras.
Para poder hacer pruebas y programar el sensor de rotacin, usar 2 ayudas. La primera es
el motor del NXT en lugar de un motor de PF. Esto es porque al motor del NXT le puedo
decir las vueltas que quiero que gire y comprobar si el sensor ha leido bien. La segunda
ayuda es usar el siguiente disco para poder contar visualmente las vueltas sin volverme
(ms) loco:
POSICION
Cuantas ms marcas pongas en el diseo del disco, ms precisin tendr. Con nuestro
ltimo ejemplo de 16 marcas, 8 marcas quieren decir "girar el eje 180" y as puedes parar
el eje en una posicin determinada. Sera el equivalente de los "Degrees" del motor del
NXT pero aplicado a un motor PF. En realidad, aplicado a cualquier eje.
ESQUEMA
El sensor que usaremos para leer el disco es el que figura arriba del todo, en la cabecera. Es
un sensor por IR, que monta un emisor y un receptor enfrentados en barrera. Si te fijas,
MONTAJE
Una vez has imprimido los 2 discos idnticos, los has pegado y los has atravesado con un
eje, ya podemos hacer el montaje. Como habrs visto, el sensor tiene 4 patas. Si lo montas
tal cual en el board, comunicars directamente los pines del emisor y los del receptor.
Para montarlo adecuadamente, es necesario girarlo un poco de forma que los 2 pines
positivos queden pinchados en la misma columna, y por tanto unidos segn el
esquema anterior.
Aqu se ve el montaje con el motor del NXT para las pruebas en lugar del motor PF.
En detalle:
Aunque para el montaje final y el video he usado el motor PF, que permite modificar la
velocidad con el mando de IR. La verdad, cuando le das a velocidad mxima parece
mentira que pueda contar las marcas... y lo hace perfectamente.
En la foto se aprecia que no hay conexin entre el motor PF y el NXT, son circuitos
diferenciados. Y de esta forma el NXT leer la velocidad de un eje "ajeno" a l, incluso a la
velocidad que se ve en el video.
PROGRAMA
Sin duda este programa es el que ms quebraderos de cabeza me ha dado. Cuenta el nmero
de marcas y, dividiendo por 16, el nmero de vueltas que ha dado. Lo que no detecta es el
sentido de giro. Para eso, tendremos que programar el motor adelante o atrs.
Habitualmente por tanto no har falta su deteccin, aunque hablamos de ello ms adelante.
Pulsa sobre el icono para descargar el programa. El disco debe tener 16 marcas negras. Si
no, simplemente adapta el final del programa (el ltimo bucle) a tu propio disco. El sensor
no deja de ser un sensor de luz. Si tienes problemas con el funcionamiento (en la
deteccin), puedes modificar ligeramente los valores de los bloques de comparacin.
Fijate que las marcas negras no estn alineadas. La marca negra de la corona interior est
justo en el centro de la marca negra que tienen encima.
Hay muchos diseos posibles. Para explicarnos, dibujar una lnea roja sobre el disco desde
el centro hacia un lado a modo de "meta" y sobre esa lnea pondremos los dos sensores
alineados.
En esas posiciones hacemos que los sensores vayan midiendo. Los sensores leen blanco o
negro y miden a la vez. Un sensor (el 1) lee la corona de fuera y el otro (el 2) la de dentro.
Imagina ahora que la rueda gira en el sentido de las agujas del reloj.
Quin llega antes a la meta (linea roja), la marca negra de la corona externa o la interna? Y
si ahora haces que gire en sentido contrario a las agujas del reloj, qu marca negra llega
antes a la meta?.
As es como se determina el sentido de giro. Una opcin alternativa a esta que puede
facilitar un montaje casero sera separar ambas coronas en 2 discos. Cada disco con solo
una corona. Y que cada sensor leyera uno de los discos.
Con esta opcin, podramos contar las vueltas, determinar la posicin y el sentido de giro.
El disco que he usado para esta opcin es el siguiente, incluyendo su imagen especular para
pegarla por la parte posterior:
Este disco surge de eliminar sectores negros en el disco con 8 marcas negras hasta dejarlo
como se ve en la imagen.
Mis intentos de programacin van en la lnea siguiente: el sensor nos da una seal
(pongamos un 1) cuando est sobre el negro y un 0 cuando est sobre el blanco.
El tiempo que el sensor da un 1 es el mismo cada vez, ya que las marcas negras tienen el
mismo "grosor". Sin embargo, el tiempo que el sensor permanece aportando un 0 es distinto
en cada franja blanca. Es decir, el sensor permanece tiempos dstintos en cada una de las
franjas blancas.
Por poner un ejemplo. El sensor tarda 100 ms (valor imaginario) en cruzar la banda blanca
ms estrecha. 200 ms en cruzar la intermedia y 500 ms en la ms ancha. Estas proporciones
en los tiempos se mantienen independientemente de la velocidad del motor, ya que son
proporcionales a lo ancha que sea la franja blanca.
Cuando gira en sentido horario, los tiempos sern 100, 200, 500, 100, 200, 500, 100, etc. Y
cuando gira al revs, los tiempos sern 100, 500, 200, 100, 500, 200, 100, etc. Y de ah
podremos determinar el sentido de giro, ya que la secuencia cambia.
OTROS USOS
Como complemento de uso a este sensor, tienes tambin un proyecto completo (espero que
interesante) para usarlo como Tacmetro y Velocmetro. Incluye all un video adicional
para que veas su funcionamiento y el programa correspondiente para su uso. Con este
proyecto podrs construir un panel de control completo, como el de un coche real, de
indicadores.
Y como final, otra idea alterntiva para su construccin: un anemmetro. Construyes uno y
usas el encoder para contar las revoluciones y de ah, la velocidad del viento. Lo que no se
me ocurre es cmo calibrarlo...
(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.
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:
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.