Silicon ChipDCC Accessory Decoders - July 2026 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: Looming smartphone obscolescence
  4. Feature: Soft Robots by Dr David Maddison, VK3DSM
  5. Subscriptions
  6. Project: Adjustable Ultrasonic Cleaner by John Clarke
  7. Review: T50 Robot Mop & Vacuum by Nicholas Vinen
  8. Project: Phenomenal Pinball Machine, Part 2 by Phil Prosser
  9. Feature: Making Simple Enclosures by Andrew Woodfield
  10. PartShop
  11. Project: DCC Accessory Decoders by Tim Blythman
  12. Project: I2C Controller by Tim Blythman
  13. Review: Altium Designer 2026 by Tim Blythman
  14. Serviceman's Log: Batteries, monitors, lights and audio by Bruce Pierson
  15. Vintage Radio: National R-72 “Toot-a-Loop” by Ian Batty
  16. Market Centre
  17. Advertising Index
  18. Outer Back Cover

This is only a preview of the July 2026 issue of Silicon Chip.

You can view 37 of the 104 pages in the full issue, including the advertisments.

For full access, purchase the issue for $10.00 or subscribe for access to the latest issues.

Items relevant to "Adjustable Ultrasonic Cleaner":
  • Adjustable Ultrasonic Cleaner main PCB [04105261] (AUD $7.50)
  • Adjustable Ultrasonic Cleaner control panel PCB [04105262] (AUD $5.00)
  • PIC16F1459-I/P programmed for the Adjustable Ultrasonic Cleaner (0410526A.HEX) (Programmed Microcontroller, AUD $10.00)
  • Adjustable Ultrasonic Cleaner PCB patterns (PDF download) [04105261-2] (Free)
  • Adjustable Ultrasonic Cleaner panel artwork and drilling diagrams (Free)
  • Adjustable Ultrasonic Cleaner firmware (Software, Free)
Items relevant to "Phenomenal Pinball Machine, Part 2":
  • Pinball Machine Control PCB [08107261] (AUD $25.00)
  • Pinball Machine Power Supply PCB [08107262] (AUD $7.50)
  • Pinball Machine Player LED PCB [08107263] (AUD $2.50)
  • Pinball Machine Score LED PCB [08107264] (AUD $5.00)
  • Pinball Machine LED Output PCB [08107265] (AUD $2.50)
  • Pinball Machine Bumper LED PCB [08107266] (AUD $5.00)
  • Pinball Machine Cascade LED PCB [08107267] (AUD $5.00)
  • Pinball Machine Switch Input PCB [08107268] (AUD $2.50)
  • Pinball Machine General Input PCB [08107269] (AUD $2.50)
  • Pinball Machine High Current Interface PCB [08107260] (AUD $2.50)
  • Pinball Machine Rollover Interface PCB [08117261] (AUD $2.50)
  • Pinball Machine Bumper Driver PCB [08117262] (AUD $5.00)
  • 5m of 10-way ribbon cable (Component, AUD $10.00)
  • Pinball Machine Control Board short-form kit (Component, AUD $150.00)
  • Pinball Machine Power Supply short-form kit (Component, AUD $50.00)
  • Pinball Machine cable and connector set (Component, AUD $65.00)
  • Software and 3D printing files for Phil Prosser's Pinball Machine (Free)
  • Phil's Phenomenal Pinball Machine PCB patterns (PDF download) [08107260-9, 08117261-2] (Free)
Articles in this series:
  • Phenomenal Pinball Machine, Part 1 (June 2026)
  • Phenomenal Pinball Machine, Part 2 (July 2026)
Items relevant to "DCC Accessory Decoders":
  • Snap Accessory Decoder PCB [09111254] (AUD $3.00)
  • Servo Accessory Decoder PCB [09111255] (AUD $3.00)
  • PIC16F18146-I/SO programmed for the Snap Accessory Decoder [0911125P.HEX] (Programmed Microcontroller, AUD $10.00)
  • PIC16F18146-I/SO programmed for the Servo Accessory Decoder [0911125V.HEX] (Programmed Microcontroller, AUD $10.00)
  • Snap-type Accessory Decoder kit (Component, AUD $40.00)
  • Servo-type Accessory Decoder kit (Component, AUD $40.00)
  • DCC Accessory Decoder software (Free)
  • DCC Accessory Decoder PCB patterns (PDF download) [09111254-5] (Free)
Articles in this series:
  • DCC Decoder (December 2025)
  • How to use DCC (January 2026)
  • DCC Base Station (January 2026)
  • DCC Remote Controller (February 2026)
  • DCC Booster (March 2026)
  • DCC/DC Stepper Motor Driver (April 2026)
  • μDCC Decoder (May 2026)
  • DCC Accessory Decoders (July 2026)
  • I2C Controller (July 2026)
Items relevant to "I2C Controller":
  • I2C Controller PCB [09111256] (AUD $3.00)
  • 1.3-inch blue OLED with 4-pin I²C interface (Component, AUD $15.00)
  • 1.3-inch white OLED with 4-pin I²C interface (Component, AUD $15.00)
  • I2C Controller kit (Component, AUD $30.00)
  • I2C Controller PCB pattern (PDF download) [09111256] (Free)
Articles in this series:
  • DCC Decoder (December 2025)
  • How to use DCC (January 2026)
  • DCC Base Station (January 2026)
  • DCC Remote Controller (February 2026)
  • DCC Booster (March 2026)
  • DCC/DC Stepper Motor Driver (April 2026)
  • μDCC Decoder (May 2026)
  • DCC Accessory Decoders (July 2026)
  • I2C Controller (July 2026)

Purchase a printed copy of this issue for $14.00.

By Tim Blythman μDCC Decoder Accessory Decoder I2C Controller DCC Accessory Decoders Destination Display Our previous DCC (Digital Command Control) projects can control multiple trains in a model railway, but what about fixed devices such as points (turnouts or switches) and signals? You need Image source: https://unsplash.com/photos/ an accessory decoder; we describe two suitable circuits. a-model-train-set-with-a-red-caboose-iP9kBOECD2U W e have previously published points motor controllers and signal controllers, including a design that interfaces with servo motors – see Circuit Notebook, December 2020 (siliconchip.au/Article/14682). Les Kerr’s past designs include a semaphore signal operated by a servo motor from April 2022 (siliconchip. au/Article/15273) and a points motor controller for snap-type motors in the February 2024 issue (siliconchip.au/ Article/16132). A DCC decoder that can interface with points motors and servo motors allows these devices to be integrated into a DCC system. Let’s have a quick look at the types of accessory devices that might be found on a model railway and how our Accessory Decoders can work with them. We’ll assume you have some experience with model railways. Points motors The most common points motors fall into two main categories. The first is a solenoid or snap-type motor, where the mechanism is actuated by one or more coils. Peco-brand motors, as used by Les, are common and have two coils: a pulse on one coil sets the points for the straight, while a pulse on the other sets the points for the curved track. Other designs have one coil and depend on reversing its drive polarity to change the points. It is possible to convert between different arrangements with cleverly connected diodes. The snap-type motors may come with two, three or four wiring connections. DCC PROJECT KITS Snap-type Accessory Decoder (SC7685, $40) includes the PCB and all onboard parts, including the electrolytic capacitor Servo-type Accessory Decoder (SC7686, $40) includes the PCB and all required onboard parts I2C Controller (SC7690, $30) includes the PCB and all other parts 70 Silicon Chip Australia's electronics magazine Another type is known as a slow-­ motion or stall motor. These are simply brushed DC motors driving a gearbox to slowly move a linkage, and are thus more like their full-size counterparts. As the name suggests, the motors simply stall at their endpoints if they are continuously driven. Better units are designed to handle continuous stalling and may have extra dry switch contacts to provide feedback or control other devices, such as signals. As you might expect, the current requirements for these motors are quite different, with stall motors needing perhaps tens of milliamperes, while the snap-type motors might draw a few amps for a fraction of a second. Our Snap-type Accessory Decoder will work with both of these motor types. Each output consists of a DRV8231 full-bridge motor driver IC, like we used in the DCC Locomotive Decoder earlier in this series. Driving the DC motors in a slow-motion point motor or the coils of a snap-type motor is trivial with this chip. The DRV8231 can be operated as two open-drain outputs, so we also provide a connector to the supply voltage, which becomes the common siliconchip.com.au Fig.1: the Snap-type Decoder uses a simple linear regulator to power its low-voltage circuitry. The 4700μF capacitor provides a reservoir for bursts of current to drive solenoidbased motors. connection when used with three-wire motors. Two-wire point motors simply use the two motor outputs. Signal lights We have also provided a mode that configures the Decoder as four opendrain outputs (with independent controls), so it could be used to operate simple on-off devices like signals or layout lighting. A basic application could wire a red and green bi-colour LED (with an appropriate series resistor) across the motor output to show a different colour depending on the polarity of the output. Independent LEDs (wired with a common anode) or lamps could also use the open-drain outputs. Servo motors Servo motors simply require power and a digital pulse signal. They will move to a position determined by the pulse width. Les’ project shows how a servo motor can be used to operate a semaphore signal arm. It could also be applied to things like level-­crossing boom gates. Commercial suppliers such as Peco are now selling servo motors and brackets that allow their points to be siliconchip.com.au driven by a servo motor. Our Servo-­ type Accessory Decoder simply has four servo motor outputs that are suitable for small hobby servos. It can set each output to be one of two adjustable pulse widths to toggle between two different positions. Circuit details Our original plan combined features of both Decoders into a single circuit, but we figured it would be simpler to create two distinct variants. Thus, there are two boards with much in common; we will start by explaining the common features. Fig.1 shows the circuit for the Snap-type Decoder, while Fig.2 is the Servo-­type Decoder. CON5 is the input for the DCC track voltage, while diodes D1-D4 form a bridge rectifier to create a DC rail, which we’ve labelled as a nominal Features & Specifications 🛤 Separate DC input to allow higher voltage for motor operation (up to 24V) 🛤 Pushbuttons to allow use without DCC 🛤 Headers to allow remote mounting of pushbutton controls 🛤 Programmable running time set by DCC CVs 🛤 Can interface with the I2C Controller (described in this issue) 🛤 Simple address programming Snap-type Accessory Decoder Two bipolar high-current outputs suitable for driving snap-type and slow-motion point motors Can be configured with four open-drain outputs instead Servo-type Accessory Decoder Four servo outputs 5.3V 1A switchmode power supply for servos from DCC input Two independent programmable servo positions per output, set by DCC CVs 🛤 🛤 🛤 🛤 🛤 Australia's electronics magazine July 2026  71 12V here (it could be lower or, more likely, higher). CON6 leads to a single diode D5 that can be used to connect a different source of DC power; effectively, it is diode-ORed with the supply from CON5. Our locomotive decoders can work up to about 17V, but both Accessory Decoders can operate with inputs up to at least 24V. 12V is a common voltage for HO and N scale operation, so the CON6 input allows a higher voltage for accessories operation without having to run the booster at a different voltage. Many snap-type point motors suggest a 16V minimum operating voltage. IC1 is a 20-pin 8-bit microcontroller in both cases, with a nominal 5V supply bypassed at its pins 1 and 20. These, along with pins 4, 18 & 19, connect to the ICSP (in-circuit serial programming) header, CON8. The 10kW resistor pulls up pin 4 for normal operation. CON7 is the connection for the I2C Controller that can be used to easily program the Accessory Decoders. The two 10kW resistors are pullups for the I2C bus that the I2C Controller uses. The 3.3V pullup is from an I/O pin on IC1; this pin can be directed to an internal DAC that can source or sink up to 20mA at an internally set voltage, so it is an easy way to get a suitable voltage at adequate current without needing external components. The two LEDs are provided with a series resistor, with LED2 driven by one of IC1’s digital output pins. LED1 is driven from a different power rail on each Decoder; from the motor supply on the Snap-type Decoder and from the 5V rail on the Servo-type Decoder. The 5V rail here is derived from the 5.3V rail used to power the servo motors. Thus, they show the health of the respective power supplies. The other common items in both circuits are the pushbutton switches (S1-S4 or S1-S2) and jumper shunt (JP2 or JP3). These are simply connected to digital input pins on IC1. The pins are configured with internal pull-up currents to allow detection of the switch or jumper state. The respective CON9s simply break out the switch connections so that the switches can be remote if preferred. These inputs are used in different ways for manually controlling the Accessory Decoder or programming its CVs (configuration variables) to customise its operation. Snap-type Decoder specifics In this Decoder, the 5V power rail for IC1 is provided from a simple 78L05 linear regulator (REG1), with 100μF capacitors on its input and output. The current requirements for the 5V rail are expected to be no more than 20mA, even with the I2C Controller connected, so this widely available part will be fine. IC2 and IC3 are the motor driver ICs described earlier. Their supply (Vmotor) is bypassed by a 4700μF capacitor that is charged from the 12V rail via a 1W 100W resistor. The large capacitor allows brief bursts of high current to be provided to the motor drivers, while Fig.2: the Servo-type Decoder has a switchmode supply to provide ample current to power servo motors. The low-voltage circuitry (such as the microcontroller) is powered via a diode from this supply. 72 Silicon Chip Australia's electronics magazine siliconchip.com.au the resistor limits the rate at which the capacitor charges between uses; the charge time is around one second. Since LED2 is connected across this capacitor, it will show point motor activity by dimming briefly. Two 10kW/1kW dividers with 100nF smoothing capacitors monitor the voltage upstream and downstream of the resistor. Thus IC1 can detect when the 4700μF capacitor is fully charged. IC2 and IC3 each have a 1μF local bypass capacitor and have 3.3V supplied to their Vref pins by the DAC output noted earlier. The 0.1W shunt resistors on the Isen pins set the current limit for IC2 and IC3 to 3.3A, just below their 3.7A maximum. The pairs of IN1 and IN2 pins are driven by IC1 to control IC2’s and IC3’s outputs, which connect to CON1 and CON2, respectively. For cases such as slow-motion point motors where lower loads are driven and the burst capability is not needed, the 100W resistor could be replaced by a link and the 4700μF capacitor reduced in value to, say, 100μF. Servo-type Decoder specifics With most hobby-type servo motors operating at around 6V and typically drawing a few hundred milliamperes, we need something more capable than a 78L05 to provide the low-voltage rail on this variant. REG1 is an MCP16311 switching regulator that’s used instead. It is configured for an output of 5.3V and the circuit here is much the same as that used on the DCC Base Station. The Servo-type Decoder (the board shown directly to the right) could be used for other applications such as level crossing booms and semaphore signal arms. siliconchip.com.au Table 1: Accessory Decoder CVs CV number Purpose Default Notes 1 (513) Low address byte 1, 2, 3, 4 All values (0-255) are valid. 3 (515) Output duration 25 In steps of 10ms; the default gives 0.25s and the maximum value of 255 gives 2.55s. A value of 0 gives an unlimited duration. 9 (521) High address byte 0 Only three bits are valid (ie, values 0-7). 33 (545) Servo time thrown 100 Servo pulse length in steps of 10μs (100 = 1ms). 34 (546) Servo time closed 200 Servo pulse length in steps of 10μs (200 = 2ms). 35 (547) Number of outputs available 2 (Snap) 4 (Servo) When the Snap decoder’s CV35 is set to four, there are four open-drain outputs available. This only has an effect on the first decoder output of each board. Apart from the SMD parts that surround it, it has a 100μF capacitor on its input and output. The power rail for the microcontroller is supplied from the 5.3V rail via schottky diode D6, giving close enough to 5V; this rail also has a 100μF capacitor for bypassing. The diode ensures that bursts of current from the motors do not cause brownouts on the microcontroller. LED1 is fed from this 5V supply, so it should be steadily lit. Since servo motors are quite simple to control, the remaining circuitry is straightforward: the four servo connections at CON1-CON4 consist of threeway headers with ground, 5.3V and a digitally generated signal from IC1. The four 470W resistors help to isolate IC1’s I/O pins from any noise or surges from the servo motors. These two compact boards allow you to control different points motor types in a DCC model railway. The Snaptype Decoder (the boards shown above and to the left) can also be used to control lights, such as signals. Here we’ve shown it with and without the 4700μF capacitor attached. DCC accessory decoder details We should briefly explain some of the terminology related to DCC accessory decoders. Accessory decoders might also be called stationary decoders, in contrast to the mobile decoders found in locomotives and the like. Accessory decoders have a separate addressing scheme to mobile decoders, so locomotive #1 and accessory decoder #1 are distinct and will not be confused. The packet structure and data contents are different, too. The current standard promotes a flat addressing system that ranges from 1 to 2048, although earlier standards used a segmented sub-addressing system. We tested our Decoders with a DigiTrax system along with the JMRI software; both work with the linear system, so that is what we are using. Unlike mobile decoders, stationary decoders have just two outputs; these are known as ‘closed’ and ‘thrown’, based on US railway terminology for points set to the straight (or default) route or curved (non-default) route, respectively. The common Australian equivalents are ‘normal’ and ‘reverse’. For example, the DigiTrax unit uses the abbreviations ‘c’ and ‘t’ to describe the outputs, and the JMRI software has buttons labelled “Closed” and “Thrown”. July 2026  73 Each output can be activated, which will deactivate the other if it is active. There is also a duration setting, which determines how long an output is activated; this is the duration of the brief pulse when a snap-type motor is activated. If the duration is set to zero, the output runs indefinitely. This brings us to the CVs (configuration variables) used by accessory decoders. Table 1 shows the CVs that are supported by our Accessory Decoders. CV33, CV34 and CV35 are custom CVs whose purpose is not fixed by the standards. Not all of these CVs are used, but CV3 is commonly used as a duration setting and is available for all outputs. The CV numbers are given as two different addresses (that differ by 512) since these were created under a different numbering scheme, which has also been simplified. We treat the CV numbers the same in software by ignoring the upper bits. Firmware operation Like the locomotive decoders, these Decoders monitor the DCC signal via 100kW protection resistors. When a relevant packet is detected, it triggers one of the outputs or programs a CV as needed. The Accessory Decoders also check if an I2C Controller is connected and interact with it if it’s present. This Controller has no processor of its own, so the Decoder must provide a display driver and menus for allowing settings to be made. The driver keeps a character buffer, not unlike an older 8-bit personal computer. It updates one character at a time from the buffer, which Snap-type Decoder assembly The Snaptype Decoder attached to the I2C Controller. takes about 2ms. Since DCC packets take about 5ms to receive, this means it is very unlikely for the Decoder to miss a packet. The Snap-type Decoder can also delay activation of an output if the Vmotor rail line is low from a previous activation. The threshold used is 90% of the 12V rail or 6V absolute minimum. A round-robin counter ensures that only one pulse output is activated at a time. Construction We’ll describe the construction of the two Decoders separately, followed by some common operational features, then the unique aspects of each. How to use the I2C Controller with the Accessory Decoders is described in its separate article. You’ll need SMD assembly gear, since there are a number of SMD parts. This should include flux paste, tweezers, a magnifier and solder-wicking braid. Illumination and ventilation will also help. Fig.3: start by soldering the exposed pads on the undersides of IC2 and IC3; there are large holes in the PCB to allow access from below. There is nothing smaller than SOIC or 1206-size parts on this board. The large capacitor has not been fitted in this photo. 74 Silicon Chip Australia's electronics magazine Make sure that you have the PCB coded 09111254; this and the board for the other Decoder are the same dimensions and have the same mounting holes. Refer to the Fig.3 overlay diagram in this case. Start with IC2 and IC3, since they have large underbody pads that need to be soldered to the PCB. We find it easiest to temporarily hold these parts in place using a high-­ temperature tape, such as Kapton. Make sure the pins are over the correct pads and the part is orientated correctly, then add flux and flow a generous amount of solder through the hole from the underside. Check that the chips are aligned and firmly held by the solder before attempting to solder the remaining pins. Apply flux to the pads for the remaining SMD parts and fit IC1 next, ensuring that its pin 1 aligns with the marker. Tack one lead to start. Check that the remaining pins are aligned with their pads and flat against the PCB before soldering them. Next, solder the SMD capacitors; there are three 100nF parts and two of 1μF. The latter are adjacent to IC2 and IC3. Note that the 100nF marking on the silkscreen near REG1 indicates two parts, one to its left and one to its right. The larger 0.1W resistors are also near IC2 and IC3, so solder these next. The remaining SMD parts are the 11 smaller M3216 (1206) size resistors. Below the pair of 100nF capacitors, there are pairs of 10kW and 1kW resistors as shown. With the SMD parts complete, you clean up any flux residue on the board (eg, using alcohol and a lint-free cloth). Now you can move on to the through-hole parts. The five 1N5819 diodes all face the same way, with their cathodes to the right. Similarly, the two LEDs can be fitted flush against the PCB with their cathodes to the right; LED1 is green and LED2 is red. Snap the two tactile switches into place and solder them. The 100W 1W resistor can be spaced slightly (about 2mm) above the PCB to help with air movement for cooling. Join the three-way screw terminals CON1 and CON2 via the moulded dovetails before slotting them into place. The two-way screw terminals (CON3 and CON4) are fitted separately. Make sure that the cable entries to the terminals are accessible from the edges of the PCB. Next fit REG1 and the two 100μF capacitors near it. Solder the jumper header JP2 in place and leave the shunt off for now. The remaining headers (CON7, CON8 and CON9) might not be needed, so fit those as needed and to suit. Finally, solder the larger capacitor in place. If you are using a 4700μF part, bend the leads over and lay it over the top of the remaining components, towards CON5. If you are using a smaller part (for example, to power slow-motion point machines), it can be fitted vertically. Servo-type Decoder assembly This version is assembled on the PCB coded 09111255 and with the help of overlay diagram Fig.4. Apply flux to the SMD parts and put the tiny MSOP-8 REG1 in place with its pin 1 marker at upper left, near the REG1 designator. Tack one lead, verify that the placement is still good, then solder the remainder. If you get a bridge, add extra flux and use the braid to draw away the excess solder. Follow with IC1; its pin 1 is also at upper left. The remaining SMD parts are passives. There are two 100nF capacitors and three 1μF capacitors, plus 13 resistors. The single inductor might need a bit more heat to solder properly since it is larger and has more thermal mass. It’s best to put some flux paste on its pads before placing it. These components are all individually marked on the PCB; none of them are polarised. Clean off any excess flux siliconchip.com.au * servo wire colours may vary Fig.4: the switchmode regulator is in a tiny MSOP8 package and should be soldered first. You should find the remaining components straightforward after that. Check the pinout of your servo motors before connecting, since we have seen some that use a different pin order. before fitting the through-hole parts and allow the solvent to evaporate. Next, solder the six through-hole diodes and two LEDs. Apart from D6, all these components have cathodes facing to the right of the PCB. D6’s cathode is towards the top of the PCB. Snap in the four tactile switches and solder them, then follow with the three 100μF capacitors. Now mount both two-way screw terminals, CON5 and CON6, making sure that the cable entries face away from the PCB. The jumper header (JP3) and three-way headers (CON1CON4) should be fitted next, followed by CON7, CON8 and CON9 if needed. Leave the shunt off the jumper for now. Microcontroller programming If you have purchased a chip or kit from the Silicon Chip shop, microcontroller IC1 (for both boards) will already be programmed with the correct firmware. Make sure you choose the correct variant at the time of purchase. You can skip forward to the section on testing. To apply power, use CON5 since it is followed by the bridge rectifier (D1D4) and the polarity will not matter. A 9V battery is a fairly safe option and should cause LED1 to light up when connected. Connect a programmer (Snap, PICkit 4, PICkit 5 or PICkit BASIC) to CON8; be sure to align pin 1 (with the > marker) to the matching marker on the programmer and use the Microchip IPE program to upload (program) and verify the appropriate HEX file (see the parts list for the code). Testing The pushbutton controls mean that both boards can be quite thoroughly tested with little more than a suitable Australia's electronics magazine power supply. It doesn’t even need to be a DCC system. If you want to be cautious, try a 9V battery or a current-­ limited (100mA) 12V supply such as a bench PSU. Connect it to CON6, observing the polarity. On either board, LED1 should light up to indicate when power is applied. You can probe for the other expected voltages relative to circuit ground (eg, the – terminal of CON6). You should see 5V (4.9-5.1V) on pin 2 of CON8, the ICSP header. This pin is next to the one marked with a chevron. If all is well, you can now connect a more powerful supply (or your DCC system) and your motors. Fig.5 shows wiring examples for different types of point motors. The most typical connection will be to wire the main DCC track output from a base station (“MAIN” on our DCC Base Station) to CON5. Since a DCC signal is effectively AC, the polarity is not important. Pressing one of S1, S2, S3 or S4 should cause the corresponding (CON1, CON2, CON3 or CON4) output to activate for a quarter of a second. Pressing the same switch a second time should activate the alternate action. For example, repeated presses on S4 should cause a servo motor connected to CON4 to toggle between its two pre-programmed positions. From this, you can see that the Accessory Decoders are quite useful, even without a DCC system connected. Bridging the respective pins on CON9 to ground should have the same effect. DCC operation By default, the DCC accessory addresses correspond to the connectors. So CON1 will respond to address 1, CON2 to address 2 and so forth. For our testing, we used our DigiTrax system and the JMRI software, as well July 2026  75 as our own DCC Base Station. JMRI is an open-source project that works on Windows, macOS and Linux – see www.jmri.org There are many options for hardware to interface JMRI to a layout, including commercial systems that have a computer interface. In our January 2020 DCC project (siliconchip.au/ Article/12220), we used the DCC++ BaseStation sketch. It can be found at https://github.com/DccPlusPlus/­ BaseStation It’s also possible to use a bare Arduino Uno (programmed with the DCC++ BaseStation sketch) to generate logic-­ level DCC signals. We used this to quickly test JMRI’s operation with the Accessory Decoders. To do the same, install JMRI and configure your programmed Uno as the DCC interface by setting the connection name to DCC++ and the serial port to that allocated to the Uno. Fig.6 shows the wiring needed to feed the signal into an Accessory Decoder and also supply it with power. You will need a suitable DC power supply that is capable of sharing ground with the Uno and thus your computer. Either Accessory Decoder can be used this way. The JMRI DecoderPro program provides a few useful windows under the Actions Menu. The Turnout Control window can be seen in Screen 2. Enter the address number (1-4 by default) and then press Thrown or Closed to operate the outputs. When a command is received (that the decoder should respond to), LED2 will flash for 200ms. If the activation is delayed (due to the capacitor charging or round-robin sequencing), LED2 will emit another very brief flash when the output is ultimately activated. The Single CV Programmer (Screen 1) can also be used to set the configuration variables. Set the lower radio button to “Ops Accessory Byte” and the upper radio button to “Accessory Address”. Enter the Accessory Decoder address (lower text box) and fill in the CV and Value fields before pressing the “Write CV” button. We have locked out the ability to program addresses (CV1 and CV9) to ensure that they cannot be inadvertently changed. Since these CVs also need to be accessed through their own address, it can be messy to do it this way. We will discuss how these can be changed shortly. 76 Silicon Chip Fig.5: We found snap-type motors (a & b) to be the most difficult to get working. You may need to adjust the motor and points to ensure that they are moving as freely as possible. Points with integrated motors (c) worked well. Many slowmotion motors (d) have extra switch contacts, which can be ignored or used for other purposes, such as operating signal lights. For loads like LEDs, make sure that the polarity is correct (e). If you have a Servo-type Decoder, we recommend changing CV3 to 0 so that the outputs are always driven. Then the servos will immediately respond to changes in CV33 and CV34 if the output has already been set to thrown or closed, respectively. CV3 should also be 0 for slow-motion motors that can be constantly powered. For a Snap-type Decoder, CV3 should be set long enough to ensure that the points are thrown, but not so long that the coil overheats. The points motor manual should provide guidance on this. If you have your own DCC system, it should have instructions on how to work with accessory decoders. CV35 on the first output only can be changed to configure a Snap-type Decoder to have two full-bridge outputs or four open-drain outputs. The values are 2 for the full-bridge outputs and 4 for the open-drain outputs. The Snap-type Decoder will not accept any other values for CV35. With four open-drain outputs, the outputs follow the numbering shown next to CON1 and CON2, with outputs 1 and 2 coming from CON1 and outputs 3 and 4 coming from CON2. The output is on (sinking current) while the “throw” output is active, so it can be turned off by setting the “close” Screen 1: DecoderPro’s Single CV Programmer (also under the Actions menu) can be used with both mobile and stationary decoders. Select Ops Accessory Byte as the mode and then Accessory address before entering the address, CV and value. Screen 2: JMRI’s DecoderPro program has several tools for interfacing with accessory decoders. The Turnout Control (found in the Actions menu) opens the window here, which can be used to manually operate accessory decoders. Australia's electronics magazine siliconchip.com.au Fig.6: an Arduino Uno can be used to generate logic level DCC signals, which can then be passed to the Accessory Decoder using this wiring. The DC power supply needs to be capable of sharing ground with the Uno and computer it is connected to. output. It can also switch off due to the timer expiring. Due to the operation of the DRV8231, these aren’t true open-drain outputs. If, for example, output 1 is on and output 2 is off, output 1 will be driven low (to ground), while output 2 will be driven high (to the voltage on the COM+ pins). However, this shouldn’t be a problem for loads like lamps or LEDs. We did note a small leakage current from the outputs, so sensitive loads like LEDs might benefit from a resistor across their leads to shunt this current. Inductive loads like relays should also be fine, since the DRV8231 has internal clamp diodes. DCC Base Station software update We’ve updated our DCC Base Station from January 2026 (siliconchip. au/Article/19558) to allow control of accessory decoders. There is an extra screen (accessed from a new AC button on the main screen) that can be used for operation. An extra button has also been added to the CV programming page. Copying the file 0911125A.UF2 to Pico 2 on the DCC Base Station will add these features. Note that loading a different firmware (new to old or old to new) will invalidate the Base Station’s configuration. Thus, it’s a good idea to record the calibration parameters from the Settings page before reflashing the Pico so they can be easily reinstated afterwards. If you find it difficult to access the BOOTSEL button, try connecting to its USB serial port (with a terminal program) at 1200 baud; this is the method the Arduino IDE uses to enter the bootloader. If you run into problems after loading the new firmware, try clearing Screen 3: the updated version of our DCC Base Station Firmware has a page for controlling accessory decoders; its simple interface is shown here. siliconchip.com.au the flash with the flash_nuke.UF2 firmware image, then load it again. Screen 3 shows the new screen. It is quite simple and just contains a button to select the accessory decoder address. This opens a numeric keypad for number entry. The buttons for THROW and CLOSE will activate the corresponding outputs on the addressed decoder. We have tested this with our own Decoders and also a commercial Rokuhan decoder; all worked as expected. Screen 4 is the updated CV programming screen. A new ACC button has been added to provide programming for accessory decoders. This works on the MAIN track output (operations mode) of the base station and uses the accessory decoder address entered on the AC screen. Being on the MAIN track means that there is no readback – only writing is possible. To avoid corrupting addresses, the accessory decoder addresses cannot be set via their CVs. Instead, you should use the I2C Controller board or follow the instructions in the next section. Our Accessory Decoders also support being reset (all CVs to default values) by programming a value of 8 into CV 8; this will, of course, change the address back to its default value. Addressing The default addresses will work fine for testing, but may need to be changed if you are using more than one Accessory Decoder board, since they would all be on the same addresses otherwise. Fitting the shunt to the jumper sets up address programming mode; the section below assumes the shunt is fitted. Screen 4: the new ACC button on the programming page of the DCC Base Station allows CV programming of accessory decoders on the MAIN track output. Australia's electronics magazine July 2026  77 Parts List – Accessory Decoders Snap-type Accessory Decoder 1 42 × 70mm double-sided PCB coded 09111254 2 3-way 5-5.08mm/0.2-inch pitch screw terminal blocks (CON1 & CON2) 2 2-way 5-5.08mm/0.2-inch pitch screw terminal blocks (CON5 & CON6) 1 4-way 2.54mm/0.1-inch pitch polarised header or similar (CON7) 1 5-way 2.54mm/0.1-inch pitch right-angled pin header (CON8; optional, for ICSP) 1 3-way 2.54mm/0.1-inch pitch right-angled pin header (CON9; optional, for external switches) 1 2-pin 2.54mm/0.1-inch pitch header and jumper shunt (JP2) 2 6 × 6mm tactile switches (S1, S2) mounting hardware to suit installation (eg, 3mm machine screws and spacers) glue to secure the 4700μF capacitor Semiconductors 1 PIC16F18146-I/SO microcontroller programmed with 0911125P.HEX, wide SOIC-20 (IC1) 2 DRV8231DDAR motor driver ICs, SOIC-8 (IC2, IC3) 1 78L05 regulator, TO-92 (REG1) 5 1N5819 schottky diodes (D1-D5) 1 green 3mm LED (LED1) 1 red 3mm LED (LED2) Capacitors 1 4700μF 25V electrolytic (optional for Snap-type motors) 2 100μF 25V electrolytic 2 1μF 25V X7R SMD M3216/1206-size MLCCs 3 100nF 50V X7R SMD M3216/1206-size MLCCs Resistors (all SMD M3216/1206-size ±1% ¼W except as noted) 2 100kW 5 10kW 1 3kW 3 1kW 1 100W ±5% 1W axial 2 0.1W 2W SMD M6331/2512-size Servo-type Accessory Decoder 1 42 × 70mm double-sided PCB coded 09111255 4 3-way 2.54mm/0.1-inch pitch right-angle pin headers (CON1-CON4) 2 2-way 5-5.08mm/0.2-inch pitch screw terminal blocks (CON5 & CON6) 1 4-way 2.54mm/0.1-inch pitch polarised header or similar (CON7) 1 5-way 2.54mm/0.1-inch pitch right-angle pin header (CON8; optional, for ICSP) 1 5-way 2.54mm/0.1-inch pitch right-angle pin header (CON9; optional, for external switches) 1 2-pin 2.54mm/0.1-inch pitch header and jumper shunt (JP3) 1 22μH 1.3A 6 × 6mm SMD inductor (L1) [eg, NRS6028T220M] 4 6 × 6mm tactile switches (S1-S4) mounting hardware to suit installation (eg, 3mm machine screws and spacers) Semiconductors 1 PIC16F18146-I/SO microcontroller programmed with 0911125V.HEX, wide SOIC-20 (IC1) 1 MCP16311(T)-E/MS buck regulator, MSOP-8 (REG1) 6 1N5819 schottky diodes (D1-D6) 1 green 3mm LED (LED1) 1 red 3mm LED (LED2) Capacitors 3 100μF 25V electrolytic 3 1μF 25V X7R SMD M3216/1206-size MLCCs 2 100nF 50V X7R SMD M3216/1206-size MLCCs Resistors (all SMD M3216/1206-size ±1% ¼W) 2 100kW 1 56kW 4 10kW 2 1kW 4 470W 78 Silicon Chip Australia's electronics magazine The pushbutton switches also influence this mode and will not operate the outputs while the shunt is fitted. In this state, the Accessory Decoder will record the address of the first accessory packet that it sees three times in a row. The first output (which defaults to address 1) will take on this address. The second output will take on the next address and so forth. Addresses wrap above 2048, so if 2046 is sent to the Servo-type Decoder while the shunt is set (and S1-S4 are not pressed), CON1 to CON4 will be set to respond to addresses 2046, 2047, 2048 and 1, respectively. Holding one of S1-S4 will program just the corresponding output to the address seen on the DCC bus. When the jumper is set, LED2 will light up for a second when a valid action occurs. Pressing S1 and S2 together while the shunt is in will force a reset of all outputs to the CVs and values shown in Table 1. For our DigiTrax system, we had to push the accessory button twice to ensure enough packets were sent, since it only sends two packets per action. Note that this arrangement means that you do not need to know if the addressing used by your system is linear or otherwise, since the bit patterns are all that is matched. Mounting The Accessory Decoders have four mounting holes to suit 3mm hardware, and we expect many readers will mount the Decoders underneath a baseboard or control panel. You might like to use the bare PCB or the overlay diagram (which is to scale) as a jig to mark mounting holes. The centres are at 36.5mm and 64.5mm spacings. Summary If you wish to use the I2C Controller to monitor the Accessory Decoders and change their CVs, there is further detail (including screenshots) in that project article. With this article, we now have a fairly complete DIY DCC system, including mobile decoders, stationary decoders, a base station and numerous other items! We plan to round that off in the future with a miniature destination display that can be installed within model trains and controlled by our previously described microDCC SC Decoder. siliconchip.com.au