Quote:
Originally Posted by billbo911
Again, this would be very easy to implement in LabView.
Here's my thoughts on why I didn't jump on this as an option:
1) There can easily be periods of 20+ seconds when the shooter wheel is not being used in a match. During that time, you are just consuming power, even though it may be a small amount, that may be needed later in a match.
2) Depending on where the shooter is in relation to a camera, if you use it as we did, the extra vibration the shooter may be creating can interfere in the imaging process, thus your aim.
3) If a slew rate limiter is used below a certain threshold, then you avoid the possibility of tripping the over-current in the Jag. (Not an issue with a Victor.)
If there is enough interest, I will most certainly create a version that follows the minimum continuous RPM model. Who knows, I might just become a fan of it too. 
|
I should have been clearer:
The "low_command" is a
tuning constant,
not the target speed, and was
not intended to be so low that it tops out at a speed below the "spinup_speed". "low_command" should be
as high as possible (without causing the motor controller to shut down), and at the very least, high enough that it briskly accelerates up to (and beyond) spinup_speed, at which point the full voltage is applied.
Many shooter wheel setups can handle application of full voltage to the motor even at zero RPM, but some can't. It's a function of the gear ratio and the wheel inertia and the motor being used. For such setups, simply set spinup_speed=0.0
The code I posted was for those shooter setups that can't handle a full 12 volts being applied at zero RPM, but could, for example, handle, say, 8 volts at zero RPM and 12 volts at 1000 RPM. For that example, you would set spinup_speed to 1000 RPM and low_command to 8 volts. Simple, and gets the job done.
With the code I posted, the minimum continuous RPM
is simply commanded as the target speed by each team's software to
whatever they want it to be, and the code I posted will bang-bang regulate
at that speed. That target speed can be zero if the team so desires.
For
really finicky setups (e.g. high inertia wheel, not much gear ratio, high stall current motor), you could always add a third "else" statement:
Code:
if (measured_speed >= target_speed) motor_command = 0.0;
else if (measured_speed >= spinup_speed) motor_command = 1.0;
else if (measured_speed >= medium_speed) motor_command = medium_command;
else motor_command = low_command;