Drawing Robot - Arduino Uno + CNC Shield + GRBL by henryarnold 3d model
Warning. This content is not moderated and could be offensive.
m4
3dmdb logo
Thingiverse
Drawing Robot - Arduino Uno + CNC Shield + GRBL by henryarnold

Drawing Robot - Arduino Uno + CNC Shield + GRBL by henryarnold

by Thingiverse
Last crawled date: 3 years ago
The DrawBot is similar to the commercially available AxiDraw. It is powered by an Arduino Uno controller, uses a CNC Shield, and GRBL firmware. The approximate cost to build the DrawBot is $100.
If you decide to build this robot, make sure you check the following things before reporting that it doesn't work.
Make sure you have Python 3.X installed on your computer. Python is needed in order to use the Universal G-Code Sender and the MI GRBL Extension in Inkscape. Python errors usually mean that you either don't have Python or you have version 2.X instead of 3.X. If you still have a py error, copy the supplied to servo.py file to the extension directory.
If your robot draws at a 45 degree angle, read this whole description before reporting this problem. Please read this description.
Make sure you have set the GRBL parameters in the Universal G Code Sender and that you have zeroed the X and Y axis.
Make sure you have the jumpers under the stepper drivers installed.
Make sure you have adjusted the stepper drive current for your brand of driver
If you decide to change the version of GRBL or Inkscape you are using, I can't troubleshoot your NEW setup. Newer versions of GRBL don't have the servo code for the Z axis and newer versions Inkscape may not work with the MI Extension.
You must read this description and the documentation to get the robot to work correctly. It isn't hard but you can't wing it. Have fun!
Here's what is new for DrawBot Version 1.1
I've improved many parts but all new parts are compatible with all of the old robot parts. Here's what has changed:
There's a new Pen Holder which is sturdier but still maintains the ability to hold a pen at an angle. The new pen holder works with the current robot.
Stronger version of the pen sliding mechanism. It is compatible with the original pen holder and robot. The extra strength will hold the pen more firmly and allow more accurate movement of the pen.
User Gspt pointed out that Arduino Vin can't handle more than 1A. There is a new slide showing how to connect power from the Arduino barrel connector to the CNC Shield.
There's a new bracket designed to attach the Arduino enclosure to the right hand of the robot. See the new front page photo! The bracket uses existing holes so no other parts need to be modified.
I have designed a cable management system that uses a 500 mm x 9mm large wire tie to support the Z axis servo wiring.
I just found out that the DrawBot works with some of the AxiDraw software. I will document what works and how to use it. This is really cool and will make the DrawBot even more useful.
All new parts will have a newer suffix to the old part name (V4 becomes V5, etc..). You may use the new design or you are welcome to print the older versions.
Documentation can be found in the Files section. Thanks to Jonathan K for creating this documentation.
After assembly use the Install and Use document which explains how to install Inkscape, the MI GRBL extension, and the Universal G-Code Sender. It also guides you through three example projects and can be found in the Files section of this Thing.
If you run into a problem building this Drawing Robot, please carefully read this description, the provided documentation, and the comments. More than likely your question or problem has been addressed already.
This drawing robot allows you to draw things in Inkscape and then plot them out. The drawing robot receives G Code commands that are created inside an Inkscape extension called MI. Below are the links to the software used. There's a document in the Files section explaining how to install and use the software.
Print all the parts. Assemble them using the assembly guide and then use the installation and use guide to start using your Draw Robot.
Troubleshooting: Please check the following if you are having problems:
Be sure to install 3 jumpers on the CNC Shield for each stepper driver. There's a photo showing the jumpers.
You must use the GRBL version pointed to in the link below. Replace the "config.h" file with the one provided which has the correct features enabled before you compile and download from the Arduino IDE. IF YOU FAIL TO PERFORM THIS STEP, the robot will draw at a 45 degree angle. The library config.h file you should replace is in the PC directory .......Documents/Arduino/libraries/grbl-servo-master/config.h. I don't know which directory for Apple users. Double check this step when your robot prints at 45 degrees.
Set the GRBL parameters to the settings that are provided in one of the photos. Use the Universal G Code Sender. You must do this or the robot will not work correctly.
Be sure to set the correct MI Extension parameters the first time you get the MI extension pop up. The extension sets the robot speed, delay for pen up/down, and the commands for pen up and down.
If you have problems with your stepper motors moving and you believe everything else above is OK, check that the small current adjustments on your stepper drivers are set mid point and also set the drive current to 0.8 amps using the correct procedure for your driver.
New error as of Dec. 2019: Users are getting Python errors from the MI GRBL Extension. This error is caused by a change in Inkscape and the Python language reporting an error on the servo.py module. IF YOU GET ANY PYTHON ERRORS, MAKE SURE THAT YOU HAVE PYTHON 3.X INSTALLED ON YOUR COMPUTER. Next replace the C:\ProgramFiles\Inkscape\share\extensions\servo.py file with the one I have supplied in the files of this thing. Thanks to Fabian1905 for documenting this problem.
I have posted all the parts needed from the two source designs.
There are only 15 parts to print and none of them are very large. I added a stronger pen slider and a controller enclosure. There is an even better pen holder in the remix section. I also clarified the names that were in Spanish. I have posted all needed files so that there isn't confusion regarding which parts are needed from each of the original designs.
My drawing robot is modified version of this onehttps://www.thingiverse.com/thing:2058866
I suggest using the stronger pen holder I have included or the one posted as a remix.
Here's the pulley idler some users are printing instead of running the belts on just the plain bearings. My Draw Bot uses plain bearings without the pulley and it works fine.https://www.thingiverse.com/thing:2424284
Place this version of GRBL Firmware for the Arduino on your computer. You must use this version of GRBL. Other GRBL versions do not have the control code for the Z axis servo.https://github.com/robottini/grbl-servo
Replace the default config.h file in GRBL with the one supplied in the "Thing Files" section
Upload GRBL to your Arduino Uno using these instructionshttps://github.com/grbl/grbl/wiki/Compiling-Grbl
(Ignore references to GRBL V1.1)
You must copy the config.h which I supply here to the directory where GRBL resides and then do the upload. The new config.h will be used for the compile of the GRBL code. Failure to copy this file will result in your robot plotting at a 45 degree angle. Seems like I said that doesn't it? Well I get messages weekly from people wondering why this design doesn't work and why it prints at a 45 degree angle. I'm getting old.......
Inkscape Drawing Software V0.92 !!!https://inkscape.org/en/
Universal G-Code Senderhttps://winder.github.io/ugs_website/download/
Use the Inkscape MI Extension to generate G Code:http://www.mediafire.com/file/ae0wquqornzc3o2/MI+Inkscape+Extension.zip
Newer MI Extension with scaling problem fixed ( i haven't test yet but it is reported to work)
Use instead of the Media Fire extension above
Jtechphotonics Inkscape Laser Plug-Inhttps://jtechphotonics.com/?page_id=2012
There is a tutorial in the Files section on how to use the software.
If you get any errors with xxx.py in the message, be sure that you have Python 3.X installed. Check here:https://www.python.org/downloads/
If you still get errors, replace servo.py in the extension directory with the servo.py I provide. Copy servo.py to here: C:\Program Files\Inkscape\share\extensions
HARDWARE NEEDED
2x Nema 17 Stepper Motors
2x Linear bearing rod M8 x 450mm, X Axis
2x Linear bearing rod M8 x 350mm, Y axis
2x Linear rod M3 x 75mm, Z Axis
(You can find them in any old CDROM or purchase on EBay)
1x M8x480mm threaded rod (5/16" x 18.75" will also work)
8x LM8UU linear bearings or printed bearings
1x sg90 Servo
2x GT2 Pulley 16 teeth
5x Bearing 624zz
1x 2000mm GT2 belt
misc M3 and M4 screws and nuts
M8 nuts
ELECTRONICS
Arduino Uno
CNC Shield
2 A4988 Stepper Drivers plus jumpers
12V 2A Wall Transformerhttps://www.amazon.com/Adapter-100-240V-Transformers-Switching-Adaptor/dp/B019Q3U72M
Wire to extend the servo connection to the CNC shield
2-4 limit switches ( optional. I suggest you leave them off and add later if you want them)
SOFTWARE
Inkscape which is the graphics design software (draw or import graphics)
Inkscape MI GRBL Extension (convert graphics to G-Code)
Universal G Code Sender (sends the G-Code to the robot causing drawing motion)
GRBL which is the Arduino firmware (programmed into the Arduino Uno)
I have supplied a few G Code files that work with this drawing robot. If your drawing robot is built identical to this design, the G Code files will also work with yours.
Here are a couple of my videos of the Draw Bot in action:https://youtu.be/vTD7USqdXJI
https://youtu.be/kpTIFBDcTaY
Here's an excellent video by User MoustafaElkady (Thank you Moustafa!)https://www.youtube.com/watch?v=u26Wt8eY5zc
Update 6-15-2017: I added the limit switches about 10 days ago and they don't add much to the functionality. When GRBL sees a limit switch hit, it just stops with an alarm condition. You must soft reset the robot and your drawing cannot be continued. The homing feature doesn't seem to work. I read in another persons post that they could not get home to work in GRBL 0.9. At this point I suggest building the drawing robot without the limit switches. As long as your drawing does not exceed the envelope of the robot, you won't need the limit switches.
Update 6-19-2017: My friend found a better Inkscape Extension for generating G Code.
I think the MI Extension is easier to use and generates better G Code:http://www.mediafire.com/file/ae0wquqornzc3o2/MI+Inkscape+Extension.zip
Update 6-26-2017: I added the config.h file needed for GRBL for this machine. With this file and the GRBL parameter settings in the screen shot, you should be able to easily get your machine up and running. Don't forget to install the stepper driver jumpers.
Update 7-4-2017:
The top and bottom clam shells did not fit without pushing the LM8UU bearings slightly out of alignment. I removed a small amount of material from the top clamshell to allow clearance for the bottom clamshell posts. The old Top_XY_clamshell.stl file has been removed and replaced with the Top_XY_clamshell_V4.stl file. Thanks to rocketmannate who caught this problem.
Update 11-18-2017
Jonathan K. provided assembly documentation. Thanks you so much. I appreciate your efforts. Checkout the great PDF with excellent photos.
Update 3-11-2018
I have had some questions from people whose drawing robots didn't work.
Here are some things to check If your robot doesn't work:
Make sure you have the correct version of GRBL (the one pointed to in the description)
Make sure you copied the config.h file to your GRBL directory
.......Documents/Arduino/libraries/grbl-servo-master/config.h
Check your CNC jumpers. All three should be installed
Check that you entered the GRBL parameters using Universal G-Code sender. Each parameter must be saved one by one (not all changes at the end)
If your Z axis motor isn't working, make sure you have the correct version of GRBL and that you wired your servo to the correct pins.
Make sure you used the MI extension parameters shown in screenshot specifically M3 and M5 for up and down on Z servo. Use the UGS macro for up and down to test your servo.
Update: Sept. 18, 2018:
If you have problems with your stepper motors moving and you believe everything else above is OK, check that the small current adjustment on your driver is set mid point and then set the drive current to 1 amp using the correct procedure for your driver.
Thanks to Ashkangh for catching this possible issue. In general everyone should set their stepper driver current. Do an internet search on A4988 driver current if you don't know what this is.
Update: January 4, 2019:
A few people have run into software errors when using the GRBL MI Extension. This extension depends on a software package called Python. Your computer may not have this package or it may have one that is older or newer than the one this robot was tested with. I suggest that you do a Google search if you get a xxxx.py" error and follow the instructions for correcting code or installation of Python.
Update: May 26, 2019:
There are various Stepper Motor drivers that are slightly different. in some cases the current adjust pot is on the opposite end of the module which can be confusing when trying to plug it in based on my photos. Be sure to check the pin names and plug your module in with the pin names that match. I'm sorry but I don't have time to figure out your individual hardware configuration problems. This design works but it can require some troubleshooting if software or hardware is different than what I happened to use. When you figure out your problem, be sure to post the solution in the comments so that others may benefit from your experience.
Update 11-9-2019:
If your robot prints reversed or mirrored, try changing GRBL parameter $3 to 1 or 2 or 3 from 0. This reverses motor direction. It will not cure 45 degree printing. If you have that, you need to fix your config.h file and make sure it is in the correct Arduino library directory.
If that doesn't fix it, flip the connectors on your stepper motors; either one or both connectors. Flipping the connector reverses the direction of the motor
Update 12-31-2019:
I revised the assembly instructions to remove old software installation. There is now an assembly guide and a separate software install and user guide. Happy New Year!!!
Update 1-12-2020:
I've posted the upgraded parts which are the base of the pen slider, the pen slider, the pen holder, a cable support anchor point, and the Arduino enclosure mount. All parts are backwards compatible with the originals. The new parts make a neater and stronger Drawing Robot.
Update 1-23-2020:
Here's an interesting replacement for the MI GRBL Extension. Its an Inkscape plugin that generates G-Code for laser cutters. It should work with this Drawing Robot. I haven't tried it but it looks good. Let me know if you are willing to test it and maybe we can switch this Thing over to using it.https://jtechphotonics.com/?page_id=2012
Update 1-28-2020:
Lots of updates lately. A couple of people have reported that the drawings created in Inkscape are not drawn to the correct size on the Drawing Robot. This is caused by a bug between the scaling on Inkscape and the scaling on the MI Extension. There is no bug in the robot firmware. One fix is to change the drawing properties to have a scaling of 3.5433. I've attached a screen shot that shows this fix. This bug could be fixed in the MI extension but I'm not comfortable in modifying the Python code. If someone else wants to take a try, I would appreciate it. To save the new scaling between sessions, save the changes to the default.svg file within Inkscape.
Update 3-11-2020:
Fixed links in documentation and did a small amount of editing. Removed old docs to avoid confusion. New document has assembly, software installation, and using robot.
Update 6-8-2020
The original MI Extension has a scaling issue. A user provided me with a fix which is included in the servo.py file I supply. You may use the MI Extension with the corrected servo,py or use the newer Extension from JTech Photonics.
Update 11-30-2020
User jbooblian has created an updated Inkscape Extension that fixes problems with the original MI extension. If you would like to try it out, check this remixhttps://www.thingiverse.com/thing:4654007
Update 1-30-2021
I've had some questions on how to set the stepper drive current to the motors.
This video shows how:https://www.youtube.com/watch?v=E6RWysjlaP4
Update 4-26-2021
I know. This solution has many software issues. I created this solution but what I really did was clean up an original hardware design and test it with one set of Inkscape + Python + Extension versions. (Inkscape 0.92, Python 3.7.X, and MI GRBL Extension) At the time, this configuration worked fine. Since then some older and newer versions of Python have caused Inkscape Extensions to stop working and then Inkscape completely changed their Extension support for versions starting at 1.X. There is not much I can do short of creating my own Extension that is so smart that it detects whether Inkscape 0.9X or 1.X is being used and whether Python 2.X, 3.X, or 3.9X is being used. I believe that it is possible to do that but I don't have time to work on it. That leaves people using this drawing robot struggling to understand why they have errors. Your best bet is to install Inkscape 0.92 and Python 3.7.X with the MI GRBL Extension. Do the servo.py upgrade I describe above and everything will work. Any other versions of components may cause problems.
Print Settings
Printer:
HyperCube
Rafts:
No
Supports:
No
Resolution:
0.1mm
Infill:
75%
Filament_brand:
HatchBox
Filament_material:
PLA
Notes:
PLA is fine for this design. I print at 200C on BuildTak. None of the parts require rafts or brims. I suggest supports only for the pen holder and the Z axis end plate which is standing up.

Tags