Ign timing project  - Page 1
Forum section: electronics / projects

author: Russell
author_rank: Newbie
timestamp: December 28, 2012, 08:14:50 pm
content: Hi Guys, this is my first post, just want to say. great forum. I am learning all the time.Now my question to all you clever people.I would like to build a device where i can see in real time what the ignition timing value is on a 4 cyl engine.I know i would need to measure crankshaft position as a reference and then also read an input as ignition occurs.this way i don't need a timing light. i would like to display the timing on a simple 7 segment display.what I don't understand is how the calculation is done?can anyone explain how this can be achieved using maybe a pic or arduino board possibly.RegardsRussell

author: jeroen74
author_rank: Frequent Contributor
timestamp: December 28, 2012, 10:40:48 pm
content: Compute speed of the engine with the crankshaft reference signal, then with this number you can compute the number of degrees from the time difference between the mark and ignition pulse.Is just for one type of engine or an universal device? It might not be easy to get a TDC reference signal out of the engine, most designs use a 36-1 toothed wheel, but there are other versions out there too. You could devise some auto-detection algorithm for this.And there's the advantage of the timing light, it's nearly completely universal

author: Russell
author_rank: Newbie
timestamp: December 29, 2012, 07:14:11 pm
content: Thank you for your reply.This design will be fitted to one engine, and yes the crankshaft has a 60-2 wheel. i could use that.I was thinking of fitting a reference pickup on the crank to detect TDCand then calculate from that.I have a good understanding of the sensing involved, What i need help on is the math or algorithm involved in calculating the timing angle?Thank you.

author: jeroen74
author_rank: Frequent Contributor
timestamp: December 29, 2012, 08:27:50 pm
content: Say your engine is running at 3000 rpm. That means 3000/60=50Hz or one revolution takes 1/50=20 ms. One degree is then 20ms/360=0.0555...ms or 55us.So, if you measure, for example 350 us between ignition and reference, that's 350/55=6.3 degrees at 3000rpm.So basically you need to measure rpm, calculate from that the amount of time for each crankshaft degree. Divide the measured time by this number and you have degrees.

author: mc
author_rank: Regular Contributor
timestamp: December 29, 2012, 11:32:06 pm
content: Does the engine have a diagnostic socket?If so, could you not just pull the information from that?

author: Russell
author_rank: Newbie
timestamp: December 30, 2012, 09:34:03 am
content: Thanks Jeroen74 that makes sense, and no mowicu its a race engine running carbs. Just want a way to monitor the timing especially when we dyno it.

author: mc
author_rank: Regular Contributor
timestamp: December 30, 2012, 01:30:10 pm
content: Ah cool. I was just checking you weren't overlooking the obvious solution!Jeroen74 has explained the basics, however you'll want to apply some smoothing/filtering to the result, otherwise your gauge will most likely bounce around all over the place.The example given is fine if engine RPM is constant, however as engine RPM is always fluctuating, the times involved will nearly always drift slightly between readings, so you need to average over several readings.Averaging could be as simple as taking something like 10 consecutive readings every 50ms or so, and using that to define what bit of the display to turn on.I'd say for a first project, base it on an arduino. That way making changes is simple, and during the programming, you could enable a serial stream to output values to a computer to see exactly what is going on.

author: Russell
author_rank: Newbie
timestamp: December 31, 2012, 07:08:39 am
content: HI Mowicu, Well I have a Arduino UNO, That should be good enough for a start. I am a newbie to programming, so this is going to take me some time. I really appreciate all your input.