DRV8835 - Dead?

So, I bought a DRV8835 (from one of your Canadian distributors). I plugged it into a breadboard I have set up with an Arduino Nano, a servo, a pot, and a 5 volt regulator.

The whole thing is run off a 7.4 volt Lipo, which feeds into the 5 volt regulator (1 amp, switcher). The 5 volt output from the regulator (I’ll call it Vcc) powers both the Nano, and the servo. It also feeds into Vcc on the DRV8835, but I had BATT+ going into Vin.

The code looks like this:

#include <Servo.h> 
#include <Metro.h>

#define POT_PIN 0
#define MOTOR_PWM_PIN 5
#define MOTOR_DIR_PIN 4
#define RUDDER_SERVO_PIN 3
#define LED_PIN 13

Servo rudder;
Metro heartbeatTimer = Metro(250);
int ledState;

void setup() {
  rudder.attach(RUDDER_SERVO_PIN);
  digitalWrite(MOTOR_DIR_PIN, 0);
  analogWrite(MOTOR_PWM_PIN, 0);
  ledState = 0;
}

void loop() {
  int potPosition = analogRead(POT_PIN);
  int servoAngle = map(potPosition, 0, 1023, 0, 180);
  int motorSpeed = map(potPosition, 0, 1023, 0, 255);
  rudder.write(servoAngle);
  analogWrite(MOTOR_PWM_PIN, motorSpeed);
  if (heartbeatTimer.check()) {
    digitalWrite(LED_PIN, ledState);
    ledState = !ledState;
  }
  delay(50);
}

I powered it up, and the motor started running for a few seconds, and then stopped. After that, it has been completely unresponsive. I checked, and I’m definitely getting PWM input into BENBL, and BPHASE is low. I also tried switching channels (from B to A), but the results were the same (nothing).

The motor I’m using is a Tamiya motor from one of their submersible pods. It does not have any gearing, and there shouldn’t be a lot of load on the motor, so the current shouldn’t be too high.

Should I be adding some protective diodes on this setup?

- Jon

Hello, Jon.

I am not entirely sure I know what you mean when you ask about adding some protective diodes, but if you are talking about flyback diodes, you should not need to add any.

What are the operating voltage and stall current of the Tamiya motor you are using? Can you remove the motor from your setup and see if it runs when supplied with its intended operating voltage? Many of our Tamiya kits use small 3V motors, so if you are not sure about the rating of your motor, you might start by applying a low voltage like that to it.

Can you also measure the outputs of the motor driver with a multimeter or oscilloscope?

-Jon

I don’t know what the voltage/stall current of the motor is. It runs off a single AA cell, but it runs very slowly at that voltage level, and it looks like a standard Tamiya motor.

I put an SN754410 in place of the DRV8835, and it works fine, although it was adding enough noise to the circuit power to make the servo jitter. I added some 0.1 uF capacitors in a few places, and a big 680 uF electrolytic and that helped to settle it down.

I have a couple more DRV8835’s now, but I’m not inclined to put them back in the circuit if they are that delicate.

There is no output from the motor driver - both leads read 0 volts, even while the PWM input is anywhere from 0 to 5 volts, and the direction pin is low.

I’m planning on using one of the DRV8835’s in my robot uCee, in place of the one I had: Pololu - Dual MC33887 Motor Driver Carrier

That one is only spec’ed for 5 volt inputs, and I’m driving it from a custom ARM7 board I built, which is all 3.3 volts. The motors I’m using are Pololu - 100:1 Micro Metal Gearmotor HP 6V with Extended Motor Shaft

I’ll definitely add some caps to the motor leads, and hopefully the DRV8835’s are up to it.

- Jon

I am sorry that your DRV8835 is no longer working for you. In our experience, it generally handles overcurrent conditions gracefully, so I am not sure how your board was damaged. If you want me to check your connections when you try another DRV8835 board, I can do so if you post a picture of your setup.

When we tested the driver, we occasionally had problems using 0.1 uF capacitors across the motor leads; they would sometimes cause the chip’s overcurrent protection to kick in. If you do add motor capacitors, I recommend using 0.01 uF or lower.

Please let us know if you have any further trouble with your DRV8835 drivers.

-Jon

I don’t think it was an over-current, I think it might have been motor noise spikes.

As indicated in the last post in this thread:

This driver seems to be fairly susceptible to that sort of thing. I think for now I’ll stick with the SN754410 for this platform, and use one of my new DRV8835 boards in uCee, which has much higher quality (and thus hopefully lower noise) motors.

I will definitely heed the capacitor warning, and make sure I use 0.01 uF caps on the motors.

So happily, the new DRV8835 seems to work well with uCee (my little python-powered robot).

That’s a picture of my custom ARM7-based MicroPython board, with the DRV8835 beside it, wired up.

I am glad uCee works with the new DRV8835. Thank you for posting pictures.

By the way, we looked into this a little further and found that those Tamiya FA-130 Motors generate a lot of motor noise that the DRV8835 often cannot handle, even at voltages as low as 3V. So, voltage spikes from those motors can damage the DRV8835, which sounds like what happened in your case.

We also tested those motors with added capacitors to see if they would suppress the motor noise. We observed that we could reduce the magnitude of the voltage spikes from the motor by adding a 0.1uF capacitor across its motor leads, and reduce it even further by adding an additional 0.1uF capacitor between each motor lead and the motor casing, like in the diagrams under the “Dealing with Motor Noise” part of this Application Note.

Our results varied from driver to driver. Some of DRV8835 drivers were simply more robust than others, and could tolerate the motor noise of those Tamiya motors without any external capacitors, and other drivers would break even with all three external capacitors added. So, while adding capacitors to the motor might help protect the driver in some cases, it is not a guaranteed way to get those motors to work with that driver. We also tested the Tamiya motors with our DRV8833, and they consistently worked together. Since that driver is similar in size and specifications, you might consider using it instead of the DRV8835.

Below I have attached screen captures from our oscilloscope that show the amount of noise we saw when powering the motor directly (no driver) with 3V. The shots show the motor without any added capacitors, the motor with one 0.1uF capacitor added, and the motor with three 0.1uF capacitors added, respectively.




The green and blue waveforms measure noise across the motor. The green waveform was generated with a standard oscilloscope probe, and the blue waveform was measured with a differential probe. The pink waveform shows the current draw of the motor. You can see the noise being reduced as the capacitors are added.

-Jon