Today I’ve got permission from technik jr to post our latest video in the open forum. It is from our practice session this past weekend, which I partially described in the https://vexforum.com/t/puncher-catapult-or-flywheel/31764/1 thread.
Various launcher types could win you a game if build with attention to details and well tested. I am not claiming that single flywheel launcher is the best. I just want to add another data-point showing that flywheels could be almost as accurate and power efficient as any other launcher type, while having an advantage of being able to score from any point on the field.
The following video shows our single flywheel launcher that is run by a single motor:
In this configuration a high-speed motor drives 60T:12T gears and then 48T:15T chain for a total ratio of 25.6:1. We run motor at about 85% of its nominal speed and commanded power level is 90-110.
The secret to the efficiency of transferring energy from flywheel to the ball is the shape and position of the backplate. Before you ask any questions: technik jr wins here - there will be no additional details disclosed at this time beyond of what you can see in the video. Silly secrets.
As I said before, we have run a 100-ball test: 92 landed in the high goal, 5 bounced off the edge of the net, and 3 went into the low goal. Our longest streak of hitting high goal in a row was 31 balls. That’s lower than 56 for the puncher we were competing with.
In the posted video we launched 30 balls in 1m45s - 1 bounced, 2 went into the low goal, and 27 ended up in the high goal. The average fire rate was 3.5 sec. In this iteration we focused on efficiency and accuracy and were conservative with our fire rate. We could, probably, improve it to 3 sec with a single motor, but eventually we are going to use two more motors to drive the flywheel.
Despite my constant begging to learn about and use TBH or similar algorithm, technik jr was stubborn enough to create speed control from scratch. It end up having four separate control segments, each tuned with its own constant. All those constants somehow must relate to the moment of inertia of the flywheel and the friction losses associated with running it.
I am not advocating this particular speed control algorithm - I feel it could be improved. I am just proudly reporting what technik jr did by trial and error (and by finally agreeing to study the graph above and, at least, listen to me describing TBH).
The first segment is for initial flywheel acceleration. Every 50 msec there is a constant increment in the motor power. It is kind of slow, but doesn’t trip PTC by limiting max current that motor draws.
The second segment/mode is detected when ball enters the launcher. We detect sudden drop in the speed reported by IME’s getMotorVelocity() and reduce motor power to limit stress on the motor.
When flywheel starts accelerating again, the third constant is tuned to flywheel’s moment of inertia and we try to stay ahead of the angular velocity by about 25%.
When we are within 5% of the target speed we use fourth constant to reduce the power proportional to the error (target-current velocity). We try to be conservative there, because if it overshoots it takes our launcher very long to slow back down.
The target speed is, obviously, have several presets for various points on the field and could be adjusted by a couple of buttons on the joystick.
Notes: For each value of angular velocity of the motor there is a specific back EMF (voltage). If you apply only that much voltage to the rotating motor - there will be no current flowing through the coils and therefore no output torque. To do any work (like overcoming friction) you need to apply higher voltage.
If you try to apply about 25% more voltage than whatever back EMF corresponds to the current angular velocity, you are, in essence, limiting forces going through gears as well as operate the motor close to its optimal efficiency point: https://vexforum.com/t/motor-torque-speed-curves/21602/1 https://vexforum.com/index.php/attachment/56464d7f6b09b_torque-speed-393.jpg
I say that we are 25% ahead, but we just picked something that felt like 25% higher and tested it. For example, if we figured out that to rotate at 200 RPM motor needs commanded power level 85, then we would command 110 and hope that we are about 25% ahead.
In reality, relation between commanded motor power and MC29 output voltage is nonlinear and you should not confuse idle speed and motor pulling flywheel with some friction, but I didn’t want burden anyone on our team with those details just yet: https://vexforum.com/t/24cs-motor-control-value-remapping/23959/1 http://farm4.staticflickr.com/3723/8899223776_107b2ee13c_b.jpg