Why does Tetrix motor spin slower under PID control?
Page 1 of 1

Author:  tom.jakowenko [ Tue Feb 05, 2013 3:08 pm ]
Post subject:  Why does Tetrix motor spin slower under PID control?

We are using PID control on a Tetrix motor to control position. The moves are long and trapazoidal in nature (e.g. motor ramps up, moves at a flat speed, ramps down, then sits idle).

Wetried to run the motor with and without PID and each time the motor command is 100%. It spins faster when the PID attribute is disabled. I understand slower speeds while ramping up and down, but it should be 100% during the flat portion of the move.

Does anyone understand why this happens? Is there anything we can do to speed things up?

Author:  SergeantFTC [ Tue Mar 19, 2013 4:39 pm ]
Post subject:  Re: Why does Tetrix motor spin slower under PID control?

I'm wondering this as well, anybody know the answer?

Author:  mightor [ Wed Mar 20, 2013 1:39 am ]
Post subject:  Re: Why does Tetrix motor spin slower under PID control?

When you use PID, the power is regulated based on the speed of the motor. When you switch PID off, the power is simply a percentage of a duty cycle. With PID you like to have a little wiggle room at the top, so you can maintain the speed, even under load. When you use PID and you're really giving it 100% duty cycle, where do you go when that's not fast enough to achieve the pre-determined number of RPM? 105% duty cycle? That's unpossible! Unless you're bad at math, but then you probably shouldn't be in the FTC.

I know with the NXT, when you're using PID, each % motor speed has a pre-determined amount of RPMs assigned to it. It is based on a average maximum of a large sample of motors, taking into account the deviation in those samples. If you assigned 50% to two motors, you don't want one of them to run at 80 RPM and the other at 72 RPM.

= Xander

Author:  JohnWatson [ Wed Mar 20, 2013 9:25 am ]
Post subject:  Re: Why does Tetrix motor spin slower under PID control?

Xander beat me to it :) but he is absolutely correct. Also, normal usage of the TETRIX motors (without PID control) 'cap out' the motor speed quicker; it's hard to explain without writing a full paragraph on it, but in a nutshell the PID control will 'linearize' the power level to actual speed ratio. Thus, at most power level setting the PID control seems to be running slower, when in fact it's running at a speed that relates more directly to the given power level.

For more information on this, take a look at the links below. You can also test this yourself by using the code below both with and without PID control enabled, then copy and paste the Debug Stream results into an Excel spreadsheet and graph the results (which I have also done, screenshot below).

TETRIX Drive Motor Dynamic Test Results A: ... 5B1%5D.pdf
TETRIX Drive Motor Dynamic Test Results B: ... rspecs.pdf
HiTechnic Motor Controller Specifications: ... efv1.3.pdf

#pragma DebuggerWindows("debugStream")

task main()

   for(int x =0; x<100; x++)
      motor[motorD] = x;
      writeDebugStreamLine("%d,%d", x, nMotorEncoder[motorD]);

Results (note that the values are encoder counts/100 ms):


Page 1 of 1 All times are UTC - 5 hours [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group