Overview

Block Diagram

Harware block diagram

The above block diagram gives a general overview regarding the operation of components. For better illustration it has been divided into four functional blocks. Furthermore, these functional blocks can be subdivided and will be explained below.

  • Input Stage
    • DCC Signal Level Shift

    • Bridge Rectifier & Voltage Regulator

  • Motor Driver
    • Motor Driver

    • Back EMF measurement (ADC)

  • General Purpose
    • GPIO

    • Auxiliary output

  • Microcontroller
    • Flash memory

    • Crystal oscillator

Electrical Characteristics

Electrical Characteristics & Absolute Maximum Ratings

Parameter

Symbol

Minimum

Maximum

Unit

Absolute max. DCC Input Voltage difference

VDCC

0

+24

V

Absolute max. GPIO Voltage(0)

VPIN

-0.5

3.3+0.5

V

Input Voltage High(0)

VIH

2.145

3.6

V

Input Voltage Low(0)

VIL

0

1.155

V

Total GPIO Current(0)

IIOVDD

50

mA

Absolute max. motor output current(1)

IMOTOR

2.8

A

Absolute max. auxiliary output current (2)

IAUX

400

mA

(0): According to: RP2040 Datasheet (assuming VDD= 3.3V)

(1): According to: BDR6133 Datasheet

(2): According to: T2N7002BK Datasheet

Note

Keep in mind that realistically these maximum ratings can’t be reached in practice due to thermal limitations. For example the motor current can probably not exceed 1.5A for continuous operation.

Input Stage

Input Stage

Input stage

D1 Rectifies the DCC square-wave into +V, the amplitude is not critical as long as it’s within the 25V limit. The rectified voltage +V is then provided to the 3.3V voltage regulator (U1) and to the motor driver (U2).

The MOSFET on the right effectively translates the rather high DCC voltage to a suitable level for the microcontroller to process. When Q1 is turned off GPIO21 is pulled high by the RP2040 internal pull-up resistor, as soon as Q1 gets turned on (VGS> VGS,th), GPIO21 gets pulled to GND potential. R1 and R2 ensure that VGSdoesn’t exceed ±20V.

Motor Driver

Motor Driver

Motor driver

The Motor Driver is a special H-Bridge IC that is made for DC motors. To control the motor, it is necessary to measure the back-EMF voltage, which is directly related to the motor’s speed. This is done by the ADC, which measures at Points ADC_EMF_A and ADC_EMF_B. The two resistors work together as a voltage divider.

Auxiliary Outputs

Auxiliary Outputs

Auxiliary Outputs

Switching of loads can be done using four N-Channel MOSFETs (Q2 to Q5). The amount of current is somewhat dependend on either static RDS(on)losses and/or switching losses using PWM. They are switching on the low-side, which means the load effectively gets connected to GND potential as the transistor starts to conduct. GPIO24 - GPIO27 are used.

GPIO

To switch lighter loads, six GPIO soldering pads are connected to GPIO0 to GPIO5 pins. Although not yet set up in the software, they could be used as inputs as well (e.g. reed switch). GPIO0 and GPIO1 can also be used to facilitate stdio logging via UART, which can easily be set up in CMakeLists.txt.

Microcontroller

Microcontroller

Microcontroller, flash memory, crystal oscillator, …

The Microcontroller needs a crystal oscillator for its clock. External flash memory holds the configuration variables and the program itself. R3 & C14 are used to filter ADC_AVDD (ADC Reference Voltage).

Complete Schematic

Complete Schematic

Complete Schematic

Wiring the Decoder

Wiring Diagram

Wiring Diagram

The illustration above provides an example of a wiring configuration. It supports the connection of up to 4 transistor-switched outputs and 6 GPIOs for lighter loads or custom applications. When switching inductive loads, always include a free-wheeling diode to protect the circuit.