Sleeping an A4988 from an Arduino

I’m using several of the A4988s to control some stepper motors. So far, I’ve been tying the SLP pin to ground, to have the A4988 enabled all the time. Now I’d like to support a low power mode, where the A4988 is disabled when not in use. Would it work to connect it to a digital pin on an Arduino, and set it high when I wanted to enable the board? Would it be a problem that the pin was floating when the Arduino first booted up?

And while I’m on the topic of disabling the A4988 - is there any difference between setting SLP high vs setting EN low - to disable the board?

Your best source of information about chip pin function is the data sheet: … e_id=0J450

In general, input pins should not be left floating. If an input pin status is to be changed during operation, tie it high or low as appropriate with a reasonably large resistor, say 50K-100K, which can easily be overridden by a digital output. On some devices, input pins are already pulled up or down internally – again see the data sheet.

Yes, I already looked at the data sheet but am still uncertain about what to do. Hence my question here…

What does the data sheet say that you do not understand?
This seems very clear to me:

[quote]SLEEP MODE To minimize power consumption when the motor is not
in use, this input disables much of the internal circuitry including
the output FETs, current regulator, and charge pump.
A logic low on the SLEEP pin puts the A4988 into Sleep mode.
A logic high allows normal operation, as well as
start-up (at which time the A4988 drives the motor to the Home
microstep position). When emerging from Sleep mode, in order
to allow the charge pump to stabilize, provide a delay of 1 ms
before issuing a Step command.[/quote]

I saw that. Just looking for someone who has dealt with “sleeping” the A4988 from an Arduino. And the difference between using EN and SLP is not clear to me.

Here is what the data sheet says about Enable. Compare with the above quote for Sleep. Again, what are you having trouble understanding?

[quote]Enable Input (¯ENABLE ). This input turns on or off all of the
FET outputs. When set to a logic high, the outputs are disabled.
When set to a logic low, the internal control enables the outputs
as required. The translator inputs STEP, DIR, and MSx, as well as
the internal sequencing logic, all remain active, independent of the
¯ENABLE input state.[/quote]

Hmm. Both disable the FETs. Enable doesn’t disable STEP, DIR, MSx. SLEEP does disable the current regulator and charge pump. It doesn’t say what EN does to the current regulator and charge pump, nor what SLEEP does to STEP, DIR, MSx. I would expect that SLEEP disables more than EN. Still not sure why they have both, but I’m also not sure it matters in my application. To conserve power, I’ll probably use SLEEP.

Thanks for your help.

I’m having another issue with these controllers, I might start another thread for that.

Thanks again.


Hi I’ve just registered here after purchasing 5 A4988 boards and your post just confirmed that the board as is cannot be used to driver 2 or more motors using the same control lines. I am currently using the UCN5804 driver chip which I believe is the predecessor to the A4988 chips and it suffered from the same lack of shutdown features. I ran 2 motors fine (with the UCN5804) but the internal logic when the !EO line was high continued to respond to the STEP input so that when changing to the other motor its internal logic had also moved on so that the motor stuttered for a few steps upon starting as the stepper position was not in sink with the steps sequence of the logic. I had to add a 74hc125 quad buffer gate to the dir,stp and dir lines and connect the 74125’s !OE with the UCN5804’s !OE to create a driver that once the OE line goes low, the connections to the control line of the chip are isolated.