Gradus M1 Pro
The Gradus M1 PRO GRBL CNC Controller is a reasonably priced 3-axis CNC controller designed around standard pluggable stepper drivers such as the Pololu A4988. For a more complete description see the product page. The scenario documented here is replacing the stock controller in a working Shapeoko 3D system with the Gradus M1. It does not cover the process of designing a CNC machine from the ground up using the Gradus controller.
It is important to understand up front that the Gradus M1 is clearly designed with the experienced experimenter in mind. The documentation is extremely bare bones and support consists of a pointer to the one page “wiring diagram.” In other words, if you are not comfortable working electro-mechanical devices, embedded software and CNC basics it is suggested that you seek alternatives to the Gradus board.
Acquiring All the Pieces
The Gradus M1 Pro is for sale on the Panucatt Devices website. In addition to the controller board you will need to acquire 4 driver daughter cards. Panucatt sells several different driver models as add-ons to the board and since the prices are reasonable it makes sense to buy these when you purchase the controller board. For this evaluation we used the Bigfoot BSD109A Stepper Drivers.
Panucatt also sells what they call “end stops” which we assume are limit switches but they are not documented anywhere so it’s a bit unclear. We are just going to reuse the Shapkeoko limit switches which are non-grounded normally open switches.
You will need a hefty power supply. In our case we are simply reusing the power supply that came with the original Sparkfun/Shapeoko kit which is a 25V 5W supply. Unfortunately the Gradus board has no barrel connector on-board so you will have to acquire a barrel-to-terminal adapter if you don’t want to chop the power connector off the end of your power supply.
Since the Gradus uses plug-in driver boards it relies on the individual driver boards to dissipate the heat from the stepper driver circuits. Some drivers come with stick-on aluminum heat sinks to help with the heat. You may want to acquire some stick-on heat sinks independently if your driver boards did not include them.
Because this controller does not have a large built-in heat sink like the Carbide and Stepoko controllers you are free to mount it anywhere it won’t get in the way. In my case this was just temporarily piggy backing it on the existing Shapeoko mount using nylon standoffs. Figure 1 shows the Gradus piggy-backed on a Sparkfun/Shapeoko 3D.
Connecting It Together
The wiring diagram for the gradus controller shows how to attache the stepper motor leads. In my case I followed the wiring diagram with one exception. The Shapeoko 3 has Y motors that turn in opposite directions. The Graduc M1 Pro has two Y channels which are “slaved” together so I reversed the polarity of the wires on one of the coils on one Y motor so it turned in the opposite direction.
The limit switches were wired into the terminals marked on the board. The board markings indicate polarity (gnd) but I ignored this since the stock limit switches for the Shapeoko have no polarity. The limit switch circuit defaults to normally open so if you have standard NO limit switches like the stock Shapeoko swithes you are all set. Otherwise you will have to reverse them during configuration stage ($5=1).
The emergency switch connection is simply a couple of pins sticking out of the board so you will need a 2-pin molex connector to attach a switch. If nothing is attached or the switch is open, the controller operates normally. If the switch is closed the board is in emergency stop mode and doesn’t respond and doesn't accept input through the USB part.
Of course the USB attaches to a USB port on the computer of your choice. It should show up as a COM port when the board is powered up.
Because the Gradus board is running GRBL, you will have to tailor the various GRBL parameters to suit your installation. Because I was working with a stock Sparkfun/Shapeoko 3, I used the Shapeoko default settings as the basis for my installation. In addition you will want to refer to the “configuration bible” on the GRBL site for additional configuration details.
I prefer to use Putty to do the configuration. Connect PUTTY at 115200 baud to the appropriate COM port to check the various parameters. The $$ command will give you a listing of the current settings. In my case the Z axis had to be reversed ($3=4). I also had to enable homing ($22=1) because I had limit switches installed and wired on my Shapeoko 3.
The 4 BSD 109A stepper driver boards are configured by jumpers. You will have to consult the appropriate data sheet to figure out your jumper settings. In my case I set the drivers for a 1/16 step to match the Shapeoko configuration that I cloned, which saved on calibration steps.
At this point the controller should be ready to test and calibrate. I used Universal Gcode Sender to jog around to make sure everything was moving in the right direction and (roughly) the correct amount. For calibration I did a profile cut on a few different-sized boxes from 10mm to 200mm and then measured the cuts to make sure they matched my design parameters.
I didn’t have to make any adjustments but if are not using a know configuration you will have to adjust the step sizes and limits to match your physical set-up. The Sparkfun site has a nice description of how to a GRBL controller.
I was able to get the Gradus M1 Pro up and running with a minimum of pain largely because we had done this all before with the stock Shapeoko controller (which for the Sparkfun version is called the Stepoko). There may be a fair amount of trial and error in your set-up involved due to the lack of documentation, but the board seems to have reasonable defaults and tolerates experimentation near as we can tell.
A few things, such as maxing out the driver micro-steps(to 1/32) and reflashing the board have not been tried at this point.
We have made a few fairly complex cuts using Vcarve to generate the gcode and are satisfied that Gradus is performing at least as well as the stock controller which maxes out at 1/16 micro-steps.