En el siguiente tutorial veremos como hacer una grúa de juguete como las que se pueden encontrar en las ferias y salones de máquinas recreativas.
Para el desarrollo de este proyecto utilizaremos conocimientos previos como en control de motores y servos con la IceZUM Alhambra y la creación de bloques con Icestudio.
Excepto la pinza y un par de poleas, el resto de piezas y componentes que he utilizado para montar la grúa, los he reciclado de viejos equipos electrónicos. Al final de la página dejo los enlaces a sitio donde he comprado estos dos artículos.
Las siguientes imágenes son orientativas, para que os hagáis una idea de las piezas que componen la grúa. Vamos a necesitar ocho soportes en T, guías lineales y rodamientos de 8 mm.
Una correa GT 2,5 mm, poleas varias y tres motores de CC con reductora.
Un joystick y una botonera con cuatro pulsadores.
Y una pinza accionada mediante un servo tipo Futaba s3003.
En el siguiente vídeo explico el montaje de la grúa. El montaje es orientativo, si en lugar de una chapa de 30 x 45 tenéis una de 40 x 50 pues también vale, las medidas no son importantes, si otro prefiere utilizar husillos en lugar de correas pues perfecto; se trata de que cada uno se lo monte con lo que tenga disponible.
En un principio el control de la grúa lo desarrollé con Arduino, pero no conseguí una respuesta fluida de los mandos y movimientos -no se me da bien picar código- así que decidí migrar la parte de control a la IceZUM Alhambra. El hecho de que sea una tarjeta que trabaja en paralelo supuso un cambio espectacular. Aunque tuve que añadir optoacopladores para eliminar el ruido -como veremos más adelante- la respuesta al accionamiento de los pulsadores es inmediata y precisa. Más adelante retomaré la parte de control con Arduino para hacer llegar este proyecto al mayor número posible de makers y que cada uno decida como implementar la parte de control.
Una vez terminado el montaje mecánico, lo siguiente es hacer la urna donde colocaremos la grúa y los juguetes. Al final de la página dejo los planos para descargar en formato SketchUp.
Vamos a necesitar una base de MDF de 500 x 600 mm y 16 mm de espesor, cuatro listones de 20 x 20 mm y 560 mm de largo y otros cuatro de 20 x 30 mm y 460 mm de largo. Las maderas para la urna es de lo poco que he comprado para hacer la grúa, en total menos de 20 € en un gran almacén de bricolaje.
Partimos de una base de MDF de 500 x 600 mm a la que atornillamos desde abajo los cuatro listones de 20 x 20 mm formando un cuadrado de 500 x 500 mm. Los 10 cm que dejamos libres en el frontal servirán para montar el joystick y la botonera.
En la parte superior de los listones que forman las columnas, atornillamos los cuatro listones de 20 x 30 x 460 de largo completando la estructura principal de la urna.
Dentro de la urna colocaremos una base auxiliar de 400 x 400 mm que es el área efectiva que se desplaza la grúa. Alrededor de la base atornillamos unas piezas de metacrilato a modo de paredes, dejando un hueco de 12 x 12 cm en el frontal para recoger los objetos que ganamos con la grúa.
Con tres piezas de metacrilato haremos las tapas de la urna. La tapa frontal tiene un hueco en la esquina inferior izquierda por donde caerán los objetos. Dejamos la parte trasera libre para poder acceder al interior.
A continuación montamos el joystick y la botonera en la parte frontal y para terminar introducimos la base auxiliar en el interior de la urna.
El metacrilato lo he reciclado de unos cuadros eléctricos; se coloca en el frontal para evitar tocar accidentalmente el cableado interior. El joystick y la botonera también salieron de viejos aparatos electrónicos.
Para alimentar el circuito voy a emplear una fuente doble, hecha también con componentes retirados de otras tarjetas.
La fuente dispone de dos alimentaciones, una fija de 12V para la IceZUM Alhambra y la Microswitches Interface -tarjeta de la que hablaré más adelante- y otra tensión ajustable que dejaremos en 6V para los motores. Más sobre fuentes de alimentación aquí.
¿Por qué he utilizado dos fuentes? En principio mi intención era alimentar todo con una única fuente de 12V. Pero sucede que los motores de la grúa se movían muy deprisa y como de momento no sé cómo generar señales PWM con la IceZUM para controlar la velocidad de los motores a través de pin Enable del L293, el plan B era reducir la tensión de alimentación de los drivers con una fuente ajustable.
El circuito tiene tres partes: los pulsadores de entrada, el servo que acciona la pinza y los drivers L293D para los motores. Veamos cómo funciona.
Hay ocho pulsadores para el control de movimientos. Cuatro corresponden al joystick para mover la grúa en los ejes X e Y. Los otros cuatro son los pulsadores de la botonera, de los cuales dos son para subir y bajar la pinza y los otros dos son para abrir y cerrar la pinza.
Como los mandos están situados lejos de la electrónica de control, implica que la longitud de los cables es elevada, si a esto sumamos los rebotes inherentes a los pulsadores y microswitches ya tenemos el lío montado en forma de ruido en las entradas de la IceZUM, lo que provoca un mal funcionamiento del circuito.
Para solucionar este problema he colocado cuatro optoacopladores Toshiba TLP504A lo más próximos posible a las entradas de la IceZUM. De esta forma eliminamos el ruido y mejoramos la respuesta del circuito.
He usado el TLP504A porque es el que tenía por casa, pero serviría cualquier otro optoacoplador de propósito general. El funcionamiento del circuito es muy sencillo; las resistencias R1-R8 son para limitar la corriente que circula a través del fotodiodo, igual que en un led normal. Y las resistencias R9-R16 son pull-down para asegurar que previo a pulsar un switch hay un 0 en las entradas de la IceZUM.
En el circuito original el servo se conectaba directamente a la IceZUM, pero he decidido alimentar el servo a través del integrado L200C a modo de protección. Esto es porque durante la fase de pruebas se quemó el servo. Sucede que el servo está programado para girar de 0º a 90º y cuando agarra un objeto el servo sigue intentando cerrarse y hace que el consumo se dispare peligrosamente, de ahí la necesidad de un limitador.
El circuito integrado L200C es un regulador de tensión similar a los L78XX, pero tiene la ventaja de que puede limitar la corriente que suministra a la carga, en este caso el servo que acciona la pinza.
Resumiendo un poco R1 y R2 determinan la tensión de salida. En este caso con R1=1K5 y R2=1K2 tenemos Vcc=5V, perfecto para alimentar el servo. Con R3=1Ω limitamos la corriente máxima a unos 300mA. Para más información puedes descargar el datasheet al final de la página.
Tengo que añadir que el servo que se quemó era el que venía con la pinza, que era de marca nisu. Actualmente tengo puesto un Futaba 3003s. Puede que con el Futaba no tenga problemas, pero más vale prevenir. Si alguno de vosotros se ha enfrentado a este problema en el pasado, me encantaría saber cómo lo ha solucionado.
Por último tenemos los drivers L293D para los motores que mueven la grúa en los tres ejes. He utilizado un pequeño shield que viene con el driver soldado en placa y con los conectores necesarios para el control y alimentación, lo que facilita mucho la conexión.
Tan solo un pequeño apunte. Tal como se aprecia en el esquema, el L293D necesita dos alimentaciones; una para los motores -de lo que corresponda- y otra de 5V para la lógica interna del integrado. Para este último propósito, el shield dispone de un regulador 78M05 que toma la tensión de los motores VIN para sacar 5V y cuyo uso desaconsejo porque si VIN es de poco valor, va a ocasionar un mal funcionamiento del circuito.
Algunos shields traen un jumper para habilitar / deshabilitar el regulador. No es el caso del que aquí estoy utilizando. Lo mejor es inhabilitar el regulador y aprovechar el gran número de salidas GND y 5V de que dispone la IceZUM, para alimentar la lógica interna del L293D a través de los pines marcados con VCC y GND.
Para deshabilitar el regulador desoldaremos la patilla de entrada. Tan solo hay que dar un poco de calor con el soldador y levantar la patilla con ayuda de un pequeño destornillador plano.
Y poco más que añadir. Más información sobre control de motores con la IceZUM y el circuito integrado L293D aquí.
Para reducir el cableado y facilitar el montaje del circuito electrónico, he diseñado con KiCad una tarjeta de interface entre los microswitches y la IceZUM. La PCB la he fresado con mi CNC siguiendo este tutorial. Al final de la página están todos los archivos disponibles para descargar, incluyendo el esquema, la tarjeta, y los gerber por si alguno se anima a hacer la PCB con una fresadora CNC.
El integrado que se ve en la imagen es un LM317 que añadí por si necesitaba alguna alimentación auxiliar, pero que elimine en la versión definitiva de la tarjeta.
Vamos con la parte del código.
Programar la iceZUM ha sido tremendamente sencillo, es una pasada lo que se puede hacer con Icestudio. Basta convertir en un bloque el sketch del ejercicio 2 del Proyecto F2, después se añade como bloque y se conectan las entradas y salidas de acuerdo con el esquema que vimos más arriba.
El servo se controla mediante el circuito marcha-paro que también vimos en el tutorial sobre control de motores. Básicamente lo que hace el circuito es mantener estable su salida a 1 ó a 0 dependiendo de si pulsamos Marcha o Paro. Vamos a aprovechar esta característica del sketch para mantener la pinza abierta o cerrada con una pulsación simple sobre el pulsador correspondiente.
Por último ponemos todo junto y lo subimos a la IceZUM.
Puedes empezar a jugar con la grúa con lo que hemos visto hasta aquí, pero si quieres ir un paso más allá y aprender algo más echa un vistazo a la siguiente actualización.
7 de mayo de 2018
Aunque nos ha quedado una grúa bastante molona, le falta un detalle para dejarla fetén; una tira de ledes RGB para darle un poco de color.
Vamos a pegar una tira de ledes a cada lado de la urna, en la cara interior de los listones que forman la estructura.
A continuación conectamos las dos tiras soldando cuatro cables de una tira a otra.
No, la grúa no es peligrosa ni funciona con alta tensión. Ya dije un poco más arriba que el metacrilato lo había sacado de un cuadro eléctrico 😁
El encendido de los ledes lo controlaremos mediante un driver conectado en las salidas GP1, GP2 y GP3 de la IceZUM. Luego llevamos la salida del driver al conector de la tira de ledes.
En este extremo conectamos la salida del driver
El driver lo he diseñado con KiCad a partir de un Mosfet Driver Module que se utiliza habitualmente con Arduino y al que dediqué este tutorial.
Partiendo del esquema original, he añadido un segundo integrado Mosfet Driver MIC4427 y dos transistores IRF630N. Los Mosfet los he recuperado de un puente en H para motores de CC, los componentes discretos se pueden encontrar fácilmente en cualquier tienda de electrónica y el integrado MIC4427 lo he comprado aquí.
El circuito se alimenta de los mismos 12V que el resto de tarjetas, pero ojo, el consumo ahora se va a incrementar en unos 2A. Tenedlo en cuenta a la hora de dimensionar correctamente la fuente de alimentación.
La tarjeta la he fresado con mi CNC (al igual que la microswitches interface). Lo de fresar PCB´s es alucinante, en media hora puedes tener lista una tarjeta medianamente compleja de 70x100 mm incluyendo los taladros.
Así queda la parte de atrás de la grúa con todas las tarjetas conectadas. De izquierda a derecha podemos ver la Microswitches Interface, IceZUM Alhambra, los drivers L293D para los motores de CC, el driver para la tira de ledes, el regulador de tensión L200C para alimentar el servo de la pinza y el LM317 para alimentar los motores X e Y.
Como siempre, programar la IceZUM para controlar el driver de la tira de ledes ha sido muy fácil. Aunque tampoco me he complicado mucho la verdad.
Aprovechando los nuevos bloques paramétricos que nos ha enseñado Obijuan en el tutorial 18, tan sólo hay que añadir tres corazones, cada uno con una constante múltiplo de la anterior, de esa forma los ledes RGB se encenderán a distintas frecuencias y cuando coincidan dos o más a la vez darán lugar a vistosas combinaciones de colores, ¡a los niños les encanta! y a los no tan niños también :-)
El sketch definitivo quedaría así:
En el siguiente vídeo puedes ver el resultado.
Eso es todo, espero que os haya gustado.
Control de Motores con L293D y la IceZUM Alhambra
Como hacer bloques con Icestudio
Cómo conectar pulsadores e interruptores en la IceZUM Alhambra.
Colección de tutoriales de Obijuan en GitHub y en YouTube
Consigue tu IceZUM Alhambra en alhambrabits.com
En el siguiente enlace puedes descargar los planos de la urna, esquemas con KiCad, Sketch de Icestudio y datasheets