Encoders, pruebas y primer programa

Como soy novato en esto de los PIC primero haré algunas pruebas para ver que funciona lo hecho hasta ahora…

Hoy toca hacer de Frankenstein. Voy a transplantar el cerebro de otro robot a Reciclator 1. Voy a conectar las 8 señales de control (4 de encoders, 2 de dirección y 2 de velocidad PWM) un prototipo tengo hecho y funcionando para hacer algunas pruebas. El otro robot está basado en Intel (mi especialidad) y la utiliza hardware para los contadores de los encoders. De esta forma sé que el programa es correcto y puedo probar el hardware. Como estoy empezando con PIC y CCS no me atrevo a poner el PIC y programar porque si no funciona me costará mucho determinar si el problema es del programa o del hardware. De esta forma ahorro mucho tiempo en pruebas.

Terminado

Las pruebas han sido un éxito… He podido controlar los motores y medir con precisión su velocidad. Con el frecuencímetro observo que los encoders proporcionan 4600 Hz a 5V que corresponden a 9200 Rpm del motor. Estos datos ya los había medido anteriormente, pero ahora tiene que medirlos el robot.

Este es el borrador del esquema de conexionado con el PIC:

Esquema

Ahora hay que programar…

Para la decodificación de los encoders voy a aprovechar la interrupción RB_isr() que se produce cada vez que cambia el estado de los bits 7-4 del puerto B del PIC. De esta forma solo tengo que comprobar como están esos bits e incrementar o decrementar el contador los contadores en consecuencia. Además tengo 4 interrupciones (4 cambios de estado en el encoder) por cada pulso, por lo que multiplico por 4 la resolución original de 30 pulsos por revolución.

Los pulsos de los encoders siguen la secuencia de la foto:

Fases encoder

Las flechas de los flancos pertenecen al sentido «contar». En el sentido «descontar» van al revés. Generalmente solo se usa uno de los 2 flancos de una fase para contar y el estado de la ora fase determina la dirección. En este caso podríamos usar el flanco descendente de B para contar si A esta a 0 o para descontar si A está a 1. Si se usan los dos flancos de una fase se multiplica por 2 la resolución del encoder y si se usan los 2 flancos de una fase y los 2 de la otra la resolución se multiplica por 4. El encoder que uso es de 30 pulsos por revolución, pueden medirse hasta 120 pulsos por revolución

Para decodificar la información de los encoder compongo un número de 4 bit con el estado anterior de las fases A y B del encoder y el estado actual:
Hex Anterior AB Actual AB Pulsos XOR XOR AanteriorBactual
00 00 00 NADA 00 NO IMPORTA
01 00 01 - 01 1
02 00 10 + 10 0
03 00 11 PERDIDO 11 NO IMPORTA
04 01 00 + 01 0
05 01 01 NADA 00 NO IMPORTA
06 01 10 PERDIDO 11 NO IMPORTA
07 01 11 - 10 1
08 10 00 - 10 1
09 10 01 PERDIDO 11 NO IMPORTA
0A 10 10 NADA 00 NO IMPORTA
0B 10 11 + 01 0
0C 11 00 PERDIDO 11 NO IMPORTA
0D 11 01 + 10 0
0E 11 10 - 01 1
0F 11 11 NADA 00 NO IMPORTA

NADA significa que el encoder no se ha movido, no hay nada que cambiar. PERDIDO significa que han pasado 2 pulsos respecto del estado anterior. Esto puede ser interesante si se lee el estado de los encoder mediante una interrupción periódica. Como yo lo leo solo CUANDO CAMBIA (con RB_isr()) el caso NADA no puede darse, no genera interrupción y el caso PERDIDO es imposible: cualquier cambio genera interrupción y no pueden perderse pulsos (a no ser que lleguen tan rápido que no le de tiempo a la interrupción a procesarlos, en mi caso tardo 12 us puedo procesar hasta 833 Khz). Utilizando la función XOR entre el estado anterior y el actual puedo determinar cuando he de contar o descontar y cuando no hacer nada. 00 es NADA, 11 es PERDIDO y otro estado contar o descontar según el estado de A y o B del encoder. Para contar o descontar hago un XOR de de la fase A anterior con B actual: si es 0 es CONTAR si es 1 es DESCONTAR.

A la vista de la tabla de verdad hay muchas otras formas de hacerlo, cada una con más o menos código. Puede contarse siempre que haya un 2,4,B o D y descontarse con 1, 7, 8 o E pero las comparaciones y saltos son menos óptimos que las máscaras…

Ahora llega el problema… Para ver la velocidad tengo que medir los pulsos en un intervalo de tiempo. A 5,5 V el motor gira a 10000 RPM que son 166,6 RPs. Si el intervalo es de 1 segundo tendré un máximo de 30 * 4 * 166,6 = 20000 Pulsos en un segundo. No está mal, pero solo tendré una medida ¡cada segundo!. Es muy poco. Si quiero ejecutar el proceso de regulación cada milisegundo el motor solo se ha movido, a la máxima velocidad, ¡20 pulsos!. Es muy poca resolución para hacer una buena regulación. Hay que llegar a una solución de compromiso entre lectura del encoder (cuanto más milisegundos mejor) y la regulación (cuanto menos milisegundos mejor). Voy a hacer la regulación cada 6,55 ms que corresponde a unas 152 veces por segundo. En ese tiempo al encoder le da tiempo a enviar hasta 131 pulsos. Es poco, pero bastante para regular…

La regulación es el clásico PID aunque yo solo uso PD por ahora:

ErrorVI=ConsignaVI-VelocidadI;
SalidaVI+=((ErrorVI)*KVprop) + ((ErrorVI-ErrorAntVI)*KVder);
ErrorAntVI=ErrorVI;

KVprop y KVder son los parámetros del PID. Habrá que ajustarlos para que no oscile y alcance la consigna con rapidez. Uso enteros de 16 bit con signo para los cálculos, pero en punto fijo 11.5 es decir 11 bits de entero y 5 bits de decimal. Así los cálculos son más rápidos.

Estos son los fuentes de lo hecho hasta ahora: Fuentes C CCS. Están bastante comentados, no es muy dificil seguirlos.

Final

Este es Reciclator1 listo para pintar líneas, no para seguirlas. Así veo si oscila el PID y si las 2 ruedas mantienen sus velocidades. Como innovación he aumentado la tensión de la batería a 9,6 V usando otras 2 células para tener más margen de tensión y he incorporado un acelerómetro basado en el ADXL05 (es un componente obsoleto que tenía en una caja, a saber de donde lo he sacado), aunque el programa no lo usa todavía. No he usado el PIC 16F877 sino que pongo un 16F876 con un zócalo adaptador de 28 a 40 patas.

Alimentación, encoders y etapa de potencia

Después de añadir la segunda fase a los encoders hay que ajustarlos: con las salidas desfasadas 90 grados. Además hay que proveer de 5V para la electrónica a partir de la tensión de la batería y proporcionar control de potencia para los motores.

Lo primero que necesitaremos para comenzar a hacer pruebas es una salida de 5 Voltios para alimentar la parte electrónica. Casi todo el mundo conoce el LM7805 que es la solución más común para conseguir 5 V desde otra tensión inferior a 35 V. Leyendo la hoja de datos aparece un valor «Dropout Voltage = 2 V, es decir que tiene una caída de tensión mínima de 2 V, que sumados a los 5 V que queremos, hace que haya que alimentarlo con más de 7 V. En este caso como he decidido usar baterías de 7,2 V aparece un problema: cuando la tensión de la batería baje de 7 V el regulador no trabajara correctamente y los 5 V descenderán. Puede solucionarse usando una batería de mayor voltaje (con una célula más 8,4 V) pero en cualquier caso esos 2 V de caída del LM7805 se desperdician en forma de calor.

Buscando una solución, que no fuera un regulador en conmutación (demasiados componentes) encontré entre los chismes de desguace este integrado: LM2940CT -5.0. Se trata de un regulador lineal de tensión de 5 V de salida y compatible en patillaje con el LM7805. Sus características son muy similares: entrada hasta 26 V y salida 5V 1A PERO la caída de tensión típica es de 0,5 V a 1A y ¡110 mV para 100mA!. Esto permite que la tensión de la batería disminuya hasta 5,5 V (o incluso menos con < 1A de carga) y el regulador siga dando su salida de 5 V correctamente. No se si puede conseguirse con facilidad en el mercado, yo usaré uno reciclado, pero es una solución estupenda. Además desperdicia menos energía que el LM7805. En esta foto se aprecia el LM2940CT -5.0 con un radiador que además, hace de soporte para una placa de circuito impreso para dar rigidez a los motorreductores.

Regulador

Esta es la lista de materiales:

1 Circuito LM2940CT -5.0.
1 conmutador 1 circuito 2 posiciones.
2 conectores complementarios a los que hayamos usado en las baterías.
4 resistencias de 4k7 para los pullup de los encoder..
Dos resistencias de 150 Ohmios. Son las limitadoras de corriente de los emisores de infrarrojos de los detectores de herradura.
1 condensador 10 microfaradio 16V. Es para desacoplar la alimentación y evitar que el ruido generado por el circuito produzca interferencias en otros componentes.
1 circuito integrado L293D.
1 circuito integrado SN74HC14. Es un séxtuple smith trigger.
2 conectores 2×4 pines macho verticales para circuito impreso.
2 conectores 2×4 pines hembra para cable plano

Este es el borrador del esquema que he utilizado:

Esquema

Los diodos LED emisores de infrarrojos de los detectores de herradura los he conectado en serie dos a dos con una resistencia limitadora cada pareja de 150 Ohmios. La caída de tensión en cada uno es de 1,1 V (puede medirse con un tester alimentando el led a 5 V con 330 Ohmios en serie). La caída de tensión en cada pareja es de 2,2 V y de esta forma la corriente que circula por cada pareja es de: (5 V – 2,2 V) / 150 Ohmios = 0,0186 A. Evidentemente los cálculos los hice al revés: yo buscaba alrededor de 15 mA y me salía 186 Ohmios que aproximé a 180 Ohmios.

Si los pongo los 4 diodos con 4 resistencias limitadoras independientes sale (5 V – 1,1 V) / 0,0186A = 209 Ohmios, que puede ser 220 Ohmios. La corriente real sería (5 V – 1,1 V) / 220 Ohmios = 0,017A.

Si los pongo los cuatro en serie obtengo (5 V – 4,4 V) / 0,0186 = 32,25 Ohmios que pueden ser 33 Ohmios: (5 V – 4,4 V) / 33 Ohmios = 0,0181 A

En el caso de las resistencias limitadoras de los LED hay que tener en cuenta que su misión es DESPERDICIAR la tensión sobrante hasta llegar a la que necesita el LED. Se puede calcular la magnitud de este desperdicio.

Dos resistencias de 150 Ohmios. (5 V – 2,2 V) * 0,0186 A = 0,052 W * 2 resistencias = 0,104 W
Cuatro resistencias de 220 Ohmios (5 V – 1,1 V) * 0,017 A = 0,066 W * 4 resistencias = 0,265 W
Una resistencia de 33 Ohmios (5 V – 4,4 V) * 0,0181 A = 0,010 W * 1 resistencia = 0,010 W.

Esto en muy importante en aparatos alimentados a baterías. Si vamos a poner 4 detectores infrarrojos, por ejemplo en un siguelineas, es mejor poner los emisores en serie y una única resistencia limitadora. El ahorro es muy grande y se alarga la duración de la batería. En mi caso, que la batería es de 640 mAh a 7,2 V puede proporcionar 0,64 A * 7,2 V = 4,68 W, durante 1 hora, los 0,265 W desperdiciados en el caso de los 4 diodos independientes significan el 5,6 % de la potencia de la batería (0,265 / 4,68) * 100 = 5,66 %.

Las resistencias de 4K7 proporcionan, mientras los fototransistores no ven luz, 5 V al al smith trigger que interpreta como «1» lógico. Cuando estos fototransistores ven luz derivan esta corriente a masa y solo queda una pequeña Vce que el smith trigger interpreta como «0».

El mando de potencia de los motores lo realiza un L293D. Es capaz de funcionar desde 4,5 V hasta 36, perfecto para alimentarlo a baterías y puede entregar hasta 600 mA por canal. Como los motores que yo utilizo consumen alrededor de los 200 mA en condiciones normales va sobrado. Hay que tener cuidado porque la corriente a rotor parado es de mas de 800 mA y podría estropear el integrado en caso de choque del robot. Esto puede solucionarse usando un L293B y cuatro diodos, que soporta hasta 1A por canal, o mediante el software que detecte el choque y desconecte los motores. Otro problema, pero este de más difícil solución, es la caída de tensión tan grande que tiene el L293D. En la hoja de datos pone «Source Output Saturation Voltage = 1,4 V» y «Sink Output Saturation Voltage = 1,2 V». Esto significa que cuando un driver da corriente tiene una caída de tensión de 1,4 V y cuando le entra la corriente de 1,2 V. Como para hacer girar el motor hay que poner un driver en modo «source» y otro en «sink» la caída total en el integrado es de 2,6 V. Esto hace que al motor solo le lleguen 7,2 V – 2,6 V = 4,6 V. Estos voltios que «desaparecen» se transforman en calor en el L293D. Podría usarse otro driver de mejores características, como el L6203 pero necesita una tensión de funcionamiento mínima de 12 V. Habrá que tenerlo en cuenta para el próximo diseño.

He conectado unos inversores a las entradas de control del L293D de forma que basta con una señal para cada motor para indicar el sentido de giro. Con las señales de «enable» paro o arranco los motores o regulo la velocidad por PWM.

Así es como va quedando, he puesto velcro autoadhesivo en las baterías y en la placa del robot para que queden bien sujetas, pero que se puedan cambiar son facilidad. En la foto ya he puesto el zócalo para el PIC16F877 con el cristal en el interior, para ahorrar circuito impreso, y el conector para la comunicación.

Terminado

Ya solo queda conectar las salidas de los encoder Ai, Bi, Ad y Bd y el control de motores DIRi y DIRd que es la dirección de giro y Ei y Ed que es la señal de PWM de velocidad al PIC y comenzar a probar.

Esto es todo por ahora. Espero haber dado ideas de a todos.

Conversor RS232 a TTL

Creo que todo el mundo conoce el modo de hacer un conversor de niveles RS232 a TTL usando el MAX232 o similar. Aquí propongo hacer un «cable conversor» que sirva para todos nuestros proyectos donde la comunicación sea ocasional. Esto evita tener que poner un conversor en cada montaje.

Este es el esquema del conversor, no tiene mayor complicación. Seguro que ya lo hemos visto muchas veces.

Esquema conversor

Esta es la lista de materiales:

1 Circuito MAX232CPE. Puede utilizarse cualquier otro compatible o similar, adecuando los valores de los condensadores a las necesidades del circuito.
4 condensadores de tántalo de 1 microfaradio 25V. Algunos circuitos compatibles con el MAX232 solo necesitan 100 nanofaradios.
1 condensador 1 microfaradio 16V. Es para desacoplar la alimentación y evitar que el ruido generado por el circuito produzca interferencias en otros componentes.
1 conector DB9 hembra. Es el que conecta con el puerto serie del ordenador.
1 conector macho o hembra de 4 pines para cable.
N conectores complementarios del anterior para poner en cada uno de nuestros proyectos.
2 metros, o lo que creamos más conveniente, de cable de 4 x 0,25 o similar. Cuanto más flexible mejor.

Esta es la foto de mi conversor con 3 metros de cable. He usado un conector hembra en el cable y pongo un macho en cada circuito que hago.

Cable

Aquí se ve el detalle del conversor. He usado placa de circuito impreso pretaladrada de islas y cable de 0,2 mm aislado para hacer las conexiones. Luego he fijado con pegamento térmico el conector DB9 y el cable para que no se mueva con el uso. Los condensadores los he puesto bajo el circuito integrado, que se monta elevado mediante dos zócalos. La alimentación se obtiene por el conector de 4 pines del circuito con el que comuniquemos.

De esta forma el tamaño es casi como un conector DB9 con carcasa.

Detalle del cable

Una ventaja importante de este sistema es que, además, sustituimos el conector DB9 caro y grande por otro de 4 pines de un modelo a nuestra elección, que puede ser más pequeño y barato. Es importante que este conector de 4 pines que usemos lleve algún tipo de polarizador o «llave» para evitar que podamos conectarlo al revés. El que yo he usado no puede ponerse al revés gracias a la forma de la carcasa de plástico.

Una buena forma de poner llave (o polarizar) en un conector es usar uno de un un pin más de lo necesario. Se corta el pin sobrante del conector macho y se introduce en el conector hembra con pegamento. Además podemos cortar un pin distinto en cada conector de nuestro montaje, de manera que no podamos intercambiar las conexiones por error, aunque los conectores tengan el mismo número de pines.

Pines con key

Utilizando este «cable conversor» ahorramos tener que poner en cada montaje un conversor, útil cuando la comunicación es solo ocasional (si va a haber comunicación RS232 permanente es mejor poner el conversor en el propio montaje). Ahorramos dinero, centímetros cuadrados de circuito impreso, peso y consumo de baterías, poco pero todo cuenta para el total…

Reciclando y cargando baterías

Es fácil encontrar baterías estropeadas en teléfonos móviles, juguetes, videocámaras y muchos otros chismes de electrónica de consumo. Reciclarlas también es fácil cuando se conoce un poco sobre su funcionamiento.

Estos 3 teléfonos móviles (del año 2000) pueden servir muy bien como fuente de baterías para nuestros proyectos.

Teléfonos

Después de abrir los paquetes de baterías comprobamos que cada uno contiene 4 células de NIMh de 650mAh. Abrir los paquetes es fácil, llevan unas pestañas que hace que enganchen las dos piezas de la carcasa, aunque la mayor parte llevan, además, pegamento. Cuidado de no perforar las baterías o hacer un cortocircuito al apalancar para abrirlas.

Ahora hay que comprobarlas a ver cuales están en buen estado. Para ello lo primero es cargarlas. Al ser de NIMh se cargan igual que las de NICA, a corriente constante. Podemos alimentarlas a 65 mA durante 12 horas (1/10 de la capacidad nominal) , aunque yo voy usar 325 mA durante 2 horas (1/2 de la capacidad nominal: 650mAh). En este último caso hay que acordarse de respetar el tiempo de carga para no sobrecargarlas. Para conseguirlo coloco una resistencia de 2,7 Ohmios en serie con la batería y en serie con un amperímetro y alimento con una tensión variable hasta conseguir los 325 mA. Conforme la batería se carga disminuye la corriente y hay que aumentar la tensión. Esto se soluciona con el cargador que propongo más adelante pero de momento sirve para probar las baterías. Si no es posible conseguir la corriente deseada con una tensión prudencial es que hay una célula en la serie que esta averiada (demasiada resistencia interna). En ese caso hay que intentar cargarlas una a una. La que no absorba corriente es la averiada. Se elimina de la serie y se continua con una célula menos en esta batería.

Cargando baterias

Una vez que se han cargado (una batería de NICA o NiMh tiene 1,42V recién cargada, en vacío) se conecta un voltímetro en paralelo con UNA de las células y se descarga con 1/5 de la corriente nominal. En el caso de 650 mA son 130mA que corresponde con una resistencia de 9,2 Ohmios (1,2V nominales / 0,130 A), podemos usar una de 10 Ohmios. La resistencia disipará (1,2 V * 0,130 A = 0,156 Watios), hay que dimensionarla de forma adecuada porque puede salir un valor alto de potencia y calentarse mucho con baterías de alta capacidad. Si la tensión se mantiene por encima de 1,2V más de un par de minutos la batería está bien (puede que envejecida, pero no averiada). Si la tensión cae rápidamente la baterías esta averiada, no ha aceptado la carga y hay que desecharla. Estas baterías hay que depositarlas en los contenedores adecuados, son muy contaminantes.

Estas pruebas son muy genéricas, pero sirven para aproximarnos al estado cada célula de las baterías. En mi caso están bien todas las células. Desmonto las 3 baterías de 4,8 V (4 células) y construyo dos de 7,2 V (6 células). En la foto pueden verse los materiales que voy a utilizar para construir un cargador para dos baterías, con dos modos de carga: rápida de 2 horas o lenta de 12 horas.

Piezas cargador

Este es el listado de materiales:

2 baterías de 7,2 V 650 mA recicladas.
2 conectores de 3 pines para las baterías.
Tubo termoretractil para sujetar las baterías. Pueden pegarse con pegamento térmico pero luego es más complicado desmontarlas si se avería una célula. No aconsejo cinta aislante porque se ablanda con el calor.
Cable y conector de 3 pines. Cada par es de un color distinto para distinguir las baterías. Uso un conector de 3 pines aunque solo hay 2 cables porque así no es posible conectar la batería al revés, importantísimo.
Alimentador de 12 V 700 mA CC reciclado de un switch ethernet roto.
Conector hembra, adecuado al macho del alimentador utilizado.
Radiador reciclado de un 486.
3 Tornillos de 3 mm.
2 separadores aislantes, en la foto no se ven las láminas de silicona.
2 reguladores LM317
Circuito impreso de islas pretaladrado.
2 Diodos 1N4007.
2 conmutadores de 1 circuito
Juego de resistencias. Depende de las corrientes de salida. En este caso 2 de 18 Ohmios para la salida de 65 mA y dos de 3,7 Ohmios para la de 325 mA (construidas con el paralelo de 3,9 y 100 Ohmios).
1 Resistencia de 1K y un led verde para un indicador de funcionamiento, no se ven en la foto.

Este es el esquema del cargador. En la posición A del conmutador se carga a 325 mA 2 horas y en la B a 65 mA 12 horas. Es posible cargar las 2 baterías a la vez, con la misma o distinta corriente. Cuando se usa el modo de carga rápida hay que acordarse de respetar el tiempo de carga, el circuito no lleva temporizador y tenemos que desconectar la batería nosotros mismos. En el modo de carga lenta a 1/10 de la corriente nominal no pasa nada si mantiene más de 12 horas.

Esquema  del cargador

Este cargador está basado en una nota de aplicación de National sobre el LM317. El regulador trata de mantener entre la pata ADJ (R) y Vout (S) una tensión de 1,25 V (en otros datasheet del LM317 dicen 1,20 V, depende de fabricantes). Si se usa el montaje de la foto en la resistencia siempre caen 1,25 V y la corriente de salida depende de la fórmula: Iout=1,25/R1 los límites de R1 dependen de la mínima y máxima corriente regulable por el LM317.

Las fórmulas usadas para los cálculos son:

Valor de la resistencia para una corriente dada: R = 1,25 V / Iout
Potencia disipada en la resistencia (1,25 V * Iout) Watios. Para 3,75 Ohmios (3,9 en paralelo con 100 Ohmios) 1,25 V * 0,333 A = 0,416 basta con una resistencia de 1/2 Watio. (Realmente al haber un paralelo de dos resistencias de distinto valor hay que hacerlo independiente para cada resistencia). Estos calculos solo dependen de la corriente de salida, son independientes de la tensión.
Potencia disipada en el regulador: caen (Vin – 1,25 V – Vout) Voltios, multiplicado por Iout salen los Watios. En el peor caso: batería descargada completamente Vout = 0 V sale: 12 V – 1,25 V – 0,7 V – 0 = 10,05V (hay un diodo en serie con la batería donde caen 0,7 V). Esta es la máxima tensión que entregará el circuito que lo limita a cargar baterías de menos de 10 V. Para otras baterías de mayor tensión hay que usar más de 12 V de alimentación y repetir los cálculos de potencia disipada en el regulador. La potencia es: 10.05 V * 0,333 A = 3,35 Watios. Con un pequeño radiador bastará. Conforme la batería se valla cargando Vout aumenta y la disipación disminuye.
Corriente en el LED verde 10 mA: sale una resistencia de 12 V – 2 V / 0,010 A = 1000 Ohmios. La caída de tensión en los LED verdes es de 2 V, en los rojos de 1,5 V.
Corriente máxima del alimentador = Iout1 + Iout2 + ILED = 0,333 A + 0,333 A + 0,01 A = 0,676 A. Bastará uno de 700 mA

Los 325 mA es el valor teórico que busco, se consiguen con 3,7 Ohmios, pero como uso un valor real de 3,75 Ohmios salen 333 mA. Hay que repetir los cálculos para 0,65 mA, salen unos valores de disipación tan bajos que con 1/4 de Watio de resistencia y el LM317 sin disipador funcionaría.

Cargador LM317

Este es el cargado terminado y cargando las dos baterías.

Cargador

Esta es la cara de «pistas» (yo he usado cables) del cargador. Solo falta pegar una lámina de plástico para protegerlo de cortocircuitos.

Cargador pistas

Espero que haya quedado claro como construir este cargador y las fórmulas para hacerlo «a la medida», en cualquier caso acepto consultas…

La tercera rueda y el chasis

Como ya comente anteriormente para hacer ruedas sirve cualquier cosa redonda a la que se pueda poner un eje. Aquí construyo una rueda loca usando piezas de un contador de consumo eléctrico y un clip. Como chasis utilizaremos un material de «alta tecnología»: fibra de vidrio.

Este es el contador mecánico, usado también en cuentakilómetros de coche. El clip sirve de eje, las varillas que contiene el contador son muy aceradas y se rompen al intentar doblarlas. Una de las ruedas numeradas hace de rueda loca y la otra de soporte con libertad de movimiento. Los tornillos de 2,5mm sirven para sujetar el soporte al chasis del robot y los 4 prisioneros inmovilizan cada uno de los elementos, pero permitiendo el giro.

Contador mecánico

Esta es la rueda ya terminada y fijada a un cartón que hace de chasis. Solo hay que enderezar el clip y retorcerlo de nuevo de la forma adecuada, meter las ruedas y fijar los prisioneros. Dos taladros en la rueda que hace de soporte para los tornillos de 2,5mm y ya está.

Rueda loca

Aunque parece una tontería esta rueda gira con muchísima suavidad y el alambre del clip hace de muelle, con lo que se consigue un poco de suspensión muy adecuada para disminuir las vibraciones en el chasis.

En la fotografía de abajo puede verse la placa de circuito impreso de fibra de vidrio que hará de chasis y las dos unidades motrices junto con la rueda loca.

Reductores

Para sujetar las los motorreductores al chasis lo mejor es hacerlo directamente del eje de las ruedas, aprovechando la rosca sobrante del tornillo y usando algún acoplamiento en ángulo recto. Yo he usado unos trozos de aluminio de guía de circuito impreso. La rueda loca va atornillada sobre el chasis con tres tadros, uno para el eje y dos para los tornillos de sujeción. Así queda el chasis ya terminado. El mismo circuito impreso sirve para soldar los componentes electrónicos en las áreas libres.

Chasis montado

Unidades de tracción: motorreductores

Vamos a construir dos unidades de tracción: motor+reductor+rueda idénticas, para poderlas utilizar en un robot de tracción diferencial. Todo ello, como no, con materiales de reciclaje. Utilizaremos piezas de CD-ROM, impresora y disquetera.
Es un ejemplo de lo que puede hacerse con la chatarra informática y algo de imaginación.

Comenzamos con una cabeza lectora de una unidad grabadora de CDROM. Serán necesarias dos iguales. Lo que vamos a aprovechar es el motor y el reductor, que en este caso es angular. Casualmente en este modelo el motor lleva un encoder de una fase en el eje del motor, también podremos usarlo.

Carro CD-ROM

Se eliminan las guías y la cabeza y se corta el el chasis para dejar únicamente el motor y el reductor.

Carro cortado

Este es el despiece de lo que queda: el motor es un FF-050SK-13130 que funciona entre 2V y 4V y da 0,59 mNm a 7600 RPM. No es mucho pero con una reducción adecuada puede mover con soltura un microrobot. Puede verse el detector de herradura del encoder montado en un circuito impreso y el disco ranurado montado en el eje del motor. El encoder es de 30 pulsos por vuelta y la reducción es de 16 dientes a 53, es decir 3,3125:1, bastante poco.

Despiece

Como la reducción que proporciona los piñones en ángulo que ya tenemos es poca añadiremos otro piñón más. Compruebo entre la chatarra y tengo este reductor de una unidad de CDROM creative X24 (que malas salieron). Ya comenté en alguna ocasión que prefiero guardar los motores junto con sus reductores, suelen resultar más útiles. El piñón de la izquierda tiene el mismo módulo que el del reductor anterior y podría servir. La reducción resultante es de 16 dientes a 89, es decir 5.5625:1 que junto con el conjunto anterior se consigue una reducción total de 18,426 a 1.El resto del reductor y el motor puede utilizarse para otra unidad de tracción en el futuro.

Reductor

Como ruedas utilizaremos los rodillos de tracción de papel de una impresora HP690C. Estas máquinas llevan 3 rodillos en un eje de 8mm. Con una sola impresora destripada ya tenemos las dos ruedas, y la otra de repuesto. Como eje servirán unos tornillos de M4 que coinciden con el diámetro interior de los rodamientos de disquetera. El diámetro exterior de estos rodamientos es 8mm, perfecto para ajustarlos al taladro del eje de las ruedas. Las ruedas tienen un diámetro de 51,5 mm. En la foto pueden verse las ruedas con los rodamientos y los tornillos que hacen de eje. En una esta ya pegado el piñón de la transmisión.

Ruedas

En esta foto puede verse los dos conjuntos ya montados.

Ruedas montadas

Conecto el encoder al frecuencímetro (usando el montaje que describí en «midiendo las revoluciones de un motor») y alimento el motor con distintas tensiones. Utilizo otro cuentarrevoluciones para medir la velocidad de la rueda.

Voltios Hz encoder  RPM motor RPM rueda M/S V lineal rueda
2V 1800 3600 195 0,5258
3V     285,6 0,7701
4V 3800 7600 402 1,084
5V 4600 9200 514,2 1,380
6V     612 1,6502

Como el encoder es de 30 pulsos por revolución y 1 minuto son 60 segundos RPM = (HZ/30) * 60seg. Puede verse que a 4V las 7600 RPM coinciden con lo dicho por el fabricante del motor. A esta tensión se consigue una velocidad lineal, con estas ruedas de 51,5 mm de diametro, de 1,084 m/seg que son 3,9 Km/h.

Para rizar el rizo acoplo otro detector de herradura (obtenido del detector de pista 0 de una disquetera de 3 y 1/2 pulgadas) al disco ranurado del encoder para obtener la segunda fase del encoder y poder determinar el sentido de giro. Hay que ajustar la posición para que la salida esté desplazada 90 grados respecto del que había de origen. De esta forma, con un encoder de 2 fases de 30 pulsos por vuelta, se puede hacer un control muy preciso de la posición y de la velocidad. También se puede acoplar un mecanismo de ratón de bola para hacer el encoder completo, pero no con este reductor, no hay sitio.

Conjunto

Como no puedo resistirme a la tentación de ver las ruedas corriendo ya mismo, monto un triciclo con ¡un cartón!, pegamento térmico, una rueda de un mueble, las unidades de tracción y una pila de 4,5 V. ¡A correr!!!

Carrito

Compruebo que puede salvar obstáculos como lapiceros, alicates etc. El peso del conjunto es de 290 gramos, lo lastro hasta 600 gramos y compruebo que sube pendientes de 30 grados con mucha soltura. Hay que lijar la goma de las ruedas porque se endurece superficialmente y no agarra bien (fallo común en todas las impresoras hp series 500 y 600 y reconocido por HP). El siguiente paso es construir un chasis en condiciones e ir pensando en la electrónica de control.

Conclusión: en un par de horas se han conseguido dos unidades de tracción con unas prestaciones bastante buenas ¡gratis! y hemos aprovechado unos cuantos cacharros viejos.