Stepper Motor - Still not Turning

Hi,

I’m obviously new to Arduino projects, but I’ve been exhausted trying to troubleshoot this basic function of getting my Stepper Motor to turn normally. I’ve seen tons postings about Stepper Motors and their general corkiness, and I’ve tried to troubleshoot this in a number of ways by reading various posts, but still can’t get my Stepper Motor to turn normally. I’ve tried re ordering my pins connecting to my CPU to see if that order mattered at all and different grounding methods as well. But I keep coming up empty.

I’ve attached screenshots as well as the wiring/setup I followed.

Components:

  • NodeMCU ESP8266
  • L9110 motor driver module
  • 12 Volt AC Adapter
  • Motor - NEMA17 Stepper Motor High Torque Bipolar DC Step Motor Kit by MOTOU (I can provide the Amazon link if that helps)

I’m 90% sure the reason still has something to do with powering the Stepper Motor correctly, but not sure. I’ve tried Grounding the wires 2 different ways. One with both grounds connecting directly to the adapter and how I currently have it, which is cut the wire ends and tied them all together so that it follows the schema/image I attached.

I’m confident I have all the correct Drivers installed for the ESP8266, and have followed the basic settings I’ve found in this forum and online. The Blink code works fine, however, the basic Stepper Code, one rotation doesn’t at all, the stepper motor either vibrates or turns slightly one way, at most a 1/8 of a turn.

Stepper Code Used:

#include <Stepper.h>

const int stepsPerRevolution = 200;

Stepper myStepper(stepsPerRevolution, 14, 12, 13, 15);

void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}

void loop() {
// step one revolution in one direction:
Serial.println(“clockwise”);
myStepper.step(stepsPerRevolution);
delay(500);

// step one revolution in the other direction:
Serial.println(“counterclockwise”);
myStepper.step(-stepsPerRevolution);
delay(500);
}

Please provide links to the datasheets for your stepper motor and for the motor driver you are using.

Also, please display your image(s) in your post so we can see it(them) without downloading it(them). See this Simple Image Posting Guide

...R Stepper Motor Basics Simple Stepper Code

Full details of all hardware always, please...

I believe all the hardware links and images are now posted correctly.

Hardware Links:

ESP8266 - https://www.amazon.com/gp/product/B07HF44GBT/ref=ppx_yo_dt_b_asin_title_o08_s01?ie=UTF8&psc=1

Motor Nema 17 bipolar - https://www.amazon.com/gp/product/B07RZHWYQ9/ref=ppx_yo_dt_b_asin_title_o08_s01?ie=UTF8&psc=1

H-Bridge: https://www.amazon.com/gp/product/B00M0F243E/ref=ppx_yo_dt_b_asin_title_o08_s01?ie=UTF8&psc=1

12 Volt Plugin: https://www.amazon.com/gp/product/B077PW5JC3/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1

Images:

Sketch: |500x285

Overview: |500x375

CPU - ESP8266: |500x375

Hbridge: |500x375

Motor: |500x375

Grounding: |500x375

Be careful

The stepper motor you have is a low impedance device with a nominal voltage of 3.4v and a current limit of 1 amp. If you feed 12v into it then about 3.5 amps will flow and the motor will almost certainly give up its smoke.

The drivers you have are not suitable for that motor - they are DC motor drivers, no matter the marketing blurb says. You need a specialised stepper motor driver such as the Pololu DRV8825 which has a facility to limit the current to protect the motor when (as it should be) it is driven with a high voltage.

...R

Robin2,

Thanks for the note, and recommendation on the driver. Do you have a DC motor you would recommend as well by chance? I'll want to be able to configure the motor to spin both ways. I see several options for 12V and some for 3V on amazon, but hoping you might have some entry level recommendations.

Thanks, S

globalsteve: Do you have a DC motor you would recommend as well by chance?

I have been assuming you had chosen a stepper motor because your project needs the precision positioning that a stepper motor can provide.

If you want more general advice about motors then you need to provide a good explanation of your project and the forces and speeds that will be required from the motor.

...R

I picked a Stepper Motor originally as based on initial research, it seemed easier to set a certain distance programmatically. Without overcomplicating the project, all I really want to be able to do is have my motor connect to a pulley and rotate a set distance. Easy example is lower something say exactly 2 feet (or X amount of rotations) and do the exact opposite.

globalsteve: Without overcomplicating the project,

To my mind you are just being evasive - which makes me wonder if the project is illegal or antisocial. Or maybe it is a commercial project for which you are unfairly hoping to get free advice to boost your profit.

Please just describe the project.

...R

Not trying to be evasive, thought the context would help describe what I'm after. Let me know if the below fully describes it, or happy to draw a sketch as well.

It's basically a fun toy for my brother's kid that I could lower a stuffed baby toy up and down in a crib. I'd connect the unit to a simple wooden arm, attach the motor, attach a pulley to the motor so string could wind and unwind, and then be able to lower a toy and raise the toy. I want to be able to have a set distance so the toy can only go a certain distance, ie not be grabbed by a baby. My ultimate goal will be connecting this to a Blynk app and just be able to raise/lower via that. I got the ESP8266 as a simple cpu to connect to wifi.

Thanks again for any guidance/help!

Sounds like the examples of the Stepper library in the IDE could do that.
File:Examples:scroll down to Stepper, there are 4 examples, I am sure you could modify one to do what you want.

Cross Roads,

So you’d still recommend a Stepper Motor right? If so, sounds like i just need to buy the Pololu DRV8825, and should be good to go.

Thank you both if that’s the case

globalsteve: attach a pulley to the motor so string could wind and unwind,

I suspect that by far the simplest way to implement that is with a sail winch servo. They can rotate either 3 or 6 turns (depending on model) with position control from the Servo library. They are designed for winding in (or releasing) the sheets (ropes) that adjust the angle of sails on model yachts.

Maybe putting a large diameter drum on a regular 180° servo would actually give you sufficient motion.

...R

Robin2,

Thanks for the servo suggestion. I think I'll buy one of those as well as the DRV8825 drivers you mentioned. I had only seen servos with limited angles before, but this is pretty cool. At worst i have it to test out some of other ideas as well.

Thanks!

globalsteve: I had only seen servos with limited angles before,

With a suitably long arm on the servo (and a wheel would be better) you could get a lot of string movement from a 180° servo.

...R

Hi,
If you have you board in the IDE selected as NodeMCU.

Have you tried;

Stepper myStepper(stepsPerRevolution, 5, 6, 7, 8);


I have never porgrammed a NodeMCU, but looking at the PCB designators, I would be using them.
I only use the GPIO numbers is if I am programming a ESP32 as the GPIO pin designators are printed on the PCB

Tom… :slight_smile:

pins.jpg