Maslow Home Maslow Community Garden Newsletter

Hardware "STOP NOW" button?


Anticoagulants are blood thinners. You don’t actually lose viscosity but it looks like it since you bleed easier. Imagine little corks, and fewer of them. You bruise easier, and nosebleeds can be a real problem to stop.

Bones are always being destroyed and replaced. Osteoporosis is where the destroyers are faster than the rebuilders.

They force feed pharmacology to medics :slight_smile:


Quick bump on this topic
Has anyone implemented a hardware stop now button?

From Bar’s early post,

it sounded like just stopping the motors would allow the arduino to maintain it’s position while preventing further movement of the sled.

If this is the case, then to accomplish:

a hardware button to stop the motors would take care of points 1 and 2, and then the router could be stopped following this step. This may also require hitting the “Hold” button after getting the router stopped to ensure that the arduino doesn’t issue move commands when power is restored to the motors.

I am thinking a separate router emergency stop button is also a good idea, but I am not sure it would need to be incorporated into the first two steps since, either the router is running while still on the workpiece, but not moving, and therefore not cutting further into the piece since the motors are stopped (and the router can then be stopped at leisure), -or- the router is running but not on the workpiece/Maslow and needs to be stopped immediately, in which case (for me anyway), my only concern will be stopping the router and I can deal with everything else after that.

In any case, I’m interested to see what folks have come up with on this idea.


An E-Stop is one of the most universally desired components not included in the Maslow kit. Just for completeness, here’s a list of topics and posts with contributions to the topic:

Okay, so this first one is the current topic. Very meta of me.


In my recent trip to use a ShopBot at the Think[Box] maker space, I noticed a couple of nice things about their setup:

This is the “pendant”. It’s a handheld box that is normally velcroed to the control station, but can easily be picked up and carried as one gets close to the shop bot to see if it is getting itself into trouble. Note that this is in addition to a fixed emergency stop button on the ShopBot itself. Also note the remote for the dust collector, right there. Neat!


I’m looking at using one of these on the NO side to a single AC socket with the reset and Arduino 5v power running to the Emergency stop. The Feather is an Arduino small format clone. I like the possibility of using a RTC and being able to have the Arduino control the hours of operation as well. This feature could be used in a shop or school environment to secure the Maslow from operating outside “Open” hours.

Thank you


Except that the gcode keeps moving right? The board won’t realize that the motors aren’t moving… Or does it send a stop signal to GC once the power is cut to the shield?


An emergency stop is not an organized shutdown, it’s for disaster prevention/reduction. Pause and restart is for when you have time.

However, you still may be able to to re-home and edit your gcode to recover a part it it hasn’t been damaged beyond repair and wood filler will still, er, cut it.


I do understand this concept. I was merely making a point, since @bar said that you wouldn’t lose position. Technically, you do, unless I’m wrong on how it works. That’s why I asked for clarification


This s part of a bigger project coming very soon.

Maslow E-stop Switch -MES

-MES Parts:

Adafruit Feather 328P - Brain

Adafruit Power Relay FeatherWing

This is incomplete - It is enough for people with experience in both Electrical and Arduino experience.

This is to power the Maslow Power supply only!

Let me know if there are any questions.

Thank you


My understanding of your understanding is that your understanding is correct :stuck_out_tongue_winking_eye:

The emergency stop which cuts power to the motors will stop them in place. The Arduino will continue to try to execute lines of Gcode. The encoder position will be preserved so you will not need to do a chain length reset, you will loose your place in the Gcode program


Is it possible to dump a marker when you stop getting encoder feed back in the Gcode or a log of the Gcode line?

Thank you


What would the identifying factor be? More than 1mm position error in X or Y ? I’m not sure that would be valid, but

egrep -m1 ‘[PE:-?[1-9]|[PE:.*,-[1-9]’ log.txt

would show the first line where that was true. The gcode sent before that line would be the command that was cutting at the time. Finding which particular occurrence of that command in the gcode file is left as an exercise…
Maybe there’s a different way to identify the situation?


So this means the encoder data will stop as the encoders re no longer getting power?

or am I wrong here?

Thank you


It seems to me that a few different goals are being attempted.

  1. Safety Stop: “Stop the machine immediately and make it safe, something bad is happening or about to happen” (in practice, almost always this will be ‘already is happening’)

  2. Messed up cuts: "The machine is not executing the path I intended for some unknown reason, stop the machine so I can save Time/Materials/Face/etc. "

problem #2 is an operator error, and should be prevented via better CAM, simulation, pre-cutting procedures, checklists, etc. its not a hardware problem to solve or fix at this time in my humble opinion. The bulk of our efforts should still be directed towards increasing the capabilities of the machine, and to a large degree this problem most likely lies with the Operator, and not the machine.

am i framing this correctly?


The encoders are powered by the Arduino separately from the motors, but pulses will stop coming from a motor that isn’t moving. If the firmware expects pulses but doesn’t receive them it will increase the Position Error that it reports to GC. GC can’t see the encoder data. It is the [PE: values that GC uses to render the red target. If you are watching the screen you’ll see the red target lag if one or both the motors stop turning. Unfortunately, you’ll also see position error if the feedrate is beyond the motors’ capacity. This brings in the question of ‘acceptable position error’.

We could have the firmware ‘Stop’ the cut if the position error rises above some setting and advise the user to note the gcode line number showing on the screen. I’m not sure how that would play out in all the cases where it might arise, though.

Any other ideas about how to spot a situation like this?


For the brave or curious, see PR #429 in Firmware that brings up an Alarm and Stops cutting if the position error is greater than 2mm. By noting the number of the line that was active in GC when the alarm arose, you have a better chance of picking up where cutting left off.

I picked that value of 2mm out of a hat, having a GC Advanced setting is a possibility. For now, edit it in line 106 of Settings.cpp See PR#703 in GC which adds the Advanced setting for this.

The 'STOP NOW" button will trigger the alarm, or you can test by pulling the cable out of a motor while it is active.


What about having an e-stop that disconnects an input into the arduino? (held high while the e-stop is not engaged, then falls to low with a pull down resistor when e-stop is engaged with normally closed switches, or the reverse with a normally open switch in addition to the normally closed switch). The arduino could detect that state change and respond appropriately by stopping the running program. Many e-stop buttons have two or more poles, so one could be used for this purpose.

NOTE: what follows is an example, but is not appropriate for direct use to shutdown the router due to the low current rating of 3A @240V and 6A @120V


Finally got my E-Stop buttons installed…
I ended up going with two separate buttons, one for the motors/arduino board, and one for the router/vacuum
Google Photos
I haven’t implemented auto-start for the router yet, but that will eventually go after the stop button. The router stop button is also a magnetic button so if I lose power there is no chance that the router will restart without pressing the on switch again.

In order to make an emergency stop easier, I tied the two buttons together with a plate that is attached to the motor button paddle and covers the router button paddle.
Google Photos
you can also see in that picture where the router plugs in (at the bottom middle of the work area) and behind that where the stop button is plugged into the wall. The motor button is plugged in at the top of the machine, behind the arduino box (as can be seen in the picture below). These are two different circuits, in hopes of decoupling the noise from the router and vacuum from the arduino.

I also plan to implement a lighted sign to indicate when each of the buttons has been pressed (and a separate part of the sign to indicate that the auto-start is active).

I decided to hardwire a fan on the arduino board that turns on with the button and runs whenever the motor board is powered.
Google Photos

Hopefully more to come with the auto-start, lighted sign, and machine lighting in the near future.