Constructing a speed table

Deutsche Version  [FREMO Contents]  [FREMO Digital]  [FREMO DCC]  [DCC-Decoder-Practice

With Lenz also using 28 CVs (configuration variable) for the table and using internally 256 values, I adapted my recipe for a speed table to this situation. Besides it is also more generally applicable thereby. The old recipe for the older Lenz decoders is still available, but only in German. Sorry.


What is a speed table actually for? It permits a nearly arbitrary allocation from speeds to appropriate throttle settings. Thus one can assign e.g. the lower speed range more speed steps, to allow precise switching. In addition the starting voltage can be set that slow creeping is possible and avoid any lost speed steps in the slow speed range. Further applications are the adjustment of the maximum speed and the driving characteristics of several locomotives, in order to allow consisting without problems.

However this changed allocation of throttle setting and speed may not be mixed up with the starting and brake delay. These permit also a gentle starting and braking, however it works only dynamically. The speed cannot be set more sensitively, than with the factory setting of the decoder. Also no adjustment of starting voltage and maximum speed is possible.

The simplest form of a table is the use of the three CVs 2, 6 and 5 for starting voltage, speed with 59% throttle setting and maximum speed. But first the transition between the two sections may be very abrupt, and second the CVs 5 and 6 is not supported by all decoders. E.g. Lenz supports CV 5 only with load compensated decoders and CV 6 is never supported.

A clearly more exact table can be set up in the CVs from 67 to 94 and be activated by setting bit 4 in CV29. Setting bit 4 corresponds to an increase of the value by 16. With this table the values are specified for 28 speed steps. In the 28 speed step mode there is one value for each speed step. In the 128 speed step mode the decoders produce additional values by interpolation. Older decoders e.g. the DZ120 from Digitrax support the table however only in the 28 speed step mode. If the table is activated in CV29, the CVs 2, 6 and 5 have no more any effect. At least as it should be.

You may ask what a table is needed for in 128 speed step mode, as anyway (nearly) each internally possible speed step may be reached. However the table permits to distribute the usable and/or useful speed range optimally over the throttle steps.

The table produced here serves the adjustment of starting tension maximum speed and above all an increased throttle range for switching. Therefore three times as much throttle steps are assigned to a change of speed within the lowest range, as the same change within the highest range. Naturally one can set up this characteristic depending upon personal desires to higher or lower values, but a relationship of three turned out to be a good compromise between switching and main line service.

It is assumed that the CVs 67 to 94 may take the values from 0 to 255 and that also all 28 CV are used. This is the case with newer decoders, however this should be checked with the decoder manual.

Determine the limiting values

As the first the starting voltage must be determined. Even if the register is not used on use with the table, it is easiest to use CV 2 for this task. First of all the neighbouring values also change automatically and secondly results in a (for the main line service) useful starting behaviour even with switched off speed table.

With the following tests it should be noted that e.g. with a Digitrax Chief system the engine gets only voltage starting at step 4 (counting from 0) = 12% (displayed at the DT100): With 14 speed steps the internal steps 0 and 1 are 'stop' and 'emergency stop'. With 28 speed steps these two positions are doubled, resulting in the steps 'stop', 'stop', 'emergency stop', 'emergency stop', step 1, step 2 ... step 28. This applies however only to the 28 drive position mode. In addition for example the Intellibox indicates the first drive position with '1 '.

If the engine just hums at the first real speed step, the starting voltage is too low, with an immediate start it is too high. One approaches the correct setting for the desired crawling by changing the value by 4, 2 and at last by 1.

For the determination of the maximum speed one may use CV 5, if supported by the decoder. Otherwise one puts a value in CV94 and varies this. If the values in the other CVs of the table are very different, it may be worthwhile to increase the starting and brake delay for these tests in order to take care of the drive train.

Construct the table

Assuming the start voltage tests resulted in the default value of and the maximum speed shall be reduced to approx. 2/3. The value for the highest speed step results in 255 (maximum value) * 2/3 = 170.

These values results for the 27 increments between the 28 speed steps in an average interval of (170 - 8) / 27 = 6. Using this value would result in a straight line.

To achieve the previously noted factor of three between slow and full speed range we start with half of the interval (3) and let the interval grow to 1.5 of the average value (9). (0.5 * 3 = 1,5)

This results in 7 different increments (3, 4, ... 9). 27 / 7 = 3,857. Therefore the increment must be increased at about every 4 speed steps by one.

The table is prepared with columns for speed step number, CVs 67 to 94, increment (inc) and value. At CV 67 there is no increment and the value is the determined starting voltage. Starting from CV 68 the increment column is filled with four times an increment of 3, then 4 times 4 etc.. Now the values are calculated by adding the increments.

 speed step   CV   1. Inc   1. Value   2. Value   2. Inc   prog. Value 
1 67 - 8     8
2 68 3 11     11
3 69 3 14     14
4 70 3 17     17
5 71 3 20     20
6 72 4 24     24
7 73 4 28     28
8 74 4 32     32
9 75 4 36     36
10 76 5 41     41
11 77 5 46     46
12 78 5 51     51
13 79 5 56     56
14 80 6 62     62
15 81 6 68     68
16 82 6 74     74
17 83 6 80     80
18 84 7 87     87
19 85 7 94 96 ? 94
20 86 7 101 102 6 101
21 87 7 108 109 7 108
22 88 8 116 116 7 116
23 89 8 124 124 8 124
24 90 8 8 132
132   132
25 91 8 140 141 9 141
26 92 9 149 150 9 150
27 93 9 158 160 10 160
28 94 9 167 170 10 170

It is hardly to be expected that the desired final value is reached exactly at the end of the table. Normally already the above calculations result in non integer values which must be rounded. In this example it was only the number how often the increment had to be advanced. Therefore some adaptation is needed at the end. In the example the final value would have become too low. Therefore I began from the end with an increment of 10. Where the curves cut each other (see framed fields), the transition between the curves will be.

Reducing the increment every two steps was a rough estimation. If the first try does not succeed, i.e. the curves do not cut each other or at too different increment values another try is needed. Some try and error is always needed. But do not try to be too exact, as small deviations in the upper speed range are not noticed anyway.

With non lad compensated decoders there is sometimes an apparent jump in the speed characteristic at the speed, where the engine begins popper running. You may modify the table to reduce this effect. But in normal service this point is strongly load-sensitive, so that any modification will increase the effect. I therefore recommend not to do such adjustments.

Now we have a table to be programmed and afterwards there is more driving and switching fun.

Curve: speed versus speed step (8K)

Valid HTML 4.0!