Reading R.P.M. and sending it out via serial or CAN?

A bit new to arduino, but I have high hopes it will do all kinds of fun stuff.

I am currently working on a seemingly simple project, for interpreting and sending out/logging, vehicle data that will need to do a few things:

1, Calculate the RPM of a rotating gear, like a flywheel on the engine, a crankshaft sensor or a gear in a transmision. A flywheel (as is a common RPM pick up point on larger engines) has many teeth, 150-300+, so even at seemingly low RPMs it generates pretty high frequency, but lets say that at max RPM i will be looking at 15,000-30,000 hrtz.

2, calculate RPM of a second input, wheel speed, and calculate miles per hour. much slower input rate, say 2-200hrtz.

3, send the calculated values out to a serial line and/or a CAN bus.

I have done some digging on the forum and found a couple of similar projects, a couple of motorcycle dynos were two that seemed close.
But those were trying to calculate horsepower and torque, requiring high accuracy and speed.
I need fairly good accuracy, but speed is not a huge deal, If i can transmit the calculated info out, say 4-8 times a second that will be plenty fast. Faster would be better, but at some point, say 50 times a second, it would just be extranious info.

So, would the uno be a good choise for such a project? if so, what would be the best way to do it, timers, pulse counters or something else?

Thanks joe

  1. Measuring the crank shaft or a spark plug pulse will reduce the load by 150-300x so I would look into that. It would normally be easier as well as with most motors it's not that easy to get to the flywheel teeth.

I don't see how you can use the gearbox to get speed info without knowing the gear you are in.

  1. Miles per hour can be got from the tail shaft or a wheel. I've used the tail shaft in the past. I just have a hall effect sensor mounted about 8 meters away and fed directly into a processor pin.

  2. What to say, CAN or RS485. Personally I think RS485 would be easier but I'm not experienced with CAN.

Uno should do this easily as long as you don't count flywheel teeth.

Normally timer for slow inputs, counter for fast. If you need hi res and/or fast updates on a speedo for example then sometimes swap methods at a certain speed.


Rob

Graynomad:

  1. Measuring the crank shaft or a spark plug pulse will reduce the load by 150-300x so I would look into that. It would normally be easier as well as with most motors it's not that easy to get to the flywheel teeth.

I don't see how you can use the gearbox to get speed info without knowing the gear you are in.

  1. Miles per hour can be got from the tail shaft or a wheel. I've used the tail shaft in the past. I just have a hall effect sensor mounted about 8 meters away and fed directly into a processor pin.

  2. What to say, CAN or RS485. Personally I think RS485 would be easier but I'm not experienced with CAN.

Uno should do this easily as long as you don't count flywheel teeth.

Normally timer for slow inputs, counter for fast. If you need hi res and/or fast updates on a speedo for example then sometimes swap methods at a certain speed.


Rob

Thanks Rob,..
1, This will be on a diesel engine, so no sparkplug.
2, On these engines, the fltwheel is commonly used for RPM pick up, there are usually several locations around the flywheel to mount a sensor, so it is the prefered way.
3, the gear ( or tone ring) in the transmission is on the output shaft, so it is directly related to speed.

I was able to get a little more info, the flywheel has 115 teeth, the gear or tone ring on the output of the trans has 16 teeth.
So, if my math is correct, and we assume a max engine RPM of say, 4000 the formula for determining the frequency would be (4000x115)/60 I get 7,666.7htz at 4000rpm.

The rear end rear ratio is 3.55 to 1, tires are 24inches in diameter, by my calculations that is 47,730 pulses per mile.

So, timer for MPH, and counter for RPM?

I need to be able to use CAN though.