JMRI® is...
Speedometer information:
JMRI tools for working with your layout:
Layout Automation
Use JMRI to automate parts of your layout and operations:
Supported Hardware
JMRI supports a wide range of DCC systems, command stations and protocols.
By the community of

JMRI Help:

Contents Index
Glossary FAQ

Donate to


Using JMRI Speedometer with NCE


The Speedometer function within Decoder Pro is used to measure a train's scale speed. Once everything is setup, the speed is automatically calculated based the movements of an engine through distinct blocks.

Each block must have a means of detecting occupancy. The BD20 manufactured by NCE is a simple and effective block detector. Three BD20s are recommended. As the blocks get longer it is better to have another detector in the following section of track to sense when the engine has entered that block. As described at the end of this document it is possible to use less than 3 detectors.

Connecting each BD20 to the NCE Command Station is accomplished with the AIU (Auxiliary Input Unit) manufactured by NCE as well. The AIU needs to be connected with the cab bus. Once the AIU is connected into the cab bus, and thus into the Command Station, DecoderPro does the rest.

The track used must be connected to the mainline from the NCE system. Do NOT connect it to the programming tracking wiring.

The choice of track is up to the user and the space available. An independent section of track or a long siding on an existing layout are both acceptable. The independent section of track can be long and straight or it can be a loop. Each type has their advantages and disadvantages.

It is also possible to use this Speedometer while the rest of the layout is operating. If you do, make sure you are not blocking the mainline or at least have the proper authorization from the dispatcher.

Figure 1 shows the ideal setup for connecting the block detectors into the NCE system with the BD20s and AIU.


Figure 1 shows how to integrate the sections of track, block detectors and AIU into the Command Station.

Make sure there is a good solder connection between the wire and the rail and that the rails are clean. It is possible to have false readings on the speedometer if the DCC signal is interrupted.

It is only necessary to put gaps into one of the rails. It does not matter which rail is gapped.

You can use a loop of track or a straight section of track. For a loop, block 5 in the diagram is connected to block 1 and the power feed to block 5 can be removed since it is powered in block 1.

wiring diagram
It is a good idea to have 3 independent blocks. Block 2 is used to measure speeds for slow running engines. Block 3 should be quite a bit longer than Block 2 to allow for faster running engines to reach their running speed. The length of each block is a subjective answer. These values are not cast in stone and each person's experience and available space may dictate block lengths.

The BD20s should be located within a reasonable distance from the track.

The wire at each block should be soldered as close to the start of the block as possible.

Follow instructions for the BD-20 regarding number of turns.

Follow the instructions for the AIU as well. As the AIU instructions state, it is a good idea to change the default cab address from 4.

All of the wires from each pin 1 of the BD20 must go to GND pin on the AIU. The wires from each pin 2 on the BD20 goes to a unique pin on the AIU.

Setting Up DecoderPro

speedometer dialog
Open DecoderPro. Under the Tools menu open Speedometer. See Figure 2.
  1. Enter the sensor ID number into to boxes for Sensor #1, #2 and #3. The sensor ID number can be found by using the following formula:

    Sensor ID = (AIU Cab Address - 1) * 16 -1 + (Pin Number On AIU)

    For example: The AIU cab address is set to 50 and one of the BD20s is connected to pin 2. Therefore the Sensor ID would be:

    Sensor ID = (50 - 1) * 16 -1 + (2)>

    Sensor ID = 785

  2. Based on Figure 2, all sensors should be set to 'Enter'. This means the internal timer either starts or stops when the train enters the given block. If a sensor were set to 'Exit' then the internal timer would start or stop when the train exits the block.
  3. The light at the end of each sensor row gives the indication of occupancy.

    Red: No reading, status unknown (typically if no value for the sensor ID is entered)

    Yellow: Block occupied

    Green: Block unoccupied

  4. Enter the distance in scale feet. For example a 3 feet long piece of HO flex track would be 261 scale feet.

    Distances 1 and 2 both start at the beginning of block 2 (or the end of block 1).

    For metric units press the 'To Metric Units' button and enter the information in the correct units.

Operating The Speedometer

Now that everything is hooked up and the speedometer form is open and the correct values entered as required we are ready to use the speedometer.

  1. Place an engine in block 1.
  2. Press the 'Start' button on the speedometer form to tell it to start getting input from the AIU. All of the lights should be gray.
  3. Start the train moving towards block 2. Increase the speed to a given speed step. Keep it at that speed.
  4. As the train moves through the blocks you should notice the colors for each sensor change colors.
  5. Once the condition for sensor #2 is met, meaning the timer for distance 1 has stopped, you should see values for Time 1 Speed and Time displayed on the Speedometer form. Remember this is scale speed!
  6. Once the condition for sensor #3 is met, meaning the timer for distance 2 has stopped, you should see values for Time 2 Speed and Time displayed on the Speedometer form. Remember this is scale speed!
  7. Once the train has reached the end of the track do not immediately throw it back into reverse. This will cause the timer to think trains are in one of the blocks and actually restart or give another reading for the speed and time. Record the values of speed and time. Now move the train back into block 1.

    If you have a loop, once the train has reached block 5 (actually the beginning of block 1) stop the train as well before it reaches the end of block 1. If you don't the timer will restart.

  8. To restart the timer, make sure the train is in block 1. Hit the 'Clear' button on the Speedometer. Continue with step 3.
  9. Deciding when to switch to the longer block is up to the user based on experience.

Uses for Speedometer

Obviously the primary use for the Speedometer is to create custom speed tables. Creating speed tables can be used so different types of engines can run together as a consist.

Everyone's method for implementing a speed table may be different. But as a starting point here is some general guide lines.

  1. Choose an engine that has the performance you want. Look at low and high end speeds, how it accelerates, etc. As an alternative, manually change the speed table of an engine until you reach the desired performance.
  2. Use the speedometer to capture and document the speed at each speed step. You can not just copy the CV value from one engine to another. This is because the voltage one engine requires to achieve the required speed is not necessarily the same as another engine. This is why we're creating the speed table using the speedometer in the first place.

    Now is the time to match the other engine. This is where programming on the mainline is the only way to go. At each speed step document the speed of the engine.

  3. Adjust the CV value at that speed step.
  4. Retest the speed. Keep adjusting the CV value until the desired speed is achieved.
  5. Move on to the next speed step. Repeat steps 5 through 7 until the desired speed achieved.
  6. Go through each speed step.

    The engine should now perform as the template engine.

Back to the Speedometer main Help page.