Friday, November 19, 2010

Ditch our firmware, run EMC2's RT code on our micros instead.

I've been reading about EMC2 lately, and running it in simulation mode as well. I'm becoming convinced that the smart thing to do is to throw all our firmware efforts away, and rewrite the RT portions of EMC2 to run on a microprocessor instead.

EMC2's understanding of acceleration and path following is MUCH, MUCH more sophisticated that what we have, or likely will have in the next 5 years unless we use their code. They even have implemented auto-calibration routines for stepper-based machines to find the maximum speed and acceleration on a per-axis basis.

I think it would wring considerably more performance out of our existing hardware, getting faster and more accurate prints than any other method. The only serious question I have is if it's even possible to reimplement it in that way, (does it require a floating-point hardware to get adequate performance?) and how beefy a micro it would need.

I know that we can use EMC2 right now with a parallel port, but adding more extruders or controlling the heaters requires dodgey workarounds, and heaven help you if you don't have a parallel port, or if your computer's hardware is a bit quirky, and can't do the low-latency stuff that EMC2 requires to function.

Current EMC2-type solutions to this require expensive dedicated IO cards, or older computers in the case of latency issues. EMC2 can't use the USB port approach because of latency issues. But the USB port with an external micro to run the RT code could get around this, and result in significant cost reductions for all users of EMC2, as well as nifty things like analog inputs, high-frequency PWM, and higher frequency stepping than is possible with current EMC2 implementations.


  1. I agree. I came across the Chumby Hacker Board (check out, which runs linux and has a bunch of GPIO pins that, in theory, could run the stepper drivers. In the reprap forums, someone suggested using EMC2 in combination with this board. I'll start a thread on the forums and see where it goes.