The governor implementation I have will actually work measuring engine rpm as well as rotor rpm. But using engine or electric motor rpm is far from ideal. You could have the main or autorotation clutch start to slip in flight and the governor would happily keep the engine at governed speed while the helicopter crashes. The pilot would have no indication there is a problem until the helicopter started falling out of the sky.
Another situation is autorotations. You can shut a helicopter’s engine off in flight and it continues to fly just fine. To bail out of an autorotation the governor needs to know how fast the rotor is going to determine how to re-engage, engine rpm does not provide the required information.
Not all helicopters are geared the same. So if you use engine rpm now you have to do gearing calculations in the code to determine what RPPM is.
Where electric helicopters are concerned, helicopter-specific ESC’s have a soft start, and most already have built-in governor function. And typical amp range is 120 on the low end (500-550 class) to 200+ (700-800 class). Most of them over 160A are forced-air fan cooled. The BLHeli ESC’s are not designed for this as they are a multi-rotor ESC.
The governor code in ArduPilot is designed primarily for piston and turbine engines since these do not come with a governor, and adding an external governor is a quite expensive piece of kit. It will work fine for smaller electric helicopters, however, no matter what ESC it uses. So assuming a BLHeli ESC could handle the rigors of helicopter operation, the current governor already works with the addition of a $7-10 Align hall effect sensor and magnet on the autorotation gear.