Arduino UNO: How to connect 2 way power for DC Motor

arduinomotor

Currently I'm using Arduino UNO R3 board.
I want to drive small DC Motor using same power source as the arduino is using.
My motor driver is TB6612FNG and it works well.

I have two motors.
One is 5V the other is 12V.

So I connect arduino's VIN pin to TB6612FNG's VM(Motor Power) Pins for more voltage to supply 12V motor.
It works good.

But when I connect USB power for 5V motor
then VM voltage is measured under 5V (around 4.4V).

How can I fix it?Is there too much current draw pulling V down to 4.4
Why this voltage appears on VM, and which path is using this voltage?

Any comment appreciated
Thanks

Best Answer

On the Arduino, the 5V supply is the same as the 12V supply EXCEPT it it shunted through the SMT 5V regulator. This 5V regulator is powering nearly everything on board (when USB isn't hooked up), and running a motor on it is a bad idea:

  1. Motor voltage transients are placed directly on the same voltage as your microcontroller - brown-outs are the least of your potential issues.
  2. The regulator is protecting itself by dropping the voltage and - thus - the current. You are likely hitting the internal current limit of the regulator. You need to provide your own regulator if you want to drive the 5V motor.

Better solution: You could also PWM the 12V down to 5V. For motors, PWM works very well for 'voltage scaling'. In other words, if you run your 5V motor on 12V and PWM to 42% duty cycle, you have the equivalent of a 5V supply. Your chip has a PWM input, just use that and power both motors from the 12V supply.

Have fun!