I am in the process of finishing up a home built diesel generator which suffers from the same problem. The stock governor would drop from 1800 rpm to 1700 rpm when a full load was applied. I was able to change to a longer spring and improve the performance somewhat, but still not to the level I was hoping for.
I built a controller based upon an ATMega8 which uses a stepper motor to "apply a bias" to the governor to correct for the rpm sag. I implemented a fixed point PID controller to do the job. I'm still tweaking the gain variables, but at this point, the controller keeps the RPM at 1800 +- 5 rpm regardless of load. (not counting excursions when load changes)
Here is a graph showing the system response from no load to full load. The purple line shows the stock configuration. The green line shows the response with the PID controller helping out.
**broken link removed**
I'm still working the kinks out of the PID controller. Because of my fixed point implementation, I'm having troubles getting the Integral portion to work without causing oscillation.
You can read about my project at
automaticgeneratorcontroller (martinnile)
The beta level software is available at
ngencontrol - Project Hosting on Google Code
The system is implemented in C and does a lot more than just controlling the RPM.