-
Notifications
You must be signed in to change notification settings - Fork 16
Hardware description
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
- Auxillary output
- Microcontroller
- Flash memory
- Crystal oscillator
Parameter | Symbol | Minimum | Maximum | Unit |
---|---|---|---|---|
Absolute max. DCC Input Voltage | VDCC | -25 | +25 | 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_MAX | 50 | mA | |
Absolute max. motor output current(1) | IMOTOR | 2.8 | A | |
Absolute max. auxillary 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
D1 Rectifies the DCC square-wave into +V, the amplitude is not critical as long as its 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 VGS doesnt exceed ±20V.
The Motor Driver is a complete H-Bridge IC specifically made for DC-Motors.
In order to control the motor, it is necessary to measure the back-EMF. This is done by the ADC which measures at Points ADC_EMF_A and ADC_EMF_B respectively. The two resistors are used as a voltage divider.
Switching of loads up to a maximum of about ~400mA can be done using four N-Channel MOSFETS. 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.
To switch lighter loads six soldering pads on the back side of the PCB are connected to GPIO0 - GPIO5 pins . Although not implemented yet they could theoretically be used as inputs as well (e.g. Reed switch).
The Microcontroller needs a crystal oscillator to function properly. External flash memory is also needed as it holds the configuration variables and the program itself. R3 & C14 are used to filter ADC_AVDD (ADC Reference Voltage).
Ref | Quantity | Value | Component Type | Component Name | Footprint |
---|---|---|---|---|---|
C1, C2, C5, C6, C14 | 5 | 10u | Ceramic Capacitor | / | 0603_1608Metric |
C3, C4, C7, C8, C9, C10, C11, C12, C13, C15 | 10 | 100n | Ceramic Capacitor | / | 0603_1608Metric |
C16, C17 | 2 | 33p | Ceramic Capacitor | / | 0603_1608Metric |
D1 | 1 | VRMS = 40V , IF = 2A | Bridge Rectifier | KMB24F | MBS (TO-269AA) |
Q1, Q2, Q3, Q4, Q5 | 5 | VDS = 60V , ID = 0.4A | N-Channel MOSFET | T2N7002BK | SOT-23 |
R1, R2, R5, R6 | 4 | 6k8 | Resistor | / | 0603_1608Metric |
R3 | 1 | 200 | Resistor | / | 0603_1608Metric |
R7, R8, R9 | 3 | 1k | Resistor | / | 0603_1608Metric |
U1 | 1 | VOUT = 3.3V | Low Dropout Voltage Regulator | HT7533S | SOT-23 |
U2 | 1 | I = 2.8A | H-Bridge driver | BDR6133 | SOIC-8 |
U3 | 1 | 64Mb | Serial Flash Memory | W25Q64JVSSIQ | SOIC-8 |
U4 | 1 | / | Raspberry Pi RP2040 Microcontroller | RP2040 | QFN-56-1EP_7x7mm_P0.4mm |
Y1 | 1 | f = 12MHz | Crystal Oscillator | X322512MSB4SI | Crystal_SMD_3225-4Pin_3.2x2.5mm |
NOTE: Keep capacitor Vmax in mind!
Alternatives for BDR6133:
Alternative for HT7533S: