This may be a bit of an odd request.

I teach high school computer science, in part through game design. I have a student who wants to be an auto mechanic who was placed in my game design class because – I don't know why. He's not a gamer and the class didn't do much for him. That's fair. But, since we don't have a class that focuses on engine controls and since he's almost certainly going to need to deal with computerized engine controls and since my job is not to make life harder for kids I'd like to try to work with him on basic programming concepts in the context of controlling on engine rather than a character in a game.

My last gas car was a normally aspirated '80s SAAB 900 with a distributor and fixed valve timing. I'm guessing that the ECUs of modern cars are much more interesting…

So, I'm wondering if there are good pointers to the controlled parameters / components / algorithms of a modern engine control system and the sensors that are used? Both so that I can get up to speed on some of what I suspect he may already know and so that I can start imagining how to turn this into some basic programming.

For whatever it's worth most of what I know about "modern" cars is VW diesels and his interests seem to be Hondas.

Any pointers would be most appreciated.


Another way to go would be to check out Speeduino.

It's an open source DIY ECU. The software is freely available here: https://github.com/noisymime/speeduino/ and it can run on an Arduino.

If there's a hardware side to the class, you can buy kits for an actual ECU that he could solder himself for £80 in bits.

There are also DIY engine simulators that you can build where you can run some Air/Fuel maps etc on the bench.

Engine tuning is carried out using TuberStudio, again free.

It's a bit of a learning curve but there's a big community for Speeduino.


Yes, do some research about early fuel injection systems and electronic ignition.

You will find Bosch had some superb info about how they worked etc with really good diagrams and detailed explanations.

Search for K and J jetronic but the info on later systems becomes less good in terms of how it works partly because it assumes knowledge of the earlier systems and also because they become so much more complicated.

Here are some sources for the early Jetronic systems:

A basic idea is to be able to use a characteristic map to choose amount of fuel and timing based on the engine speed, load, throttle opening and other things like ambient temperature, engine temperature ...

  • Would it be ok to edit your post to add links to the Bosch info as I find it? – dlu May 16 at 20:17
  • @dlu sure, I still have my books and stuff but not accessible at the moment. – Solar Mike May 16 at 20:25

DLU - this is an excellent question and I applaud your efforts on behalf of one of your students. Kudos to you as a teacher.

I'm not a car guy, but I am a professional embedded system engineer, and I focused on Control Systems in grad school, so I know where your student needs to get to.

The above two answers (from Richard and Solar Mike) are the right way to go, specifically Arduino based tutorials and examples. Start with Arduino for basic programming, which is a prerequisite to being able to understand Speeduino or any other ECU code. Find some examples to use the Arduino to control a cheapo motor using a feedback sensor (position switches to start). Then dive into the ECU code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.