Maslow Home Maslow Community Garden Newsletter

Building a Maslow with Stepper Motors

Has anyone built a Maslow with stepper motors instead of servo motors? I’m on the list to be notified when more Maslow kits become available for purchase, but in the mean time I think I’m going to build one from scratch utilizing stepper motors instead (I have way more experience with them). Looks like I’ll be learning a bunch more about Arduinos and G-Code in the coming months. After watching the video’s I keep thinking of more and more projects I could do if I had one of these.

see the topic “stepper motor with gearbox” on the old forum (I can’t pull it up
to get a direct link easily, sorry)

the guy paid a developer to fork the maslow firmware to be able to drive stepper
motors and built a machine using steppers with gearboxes. He initially used a
planetary gearbox, but then moved to a worm drive gearbox

1 Like

Awesome, Thank you for the fast reply, I’ll check it out.


I’m looking the option run this CNC with stepper this firmware can’t be compiled.

Do anybody have experience to run MaslowCNC with steppers any advise?

you still need to put a gearbox on the steppers, one that cannot be backdriven
(so a worm gearbox, not a planatary gearbox)

that code is old enough that it’s probably missing a fair bit in terms of
correction factors for things like chain sag. It’s probably only useful to see
about pulling the stepper driver code from. It would be nice to have that in the
main codebase (even if it’s a compile-time options) so that it doesn’t bitrot
like it has.

David Lang

I think the use on not gear box depend of the motor, stepper can fix the position

the problem with code, I can’t compile it and check it is it work or not.

I think the use on not gear box depend of the motor, stepper can fix the position

only when powered, when you shut down the power the steppers can move.

This would require that you keep the motors powered all the time, and re-do the
chain lengths/position each time you power on.

currently the code removes power to the motors all the time when it’s not
actually moving (and for a couple seconds after the move)

the problem with code, I can’t compile it and check it is it work or not.

the guy who did the port tried using planetary gears and found that it didn’t
work, he is the one who said that it needed to be a gearbox that cannot be

David Lang

currently the code removes power to the motors all the time when it’s not
actually moving (and for a couple seconds after the move)

I don’t think this is a problem, on the test i remover the signals from ardu and stepper was keeping position maybe this is my driver.

I just nee the code to check the possibility, now I can’t play with it.

For anyone interested

I am not using the maslow firmware but I would like to.

I am using
easel inventables
3 nema 17 with 27:1 gearbox (amazon) 2 for corners 1 for router

My router and plate is aprox 10lbs maybe a little more. at 500mm per min no steeping issues.

3d printed motor supports for 2x4 arms

1 nano cnc v4 board (amazon)

ring mounting kit for the router.

standard gbrl 1.1 (not modified!) I set the motors to not power down ever.
Even with motors powered down if the sled is stopped in the middle of the board it will not creep.
I park my g code in the middle when done.

I do the kinematics conversion in a separate program. I am adding minimum segment length to manage straight lines over distance.

I wish there was an option to do steppers in the maslow firmware. I am not good enough with code to add the option.

but for now I can get it to work.


1 Like

That is super cool!

The maslow firmware is built pretty different from regular GRBL and some of the interrupt driven stuff might make it a little tricky to port to using stepper motors…BUT…I’m working on a new controller based on GRBL which would make it very easy to run the stock maslow firmware so hopefully in the not too distant future it will be possible :slight_smile:

1 Like

one of your big problems is going to be determining your position. grbl is based
on the idea that you can home to get your position. homing a malow-style machine
is non-trivial (you can’t know that you can safely retract or extend a chain
without knowing (at least approximately) the length of the other chain.

David Lang

I bring the sled to a know place and set the x and y position(chain length).
My test setup had limit switches on each chain tensioner. This required the home position was off the work piece. My new plan is to add homing switches that I can move out of the way during normal operation but I can move them in to position to zero then after zero set the actual chain length in the gbrl. Only requires manually extending the chain beyond the sensors then flip them into place then home. maybe this method might be done for the origin maslow setup.

1 Like

The center of my work is my homing point currently. Yes it is a visual reference and not super accurate but for now until I get the home sensor working it works for signs and random cutouts. Not true dimensional work work. But it will be. Eh gives me something to do. It is pretty good for now I do need to come up with a calibration pattern correction program for the kinematics to get things dialed in. It is a fun project and help me get through covid19 lock down.

1 Like

I look forward to firmware that can run steppers. I am hacking this together a little but seems to have promise. Always willing to test the code when ready.



I have added a link to my homing sw prototype.

I set the screw flag to half the travel.

I set the sled to my center of work which is 48 in by 48 in.

Adjust sensor to trip when home = center of board.

Set x and y values after homing to expected chain length at center for x and y.

Open rocker switch to disconnect sensor from limit input to not impact chain travel. Only used for homing to know position.

The sprocket with be on the counter weight side of the sprocket not the sled side. Direct off the motor would be better but I want it to be able to retro fit to an existing machine using #25 chain.

Probably not the best location for the home sensor project but it is a continuation of the grbl 1.1 and steppers to make a maslow.

I will add more after I mount on the machine.

fyi 10 tooth sprocket aprox 20mm pitch diameter. 68mm per revolution

m8-1.25 threaded rod

about ±40 mm on sensor

40/1.25 * 68mm = ±2176mm aprox chain travel I think

1 Like

I have added the limit Switches to my machine. Even with 2mm travel of the screw equal to 68mm of chain travel it works very well. I keep the homing seek slow to maintain accuracy. I did not need to add a switch to remove the sensor after homing. I have disable hard limit switches and I just get an indication but no error. So sensor are only active during homing. The only requirement is the sled is below the center line and roughly in the center before homing. I home in the negative direction. I made my sensors mounts symmetrical so I can mount the sensor board 2 ways. This is good as I forgot teh chains run counter clockwise on the left and clockwise on the right. I just move the sensor to the other mounting holes. Also found out in my kinematics I had the wrong pitch diameter. This fixed my skewing errors. I use labview to post process my gcode and correct for kinematic. the output is modified gcode with chain lengths for substituted for X and Y coordinates.

To home both x and y in the negative direction $23 = 3 I could have set the home in the positive direction this is a matter of choice. The sensors work in either direction.

As long as the chain doesn’t jump or stepper misses steps steps home is maintained. I think this is the same for the maslow and the encoders not missed steps but chain jumping.

I set a macro that sends $H; then the code to set x and y to specific values; . (I can’t remember the command I will edit later)

After the homing macro the x and y indicate the chain lengths for the current bit position on the work space.


Sensor flag will need to be modified. I noticed the travel in the positive and negative direction are not the same. I will make a new flag so when the router is in the home position travel will be equal. This flag is fine for now.

Added new photos with sensors mounted.


This is quite clever. The way you went from linear motion to rotational motion back to linear motion for the homing is neat.

1 Like

Just an update. I have had a chance to test the homing accuracy and it is far better than I expected.
I created an easel project with a 24 in square 20 in diameter circle and a 10mm hole 1/8 in deep all centered centered on the 48x48 workspace.

I ran my interpolation program to make a line seg no more that 25.4mm

Then ran my kenimatics to convert from xy to chain length.

I loaded the gcode in universal gcode sender and home the router using a macro that send $H then sets the current position to a known value G10 P0 L20 X1198.75 Y1195.363

home macro = $H;G10 P0 L20 X1198.75 Y1195.363

after homing I ran the gcode and waited about 15min for it to finish.
I used an 1/8 flat bottom bit for the test.

I lifted the route and jump a link on each side just for good measure.

extended manually with the jog buttons teh chain so the router was approx centered left to right and below the centerline of the board.

re homed using macro $H;G10 P0 L20 X1198.75 Y1195.363

and start g code again same code.

from what I could see and no real way of measuring, if this was of more than 10 thousandths of an inch I would be shocked. The only thing this cut was some of the frayed bits from my up cuts the first time. I did not see any fresh side material get cut over the entire job. I am very happy!!

far better than I expected.

I do still have a geometry error an I think I found it. my steps per/mm I think are off. I need to use the actual calculated step/mm

8 micro steps x 200 steps * 26(103/121) gear ratio / 20.54 pitch diameter of the gear 10 tooth .25 pitch
somewhere about 2,091/mm

now that homing work well I can work on getting things calibrated then I can try multiple tool changes on the same project.

Not sure anyone really care about this but wanted to keep this going until I am happy with it. Feel free to use the auto home switch I can send 3d files if requested.

I keep forgetting to weigh my sled I will post when I do.



be aware that microsteps are not actually that accurate in terms of movement
(far too load dependent to trust for accuracy)

David Lang

1 Like

That’s exciting stuff! I’m not totally surprised, I can’t think of any reason that stepper motors wouldn’t work.

Are you still using limit switches to home the axis?