Helicopter Rotor Speed Governor

Absolutely fantastic! Will test and report back

Great work Chris!!! Another big step forward for Trad Heli users. Thanks!!

Thanks Bill! Unfortunately, this was one of those projects where I flew a lot of beta code and it didn’t work right. Then I had to walk away from it and come back with a fresh outlook after studying some more engineering materials on governors, punching the calculator keys for two hours, and making spreadsheets to graph throttle response to torque curves.

When I started this project it looked simple. And the math behind a basic flyweight governor, which is the most proven and used governor of all recorded time, is very simple. Tailoring it so it fits the torque and power curve characteristics of various prime movers, not so much.

1 Like

Amazing news Chris, this is what i was looking for the gasser we are flying. 5 point throttle curve is already working fantastix and with this governor mode i cannot ask for more. Will test this as soon as possible.

Amazing, thanks Chris.

Whats with E-Helicopters?
Do we still need ESCs with a special helicopter feature set like a governor?
Or will every blheli_32 esc with telemetry out (and thus motor rpm readings) do in the future?

I’m not familiar with blheli_32. Maybe they are used in smaller helicopters? Most electric helicopters of UAV size use 160-200A ESC and I can’t recall I’ve seen a blheli_32 in one.

For pilot still flying 3.5 I backported the governor to the ArduHeli 3.5 code and made a new release, 3.5.7 with the governor in it.

I have binaries for the most popular controllers. It is not possible to fly this with Pixracer as it doesn’t have enough outputs on the servo rail for governor speed input.

Chris your governor works perfectly on a 700 with gt15hz gas motor. Installed a hall effect sensor and filter capacitor, flashed your firmware and it works exceptionally well. Good work mate

Thanks for the feedback on it! The code is still built on Copter 3.6.3. Have not had time to update it to 3.6.5, will do that this week.

The heli governor test builds have been updated to the latest Copter 3.6.5rc2. Binaries for the most popular boards can be downloaded here. If you have a board for which there is no binary, please let me know what it is and I’ll do a build for it.

Note this firmware version will identify as ArduHeli instead of ArduCopter so if you post logs Bill and I know you are running a custom build and not an official build.

Chris, well done? The governor function works beautifully. I initially had some issues with the sensitivity of the pickup sensor (align nitro) and adjusted it accordingly. Fortunately, I had a throttle curve setup and it failed over without any issues. You can clearly hear when the governor kicks in and it is a wonderful sound.

Thanks a lot!

Is the governor function available in the latest stable release? (3.6.5) From time to time I have Bad Logging and would like to upgrade as my understanding is that this has been fixed.

Thanks for the feedback on it. Yeah, everybody that has flown it so far likes how it comes in and works. It’s not a “sloppy” type thing where the pilot doesn’t know for sure if it’s working or not, and that’s the feedback I’ve gotten on it from other folks.

The build link posted above, built on 3.6.5rc2 should have the Bad Logging fix in it. That firmware has the slowdown setting for the SD card and is what I am currently flying. I will update those binaries, though, to the latest 3.6.5 release tonight and post a notice here that they are available for stable release users.

Hello,
Can someone can send a link to a competible hall effect sensor?

Thank you
Rotem

Just google for Align, Aerospire, or Spartan rpm sensor. Pick the one you want. Basically, any hall-effect sensor will work with a magnet on the main or autorotation gear.

Hello Chris,
Thank you.

Rotem

So I put a soft-start feature in the heli governor. I did this primarily for turbines to prevent over-fueling the Ng and spiking the Turbine Inlet Temp beyond 1000C and burning up the power section when the governor comes on. It would make the N2 power turbine glow red with significant flame on the tailpipes.

But it works good for piston engines too. I uploaded new binaries that have this feature, and they are available in the link in the first post in this thread.

Little too cold here to mess with a kerostart turbine today, but this a demo with a piston heli.

In the process of looking through @ChrisOlson governor code, I got to thinking about how the controller could monitor the RPM. Not necessarily for governing the rotor but for determining the state of the rotor for the startup and shutdown part of the rotor speed controller (RSC). This idea was to replace the timers that are currently employed to determine the rotor has completed run up and is below the critical RPM. So my first thought was a FFT that was always running in the background but that sounded difficult cause I don’t know where there is an FFT library in ardupilot and probably a little computationally expensive. Also the measured rotor speed would have to probably lag behind the actual rotor speed because you had to capture enough data to perform the FFT and then determine the peaks. But it can also be determined by looking for the peaks in the accelerometer data. All rotors have a distinct once per revolution vibration in the accel data. I think my rotor is balanced pretty well but it still shows this 1/rev oscillation in the accel data. I would be interested to have Chris try it on one of his smoothest running heli’s :wink:
So I wrote a little function that looks for peaks in the y accel data. I just did a short flight and here is a plot of the estimated RPM


I had my ESC set for 1500 RPM and for the most part, it nailed it. As a first cut, I thought it did pretty well. I thought it was interesting how it caught the 2/rev for the spool up and spool down. I peformed some maneuvering and it tends to not do as well. I will have to look at some of the data to see if I can get it to work better, but I think this looks promising as a way to determine the state of the rotor system. Again this is not intended for actively controlling the rotor system.

@bnsgeyer it seems to me some time back you did look at a log or two of one of my bigger helicopters and it did exhibit the same characteristic. I’m pretty sure they all do. With newer controllers with built-in vibration damping this may be easier to detect. On the Pixhawk Cube forum I have seen Philip recommending in some cases to hard-mount the controller as soft mounts don’t tell you what the frame is doing and you’re losing data from your accels.

I have been flying CUAV controllers with built-in damping the same way - hard mounted - and have gotten excellent results from it.

Earlier controllers where folks have gone to great extent to isolate the sensors from vibration, and the controller is more sensitive to it, this may not work as well. So I think it will be an interesting research project.

The binaries have been updated in the 3.6 Governor code to reflect a change I made to add a method of scheduling the gas generator in two-stage turbine engines. The link is in the first post in this thread.

It is a relatively minor change, but it does effectively double the available governor output in the normal operational range to schedule the gas generator to meet N2 torque demand. This will change how the governor droop response setting is applied for piston engines. I flew it in two different piston machines, and both used a 55% governor droop setting after re-tuning.

I flew with a MW54 and 88% droop response worked nicely with the turbine.

The code is latest Copter 3.6.6 with the governor feature added to it. This feature is also now in PR for Copter 3.7 beta.

Hi Chris,
what values of Throttel curve do you use? , 0-25-50-75-100 ??

It depends on the engine and throttle linkage geometry. I have a 23-35-47-61-100 in a helicopter with a 310 engine. Same model of helicopter with a 290 engine I use 18-25-37-60-100