Locked anti-phase PWM on VNH5019?

Some of the other motor control boards from Pololu state explicitly that they support locked ant-phase PWM on them.

Does this one??? I couldn’t see anywhere that it does.

I just won one of these in a mini-sumo competition @ DragonCon and would love to use this for a competition bot I’m about to start building, but if it can’t do Locked Anti-Phase PWM it doesn’t help me…

Can we get some clarification on this?


I probably should mention that my bot used the Pololu zumo chassis + blade, the analog line sensors and 100:1 micro gear motors…


The direction-switching ability of the VNH5019 motor drivers is going to be too slow for effective locked-antiphase operation. Is there a reason why sign-magnitude operation won’t work for your application?

Also, the VNH5019 is quite overpowered for the micro metal gearmotors that work with the Zumo chassis. Have you considered the MC33926 drivers? You can switch the direction pins of the MC33926 at 20 kHz, which is a lot faster than the VNH5019, though I am not sure if this is fast enough for decent locked-antiphase performance.

- Ben

The issue is that the “coast” found in sign-magnitude kills me when trying to do things like high speed line following. Commanding one of the motors to 0 to initiate a turn instead causes the bot to coast and get even farther off course than it was, which causes the PID control to then have to overcompensate again in the opposite direction, and it just never keeps up. With L.A.Pwm that doesn’t happen. If I tell it to slow down or better 0, the wheel stops, RIGHT NOW.


Sign-magnitude control does not imply drive-coast output. For example, the MC33926 shield that Ben mentioned has sign-magnitude control with drive-brake output.

- Ryan

Just a clarification: I won the VNH5019 at the mini-sumo competition @ Dragoncon, using a bot built around the Zumo chassis, not that I want to use the VNH5019 to drive a zumo chassis.

However I DO plan to use whichever motor driver I end up going with on my next (non-sumo) bot with some of your 100:1 or 150:1 micro gearmotors.

I already have the VNH5019, and a single https://www.pololu.com/catalog/product/755 (Stupid me didn’t read it close enough to realize it only did single motor control)

I’ve been trying to focus on Locked Anti-Phase controllers because my first attempts at line following using the Sparkfun Arduino Motor Shield had horrible results (using the example line following code you guys provide for the QTR sensors). If the motor was commanded to 255 and then on the next cycle to, say, 50, it wouldn’t immediately slow down, but instead would coast so it was nearly impossible to get consistent line following behavior unless I drove the bot VERY slowly. (Although after using that same shield + motors in the Sumo bot, I suspect that anything above a certain (rather low) value was just making them run full speed anyhow…) So fine control was nearly impossible.

So to be sure I’m following you guys correctly:

The VNH5019 CAN do what I need? Just that it’s overkill? Or would I be better off buying a 2nd 18V15 and doing Locked Anti-Phase PWM? Or would the MC33926 shield be the better solution? Is there anything the MC33926 shield can do that the VNH5019 can’t?

Sorry for the dumb questions, I’m more a digital + software guy, so this power+analog stuff always has me scratching my head.

I should also mention that I need pretty tight precision. One of the events that the robot will be competing in is a dead recon where we need to get as close to a specific point as possible after a series of straight runs and turns. So I need as close to zero coast as possible even when coming down from high run speeds.

Just to cover all bases, are you sure the bad outcome wasn’t just the result of poorly tuned PID constants? And if the motor really was making the motors run at full speed for most values, then that would also explain your poor results. I am not sure if you are familiar with our 3pi robot, but it can follow lines quite tightly with sign-magnitude control (it alternates the motors between drive and brake). You can see some videos of it following lines here:


I have not tried to make a line follower with motor drivers that alternate between drive and coast, so I cannot say for sure that it will do what you want. However, I suspect your problems with the Sparkfun driver were not related to its drive-coast operation, and I think the VNH5019 would work fine for you (though yes, it is overkill for those motors). Maybe you can try it out and see what kind of preliminary results you get? Similarly, I think that two 18v15s are overkill, and I don’t expect there to be a huge benefit to locked-antiphase operation. The MC33926 is just a lower power version of the VNH5019 shield, but it also differs from the VNH5019 in that it alternates between drive and brake rather than drive and coast, so you will probably get a more linear relationship between PWM duty cycle and motor RPM. With all of these motor drivers, you can easily control HP versions of our micro metal gearmotors, so you might consider those for a better combination of torque and speed.

If you are able to use encoders for this, I think it would help a lot. If not, you should do your best to calibrate your robot on the same type of surface as the one used in the actual event, and you should look into powering your motors with a regulated voltage. Otherwise, your motor speed will change as your batteries discharge, and your robot’s performance will not be consistent.

- Ben

Yup, definitely going to use encoders for the event (I have your kit for the 42x19mm wheels). But obviously, if there’s coast that happens after I tell it “stop” that’s not going to help me.

I don’t believe the sparkfun motor shield did braking, so when I’d set the PWM duty cycle lower the bot would coast for a bit and not really slow down very fast (I CAN get it to stop if I send in a “switch to reverse at 0 PWM” but that doesn’t really work in a PID line following situation.

Yup, VERY familiar with the 3Pi’s (my first attempt at the bot was basically using your QTR-8RC, mounted on the RRC04A plate, with 100:1 high current micro gear motors with the 42x19mm wheel+encoder set, driven off an Arduino Mega and the Sparkfun Motor shield ,all powered by 6AAA’s. The mega was needed because I’m going to be adding a LOT more to this for other events.) It didn’t seem to matter how much I tried to tune the PID control at faster speeds it would swing wildly from side to side and eventually lose the line completely. Talking to other guys in the Atlanta Hobby Robotics club, they recommended going with a controller that did Locked AntiPhase PWM, which is why I’ve been trying to find that.

Anyhow, I’ll go ahead and try to rebuild my setup from before using the VNH5019 and see if it works any better than that Sparkfun motor shield did.

If you have encoders, you should be able to deal with any coasting. If you end up coasting past the place you want to stop, your bot will know it and can apply a correction.

Please let us know how it goes with the VNH5019!

- Ben