Updated 16 April 2020
I originally used a third party commercial DCC system, however Mark Riley developed DCC firmware for the LEGO RCX brick called LEGO Digital Command Control, or LDCC. Additionally Mark made a beta version of LDCC and LACC available which allows the use of Boosters and Accessory Decoders (among other enhancements). I have since switched over to using the beta LDCC and LACC exclusively (ldcc.zip). Since Mark's website is no longer active, Jeremy Seibel has collected all the information an provided it on his website (House Of Seibz). This allows a more "pure" LEGO solution, as only the LEGO train motor needs to be modified (nothing non-LEGO or modified is visible). Therefore, the explanations that follow assume an understanding of LDCC and LACC (see above link) with one or more LEGO RCXs. However, when discussing specific points relevant to the differences between LDCC/LACC and commercial systems, I have attempted to highlight them below.
Table of Contents:
What is DCC
Disadvantages and Advantages of DCC with LEGO Trains
Disadvantages and Advantages of LDCC versus commercial systems
Equipment required for DCC
Operation (Lessons Learned)
What is DCC
Digital Command Control (DCC) is a system where power and communication signals are transmitted through the track to decoders installed in locomotives (or any device connected to the track). The decoders translate these signals into speed, direction, and on/off commands (e.g., headlights). DCC can also be used to control accessories, such as sound effects and switch-machines.
Disadvantages and Advantages of DCC with LEGO Trains
- Modification of LEGO train motor.
- Labor skill and time to install.
- Cost of Command Station/RCX(s).
- Cost of decoder in every LEGO train motor (except one locomotive - LDCC requires all motors to have a decoder).
- LEGO train motors buzz at very slow speeds (because of pulse control).
- Since commercial DCC systems supply 12V (or more) to the track continuously, standard LEGO 9V lighting is not recommended (LDCC eliminates this concern)
- Voltage output to motor can drop as load increases, causing trains to slow down around curves or on hills. However back EMF or load compensating decoders will help. A larger current decoder installed outside the LEGO train motor will also help.
- Can run multiple trains on the same track at the same time (any speed and direction).
- Controllable constantly lighted headlights.
- Accessory controls (e.g., search lights and switch-machines).
- Since LEGO train layouts tend to be reconfigured frequently and since LEGO train track does not lend itself to a block control system, which requires sections of track to be electrically isolated from each other, DCC provides a method to run multiple trains.
Disadvantages and Advantages of LDCC versus commercial systems
- Low current output of RCX (with large layouts or several trains, can necessitate Boosters and gapping - more complicated set up).
- Limited throttle options and functions (e.g., no 4 digit addressing).
- No analog (non-modified) loco support.
- No separate programming track capability (i.e., all running must be stopped when programming decoders).
- Boosters are not exactly in phase, requiring special gapping of track.
- Other than the decoder (which is entirely hidden), everything can be "pure" LEGO.
- RCX Remote Control can be used as a wireless throttle.
- Operates at LEGO standard 9V (no headlight circuit or speed curve modifications necessary).
Equipment required for DCC
DCC systems employ a few components such as:
- Command Station (the "black box" that transmits the signals to the decoders).
- Power Supplies for the Command Station and any Boosters (a low voltage power supply is required by most commercially available DCC systems).
- Throttles (the devices used to control locomotive speed and direction, and other accessories).
- Decoders (or Mobile Decoders, the devices installed in each locomotive).
- Boosters (the source of power for the trains, typically one is built into the Command Station, others may be added for large layouts with many trains)
- Accessory Decoders (or Stationary Decoders, the devices installed around a layout used to control switch machines, crossing gates, etc.)
One RCX with the LDCC firmware loaded serves as a Command Station and Booster. It is possible to run LDCC with just the batteries in the RCX, however using a Wall Wart transmormer is highly recommended since otherwise all the trains running will be powered off one set of batteries. The 1.0 version of the RCX includes a jack for the standard LEGO wall Wart, whereas the 2.0 version does not. Commercial DCC Command Stations allow many more trains and more sophisticated controllers (e.g., radio control).
The standard LEGO RCX Remote Control acts a throttle for nine locomotives. Other throttles can be constructed with the LEGO Rotation Sensor or commercial parts as described by Mark Riley and Jeremy Seibel on his website (linked above).
I started converting LEGO train motors for DCC in 1999, and I chose the Digitrax (www.digitrax.com) DN140 and DN142, N-scale decoders. I chose these decoders because they fit nicely into the LEGO train motor without any modifications, and they support functions such as Maximum Voltage and the Loadable Speed Table which allows you to set 28 throttle increments to a percentage of full throttle. This allows you to define a "speed curve", and it allows you to limit the voltage to the motor. HO and N scale DCC systems deliver about 12VDC to the motor at full throttle (G guage even more). LDCC delivers about 9VDC.
Boosters are "black boxes" that interpret and transmit the signals sent by the Command Station as well as providing additional current to the track. This is accomplished by dividing a layout into power districts (i.e., each power district is an electrically isolated section of track). This can be accomplished by disconnecting the LEGO track segments and leaving them about one stud apart or my preferred method is to reconnect the track segments with small pieces of paper in between the contacts and then covering each with a piece of 46mm clear tape (see steps below and leasons learned).
Another RCX with the LACC firmware installed acts as a Booster with the standard LEGO wall wart transmormer as the power supply. The output of the Command Station RCX (or track) is connected to Input 1 of the Booster RCX via the Acknowledgement Circuit (see the above House of Seibz link). An alernative to using the resistors of the Acknowledgement Circuit, is to use two LEGO light bricks connected simultaneously to Input 1 of the Booster RCX as shown in the above picture. This effectively uses the lamps as resistors. Then use the outputs (in parallel, like the Command Station) of the Booster RCX to power a separate district which affords more overall amperage to run more trains.
Accessory Decoders are additional "black boxes" that interpret and transmit accessory commands sent by the Command Station as well as providing separate power to those accessories. Another RCX with the LACC firmware installed acts as an Accessory Decoder (Accessory RCX) with the standard LEGO wall wart transmormer as the power supply. Similar to using a Booster, the Accessory RCX is utilized by connecting the output of the Command Station RCX (or track) to the Input 1 of the Accessory RCX via the Acknowledgement Circuit or two LEGO light bricks (see Boosters above). Then the outputs of the Accessory RCX can be used to drive motors, lights, etc. I have found that the Accessory RCX can be reliably powered with only batteries since the outputs typically are only used intermittently.
First I had to overcome the horror of cutting the tabs off the train motor as I am typically a purist. After that, I used an X-acto knife, wire strippers, soldering iron, solder, flux, and the steps below to install the decoders:
- Using a sharp X-acto knife, carefully slice all eight tabs flush with the bottom of the train motor.
Now pull the bottom off from the main unit. Rocking the axles helps break it loose.
- Remove the wheelsets, the motor, the metal wipers, and the small conductive disk.
Nothing but the LEGO cable metal connector and the intermediary gears are still attached.
- Remove the two metal plates and diode which are attached to the motor.
These can be removed as one unit by using a knife blade to carefully pry the
metal plates off the motor connectors. This will isolate the motor from the electrical pickup wipers. Now everything is
separated and ready for DCC implementation.
- Cut the green and violet accessory wires of
the decoder to about 1/4 inch to get them out
of the way, unless you will be using them for some accessory.
- Cut the red and black wires (track pickup) of the decoder to about 1 1/2
inches long and the orange and gray wires (motor drive) to about 1 3/4 inches
long. Also cut the headlight wires, blue, white, and yellow, to about 1 3/4
inches long. Then cut a 1 inch piece of white wire from the leftover scrape.
This will be used for the headlight. Strip and tin
all the wires, except the green and violet ones.
- Wipe the lubricant from the wiping surface of the metal wipers for better conductivity
(hobby shops sell a conductive lubricant that could be used instead).
- Assuming the LEGO cable connector is on the FRONT of the LEGO train motor,
solder the red wire to what will be the LEFT hand metal wiper and the black wire
to what will be the RIGHT hand metal wiper.
- Carefully so as not to melt the plastic, tin and solder the 1 inch white
wire (from Step 5) to the inside of one of the LEGO cable connector plates.
- Bend the lower motor connector to the side so it will not accidentally
touch the metal wiper when installed. Then solder the orange wire to the lower
motor connector and gray wire to the upper motor connector.
- To get the headlight to stay on in both forward and reverse, solder the
white and yellow wires together and then solder them to a 75 - 82 Ohm 1/4 Watt
resistor. When using a commercial DCC system this drops the voltage of the headlight circuit down to about 9V for use with LEGO 9V lamps. Then solder the other end of the resistor to the 1 inch piece of white wire (from Step 8). If LDCC is the only DCC system to be used, the resistor can be omitted.
- Now the only wire left is the blue headlight common. Tin the remaining
LEGO cable connector plate and solder the blue wire to it.
- (OPTIONAL) There is a noise reducing circuit to help keep the motor quiet
at slow speeds. This circuit is not required for DCC to work, and therefore is
optional. The circuit evolved from a discussion within the National Model
Railroad Association (NMRA) (www.nmra.org)
DCC Special Interest Group (SIG).
I used five 22 micro Farad capacitors. I did this because single 100 micro Farad
capacitor will not fit inside the LEGO train motor and the five individual
capacitors will. I followed the following steps to install this circuit.
a. Cut two 2 3/4 inch pieces of wire from the leftover scrap, one orange and one gray, since they will be connected to the motor. Strip and tin these wires.
b. Solder the 2.2 Ohm 1/2 Watt resistor to the lower motor connector and the orange wire to the other end of the resistor.
c. Solder the gray wire to the upper motor connector.
d. Solder the five capacitors in parallel. It is very important to solder the capacitors very neatly and to keep the leads as flat and narrow as possible in order to allow the capacitor array to fit inside the LEGO train motor.
e. Solder the gray wire to one lead and the orange wire to the other lead of the capacitor array.
- Everything is now soldered in place and ready to be installed. Isolate
the metal wipers from the inside of the LEGO cable connector with tape or a
small piece of cardstock. You could cut off the tabs, but I chose not to, so as
to minimize "damage" to the original LEGO train motor.
- Again, assuming the LEGO cable connector is on the FRONT of the motor,
insert the metal wiper with the red wire attached, into the LEFT side of the
motor housing. Then insert the metal wiper with the black wire into the RIGHT
side of the motor housing. It really does not matter which wire goes to which
side, I just do this for consistency.
- Replace the two wheelsets.
- Place the motor into the housing.
- Place the decoder on edge and insert it into the FRONT of the LEGO train
motor housing. Carefully tuck the headlight (blue,
white, and yellow) wires between the decoder and the outer edge of the LEGO
train motor housing, with the resistor on top.
- (OPTIONAL) Place the capacitors in a similar manner in the other end of
the LEGO train motor housing. I placed a small piece
of card stock between the metal wiper tabs and the capacitor array so the
capacitors could not accidentally cause a short circuit between the two
metal wiper tabs.
- Reattach the bottom plate onto the housing being careful to route the
wires so they not to get pinched. I have not done anything to "hold"
the bottom plate on yet. I have run these modified motors for hours without any
problems, therefore I probably will not do anything until a problem presents
- The modified LEGO train motor is now ready to be programmed.
I originally used a commercial programming product, Digitrax PR-1 computer programmer.
This device plugs into a standard RS-232 serial port and comes with software to program decoders.
However, it is quite simple to program the decoder with LDCC. Several Configuration Variables (CVs) can be programmed within each decoder (reverse direction, min and max speed, headlight function, etc.), but since decoders come pre-programmed with a basic configuration that works with LDCC, all that is necessary is to program each locomotive with a unique address, CV 1. I typically use addresses 1, 2, and 3 since these are the most accessible addresses to control via the LEGO Remote Control.
Since any and all locomotive on the layout will be receive the programming information, make sure only the desired locomotive is on the track when programming or set aside an isolated section of track for programming and disconnect (or switch) track power from the layout to this programming track, and then reconnect (or switch back) track power when finished.
An alternative method would be to use a separate RCX with LDCC loaded as a dedicated programmer with a dedicated isolated section of track. However, take special care when using the Remote Control so only the programming RCX receives the signals, otherwise both RCXs will receive and react to the signals causing possible undesired effects. Additionally, this could be a good use for an RCX 2.0 (battery only version), since the programming RCX will not be used to power trains.
Once you have only the desired DCC motor (If you have a locomotive with two DCC motors, both can be programmed together to ensure that all the same settings are sent to both motors) on the track to be programmed, follow the steps at on Jeremy's website (linked above) or below to set the address:
- Press the "View" button repeatedly until "PHYS" is display.
- Confirm CV 1 is selected (default). The "A" arrow keys change the hundreds digit; the "B" arrow keys change the tens digit; and the "C" arrow keys change the ones digit.
- Press the "Prgm" or "P3" buttons to continue.
- Enter the Address value (1-127).
- Press the "P3" button to write the Address to the decoder.
- Press the "Run" for "Stop" buttons repeatedly to exit programming mode.
The following chart lists all the equipment I used to implement LDCC:
|Quantity||Item||Picture||Manufacturer||Possible Source||Source Part No.||Unit Price|
|1 for Command Station
(Optional: 1 additional for each Booster or Accessory Decoder)
|1 for each RCX 1.0||Wall Transformer||LEGO||Bricklink||70931||~$18|
|1 or more||Remote Control||LEGO||Bricklink||9738||~$12|
|1 per Booster or Accessory Decoder (optional)||LEGO cable||LEGO||Bricklink||Wire with Brick||~$5|
|1 pair per Booster or Accessory Decoder (optional)||LEGO Lamp Brick, 2x||LEGO||Bricklink||Light Brick||~$2|
|1 (Optional: 1 additional for each Booster)||LEGO track connector||LEGO||Bricklink||10078||~$19|
|1 (although at least two are required to take advantage of LDCC)||LEGO train motor||LEGO||Bricklink||10153||~$47|
|1 for each motor||Decoder DZ123 or similar||Digitrax||Digitrax||DZ123||$19.99|
|1 for each motor with headlight (optional if using LDCC)||Resistor, 1/4 W, 78.7 Ω||Any||Digi-Key||$0.10|
|1 for each motor (optional for noise suppression circuit)||Resistor, 1/2 W, 2.2 Ω||Any||Digi-Key||$0.13|
|5 for each motor (optional for noise suppression circuit)||Capacitor, 22 mF, 25 V, bi-polar||Any||Digi-Key||$0.29|
Operation (Lessons Learned)Trains
- Use two power trucks: For heavy locos and trains, powering two trucks with DCC equipped LEGO train motors helps dramatically.
- Use only one bank of throttles: Since the RCX Remote Control commands throttle Locos 1 - 3 and Addresses 1 - 3 by default, it is recommended to use these addresses for trains, especially if more than one operator is using a Remote Control. Other banks (4 - 6 and 7 - 9) can be controlled, but if more than one bank is being used, each operator must always switch to the correct bank before controlling the correct train. If it is not desired to reprogram locomotives to keep them in the same bank, it is possible to program the RCX Command Station to control any address (1 - 127) on any throttle Loco number (i.e., 1 - 9), which in effect will allow three trains of any addresses to be controlled by one bank of throttle loco numbers.
- Rotation Sensor Throttle offers faster control: The Rotation Sensor Throttle for LDCC provides a quicker, more direct response than the RCX Remote Control, but must be teathered to the Command Station RCX (along it can be disconnected and reconnected, somewhere else, while the train continues to run). It can also be used in conjection with the RCX Remote Control.
- Multiple Remotes can be good and bad: Multiple RCX Remote Controls can be used, but this allows other operators to inadvertantly control trains they are not running (but also to stop all trains if necessary).
- Locate the Command Station RCX with good line-of-site: Only the Command Station RCX receives commands (i.e., the Booster and Accessory RCXs do not), therefore it should be located where all operators can "see" it.
- Use Boosters: For small layouts (1-3 train motors and short track length), one LDCC RCX is adequate. For larger layouts, using Boosters is strongly recommended.
- Use multiple track feeds: Due to the resistance created by each LEGO track connection, power droop and signal loss can result, therefore for long sections of track powered by one RCX, running multiple connections directly from the RCX to the track is recommended.
- Distribute light bricks evenly: As the pure LEGO solution of connecting Boosters to the Command Station (or another Booster) requires the Command Station (or other Booster) to illuminate two LEGO light bricks, which draws a remarkable amount of current, this load should be distributed evenly (e.g., one RCX should not be powering 12 LEGO light bricks which are required to control 3 Boosters and 3 Accessory RCXs - the light bricks should be spread out among the Booster RCXs).
- Keep switches Normal for mainlines: The inherent "dead" spots that LEGO train motors encounter when running through LEGO track switches can cause DCC equipment trains to hesitate. When reliable running is desired, keep switches on the mainlines in the normal (straight, not divergent) route.
- Gap power districts 46mm: Since it is not recommended to electrically connect two RCXs together and since LEGO train motors have a wheel base around 45mm, it is recommended to gap separate power districts with 46mm of electrically isolated track. I prefer the non-destructive method of placing a small piece of paper between the contacts of two pieces of track, connecting them, and then placing a 46mm pieces of clear tape over the rails.
Thanks to Mark Riley and Jeremy Seibel, DCC operation for LEGO trains is quite affordable, assuming you already own an RCX and Remote Control (decoders can be purchased for around $20) and does not require learning how to operate a commercial DCC system (i.e., it is a simple to use system with plenty of features). For those who have not experimented with DCC and LEGO trains, I highly recommend taking the plunge with LDCC - after all, if you are not satisfied, all you have lost is the cost of a decoder.
I hope this information was useful to you. Please feel free to contact me with any questions or comments at firstname.lastname@example.org.