With an idea of the overall architecture of V2, I'm free to select components. I'm selecting for every node inside the Master Board and Slave Board (Screw Terminals) box in the v2 diagram:

MPSU V2

The Slave Board (USB-PD) will come later.

Here's the requirements I came up with and the selections I made:

Master Board

ComponentRequirementsSelected P/NNotes
Character Display2 rows, at least 20 characters on each rowNHD-C0220BiZ-FSW-FBW-3V3MI am already familiar with this display, so writing the driver will be easier.
Control KnobQuadrature encoder with built-in switch, large enough for comfortable use by handPEC11R-4215K-S0012
3.3V RegulatorSimple electrical design. Buck topology. Good efficiency at load above 1W (80% or higher). Synchronous.APM81911The regulator must be synchronous so that design can be extended to a muliphase form with higher current capacity.
5V Regulatoridem.APM81911
9V Regulatoridem.APM81911
Variable Regulatoridem. Also must support voltage tracking.LMZM33606Voltage tracking is required as it is how MPU will control regulator voltage.
MPUSBC supporting embedded Linux. ARM Cortex-A, peripherals for all above components (I2C for display, quadrature decoder for control knob, GPIO for monitoring encoder switch and PGOOD from voltage regulators, DAC for variable voltage regulator control, ) and additional I2C port for SMBus connection to slaves. Plenty of GPIO (20+). Full board schematic available.BeagleBone Black, MCP4725Require embedded Linux for easy development of future features: Bluetooth API, Wi-Fi API, and webserver. Full schematic must be available for reference when I design the MPU, RAM, etc. directly onto master board; for now master board is just an SBC cape. BeagleBone Black has no DAC so require external chip.

Slave Board (Screw Terminal)

Slave board components should be SMD as they must be easily assembled en masse.

ComponentRequirementsSelected P/NNotes
Power Multiplexer20 Vds, 10A IdDMN3016LFDE, DMN62D0LFD (x2), SN74LVC1G04This is an array of identical high-side MOSFETs and push-pull driver circuits. Non-latching relays waste too much power (e.g. 0.36W and solid-state and latching relays are too expensive (e.g. $4.29).
Power MonitorCan handle 20V, 10AINA700
Select ButtonTactile switch, very cheapEVP-ASKC1A
Status LEDGreen + red colors, very cheapHSMF-C165
Screw TerminalsPin headers for nowGeneric
MCUPeripherals and pins for: 6 GPIO (3 power mux switch outputs, 1 select button input, 2 status LED output), 1 SMBus connection, 1 additional I2C connection (for power monitor), 512KiB Flash + 128KiB RAM for MicroPythonSTM32G0B0KET6I will try programming it with MicroPython and FreeRTOS and contrast the two methods.

It turns out I will not need a USB controller for the USB-PD version as the selected MCU has an integrated USB controller. Though I may have to upgrade MCU to STM32G0x1, as it claims to support USB-PD whereas STM32G0x0 does not. However, many of USB-PD features I will not support, like FSR, so perhaps there is no need for the upgrade. A problem for the future, in any case.

The inter-board connectors will for now all be jumper wires connected to pin headers. In the future the slave boards will connect directly into a bus running through the case, obviating any per-module wiring.


Please send comments to blogger-jack@pearson.onl.