How To Correctly Set The Motor Current Limit On An A4988 Stepper Motor Driver

In this tutorial, we’re going to be looking at how to correctly set the current limit on an A4988 stepper motor driver. These stepper motor drivers have become increasingly popular for CNC, 3D printing, robotics, and Arduino projects because they’re really cheap and easy to use, requiring just two pins to control them.

One important thing to set up when using these drivers is the motor current limit. This is especially important when you’re using a higher input voltage than what the motor is rated for. Using a higher voltage generally enables you to get more torque and a faster step speed, but you’ll need to actively limit the amount of current flowing through the motor coils so that you don’t burn your motor out.

There are two methods to do this, the one is to use a multimeter to physically measure the current flowing through one of the coils and the second method, which is the one we’re going to look at, is to calculate and then adjust the reference voltage on the driver, which doesn’t require the motor to be hooked up or powered.

Here’s a step by step video on how to set up your A4988 stepper motor driver’s motor current limit.

What You Need To Set The Current Limit On Your Stepper Driver

How To Set The Current Limit On Your A4988 Stepper Motor Driver

In each motor driver pack, you’ll get a small heatsink which should be stuck onto the driver chip and you’ll need to use a small screwdriver to adjust this pot to set the current limit.

We’re going to be setting the motor current limit on a breadboard, as we need to bridge the sleep and reset pins and then supply power to the board’s logic circuit through the ground and VDD pins. The power can be supplied from the 5V supply on your Arduino.

Let’s start by hooking up our driver.

A4988 Stepper Motor Driver On Breadboard

Now we need to calculate the reference voltage that we’re going to be setting.

This is done by using the following formula:

Vref = Imot x 8 x Rsen

The reference voltage is equal to the maximum motor current, multiplied by 8, and then by the current sensing resistance.

Calculating The Reference Voltage

The maximum motor current can be found on the motor datasheet, ours is 0.9A. The current sensing resistance can be found on your driver’s datasheet but is most commonly 0.068 ohms for newer drivers.

Using this formula, we calculate that our reference voltage should be set to 0.49 volts.

The easiest way to set the voltage is to clip the negative multimeter lead to your Arduino’s ground pin using one alligator lead.

Alligator Lead To Ground

And then connect the positive lead to the metal part of a small screwdriver using another alligator lead.

Positive Lead To Screwdriver head

You can now simultaneously make changes to the reference voltage and read the voltage on your multimeter, making it easy to adjust.

Set your multimeter to the DC voltage measurement setting and then place the head of the screwdriver onto the potentiometer. You should now get a reading for the reference voltage. Turning the screwdriver anticlockwise decreases the voltage and clockwise increases the voltage.

Set The Current Limit On Your Multimeter

We set it to 0.49 volts, then remove and replace the screwdriver to recheck it, and you’re done. You can now finish off the rest of the connections to the Arduino or plug it into your 3D printer or stepper motor driver shield.

How do you usually set up your A4988 stepper motor driver’s motor current limit? Let me know in the comments section.

Michael Klements
Michael Klements
Hi, my name is Michael and I started this blog in 2016 to share my DIY journey with you. I love tinkering with electronics, making, fixing, and building - I'm always looking for new projects and exciting DIY ideas. If you do too, grab a cup of coffee and settle in, I'm happy to have you here.

7 COMMENTS

  1. For some modules the sense resistors are labelled ‘S1’ and ‘S2’ rather than ‘Rcs’. They will typically be located close to the Ax and Bx pins. A marking of ’68L0′ or ‘R068’ indicates a 0.068 Ohm resistor, while ‘R100’ indicates a 0.1 Ohm resistor (commonly seen on unbranded A4988 modules ).

    • No. The driver expects the maximum amps setting to be the current for a single phase. If more than one phase is activated (which depends on the microstepping selection) then the driver compensates as required.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest posts

Raspberry Pi 5 Case With An Integrated Water-Cooling Loop

A while back, I built a water-cooled Raspberry Pi 4 computer using a Pi CM4 module and the official IO board. This computer and...

Add an OLED Stats Display to Raspberry Pi OS Bookworm

Raspberry Pi OS Bookworm has been out for a little over a year now. It comes with a few visual changes like a Wayland...

Gweike G2 Pro 30W Fibre Laser Unboxing & Review

I've been using diode and CO2 lasers in my home workshop for quite some time. Combined with a 3D printer, they've been fantastic for...

Related posts