My DIY CNC Build Log Part 2, Software, Tuning
NOTE: My blog has now moved. Please visit my new blog where I write about audio apps, diy synthesizers, and CNCs.
This is Part 2 of the build log for my MyDIYCNC kit. I took part in the Kickstarter for around $400 and received a complete 3axis CNC kit. I plan to use it for modular synth milled circuit boards and aluminum frontpanels. You can read Part 1 here.
I finished the electronics without a hitch. For now I'm using KCam in Windows. The software is usable and relatively simple so while it's good to start with, I plan on switching to ECM2 in Linux before long. Using KCam with Windows 7 if the parallel port has problems changing bits and you see no CNC motion, close the program and run as administrator. It's now running as a new user so you have to re-set up your port and table settings.
Click to read more about Inkscape->DXF importing to KCam, and using CAMBAM to generate a flat table bed.
I found that on my old Athlon desktop, the computer really needs everything else closed to give good CNC performance. Otherwise when the CPU is active doing other things, you will hear the motors pause temporarily. That's because the parallel port is actively pulsing every stepper step, instead of a more hardware based solution where the computer sends entire motion commands to a microcontroller. That's ok, just don't surf & mill.
KCad supports DXF R12 importing. The R12 is important as Inkscape's built in DXF export saves R13 which is incompatible. The solution is to get Better Better DXF Output plugin for Inkscape which will save in R12. I had some problems getting importing this DXF however so I reverted to the older Better DXF Output plugin which worked for my simple 1-layer use cases. This worked on my CNC but I found that my table is not a perfectly level plane. This resulted in a wide variance in milling depth of my "Hello World" test.
The solution to that problem is to mill a level table bed. I tried to do this with a piece of plywood and ran into many frustrations. The first was that DXF between Inkscape and KCad doesn't seem to support milling filled shapes. I guess the outlines are saved to DXF and kcad won't invent toolpaths for filling. I needed to move to CAM BAM to generate the machining code for a level bed.
Getting CAM BAM to generate my milling code took a long time. It kept printing a message in the bottom saying "Step over must be positive and nonzero". But I had it set to 0.4! After reading more I found out that stepover is a fraction of the tool's width that will dictate how much overlap there is between consecutive passes. While I had the Stepover parameter set to 0.4, I had to also set tool widths and "final stepover" values so the code generator could convert from the fraction to an actual distance in fractions of an inch. Finally, I had my gcode!
Time to mill out the bed :(. Firstly, this operation really highlights how this CNC is wayyyy too slow to do 3d object milling. It is going to take a few hours probably to mill the bed, which would be a equivalent to the first pass of probably 20 passes to mill away layers on a 3d shape. The other solution is to repair my CNC, fix the parallel bars, and fix the problems that make it need to go too slow, but honestly.. I'd be better off making my own CNC design from scratch at this point. Hopefully this one works well enough to do circuit boards and halftone images.
Secondly it highlighted how inaccurate the default spindle is on the MyDIYCNC kit. When the drill bit contacts the wood, it vibrates and shakes within a distance about twice it's tool diameter. Other people on the MyDIYCNC forums have switched to a bigger dremel tool with good results. I want to do that but I've lost all the collet pieces on my Mastercraft dremel-style tool, so for now I'm stuck on the default dremel.
I'm thinking the plywood is causing problems. I'm switching to MDF tonight to give the table bed another shot. Here's hoping ><.