I am trying to control a DC Motor with a DRV8833. To be precise, I have this module from MJKDZ (which, I believe, is not the original one from TI).
I measure the voltage on the input pins, they are as expected, but the output pins have 0 V. My input pins have those values:
GND : 0 V (connected to ground)
VCC : +5 V (from a battery power)
IN1 : HIGH (+3.7 V from an ESP32).
IN2 : LOW (0 V)
IN3 : not connected
IN4 : not connected
Every output pin has 0V (including "ULT", which may indicate a fault condition). All grounds (ESP32, battery, etc) are connected.
I am wondering how I can "debug" what's going wrong.
Do you think I may have overheated it while soldering the pin sockets (I learned soldering when I was a kid from my father probably like many of you, but I didn't do it for a while and now I am terrible at it)?
Or could it be an over-current issue?
So, just to be sure that the issue is really on this particular module, could I try connecting an even simpler circuit like this (basically excluding things related to ESP32):
GND : 0 V (connected to ground)
VCC : +5 V from regular power
IN1 : +5 V from regular power (HIGH)
IN2 : 0 V (connected to ground) (LOW)
IN3 : not connected
IN4 : not connected
and expect the potential difference between OUT1 and OUT2 to be 5 V ?
DRV8833 hardware setup for manual jumper signal testing
Summary - IN1, IN2 jumper wire signals to (a) 0V, 3V3 and (b) 3V3, 0V to make sure motor moves CCW and CW. Results = OK.
How to debug my DRV8833 motor driver module?
Details of problem
All module output pins (including the fault status pin) measure 0V.
Voltage source (battery), and MCU (WiFi Controller ESP32) have grounds shorted.
Module pins were soldered by a not very experienced hobbyist and therefore module might be damaged
The OP has confirmed that he forgot to enable the DRV8833 by shorting the EEP (Sleep) jumper cap, therefore causing all zero's at output pins. I hope to make a follow up remark later, including a reminder for future readers and DRV8833 newbies.
I just read that some DRV8833 output signal pins should not be connected to ground, or damage would arise:
(1.0) This is a interactive/live answer in Agile (sort of chatting over) software engineering system development methodology style, to solve a debugging/troubleshooting problem.
The OP and all readers are welcome to interrupt this not yet completed answer any time to ask questions to clarify things, suggest ways to improve the answer, and point out any mistakes.
(1.1) To debug the motor driver, first thing first to read the following:
(a) Product sheet of the assembled breakout module to get a rough idea of the power requirements and function of the pin outs (which might be different from the chip datasheet.
(b) Datasheet of the chip, to get a rough idea of what external components are used to assemble the module.
(c) Schematic of the module.
To make the OP's question more specific, (a) to (c) above is appended to his question.
(1.2) Troubleshooting/Testing Plan
The OP seems to be a newbie in motor driver DRV8833. He might also not that experienced in using WiFi controller ESP32 to do testing and debugging. So I will try to explain my suggested troubleshooting procedure as simple as possible.
I will start without using ESP32, and do a manual testing, to make sure the module can output something, and not as the OP was worrying, overheating and fried the module while soldering the module pins.
I will also start troubleshooting without using any motor, because even though DRV8833 has flyback protection diodes to absorb any huge back EMF voltage/current spikes when the inductive coils of the motor is switched off.
Instead of the motors, I will use a series resistor and a status LED to indicate the motor switch is turned on or off. And I will test just one motor switch to start of, because if one motor switch works, the other motor switch should be very likely also OK. Now this is a summary of the test setup:
(a) Put away ESP32 and motors. We will just use jumper connecting wires and connect by hand to Vcc or Ground as input driving signals to the DRV8833 module.
(b) For the output side, connect a 1kΩ resistor with a LED across the terminals +, - (Bout1, Bout2, as indicated in the following Adafruit DRV8833 schematic) originally for output to drive Motor A.
(c) Now the input side. We will just entertain Motor A, and forget Motor B, and the current sensing inputs ASENSE, BSENSE. So, we will will use 5 jumper connecting wires AIN1, AIN2, SLP (Sleep), FLT (Fault) and GND (Ground). Of course we also need to connect the motor power VM.
(d) I read Lada Ada in her DRV8833 overview that the other motor driver Toshiba TB6612FNG is very similar and have identical pin outs. So it is a good idea to test both drivers at the same time, comparing and contrasting for easy pairing/swapping troubleshooting. More details about TB1162FNG can be found in Ref (4) below.
Spin two DC motors or step one bi-polar or uni-polar stepper with up to 1.2A per channel using the DRV8833.
With DRV8833, you get 2 full H-bridges.
This chip is better for low voltage uses (can run from 2.7V up to 10.8V motor power) and has built in current limiting capability.
You set it up for 1A current limiting so you don't get more than 2A per chip, but you can also disable the current limiting, or change it to a different limit!
The DRV8833 breakout has a polarity protection FET on motor voltage input.
Each breakout chip contains two full H-bridges (four half H-bridges). That means you can drive two DC motors bi-directionally, or one stepper motor.
Make sure they're good for about 1.2 Amp or less of current, since that's the limit of this chip. They do handle a peak of 2A but that's just for a short amount of time, if you turn off the current limiting.
What we like most about this particular driver is that it comes with built in kick-back diodes internally so you dont have to worry about the inductive kick damaging your project or driver!
You also don't have to worry as much about burning out the chip with overdriving since there is current limiting.
There's two digital inputs per H-bridge (one for each half of the bridge), you can PWM one of the inputs to control motor speed.
Runs at 2.7V-10.8V logic/motor power.
The motor voltage is the same as the logic voltage, but logic voltage from 2.7V or greater will work so no need to worry if you are powering the motors from 9V and using 3.3V logic.
For higher voltages, check out the TB6612. For much higher voltages and currents check out the DRV8871!
Appendix B - TaoBao/AliExpress DRV8833 Motor Driver Testing Notes
Appendix C - DRV8833 PWM Input Problem
I found that the DRV8833 module does not have any input pins for PWM speed control, like L298N and TB6612FNG.
Though DRV8833 has other pins such as Sleep, Fault, Current Sense, which should be useful for battery operated, mobile applications. However, these features are not useful my smart home applications,
So I am now testing TB6612FNG first, and only after testing OK PWM control, would go back to DRV8833 without PWM, or DRV8871 with PWM interface.
Crank up your robotics with powerful Adafruit DRV8871 motor driver breakout board. This motor driver has a lot of great specs that make it useful for a wide variety of mechatronics. In particular, the simple resistor-set current limiting and auto-magic PWM support make it super easy to use with almost any brushed DC motor.
Check out the specs for the DRV8871:
6.5V to 45V motor power voltage
Up to 5.5V logic level on IN pins
565mΩ Typical RDS(on) (high + low)
3.6A peak current
Current limiting/regulation without an inline sense resistor
Using it is super simple. Connect your motor to the OUT terminal block. Power the board with 6.5-45VDC power on VMotor and provide the H-bridge input control on IN1 and IN2. You can even PWM the inputs and the driver chip will do the right thing.
You can set the current limiting with an external resistor Rlim. We solder in a 30K resistor by default for a ~2A current limit, however you can remove this resistor and/or solder a resistor over it to change the resistance and change the limit. - Lady Ada
Appendix E - tlfong01's DRV8871 Testing Notes
The OP has confirmed that he forgot to enable the DRV8833 by shorting the jumper.
(This remark is out of date) I still have not received the OP's confirmation on the details of his hardware and software configuration. In the mean time, I found another question on DRV8871, so I am now diverting to DRV8871, and would come back when the OP replies.