After seeing a really neat commercial Pen Plotter on Youtube, I decided the time has come to build my own Arduino Pen Plotter using Nema17 Stepper Motors and readily available 3D Printer spare parts.
Building the Scrappy Arduino Pen Plotter
The key component to this pen plotter project is the Arduino grbl library. It is hard to overstate the power which comes with this piece of carefully crafted code. The grbl library transforms your Arduino into a fully functional CNC stepping motor controller. All you need to add are some Polulu A4988 and you’re ready to go.
The image above shows an Arduino Uno with a CNC Shield attached. The CNC Shield in turn has 3 A4988 attached to it. That’s all you need to get the grbl library to directly control the A4988s which in turn will drive your stepping motors of choice.
In the case of this Arduino Pen Plotter, I went for a Nema17 stepping motor build. The reason for this decision lays within the fact that those motors are used widely with 3D printers, and since I used a lot of 3D printer spare parts (rods and couplers and such) the Nema17 was a natural choice. Plus they are cheap. And they are available on Amazon.
What follows are some images of the Scrappy Arduino Pen Plotter build. All parts other than the rectangular aluminium profiles and screws are 3D Printer spare parts purchased on Amazon.
There would normally be a Nema17 Stepping Motor right in the middle of this picture. I usually unmount the motors for easier storage.
Note the small rubber sheets between the screws and the aluminium plate. I put them there to absorb mechanical vibrations.
In the last picture you can see the servo motor positioning. I put it there in order to lift the pen up. Which reminds me that I didn’t use the original grbl library, but rather a fork of it. Github user “robottini” made this very nice fork which let’s you control a Servo motor via Gcode!
Some Moving footage
We saw some pics, which was nice. But does it work? Does it actually draw? And are the results acceptable? Well, I got 2 videos for you. Here’s the first one.
To be fair, this is an older version of the Scrappy Arduino Pen Plotter. It uses a different Pen Holding mechanism. One without a servo, but rather a small stepping motor which provides the up/down movements. The pen holder mechanism was salvages from a CD drive. Hence the “Scrappy”. It is in fact the part the laser is normally sliding forth and back on. I salvaged some CD drives and figured this might work. And it did. Until it didn’t work anymore.
The small CD drive stepper got destroyed. So I got a new CD laser slider thingy. And this time, I mounted a servo on it. This seemed better, because with the stepping motor approach, the draw height is fix. Which can be bad if the surface height of the paper is different depending on the position of the moving pen. That was one problem I encountered. The servo approach fixes this problem really nicely by just letting the pen fall and then forgetting about it.
Here’s moving footage of the newer build. The video is rather long. I probably should have edited it a bit more. You might want to skip through it.
How I Got The Gcode
When using the grbl library, it is essential to have a Gcode file containing all the path information the Plotter is supposed to follow.
First I got the image from the dailycatdrawings Tumblr! Here’s the original drawing “Meow!”: http://dailycatdrawings.tumblr.com/po…
And here are some more details on what I did here. I used Inkscape and the GcodeTools plugin. This plugin enables you to get Gcode out of a drawing like the one I used.
Here’s a link to GcodeTools: https://github.com/cnc-club/gcodetools
Once I had the Gcode, all there was left to do was to feed it to the Arduino via the serial port (my software of choice was the UniversalGcodeSender).
Some More Details
When using grbl with your Arduino you can program some of the parameters via the serial port (using putty or a similar program). Below are the parameters I used for this project on the grbl CNC Controller. This might also be of interest if you’re wondering what kind of parameters you can fiddle around with when using grbl. You get this parameter list by sending “$$” to the Arduino via serial port.
Grbl 0.9i ['$' for help] $0=10 (step pulse, usec) $1=25 (step idle delay, msec) $2=0 (step port invert mask:00000000) $3=1 (dir port invert mask:00000001) $4=0 (step enable invert, bool) $5=0 (limit pins invert, bool) $6=0 (probe pin invert, bool) $10=3 (status report mask:00000011) $11=0.010 (junction deviation, mm) $12=0.002 (arc tolerance, mm) $13=0 (report inches, bool) $20=0 (soft limits, bool) $21=0 (hard limits, bool) $22=0 (homing cycle, bool) $23=0 (homing dir invert mask:00000000) $24=25.000 (homing feed, mm/min) $25=500.000 (homing seek, mm/min) $26=250 (homing debounce, msec) $27=1.000 (homing pull-off, mm) $100=250.000 (x, step/mm) $101=250.000 (y, step/mm) $102=250.000 (z, step/mm) $110=2000.000 (x max rate, mm/min) $111=2000.000 (y max rate, mm/min) $112=2000.000 (z max rate, mm/min) $120=200.000 (x accel, mm/sec^2) $121=200.000 (y accel, mm/sec^2) $122=200.000 (z accel, mm/sec^2) $130=200.000 (x max travel, mm) $131=200.000 (y max travel, mm) $132=200.000 (z max travel, mm)
The parameter List above is mainly a memo for myself which I might use should I ever feel like setting the Scrappy Arduino Pen Plotter back up again. For now, I decided to scrap the Arduino with CNC Shield for a different project…
Loved this article. Came here for the $3 stepper motor article and decided to see others. I really like this one. I saw a plotter on a whiteboard a few years ago at the Hackaday SuperCon in San Francisco. Loved that idea. He used Raspberry Pis to run the motors. I have an ancient pen plotter in my office that I saved from the scrap heap. Perhaps I can get it to work again or use parts from it.
is it possible to do this project with raspberry pi and control it via wifi
I don’t see any problem with that setup. Should be possible.
sir why did you prefer lead screw linear actuator instead of pulley driven mechanism
I used the lead screw because that’s what was available to me at the time. It’s a scrappy plotter after all.
sir can you give me screw details and dimensions ,i want the same exact piece that you used
sir do you have cad model for this .Does all the parts are custom made or you bought
I don’t have any details on dimensions, sorry. I wish you all the best!
sir did you use battery or 12 v transformer from the main for power supply
I used a 12V power supply.
sir i want same setup done raspberry pi 3b+ can you specify what and all requirements since i want to control remotely
sir can you send circuit diagram for this project
sir please can you send me circuit diagram i am running out of time
You just need a CNC board for the Arduino Uno, that’s all. Connect all the stepper motors to the CNC board and you’re done. There is no circuit diagram because the circuit is so simple.
sir did you calaculate the linear distance travelled for per rotation of motor and then fed into code
sir i am getting ”
“specified folder does not contain a valid library” can you specify what kind error is this iam unable to add library
How did you attach the servo when you were using it? was it a pin on the cnc shield?
I think it was. I am not sure though. You should be able to trace the pinout from the Arduino by looking through the code in this repository:
https://github.com/robottini/grbl-servo
Figured it out. It’s the Z+ pin on the Shield. Also just FYI to anyone GRBL-servo needs to be compiled against it’s included libraries, not the standard GRBL ones.
The best in class, Depoxito meet the expense of you
high-end experience that dispatch the see and vibes of real
VIP standarts, we give you the best glamorous to high-level experience of VIPs
expect in any top end casino, grand flesh and blood casino royale give
you the new studio design element including the grand blackjack, offering our VIP Customer the best experience of a Salon privee table.
New style table furthermore feature across the room in the manner
of grand roulette upgraded on our provider playtechs mini prestige roulette which delivering more
fascinating and richer playing experience. The other experience contains
a total of seven tables including five blackjack tables, one roulette table and one baccarat table.
Grand rouse casino royale has been tall hand-engineered to fit the needs of our customer to using it,
and contains unique elements that is specially meant to maximize the
impact value we got from our customers and diversify it
to the existing network.
Soon, Depoxito will manufacture an improved veracity technology on stimulate casino for our VIP member, these most militant
technology ever seen in alive casino including this augmented reality.
Which permit players to experience products on an entire supplementary level
which is never seen previously literally
leaping out of the game and taking the blackjack, baccarat,
roulette and further game into the combined entire level.
Depoxito VIP Baccarat, we offer you the completely exclusive
flesh and blood VIP Baccarat that is played considering happening to
7 players at the thesame table and our severely trained beautiful bring to life baccarat dealer.
And of course our VIP advocate will mood as if they were essentially sitting at
one of the summit casino baccarat table. This immersive gaming experience creates
a hugely thrill-seeking broadcast that our VIP players
will find difficult to surpass.
Here is the list of rouse casino game that depoxito provide, we pay for the widest range of
flesh and blood casino games upon the push including : blackjack unlimited, blackjack
prestige, roulette, baccarat, poker, hi-lo, sic bo, and grand
living casino royale such as Grand Baccarat, Grand Blackjack and Grand Roulette for our VIP member.
And of course as a advocate of Depoxito you can enjoy all the
games that we have the funds for to you, every you infatuation to
realize is just visit our site depoxito and register it by yourself takes in the works to 3 minutes and subsequently youre
within acceptable limits to accomplish any game that
you want.
Be our VIP, visceral our VIP enthusiast of course contracted you the best advance
you can acquire from us all you obsession to be a VIP
aficionada is very easy. every you compulsion is just save playing upon our site, increase and bill gone a VIP
when the amount that our company had written, save playing and our customer encourage will log on you that you are promoted to
become a VIP supporter on our site.