Currently using the following in a small vehicular craft:
https://www.pololu.com/product/3218 x2
https://www.pololu.com/product/2503 x1
https://store.arduino.cc/usa/arduino-uno-rev3 x1
We developed our quadrature encoder reading code based off of previous feedback and it is working excellently. Our feedback control is also working, and can drive the motor towards the desired speed at the lower end of the range. However, as soon as we start nearing 60 RPM (130 RPM is max) we cannot draw any more current to get past this and drive higher speeds.
This would make sense if the load was higher, but the power supply is indicating that we are only capable of drawing about 2.5, 2.6A max @12V. My understanding is that this is both motors combined, that each motor is actually only seeing about 1.3A. When we do “stall tests” at lower speeds where we hold the wheels, we see the same thing.
Is this a problem you’ve seen, or is there a mode in the motor controller which limits the draw to 3A total and not 3A per motor? I suppose we could disconnect one of the motors and try stalling them individually. The motor driver should limit it to 3A individually, so it shouldn’t get anywhere near the 5.6A limit.
If you have other ideas I’m all ears. Thanks!
Edit: Here’s my conclusions and please, feel absolutely free to correct me. We instruct the craft to obtain a low speed such as 20 RPM. It does so flawlessly. This is because we give the motors 20RPM/120RPM * 12V of voltage, or 2V (we initialize at 12V but lets ignore that for now). It attemps to spin against a constant load. It cannot, and deals with the torque by increasing voltage to unknown levels. Since “R” is constant, a bump in V is a bump in I. It does the same thing up to about 60 RPM, gaining about 2.4A. But it is now apparent that at 60 RPM, it’s already pullng the full 12V for correction. Thus telling it to go at 120 RPM is meaningless, because it’s already pulling the 12V. Every speed given above 55 RPM or so shows identical results because it is pulling the same voltage after feedback. It appears that at the rated voltage, our motors are midway on the torque curve.
Except that absolutely should not happen. We know there’s something wrong, because the stall rating for these motors is 5.6A and the motor controller is supposed to let 3A per motor through. We are receiving roughly 1.2A per motor, or reading 16% of stall torque. We ought to be pulling 110 RPMs under current load. That should be our terminal speed based on max power. Maybe less. And yet we’re stalling, repeatedly. We know it’s not a mechanical power transfer issue. It is therefore an electrical power transfer issue. Which is happening one of three places:
Power supply to motor controller: I’ll have to check the exact model of power supply. It shouldn’t be limited to 2.5A but… who knows.
Motor controller to motors: I’m really suspicious that the motor controller is artificially limiting the current to the motors somehow.
Arduino to motor controller: There could be something embedded in the code which is limiting current. What, I’m not sure. Could be in the libraries.
Bonus, wacky conspiracy theory: this behavior is easily explained if we received a low power motor instead of high power. At 12.3V, stalling at 2.3A is right on the money. May explain why all of a sudden we got poor results when we switched to brand new motors too.