CNC Controller from Scratch

I’ve been working on updating an older model JCut CNC Router that I came across last year. The machine works well, but its controller card is old enough to not be supported by most modern computers (it’s an ISA card!!!). Plus, the most recent OS that the driver works with is Windows Vista. Ideally, I’d want to use this with a modern computer and OS. I got to investigating and found GRBL – an open source CNC controller firmware for the Arduino Uno. It’s pretty customizable and meets almost all the requirements for my machine. The only place it fell short was in spindle speed control. This particular machine doesn’t have continuously variable speed control. Instead, it has several discrete operating speeds. GRBL assumes that you’re using a variable frequency drive and outputs a pulse width modulated (PWM) signal to indicate the desired speed. You could, hypothetically, go into the GRBL code and rewrite what you need, but I found it easier to just tack on an Arduino Nano to act as a speed selector. It takes the PWM signal from the Arduino Uno and them selects the nearest discrete speed that the machine supports.

I’m not an electrical or circuits guy, so this project was a big learning experience.  Anyway, it made a good summer project and saved a little of money.  Just gotta make a neat case for it now.