Un encoder con un ventilador

Cualquier robot que se precie necesita órganos sensoriales para tener información del exterior y poder tomar sus decisiones. Los encoder permiten conocer la posición de los ejes y realizar los movimientos en consecuencia.

Ablando estrictamente un encoder (o codificador) es un dispositivo que «codifica» digitalmente una señal de posición analógica. Existen dos tipos: los relativos y los absolutos.

1- Los relativos proporcionan un pulso por cada unidad de movimiento (precisión) y es necesario contar esos pulsos para saber la posición real, respecto de un punto de referencia fijo. Es necesario «recordar» este valor de cuenta entre apagados del procesador, siempre que se tenga la garantía de que no va a haber movimientos en estas circunstancias. Como eso es imposible en la práctica hay que usar otro método: la señal de referencia. Al llegar el eje a una posición fija, por ejemplo tope a la izquierda, se activa un detector que marca la puesta a cero del contador. Tope a la derecha sería el número máximo de cuentas de nuestro encoder (resolución). Se suelen usar dos señales A y B desfasadas 90 Grados. Dependiendo de que señal llegue antes, A o B es posible determinar el sentido del movimiento.
2- Absolutos. Proporcionan una salida de n bits (resolución) dependiendo de la posición del eje. No necesitan referencia, pero al montarlos y desmontarlos del eje hay que ajustar el cero del encoder con el cero mecánico. Se necesitan n entradas en el procesador, aunque los hay vía serie.

Lo dicho para ejes rotativos o angulares puede extenderse a movimientos lineales. Realmente existen muchos otros tipos de detectores de posición: potenciómetros, reglas magnéticas etc.. pero los más utilizados son estos por su sencillez y versatilidad. También existen los «resolver» que proporcionan una señal analógica (en voltios) de la posición.

Si un ventilador brushless no lleva escobillas tiene que llevar otro sistema para conocer la posición del rotor y conmutar las fases de las bobinas: el detector de efecto hall. Podemos utilizar este detector para contar vueltas del rotor.

Ventilador CPUVentilador CPU desmontado

Ventilador de CPU, y su despiece. Ya expliqué en ventiladores como hacerlo.

Esto es lo que queda.

Piezas del ventilador

1- Detector de efecto hall con salida digital, posiblemente un UGNxxxx de allegro.
2- Diodo serie con la alimentación, protege contra inversión de polaridad.
3- Transistores de conmutación de las bobinas.

Eliminamos las aspas del rotor y todos los componentes del circuito, y conectamos los 3 cables directamente al detector de efecto hall.

Mas piezas de ventilador

Ya esta terminado, a probarlo.

Terminado

Conecto los terminales de alimentación a 12V y el tester en posición de voltios a la salida. Giro lentamente el rotor y marco los puntos donde cambia la lectura del tester de 0V a 12V. En la imagen las líneas rectas son las transiciones, los 0 indican 0V y los 1 12V. Bueno funciona, pero solo han salido 2 pulsos por revolución (4 transiciones). Es normal, el imán del rotor solo tiene 4 polos. Como experimento sirve pero no tiene mucha utilidad un encoder de 2 pulsos por vuelta. Podría utilizarse para medir velocidades, pero no posiciones.

Visto el resultado voy a mejorarlo. Desmontaré otro ventilador y cambiaré el detector hall digital por uno analógico, como el usado en el experimento de «usando detectores de efecto hall«. Al ser un detector analógico su salida es proporcional a la intensidad del campo magnético, que es proporcional a la posición de los polos respecto del detector. Polo N sobre el detector = máxima salida positiva, polo S sobre el detector = máxima salida negativa. Cero voltios en las uniones entre polos.

En las fotos superiores el segundo ventilador ya desmontado y vuelto a montar con el sensor analógico. En este caso el conjunto es un «resolver»: proporciona una señal analógica proporcional al ángulo del rotor. Podría servir, por ejemplo, para medir el ángulo de una articulación de un brazo robot. La ventaja frente a un potenciómetro es que no tiene ruido (el potenciómetro tiene un cursor que roza con la capa resistiva y puede dar lecturas falsas), no tiene desgaste (es sin contacto) y puede trabajar a más velocidad.

En la foto inferior la prueba de fuego. Giro el rotor y tiene que dar dos picos de tensión y dos valles por cada vuelta (el imán es de 4 polos, 2 Norte y 2 Sur. Además tenemos 4 cruces por cero en cada giro.

Pruebas

1- Esto es un giro completo del rotor. Como puede verse la frecuencia disminuye porque he girado el rotor a mano y va perdiendo velocidad con el rozamiento.
2- Esto no esta bien. Al mover el rotor aparecen señales de mayor amplitud que el resto, por arriba y por abajo. La amplitud máxima tiene que ser constante para todas las vueltas.

Como creo que ya se cual es el problema voy a hacer otra prueba. Con el rotor mismo montaje de prueba y el rotor parado presiono sobre él en el sentido del eje.

Mas pruebas

Presionando en el sentido de la flecha roja se observa el oscilograma de arriba. Esto es porque el eje tiene demasiada holgura y al presionar se aproxima el rotor al detector. Esto no esta bien ya que el voltaje de salida tiene que depender solo de la posición angular del eje, no de otros parámetros.

Conclusión: no se puede hacer un resolver útil con un ventilador por la holgura excesiva en sentido axial que tiene. Probablemente con un motor brushless de más calidad sí sea posible. En cuanto tenga una unidad de CDROM averiada probaré con el motor de giro del disco. Además estos motores ya tienen los detectores hall analógicos soldados por lo que las modificaciones serán mínimas.