The picture above shows two complete Printed Circuit Boards (PCBs); the boards are double sided and the size of each board is 8x8cm. The PCB at the left is not (yet) equipped with a RS-bus feedback print, whereas the PCB at the right does have such print (using the 28 pin DIL connector at the bottom). To allow easy connection of multiple PCBs in a row (daisy-chaining), the connectors for DCC, power and RS-Bus are located at both left and right side of the PCB. The connectors at the top are used to connect the four switches; two (parallel) ULN2803s are used to allow currents up to 1A. Eight zener diodes can be seen left of the ULNs to provide feedback of the switch positions to the micro-controller. The left PCB uses an AVR ATMega8535, the right PCB is equipped with an ATMega32A. The 16 pin connector below the micro-controller allows to program the AVR, and / or to connect extension boards (such boards can be used, for example, to include additional relays or an emergency stop facility). Note that the PCB can also be used to control two servo's, although a dedicated servo decoder print is planned which already includes four relays to polarize the switch. On the picture above, the two servo connectors plus the two optional (SMD) capacitors have not been equipped on both PCBs (left side of each PCB).
Comparison to original OpenDCC decoder
The differences with the original OpenDCC decoder version 2 circuit are as follows:
- No SMD components are used. For many people it will therefore be easier to build this variant, instead of the original OpenDCC decoders.
- The size of the PCB is 80x80 mm, which is larger than the original OpenDCC decoder prints (which were 80x50 mm).
- The micro-controller can be an Atmel AVR ATMega 8535, 16, 32, 164, 324 or 644. These AVRs have 8, 16, 32 respectively 64 KB of EEPROM on board, which means that there is sufficient capacity to accommodate possible future software extensions. Note that the 8515 and 162, which are used by the original OpenDCC project, have a different pin-layout and can therefore not be used with this variant. Also the newer and more powerful XMega AVRs can not be used with this variant, since these AVRs are only available as SMDs.
- Feedback of switch positions is supported via an (optional) RS-Bus print; for details see the RS-bus feedback description.
- Note that, as alternative, a Railcom feedback print has also been designed, but software for this alternative still needs to be developed and tested.
- The DCC-Ack signal (for programming) is always available and connected (instead of via soldering jumpers).
- To make the reset button less susceptible to noise and interference, a 100nF capacitor has been put over the button.
- To make the switch feedback signals less susceptible to noise and interference, the associated AVR's input pins are connected via 100KOhm resistors to ground.
- To allow driving the switch coils with a current of up to 1A, two ULN2803 drivers are used in parallel.
- A 10 mH coil is shown between VCC and Pin 30 of the AVR (AVCC). This coil is not needed for the switch decoder, but is needed for other PCBs, such as the block occupancy decoders, which is currently under development.
- The micro-controller should be programmed via a 16 pin connector, instead of th usual 6 or 10 pin SPI connectors. The reason to chose such (non-common) SPI connector, is that the same connector may also be used to connect extension boards, to drive for example relays, motor switches or emergency stop circuitry. In addition to the standard 10 pin SPI signals, this connector therefore includes the additional Port B pins, as well as 5V and 15V power.