I know very little about electronics so I was hoping to get some advise on a small project I want to do at home.

My home treadmill already has the standard dashboard that tells me the mph I'm going, time and so on, however it doesn't offer any way to get at that information - as you'd expect no dev kits, ways of accessing the data via bluetooth etc. etc.

So my plan is to build a cheap sensor that would measure the speed of the belt. For this I've got the following in mind:

  • A small square with some kind of high visibility sticker/paint on the belt.
  • A way of tracking the belt paint passing the camera lens, or preferably something cheaper than a camera lens. (This would be calibrated to know how far a second represents on my treadmill).
  • Battery-powered by AA/AAA batteries.
  • A wifi chip that broadcasts the information it gets from the sensor. I haven't figured out how this will be configured to join my wifi network.

Now the question - is there some kind of cheap sensor that could do the tracking? And is my sketchy idea feasible?

I don't want to have to open up the engine or attach wires to the existing sensors, I'm hoping to build something that's entirely independent.

  • \$\begingroup\$ Opto sensor is good. But at least also consider a Hall sensor and magnet. Some use a reed switch and magnet - this has the advantage of needing no power feed but is otherwise liable to be less reliable long term. Avoid unbalancing rotating shafts and/or being killed by flying magnets.but \$\endgroup\$ – Russell McMahon Nov 17 '11 at 19:43
  • \$\begingroup\$ A cheap bicycle speedometer may be a useful source of parts - magnet and sensor at least. For other applications it can make a very cheap tachometer or distance measurement device with scaling set by modifying the 'wheel diameter'. \$\endgroup\$ – Transistor Dec 5 '15 at 18:19

There is almost certainly some part of the motor mechanism that is accessible and which can be used to return a periodic signal. This could be eg

  • a rotating shaft with a "bump that will trigger a magnet plus Hall sensor,
  • or the flywheel on the motor which will probably have some part which differs enough to trigger a sensor.
  • or the flywheel surface can be given a white soot of paint etc or a strip of reflective tape to trigger an optical pickup.

You can buy optical tachometers which will repond happily to a periodically varying surface and the silvered tape trick is a standard one with them.

Some of the available tachometers will have some form of output (RS232?) or will be more acceptably hackable than the treadmill.

OR you could build your own without too much effort:

DIY Optical Tachometer

Another home made optical tachometer
More complex crcuit than is needed but the front end gives ideas.

enter image description here

This (from above) plus an Arduino is about enough - or just the sensor with care.

enter image description here

Arduino in the sky with clothespegs - actually a really simple optical interface optical tachometer with Arduino based optical tachometer with numerous clothes pegs assisting.

enter image description here

Wow !!! - Vast list or Arduino application with link to above project (at least)

Sample of commercial unit - Australian seller $A80 rtail. I have one of these. Goes OK. No external interface. Hackable.

enter image description here

Identical unit at Farnell UK 43 GBP ;-(.

A zillion possible references

  • \$\begingroup\$ Thanks for the great detailed answer, looks like a tachometer is what I'm after, something like google.co.uk/products/… \$\endgroup\$ – Chris S Nov 16 '11 at 18:08
  • \$\begingroup\$ Arduino seems like my best bet for getting something working without an EE degree \$\endgroup\$ – Chris S Nov 17 '11 at 11:47
  • \$\begingroup\$ @Russell: Oh man, where can I buy an LCD like the one on that tachometer ! \$\endgroup\$ – boardbite Aug 30 '12 at 19:40

Yes, this is possible. However, adding WiFi, bluetooth, and the like makes this a rather complicated project. Especially since you say you know little about electronics, you need to keep this simple. If you want to get the speed information into a computer, use a serial port. If your computer doesn't have one, get a USB to serial adapter. Yes, there are more elegant ways, but this will be a much easier beginner task.

Sensing alternating white and black stripes at the edge of the belt sounds like a doable DIY project. Have a LED shine on a spot on the belt, and a phototransistor sense the brightness. You have to make sure the LED wavelength matches one the phototransistor can pick up well. Usually IR is used for this, but then you have to be careful about the brightness/darkness of the stripes to IR, not visible light. Sometimes the two can be quite different. For example, common black electrical tape is remarkably transparent in IR.

Even with the light and sensor set up right with the right contrasting stripes for the chosen wavelength, you will still get considerable noise on the signal. If I were doing this, I'd probably amplify the sensor output so that it fits the voltage range of a microcontroller A/D, then oversample in the micro, apply some low pass filtering, perform the light/dark detection, determine the period, and send that to the PC over a serial port. The software on the PC can convert the period to speed and do whatever you want with it from there.

This is not a trivial project, but it is something a DIYer can accomplish at home. Find someone that knows more about electronics to help you along. There is a lot of stuff and too much detail to get all the information here.

  • \$\begingroup\$ If using a serial-to-USB converter, it may be helpful to feed the pulse train into the data input. Each input pulse which meets certain timing constraints will generate one byte. Software won't have to worry about seeing every high-low transition; it can simply count bytes. At 1200 baud, a pulse less than 1/1800sec should be ignored; one at least 1/900sec long should trigger a count. Once a count is triggered, further pulses will be ignored for about 1/129sec. With a decent sensor, it should be possible to condition pulses well enough to meet that criterion. \$\endgroup\$ – supercat Nov 16 '11 at 17:04
  • \$\begingroup\$ It's probably a far too ambitious project to start with, but I'd prefer to be lazy and use a sensor that's built for rpm counting than build my own one as I really wouldn't have a clue about the finer points of the filtering. Looks like I'll need to read a library of books first too \$\endgroup\$ – Chris S Nov 16 '11 at 18:27
  • \$\begingroup\$ @Chris S: You can minimize the amount of circuitry required for filtering, and eliminate any need to "tweak" it or "dial it in", if you use a pair of sensors which are triggered at different times during each revolution and feed them into an RS latch. When the first sensor is hit, it will set the latch; it can be hit again any arbitrary number of times without affecting the latch until the second sensor is hit. The second sensor will reset the latch; the latch will remain reset, and further inputs from the second sensor will be ignored, until the first sensor is hit again. \$\endgroup\$ – supercat Nov 16 '11 at 18:43
  • \$\begingroup\$ @Chris S: This approach does require using two sensors rather than one, but has the advantage that provided any noise from the first sensor dissipates before the second sensor is triggered, and vice versa, there's no need to worry about "cleaning up" the sensor inputs. \$\endgroup\$ – supercat Nov 16 '11 at 18:45

I suggest that you go very simple and use a limit switch and a small bump on one of the cylinders guideing the belt (a dab of hot glue will do). Mount the limit switch above the bump so that the bump triggers the switch.

use an arduino (or what ever microcontroller platform you are comfortable with) to interface between the limit switch and your computer. Remember to use a pull down resistor on the input pin on the microcontroller pin otherwise the pin will float and not work. Also remember to denounce the switch (you have a software background, you should be able to handle the rest if the serial interfacing between the arduino and the computer).


Hi this is few years after the question but hope this might help. instead of attaching your DIY sensor you can tap to the existing on your treadmill. In my treadmill it was a simple magnetic sensor and it was very easy


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.