by Tony » Sat Sep 22, 2007 9:46 pm
There are two fundamentally different ways to go about measuring revolutions per minute.
The obvious intuitive way is to just count how many times the thing goes around over a full minute. That is slow, because it takes a full minute to get a complete reading. If the speed has changed at all in that minute, the result will not be accurate.
So instead, you decide to measure revolutions over say six seconds, and multiply the count by ten. That updates much faster, but the problem being the multiplication process. The readings will always change in steps of ten rpm.
But there is a completely different way to go about all this. Suppose you just measure the time period it takes for one complete revolution. You get a fresh reading every turn of the shaft, so it will follow speed changes extremely rapidly.
This is called reciprocal counting, because as the speed goes up, the time period actually measured goes down. The measurement works rather like a stop watch, very fast pulses are turned on and off every shaft revolution, and a counter counts upward in increments of time. The smaller the time increments being counted, the higher the speed resolution can be made.
So you might get a reading of something like 60 milliseconds per revolution, and that works out to 1,000 rpm.
60mS = 0.06 seconds = 60/1000 revs per second = 1/1000 revs per minute (exact time for one full revolution)
Or you could make the same measurement in microseconds (60,000uS) to give extremely fine speed resolution, and get it updated every turn of the shaft. The performance of reciprocal counting can be vastly better for measuring dyno roller speed than just counting pulses over a fixed time interval. But it requires a fast period counter and some software gymnastics to convert a time period back into roller rpm. But if you can do it, it is by far the better way.
The only real problem doing this, is that as rpm falls, the measurement period per revolution obviously lengthens. At zero speed, time stretches out to infinity, and your electronic stopwatch will overflow. So reciprocal counting always has a minimum roller rpm that can be measured. Software can take care to detect this minimum overflow speed, and give a zero reading. In practice this is not a serious limitation, but the software needs to be written with this time overflow problem in mind, which is not difficult.
This is the "software" solution, and it would work perfectly well with the four pulses per roller revolution that you already have. It would solve the rpm jumping problem, and give a very fast and accurate speed reading with high resolution. It just requires more software to do it this way.
Also known as the infamous "Warpspeed" on some other Forums.