4xiDraw
Por misan en arte
[Link]
Este proyecto se inspiró en un producto comercial llamado AxiDraw, del cual vi un video recientemente
de Evil Mad Scientist Laboratories.
Fue una combinación de razones que me hicieron considerar hacerlo yo mismo, el costo, la
disponibilidad y las costumbres desempeñando un papel en la ecuación (eso, y tener una impresora 3D en
casa).
Esto es solo una máquina de dibujo bastante similar a un trazador de lápiz, pero que puede adaptarse a
cualquier tamaño de documento y cualquier tipo de papel.
Puede usar rotuladores normales, bolígrafos o estilográficas, ya que la orientación de la pluma es
variable. Es una nueva versión de un plotter XY que utiliza una sola correa y dos motores paso a paso en
una configuración llamada h-bot.
Paso 1: Lo que necesitas
Comencé el proyecto utilizando piezas cortadas con láser, pero finalmente evolucioné el modelo a piezas
impresas en 3D. Así que puedes tomar los archivos STL de las partes impresas desde aquí o aquí .
Lista de materiales
2 nema 17 steppers (*)
4 varillas lisas de 8 mm (dos de 400 mm de largo y dos de 320 mm de largo)
8 LM8UU
2 poleas GT2 de 20 dientes
10 rodamientos F623ZZ
1 micro servo SG90 (más un extensor de cable de 250 mm)
1 Arduino UNO
1 CNCshield
2 pasos de Pololu
1 cinturón GT2 (1.4 metros de largo)
2 varillas roscadas M10 (400 mm de largo cada una)
8 nueces M10
8 tornillos M3 de 30mm con tuercas
8 tornillos M3 de 6mm
4 tornillos M3 de 16mm con tuercas
4 lavadoras M3
2 tubos de fibra de carbono de 4 mm de diámetro y 100 mm de largo
2 tornillos M3 de 15mm
1 fuente de alimentación 12V 2A
1 cable USB
1 rotulador (o muchos para más diversión)
(*) Los motores paso a paso deben ser de 40 mm o menos, a menos que elija las partes más altas que
creé más tarde para algunos usuarios dispuestos a usar motores paso a paso de 48 mm (como muchos
otros para impresoras 3D).
Paso 2: Ensamble
Hay un modelo 3D en vivo que puedes ver por ti mismo aquí. La función de explosión puede darle una
idea de lo que está dentro de otra parte. O puede descargar el modelo STEP o acceder al diseño de CAD
Onshape desde Thingiverse.
Recomiendo la siguiente secuencia de construcción:
1. Deslice dos LM8UU en cada una de las dos varillas lisas más largas.
2. Deslice las barras en las piezas del motor, una en cada lado (deje 20mm adicionales de las barras
en uno de los dos lados que sobresalen de la parte hacia el motor, que luego se usará para sostener
el soporte Arduino).
3. Inserte las varillas roscadas M10 para que cada una soporte un lado de las piezas de soporte del
motor con una tuerca en cada lado (un total de 8 tuercas M10).
4. Monte los motores paso a paso nema 17 en las dos piezas grandes de plástico con 8 tornillos M3
(8mm de largo).
5. Inserte 8 tuercas M3 en los sujetadores de tuercas en el carro cuadrado inferior y colóquelos de
manera que soporten los rodamientos lineales LM8UU que insertó en las varillas largas y lisas ya
instaladas.
6. Tome las dos varillas lisas restantes (más cortas) e inserte dos rodamientos lineales LM8UU en cada
una de ellas.
7. Inserte las dos partes finales Y en cada extremo del par de varillas lisas. Ahora tienes el segundo eje
hecho.
8. Inserte el carro cuadrado superior sobre los 4 rodamientos lineales de las varillas lisas más cortas.
9. Inserte 4 tornillos M30 de 30 mm de largo en los 4 orificios centrales del carro cuadrado superior,
coloque el carro boca abajo con cuidado para que la cabeza de los tornillos se apoye en la mesa y
los tornillos apunten hacia arriba.
10. Inserte un rodamiento F623ZZ con la brida hacia abajo, luego una arandela M3 y finalmente otro
rodamiento, pero ahora con la brida hacia arriba en cada uno de los cuatro tornillos del carro
cuadrado superior.
11. Use un papel post-it o similar de papel para presionarlo contra cada uno de los tornillos que
sobresalen, de modo que el papel esté perforado y presione contra la parte superior de los cojinetes.
El objetivo es que este papel los sostenga en su lugar mientras lo colocamos todo boca abajo para
evitar que se caigan los cojinetes.
12. Coloque el carro superior sobre el carro inferior para que las varillas lisas en la parte superior formen
un ángulo recto con las varillas lisas inferiores.
13. Atornille ligeramente cada uno de los cuatro tornillos M3 y una vez que note que cada uno está unido
a la tuerca en la parte inferior, desgarre el papel post-it. Luego termine de apretar los tornillos y
agregue los otros 4 tornillos M3 de 30 mm que no tienen un cojinete, pero agregan resistencia a la
unión de las partes superior e inferior del carro.
14. Coloque una polea GT2 en cada motor paso a paso, pero no apriete aún el perno prisionero.
15. Coloque un par de cojinetes F623ZZ con una arandela M3 entre los tornillos fijos con un tornillo M3
en la parte final Y que soportará la parte servo.
16. Inserte la correa a lo largo de su recorrido (los cruces del carro central son un poco difíciles). Y una
vez que las poleas estén alineadas con la correa, apriete los tornillos prisioneros en cada una.
17. Use dos tornillos M3 y dos tuercas para sujetar la parte de soporte del servo y luego agregue el
microsevo utilizando los dos tornillos que vienen con él.
18. Asegúrese de que los dos orificios verticales en la parte de soporte del servo tengan un diámetro de
4 mm y que los tubos de fibra de carbono puedan insertarse en ellos (de lo contrario, perfore los
orificios con una broca de 4 mm). Inserte ambos tubos desde la parte superior, pero solo a medio
camino. Y luego inserte desde arriba el carro vertical (el que parece una cara sonriente). Empújelo
suavemente hacia abajo hasta que pueda insertar la mitad restante de los tubos de fibra de carbono
para que se inserten en los orificios inferiores de este carro.
19. Con un par de tornillos M3 y tuercas, fije la parte del portaplumas al carro vertical.
20. Empuje el soporte Arduino en las varillas lisas que sobresalen en uno de los soportes del motor paso
a paso. Use un par de tornillos M3 para fijar la placa Arduino al soporte de plástico.
Enhorabuena, el montaje mecánico ha sido completado.
Paso 3: Cargar Firmware Arduino
Este proyecto utiliza una versión especial del software GRBL creado por el usuario robotini. Permite a
GRBL manejar un servo en el pin digital 11 usando los comandos M3 y M5. De esta manera puede subir y
bajar el bolígrafo sobre el papel.
Aquí se explica mejor la instalación del software, por favor léalo detenidamente ya que a algunas
personas les puede resultar difícil, ya que no es el típico programa Arduino (en esencia, el código se crea
como una biblioteca).
¿Cómo sabes que todo está funcionando?
Puede conectarse usando el Monitor en serie Arduino a su tablero a 115200 bps y un mensaje de
bienvenida: grbl 0.9i ['$' para ayuda]
Paso 4: cableando todo junto
Antes de insertar el CNCShield sobre el Arduino, debes hacer este truco, que te permitirá
alimentar todo desde el conector de Arduino. Si no se hace esta conexión de Vin a la cabecera + en
CNCShield, es muy probable que el servo no funcione correctamente.
En la parte superior de Arduino, inserta la placa CNCShield y, encima de ella, dos de las placas de
conductor paso a paso Pololu StepStick. Pero antes de insertar estas dos tablas para los ejes X e Y,
asegúrese de colocar tres puentes en los encabezados (que luego serán obstruidos por las tablas de
transporte de Pololu).
Un cable de tres cables provendrá del servo y dos cables de cuatro cables de los motores paso a paso.
El cable del servo debe ir a (rojo) +5V, (negro) GND y señal (blanco o marrón) al pin digital 11. El cable
del servo es demasiado corto, por lo que se necesitará un cable de extensión de 250mm.
Cada motor paso a paso va hacia los ejes de cuatro pines de los ejes X e Y en el CNCShield.
Hay una mejora opcional: haga que el plóter sea inalámbrico agregando un módulo Bluetooth, pero solo
lo haría una vez que todo lo demás esté funcionando.
Paso 5: Software de computadora que necesitas
Hay dos tipos de programas para usar en su computadora (hasta que alguien cree uno que haga
ambos): uno para crear el código para un diseño gráfico determinado. Y un segundo programa para enviar
el código que se acaba de crear para que el trazador lo dibuje en papel.
Para la primera parte, uso el programa de dibujo vectorial gratuito de Inscape con un complemento que
he pirateado. La instalación puede ser un poco difícil para el usuario no experto en tecnología.
Para la segunda parte, uso el programa Java UniversalSerialGCodeSender que le permite cargar el
archivo creado con Inkscape y enviarlo al plotter.
Desea configurar la escala adecuada para su máquina, pero eso no se almacena en el firmware GRBL
sino en la memoria Arduino UNO EEPROM. Por lo tanto, tendrá que configurar eso correctamente antes de
comenzar a dibujar. (El siguiente texto es cortesía del usuario de Erivelton):
1. Acceda desde la terminal (pestaña de comandos) de Universal Gcode Sender, la configuración de su
firmware escribiendo $$
2. Compruebe los parámetros $100 y $101. Definen cuántos pasos se requieren para que la máquina
avance 1mm.
3. Teniendo en cuenta que utilizó un motor de 200 pasos, una polea de 20 dientes y la correa GT2
(paso de 2mm), los valores correctos para ambos parámetros serían 80.
4. Si no están con estos valores, escriba "$ 100 = 80 + Enter" en el terminal para ajustar el eje X.
Escriba “$ 101 = 80 + Enter” para ajustar el eje Y.
5. Listo, su máquina ahora dibujará exactamente las mismas dimensiones que su dibujo de Inkscape
:-D
Actualización:
Torsten Martinsen me ha llamado la atención sobre su trabajo en otro complemento que se encargará de
enviar el dibujo al 4xiDraw desde el software de Inkscape, por lo que no es necesario que
UniversalSerialGCodeSender lo haga por otro. Puede obtener su complemento aquí:
[Link]
Paso 6: Toques finales
Creo que este proyecto divertido puede tomar fácilmente un fin de semana para hacerlo (dependiendo de
tus habilidades).
Este es mi primer instructivo y puedo ver que aún se puede decir mucho más acerca de los detalles del
proyecto, pero una vez que se hayan establecido las cosas básicas, trataré de mejorarlo abordando los
comentarios de los usuarios.
Y si desea dar las gracias de manera diferente a un comentario, le damos la bienvenida.
4xiDraw
By misan in Art
[Link]
This project was inspired by a commercial product called AxiDraw that I saw a video of recently from Evil
Mad Scientist Laboratories.
It was a combination of reasons that made me consider to do it myself, cost, availability and customs
playing a role in the equation (that, and having a 3D printer at home).
This is just a drawing machine quite similar a to a pen plotter but that can adapt to any size of document
and any type of paper.
It can use regular felt-tip pens, ball pens or fountain pens as pen orientation is variable. It is a new version
of an XY plotter using a single belt and two stepper motors in a configuration called h-bot.
Step 1: What You Need
I started the project using laser cut parts but eventually evolved the model to 3D printed parts. So you can
grab the STL files of the printed parts from here or here.
Bill of materials
2 nema 17 steppers (*)
4 8mm smooth rods (two 400mm-long and two 320mm-long)
8 LM8UU
2 20-tooth GT2 pulleys
10 F623ZZ bearings
1 micro servo SG90 (plus a 250mm cable extender)
1 Arduino UNO
1 CNCshield
2 Pololu stepsticks
1 GT2 belt ( 1.4 meters long )
2 M10 threaded rods (400mm-long each)
8 M10 nuts
8 30mm M3 screws with nuts
8 6mm M3 screws
4 16mm M3 screws with nuts
4 M3 washers
2 4mm OD, 100mm-long carbon fiber tubes
2 15mm M3 screws
1 12V 2A power supply
1 USB cable
1 felt tip pen (or many for more fun)
(*) Stepper motors should be 40mm or shorter, unless you chose the taller parts that I later created for
some users willing to use 48mm tall steppers (like many use for 3D printers).
Step 2: Assembly
There is a live 3D model you can see for yourself in here. The explode feature may give you an idea of
what is inside of another part. Or you can download STEP model or access Onshape CAD design from
Thingiverse.
I recommend the following building sequence:
1. Slide two LM8UU in each of the two longest smooth rods.
2. Slide the rods into the motor pieces, one on each side (leave an extra 20mm of the rods in one of the
two sides protruding from the part towards the motor, this will later be used for supporting the Arduino
holder).
3. Insert the M10 treaded rods so each one supports one side of the motor-supporting pieces using a
nut on each side (total 8 M10 nuts).
4. Mount the nema 17 stepper motors on the two big plastic parts using 8 M3 screws (8mm long).
5. Insert 8 M3 nuts into the nut-holders in the bottom squared carriage and place it supporting the
LM8UU linear bearings you inserted in the long smooth rods already installed.
6. Take the remaining (shorter) two smooth rods and insert two LM8UU linear bearings on each one of
them.
7. Insert the two endY parts on each end of the pair of smooth rods. Now you have the second axis
done.
8. Insert the top square carriage over the 4 linear bearings of the shorter smooth rods.
9. Insert 4 M30 30mm-long screws in the 4 central holes of the top square carriage, put the carriage
upside-down carefully so the head of the screws will lay on the table and the screws will point
upward.
10. Insert one F623ZZ bearing with the flange down, next an M3 washer and finally another bearing but
now with the flange up) into each one of the four screws of the top square carriage.
11. Use a post-it or a similar-size piece of paper to press it against each one of the screws protruding so
paper is perforated and is pressing against the top of the bearings. The goal is for this paper to hold
them in place while we put the whole thing upside-down preventing the bearings to fall off.
12. Place the top carriage over the bottom carriage so the smooth rods on the top form a right angle with
the bottom smooth rods.
13. Screw lightly each one of the four M3 screws and once you notice each one is attached to the nut in
the bottom tear the post-it paper apart. Next finish tightening the screws and add the other 4 M3
30mm screws that do not have a bearing but add strength to the union of top and bottom parts of the
carriage.
14. Place one GT2 pulley on each stepper motor but do not tighten the grub bolt yet.
15. Place a pair of F623ZZ bearings with an M3 washer in between fixed with an M3 screw in the end Y
part that will support the servo part.
16. Insert the belt all along its path (the crossings of the central carriage are a bit tricky). And once
pulleys are aligned with the belt tighten the grub screws on each one.
17. Use two M3 screws and two nuts to attach the servo support part and later add the microsevo using
the two screws that come with it.
18. Make sure the vertical two holes in the servo support part are 4mm diameter and that the carbon fiber
tubes can be inserted into them (if not, drill the holes with a 4mm drill bit). Insert both tubes from the
top but only mid way. And next insert from the top the vertical carriage (the one that looks like a
smiling face). Gently push it down till you can insert the remaining half of the carbon fiber tubes so
they are inserted into the bottom holes of this carriage.
19. Using a couple of M3 screws and nuts fix the pen-holder part to the vertical carriage.
20. Push the Arduino holder into the protruding smooth rods on one of the stepper motor holders. Use a
couple of M3 screws to attach the Arduino board to the plastic holder.
Congratulations, the mechanical assembly has been completed.
Step 3: Load Arduino Firmware
This project uses a special flavour of GRBL software created by robotini user. It enables GRBL to handle
a servo on digital pin 11 using commands M3 and M5. This way it can raise and lower the pen on the paper.
Installing the software is better explained here, please read it carefully as some people may find it difficult
as is not the typical Arduino program (in essence the code is created as a library).
How do you know it is all working?
You can connect using the Arduino Serial Monitor to your board at 115200 bps and a welcome message:
grbl 0.9i ['$' for help]
Step 4: Wiring Everything Together
Before inserting the CNCShield over the Arduino you want to do this trick, that will allow to power
everything from the Arduino power jack. Failing to do this connection from Vin to + header on
CNCShield most likely will make your servo not to work properly.
On top of Arduino you insert the CNCShield board and on top of it, two of the Pololu StepStick stepper
driver boards. But before inserting these two boards for axis X and Y, make sure you put three jumpers in
the headers (that will later be obstructed by the Pololu carrier boards).
A three-wire cable will be coming from the servo and two four-wire cables come from the stepper motors.
Servo cable has to go to (red) +5V, (black) GND and signal (white or brown) to Digital pin 11. Servo
cable is too short, so an 250mm extension cable will be needed.
Each stepper motor goes to X and Y axis four pin headers on the CNCShield.
There is an optional improvement: make the plotter wireless by adding a Bluetooth module, but I would
only do this once everything else is up and running.
Step 5: Computer Software You Need
There are two types of programs to use in your computer (until someone creates one that does both): one
for creating the code for a given graphical design. And a second program to send the code just created so
the plotter will draw it on paper.
For the first part I use Inscape free vector drawing program with a plugin I hacked. Install may be a bit
tricky for the non tech savvy user.
For the second part I use UniversalSerialGCodeSender Java program that allows you to load the file
created with Inkscape and send it to the plotter.
You want to setup the proper scale for your machine, but that is not stored in GRBL firmware but on the
Arduino UNO EEPROM memory. So you will need to set that right before starting to draw. (Following text
comes courtesy of Erivelton user):
1. Access from the terminal (commands tab) of the Universal Gcode Sender, the settings of your
firmware by typing $$
2. Check the parameters $100 and $101. They define how many steps are required for the machine to
go 1mm.
3. Considering that you used a 200-step motor, a 20-tooth pulley, and the GT2 belt (2mm pitch), the
correct values for both parameters would be 80.
4. If they are not with these values, type “$100=80 + Enter” on the terminal to adjust the X axis. Type
“$101 = 80 + Enter” to adjust the Y axis.
5. Ready, your machine will now draw exactly the same dimensions as your Inkscape drawing :-D
Update:
Torsten Martinsen has brought to my attention his work on another plugin that will take care of sending
the drawing to the 4xiDraw from within Inkscape software, so no need for UniversalSerialGCodeSender nor
for another plugin this way. You can get his plugin here: [Link]
Step 6: Final Touches
I think this a fun project can easily take a weekend to get it done (depending on your skills).
This is my first instructable and I can see there is yet much more that could be said about the details of
the project, but once the basic stuff has been laid out I would try to improve it by addressing user comments.
And if you would like to say thanks in ways different than a comment, you are welcome.