I'm using DRV8833 in Pololu's DRV8833 breakout board for motor driver in Scrapsberry Sucker -robot
I ran into a problem where I can't get motor power properly to motors. Tested one motor straight out from 8V battery, and it runs well. Tested Arduino's digital out to give 5V and voltage across DRV8833's motor A IN-pins is 5V, but OUT is only 0,5V although it should be 8V. Motors give high pitched sound, like stalling, and either stall or keep moving slowly. Measured voltage with multimeter.
Motor power is separate from Arduino, 6x1,2V NiMH. I'm running out of ideas, so all help is welcome!
I have left MODE-pin
I have left MODE-pin disconnected. Huh. I feel stupid, but will leave this here for other people.
“The MODE pin determines the control interface. Each control input is pulled low through a weak pull-down resistor (approximately 100 kΩ), so the driver will be in the IN/IN mode if the MODE pin is left disconnected, and the driver outputs will be disabled by default. Setting the MODE pin high, either with a pull-up resistor or a driving-high I/O line, sets the driver to PHASE/ENABLE mode, where the PHASE pin determines the motor direction and the ENABLE pin can be supplied with a PWM signal to control the motor speed…”
It would be helpful if you posted a schematic (wiring diagram) for you robot. The channel inputs (1,2) must be different to make the motors turn. Both HIGH is brake, both LOW is coast. See TI spec sheet for exact info.
Are you referring to the CPU I/O pin input / output configuration? The I/O pins are inputs upon reset and will appear as “HIGH” if left floating.
Arduino is sending one
Arduino is sending one digital HIGH and one digital LOW out, that is the same as 5V and 0V. Arduino digital out signals (HIGH and LOW) go to DRV8833 AIN1 and AIN2, therefore AIN1 is HIGH and AIN2 is LOW, or vice versa. BIN1 and BIN2 are connected, and they are both LOW.
As I understand, AOUT1 should be then motor power (8V) and AOUT2 should be 0V/ground. But measured with multimeter I get a voltage of 0,5V between AOUT1 and AOUT2, motor behaves accordingly - it stalls or turns very slowly.
It might be that DRV8833 is kicking into fault mode for some reason, but I can’t find out why or how.
(edited this message)
I wrote earlier about MODE-pin being disconnected. Apparently my board, DRV8833, does not have a mode pin. I thought I had found the problem, but I was looking at pololu’s info on DRV8835. So, still having the problem mentioned in the first post.
I was able to solve the
I was able to solve the problem by making a bigger mistake. I disconnected everything from DRV8833, then connected VIN and ground from DRV8833 to a socket for another chip - didn’t even put the chip I inteded to try in, but then connected power. Judging from melting plastic next to battery I probably got a short somewhere, and ground wire got disconnected from DRV8833. Resoldered VIM and Ground connectors to DRV8833, connected all logic wires and now it’s working like it should! Strange. My last guess would be that DRV8833 was actually trying to prevent a disaster by going into fault mode and cutting power.
Hmm… Voltage is now 1.6V at
Hmm… Voltage is now 1.6V at motor leads, and 7.6-7.7V at battery terminals. Still quite a big voltage drop…
Tested with only one motor
Tested with only one motor and two motors.
With only one motor via DRV8833, I get decent performance and torque. Two motors, it stalls. Apparently battery can’t provide enough current?! Even separate 6*NiMH pack for these motors isn’t enough. Small plastic motors, but I suppose they are rated 12V, so with less than 8V they probably require a lot more current then… Huh…
**Tested with 10.69V (8 ***
Tested with 10.69V (8 * 1.2VNiMH) power supply for motors, one motor turns well, two motors just about turn. I think there is now more than enough power to turn these plastic gearmotors. Electronics store rates the motors possible to use from 1.5V to 12V.
Here is a fritzing breadboard-view to see how everything is connected. After this test, I soldered 0.1microF ceramic capacitors to motor leads, but that doesn’t change behaviour.
Voltage at the DRV8833 VIN-Ground is quite the same as straight from battery (no voltage drop there), but voltage at AOUT1- AOUT2 or BOUT1-BOUT2 is very low, especially when driving two motors.
the drv8833 can handle 1.2
the drv8833 can handle 1.2 amp per channel. Do know how much amp your dc motors are needing?
I would suggest to measure this. You can do this by putting your amp meter in series with your motor connected to your batteries. In a circle.
Also, when measuring try to stall the motor with your hand. Then you know the max current.
I got 0.03-0.05A, holding
I got 0.03-0.05A, holding multimeter by hand from BOUT1 or BOUT2 to motor wire. That should rule out overcurrent / overcurrent fault mode.
0.03-0.05 was from
0.03-0.05 was from DRV8833.
Straight from battery it’s 0.09-0.1A. The motor has a very high torque because of gears, so it’s very hard to make it stall.
edit: Although I haven’t been able to measure stall current yet, I’m comparing specs to similar motors like this https://www.pololu.com/product/1516 . That has free current 0.08A and 0.8A stall, and if I have 0.1A free, maybe it’s around 1A stall? DRV8833 should be able to handle 1.2A continuously and 2A peak current, so it’s likely not overcurrent, hm?
What else could it be… ehm… With one motor works fine, and with the 2nd motor it doesn’t.
Could be a shortcut between these 2? Maybe bad soldering? Or did you attached the 2 motors to your robot in a way that they metal parts are touching each other?
Hmm, thanks for these ideas.
Hmm, thanks for these ideas. I can’t however find any leaks with multimeter between OUT pins or VIN-GROUND. Motors’ metal parts aren’t touching any other metal parts. It feels like there must be a weird/bad connection or DRV8833’s fault mechanisms (eg. overcurrent) are cutting the power. Also tested a single motor straight from battery.
Now testing battery voltages: 10.61V when battery isn’t connected, 10.52V when one motor is running and 10.49V when both motors are running.
edit: When both motors are running via DRV8833, measured from battery I get current of 0.07A. Not much.
Quote from pololu’s
Quote from pololu’s site:
" The DRV8833 can actively limit the current through the motors by using a fixed-frequency PWM current regulation (current chopping). By default, this carrier board connects the current sense pins to ground, disabling the current limiting feature."
as you said you can hear the motor making noise, meaning this feature isn’t disabled at all. I suggest to connect AISEN and BISEN both to ground to disable it.
I asked help from Pololu’s
I asked help from Pololu’s customer support. It’s not 100% diagnosed, but it’s likely that I had damaged my DRV8833 at some point. In close-up image I can see some melted plastic at transistor, so it might really be that.
I did test grounding AISEN and BISEN, but it didn’t help. A idea worth checking anyway. Thanks for your help!
I had a similar issue and my problem was that I had 5v connected to the notSleep pin and the logic levels for Ain1 and Ain2 were 3.3v. Once I set the notSleep pin to also use 3.3V then the output voltage was much higher and about the same as the Vmotor.