This project was started to bring CNC machining to my Macintosh desktop computer. For the past couple of years I have run a Linux box with EMC2 to control my mini-mill, and finally grew tired of relying on legacy hardware. EMC2 is rarely updated, klunky, and far from user friendly. I wanted to escape the clutches of this box and decided to go ahead a write a native application for OS X. To do this I had to implement a new hardware control box strategy, the key being a MIDI decoder. The MIDI decoder essentially replaces the parallel port. All communication with the computer and the control box happens via MIDI over USB.

prototype control box

This prototype control box contains an AC to DC 24 volt power supply, a DC-DC converter, the MD24 MIDI decoder board, 4 stepper motor driver / controller boards, a logic level 15 Amp relay board, 4 DIN ports for bipolar stepper motors, and an AC outlet for the spindle.

- -

I chose stepper motor drivers with integrated step signaling so I could offload that work from the processor, plus I am lazy and did not want to write a step signal generator in software. Maybe in the future. The thing is, once the motor drivers are tuned, there is no need to change anything. There are advantages and disadvantages in doing it this way, but overall it is less of a headache for me. We'll see.

Interestingly enough, using MIDI allows me the ability to use other MIDI hardware to control the machine.

After building this prototype control box, I found an even better MIDI controller solution (HALE UMC32), allowing me to eliminate the use of the USB MIDI Sport. I have not tried implementing this board yet.

software

The software is in progress, but here are some screenshots as of April 15, 2010. The central display is using OpenGL to show the location of the spindle on the workpiece. The real glue in the software that makes most of this work is the VVMIDI framework.

- -

Five axis control!

Slowly working on the g-code interpreter.

All media, unless noted, © 2011 Mike Low.