Simple engine speed control

Hello folks,

I'm completely new to Arduino, but not to some basic electronics. I last worked with flash micro controllers (PLCs) over 15 years ago!

I'd like a recommendation for a software manual - like the old days! PLEASE!

I'm trying to control a stationary engine's speed so that it's rpm remains constant on or off load. I'm using a slit disc photo interupter on the crankshaft to get rotational speed. Using frequency to voltage conversion then comparing this to either a voltage divider input (same PSU as Arduino) or software 'preset' to maintain the rpm (the voltage divider concept would allow a manual control on the fast idle speed during warm up). The output from the Arduino will operate a servo on the carburettor throttle.

Extending my thinking I'd like to be able to control the idle in relation to temp so that I have some 'choke' function with a fast idle. This would seem a simple hardware addition - simply by adding a temperature sensor, but from a software perspective I now have to correlate engine rpm with temperature, and the preset speed and then drive the servo.

The mapping between input and output is therefore not constant - it will vary with temperature - engine speed should reduce to the preset rpm as temperature rises.

I'm not confident with the code to say the least!, but I'll get that eventually I hope!

Does my thinking seem reasonable or can anyone suggest an easier / alternative way?

The Nutty Professor

I think that should be well within the capabilities of an Arduino Uno. The trick is to approach the project in small pieces, getting each to work before going on to the next.

Figure out how to control a servo.
Figure out how to detect the RPM and how to tell if it is different from some preset value.
Figure out how to move the servo based on the difference.

etc.

...R