
Sensor Cell with Comms
Molly-M-Laugh/Senior-Final
A collection of documentation and files for our group's final senior design project

Compact multi-output switch-mode power supply in Altium: synchronous buck, boost and LDO stages on a 4-layer board, with loop compensation, thermal analysis and EMC pre-compliance.
Emb multirail smps is an open-source printed circuit board by CGainsWorks, from the CGainsWorks/emb-multirail-smps repository on GitHub, published under the MIT licence. It is a 4-layer board of 100 × 80 mm with 79 parts on 57 nets, routed with 538 tracks and 143 vias.
It is built around the TPS54317RHFR, AO3400A and CSD18543Q3A, with the PMEG6010CEH and SMF36A among its other parts. Its parts include 28 capacitors, 16 resistors, 4 ICs, 4 transistors and 4 inductors. It belongs with the power boards of this library.
KiCad 8 schematic and four layer board for the supply. KiCad is free and the EDA tool a hardware team without an Altium licence would use; the brief named Altium, which is not available here.
Nothing here has been fabricated, assembled, powered or measured.
| file | what it is |
|---|---|
emb-multirail-smps.kicad_sch | Root sheet: the four stage sheets below and an overview |
input_5v.kicad_sch | Input terminal, fuse, TVS, differential mode filter, +5V buck (LTC3891) |
buck_3v3.kicad_sch | +3V3 voltage mode buck (TPS54317) and its Type III network |
boost_12v.kicad_sch | +12V synchronous boost (TPS43061) |
ldo_outputs.kicad_sch | +1V8A LDO (LP5912-1.8), its input RC filter, preload and the output terminal |
smps.kicad_sym | Symbols for the two controllers KiCad's library does not ship, drawn from their data sheet pin tables |
emb-multirail-smps.kicad_pcb | Four layer board, 100 by 80 mm, to docs/stackup.md |
emb-multirail-smps.kicad_pro | Project, net classes and design rules |
emb-multirail-smps.kicad_dru | One custom rule: pad to pad gaps inside library land patterns |
Every part carries a Basis field:
model: the value the simulation in simulation/smps uses. The inductors,
shunts, capacitor banks, dividers, compensation networks, the input filter
and the LDO filter and preload.datasheet: support parts sized from the controller's data sheet, with
the equation or table quoted in the part's description or note. Timing
resistors, bootstrap, soft start, bias and bypass capacitors. These are not
simulated.choice: a decision with no equation behind it, such as a pull-up value or
a 0 ohm link.Every part also has a real manufacturer part number in its MPN field. The
headline ratings of each were checked on the manufacturer's or a
distributor's listing; where the data sheet and the model disagree it is
written down in outputs/VERIFY.csv. Nothing has been ordered.
Each feedback divider has a 0603 0 ohm link between the rail and the top of the divider (R14, R22, R32). Replacing it with 20 ohm gives the injection point the bring-up Bode measurement needs.
scripts/kicad/run_checks.sh does what CI does, in the pinned
kicad/kicad:8.0.9 image:
kicad-cli sch erc with every severity enabled. It has to report nothing
at all, warnings included.kicad-cli sch export netlist, then scripts/kicad/check_netlist.py,
which holds the exported netlist to the simulation: every R, L and C in
every ngspice deck CI runs is matched to the part it stands for, by value
(after the DC bias derating the model applies to ceramics) and by the nets
it joins (after the 0 ohm links are closed); the inductors, shunts and
capacitor banks are compared with smps.components; the compensation
values with outputs/compensation_values.csv; and each regulated rail's
set point is computed from the selected controller's reference and the
divider. Change a value in KiCad and CI fails.--board, kicad-cli pcb drc --schematic-parity. Errors fail;
warnings are listed.The schematic was generated from simulation/smps/hardware.py by
scripts/kicad/gen_schematic.py, in the label style: every pin has a short
wire and a net label. That makes the connectivity explicit and checkable;
it is less pleasant to read than a schematic drawn by hand. Regenerate it with
python scripts/kicad/gen_schematic.py --symbols <KiCad symbols directory>and the check above confirms the result still matches.
The board was placed by scripts/kicad/gen_pcb.py, one region per stage with
the switching loop parts in the first row of each. It was routed by
scripts/kicad/route_board.sh: plane vias for every ground, VIN, +5V and +3V3
pad, 0.30 mm thermal vias under the exposed pads, Freerouting 2.4.1 for the
rest, power tracks widened afterwards as far as clearance allows and up to
three repair passes that take up whatever DRC objects to and route again.
The board is not finished. Five connections are unrouted (STATUS.md lists
them) and neither the generated placement nor the autorouted copper has been
through the review in docs/layout_rules.md. DRC is otherwise clean and CI
holds it there.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10uF | Capacitor_SMD:C_0805_2012Metric | C11, C13, C18, C19, C23 |
| 5 | 22uF | Capacitor_SMD:C_1210_3225Metric | C4, C5, C6, C9, C10 |
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C16, C21, C24, Cc2 |
| 3 | 0 | Resistor_SMD:R_0603_1608Metric | R14, R22, R32 |
| 3 | 100k | Resistor_SMD:R_0402_1005Metric | R13, R21, R40 |
| 3 | 47nF | Capacitor_SMD:C_0402_1005Metric | C17, C20, C27 |
| 2 | 0 | Resistor_SMD:R_0402_1005Metric | R33, R34 |
| 2 | 100nF | Capacitor_SMD:C_0603_1608Metric | C14, C26 |
| 2 | 10uF | Capacitor_SMD:C_1210_3225Metric | C1, C2 |
| 2 | 22uF | Capacitor_SMD:C_1206_3216Metric | C7, C8 |
| 2 | 270pF | Capacitor_SMD:C_0402_1005Metric | Cp1, Cp2 |
| 2 | 4.99k | Resistor_SMD:R_0402_1005Metric | Rb1, Rb3 |
| 2 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q3, Q4 |
| 2 | CSD18543Q3A | Package_SON:VSON-8_3.3x3.3mm_P0.65mm_NexFET | Q1, Q2 |
| 1 | 1.3nF | Capacitor_SMD:C_0402_1005Metric | Cf3 |
| 1 | 1.5uH | Inductor_SMD:L_Coilcraft_XAL4020-XXX | L2 |
| 1 | 10.2k | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | 10k | Resistor_SMD:R_0402_1005Metric | R31 |
| 1 | 10uH | Inductor_SMD:L_Coilcraft_XAL7050-XXX | L4 |
| 1 | 115 | Resistor_SMD:R_0402_1005Metric | R3 |
| 1 | 147k | Resistor_SMD:R_0402_1005Metric | R30 |
| 1 | 15nF | Capacitor_SMD:C_0402_1005Metric | Cc1 |
| 1 | 180 | Resistor_SMD:R_0603_1608Metric | Rpl1 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric | R11 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric | C25 |
| 1 | 2.2uF | Capacitor_SMD:C_1210_3225Metric | C12 |
| 1 | 2.4k | Resistor_SMD:R_0402_1005Metric | Rc1 |
| 1 | 210k | Resistor_SMD:R_0402_1005Metric | R12 |
| 1 | 220uF | Capacitor_SMD:CP_Elec_10x10.5 | C3 |
| 1 | 22nF | Capacitor_SMD:C_0402_1005Metric | C22 |
| 1 | 22uH | Inductor_SMD:L_Coilcraft_XAL6060-XXX | L3 |
| 1 | 26.1k | Resistor_SMD:R_0402_1005Metric | Rt1 |
| 1 | 3.3nF | Capacitor_SMD:C_0402_1005Metric | Cf1 |
| 1 | 3.74k | Resistor_SMD:R_0402_1005Metric | Rb2 |
| 1 | 330m | Resistor_SMD:R_0805_2012Metric | Rf1 |
| 1 | 3A | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | 3k | Resistor_SMD:R_0402_1005Metric | Rc2 |
| 1 | 4.42k | Resistor_SMD:R_0402_1005Metric | Rf2 |
| 1 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C15 |
| 1 | 44.2k | Resistor_SMD:R_0402_1005Metric | Rt2 |
| 1 | 46.4k | Resistor_SMD:R_0402_1005Metric | R20 |
| 1 | 50m | Resistor_SMD:R_0805_2012Metric | Rs2 |
| 1 | 5m | Resistor_SMD:R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm | Rs1 |
| 1 | 6.8uH | Inductor_SMD:L_Coilcraft_XAL8080-XXX | L1 |
| 1 | 71.5k | Resistor_SMD:R_0402_1005Metric | R10 |
| 1 | 75pF | Capacitor_SMD:C_0402_1005Metric | Cf2 |
| 1 | LP5912-1.8DRVR | Package_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm | U5 |
| 1 | LTC3891EFE#PBF | Package_SO:HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP2.74x3.86mm | U1 |
| 1 | OUTPUTS | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-10-5.08_1x10_P5.08mm_Horizontal | J2 |
| 1 | PMEG6010CEH | Diode_SMD:D_SOD-123F | D2 |
| 1 | SMF36A | Diode_SMD:D_SOD-123F | D1 |
| 1 | TPS43061RTER | Package_DFN_QFN:Texas_RTE_WQFN-16-1EP_3x3mm_P0.5mm_EP1.2x0.8mm | U4 |
| 1 | TPS54317RHFR | Package_DFN_QFN:QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm | U3 |
| 1 | VIN 8-36V | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal | J1 |

Molly-M-Laugh/Senior-Final
A collection of documentation and files for our group's final senior design project

Secoh/Electronics
Educational etudes related to electronics, schematics, PCB layout, etc.


embeddedos-org/eCAD-Hardware-Products
Hardware designs + EE docs + Board datasheets of Multiple products

gschuurman/android_vendor_gschuurman_vehicle_interfaces
vehicle interfaces for android automotive for a custom headunit


esden/mcHF-kicad
This repository contains the KiCad import of the Altium design files for the mcHF QRP radio.

Loredati-svg/BLDC-FOC-Motor-Driver
Single-motor BLDC/PMSM FOC driver: STM32G431 + DRV8323RH, 4-layer round PCB with on-board MA730 magnetic encoder. Motor block for a self-balancing robot. Designed in KiCad 10.
It measures 100 × 80 mm and has 4 copper layers, 1.7 mm thick.
79 parts, built around the TPS54317RHFR, AO3400A, CSD18543Q3A and PMEG6010CEH. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the CGainsWorks/emb-multirail-smps repository on GitHub, at the commit this page was made from: the board is hardware/kicad/emb-multirail-smps.kicad_pcb and its schematic hardware/kicad/boost_12v.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).