Introduction: CNC Eggbot
When I discovered the cool eggbot art here on instructables and egg-bot.com i knew what my next gadget would be:-D
But i can't spend 200 bucks for it at the moment. So i decided to build it on my own!
In the following steps I will outline the basic design of the original egg-bot and show you my approach of building it.
Step 1: The Original Egg-bot
The original egg-bot features two steppers for rotating the egg and moving the pen, lifting the pen is done by a small servo.
The controller for the motors is the EBB (EiBotBoard or EggBotBoard i think), it is a controller/driver for two steppers and a servo which is based on the UBW (USB bit whacker) board which is basically a usb device for controlling multiple servo/stepper motors (http://www.schmalzhaus.com/EBB/ ). Together with a driver, and the correct firmware one can send a set of defined commands to it to move the motors. Eggbot programs are basically a series of commands to rotate the egg/pen and to lift the pen. There exists a inkscape Plugin to generate UBW-Commands for the eggbot.
And that's the part I didn't like so much about the eggbot: it is using a pretty custom set of software/hardware tools to operate, although there are already plenty of other great tools for these CNCish kind of tasks.
Recently I have built a desktop cnc milling machine (https://www.instructables.com/id/Easy-to-Build-Desk-Top-3-Axis-CNC-Milling-Machine/) with the appropriate driver (https://www.instructables.com/id/Easy-to-build-CNC-Mill-Stepper-Motor-and-Driver-ci/).
So I decided to alter the eggbot design a little bit, so that it is driven with three stepper motors (without a servo). Therefore it can be controlled with any cnc software (and I could reuse my old controller/motors)
Step 2: Eggbot Frame - Tools and Materials
One of the additional goals of this project was to keep the costs as low as possible, therefore I've built the eggbot frame from
some scrap wood (thin plywood and a bit thicker mdf),
two bottle caps,
an old sponge,
a few screws,
a ballpoint pen,
3 drill-depth-limit-rings (see photo),
and a latex glove.
For the electronics part you need three stepper drivers, a controller (in my case the controller was the parallel port of my pc) and a power supply for your motors
For the tools: I used a bandsaw to cut the wood, a rotary tool, a soldering iron, a few small drills to drill the holes, a screw driver and a wrench to tighten everything. Oh yeah: hot glue and tape, you always need hot glue and tape!
Step 3: Eggbot Frame - General Concept/overview
As I already described in the previous step, I wanted to drive this thing with 3 steppers instead of 2 steppers and a servo. Of course the stepper cannot be mounted to the "pen-arm", as it is way too heavy. Therefore I used a cable pull (see photo, correct me, if this is the wrong expression) to lift the pen. The lower stepper motor winds up thin thread which is wrapped around the shaft of the upper stepper motor once to lift the front part of the arm. Therefore it is basically a "default" 3 axis cnc machine (where the x-axis is wrapped around) and the z-axis is used to lift the pen.
I've attached a few fotos of the assembled eggbot and a detail shot of arm-lifting mechanism (as this is basically my change to the original eggbot design)
Step 4: Eggbot Frame - Assembly 1
I've cut out three pieces from the plywood, each is approximately 10cm high, two of them are ~25cm long and one is ~10cm long.
The mdf piece has the same size as the smaller plywood piece and is ~21mm thick.
I drilled multiple wholes in (approximately) equal distances on the left and right end of the long pieces so that i could screw the shorter pieces between them with some brackets (the original eggbot as slits to adjust the size continuosly, but it was easier to built it with discrete widths). I drilled two lines of wholes into one of the long pieces to give the bot more stability (the original eggbot has three lines each, but i thought this was overkill). The piece with the two lines of wholes has additional wholes in its center to attach the two stepper motors on top of each other. the short piece has also wholes to attach the stepper motor at approximately the same height as the upper motor on the long board (btw, there is no reason, that I've attached the motors skew, it's just my sloppy working style;-))
The mdf board has a hole (~4mm diameter), which is positioned in the center of the motor of the small ply wood piece (see 1st pic)
brackets are attached to the small pieces in the height of the rows of holes.
After mounting the motors to the plywood pieces I screwed all parts together.
Step 5: Eggbot Frame - Assembly 2
The egg fixture is build from two bottle caps to which I've attached a piece of sponge. You can use beer caps or screw caps (I used screew caps and cut them thinner with a rotary tool).
To one of the caps i hot glued a screw from which I rasped away the windings so it would glide through the hole in the mdf without any resistance (You could also make a slightly bigger whole or use a nail instead of a screw, but I just took, what I had).
This piece has to press the egg against the opposite stepper motor, therefore I took apart a ballpoint pen, took out the spring and put it onto the screw.
The second bottle cap is similar to the first one (attach a sponge to it, to not hurt the egg) except that i hot-glued a drill depth limiter onto it's back so that i could easily attach it to the stepper motor shaft (see photo).
The pen holder is basically two pieces of scrap wood that are taped together at a 90degree angle. The thinner piece should have a hole in it, with its center above the eggsis, errr, i mean egg-axis. A depth limiter is also hot glued on top of the whole, to hold the pen.
The front part of the ballpoint pen is taped on top of the joint, so that the arm can be lifted up easier by the lower stepper motor.
Another drill-depth-limiter is glued on the back of the longer part of the pen holder, so that it can be attached to the upper stepper.
A piece of thread (15 cm) is attached to the shaft of the lower stepper with some tape and a loop is made to the other end, to wrap it around the upper depth limiter.
During my first tests i realized the sponge didn't have enoug friction to move the egg, so I glued a piece of latex glove onto it.
Step 6: The Driving Circuit
At first I used this driver (which I already used in my CNC milling machine): https://www.instructables.com/id/Easy-to-build-CNC-Mill-Stepper-Motor-and-Driver-ci/
But the drivers where far too weak and the resolution was way to small (my motors are only 100 steps/rev, which makes about 25 steps to paint the egg, or ~25dpi...). Because of the momentum due to the weight of the long arm, the stepper often stepped one step too far, because it didn't have enough power to hold the arm (especially on lower positions):-(
Therefore I decided to built a few linisteppers (http://www.piclist.com/techref/io/stepper/linistep/index.htm) to drive my motors.
The lini stepper is a driver circuit for unipolar steppers with up to 18th micro stepping (that would be good enough for this application, ~400dpi). Furthermore I had planned to build a good stepper driver for my milling machine and my next project (3d printer:-)) so this was a good time to build those. I didn't order them, as i don't live in the US and shipping would have been too expensive. So I've built one of the modded versions which is suited for single sided PCBs, so I could etch them myself.
I won't describe the process of building the linistepper boards here, as they have got great instructions on their site. There are also plenty of instructables for making your own PCBs (I used the toner transfer method).
Oh yeah, before i forget: the linistepper uses a pic micro-controller, so you must have a programmer (I built a jdm programmer on a bread board, I took the circuit schematics from here: https://www.instructables.com/id/Business-Card-PIC-Programmer/). LVP programmers won't work, as you need the additional output pin!
I control the stepper drivers with the paralell port. One could also built a usb based controller (In the future I will, so that I can control it from my netbook)
Unfortunately microstepping isn't really working for me right now, and i'm still trying to figure out why. I think there are two reasons: psu is too weak (I'm using an atx psu, that means only 12V, but my motors are rated 24V) and the motors are 4 phase motors and not 2 phase as required... but I don't even know the difference. Oh yeah, and I'm not very skilled at electronics;-).
But the full-step mode of this controller is much stronger than the old one, therefore the arm doesn't step too far. The resolution is still crappy, but large letters are readable on an egg^^
Step 7: Software Toolchain
You can use anything that generates g-code or can otherwise drive a cnc machine.
As it is still early-alpha and more a proof of concept than a working machine I've only used the EMC2 demo program.
EMC2 (http://www.linuxcnc.org/ ) is a CNC-Software package for Linux that can drive a lot of different CNC-Machines.
As with the original egg-bot, Inkscape can still be used as for plotting an egg by using the g-code extensions (http://www.cnc-club.ru/forum/viewtopic.php?f=15&p=101 ).
Here's a video of the bot plotting the emc2 demo program onto an egg (the video is a bit out of focus in the beginning, so you may skip to approx. 1:30)
Step 8: Improvements and Further Possibilities
As I already mentioned the resolution must still be improved, but I wanted to reach in this instructable for the eggbot-challenge. But as soon as I figure out the problem, I will post an updated video of the eggbot.
The frame could also be made prettier and easier to adjust for different egg-sizes.
The approach of using a third stepper for lifting the pen offers a whole new area of application: One could use really soft felt-pens to vary the line thickness (as you've more exact control over the pen height, not only binary up/down control). To respect the shape of the egg, standard 3d software can be used, as most formats can easily be converted to g-code which can then be fed to EMC2.
There're also a lot of gcode generators which can now be used to generate patterns for the eggbot (e.g. http://wiki.linuxcnc.org/emcinfo.pl?Simple_EMC_G-Code_Generators ).
You see, there're limitless possibilities;-)