How can I use a MC33926 Motor Driver like it is offered for Arduino to drive forwards, backwards with a PWM and a direction control.

The problem is that the MC33926 has Inputs IN1 and IN2 and not PWM and DIR as usual. How can IN1 and IN2 be directly used with a Arduino. Such as it is done in the ArduMower project.

I'm also wondering under which conditions this is controller is energy efficient? If the load has a flywheel effect (e.g. high RPM mower disk) reducing RPM would waste energy?

I know there are different shields that have logic to drive the inputs with PWM and DIR, but the ArduMower PCB 1.4 decided to hook it up directly. Here is a hardware solution by pololu (I wish i would understand these two NAND gates and the Q2, but that's another problem):

enter image description here


1 Answer 1


I have figured this so far:

  • If the PWM frequency is too low, the load-free power consumption (100% PWM 200mA) of the motors increases(!) rapidly when driving slowly, e.g. 33% to 1A.
  • From a certain PWM frequency (>2kHz), the power consumption normalizes and driving more slowly requires less power.
  • MC33936 has IN1 and IN2, which are normally connected with IN1 = LOW and IN2 = PWM or IN1 = PWM and IN2 = LOW (not good for most MCs)
  • Alternatively you can use IN1 = PWM and IN2 = LOW / HIGH BUT you must INVERT the PWM SIGNAL when running reverse, i.e. IN1 = PWM and IN2 = LOW or reverse IN1 = ~PWM (inverted PWM) and IN2 = HIGH. Otherwise you start driving at 0 PWM with 100% motor power. This is quite tricky, too.
  • MC33936 has no freewheel (except if ENABLE = LOW) and brakes the motor to 0 when IN1 = IN2
  • MC33936 is a braking motor controller that actively sets the output RPM. of the motor according to PWM.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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