1
\$\begingroup\$

We have a problem with the DC motor driver DRV8835 that we have soldered to the black PCB attached below (4). Prior to this driver, we were using L293D h-bridges to run these DC motors and never experienced an issue. We changed the drivers from L293D to DRV8835 and the motors not only overheated but also drew twice as much current. With the old board (3) four motors (not loaded) were drawing ~0.2A and with the new one (black PCB) it is drawing ~0.5A. We never had this issue with the old PCB and L293D drivers. We are using ESP32s microcontroller and the schematic of the new board is given below (5).

Before designing the PCB we set up a circuit on a breadboard (6) and everything was working fine. The motors got slightly warmer with DRV8835 on the breadboard but they were running at the same speeds comparing with L293D. Are there any suggestions to this problem that we can try implementing? We are working on robotics but we don’t come from an electronics background so any suggestions are appreciated.

Thanks!

Old PCB New PCB Schematic of the New PCB Breadboard setup

\$\endgroup\$
5
\$\begingroup\$

Summary

The DRV8835 is providing a higher voltage to your motor even though you are using the same power supply.


The DRV8835 uses FETs with a very low "On resistance" to switch power to the motors. Because of this, the voltage applied to the motors is very nearly the battery voltage.

This snippet from the DRV8835 datasheet shows what you can expect:

enter image description here

The L293D uses bipolar junction transistors in a Darlington configuration to switch power to the motors. Because of this, the voltage actually applied to the motors will be about 3 volts lower than the battery voltage.

This snippet from the L293D datasheet shows you what you can expect:

enter image description here

At 500mA through your motors, you would be getting a voltage drop across the DRV8835 FETs of about 0.4 volts.

Compare that to the voltage drop of about 3 volts for the L293D.

As far as I can tell from your schematics, you are using a 5 volt supply to drive the motors.

With the L293D, the motors are getting about 2 volts, maybe 2.4 volts. With the DRV8835, the motors are getting about 4.6 volts.

The current drawn by a motor goes up as the voltage increases. You are seeing about twice the current drawn for about twice the voltage - that's pretty much what I'd expect.

Since power is the product of current and voltage, the power your motor consumes will have gone up by a factor of 4 (2*V*2*A.) That's quite a bit more power than before, so the motors get quite a bit warmer than before.


To make the motors run cooler, you can try a few things:

  1. Insert a resistor (1 ohm or so) in series with the motors. The resistor will get hot instead of the motor.
  2. Use 3.3V to power the motors instead of 5V. You might not have a 3.3V source available that can deliver the needed current, though.
  3. Switch to motors that are intended to run at the higher voltage.
  4. See if they are really getting hot, or just warmer than you expected. If they aren't hotter than the motor datasheet allows, then you just live with it.
  5. If you are using pulse width modulation, use a lower duty cycle. With the higher voltage, you should be able to use a shorter duty cycle to get the same speed.
\$\endgroup\$
  • 3
    \$\begingroup\$ Looking at the DRV8835 data sheet, you should be able to run the PWM fast enough that the motor current will be averaged by the motor's armature inductance. I'd start with 20kHz as a nice round number, if your micro can provide that easily. \$\endgroup\$ – TimWescott Dec 2 '19 at 15:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.