I decided to upgrade the firmware on my Benzin Trainer UAV heli. I have made some mods to the 3.6 Arducopter, adding engine RPM governor and 4 servos swashplate arrangement.
The governor has been bench tested only so far (though I already flew similar code on 3.3) , here the video of the bench test using a simple motor /flywheel/ESC and rpm sensor:
The governor is a simple controller based on proportional and integrative terms + throttle curve output acting as a feedforward and failsafe mechanism at the same time, in case of RPM sensor failure.
The governor function only kicks in at 80% of nominal engine RPM value (it can be clearly heard in the above video when the gov starts working), so the soft start function is still valid and properly working.
So rsc_mode 4 has been added together with three more parameters to tune the governor:
desired engine rpm;
Will update with a video of the test flight as soon as the Benzin gets back to flight line (currently disassembled on the surgery table for annual inspection )
Hi! I am one of the heli code maintainers. I would be interested in seeing your code for these new features you’ve implemented. @ChrisOlson and I are interested in getting a 4 servo swash implemented and I think we’d be interested in a closed loop rpm governor.
Very cool! Thanks for sharing!
Hi Bill/Chris , here the link:
Disregard my PM. Thanks for the link.
Where did you mount your rpm sensor? On the main gear or on the engine? If on the main gear, how many magnets did you mount on the main gear to get the necessary reolution for rpm sensing? How tightly did your controller hold rpm?
Bill, I did tests on two different helos. One was powered by OS GT15 HZ, which has inbuilt Hall sensor to phase the spark (1 magnet on the engine cranckshaft, 1 pulse per revolution). So I just put an Y cable on it, one end was going to the engine ignition box, the other end was going to the pixhawk. In this video the pix was installed in the electronic bay just to control the engine, for testing the code:
You can hear the engine is 4-stroking a little bit, that’s normal and not due to governor (this engine tends to “run away” very easily, leading to piston seizure, that’s why I kept the mixture a little bit richer).
Then I tested it on a Zenoah powered 800, here the video:
In this case magnets were mounted on the clutch bell ( one south, the diametral opposite north).
So in both cases it was 1 pulse per revolution.
Now, regarding the accuracy, the following images are from the log of the test bench video (above):
- this is how the system reacts when I push with the finger on the flywheel (ENG_RPM was set to 10000)
- this is how the system reacts when I changed the ENG_RPM from 10000 to 11000 (always referring to the bench test video)
Finally, I have never tested the system putting the rpm sensor on main gear/mast, I don’t actually know if the PI controller would be working ok with such low freqs (probably need a different control logic approach?).