HELP! Uneven power distribution

Hi all,

I'm new to the forum, but not to robotics in general (motors and power are my kryptonite though).

I created a small tracked robot that uses an Arduino Uno r3 and the corresponding r3 motor shield:
https://store.arduino.cc/usa/arduino-motor-shield-rev3

Unfortunately, the power distribution to the 12v motors appears to be unequal with approximately 10.2v measured at the input of the strong motor and only 8.2v going to the weak motor.

This sort of ruins the functionality because the motors have terrible torque with less than 9v, so the track easily locks up and the robot spins.

I'm willing to buy another shield if necessary, but I was hoping to get some advice on how to troubleshoot the root cause and maybe a few potential fixes to try.

Thanks in advance!

Your motor controller allows you to measure the current used by each motor. Have you done that? The voltages you gave are meaningless. The motors use current to move them and the controller will tell you how much current each motor used.
Have you tried switching the motors to see if the same weak motor stays being weak?
Paul

Paul_KD7HB:
Your motor controller allows you to measure the current used by each motor. Have you done that? The voltages you gave are meaningless. The motors use current to move them and the controller will tell you how much current each motor used.
Have you tried switching the motors to see if the same weak motor stays being weak?
Paul

Thanks for the quick reply!
If I understand the current sensing feature of the board, measuring the analog value out of A0 (0-> 255) corresponds to 0->2A at the Channel A motor (the strong one) and A1 is Channel B (the weak one in original configuration). I'm not able to find the conversion between (can I assume it to be linear?).
Result:

  • strong motor (aka, A1, Ch. B) = 15
  • weak motor (aka, A0, Ch. A) = 14

Switching the motor channel resulted in the "weak motor" switching, so I guess at this point its more accurate to say motor channel A is weak

edit: I found the conversion (2.96mA per integer out) and found my output settings were wrong, real values are approx 175 ch. B and 150 to ch. A.

I'm noticing an odd behavior where the output to ch. A is pulsing from effectively 0 to 150 every second, while the ch. B output is steady around 175.

Ok, now, just to be sure of the components, disconnect one lead of each motor. Measure the resistance of each of each motor as you rotate the shaft, Does the resistance stay the same, except at the point where the brushes contact the insulation between armature segments. What is the minimum resistance found for each motor? Should be very, very, close the the same resistance.

Are you using double ended motors, so the motor on the left rotates the same direction as the right hand motor?

Paul

Paul_KD7HB:
Ok, now, just to be sure of the components, disconnect one lead of each motor. Measure the resistance of each of each motor as you rotate the shaft, Does the resistance stay the same, except at the point where the brushes contact the insulation between armature segments. What is the minimum resistance found for each motor? Should be very, very, close the the same resistance.

Are you using double ended motors, so the motor on the left rotates the same direction as the right hand motor?

Paul

I'm using the following motors:

Since the "weak motor" changed when the channels were switched, doesn't that confirm that the issue is with the r3 motor driver and is independent of the actual motors? Why would the motor resistance matter at this point?

I only ask because I'm having some trouble measuring resistance on these and don't want to go through the trouble of a disassembly and test if they don't seem to be the issue.

There is one other possibility and that is the PWM going to pin D3 is not the same as the PWM going to pin D11, as per the board documentation. The current shown by your measurement indicates they are not the same.
Can you do a test by connecting both pins D3 and D11 on the driver board to the same pin on the Arduino?
Then you will be sure the same PWM is going to both motor driver circuits.
Paul

Hello,
PWM frequency on various pins by default is different.
This could be the cause of your troubles.
I could not find the io outputs you are using but the default frequencies can differ.
Some of the pins even to not support PWM at all!
How To Change Frequency On PWM Pins Of Arduino UNO (etechnophiles.com)
Best regards,
Johi.

You definitely want more like 4kHz or above for small motors, not the default ~500Hz or ~1kHz

And MOSFET H-bridges would perform vastly better than the feeble/ancient L298/L293 drivers.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.