Pololu Robotics & Electronics
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Dual MC33926 Motor Driver Carrier negative speed problem


i am having problem with setting negative speed for my DC motors. If i put values for speed +10 it works like it should. I can increases speed to 400 in steps. If i enter -10, motor goes full speed. After that every new command i send motor goes slowly.

I am using library and demo code from here.


Sorry to hear you are having trouble using your MC33926 Motor Driver. From the title of your post it seems like you have our Dual MC33926 Carrier:

Our Arduino library for the MC33926 shield cannot be used with the carrier, because our MC33926 shield has additional logic on its inputs that the MC33926 carrier does not.

You can refer to the Basic Application Connections section from the carrier’s product page as a starting point for your own code. If you run into trouble writing your own code for the carrier, you can post it here, and I would be happy to help you troubleshoot.


Can you give me some directions? Url?

You can click the thumbnail in my last post to access that driver’s product page, and the section I referred to is mid-way down the page. For your convenience, I quoted that section below:

Basic Application Connections

In a typical application, five I/O lines are used to connect each motor driver channel to a microcontroller: the two input lines, IN1 and IN2, for direction control, one of the disable lines, D1 or D2, for PWM speed control, the current sense output, FB, for monitoring motor current draw (connected to an analog-to-digital converter input) and the status flag, SF, for monitoring motor driver errors. The control lines can be reduced to two pins per channel if PWM signals are applied directly to the two input pins with both disable pins held inactive. In each of these cases, the other unused lines must be set to enable proper operation. For example, if D2 is used for the PWM input (as is typically the case), D1 must be held low to prevent it from disabling the motor driver. The circuit board provides convenient jumper points for overriding the motor driver defaults without having to connect extra wires to the module.

The current sense and status flag connections are optional, though monitoring of the status flags can allow detection of latched fault conditions. The status flags are open-drain output, so the two status flag can be wired together for applications where I/O pins are scarce and determining which motor driver is experiencing a fault condition is not necessary.

Note that the default state of the enable pin, EN, is LOW, which holds both motor driver chips in a low-current sleep mode. You will need to hold this pin high (either with an external connection or via the default-overriding jumper next to the pin) to allow the board to run.


Hi Josh,

What exactly is the logical differences between the shield and the carrier? Is it just pin assignments in the .h file?


Hello, Sam.

The shield version has some additional logic to convert the IN/IN logic used by the MC33926 driver into a PWM/DIR interface. You can refer to the schematic in the “Resources” tab of the MC33926 shield’s product page for the specifics of how that is done. For comparison, you can find the schematic for the Dual MC33926 Motor Driver Carrier at the bottom of the “Description” tab of its product page.