Creating a track speedometer – Part 1 (Overview)

HO Scale speedometer

Long gone are the days of running my train around the tracks like a slot car, seeing how fast I can go before my Tyco locomotive flies off the track on the curves!

Running trains at realistic speeds is an enjoyable part of the hobby. In my investigations with DCC and dealing with speed profiles, it became apparent that I needed a speedometer.

The “Need for Speed”

The concept is simple enough. Sensors are placed at a fixed/know distance (100 scale feet in my example) and triggers start and stop a timer.

Project Scope

  • Arduino based
  • built in sensors in the track, or incredibly easy to move around the layout
  • LCD screen


So, we think of train speeds in MPH, but feet per second is a more realistic view of our world when taking a speed measurement over a fixed short distance. Imagine if you place markers by a track and manually record the time it takes for a train to move by marker 1 and then marker 2, 100 ft apart. “How many seconds did it take to move 100 feet?”. This makes seconds per feet (the reciprocal of feet per second) and even more desired way to look at our system. We know distance, but are simply measuring or acquiring time.


A train is moving at 30 MPH (no train A and train B algebra problems, I promise!). 30Miles/Hour *5280ft/mile *1 hr/3600sec = 44ft/sec or 44 fps. I now take the reciprocal and get .022sec/ft. If we start and stop our stopwatch over a 100ft stretch of track, it would take the train 2.2secs to travel the 100ft.

MPH FPS Sec/Ft Sec/100FT
60 88 .011 1.1
30 44 .023 2.3
15 22 .045 4.5
10 14.66 .068 6.8
5 7.33 .136 13.6

So, we now have some realistic numbers. We now simply map out 100ft in HO Scale and have a quick way to guess speed. 100ft/87.1 = ~1ft 2in. I need 1′ 2” between sensors.

What to expect

I’m dividing this project into separate activities and postings

  1. Arduino software and testing
  2. Choosing sensors (track installed and portable)
  3. The display and the enclosure

Leave a Reply

Your email address will not be published. Required fields are marked *