How to determine Engine RPM

krypton_john

Senior Member
Hi All,

Just wondering what is a recommended approach to determining RPM. Assuming I get a logic level pulse per revolution, and the revs could be up to say 8,000rpm, what's a robust approach to timing them? In particular, I'm interested in getting more than one concurrently - in this case, a helicopter's engine RPM (around 2500) and rotor rpm (around 500rpm).

I guess you could count them over a 0.25 second period and display a 0.5 second rolling average?

Any suggestions?

TIA,
JohnO
 

mikie_121

Member
Why not just count the number of pulses over 1 second and using the following code (assuming piston driven four stroke):

'Using 08M, input signal is conditioned and put into
'pin 1 (leg 3).
'The LCD is connected to pin 2 (leg 4).

b4=3 'Enter number of cylinders here
pause 10
serout 2,t2400,("?fBooting...")
pause 2000
w0 = 0

main:

count 1, 1000, w0
w1=w0*120/b4
serout 2,t2400,("?f",#w1,"?x04 RPM")

goto main

just adjust the count period. so half second counting means multiply by 240 instead of 120.
I basically used the tacho from silicon chip to work out the circuitry.

Another way of doing this is to measure how long one pulse is and work out the rpm from that. Will be faster but maybe unnecessary.

Mike
 

craig008

New Member
i used pulsin to calculate wind soeed a long while back but seeing as u are just counting the number of reveloutions it should be easy to programme

main:
pulsin (for a short period)
serout (data to LCD)
goto main

just out of interset what sort of machanical switch are you using for ur pickup, wind speed work on magnet and read switch, but seeing as u are dealing with higher RPMs you may want to look at some sort of light reflection into an LDR of some description
________
Corvette c6 zr1
 
Last edited:

krypton_john

Senior Member
Why not just count the number of pulses over 1 second and using the following code (assuming piston driven four stroke):

'Using 08M, input signal is conditioned and put into
'pin 1 (leg 3).
'The LCD is connected to pin 2 (leg 4).

b4=3 'Enter number of cylinders here
pause 10
serout 2,t2400,("?fBooting...")
pause 2000
w0 = 0

main:

count 1, 1000, w0
w1=w0*120/b4
serout 2,t2400,("?f",#w1,"?x04 RPM")

goto main

just adjust the count period. so half second counting means multiply by 240 instead of 120.
I basically used the tacho from silicon chip to work out the circuitry.

Another way of doing this is to measure how long one pulse is and work out the rpm from that. Will be faster but maybe unnecessary.

Mike

Hi Mike,

I disregarded that approach as I want to do other stuff at the same time and that approach ties the whole picaxe up.
 
Top