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:
The Slave Board (USB-PD) will come later.
Here's the requirements I came up with and the selections I made:
Component | Requirements | Selected P/N | Notes |
---|---|---|---|
Character Display | 2 rows, at least 20 characters on each row | NHD-C0220BiZ-FSW-FBW-3V3M | I am already familiar with this display, so writing the driver will be easier. |
Control Knob | Quadrature encoder with built-in switch, large enough for comfortable use by hand | PEC11R-4215K-S0012 | |
3.3V Regulator | Simple electrical design. Buck topology. Good efficiency at load above 1W (80% or higher). Synchronous. | APM81911 | The regulator must be synchronous so that design can be extended to a muliphase form with higher current capacity. |
5V Regulator | idem. | APM81911 | |
9V Regulator | idem. | APM81911 | |
Variable Regulator | idem. Also must support voltage tracking. | LMZM33606 | Voltage tracking is required as it is how MPU will control regulator voltage. |
MPU | SBC 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, MCP4725 | Require 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 components should be SMD as they must be easily assembled en masse.
Component | Requirements | Selected P/N | Notes |
---|---|---|---|
Power Multiplexer | 20 Vds, 10A Id | DMN3016LFDE, DMN62D0LFD (x2), SN74LVC1G04 | This 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 Monitor | Can handle 20V, 10A | INA700 | |
Select Button | Tactile switch, very cheap | EVP-ASKC1A | |
Status LED | Green + red colors, very cheap | HSMF-C165 | |
Screw Terminals | Pin headers for now | Generic | |
MCU | Peripherals 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 MicroPython | STM32G0B0KET6 | I 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.