app
Base Scaffold Control Panel
Public Made by Adomby adom
The Base Scaffold System's control panel: electrical specifications and the connect/disconnect interface between a base scaffold and the workcell ecosystem.
← Commit history
Control panel pair updated to V2.1.0: viewers, specifications and models
6 files changed
+202−193
Control_Panel_Scaffold_v2.1.0.glbadded⋯ 1 unchanged line ⋯
Control_Panel_Workcell_v2.1.0.glbadded⋯ 1 unchanged line ⋯
README.html+165−145@@ -62,6 +62,8 @@ img { max-width: 100%; border-radius: 6px; display: block; margin: 0 0 16px; } <p>It is a two-board pair that mate at a blade dock. One half stays with the workcell, the other rides on the base scaffold with the project.</p> +<p><strong>Current revision:</strong> Control Panel: Workcell V2.1.0 and Control Panel: Scaffold V2.1.0. Every function on this page was exercised on the bench in the V2.1.0 test campaign; measured values are quoted where they matter.</p>+ <h2>The Pair</h2> <table>@@ -95,7 +97,7 @@ if (typeof V === 'undefined') { wrap.remove(); } else { try { const viewer = V.init(wrap, { zUp: true, showViewCube: true, showGround: true });- viewer.loadModel('https://wiki.adom.inc/api/pages/adom/base-scaffold-control-panel/files/models/workcell-q.glb?v=608c90f7').then(() => {+ viewer.loadModel('https://wiki.adom.inc/api/pages/adom/base-scaffold-control-panel/files/models/workcell-q.glb?v=v210a').then(() => { viewer.frameModel(); try { if (viewer.toggleAxes) viewer.toggleAxes('world', false); } catch (e) {} document.getElementById('fb').remove();@@ -125,63 +127,66 @@ else { dBtn.onclick = () => { tipsOn = !tipsOn; dBtn.classList.toggle('on', tipsOn); if (!tipsOn) tip.style.display = 'none'; }; const HDR = {- pwr: 'Supply inputs (PS1\u2013PS4)',+ pwr: 'Supply inputs (PS1–PS4)', meter: 'Rail metering', usb: 'USB ports', wifi: 'M.2 Wi-Fi slot', cm5: 'Workcell controller', ring: 'ADOM LED ring', sens: 'Sensing',- probe: 'PiProbe (N1)',- dock: 'ET60T dock',+ probe: 'Debug probe',+ dock: 'Blade dock', led: 'Status LEDs',- jmp: 'Ground bonds',- board: 'Control Panel: Workcell',+ jmp: 'Configuration jumpers',+ board: 'Control Panel: Workcell V2.1.0', }; const T = {- pwr: [HDR.pwr, 'Bench supplies land on WAGO terminals: PS1 0\u201360 V / 12 A (variable), PS2 5 V / 10 A (switched), PS3 user rail, PS4 internal 5 V. Every rail is metered.'],- meter: [HDR.meter, 'INA228 20-bit monitors \u2014 one per rail \u2014 feed live V / A / W to the Control Panel Dashboard.'],- ps2sw: [HDR.pwr, 'TPS22990 load switch \u2014 the PS2 rail enable, 3 ms controlled ramp. Switching PS2 off also drops USB VBUS.'],- usba: [HDR.usb, 'USB-A 3.0 SuperSpeed host, power delivery; VBUS from PS2. Its USB 2.0 lanes are muxed with Bluetooth \u2014 mutually exclusive.'],- usbc: [HDR.usb, 'USB-C 3.0 SuperSpeed host (G-Switch GT-USB-7052), power delivery 3.0 A; VBUS from PS2.'],- mux: [HDR.usb, 'TMUXHS221 high-speed mux \u2014 routes the shared USB 2.0 lane to Bluetooth or USB-A.'],- efuse: [HDR.usb, 'TPS25940 smart eFuse \u2014 protected VBUS path (5 A limit, back-feed block).'],- cc: [HDR.usb, 'TUSB321 Type-C CC controller.'],+ pwr: [HDR.pwr, 'Bench supplies land on push-in terminals: PS1 0–60 V / 12 A (variable), PS2 5 V / 10 A (switched), PS3 spare user rail (0–24 V), PS4 5 V board supply.'],+ meter: [HDR.meter, '20-bit INA228 monitor — bus voltage, current, power and temperature, live in the Control Panel Dashboard. Bench accuracy within 0.04 % across 5–60 V.'],+ ps2sw: [HDR.pwr, 'PS2 rail switch — soft start (≈ 0.4 ms rise) on the way to the scaffold and the USB ports. Switching PS2 off also drops USB VBUS.'],+ iso: [HDR.pwr, 'Isolated command path for the PS2 switch, so each user rail’s return can float up to ±2.5 V.'],+ usba: [HDR.usb, 'USB-A 3.0 SuperSpeed host, 5 V VBUS from PS2 at 1.5 A behind a latching eFuse. Its USB 2.0 lanes are shared with Bluetooth — mutually exclusive.'],+ usbc: [HDR.usb, 'USB-C 3.0 SuperSpeed host, 5 V VBUS from PS2 at 3.0 A behind a latching eFuse.'],+ mux: [HDR.usb, 'High-speed switch — routes the shared USB 2.0 lane to Bluetooth or the USB-A port.'],+ efuse: [HDR.usb, 'Latching eFuse on a USB VBUS path — trips on overload and stays off until reset.'],+ cc: [HDR.usb, 'USB Type-C attach and orientation controller.'], esd: [HDR.usb, 'USB ESD protection.'],- wifi: [HDR.wifi, 'M.2 Key-E slot for the AX210-class module: Wi-Fi 6E (2.4 / 5 / 6 GHz, 160 MHz, 2\u00d72 MIMO to ~2.4 Gbps) + Bluetooth 5.3. Wi-Fi on PCIe, Bluetooth on USB.'],- cm5: [HDR.cm5, 'Raspberry Pi CM5 (system side) \u2014 runs metering, switching and the Control Panel Dashboard. No user wiring lands here.'],- sd: [HDR.cm5, 'micro-SD \u2014 CM5 storage.'],- net: [HDR.cm5, 'RJ45 \u2014 workcell network uplink (system side).'],- ring: [HDR.ring, '18 blue LEDs (0402, C130724) around the logo \u2014 verification for vision-system reliability. The chase animation mirrors the real behavior.'],- bme: [HDR.sens, 'BME690 environmental sensor slot \u2014 temperature \u221240..+85 \u00b0C, 0\u2013100 %RH, 300\u20131100 hPa, gas/IAQ.'],- bmi: [HDR.sens, 'BMI270 inertial sensor slot \u2014 accel \u00b12\u201316 g, gyro \u00b1125\u20132000 \u00b0/s.'],- mic: [HDR.sens, 'MEMS microphone module (N3) \u2014 IM72D128 on I2S, acoustic capture for the dashboard.'],- sj: [HDR.sens, 'Sensor jumper \u2014 drops in to connect a sensor slot.'],- probe: [HDR.probe, 'Onboard debug probe \u2014 flashes and halts the scaffold\u2019s user MCU over SWD (stock openocd / picotool).'],- dock: [HDR.dock, 'Delivers PS1\u2013PS3 + returns, USB 2.0, SWD/UART debug and MCU boot/reset across the blade dock to the scaffold.'],- ledR: [HDR.led, 'Red status indicator (0402, C130719).'],- ledG: [HDR.led, 'Green status indicator (0402, C130723).'],- jmp: [HDR.jmp, 'Ground-bond jumper.'],- mcL: [HDR.dock, 'Large machine contact \u2014 ~20.8 A (80% derated), mates 14 AWG solid core.'],- mc: [HDR.board, 'Machine contact \u2014 medium ~6.4 A, solderless press-fit.'],- sw: [HDR.board, 'SW1 \u2014 service button (SKRPACE010).'],- ghost: ['Control Panel: Scaffold (ghost)', 'The scaffold half shown mated below \u2014 user power + I/O dock.'],- board: [HDR.board, 'CM5 carrier and smart power-distribution hub \u2014 the system half of the control panel.'],+ wifi: [HDR.wifi, 'M.2 Key-E slot for the AX210-class module: Wi-Fi 6E (2.4 / 5 / 6 GHz, 160 MHz, 2×2 MIMO) + Bluetooth 5.3. Wi-Fi on PCIe, Bluetooth on USB.'],+ cm5: [HDR.cm5, 'Raspberry Pi CM5 (system side) — runs metering, switching and the Control Panel Dashboard. No user wiring lands here.'],+ sd: [HDR.cm5, 'microSD — controller storage.'],+ net: [HDR.cm5, 'Workcell network uplink (system side).'],+ sw: [HDR.cm5, 'Power button for the workcell controller.'],+ ring: [HDR.ring, '18 blue LEDs around the logo — a visual reference for vision-system checks. The chase animation mirrors the real behavior.'],+ bme: [HDR.sens, 'BME690 environmental sensor slot — temperature −40..+85 °C, 0–100 %RH, 300–1100 hPa, gas/IAQ.'],+ bmi: [HDR.sens, 'BMI270 inertial sensor slot — accel ±2–16 g, gyro ±125–2000 °/s.'],+ mic: [HDR.sens, 'MEMS microphone module — digital audio capture for the dashboard.'],+ sj: [HDR.sens, 'Sensor jumper — drops in to connect a sensor slot.'],+ probe: [HDR.probe, 'Onboard debug probe — flashes, halts and resets the scaffold’s user MCU over SWD (verified to 31 MHz), plus a UART console.'],+ dock: [HDR.dock, 'Delivers PS1–PS3 + returns, 5 V and 3.3 V logic, SWD/UART debug, MCU boot/reset and the ID bus across the blade dock to the scaffold.'],+ ledR: [HDR.led, 'Red status indicator.'],+ ledG: [HDR.led, 'Green status indicator.'],+ jmp: [HDR.jmp, 'Configuration jumper.'],+ mcL: [HDR.dock, 'Large machine contact — ~20.8 A (80% derated), mates 14 AWG solid core.'],+ mc: [HDR.board, 'Machine contact — medium ~6.4 A, solderless press-fit.'],+ ghost: ['Control Panel: Scaffold (ghost)', 'The scaffold half shown mated below — user power + I/O dock.'],+ board: [HDR.board, 'CM5 carrier and smart power-distribution hub — the system half of the control panel.'], }; const NAME_RULES = [ [/^GHOST/, 'ghost'], [/^BME690/, 'bme'], [/^BMI270/, 'bmi'],- [/^J2$/, 'dock'],- [/^N3$/, 'mic'], [/^N1$/, 'probe'],+ [/^J1$/, 'dock'],+ [/^N2$/, 'mic'], [/^N1$/, 'probe'], [/^SJ\d/, 'sj'],- [/^(D2|D23)($|_glow|_cone)/, 'ledR'],- [/^(D3|D4)($|_glow|_cone)/, 'ledG'],- [/^(D\d+)($|_glow|_cone)/, 'ring'],- [/^(U1|U2|U3|U4)$/, 'meter'],- [/^U7$/, 'ps2sw'], [/^U13$/, 'mux'], [/^U17$/, 'efuse'], [/^U18$/, 'cc'],- [/^J9$/, 'usba'], [/^J10$/, 'usbc'], [/^J8$/, 'wifi'],- [/^(J4|J7)$/, 'cm5'], [/^J5$/, 'sd'], [/^J6$/, 'net'],- [/^(J1|J3)$/, 'pwr'],+ [/^(D2|D23)_(glow|cone)$/, 'ledR'], [/^LED(2|22|23)$/, 'ledR'],+ [/^(D3|D4)_(glow|cone)$/, 'ledG'], [/^LED(1|3)$/, 'ledG'],+ [/^D\d+_(glow|cone)$/, 'ring'], [/^LED\d+$/, 'ring'],+ [/^(U1|U3|U5|U7)$/, 'meter'],+ [/^U4$/, 'ps2sw'], [/^U2$/, 'iso'],+ [/^(U13|U19)$/, 'mux'], [/^(U17|U23)$/, 'efuse'], [/^U18$/, 'cc'],+ [/^(U8|U9|U11|U12|U20|U21|U22|U24|U25)$/, 'esd'],+ [/^J10$/, 'usba'], [/^J9$/, 'usbc'], [/^J8$/, 'wifi'],+ [/^(J5|J7)$/, 'cm5'], [/^J6$/, 'sd'], [/^J4$/, 'net'],+ [/^J2$/, 'pwr'], [/^SW1$/, 'sw'], [/^(JP\d|JMP|Adom_Jumper|GNDSPACER)/, 'jmp'], [/^MpinContact_Large/, 'mcL'],@@ -189,18 +194,19 @@ else { [/^(ETT|ETS)/, 'dock'], ]; const REGIONS = [- [0.163, 0.184, -0.105, -0.087, 'wifi'],- [0.138, 0.159, -0.126, -0.111, 'usba'],- [0.159, 0.177, -0.126, -0.111, 'usbc'],- [0.105, 0.162, -0.093, -0.070, 'cm5'],- [0.060, 0.0755, -0.1015, -0.086, 'ring'],- [0.115, 0.136, -0.124, -0.107, 'mic'],- [0.100, 0.1155, -0.127, -0.113, 'bme'],- [0.087, 0.100, -0.127, -0.113, 'bmi'],- [0.040, 0.104, -0.126, -0.100, 'dock'],- [0.018, 0.051, -0.087, -0.071, 'meter'],- [0.040, 0.090, -0.076, -0.050, 'pwr'],- [0.246, 0.267, -0.175, -0.157, 'probe'],+ [0.161, 0.184, -0.101, -0.092, 'wifi'],+ [0.141, 0.155, -0.122, -0.115, 'usba'],+ [0.162, 0.173, -0.122, -0.116, 'usbc'],+ [0.114, 0.153, -0.094, -0.070, 'cm5'],+ [0.063, 0.078, -0.1005, -0.086, 'ring'],+ [0.118, 0.133, -0.123, -0.108, 'mic'],+ [0.106, 0.117, -0.123, -0.111, 'bme'],+ [0.093, 0.105, -0.123, -0.111, 'bmi'],+ [0.079, 0.108, -0.107, -0.086, 'probe'],+ [0.028, 0.080, -0.135, -0.109, 'dock'],+ [0.018, 0.049, -0.090, -0.074, 'meter'],+ [0.027, 0.070, -0.069, -0.049, 'pwr'],+ [0.094, 0.111, -0.074, -0.052, 'net'], ]; const inv = new window.BABYLON.Matrix(); const root = scene.transformNodes.concat(scene.meshes).find(n => (n.name||'').indexOf('control-panel_workcell') === 0);@@ -283,7 +289,7 @@ if (typeof V === 'undefined') { wrap.remove(); } else { try { const viewer = V.init(wrap, { zUp: true, showViewCube: true, showGround: true });- viewer.loadModel('https://wiki.adom.inc/api/pages/adom/base-scaffold-control-panel/files/models/scaffold-q.glb?v=608c90f7').then(() => {+ viewer.loadModel('https://wiki.adom.inc/api/pages/adom/base-scaffold-control-panel/files/models/scaffold-q.glb?v=v210a').then(() => { viewer.frameModel(); try { if (viewer.toggleAxes) viewer.toggleAxes('world', false); } catch (e) {} document.getElementById('fb').remove();@@ -313,55 +319,63 @@ else { const HDR = { mini: 'RP2350A Mini (user MCU)',- usbc: 'USB-C (J1)',+ usbc: 'USB-C', usb: 'USB VBUS power path',- bulk: 'VBUS bulk capacitance',- pwr: 'Power contact field (MC1\u2013MC30)',- io: 'USER_IO contact field (MC31\u2013MC56)',+ id: 'ID EEPROM',+ pwr: 'Power contacts (MC1–MC12, MC20–MC28)',+ io: 'USER_IO contact field (MC29–MC54)',+ usbmc: 'USB contacts (MC17–MC19)', led: 'Power LED', jmp: 'Rail ground bonds',- dock: 'ET60T blade dock',- board: 'Control Panel: Scaffold',+ dock: 'Blade dock',+ board: 'Control Panel: Scaffold V2.1.0', }; const T = {- mini: [HDR.mini, 'RP2350A: dual Cortex-M33 / RISC-V @ 150 MHz, 520 KB SRAM, PIO; W25Q16JV 2 MB flash. 26 USER_IO (PWM, PIO, 4\u00d7 ADC), USB 2.0 FS dual-role.'],- miniSW: [HDR.mini, 'SW1 \u2014 SKRPACE010 boot select button.'],- miniD1: [HDR.mini, 'D1 \u2014 red 0402 power LED (LCSC C130719).'],- miniD2: [HDR.mini, 'D2 \u2014 blue 0402 status LED on GPIO25 (LCSC C130724).'],- usbc: [HDR.usbc, 'G-Switch GT-USB-7090C (LCSC C3019716). USB 2.0 dual-role, power delivery 3.0 A; VBUS sourced from PS2 \u2014 PD unavailable while PS2 floats.'],- u1: [HDR.usb, 'U1 \u2014 TPS25940ARVCR smart eFuse: 2.7\u201318 V, 5 A current limit, reverse-current block on VBUS.'],- u3: [HDR.usb, 'U3 \u2014 TUSB321RWBR Type-C CC controller (attach + role detect).'],- u4: [HDR.usb, 'U4 \u2014 TPD2EUSB30DRTR 2-channel USB ESD clamp.'],- q1: [HDR.usb, 'Q1 \u2014 AO3401A P-FET: blocks VBUS back-feed in device role.'],- rEfuse: [HDR.usb, 'eFuse set resistor \u2014 UVLO / OVP / ILIM divider for the TPS25940.'],- rCc: [HDR.usb, 'CC / configuration resistor for the Type-C controller.'],- rCd: [HDR.usb, 'R11 \u2014 5.1 k\u03a9 Rd pull-down (UFP role).'],- cDec: [HDR.usb, '100 nF decoupling.'],- bulk: [HDR.bulk, 'C5 150 \u00b5F electrolytic + C4 47 \u00b5F ceramic on the switched 5 V rail.'],- ps1: [HDR.pwr, 'PS1 \u2014 variable rail, 0\u201360 V / 12 A from dock blade P1. + and \u2212 land on medium contacts (~6.4 A each, 80% derated).'],- ps2: [HDR.pwr, 'PS2 \u2014 switched 5 V / 10 A rail from blade P2. Isolated return may float up to \u00b12.5 V unless bonded at JP2.'],- ps3: [HDR.pwr, 'PS3 \u2014 user rail from blade P3. Medium contacts, ~6.4 A each.'],- gndmc: [HDR.io, 'MC57\u2013MC65 \u2014 ground return contacts interleaved with the USER_IO rows.'],- jp1: [HDR.jmp, 'JP1 \u2014 large machine-pin jumper: bonds the PS1 return to ground. Remove to float PS1.'],- jp2: [HDR.jmp, 'JP2 \u2014 bonds the PS2 isolated return to ground; floated it may ride to \u00b12.5 V.'],- jp3: [HDR.jmp, 'JP3 \u2014 bonds the PS3 return to ground. Remove to float PS3.'],- jp4: [HDR.jmp, 'JP4 \u2014 ground bond for the USB return path.'],- posts: [HDR.jmp, '12\u00d76 machine-pin jumper stock for the rail ground bonds.'],- ccj: [HDR.dock, 'CCJ \u2014 place when VBUS is broken out through machine pins without CC termination satisfied.'],- led: [HDR.led, 'D1 \u2014 red 0402 (LCSC C130719), scaffold power indicator.'],- rLed: [HDR.led, 'R5 \u2014 10 k\u03a9 series resistor for D1.'],- dock: [HDR.dock, 'Samtec ET60T blade set: PS1/PS2/PS3 + returns, USB 2.0, SWD/UART debug, MCU boot/reset \u2014 mates to the workcell each dock.'],+ mini: [HDR.mini, 'RP2350A: dual Cortex-M33 / RISC-V @ 150 MHz, 520 KB SRAM, PIO, 2 MB flash. 26 USER_IO (PWM, PIO, 4× ADC), USB 2.0 full-speed dual-role. Programmed, reset and booted from the workcell over the dock.'],+ miniSW: [HDR.mini, 'Boot select button on the RP2350A Mini.'],+ miniD1: [HDR.mini, 'Red power indicator on the RP2350A Mini.'],+ miniD2: [HDR.mini, 'Blue user status LED on the RP2350A Mini.'],+ usbc: [HDR.usbc, 'USB 2.0 dual-role (host or device). In host role it sources 5 V VBUS from PS2 at 3.0 A; unavailable while PS2 floats.'],+ efuse: [HDR.usb, 'Latching eFuse on VBUS — 3.0 A continuous, trips at 3.3 A (bench) and stays off until reset; clamps overvoltage at 5.7 V.'],+ cc: [HDR.usb, 'Type-C controller — attach, orientation and host/device role detect.'],+ esd: [HDR.usb, 'USB data-line ESD protection.'],+ q1: [HDR.usb, 'Back-to-back VBUS blocking switch — in device role nothing back-feeds into PS2 (0 V measured at the PS2 contacts).'],+ id: [HDR.id, 'Identification memory with a factory 128-bit serial number, read by the workcell over the dock — tells the dashboard which scaffold is docked.'],+ bulk: [HDR.usb, 'Bulk capacitance on the switched 5 V VBUS rail.'],+ ps1: [HDR.pwr, 'PS1 — variable rail, 0–60 V / 12 A: + on MC1–MC4, isolated return on MC20–MC22, bonded to ground by JP1.'],+ ps2: [HDR.pwr, 'PS2 — switched 5 V / 10 A rail: + on MC5–MC8, isolated return on MC23–MC25, bonded by JP2. Floated, the return may sit up to ±2.5 V from ground.'],+ ps3: [HDR.pwr, 'PS3 — spare user rail, 0–24 V / 10 A: + on MC9–MC12, isolated return on MC26–MC28, bonded by JP3.'],+ gndmc: [HDR.io, 'Ground return contact (MC15, MC16, MC55–MC63).'],+ spare: [HDR.dock, 'Spare signal contact — a general-purpose line from the workcell controller, through the dock.'],+ jp1: [HDR.jmp, 'JP1 — large machine-pin jumper: bonds the PS1 return to ground. Remove to float PS1.'],+ jp2: [HDR.jmp, 'JP2 — bonds the PS2 return to ground; floated it may ride to ±2.5 V.'],+ jp3: [HDR.jmp, 'JP3 — bonds the PS3 return to ground. Remove to float PS3.'],+ jp4: [HDR.usbmc, 'JP4 — USB CC override: enables VBUS at MC17 for a device without CC wiring.'],+ posts: [HDR.jmp, '12×6 machine-pin jumper stock for the rail ground bonds.'],+ ccj: [HDR.usbmc, 'CC jumper — place when VBUS is broken out through machine pins without CC termination satisfied.'],+ usbmc: [HDR.usbmc, 'MC17 USB VBUS, MC18 / MC19 USB D+ / D− from the RP2350A — USB at the contact field.'],+ led: [HDR.led, 'Scaffold power indicator.'],+ dock: [HDR.dock, 'Blade dock: PS1/PS2/PS3 + returns, 5 V and 3.3 V logic, SWD/UART debug, MCU boot/reset and the ID bus — mates to the workcell each dock.'], ghost: ['Control Panel: Workcell (ghost)', 'The workcell half shown mated above: CM5 carrier and power-distribution hub.'], board: [HDR.board, 'User power and I/O dock board for the base scaffold.'], }; function ioOf(mc) {+ if (mc >= 1 && mc <= 4) return T.ps1;+ if (mc >= 5 && mc <= 8) return T.ps2;+ if (mc >= 9 && mc <= 12) return T.ps3;+ if (mc === 13 || mc === 14) return T.spare;+ if (mc === 15 || mc === 16 || (mc >= 55 && mc <= 63)) return T.gndmc;+ if (mc >= 17 && mc <= 19) return T.usbmc;+ if (mc >= 20 && mc <= 22) return T.ps1;+ if (mc >= 23 && mc <= 25) return T.ps2;+ if (mc >= 26 && mc <= 28) return T.ps3; let io = null, adc = false;- if (mc >= 31 && mc <= 34) { io = 29 - (mc - 31); adc = true; }- else if (mc >= 35 && mc <= 38) io = 25 - (mc - 35);- else if (mc >= 39 && mc <= 46) io = 19 - (mc - 39);- else if (mc >= 47 && mc <= 56) io = 9 - (mc - 47);- if (io === null) return T.gndmc;- return [HDR.io, 'MC' + mc + ' \u2192 USER_IO' + io + ' \u2014 digital I/O, PWM, PIO' + (adc ? ', ADC-capable' : '') + '. Medium contact ~6.4 A.'];+ if (mc >= 29 && mc <= 32) { io = 29 - (mc - 29); adc = true; }+ else if (mc >= 33 && mc <= 36) io = 25 - (mc - 33);+ else if (mc >= 37 && mc <= 44) io = 19 - (mc - 37);+ else if (mc >= 45 && mc <= 54) io = 9 - (mc - 45);+ if (io === null) return null;+ return [HDR.io, 'MC' + mc + ' → USER_IO' + io + ' — 3.3 V digital I/O, PWM, PIO' + (adc ? ', ADC-capable' : '') + '. Medium contact ~6.4 A.']; } const NAME_RULES = [ [/^GHOST/, 'ghost'],@@ -370,38 +384,34 @@ else { [/^(MINI_D2|mini-D2)/, 'miniD2'], [/^(U2$|Molecule_RP2350A_Mini)/, 'mini'], [/^J1$/, 'usbc'],- [/^U1$/, 'u1'], [/^U3$/, 'u3'], [/^U4$/, 'u4'], [/^Q1$/, 'q1'],- [/^(R1|R2|R3|R4|R10)$/, 'rEfuse'],- [/^(R6|R7|R8|R9)$/, 'rCc'],- [/^R11$/, 'rCd'],- [/^R5$/, 'rLed'],- [/^(C4|C5)$/, 'bulk'],- [/^(C1|C2|C3|C6)$/, 'cDec'],+ [/^U1$/, 'efuse'], [/^U3$/, 'cc'], [/^U4$/, 'id'], [/^U5$/, 'esd'], [/^Q1$/, 'q1'], [/^JP1/, 'jp1'], [/^JP2/, 'jp2'], [/^JP3/, 'jp3'], [/^JP4/, 'jp4'], [/^(JMP|Adom_Jumper|GNDSPACER)/, 'posts'], [/^CCJ/, 'ccj'],- [/^(D1$|D1_glow|D1_cone)/, 'led'],- [/^(WIRE_MC|MC)(\d+)$/, (m) => { const k = +m[2]; return k >= 57 ? T.gndmc : (k >= 31 ? ioOf(k) : null); }],+ [/^(LED1$|D1_glow|D1_cone)/, 'led'],+ [/^(WIRE_MC|MC)(\d+)$/, (m) => ioOf(+m[2])], [/^(ETT|ETS|J2)/, 'dock'], ]; const REGIONS = [- [0.1135, 0.1260, -0.0880, -0.0760, 'usbc'],- [0.1100, 0.1180, -0.0930, -0.0880, 'jp4'],- [0.0520, 0.0660, -0.0840, -0.0760, 'jp1'],- [0.0700, 0.0840, -0.0840, -0.0760, 'jp2'],- [0.0880, 0.1020, -0.0840, -0.0760, 'jp3'],- [0.0850, 0.0970, -0.1360, -0.1240, 'ccj'],- [0.0930, 0.1460, -0.0630, -0.0450, 'dock'],- [0.1220, 0.1280, -0.0710, -0.0640, 'led'],- [0.1230, 0.1370, -0.0770, -0.0610, 'u1'],- [0.1030, 0.1110, -0.0870, -0.0770, 'bulk'],- [0.1600, 0.1800, -0.0860, -0.0500, 'mini'],- [0.0430, 0.0680, -0.0950, -0.0760, 'ps1'],- [0.0680, 0.0860, -0.0950, -0.0760, 'ps2'],- [0.0860, 0.1020, -0.0950, -0.0760, 'ps3'],- [0.1020, 0.1960, -0.0950, -0.0830, 'io'],+ [0.1145, 0.1250, -0.0855, -0.0790, 'usbc'],+ [0.1120, 0.1160, -0.0920, -0.0865, 'jp4'],+ [0.0540, 0.0640, -0.0830, -0.0775, 'jp1'],+ [0.0720, 0.0820, -0.0830, -0.0775, 'jp2'],+ [0.0900, 0.1000, -0.0830, -0.0775, 'jp3'],+ [0.0930, 0.1450, -0.0620, -0.0320, 'dock'],+ [0.1230, 0.1262, -0.0675, -0.0652, 'led'],+ [0.1270, 0.1300, -0.0655, -0.0625, 'efuse'],+ [0.1260, 0.1330, -0.0725, -0.0670, 'q1'],+ [0.1290, 0.1315, -0.0765, -0.0745, 'cc'],+ [0.1780, 0.1815, -0.0540, -0.0503, 'id'],+ [0.1520, 0.1880, -0.0780, -0.0575, 'mini'],+ [0.0480, 0.0660, -0.0915, -0.0775, 'ps1'],+ [0.0660, 0.0840, -0.0915, -0.0775, 'ps2'],+ [0.0840, 0.0960, -0.0915, -0.0775, 'ps3'],+ [0.1100, 0.1222, -0.0915, -0.0865, 'usbmc'],+ [0.1222, 0.1910, -0.0915, -0.0865, 'io'], ];- T.io = [HDR.io, '26 RP2350 USER_IO lines on MC31\u2013MC56; interleaved MC57\u2013MC65 are ground returns.'];+ T.io = [HDR.io, '26 RP2350 USER_IO lines on MC29–MC54 (3.3 V, 12 mA per pin); interleaved ground returns on MC15, MC16 and MC55–MC63.']; const inv = new window.BABYLON.Matrix(); const root = scene.transformNodes.concat(scene.meshes).find(n => (n.name||'').indexOf('control-panel_scaffold') === 0); function describe(pick) {@@ -470,62 +480,56 @@ else { <img src="/api/pages/adom/base-scaffold-control-panel/files/docs/mated-assembly.gif" alt="Mated control panel assembly"> -<h2>Block Diagrams</h2>--<img src="/api/pages/adom/base-scaffold-control-panel/files/diagrams/workcell-block-diagram-user.png" alt="Control Panel: Workcell — Block Diagram (User)">--<img src="/api/pages/adom/base-scaffold-control-panel/files/diagrams/scaffold-block-diagram-user.png" alt="Control Panel: Scaffold — Block Diagram (User)">- <h2>Input power</h2> -<p>Four independent bench-supply input to the workcell control panel. Every rail is individually metered at 20-bit precision with <strong>INA228</strong>.</p>+<p>Four independent bench-supply inputs land on the workcell control panel. The user rails are individually metered at 20-bit precision with <strong>INA228</strong>; on the bench the meter reads within <strong>0.04 %</strong> of a reference meter across 5–60 V and drifts under 0.2 % over a 20-minute, 10 A soak.</p> <table> <tr><th>Rail</th><th>Rating</th><th>Description</th></tr> <tr><td><strong>PS1</strong></td><td>0–60 V / 12 A</td><td>User variable power supply with full control</td></tr>-<tr><td><strong>PS2</strong></td><td>5 V / 10 A</td><td>User enabled static supply. Isolated return may float up to <strong>±2.5 V</strong> from common</td></tr>-<tr><td><strong>PS3</strong></td><td>—</td><td>User supply</td></tr>-<tr><td><strong>PS4</strong></td><td>5 V</td><td>Internal 5 V rail</td></tr>+<tr><td><strong>PS2</strong></td><td>5 V / 10 A (4.75–5.25 V)</td><td>User-enabled switched supply with soft start; also sources USB VBUS. Held 9 A for 20 minutes on the bench</td></tr>+<tr><td><strong>PS3</strong></td><td>0–24 V / 10 A</td><td>Spare user rail, passed through to the scaffold</td></tr>+<tr><td><strong>PS4</strong></td><td>5.0–5.25 V</td><td>Board supply for the workcell controller and logic; typically 0.9 A idle, 1.3 A under load</td></tr> </table> -<p>All user power supplies may be isolated by removing ground jumpers as indicated on the scaffold control panel.</p>+<p><strong>Input limits.</strong> PS2 and PS4 must not exceed <strong>5.5 V</strong>; neither input tolerates more.</p> -<p><strong>Ground scheme.</strong> Large machine-pin jumpers bond a single return-to-ground per rail (default: bridged), so each rail's grounding is an explicit, per-project choice rather than a fixed assumption.</p>+<p><strong>Isolation and ground scheme.</strong> Each user rail's return is isolated and may sit up to <strong>±2.5 V</strong> from ground when its bond is removed. Large machine-pin jumpers on the scaffold bond a single return-to-ground per rail (default: bridged), so each rail's grounding is an explicit, per-project choice rather than a fixed assumption.</p> <h2>I/O available to the project</h2> -<p>The user is given full control of the nested <strong>RP2350A</strong>, with <strong>26 available I/O</strong> (<a href="https://wiki.adom.inc/adom/rp2350a-mini" target="_blank" rel="noopener">RP2350A Mini</a>) and <strong>USB 2.0</strong> capable of dual data roles and power delivery. Further, the workcell side of the control panel offers <strong>two USB-SS ports</strong> capable of 3.0 protocol and power delivery.</p>+<p>The user is given full control of the nested <strong>RP2350A</strong>, with <strong>26 available I/O</strong> (<a href="https://wiki.adom.inc/adom/rp2350a-mini" target="_blank" rel="noopener">RP2350A Mini</a>) and <strong>USB 2.0</strong> capable of dual data roles. Further, the workcell side of the control panel offers <strong>two USB 3.0 SuperSpeed host ports</strong>.</p> -<p><strong>Wireless.</strong> AX210-class module provides Wi-Fi 6E across all three bands (2.4 / 5 / 6 GHz) with 160 MHz channel width and 2×2 MIMO for link rates to ~2.4 Gbps, plus Bluetooth 5.3. Wi-Fi runs on PCIe and Bluetooth on USB.</p>+<p><strong>Wireless.</strong> AX210-class module provides Wi-Fi 6E across all three bands (2.4 / 5 / 6 GHz) with 160 MHz channel width and 2×2 MIMO for link rates to ~2.4 Gbps, plus Bluetooth 5.3. Wi-Fi runs on PCIe and Bluetooth on USB. Measured on the bench: <strong>636 / 815 Mbit/s</strong> over 6 GHz.</p> <p><strong>Sensing.</strong> The panel carries on-board environmental sensing (temperature, relative humidity, barometric pressure and air quality) and 6-axis motion sensing (3-axis accelerometer + 3-axis gyroscope), both available to the project through the Control Panel Dashboard. A digital microphone is also fitted for acoustic capture.</p> <h3>User MCU I/O</h3> -<p>26 user I/O reach the machine-contact field. Every line supports digital input/output, PWM and the MCU's programmable I/O; four are additionally analog-capable.</p>+<p>26 user I/O reach the machine-contact field at <strong>3.3 V logic</strong> (−0.3 to 3.6 V absolute, 12 mA per pin). Every line supports digital input/output, PWM and the MCU's programmable I/O; four are additionally analog-capable. All 26 lines were verified toggling at 250 kHz, full swing.</p> <table> <tr><th>Machine contacts</th><th>User I/O</th><th>Capabilities</th></tr>-<tr><td>MC31–MC34</td><td>IO29, IO28, IO27, IO26</td><td>Digital I/O, PWM, programmable I/O, <strong>ADC (4 analog channels)</strong>, I²C / SPI / UART alternate functions</td></tr>-<tr><td>MC35–MC38</td><td>IO25, IO24, IO23, IO22</td><td>Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions</td></tr>-<tr><td>MC39–MC46</td><td>IO19 … IO12</td><td>Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions</td></tr>-<tr><td>MC47–MC56</td><td>IO9 … IO0</td><td>Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions</td></tr>+<tr><td>MC29–MC32</td><td>IO29, IO28, IO27, IO26</td><td>Digital I/O, PWM, programmable I/O, <strong>ADC (4 analog channels)</strong>, I²C / SPI / UART alternate functions</td></tr>+<tr><td>MC33–MC36</td><td>IO25, IO24, IO23, IO22</td><td>Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions</td></tr>+<tr><td>MC37–MC44</td><td>IO19 … IO12</td><td>Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions</td></tr>+<tr><td>MC45–MC54</td><td>IO9 … IO0</td><td>Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions</td></tr> </table> <h3>USB</h3> <table> <tr><th>Port</th><th>Side</th><th>Protocol</th><th>Data role</th><th>Power</th><th>Availability</th></tr>-<tr><td><strong>USB-C</strong></td><td>Scaffold (user)</td><td>USB 2.0</td><td><strong>Dual-role</strong> — host or device</td><td>Power delivery, 3.0 A; VBUS sourced from PS2</td><td><strong>PD unavailable while PS2 is floating</strong> (isolated by removing its ground jumper)</td></tr>-<tr><td><strong>USB-C</strong></td><td>Workcell</td><td>USB 3.0 SuperSpeed</td><td>Host</td><td>Power delivery, 3.0 A; VBUS sourced from PS2</td><td><strong>PD unavailable while PS2 is floating</strong></td></tr>-<tr><td><strong>USB-A</strong></td><td>Workcell</td><td>USB 3.0 SuperSpeed</td><td>Host</td><td>Power delivery; VBUS sourced from PS2</td><td><strong>PD unavailable while PS2 is floating.</strong> Its USB 2.0 lanes are muxed with Bluetooth and are <strong>mutually exclusive</strong> — USB-A is unavailable while Bluetooth is in use</td></tr>+<tr><td><strong>USB-C</strong></td><td>Scaffold (user)</td><td>USB 2.0</td><td><strong>Dual-role</strong> — host or device</td><td>5 V VBUS from PS2, <strong>3.0 A</strong>; latching eFuse trips at 3.3 A</td><td><strong>VBUS unavailable while PS2 is floating</strong> (isolated by removing its ground jumper)</td></tr>+<tr><td><strong>USB-C</strong></td><td>Workcell</td><td>USB 3.0 SuperSpeed (5 Gb/s)</td><td>Host</td><td>5 V VBUS from PS2, <strong>3.0 A</strong>; latching eFuse trips at 3.3 A</td><td><strong>VBUS unavailable while PS2 is floating</strong></td></tr>+<tr><td><strong>USB-A</strong></td><td>Workcell</td><td>USB 3.0 SuperSpeed (5 Gb/s)</td><td>Host</td><td>5 V VBUS from PS2, <strong>1.5 A</strong>; latching eFuse trips at 1.5 A</td><td><strong>VBUS unavailable while PS2 is floating.</strong> Its USB 2.0 lanes are muxed with Bluetooth and are <strong>mutually exclusive</strong> — USB-A is unavailable while Bluetooth is in use</td></tr> </table> -<p><strong>USB behavior.</strong> In host role the board sources VBUS from the switched 5 V (PS2) rail through a protected path; in device role (for example, plugged into a PC) VBUS sourcing is off and back-feed into the supply is blocked. If VBUS is broken out through machine pins and CC termination is not satisfied, the CC jumper must be placed.</p>+<p><strong>USB behavior.</strong> In host role the board sources VBUS from the switched 5 V (PS2) rail through a protected path; a latching eFuse turns the port off on overload until it is reset. In device role (for example, plugged into a PC) VBUS sourcing is off and back-feed into the supply is blocked — 0 V measured at the PS2 contacts with a PC attached. If VBUS is broken out through machine pins and CC termination is not satisfied, the CC jumper must be placed.</p> <h2>Debug and control across the dock</h2> -<p>The dock carries the facilities needed to program and control the project's MCU without opening anything up: <strong>SWD and UART debug</strong>, plus boot and reset control of the user MCU, and low-voltage service rails. A <strong>companion dashboard application</strong> provides live control and telemetry — meter all four rails, set PS1 like a bench supply, switch rails, drive the scaffold I/O, and program the user MCU.</p>+<p>The dock carries the facilities needed to program and control the project's MCU without opening anything up: <strong>SWD and UART debug</strong>, plus boot and reset control of the user MCU, and low-voltage service rails. Bench results: SWD clean to <strong>31 MHz</strong>, UART to <strong>3 Mbaud</strong>, and boot/reset control 20 of 20 cycles. An <strong>ID EEPROM</strong> with a factory 128-bit serial number tells the workcell which scaffold is docked. A <strong>companion dashboard application</strong> provides live control and telemetry — meter the rails, set PS1 like a bench supply, switch rails, drive the scaffold I/O, and program the user MCU.</p> <h2>Machine contacts</h2> @@ -541,9 +545,25 @@ else { <p>Both ratings are <strong>contact-limited</strong> — the mating pin can carry more, so the contact sets the figure — and are quoted at 80 % derating for margin.</p> +<h3>Contact field map</h3>++<p>The scaffold carries 63 machine contacts.</p>++<table>+<tr><th>Machine contacts</th><th>Function</th></tr>+<tr><td>MC1–MC4 / MC20–MC22</td><td>PS1 + / isolated return (bonded by JP1)</td></tr>+<tr><td>MC5–MC8 / MC23–MC25</td><td>PS2 + / isolated return (bonded by JP2)</td></tr>+<tr><td>MC9–MC12 / MC26–MC28</td><td>PS3 + / isolated return (bonded by JP3)</td></tr>+<tr><td>MC13, MC14</td><td>Spare signals from the workcell controller</td></tr>+<tr><td>MC15, MC16, MC55–MC63</td><td>Ground</td></tr>+<tr><td>MC17</td><td>USB VBUS (JP4 enables it for a device without CC wiring)</td></tr>+<tr><td>MC18, MC19</td><td>USB D+ / D− (RP2350A)</td></tr>+<tr><td>MC29–MC54</td><td>USER_IO, see above</td></tr>+</table>+ <h2>Environmental</h2> -<p>The base scaffold and its control panel operate in a <strong>controlled 20 – 25 °C</strong> environment.</p>+<p>The base scaffold and its control panel operate in a <strong>controlled 20 – 25 °C</strong> environment. The workcell electronics are rated <strong>−20 to +70 °C</strong>.</p> <p>On-board sensing spans a considerably wider envelope:</p>
README.md+37−48@@ -4,6 +4,8 @@ The control panel is the electrical front door of the Base Scaffold System: it c It is a two-board pair that mate at a blade dock. One half stays with the workcell, the other rides on the base scaffold with the project. +**Current revision:** Control Panel: Workcell V2.1.0 and Control Panel: Scaffold V2.1.0. Every function on this page was exercised on the bench in the V2.1.0 test campaign; measured values are quoted where they matter.+ ## The Pair | Half | Role |@@ -15,91 +17,63 @@ It is a two-board pair that mate at a blade dock. One half stays with the workce  - ### Scaffold side  - ### Mated — how the pair comes together The two halves mate coplanar at the blade dock, with the project's molecules, jumpers and wires dropping into place:  -## Block Diagrams----- ## Input power -Four independent bench-supply input to the workcell control panel. Every rail is-individually metered at 20-bit precision with **INA228**.+Four independent bench-supply inputs land on the workcell control panel. The user rails are individually metered at 20-bit precision with **INA228**; on the bench the meter reads within **0.04 %** of a reference meter across 5–60 V and drifts under 0.2 % over a 20-minute, 10 A soak. | Rail | Rating | Description | |---|---|---| | **PS1** | 0–60 V / 12 A | User variable power supply with full control |-| **PS2** | 5 V / 10 A | User enabled static supply. Isolated return may float up to **±2.5 V** from common |-| **PS3** | — | User supply |-| **PS4** | 5 V | Internal 5 V rail |+| **PS2** | 5 V / 10 A (4.75–5.25 V) | User-enabled switched supply with soft start; also sources USB VBUS. Held 9 A for 20 minutes on the bench |+| **PS3** | 0–24 V / 10 A | Spare user rail, passed through to the scaffold |+| **PS4** | 5.0–5.25 V | Board supply for the workcell controller and logic; typically 0.9 A idle, 1.3 A under load | -All user power supplies may be isolated by removing ground jumpers as indicated on the-scaffold control panel.+**Input limits.** PS2 and PS4 must not exceed **5.5 V**; neither input tolerates more. -**Ground scheme.** Large machine-pin jumpers bond a single return-to-ground per rail-(default: bridged), so each rail's grounding is an explicit, per-project choice rather than-a fixed assumption.+**Isolation and ground scheme.** Each user rail's return is isolated and may sit up to **±2.5 V** from ground when its bond is removed. Large machine-pin jumpers on the scaffold bond a single return-to-ground per rail (default: bridged), so each rail's grounding is an explicit, per-project choice rather than a fixed assumption. ## I/O available to the project -The user is given full control of the nested **RP2350A**, with **26 available I/O**-([RP2350A Mini](https://wiki.adom.inc/adom/rp2350a-mini)) and **USB 2.0** capable of dual-data roles and power delivery. Further, the workcell side of the control panel offers-**two USB-SS ports** capable of 3.0 protocol and power delivery.+The user is given full control of the nested **RP2350A**, with **26 available I/O** ([RP2350A Mini](https://wiki.adom.inc/adom/rp2350a-mini)) and **USB 2.0** capable of dual data roles. Further, the workcell side of the control panel offers **two USB 3.0 SuperSpeed host ports**. -**Wireless.** AX210-class module provides Wi-Fi 6E across all three bands (2.4 / 5 / 6 GHz)-with 160 MHz channel width and 2×2 MIMO for link rates to ~2.4 Gbps, plus Bluetooth 5.3.-Wi-Fi runs on PCIe and Bluetooth on USB.+**Wireless.** AX210-class module provides Wi-Fi 6E across all three bands (2.4 / 5 / 6 GHz) with 160 MHz channel width and 2×2 MIMO for link rates to ~2.4 Gbps, plus Bluetooth 5.3. Wi-Fi runs on PCIe and Bluetooth on USB. Measured on the bench: **636 / 815 Mbit/s** over 6 GHz. -**Sensing.** The panel carries on-board environmental sensing (temperature, relative-humidity, barometric pressure and air quality) and 6-axis motion sensing (3-axis-accelerometer + 3-axis gyroscope), both available to the project through the Control Panel-Dashboard. A digital microphone is also fitted for acoustic capture.+**Sensing.** The panel carries on-board environmental sensing (temperature, relative humidity, barometric pressure and air quality) and 6-axis motion sensing (3-axis accelerometer + 3-axis gyroscope), both available to the project through the Control Panel Dashboard. A digital microphone is also fitted for acoustic capture. ### User MCU I/O -26 user I/O reach the machine-contact field. Every line supports digital input/output, PWM-and the MCU's programmable I/O; four are additionally analog-capable.+26 user I/O reach the machine-contact field at **3.3 V logic** (−0.3 to 3.6 V absolute, 12 mA per pin). Every line supports digital input/output, PWM and the MCU's programmable I/O; four are additionally analog-capable. All 26 lines were verified toggling at 250 kHz, full swing. | Machine contacts | User I/O | Capabilities | |---|---|---|-| MC31–MC34 | IO29, IO28, IO27, IO26 | Digital I/O, PWM, programmable I/O, **ADC (4 analog channels)**, I²C / SPI / UART alternate functions |-| MC35–MC38 | IO25, IO24, IO23, IO22 | Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions |-| MC39–MC46 | IO19 … IO12 | Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions |-| MC47–MC56 | IO9 … IO0 | Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions |+| MC29–MC32 | IO29, IO28, IO27, IO26 | Digital I/O, PWM, programmable I/O, **ADC (4 analog channels)**, I²C / SPI / UART alternate functions |+| MC33–MC36 | IO25, IO24, IO23, IO22 | Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions |+| MC37–MC44 | IO19 … IO12 | Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions |+| MC45–MC54 | IO9 … IO0 | Digital I/O, PWM, programmable I/O, I²C / SPI / UART alternate functions | ### USB | Port | Side | Protocol | Data role | Power | Availability | |---|---|---|---|---|---|-| **USB-C** | Scaffold (user) | USB 2.0 | **Dual-role** — host or device | Power delivery, 3.0 A; VBUS sourced from PS2 | **PD unavailable while PS2 is floating** (isolated by removing its ground jumper) |-| **USB-C** | Workcell | USB 3.0 SuperSpeed | Host | Power delivery, 3.0 A; VBUS sourced from PS2 | **PD unavailable while PS2 is floating** |-| **USB-A** | Workcell | USB 3.0 SuperSpeed | Host | Power delivery; VBUS sourced from PS2 | **PD unavailable while PS2 is floating.** Its USB 2.0 lanes are muxed with Bluetooth and are **mutually exclusive** — USB-A is unavailable while Bluetooth is in use |+| **USB-C** | Scaffold (user) | USB 2.0 | **Dual-role** — host or device | 5 V VBUS from PS2, **3.0 A**; latching eFuse trips at 3.3 A | **VBUS unavailable while PS2 is floating** (isolated by removing its ground jumper) |+| **USB-C** | Workcell | USB 3.0 SuperSpeed (5 Gb/s) | Host | 5 V VBUS from PS2, **3.0 A**; latching eFuse trips at 3.3 A | **VBUS unavailable while PS2 is floating** |+| **USB-A** | Workcell | USB 3.0 SuperSpeed (5 Gb/s) | Host | 5 V VBUS from PS2, **1.5 A**; latching eFuse trips at 1.5 A | **VBUS unavailable while PS2 is floating.** Its USB 2.0 lanes are muxed with Bluetooth and are **mutually exclusive** — USB-A is unavailable while Bluetooth is in use | -**USB behavior.** In host role the board sources VBUS from the switched 5 V (PS2) rail-through a protected path; in device role (for example, plugged into a PC) VBUS sourcing is-off and back-feed into the supply is blocked. If VBUS is broken out through machine pins and-CC termination is not satisfied, the CC jumper must be placed.+**USB behavior.** In host role the board sources VBUS from the switched 5 V (PS2) rail through a protected path; a latching eFuse turns the port off on overload until it is reset. In device role (for example, plugged into a PC) VBUS sourcing is off and back-feed into the supply is blocked — 0 V measured at the PS2 contacts with a PC attached. If VBUS is broken out through machine pins and CC termination is not satisfied, the CC jumper must be placed. ## Debug and control across the dock -The dock carries the facilities needed to program and control the project's MCU without-opening anything up: **SWD and UART debug**, plus boot and reset control of the user MCU,-and low-voltage service rails. A **companion dashboard application** provides live control-and telemetry — meter all four rails, set PS1 like a bench supply, switch rails, drive the-scaffold I/O, and program the user MCU.+The dock carries the facilities needed to program and control the project's MCU without opening anything up: **SWD and UART debug**, plus boot and reset control of the user MCU, and low-voltage service rails. Bench results: SWD clean to **31 MHz**, UART to **3 Mbaud**, and boot/reset control 20 of 20 cycles. An **ID EEPROM** with a factory 128-bit serial number tells the workcell which scaffold is docked. A **companion dashboard application** provides live control and telemetry — meter the rails, set PS1 like a bench supply, switch rails, drive the scaffold I/O, and program the user MCU. ## Machine contacts @@ -117,9 +91,24 @@ needle, or a bare solid-core wire. Both ratings are **contact-limited** — the mating pin can carry more, so the contact sets the figure — and are quoted at 80 % derating for margin. +### Contact field map++The scaffold carries 63 machine contacts.++| Machine contacts | Function |+|---|---|+| MC1–MC4 / MC20–MC22 | PS1 + / isolated return (bonded by JP1) |+| MC5–MC8 / MC23–MC25 | PS2 + / isolated return (bonded by JP2) |+| MC9–MC12 / MC26–MC28 | PS3 + / isolated return (bonded by JP3) |+| MC13, MC14 | Spare signals from the workcell controller |+| MC15, MC16, MC55–MC63 | Ground |+| MC17 | USB VBUS (JP4 enables it for a device without CC wiring) |+| MC18, MC19 | USB D+ / D− (RP2350A) |+| MC29–MC54 | USER_IO, see above |+ ## Environmental -The base scaffold and its control panel operate in a **controlled 20 – 25 °C** environment.+The base scaffold and its control panel operate in a **controlled 20 – 25 °C** environment. The workcell electronics are rated **−20 to +70 °C**. On-board sensing spans a considerably wider envelope:
models/scaffold-q.glb⋯ 1 unchanged line ⋯
models/workcell-q.glb⋯ 1 unchanged line ⋯