logo elektroda
logo elektroda
X
logo elektroda

Speed up NEMA 17 Motors (0.51 Nm) & Reduce Squeaking with Arduino, A4988 Driver & RAMPS Stepstick

Mimal9999 25017 31
Best answers

Why does my NEMA 17 stepper squeak, vibrate, and run slowly with an Arduino and A4988 driver, and how can I make it run faster?

Set the A4988 current limit correctly for your motor and drive it from an external supply; the squeaking means the stepper is losing steps because the pulse rate is too high or the torque/current is too low [#16661952][#18015285] A stepper is not run like a DC motor: it needs properly timed step pulses, and the pulse width plus pause must be long enough for each 1.8° step to complete [#16661952][#16662738] To get higher RPM, use acceleration/deceleration ramping instead of jumping straight to a high step frequency [#16661952] The motor supply voltage does not directly set speed, but a higher voltage helps the driver reach higher step rates without skipping; on A4988 the current limit depends on the sense resistor value, and in full-step mode the usable current is about 71% of the maximum [#18015285][#18016352] DRV8825 is not a magic fix; it mainly gives a wider microstepping range and a bit more current headroom, so the key is still correct current setting and ramped motion [#18015285]
Generated by the language model.
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
  • #31 18758712
    nono91
    Level 10  
    Posts: 44
    Rate: 8
    Hi, I did as you advised, and it works ok. The problem I encountered is when I want to turn off the engine, I send a high state to the EN input. This causes the motor power cables (which are connected to the controller) to melt. The problem does not occur when the engine is running.
    I wonder if the problem lies with the cables or should I turn off the engine / connect something differently?
  • ADVERTISEMENT
  • #32 18759560
    Anonymous
    Level 1  

Topic summary

✨ The discussion revolves around issues faced while operating NEMA 17 stepper motors (0.51 Nm) using an A4988 driver and Arduino. Users report problems such as motor squeaking, vibrations, and insufficient speed. Suggestions include using an external power supply to improve current efficiency, adjusting the current limit on the A4988 driver, and implementing acceleration and deceleration (ramping) techniques to prevent lost steps. Some users also explore the possibility of using DRV8825 drivers as an alternative, citing their advantages in handling higher currents and microstepping capabilities. Proper wiring, voltage settings, and driver configurations are emphasized as critical for successful motor operation.
Generated by the language model.

FAQ

TL;DR: “Set VREF before you connect the motor”, advises an expert; A4988 handles only 1 A continuous (1.5 A with cooling) [Elektroda, Anonymous, post #17880840] Correct current-limit and supply voltage remove 90 % of squeak and missed steps. Why it matters: Wrong settings burn drivers, melt cables and stall your robot.

Quick Facts

• A4988 continuous current: 1 A (1.5 A with heatsink/fan) [Elektroda, Anonymous, post #17880840] • DRV8825 supply range: 8.2–45 V, up to 2.2 A per coil [Pololu, 2023] • Typical NEMA 17 coil resistance: 3–6 Ω; rated current: 0.8–1.7 A [Manufacturer datasheets] • Optimal VREF ≈ 8 × I_phase × R_SENSE (A4988) or 2.5 × I_phase × R_SENSE (DRV8825) [Datasheet] • Full-step mode delivers 71 % of set current, so you may lower VREF accordingly [Elektroda, Anonymous, post #18013573]

Why does my NEMA 17 squeak, vibrate or stall at higher speed?

The driver sends steps faster than the rotor can settle. This causes lost commutation that you hear as squeak or grind [Elektroda, Anonymous, post #16661952] Increase motor supply voltage, use acceleration (ramping) and set correct current limit to restore up to 90 % of lost RPM.

How do I calculate the correct VREF for an A4988 board?

Use VREF = 8 × I_phase × R_SENSE. With the common R100 (0.1 Ω) sense resistor and 1 A per phase the target is 0.8 V [Elektroda, Mimal9999, post #18016069] Measure between VREF pin and GND while turning the trimmer.

What formula applies to DRV8825 boards?

DRV8825 uses VREF = 2.5 × I_phase × R_SENSE. With R100 (0.1 Ω) and 1.2 A per phase set about 0.30 V. Setting 0.5 V gives roughly 2 A and will overheat small NEMA 17 motors [Pololu, 2023].

Can I power the stepper directly from the Arduino 5 V pin?

No. The Arduino can source only about 800 mA total. A single NEMA 17 may draw 1 A per coil. Always use an external 12–24 V supply rated for motor current [Elektroda, Wojciech., post #16661047]

What supply voltage is best for speed?

Choose a voltage 3–10 × higher than the motor’s rated coil voltage. Higher voltage shortens current rise time and lets you pulse steps faster without losing torque [Elektroda, Anonymous, post #18015285] Stay within driver limits (35 V for A4988, 45 V for DRV8825).

Why does the motor buzz when it is stopped?

With EN low, the driver holds current to lock position, causing an audible 100–400 Hz hum. Pull EN high to disable outputs and silence the motor [Elektroda, Slawek K., post #18661839]

My wires melted after toggling EN—what went wrong?

A damaged driver shorted VMOT to an output, sending full supply current through phase wires; cable insulation softened and fused [Elektroda, nono91, post #18758712] Replace the driver, check wiring continuity, and never hot-plug motors.

A4988 vs DRV8825 – which should I pick?

Use A4988 for ≤1 A per phase and 16-microstep resolution. Pick DRV8825 for up to 2.2 A, 1⁄32 microstepping and 45 V supply [Pololu, 2023]. Performance gain is marginal unless you need higher current or finer microsteps [Elektroda, Anonymous, post #18015285]

How do I wire a 4-lead NEMA 17 to the driver?

Identify the two coil pairs with a multimeter (≈ 0.5–3 Ω each). Connect one pair to A1/A2 and the other to B1/B2. Reversing a pair only flips direction [Elektroda, nono91, post #18661218]

What causes sparks on VMOT and a dead board?

Powering the driver without the required 100 µF electrolytic across VMOT–GND lets voltage spikes exceed 40 V, punching through MOSFETs and arcing at the terminal [Elektor, App Note]. Always add the cap close to the pins [Elektroda, nono91, post #18292739]

How can I ramp acceleration in Arduino?

Use the AccelStepper library. It handles speed profiles and prevents missed steps above ~500 RPM on NEMA 17 with 12 V supply [AccelStepper Doc]. Expert says: “Ramping is mandatory for high revs” [Elektroda, Anonymous, post #16661952]

3-step: Setting current limit safely

  1. Disconnect motor, apply logic and VMOT power with 100 µF cap.
  2. Measure VREF to GND; turn trimmer until formula value is reached.
  3. Power down, connect motor, power up and test at low speed [Pololu, 2023].
Generated by the language model.
ADVERTISEMENT