DRV8833 Constantly Slipping Into Fault Mode

I have just bought a DRV8833 driver (product 2130). Whenever I try to use it, it goes into fault mode. This is strange because:

  1. It is cool to the touch.
  2. I am using a 9 volt battery for the Vin pin.
  3. It happens with ANY motor (even just one).

This is my Arduino code:

[code]// This is not relevant
#include <IRremote.h>
// This is my home-made DRV8833 library
#include <DRV8833.h>
// This is not relevant
#include “remoteDetector.h”

const int right1 = 5, right2 = 6, left1 = 9, left2 = 10, blinkerPin = 13, faultPin = 12;
unsigned long lastMillis = 0;
int interval = 1000;
int blink = LOW;
DRV8833 driver = DRV8833();
const int speed = 150;

void setup() {
// put your setup code here, to run once:
driver.attachMotorA(right1, right2);
driver.attachMotorB(left1, left2);
pinMode(blinkerPin, OUTPUT);
digitalWrite(blinkerPin, LOW);
pinMode(faultPin, INPUT_PULLUP);
Serial.begin(9600);

irrecv.enableIRIn();
lastMillis = millis();

}

void loop() {
// put your main code here, to run repeatedly:
if (millis() - lastMillis > interval)
{
blink = !blink;
digitalWrite(blinkerPin, blink);
lastMillis = millis();
}

if (digitalRead(faultPin) == LOW)
{
interval = 100;
}
else
{
interval = 1000;
}

switch(getSignal())
{
case None:
break;
case Stop:
Serial.println(“Stop”);
stop();
break;
case Left:
Serial.println(“Left”);

left();
break;
case Right:
    Serial.println("Right");

right();
break;
case Forward:
    Serial.println("Forward");

forward();
break;
case Backward:
Serial.println("Backward");
backward();
break;
case Rotate:
Serial.println("Rotate");
rotate();
break;

};

}

void stop()
{
driver.motorAStop();
driver.motorBStop();
}

void left()
{
stop();
driver.motorBForward(speed);
driver.motorAStop();
}

void right()
{
stop();
driver.motorBStop();
driver.motorAForward(speed);
}

void forward()
{
stop();
driver.motorAForward(speed);
driver.motorBForward(speed);
}

void backward()
{
stop();
driver.motorAReverse(speed);
driver.motorBReverse(speed);
}

void rotate()
{
stop();
driver.motorBForward(speed);
driver.motorAReverse();
}
[/code]

I am worried that my DRV8833 may be dysfunctional. :cry:

This is my circuit:


Also, I have written a Arduino based library for this product (one of the reasons I’m bummed about this). You can find it here: https://github.com/TheArduinist/DRV8833

Hello.

I am sorry you are having problems with your motor driver. From your schematic, it looks like you might be using standard 9V batteries to power your system. If you are, that might be causing the problem since 9V batteries are not capable of supplying enough current to drive motors.

If you are not using standard 9V batteries, could you tell me more about your setup? What kind of batteries are you using? In an email to us, you mentioned that your system worked before. Did anything in your setup change between when it was working and when it stopped? Could you post photos of your setup that clearly shows all the connections?

- Jeremy

I am using standard 9V batteries. Here are three pictures that show my connections:






So, you’re saying a standard 9V battery won’t work? Would four AAA batteries work instead?

A standard 9V battery is not suitable for driving motors. Four AAA can supply a lot more current. You might find this blog post on batteries helpful.

I suspect when under load, the voltage of the 9V battery is dropping low enough to activate the undervoltage lockout and raising the fault. If this is the case, switching to a power supply that can supply more current should help; however, I cannot determine if switching to AAA batteries will fix your problem without knowing more about the motors you are driving. You should determine how much current your motors will draw and then select an appropriate power supply.

- Jeremy

Using four AAAs is working! I’ll post here again if the problem reoccurs. You were probably right, that it was going into under current fault. Thank you so much for your help! :mrgreen:
I’m super glad I don’t need to buy a replacement… :unamused:

I am glad you got it working. Thanks for letting us know.

- Jeremy