controlling led brightness with car engine rpm tach signal

Hello . I am a newbie at this. I would like to know if it would be possible to control the brightness of LED light strips with the tachometer signal of my car. If it is possible , I would like to know what hardware I would need and some basic instructions. I do have a background in automotive electronics.

Does the tachometer signal vary from 0 to 5V?
If not, can it be made to? If so, then you can read it with an analog port, get a result from 0 to 1023, map that down to 0 to 255 (shift right 2 bits, or divide by 4) and then send to to 255 to a smart LED strip (like one composed of WS2812B).
Or use the 255 to PWM (analogWrite) the gate of an N-channel MOSFET to turn the Gnd On/Off to a dumb LED strip.

I could get a 0-5v signal from the throtle position sensor but the tach signal is a variable frequency signal from a magnetic crank sensor so an analog frequency. I would much prefer using the tach signal

Does the vehicle have a ODBII port?

If it does, then get a ODBII port reader, such as a Freematics. Then it becomes a simple matter to get the engine RPM.

Another source is the firing trigger, tap it, count the number of pulses per second divide by the number of cylinders to get rpm.

No the car does not have an OBD port....It's a 1987 Monte Carlo SS....I know what the tach signal is...I want to know if I can use it with the Arduino to control the led under car lights I want to install.The effect I am looking for is say a 20 % brightness at idle and 100% at 3500rpm and up.Imagine the look as a red glow from the engine bay varied with the engine noise...And thanks for your replies .


So you have a varying frequency then the time between pulses would be used to determine brightness.
I don't know what you could use for an interface exactly, perhaps an optocoupler.
Could save a lot of time knowing the specs of this varying frequency. Does it make a tick each time around, or with each spark? Is it 0/12V, something in between, or something else?

You could also make a monostable with an NE555 chip and fire it on each pulse from your tacho. Then smooth the result with an RC filter. The resulting signal will be a variable voltage you can read on an analogue input pin.

I am getting my car out of storage this week end…I will mesure the frequency range from the tach signal and post it back here when I get the chance. thanks for your help again.

Once you know the frequencies as to range verse RPM you could thing about a F/V (Frequency to Voltage) converter where now you have a voltage proportional to engine RPM. You can find F/V converters ready made as a turn key solution where you merely adjust the low and high end for the Vout scaled range. Once you have that you run the analog voltage into your Arduino ADC. It should be linear so then map it to a PWM out. Use the PWM out to drive maybe a MOSFET for your LED assortment.

Something else which is pretty cool is adding a MAP (vacuum) sensor to measure manifold vacuum pressure and driving a LED bar graph.


Thanks for the reply Ron.... Can the arduino board drive multiple12V led strips directly or do I need another component inbetween the Arduino and the strips?


Can the arduino board drive multiple12V led strips directly


do I need another component inbetween the Arduino and the strips?

Yes a resistor and a NPN transistor, or a n-channel logic level FET.