Recently our team tested 6 TalonSRX motor controllers with voltage compensation set to 12V. When sending ‘1’ to all of them (expecting to output 12V) we noticed that 3 of them were giving ~11.9V and 3 were giving ~11.6V (unloaded).
The voltage was measured by the talons themselves and was verified by using a multimeter. A similar behavior was observed when the motor controllers were loaded.
What may cause these inconsistencies? How can we fix this?
What you are seeing is the real world voltage drop across wiring and electronic components. Even with no load on the controllers, they do still provide a load to the battery and power wiring. Any current passing through these devices can drop voltage due to Ohm’s Law. When monitoring try checking the input voltage to the controllers. The difference between the input and output voltage is the voltage drop across the internal electronics and the series resistance of the power MOSFETs.
The way a Talon (or any FRC speed controller) is designed, the output voltage will never exceed the input voltage even if you ask for more through the API. The MOSFET H-bridge that drives your motor has no voltage increasing elements (i.e. no switching power supply*). In essence**, you can only have voltage drops from the outputs of the various FRC control system components.
I don’t know the design internals. There may be a switching power supply for the controller, but it’s not like there’s an 80A switching power supply in a speed controller that can guarantee your motor 12V.
** Yes, I know there are subtle effects that can increase voltage in a transient manner, like motors spinning while attached to speed controllers. There are also switching power supplies in the VRM and the PDP, but from the outputs of those elements, you’ll only see voltage drops.
You can buy a cheap DVM at Harbor Freight for about 3 bucks on sale. Sometimes they even give them away free with purchase. Or maybe your team jumped on one of those amazing Fluke meter deals of days of yore.
Measuring just the output of the motor controllers is not a fair test.
Measure the input voltage each MC is receiving.
If that accounts for the difference you’ve got your answer.
If not, then you’ve got a valid question, and you might consider asking CTRE.