DRV8833 Troubleshooting

Greetings!

I'm trying to get a stepper up and running using either a QT PY or an UNOR3, each with a DRV8833, with no luck so far. I'm guessing i'm missing something obvious, but I can't pick my brain any longer, so any help is greatly apprechiated.

Before the QT PY + DRV8833 arrived, I played about with the UNO R3 and an ULN2003 + 28BYJ-48, which worked great! Now after switching i can't figure out why the other driver + motor is so much different...

I tried following these two guides, but without luck.
https://learn.edwinrobotics.com/drv8833-dcstepper-motor-driver-hookup-guide/

My setup is rather basic and looks like this: (attached photo)

Input Pins on the µC, output Pins to the stepper (NEMA 17 - 48mm) plus a external power supply set to 9.5V and 1.25A. Ground of the DRV is wired to the GND on the µC, Vm I have tried without it and with it wired to the 3.3V Output on the µC.

In the code I simply cycle through the Output Pins, setting them High or Low in order to spin the motor, which works a treat with the setup UNO+ULN2003+28BYJ:

#define Ain1 5
#define Ain2 6
#define Bin1 9
#define Bin2 10

int speed = 0;

void setup() {
pinMode(Ain1, OUTPUT);  //Ain1
pinMode(Ain2, OUTPUT);  //Ain2
pinMode(Bin1, OUTPUT);  //Bin1
pinMode(Bin2, OUTPUT);  //Bin2

}

void loop() {
  digitalWrite(Ain1,HIGH);
  digitalWrite(Ain2,LOW);
  digitalWrite(Bin1,LOW);
  digitalWrite(Bin2,LOW);
  delay(10);
  digitalWrite(Ain1,HIGH);
  digitalWrite(Ain2,HIGH);
  digitalWrite(Bin1,LOW);
  digitalWrite(Bin2,LOW);
  delay(10);
  digitalWrite(Ain1,LOW);
  digitalWrite(Ain2,HIGH);
  digitalWrite(Bin1,LOW);
  digitalWrite(Bin2,LOW);
  delay(10);
  digitalWrite(Ain1,LOW);
  digitalWrite(Ain2,HIGH);
  digitalWrite(Bin1,HIGH);
  digitalWrite(Bin2,LOW);
  delay(10);
  digitalWrite(Ain1,LOW);
  digitalWrite(Ain2,LOW);
  digitalWrite(Bin1,HIGH);
  digitalWrite(Bin2,LOW);
  delay(10);
  digitalWrite(Ain1,LOW);
  digitalWrite(Ain2,LOW);
  digitalWrite(Bin1,HIGH);
  digitalWrite(Bin2,HIGH);
  delay(10);
  digitalWrite(Ain1,LOW);
  digitalWrite(Ain2,LOW);
  digitalWrite(Bin1,LOW);
  digitalWrite(Bin2,HIGH);
  delay(10);
  digitalWrite(Ain1,HIGH);
  digitalWrite(Ain2,LOW);
  digitalWrite(Bin1,LOW);
  digitalWrite(Bin2,HIGH);
  delay(10);
}

Now, why is the DRV8833 different? Is it because I somehow mess up the power supply?

And on the QT PY my code is also the one from the example:

from adafruit_motor import stepper
import time
import board
import neopixel
import digitalio

pixels = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.1)
DELAY = 0.01
STEPS = 200

coils = (
    digitalio.DigitalInOut(board.A0),  # A1
    digitalio.DigitalInOut(board.A1),  # A2
    digitalio.DigitalInOut(board.A2),  # B1
    digitalio.DigitalInOut(board.A3),  # B2
)

for coil in coils:
    coil.direction = digitalio.Direction.OUTPUT
    
motor = stepper.StepperMotor(coils[0], coils[1], coils[2], coils[3], microsteps=None)

while True:
    pixels.fill((0, 255, 0))
    time.sleep(0.5)
    pixels.fill((0, 0, 0))
    time.sleep(0.5)

    for step in range(STEPS):
        motor.onestep()
        time.sleep(DELAY)

You might want to show a schematic, not a frizzy thing. You have way to many open connections. Show all power, ground, and interconnections as well as links to technical data on the hardware parts. I do not have a lot of time to research this stuff for your project, there are many others that supply that information.

gilshultz:
You might want to show a schematic, not a frizzy thing. You have way to many open connections. Show all power, ground, and interconnections as well as links to technical data on the hardware parts. I do not have a lot of time to research this stuff for your project, there are many others that supply that information.

Links to driver and µC:

Specsheet from the motor:

I'm not sure if this is what you had in mind asking for a scematic, but there you go:

Thats the best I could do right now using powerpoint.
In doing it I noticed it's probably the missing pullup at SLP... Need to try this .
If you notice any other caveats I'b be glad to hear them

nms17.png

nms17.png

Post a link to the motor's datasheet, NEMA 17 only defines the motor's mounting face dimensions, nothing about it's electrical parameters.

That motor's phase resistance is 1.6 Ohms, it's phase current is 1.7 Amps that means 2.72 Volts, right at the DRV8833's minimum voltage rating. DRV8833 is a DC motor driver, you need a STEPPER motor driver like:

Yes, a DC motor driver will not work with modern low-impedance steppers like this, whether or not the
documentation for the driver says it can work with a stepper - that's only for high-impedance steppers
and its very low performance in that mode.

[ that Edwin robotics page is lying to you about using any bipolar/unipolar tepper - very poor
quality information there, but this is not uncommon I'm afraid. Driving a unipolar motor is
completely different for starters, and only something like a 20--50 ohm stepper has a hope
of working (slowly) with a dc-motor chip ]

For low-impedance small steppers usually the DRV8825 or A4988 will be enough - for 2A or more there
are larger drivers, but costing quite a bit more. 1.7A is on the edge, a DRV8825 with heatsink (and hopefully
some air-flow) ought to work for this. DRV8833 - save it for DC motors.

Thanks a lot! Then i will look into the other driver modules, properly suited for Steppers

That means the Edwin Robotics Page is the first instance known to me with faulty instructions regarding Arduinos or similar topics. So far everything has been really helpfull....

regarding:

JCA34F:
That motor's phase resistance is 1.6 Ohms, it's phase current is 1.7 Amps that means 2.72 Volts, right at the DRV8833's minimum voltage rating. DRV8833 is a DC motor driver, you need a STEPPER motor driver like:
Pololu - TB67S128FTG Stepper Motor Driver Carrier

the voltage rating on this driver starts at 6.5V. Won't this be a problem with the 2.7 V from the stepper?

Steppers are current driven, not voltage driven. The supply can be 36V if you want, current
drive delivers the right current whatever the voltage.

Higher supply voltages allow faster top speeds, as this overcomes the inductance of the motor
more (inductance is the dominant factor for stepper motor speed).

Alright, thank you a lot!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.