4xiDraw

207,329

371

817

Introduction: 4xiDraw

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: https://github.com/bullestock/4xidraw

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.

Robotics Contest 2016

Participated in the
Robotics Contest 2016

First Time Author Contest 2016

Participated in the
First Time Author Contest 2016

3D Printing Contest 2016

Participated in the
3D Printing Contest 2016

27 People Made This Project!

Recommendations

  • Trash to Treasure Contest

    Trash to Treasure Contest
  • Electronics Contest

    Electronics Contest
  • Wearables Challenge

    Wearables Challenge

817 Comments

0
mdaslamknl
mdaslamknl

1 year ago

Hi

I made this printer, everything is fine only thing is its printing 45 degree diagnol

how to make correct

Can any 1 help me regarding this

i am completely new

Thanks

2. axidraw my machine.jpeg1. axidraw my machine.jpeg
0
Marinemermaid09
Marinemermaid09

Reply 4 months ago

Can i get the literature survey ,methodology, Bibilography of this project

0
misan
misan

Reply 1 year ago

You need to enable the COREYX feature in the firmware.

0
sjoerdw1
sjoerdw1

Reply 7 months ago

I did have the same problem! I'm using GRBL 1.1 (latest version as of 1th of October 2021) and it turned out that in the config.h file 'corexy'-mode is disabled by default! This plotter needs corexy enabled, because of the way it is constructed. This is how to fix this (pinched, and a bit adjusted by me, from https://github.com/grbl/grbl/issues/996):

1) download the master Zip file: 'grbl-master';
2) extract all components;
3) install the appropriate files into the Arduino library;
4) load the library 'config.h' file in any text editor;
5) do a search for 'corexy';
6) UNCOMMENT the line that reads #define corexy;
7) save the modified file into your '.../Arduino/libraries/gbrl' folder. It will ask you to overwrite the old config.h file, say 'yes' or 'OK';
8) open in the Arduino app ../grbl/examples/grblUpload/grblUpload.ino;
9) upload this file to the Arduino board.

You're done!

0
misan
misan

Reply 7 months ago

Please note that regular grbl DOES NOT offer servo support, thus pen mechanism will not work as it is based on a servo.

0
sjoerdw1
sjoerdw1

Reply 7 months ago

You're right! Using the "regular" GRBL version 1.1 did move the plotter after enabling corexy in the right direction, but pen lifting was not working. So I reverted to https://github.com/misan/grbl-servo, the link of which you already put in your description. Sorry for the confusion and though my steps for enabling corexy in the config.h file are OK, they are not needed if you use the special flavour of GRBL, like you pointed out in your description.

0
misan
misan

Reply 7 months ago

Please be assured that you are not missing much using an older version.

0
sjoerdw1
sjoerdw1

Reply 7 months ago

Yes I know, but I was breathing new life into the plotter after a few years and was thinking using the latest versions of the software was a good idea. But using the latest version of UGS combined with GRBL v0.9 turns out to be OK.

0
misan
misan

Reply 7 months ago

If you feel like playing, please note there is a Inkscape plugin that many find it more convenient than UGS, especially if you prepare the artwork using Inkscape too.

0
sjoerdw1
sjoerdw1

Reply 7 months ago

I know about this plugin, you probably referring to the one made by Thorsten. But I tried it many times, but the plugin refuses to connect to the plotter. I did tell Thorsten about this, but he couldn't offer me a solution. I'm on Mac and that seems to be the problem. I'm now using the 'J Tech Community Laser Tool' Inkscape plugin to generate the gcode from within Inscape, but couldn't test it yet with the plotter because the servo just died and I have to wait for the new one to arrive. Will let you know if this combo (UGS and JTCLT) works.

0
misan
misan

Reply 1 year ago

I think you have not enabled COREXY in the GRBL.

0
indrajitbain93
indrajitbain93

Question 11 months ago on Step 5

Hello sir, I recently finished my project. But I faced some software problems. I can't able to draw with this machine. Please help me

0
mitulvaghelaeng
mitulvaghelaeng

11 months ago

Hi,
My servo motor keeps on shaking without any input. Is there a problem with the servo or problem with my cnc shield

0
misan
misan

Reply 11 months ago

Are you sure the problem is not your servo?

0
IHNasim
IHNasim

11 months ago

Sir,
Recently I've made a drawing robot following your instructions. But the x axis of my cnc shild causing x axis motor vibrates. I changed the stepper driver and motor, but the result is same. Then I lower the current of motor by rotating stepper driver potentiometer and motor stop moving and suddenly stepper driver fired up. Then the cnc shild and Arduino also stop working.
What should I do now?
Is that cnc shild problem or I made any mistake?

0
misan
misan

Reply 11 months ago

I am afraid there has been some electrical problem but I am not sure why that happened. A motor might vibrate if coils are wired wrongly and it will do so no matter the current you configure. First thing is to make sure the motor wiring is correct. CNC shield mostly wires, so I do not think it will stop working. Arduino OTOH can be destroyed (and repaired too).

0
IHNasim
IHNasim

Reply 11 months ago

Thanks for your replying sir.
Yes, my cnc shild is okay but the Arduino has destroyed. I think my wiring was not wrong, because I tested it with same wiring in y axis and worked properly but didn't work in x axis properly. I'm explaining the issue.
My motor rated current is 1.3A. So I measured Vref (Reference Voltage) is 1.03
1. For Vref=1.03, motor vibrates a lot and doesn't move
2. For Vref=0.7, motor slidely moves and vibrates
3. For Vref=0.6, motor moves and still vibrates but stop vibrating if I disconnect z axis servo motor
4. For Vref=0.3, motor stop moving and stepper driver was fired.
But the y axis motor is always fine the the driver is also in good condition.
That's why I asked that is it cnc shild issue or others?

0
misan
misan

Reply 11 months ago

I cannot assure you your CNCshield board does not have a manufacturing defect.

0
celicasoupra
celicasoupra

Question 1 year ago

Hello! First off, this is a wonderful project, and I am very happy to see you are actively answering questions! I'm going to gather the parts to build this soon.
I was wondering about the motors and the power supply -- most 12V steppers I find are rated 1.5-1.7A or above, and including the servo, I imagine all together they will draw somewhere between 3-4A when running. However, you suggest a 12V 2A power supply -- are the steppers you used rated below 1A? I am thinking of getting some steppers which are 1.5A-ish and then getting a 12V 3A or 4A supply.
Additionally, I have an idea for a modification to this machine -- a spring-loaded holder for the pen which will ensure an even pressure on the surface. When I have built the main thing I will prototype some designs.
Thank you!

0
misan
misan

Answer 12 months ago

Do not buy steppers rated for 12V but for 3-4V only. Drivers will not go beyond 1.2 A but that is not a problem. Do not worry, 2A supply is ok. As coils return some of the current back to the supply and total consumption is not the addition of the current over each coil. However, some servos may cause a significant current draw, but still, it is such a short time that I have had no trouble with 12V/2A supplies. Plus steppers will mostly be operated at just 0.7 A or so, as once you get them strong enough, any additional power is just dissipated as extra heat with no added advantage.
The spring idea is hinted at in some of the graphics/CAD but just gravity causes a constant force too if z-carriage moves smoothly up and down.

That said, feel free to experiment and report back what works best for you.