Arduino Based Speedometer Tachometer

SONICJK

Reminds me of...me No, I'm sure of it. I hate him
So I have a crazy idea that I'm going to make happen.
I want to use my iphone as a speedometer and a tachometer for my bikes.
This presents a few problems, mainly getting an RPM signal into the phone along with a speedo signal.

In the past I have used the GPS speedo apps for the Iphone and they suck because the refresh rate is 1HZ, so it only reads your speed every 2 seconds, so it's really only good for maintaining speed.
There is currently no input for the phone for RPM signal. I have experimented with induction from the plug wires into the headphones port and got some promise, but really just too dirty and a pain in the ass.

Enter Arduino.
Bluno to be more exact, which is an arduino uno with integrated bluetooth.

The plan is to use 2 hall effect sensors, one on the rear wheel with a small magnet for the speedometer, and one on the plug wire for RPM signal (this one will probably be tricky, but I want this to be pretty universal without having to mod the ignition or fit a sensor to the crank)
The Bluno will count the pulses and pass the data via bluetooth to the iphone.
I havent decided yet if I will have the Iphone do the calculations or the Bluno, but my intuition says the iphone is much much faster and will be the better candidate here.

The plan for this project is do it in stages.
I am a complete noob to arduino, with very little experience in electronics in general, but I learn fast.

Stage 1:
Get the arduino to read the hall effect sensors accurately and with repeatability.
So far I have this working somewhat on a breadboard.

Stage 2:
Write an iphone app to display speed and RPM
Never done this either.

Stage 3:
Integrate the two, using the iphone to calculate speed and RPM from the hall effect sensors through bluetooth from the arduino.

Stage 4:
Improve interface, make it pretty etc.

Stage 5:
Hopefully get rid of the arduino and shrink it down to just a chipset that could be produced and marketed. This step is way in the future and depends entirely on how well this whole thing works and how much I can stay motivated.


Theoretically with the RPM and speed data you could do some pretty serious data logging for track days/ test and tune.

So here's the start:


I'll try to keep progress updated in this thread, but it will probably be pretty slow.

Any input would be GREATLY appreciated.
 
Have you actually tried to sense the pulses in the plug wires? What sensor are you going to use? Any idea what voltage comes out of that? I am "working" on something else and need to do the same thing.
 
Have you thought about a hall effect sensor for rpm's that adapts to the rpm cable mount? You would just have to adapt the gear mount in the engine or the sensor.
 
Hey I have done a lot of little projects with the arduino. I would do the processing on the arduino, it should be plenty fast to handle the readings. There are some good articles on signal conditioning for inductive pickups that would apply to your project.

I currently have a gps driven analog style speedo run by an arduino for my bike, but haven't put anything together for the tach yet. Looking forward to how this turns out!

Breadboard Phase
img3489v.jpg


I put together a corny explanation video during our last build.
https://www.youtube.com/watch?v=h1UMVTDhrDs

If you have any questions I may be able to help out, so shoot me a pm.
 
Awesome guys!
Flug, I haven't gotten there yet, but the super high voltage in the plug wire should produce a magnetic field that should be easily detected by a Hall effect sensor. Getting the signal clean and reliable will probably be a challenge though. I'm using u18 sensors

Deviant, I have thought of that actually, but I like to build things looking at the what ifs, and id like to start from the ground up with a universal thing so I don't have to adapt it to different bikes.

Efi,
Very cool! I'm sure I'll be in touch.
What frequency does your gps update and how accurate is it? I want to use an analog gauge face (in app) so I need quick updates to make the gauge move smoothly.
I have seen people build accurate speedos and tachs with arduino, but haven't seen anyone do both at the same time, so I don't know how it will handle both operations. But they are both fairly simple so hopefully no issue there.
 
Sounds like a very cool project Sonic. I would also recommend not doing the calcs on the iphone. What if you want to do an Android port? It would make it that much more difficult.
 
canyoncarver said:
Sounds like a very cool project Sonic. I would also recommend not doing the calcs on the iphone. What if you want to do an Android port? It would make it that much more difficult.

This is a very good point ;D
 
canyoncarver said:
Sounds like a very cool project Sonic. I would also recommend not doing the calcs on the iphone. What if you want to do an Android port? It would make it that much more difficult.

+1 for the android port! Great ideas! I am tuning in for this one!
 
Yep, I know it should work. I just have no idea what voltage you would get out of the sensor. I am worried I will either over volt the arduino, or not have enough to detect. I don't have an oscilloscope to measure output. Maybe I will just wait until you figure it out for me. haha

I will PM you about what I'm doing.

Also, I planned on using adafruit's "Trinket" board in my final design. It is super small, but I don't need bluetooth.

http://www.adafruit.com/products/1501
 
Flugtechnik said:
Yep, I know it should work. I just have no idea what voltage you would get out of the sensor. I am worried I will either over volt the arduino, or not have enough to detect. I don't have an oscilloscope to measure output. Maybe I will just wait until you figure it out for me. haha

I will PM you about what I'm doing.

Also, I planned on using adafruit's "Trinket" board in my final design. It is super small, but I don't need bluetooth.

http://www.adafruit.com/products/1501

It's my understanding that the Hall effect sensor shouldn't out out more voltage than you put into it,
But I may be completely wrong haha
 
I wonder what type of sensor is used in a timing light?
With the clamp on inductive pickup it's accurate enough to time a bike within a fraction of a degree, it would almost certainly be accurate enough to drive a tach.
 
SONIC. said:
I wonder what type of sensor is used in a timing light?
With the clamp on inductive pickup it's accurate enough to time a bike within a fraction of a degree, it would almost certainly be accurate enough to drive a tach.
I believe they are photoelectric sensors.
http://www.bannerengineering.com/en-US/products/8/Sensors/22/Miniature-Photoelectric-Sensors

* nevermind. I think photoelectrics only detect proximity. I'm trying to find the sensors we used when I worked in textiles. The inspection machines had sensors that could control rate at which the fabric ran, as well as when the roll was about to run out. I think they are a type of photoelectric.
 
Timing lights use inductive pickups. That's what I was thinking of.

A quick google shows that they also use hall effect sensors for current sensing.
 
Theoretically you don't even need a sensor, you can wrap a wire around the spark plug lead, and when it fires the current flowing through the plug wire creates a magnetic field which in turn induces a current in the wire wrapped around it. This current can then be measured by a device and then used as a tach signal.
The problem is its really dirty and requires a lot of processing to get a reliable signal.
My hope is I can bypass the dirty signal and use the Hall Effect sensor (senses magnetic field) with a resistor to give me a digital signal (0v, 5v) (no spark, spark) which is then easily input into the arduino and counted with some simple programming.
I have never heard of this being done, but it seems the intuitive way to do it to me.
 
Flugtechnik said:
Timing lights use inductive pickups. That's what I was thinking of.

A quick google shows that they also use hall effect sensors for current sensing.

Awesome, maybe I'm not too far off base here then!
 
I think you will want a circuit like this for the tach..
http://forums.parallax.com/showthread.php/147644-Inductive-Spark-Plug-Wire-Tachometer-Signal-Transformation-Help?s=d59702e0fb3f5c5a1245d0e63b992b10&p=1180339&viewfull=1#post1180339

This is basically how the timing light clamps work, the clamps are the loop

If you want to do GPS for speed rather then hall effect you could use one of these fellows..
http://www.adafruit.com/products/1272
10Hz update should be pretty good.

For your app you could program in some fancy filtration so that a small change in speed is smooth and a large change skips the filter. This would give it the nice smoothness of a real speedo but keep it accurate.

Cheers
 
Sounds like a pretty good plan. My brother does a lot of arduino projects, he is even a distributor. Let me know if you have any questions about the programming or need anymore parts and I will get you his contact info.
 
Back
Top Bottom