Based on DrawingBot by MakerC, with 5 new 3D/STL files that you can use to add improved slider stability for the head, including pen-tilt. You can set the rotation in 3 variations (straight / 25 degrees / 50 degrees).
In this build I've used a servo (MC-375DD), which has a slightly longer shaft section.
Parts used to build:
- 2x stepper motors (SY42STH47-1684A)
- 1x Arduino Uno board with Arduino CNC shield
- 2x Pololu A4988 stepper driver (with jumpers @ 4x microstepping)
- GT2 timing belt (2 meter) + 2x GT2 20 teeth
- 4x Micro switches on all axis (used as normally open)
- 1x Servo motor: Modelcraft MC-375DD
- Spring (custom), this gives just enough force to put pressure on the pen on the paper/surface (like with actual writing by your hand)
- All other screws/parts/rods/bearings as listed in the original thing
Arduino code: (compiled and uploaded using the Arduino IDE; make sure to update config.h in your /Arduino/libraries/grbl folder to enable CoreXY !!!)
[More info on CoreXY here: http://corexy.com/theory.html]
Next STL upgrade to come: carrier that can rotate and lock for a fountain pen (45c angle)
Stuck? Just send me a message if you have any question about this build!
In order to do a successful export to a gcode file that you can send with a gcode-sender-tool (application) I do the following steps in Inkscape:
1) Draw or import something in inkscape
2) Make sure the drawings consist of paths/vectors (not pixels; else they can't be translated into gcode instructions). Else use the 'path' menu to convert your selections in the drawing to a path (first options: 'Object to path' or 'Stroke to path'
3) Go to menu 'extensions' --> 'gcodetools' --> choose 'Tools library'
4) In the dialog, select 'default' as 'Tools type'. Then click 'Apply'.
A green box appears now in your drawing. Click 'Close' to close the dialog.
5) Move the green box to the side of your drawing area with your mouse. Now you can edit the values in this green box, as these are the 'parameters' for your gcode export action later on.
You can experiment with the speed parameters like 'feed', 'penetration feed', 'passing feed' and 'fine feed'. It use most of them at 2000.
Double click the values to edit them (or use the text edit tool) in Inkscape (the green box is actually a grouped item with a distinct name in your drawing).
6) Now change the value '(None)' for 'gcode before path' to 'M3 050' and change '(None') for 'gcode after path' to 'M5'.
This tells the export later on to add these commands for 'lower pen' and 'raise pen' pre and post your path.
7) I use a value for 'penetration feed' like 50 to introduce a certain delay for the plotter software to 'think' is it lowering the tool head. As the command M3/M5 are without a delay so the plotter directly continues moving X/Y while the servo for the pen is still doing its move.
8) Now either select the drawing object in Inkscape you want to export to a gcode file or leave everything unselected (if you want ALL to be exported).
9) Use the menu to open 'Tools' --> 'gcodetools' --> 'Orientation points'. This will allow to us to 'calibrate' the drawing size vs what the plotter will do on a real piece of paper.
Leave the settings as they are (you can change to your linking of course). I use 2 points-mode most of the times.
Click 'Apply'. Then click 'Close' to close the dialog.
10) Now two markers have been added (as a separate named object being grouped) to your drawing.
You can open the group by double clicking one of the markers or their coordinate text. After that you should be able to select only one of the markers individually.
Leave the 0.0,0.0,0.0 marker as it is (it is in the corner of your sheet). Move the other marker (100.0,0.0,-1.0) to the correct position according to your sheet. You can do this also by typing '100' in the X-box on the top bar to move it directly to 10cm on the horizontal axis.
This is a crucial step to make sure the scale in Inkscape matches to how your gcode will get exported in the next step. So 10cm in your drawing is actually 10cm in the real world with your plotter.
(make sure your Grbl plotter settings for steps per mm X and Y are also set correctly; with 1/4 microstepping this is probably around 30)
11) Use the menu to open 'Tools' --> 'gcodetools' --> 'Path to Gcode'
You can change the 'Cutting order' setting to your liking, in most cases 'subpath by subpath' is just fine.
In the 'Preferences' tab of the dialog choose your filename/path in the 'File' and 'Directory' box.
Now make sure the first tab 'Path to Gcode' is selected/active and press the dialog button 'Apply'.
This will give a popup, press OK if that happens. Now this should generate an overlay of all your paths in your drawing with arrow and blue/green markings. That is good.
Thus, the gcode export file is created.
Press 'Close' to close the dialog.
If you want, you can delete the 'overlay' on your drawing by selecting them and press the 'delete' key on your keyboard.
I did the above instruction with a 'Spiral' being drawn on my inkscape document and this is the resulted gcode file (excluding the '-------------' rows):
(Generated by gcodetools from Inkscape.)
(Using default header. To add your own header create file "header" in the output dir.)
G21 (All units in mm)
(Start cutting path id: path3680)
(Change tool to Default tool)
G00 X75.044960 Y77.679670
G01 Z-1.000000 F100.0(Penetrate)
G02 X73.582637 Y73.540866 Z-1.000000 I-2.216997 J-1.544427 F400.000000
G02 X69.438316 Y73.773910 Z-1.000000 I-1.741969 J5.988446
G02 X64.592009 Y80.959687 Z-1.000000 I3.036743 J7.275208
G02 X67.233444 Y88.892960 Z-1.000000 I12.798031 J0.145191
G02 X79.556761 Y94.609429 Z-1.000000 I11.621145 J-8.911090
G02 X91.864893 Y89.396950 Z-1.000000 I-0.927838 J-19.328610
G02 X98.591733 Y71.963585 Z-1.000000 I-14.713436 J-15.691821
G02 X90.667992 Y55.253100 Z-1.000000 I-26.043697 J2.115470
G02 X68.128145 Y47.467120 Z-1.000000 I-19.676330 J20.442947
G02 X47.011739 Y58.150880 Z-1.000000 I3.325468 J32.782896
G02 X38.144472 Y85.796852 Z-1.000000 I26.131088 J23.626423
G02 X51.610413 Y111.319540 Z-1.000000 I39.523748 J-4.539290
G02 X84.362716 Y121.279975 Z-1.000000 I27.560021 J-31.795032
G02 X114.291470 Y105.019980 Z-1.000000 I-5.752760 J-46.262734
G02 X125.352177 Y67.161029 Z-1.000000 I-37.443922 J-31.484654
G02 X106.291020 Y32.826520 Z-1.000000 I-52.999571 J6.965005
G02 X63.325155 Y20.660952 Z-1.000000 I-35.403957 J43.082929
G02 X24.585161 Y42.527850 Z-1.000000 I8.175917 J59.734543
G02 X11.311610 Y90.600879 Z-1.000000 I48.715114 J39.319848
G02 X35.987381 Y133.746120 Z-1.000000 I66.468079 J-9.385702
G02 X89.167750 Y148.129884 Z-1.000000 I43.233439 J-54.342387
G02 X136.718050 Y120.643010 Z-1.000000 I-10.594508 J-73.200454
G02 X152.213675 Y62.355145 Z-1.000000 I-59.966054 J-47.145427
G02 X121.914050 Y10.399940 Z-1.000000 I-79.931895 J11.802496
(End cutting path id: path3680)
G00 X0.0000 Y0.0000
(Using default footer. To add your own footer create file "footer" in the output dir.)