CNC mini-mill
This is a build of a networked 3 axis CNC machine using a mini-itx VIA Epia EK 10000G mainboard, a kit from Probotix, and a Sherline mini-mill. Many times there are CNC boxes sold containing only the motor drivers and their power supplies, yet with no computer to handle the operation of the machine. This project was a testing ground to implement a truly complete solution in one box.
networked 3 axis CNC system diagram
control box
The box came out pretty good, yet it's stuffed to the max. I could improve air flow through the unit. It doesn't get that hot after a half hour milling task. All the fuses for the motor driver boards are located on the front of the unit for easy access, and I also wired in some panel mount LEDs to show everything is powered.
I wired one main power switch on the right, a momentary push button switch for the mainboard on the left, and an emergency stop switch for the motor control.
The 24 volt DC power supply that came with the Probotix kit allowed me to directly wire the DC-DC power converter of the mainboard. I used the PicoPSU 60W wide input range DC-DC power converter for the mainboard. The mainboard maxes at about 22 watts.
I went for a slim SATA hard drive because I didn't want a huge obnoxious IDE cable in the box, plus most of the hard drives I own now are SATA anyway. I could probably neaten and route all the cables in the box better.
Overall the unit is pretty slim. I did have to alter the mainboard slightly. I had to slim the height of the audio port which jutted out of the box. That didn't matter much because I could care less about having audio from the box.
Sherline mill
Retrofitting the mill was simple. Mounting the motors went without a hitch, and the motors are a good weight for this mill. I think if they were any larger they would be too powerful for a mill of this size. Actually, these motors may be overkill for this machine.
I also removed the spindle control box from the spindle motor to lighten the Z axis slightly. I rewired it with a longer cable and placed it in a more desirable position off the machine.
steppers
The dual shafts on the motors allowed me to re-use the hand cranks and have manual control when I want. I had to ground flats on the motor shafts so the couplings would key correctly.
I used four wire DIN connectors on the steppers and created some male / female cable assemblies
machine side software
I had no problems setting up the bios for the mainboard, just had to check that the parallel port was configured correctly. The VGA display settings in the bios for VIA Epia EK 10000G mainboard do not offer a wide selection of resolutions. Unfortunately, the monitor I have paired with this mainboard does not particularly like this.
I installed Ubuntu and EMC2 onto the mainboard from a boot disc I had created. No problems. Next I ran a latency test for the mainboard and found it to be 12,183 nano-seconds under heavy processing. Setting up EMC2 was easy enough, although I did have to invert a couple of pins on the parallel port. I set up the steppers to run at half step.
Right now I am using the AXIS interface for my mill tasks. I also setup the EMC2 .ini config file for image-to-gcode, which translates .png or .gif files to G-code. The AXIS user interface is fair and could be drastically improved. Compared to the other interfaces that come with EMC2, it is the easiest to use.
I had to setup AFP (Apple Filing Protocol) using Netatalk on the Ubuntu CNC box to be able to mount the networked drive in OS X. This allows me to drag and drop files onto the Ubuntu CNC box's drive, ready for machining.
design side software
Currently, most of my CAD work is being done in the pre-release of Rhino for OS X. As with any software still in development, it has its issues. Yet, it is very easy to use, native to the Mac, and can import and export a variety of file formats. Rhino on a Mac will only will work with 10.5 and up.
The only application that I have found that will export G-code on OS X is CAM Expert. This is the sole reason I use it. CAM Expert is a little rigid and takes some getting used to, but it does the job, albeit roughly. The layering system and tool palette could be improved a whole lot. I can now sit down at my OS X machine and design away, then dump the NC files across the network onto the dedicated Ubuntu CNC box.
I also did a little a bit of futzing with the CAM Expert package. If you hop inside the contents of the package and look in Contents/Resources/machines, you can edit the defaults of the screen below. This makes it a bit easier when you find exactly how you wish to work. The options on this screen don't all seem to work properly.
workflow
- OS X: Design part in Rhino.
- OS X: Design toolpath in Rhino.
- OS X: Export DXF of toolpath from Rhino.
- OS X: Import DXF of toolpath into CamExpert.
- OS X: Export G-code NC file from CamExpert.
- OS X: Move NC file across network to Ubuntu CNC box.
- Ubuntu: Use EMC2 with AXIS interface to open NC file.
- Ubuntu: Turn on CNC machine and spindle.
- Ubuntu: Run G-code sequence.
- Pray.
other workflow possibilty
There is the extremely obnoxious and painful route of using Blender with a G-Code generating python script. Bleecch. This would mean exporting a DXF file from a CAD application, importing via Blender, running the python script, then lastly, saving the NC file. I just can not stand to use Blender due to its horribly confusing user interface, non-native feel, and overall bloat.
improvements
- PROBLEM: The back panel of the box is sloppy.
- SOLUTION: I should find a panel template for the mini-itx board I am using and create a G-code file for it.
- PROBLEM: An ugly parallel port cable connecting the mini-itx mainboard to the driver board just hangs out of the box.
- SOLUTION: There could be a better implementaion without the bulk of the cable. The Jonestown board has a parallel pinout, instead of a port on the backplane.
- PROBLEM: The spindle motor control is seperate from complete box.
- SOLUTION: Drop the spindle motor control into the box. Need heavy gauge connection to plug in spindle motor. Heat will be an issue.
- PROBLEM: I have to turn on the power to the entire box, then boot the computer. This was done as a safety precaution.
- SOLUTION: Implement a single ON switch.
- PROBLEM: Takes too long to boot.
- SOLUTION: Slim down the Linux boot process?
- PROBLEM: VIA Epia EK 10000G mainboard VGA settings are limited. No DVI output.
- SOLUTION: Use a mainboard with DVI output, most likely will upgrade later.
- PROBLEM: The on-board graphics of this mainboard just plain suck, especially when running the plotting window in AXIS.
- SOLUTION: This will resolve itself on a mainboard upgrade with a better graphics chipset, maybe ATOM / ION?
- PROBLEM: Design workflow is plagued with inefficiencies, import / export problems, file translation difficulties. Not a clean process.
- SOLUTION: Use a single CAD/CAM package on OS X. I think there is one package from Siemens available and it is probably much too expensive and designed for industry work.
future
All I want is a simple Cocoa application in which I can build and output an NC file. I may have to fire up Xcode, and start this process.
Machine control via USB would be nice. For the Mac there are a couple of options, Arduino, Basic Stamp, etc. Yet I would need to write specific communication protocols. The funny thing is I wired up my steppers with DIN cables. DIN cables are generally used for MIDI devices, which made me think I could possibly implement a solution using MIDI via USB. Also, I think MIDI Show Control might be a real time system. Hmmm. I would have to write some custom software, but I would rather do that than mess with microcontrollers. I have wanted to dive into Core Audio anyway, and playing my CNC machine like a instrument is much more fun and interesting.
These MIDI decoders from Highly Liquid look promising. The MD24 outputs 24 logic level signals, so it is essentially like a parallel port. A USB MIDISPORT 1x1, connected to the MD24, outputting to 4 motor driver boards and a single relay board, and voila, 4 axis control with spindle on/off.
I no longer wish to rely on a mini-itx board, Linux, the parallel port, and EMC2. Taking this MIDI route allows me the freedom of solely using my Mac and creating some custom software. MIDI also allows me the freedom of using a plethora of hardware controllers, or building my own.
Since I am going to use MIDI as my communications protocol, the VVMIDI framework has been indispensible, opening up a whole new world for me. I wish I knew I of this sooner.
MIDILog is awesome as it allows you to see what is going on under the hood with your MIDI signals.
snoize also has some handy utilites.
I will most likely need to off load the generation of step signals to a motor driver capable of producing its own step signals. I would rather do this in hardware anyway, since it is a one time setup, and frees up the processor for other tasks. I do not care to write a step pulse train in software. This BSD-013G driver/controller board seems capable of doing that work. Yet it can only handle 1.5 Amps. Strangely, I can't seem to find many motor drivers with integrated stepping signal generators. The ones I do find are expensive and designed for industry.