VNH5019A Shield - Driving with two pins

Hi,

I am trying to use the Dual VNH5019A Arduino shield in a system with multiple I/O channels (temp. sensors, stepper motors etc). My previous DC motor driver (from Velleman) used two digitial I/O lines (pins D8 and D9) to drive the DC motor, but its max. current is 2A which is too low for my motor. In contrast, the Dual VNH5019A driver seems to require 4 Arduino pins to function, namely MxEN/DIAG, MxINA, MxINB and MxPWM (I am ignoring the current sense pin). My application (a filament extruder) requires the motor to rotate in only one direction with controllable speed (I have already written a LabView program for this). So as far as I can see, one of the MxIN pins should not be required.

I would like to be able to use the driver using only two Arduino pins. One would obviously have to go to the PWM input (Pin D9 on the Arduino Uno is good for up to 20KHz so that should work). The only other pins I have free on my Arduino are D9 and D11. Since D11 is not connected to the driver IC on the VNH5019A shield, that leaves D9 as my only option to (a) enable the motor and (b) provide the direction input. My questions are:

(a) Can (or should) I tie the MxEn/DIAG and one of the direction (either MxINA or MxINB) pins together?
(b) Can I leave the other direction pin floating? If I have the wrong direction pin set as HIGH, I can change the motor connection wires once to correct the motor direction.

FYI, I have cut all the Arduino input traces except D9 on the shield already.

Thanks!

*** I am posting this again as my previous post had some errors and ambiguities ***

Hi,

I am trying to control a DC motor using the Dual VNH5019A Arduino shield on top of an Arduino Uno, controlled using LabVIEW. There are a number of I/O devices connected to the Arduino (temp. sensors, stepper motors etc), leaving only 3 Arduino pins unused, namely D8, D9 and D11. My previous motor driver (from Velleman) used two digital I/O lines (pins D8 and D9) to drive the DC motor (D9 for PWM and D8 for direction), but its max. current is 2A which is too low for my motor. The Dual VNH5019A driver seems to require 4 Arduino pins per motor, namely MxEN/DIAG, MxINA, MxINB and MxPWM (ignoring the current-sense pin).

My application (a filament extruder) requires the motor to rotate in only one direction with controllable speed. So as far as I can see, I don’t need to use both the MxIN pins. Out of the 3 unused pins, pin D9 is good for PWM up to 20KHz, so that works out just fine. Since D11 is not connected to the driver IC on the VNH5019A shield, that leaves D8 as my only option to (a) enable the motor and (b) provide the direction input.

My questions are:

(a) Can (or should) I tie the MxEn/DIAG and one of the direction (either MxINA or MxINB) pins together, and switch them HIGH using the D8 pin on the Arduino?
(b) Can I leave the other direction pin floating, or should i ground it?

FYI, I have already cut all the I/O traces on the shield except D9.

Thanks!

Hello,

The enable pins are meant to be output pins from the motor driver to the microcontroller. They are pulled high on the carrier board with a pullup resistor and should not be tied directly to high or low. You can leave them floating if you do not intend to implement any logic that responds to faults. If you want the MxINA or MxINB pins to always be high or low, you could cut the traces to the Arduino and use a jumper wire to the 5V rail or GND to pull them high or low.

For more about the operating modes of VNH5019 and how the INA and INB pins work to control them, I recommend looking at the truth table on page 14 of the VNH5019 datasheet, which can be found under the Resources tab of the shield’s product page.

Nathan

Hi Nathan,

Thanks for your reply. This pretty much solves the problem, at least theoretically. I will try this configuration out today and will post back here.

Thanks,
Bilal