4xidraw

Introducción

Axidraw[1] es un plotter para poder utilizar bolígrafos y escribir sobre cualquier superficie plana. Axidraw se vende como un producto final en el que se adquiere el plotter ya montado y calibrado por un precio de unos 450$. Este plotter no deja de ser un robot cartesiano con dos ejes de movimiento en X e Y, por así decirlo, una versión simplificada de una impresora 3D. Gracias a ello, en la comunidad maker ha aparecido una versión DIY de axidraw, llamada 4xidraw.

4xidraw ha sido desarrollado por Miguel Sanchez (Misan). Todo el proceso de montaje ha sido documentado  tanto en su blog personal [2] como en varias páginas de internet [3], [4]. Observando la lista de materiales necesarios, vi que disponía de la mayoría de materiales a falta del kit de correa GT2 y varios rodamientos. Tras comprarlos en una tienda especializada en impresoras 3D[5], tenía todo lo necesario para iniciar el desarrollo de 4xidraw.

Desarrollo

Durante el desarrollo del proyecto he usado un repositorio alojado en github[6]. Donde se encuentran todas las modificaciones que he desarrollado en el proyecto.

El montaje mecánico de la estructura principal no me llevo más de dos horas, gracias su similitud con una impresora 3D. En la Figura 1 se muestra el plotter ya terminado.

IMG_1544
Figura 1. Plotter DIY 4xidraw. Montaje mecánico del plotter.

Eje Z

La parte que más tiempo me llevo montar de manera correcta fue la encargada de sujetar el boli. Podríamos denominarlo como el eje Z de una impresora 3D. A pesar de seguir las indicaciones de Misan, no logré que funcionara de manera correcta. Quizás fue debido a las varillas lisas que usé, que eran recicladas de un stor de ventana. Estas varillas eran de 3mm en lugar de 4mm, por ello tuve que modificar las dos piezas encargadas de la función del eje Z. Para poder mejorar el accionamiento de subida y bajada del boli, usé la pieza usada como carro para poder hacer un accionamiento biela-manivela con el eje del servo. En la Figura 2 se muestra el montaje del carro. De esta manera, es el propio servo el que obliga al carro a situarse en una posición determinada.

IMG_1547
Figura 2. Eje Z de 4xidraw. Para poder usar las varillas lisas que tenía, tuve que modificar el orificio de los taladros pasantes

 Firmware

El firmware que usa Misan es una versión modificada de GRBL[7] para poder controlar el servo. La versión de este firmware es específica para usar con un arduino UNO y una CNC Shield. Sin embargo, yo disponía de un arduino Mega y una RAMPS y no logré encontrar ninguna versión de GRBL con la modificación del servo y que usará el pinout de la RAMPS.

Así que decidi usar la última versión de Marlin que se suele usar en las impresoras 3D y modificar el plugin que generaba las trayectorias desde inkscape, para poder generar correctamente el movimiento del eje Z del plotter.

Tras varios intentos, logre generar de forma correcta un gcode capaz de dibujar la imagen que yo quería usando Marlin.

Conclusiones

A pesar de que el proyecto ha sido desarrollado por una única persona en su tiempo libre, la información que he encontrado en internet me ha sido de gran ayuda, así como la  ayuda ofrecida por Misan.

Invito a todo aquel que quiera desarrollar este proyecto que se anime a desarrollarlo, ya que    a pesar de no tener conocimiento de impresoras 3D el montaje de 4xidraw es mucho más fácil que el de cualquier impresora 3D.

Referencias

  1. http://shop.evilmadscientist.com/846
  2. http://fightpc.blogspot.com.es
  3. https://www.youmagine.com/designs/4xidraw
  4. http://www.instructables.com/id/4xiDraw/
  5. https://www.moebyus.com
  6. https://github.com/darkomen/4xiDraw
  7. https://github.com/misan/grbl-servo

 

4xidraw

Cómo usar el buspirate V4 como conversor Serial

Hay muchos tipos de convertidores USB serial, para poder comunicarnos con varios dispositivos. Sin embargo, yo uso el buspirate. Que es una placa muliusos, entre las que incluye conversor USB a serial (mode UART). Vamos a ver dos ejemplos para comunicarnos con un arduino que está mandado información por un puerto serie usando la librería SoftwareSerial y para comunicarnos con el puerto serie de una raspberryPi.

Yo estoy usando el Buspirate V4 con la versión V6.2 beta1

Buspirate-Arduino

Las conexiones que hay que realizar son las siguientes:

Buspirate Arduino
Tx(MOSI) Rx
RX(MISO) TX
GND GND

Una vez que ya están hechas las conexiones, abrimos una comunicación serie del ordenador al BusPirate, en mi caso uso Mac, y usaré la aplicación Screen.

$>screen /dev/tty.usbmodem00000001 115200
$Hiz>m # Para entrar en la configuracion
$Hiz>3 # Establece el modo UART
$Hiz>4 # para una velocidad de 4,800 bps (SoftwareSerial)
$Hiz>1 # para 8 bits, sin paridad
$Hiz>1 # para 1 bit de parada
$Hiz>1 # Espera de 1
$Hiz>2 # para normal, 3.3v de salida
$Hiz>(1) # para activar Transparent bridge mode
$Hiz>y # Para empezar el modo puente

De este modo empezaremos a ver por pantalla lo que nos manda el arduino. Esto lo podemos usar para crear u puerto serie virtual de depuración de arduino.

Buspirate-Raspberry pi

Buspirate RaspberryPi
Tx(MOSI) Rx(pin 8)
RX(MISO) TX (pin 10)
GND GND(pin 6)

Una vez que ya están hechas las conexiones, abrimos una comunicación serie del ordenador al BusPirate, en mi caso uso Mac, y usaré la aplicación Screen.

$>screen /dev/tty.usbmodem00000001 115200
$Hiz>m # Para entrar en la configuracion
$Hiz>3 # Establece el modo UART
$Hiz>9 # para una velocidad de 115,200 bps
$Hiz>1 # para 8 bits, sin paridad
$Hiz>1 # para 1 bit de parada
$Hiz>1 # Espera de 1
$Hiz>2 # para normal, 3.3v de salida
$Hiz>(1) # para activar Transparent bridge mode
$Hiz>y # Para empezar el modo puente

Una vez que está en espera, Pulsamos en cualquier tecla y ya nos habilita el login en la raspberry

Cómo usar el buspirate V4 como conversor Serial

Libreria para renacuajoBot

Aprovechando la librería de arduino que empezaron a escribir Juan Gonzalez y David Estevez, he añadido nuevas funcionalidades para trabajar de manera cómoda con el renacuajobot.

He añadido nuevos métodos para añadir un servo, indicándole el pin en el que está conectado, y la posición en la que está del robot.

He hecho lo mismo para añadir los sensores, en este caso solo están operativos los del sigue lineas.

Por último, he agregado una función que automáticamente sigue las linea sobre la que esté posicionado el robot. Lo siguiente que haré será que el propio robot busque las lineas a seguir dentro de un rango

El nuevo código lo podeis encontrar en mi github.

Libreria para renacuajoBot

Sigue lineas renacuajoBot

Como dije anteriormente, los sensores de IR del kit de robótica de Bq, no tienen un diodo a la salida del pin de signal que impida el paso de corriente del pin al circuito. Por ello, al cometer un error en el montaje, lo conecté a una salida PWM del arduino que en ese momento estaba encendida, con lo que me cargue el sensor y no era capaz de detectar el cambio de color.

Ahora que he podido sustituirlo ya he terminado la primera versión del renacuajo para que siga lineas. La programación es muy sencilla, y lo explica José Luis V en su post.

Lo siguiente que quiero hacer es implementar la programación de los sensores y del propio regulador para seguir las lineas en la librería del miniskybot y su programación sea tan sencilla como ejecutar una función. Cuando los exámenes me den tregua empezaré a programarlo.

Sigue lineas renacuajoBot

RenacuajoBot

El primer robot que han diseñado desde BQ para usar el kit de robótica, ha sido renacuajoBot. Este fin de semana he aprovechado para imprimirme una versión e ir haciendo pruebas.

2014-01-05 23.42.18La primera cosa que he probado han sido los servos conectado a la placa y probar su correcto funcionamiento. Las pruebas han sido estar cambiando la dirección del servo de una manera un tanto brusca, de esta manera, y debido a los picos de corriente, la placa se resetea y no funciona correctamente. Quizás si se alimentarán los servos de forma independiente a la de la placa el correcto sería el correcto. Por este motivo, y si están los servos conectados, la placa falla a la hora de subir el programa, es necesario subir el programa sin tener los servos conectados.

Captura de pantalla 2014-01-06 a la(s) 22.41.18

He estado modificando la librería de Obijuan y David Estevez que programaran para el miniskybot. De esta manera le he añadido la opción de añadir los servos de  rotación continua que se incluyen en el kit.

He tenido un problema al hacer las conexiones y he conectado uno de los sensores IR a una salida de la placa, y creo que se ha estropeado, los sensores no tienen ningún diodo para evitar que en el pin de signal le introduzcamos una tensión. Por eso, y como solo tengo un sensor IR, he programado el robot para evitar que se caiga de la mesa. A ver si consigo arreglarlo o cambiarlo por otro y lo programo para seguir lineas.

He colgado en mi github la librería con la actualización para los servos. Es una primera versión muuy primeriza, iré actualizando en cuanto pueda con el resto de sensores y actuadores que vienen incluidos en el kit.

RenacuajoBot

Como ejecutar Cura desde pronterface en Mac OS X

Cura es un programa para poder hacer la transformación del código STL al código Gcode y que las impresoras 3D lo puedan imprimir.

Además de esto, es capaz de comunicarse con la impresora sin necesidad de usar pronterface. El problema es, que en este aspecto, pronterface es mucho más potente que Cura. Por tanto, en mi caso particular, hacía la siguiente operativa:

  1. Abrir Cura.
  2. Abrir Pronterface.
  3. Abrir Stl.
  4. Generar Gcode.
  5. Abrir Gcode en el pronterface.

En los casos en que se use Skeinforge y Slic3r, se puede configurar Pronterface para ejecutar ambos programas a la hora de abrir un stl. Con cura se puede hacer lo mismo.

En mac basta con poner los siguientes parámetros en los campos SliceCommand y Sliceoptscommand:

  • SliceCommand = /Applications/Cura/Cura.app/Contents/MacOS/Cura $s
  • Sliceoptscommand = /Applications/Cura/Cura.app/Contents/MacOS/Cura

Esto es en Mac, no he podido probarlo en otro sistema operativo, pero pienso que no debe ser muy distinto. Si alguien lo puede probar que por favor me deje un comentario.

El parámetro SliceCommand es el encargado de pasarle el fichero STL y el SliceoptsCommand simplemente abre el programa.

Una vez que le damos a Load en pronterface, nos ejecutará Cura. En cura habrá que darle al botón Prepare Print y una vez que finalice será imprescindible darle al botón Show Results. Si no se hace esto, el código Gcode no será devuelto a pronterface.

Por último le damos a Print y el gcode será mandado a la impresora.

 

 

 

Como ejecutar Cura desde pronterface en Mac OS X

Wiki: Calibración de Skeinforge

Skeinforge es el programa que se encarga de traducir los ficheros stl a códigos, que la impresora interpreta como los movimientos que debe hacer para crear la pieza.

Este programa debido a su función, es bastante complejo de configurar. He creado un pequeño tutorial con los parámetros más fundamentales a la hora de calibrar la impresora.

Wiki: Calibración de Skeinforge

Wiki: Calibración de Skeinforge