DRV8835 Shield output voltage ramping

I’ve recently bought some DRV8835 motor shields, product at https://www.pololu.com/product/2511

When using phase/enable mode, the output voltage looks clean; the output voltage waveforms are crisp both on the way up and on the way down. After severing the mode trace in order to put the driver in IN/IN mode, however, I end up with voltage ramping down very slowly after each step, even with nothing hooked up to the driver, but ramping up instantly. This also happens if I put a small load resistor between the terminals. My logic voltage is 5V and my motor Vin is 2.3 V off a benchtop power supply. The arduino is being powered off of USB and there is no pin connecting board AVIN to to Arduino VIN. This issue appears both on motor 1 and motor 2. I am driving one pin with ~500 Hz PWM and the other is staying low. I have not yet been able to determine whether the same issue appears if I drive M1A instead of M1B. The DRV 8835 datasheet specifies an output fall time around 160 ns in IN/IN mode. I have seen this behavior with 2 drivers. I ordered 5, but I’m hesitant to use more in case I’m doing something wrong.

I have used a scope to probe the DRV8835 outputs and discovered that this issue appears to be coming from the IC directly. There is no ramping in the PWM signal hitting the chip inputs, but the same ramping is present on the chip outputs.

I have attached a photo of the output voltage with no load between the motor 1 terminals. Channel 1 (yellow) is the voltage between the motor 1B terminal and arduino ground and channel 2 (blue) is the voltage between arduino pin 9 and arduino ground.

Any idea why this might be happening, and whether it could be a problem with the DRV8835 chip itself?

This appears to have been me being ignorant of some of the finer points of H-bridge logic - in particular, slow and fast decay modes. I am able to get the desired behavior by keeping M1A low, driving M1B with PWM, and terminating my load at GND rather than at M1A.


As you mentioned, it has to do with the difference between decay modes used. For brushed DC motor drivers we normally talk about it in terms of drive/brake vs drive/coast operation. Table 4 in the DRV8835 datasheet shows that during phase/enable operation driver/brake is always used. For in/in mode table 3 shows what combination of high and low on the IN pins results in brake or coast. You should be able to get the desired behavior by connecting your load between M1A and M1B and holding A1IN (M1DIR) high while PWMing AIN2 (M1PWM).


Hey, Claire.

I’d seen that table, but I was slightly confused what was actually going on electrically since I wasn’t familiar with brushed DC motor braking. I did a little more reading and realized where I’d gone wrong. Thanks for the confirmation, and for the tip on the correct connection!