Drawing Robot - Arduino Uno + CNC Shield + GRBL

Drawing Robot - Arduino Uno + CNC Shield + GRBL

thingiverse

This drawing robot 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 this drawing robot is $100. Here's what 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: 1. 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. 2. 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. 3. 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. 4. 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. 5. I have designed a cable management system that uses a 500 mm x 9mm large wire tie to support the Z axis servo wiring. 6. 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. Assembly documentation can be found in the Files section. Thanks to Jonathan K for supplying 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: 1. Be sure to install 3 jumpers on the CNC Shield for each stepper driver. There's a photo showing the jumpers. 2. 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. 3. 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. 4. 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. 5. 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 1 amp using the correct procedure for your driver. 6. New error as of Dec. 2019: Users are getting Python errors from the MI GRBL Extension. This error is caused by a change in the Python language reporting an error on the servo.py module. If you get any servo.py errors, first make sure you have Python installed on your system and 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 one https://www.thingiverse.com/thing:2058866 I suggest using the stronger pen holder posted as a remix Here's the pulley idler some users are printing instead of running the belts on just the plain bearings. Mine uses plain bearings 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 instructions https://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. Inkscape Drawing Software https://inkscape.org/en/ Universal G-Code Sender https://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 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. 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 Transformer https://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 videos of this drawing robot in action: https://youtu.be/vTD7USqdXJI https://youtu.be/kpTIFBDcTaY 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.

Download Model from thingiverse

With this file you will be able to print Drawing Robot - Arduino Uno + CNC Shield + GRBL with your 3D printer. Click on the button and save the file on your computer to work, edit or customize your design. You can also find more 3D designs for printers on Drawing Robot - Arduino Uno + CNC Shield + GRBL.