The newest version of the CNC controller software, grbl (0.9g at this post) has a lot of cool new features, but the two that caught my attention were the ability to compile and upload from the Arduino IDE and support for multiple Arduino types including the Arduino Mega 2650. I have always found the I/O count and memory of the Arduino UNO very limiting. I quickly compiled it onto a Mega and hand wired a RAMPS board for testing. It worked great.
The RAMPS board is a famous open source RepRap 3D printer controller. It is an acronym for Reprap-Arduino-Mega-Pololu-Shield. It is so simple and hackable that I have used it for dozens of CNC projects. The RAMPS board made it easy to hook up all the wires, but you can’t just plug it into MEGA because grbl requires that certain I/O is grouped into a single I/O port. RAMPS was designed for 3D printer firmwares that do not have that limitation, so things like X,Y and Z step are not all on the same port. I am sure you could hack grbl to break that limitation, but I wanted to only touch the config files.
The RAMPS also has a ton of features, like (3) thermocouple inputs that are not needed, so I decided to make my own version of a RAMPS with just the features that a CNC router like the Shapeoko needs. When I realized I could use the name grAMPS (grbl+RAMPS), I wanted to get it done as quickly as possible. Here are the features I implemented.
- Stepper drivers for X, Y and Z.
- The Y axis is setup for dual drive with two ganged stepper drivers (like Shapeoko). If you wanted dual on a different axis, you just need to modify the pin mapping a little.
- A spindle control circuit. This uses a high power MOSFET. I have it hooked up to a 10 bit PWM channel. It works great with no thermal issues.
- Separate power inputs for the Stepper Drivers and the Spindle so these can be run at the optimal voltages.
- There are terminals to hook up a fan to cool the drivers using the motor power supply
- X, Y and Z limit switches are brought out to a terminal block.
- The Z probe function is brought out to a terminal block.
- There are buttons for Feedhold, Resume, grbl Reset and Arduino Reset.
- IOREF is used for the stepper driver logic voltage, so you could try this on an Arduino DUE board. There is a jumper in case you have an old Arduino that does not have the IOREF pin.
- Microstep selection jumpers.
I hand assembled one in about 30 minutes. The part count is quite low.
The only thing I would change is the power terminal blocks. There are a little small for heavy gauge wire. Everything else I like. I like the clean layout. I love how fast and easy it is to assembly. The parts cost is quite low except for the 0.10″ pitch terminal block. That is a couple dollars by itself.
I have about 15 raw boards. I would love to get them in the hands of some CNC builders. I will be at Maker Faire NY. Find me or tweet me, @buildlog, during the faire for a free one. My hackerspace, Pumping Station One, will have a booth there. I might spend some time there.
Gerber Files 16030