project
Adom Custom Electronic Load
Public Made by Adomby adom
Two-layer digitally controlled electronic-load prototype. Compact R11 is under active electrical, cooling and probe-access review; not a manufacturing release.
← Commit history
Compare cooling options with dimensioned rough 2D layouts and probe reservations
9 files changed
+274
README.md+2docs/cooling-options/README.md+88docs/cooling-options/layout-data.json+101docs/cooling-options/layouts.pngdocs/cooling-options/layouts.svg+1docs/cooling-options/preferred-layouts.pngdocs/cooling-options/preferred-layouts.svg+1docs/cooling-options/preferred-seller.jpgtools/build_cooling_layouts.py+81README.md+2@@ -4,6 +4,8 @@ **Watch how we built it — 3:27 narrated development tour.** [Video details and chapters](docs/process-video.md) · [Download 1080p](videos/full-edit-r10-tight/electronic-load-r10-captioned-1080p.mp4). +**New cooling-size study:** [Compare nine rough 2D layouts, including the preferred 50 mm cooler and laptop options](docs/cooling-options/README.md). Dimensions, cost snapshots, probe reservations and unverified fit assumptions are separated. The compact cooling revision remains under review.+ **Board34 / R10 prototype design completed through AIFlow — physical qualification remains.** A digitally controlled, fan-cooled constant-current load designed as an Adom molecule for the probing workcell. The compact R0 firmware envelope is 4.5–24 V at `min(3 A, 5 W/V)`; the first acceptance DUT is the 12 V-to-5 V, 1 A buck molecule. USB CDC is the preferred control-panel link, with 3.3 V UART contacts for future automated wiring. Auxiliary 5 V powers the fan and logic independently of the DUT.
docs/cooling-options/README.mdadded+88@@ -0,0 +1,88 @@+# Cooling options at actual scale — rough 2D layout study++[Back to the electronic-load project](../../README.md)++**Start with B, your preferred 50 mm cooler, and C, the 40 mm chipset cooler.** Their body sizes are much closer to this 5 W load than desktop CPU coolers. D borrows the laptop blower architecture with documented commercial parts. These are layout studies, not a new PCB design or thermal qualification.++++[Open full-size drawing](layouts.svg) · [Dimension data](layout-data.json)++## What the dimensions mean++Every panel uses the same drawing scale. The existing PCB is **72 × 104 mm**. Except I, the study retains that board outline and puts the cooler beside it to leave the board top available for probing. This requires relocating Q1 to the cooler interface and reworking its short electrical connections; these are not drop-in placements on Board34. Green rectangles are board outlines, not an assertion that the existing components have been rearranged. The teal 18 mm strip is a **proposed** probe-access reservation, not the current test-point coordinates or the full probe-head swept volume. Gold circles reserve the concept of four corner machine pins, not their drilling coordinates.++The orange planning boxes add **5 mm between board and cooler, plus 5 mm on every outside edge** for a first carrier/fastener allowance:++`width = PCB width + cooler width + 15 mm`++`length = max(PCB length, cooler length) + 10 mm`++Those clearances are design assumptions, not verified tool or airflow clearance. Wires, connectors, exhaust clearance, frame strength and probe-head travel can enlarge them. R10's 151 × 120 × 69 mm is the actual previously modeled assembly envelope; new boxes are not equally mature evidence. Heights below are cooler body heights, not complete molecule heights. Do not add these dimensions to a fabrication drawing.++## Size and mounting comparison++| Panel / option | Cooling body W × L × H, mm | PCB in sketch, mm | Side-by-side planning box, mm | Evidence / important limitation |+|---|---:|---:|---:|---|+| A — existing R10 | Sink ~76.2 × 76.1 × 50.8 | 72 × 104 | **151 × 120 × 69 actual assembly** | Historical mechanical baseline, including side fan/carrier |+| **B — preferred AliExpress chipset cooler** | **50 × 50 × 12** | 72 × 104 | **137 × 114** | Seller image; mounting feet extend vertically. Two-pin supplied fan fails tach requirement |+| C — Deeco 4010 chipset assembly | Sink 40 × 38 × 35; fan makes envelope **40 × 40 × 45** | 72 × 104 | **127 × 114** | Seller dimension image. 4020 fan increases height to 55, not plan area |+| D — Delta blower + ATS sink | Blower 45 × 45 × 10.3; sink 25 × 25 × 30 | 72 × 104 | **132 × 114** | Proposed 45 × 80 cooling bay: 45 blower + 10 transition + 25 fin length. Duct not designed |+| E — Thermalright AXP90-X36 | **94.5 × 95 × 36** including 15 mm fan | 72 × 104 | **181.5 × 114** | Manufacturer dimensions; four heat pipes; sink/fan only, adapter unaccounted for |+| F — Noctua NH-L9i | **95 × 95 × 37** | 72 × 104 | **182 × 114** | Manufacturer infosheet bounding size; use exact revision drawing before holes |+| G — Thermalright Silver Soul 110 | **94 × 94 × 110** nominal cooler | 72 × 104 | **181 × 114** | Manufacturer compact-tower reference, NOT dimensions attributed to your AliExpress tower |+| H — ThinkPad 5H40W65011/12 | **Unknown verified dimensions** | 72 × 104 | **Not established** | Dashed study uses an unverified 185 × 86 × 13 reseller lead solely to visualize its implications; illustrative box 272 × 114 |+| I — preferred cooler + smaller PCB target | 50 × 50 × 12 | **60 × 85 target only** | **125 × 95 target only** | Placement, routing, diode copper area, probe coverage and mechanical strength not established |++B's illustrative plan area is about **14% below R10**, C about **20% below**, and D about **17% below** under the stated carrier allowances. I would be about 34% smaller, but depends on an entirely unproven PCB shrink. These are bounding-box comparisons, not scaffold slot counts. Thin laptop hardware can still occupy a large area.++## Your preferred 50 × 50 × 12 mm option++[Exact listing](https://www.aliexpress.us/item/3256811747139271.html). Seller image labels a 50 mm side, 12 mm thickness and **41 mm mounting-foot pitch**. The title also mentions 26 mm bore spacing; that is insufficient to define a PCB hole pattern. Confirm which holes the two dimensions refer to, mounting-ear extents and spring-pin protrusion. The image shows a two-wire fan and specifications say two-pin. We must find a fitting tach-output fan; changing it can change the 12 mm height. It is not yet a qualified cooling module.++++Observed browser price on 13 October: $19.13 promotional/new-shopper versus $23.45 crossed out. Your supplied URL carries a different $22.05 offer. Budget **roughly $19–24 for the listed assembly before tax**, then add the feedback fan, electrical isolation, clamp and carrier. These are listing snapshots, not purchase quotes. Seller AI-generated overview was excluded from technical evidence.++++Two arrangements deserve comparison:++- **Beside the PCB (B):** 137 × 114 mm illustrative carrier; cooler leaves board top uncovered. Q1 needs an edge mounting arrangement with short connections and adequate strain relief. This is the lower-risk starting geometry for probe access.+- **On a dedicated PCB cooling bay:** an exploratory **80 × 104 mm PCB** could reserve a 50 mm cooler bay, 5 mm separation and a 20 mm probe lane across its width, leaving 5 mm total edge allowance. With the same outer carrier margin, this is a **90 × 114 mm target envelope**. It is wider than today's PCB but potentially much smaller as a complete molecule. The cooler covers part of the PCB, so every needed test point must be moved out from beneath it; other components need a real placement exercise. This is a packing hypothesis, not a fit proof.++Q1 contact insulation, clamping and package height add to the listed cooler height. The supplier's GPU/northbridge spring pins were designed for a different contact stack; neither their force nor their height is automatically suitable for TO-220. Do not machine into an unidentified cooler base or heat pipe.++## Compact commercial alternatives++**C: 40 mm chipset assembly.** [Seller listing](https://www.aliexpress.us/item/3256809091061240.html) gives a 40 × 38 × 35 mm sink and 45/55 mm total heights with 4010/4020 fans. Adjustable bracket span is advertised as 43–82 mm, not a universal square bolt pattern. Observed bare sink $5.19, 4010 assembly $8.67, 4020 assembly $9.14. The 3-pin listing still needs a verified tach pinout. This has the smallest ready-assembled body in the shortlist, at greater height than B; no verified thermal curve yet.++**D: documented blower architecture.** [Delta BFB04512HHA-CZ0T drawing, PDF page 7](https://www.delta-fan.com/Download/Spec/BFB04512HHA-CZ0T.pdf) specifies a 45 × 45 × 10.3 mm body, three mounting holes on a 38.5 mm coordinate spacing and 150 mm leads. This is a 12 V part: our existing 5 V auxiliary supply cannot power it directly. Control/feedback circuitry and the complete suffix-specific electrical interface require review. It is a blower, not a complete heatsink. The [ATS 25 × 25 × 30 mm sink](https://www.qats.com/DataSheet/ATS-FPX025025030-77-C1-R0) has mounting ears outside the fin body and 30 mm mounting pitches. Coupling its taller fin field to a 10.3 mm blower outlet needs a transition duct; the sketched 10 mm transition is only a space reservation. Pricing for this pair remains unquoted.++**E/F: standardized CPU ecosystems.** The [AXP90-X36 manufacturer page](https://www.thermalright.com/product/axp90-x36/) provides a dimensional drawing, four 6 mm heat pipes, copper base and 92 mm PWM fan. [NH-L9i manufacturer infosheet](https://cdn.noctua.at/media/noctua_nh_L9i_infosheet_en_web.pdf) gives 95 × 95 × 37 mm. These offer replacement ecosystems and documented mounting, but side mounting consumes more plan area than the present molecule. They merit a later higher-power variant, not an assumed higher power rating for this board. Current prices not verified for these exact revisions.++**G: tower reference.** [Silver Soul 110 manufacturer specifications](https://www.thermalright.com/product/silver-soul-110-white/) provide a documented 94 × 94 × 110 mm comparison. A tower saves space only relative to a larger footprint cooler; its height and mechanical leverage matter in a scaffold. Your [AliExpress tower](https://www.aliexpress.us/item/3256809684873466.html) has selectable 2/4/6-pipe and fan variants, and its actual selected-variant dimensions remain unresolved. The default $11.19 2-pipe/one-3-pin-fan selection must not inherit dimensions or capability from a six-pipe image. Adding a second fan adds depth and does not imply twice the heat capacity.++## Laptop modules: promising architecture, no universal mounting standard found++Your [ThinkPad X1 module](https://www.aliexpress.us/item/3256812397030477.html) places a blower/fin bank away from its cold plate. Its $48.99 listing offers a thin architecture, but no trustworthy dimensioned drawing was found. The 185 × 86 × 13 mm lead mentioned earlier is **not a manufacturer specification** and is not sufficient for CAD or ordering for fit. Panel H is deliberately labeled illustrative: we cannot conclude its actual molecule envelope from that lead. Rotation/overlap might reduce the box, but only if the cold plate lands on Q1 and all probe paths remain clear.++Your [ThinkPad W530 dual-contact module](https://www.aliexpress.us/item/3256813142135112.html), labeled FRU 04W3626/04W3627, likewise has unresolved overall dimensions, plate offsets and mounting heights. No invented outline is included. Its extra contact plate is unnecessary for the present D1 design and could obstruct probing. We should not choose it merely to cool both devices.++Laptop modules are model-specific mechanical assemblies. Catalog blowers such as D are a more documented way to borrow the architecture, though they still require a compatible heatsink and duct. A smaller blower by itself is not evidence of a smaller complete cooling solution.++## Mounting standards are not interchangeable++[Intel LGA115x/1200 use 75 × 75 mm and LGA1700 uses 78 × 78 mm mounting-hole pitch](https://www.ekwb.com/news/ek-to-offer-free-lga1700-upgrade-kits-for-ek-quantum-velocity-water-blocks/). Both exceed our current 72 mm board width. [AM4's pattern is 54 × 90 mm](https://www.thermalright.com/2017/02/21/thermalright-amd-am4-cpu-mount-upgrade/); fitting its hole rectangle does not establish component, pin or backplate clearance. A separate carrier can take the cooler load instead of enlarging the electrical PCB solely for socket mounting.++Fan frame dimensions and heatsink mounting patterns are separate. For example, [Noctua's 40 × 40 × 10 mm NF-A4x10 PWM](https://www.noctua.at/en/products/nf-a4x10-pwm/specifications) uses 32 × 32 mm mounting pitch. It is not automatically a drop-in replacement for the preferred cooler's inset fan. No universal GPU/chipset or laptop cold-plate mounting interface was established by this research.++## Thermal and probing checks before choosing++D1 remains PCB-cooled: the saved Board34 screen uses ~0.513 W, eight thermal vias and predicts 30.2°C still-air rise, below the 35°C board-rise limit. Shrinking its copper area invalidates that carryover assumption. Q1 is the primary cooler load; no second cold plate is required by this study.++Keep 5.5 W Q1 screening, 40°C ambient and existing temperature gates. The prior lumped sink budget is at most ~1.63 K/W before added margin. The new spatial screening suggests an extra spreading penalty at the old offset Q1 contact, so the historical R10 lumped pass is not qualification of any new arrangement. CPU TDP labels, seller wattage claims and fan RPM do not establish installed thermal performance.++Next design choice: develop **B beside the existing board** and **B on the dedicated 80 mm board bay** far enough to compare real probe access, alongside C's cheaper/taller option. Preserve USB-C edge access, four large machine pins, D1 copper, short Q1 electrical paths, independent fan supply, tach fault protection, intake/exhaust paths and access to all test points. No full 3D mockups, PCB edits, orders or power-rating changes were made for this comparison.++Research and diagram date: 13 October 2026. Supplier dimensions are nominal. Image B is the supplier's annotated product image, retained as dimension provenance; all layout drawings are original conceptual 2D work.
docs/cooling-options/layout-data.jsonadded+101@@ -0,0 +1,101 @@+[+ [+ "A",+ "Current R10 reference",+ 72,+ 104,+ 76.2,+ 76.1,+ 69,+ "151 \u00d7 120 mm actual envelope",+ "Historical assembly, not this schematic arrangement"+ ],+ [+ "B",+ "Preferred 50 mm chipset cooler",+ 72,+ 104,+ 50,+ 50,+ 12,+ "137 \u00d7 114 mm planning envelope",+ "Seller dimensions; replacement tach fan may add height"+ ],+ [+ "C",+ "40 mm chipset + 4010 fan",+ 72,+ 104,+ 40,+ 40,+ 45,+ "127 \u00d7 114 mm planning envelope",+ "38 mm sink depth; 40 mm fan controls the projection"+ ],+ [+ "D",+ "45 mm blower + ATS fin bank",+ 72,+ 104,+ 45,+ 80,+ 30,+ "132 \u00d7 114 mm planning envelope",+ "45 blower + 10 duct + 25 sink; assembly is a concept"+ ],+ [+ "E",+ "Thermalright AXP90-X36",+ 72,+ 104,+ 94.5,+ 95,+ 36,+ "181.5 \u00d7 114 mm planning envelope",+ "Manufacturer dimensions; 12 V auxiliary power needed"+ ],+ [+ "F",+ "Noctua NH-L9i",+ 72,+ 104,+ 95,+ 95,+ 37,+ "182 \u00d7 114 mm planning envelope",+ "95 \u00d7 95 conservative body from manufacturer infosheet"+ ],+ [+ "G",+ "Documented compact CPU tower",+ 72,+ 104,+ 94,+ 94,+ 110,+ "181 \u00d7 114 mm planning envelope",+ "Silver Soul 110 reference; not the unmeasured AliExpress tower"+ ],+ [+ "H",+ "ThinkPad laptop assembly",+ 72,+ 104,+ 185,+ 86,+ 13,+ "272 \u00d7 114 mm ILLUSTRATIVE ONLY",+ "Unverified reseller size; not a manufacturer fit drawing"+ ],+ [+ "I",+ "Smaller PCB + preferred cooler",+ 60,+ 85,+ 50,+ 50,+ 12,+ "125 \u00d7 95 mm EXPLORATION TARGET",+ "60 \u00d7 85 PCB not placed/routed; preserves no acceptance claim"+ ]+]
docs/cooling-options/layouts.pngadded⋯ 1 unchanged line ⋯
docs/cooling-options/layouts.svgadded+1@@ -0,0 +1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1590" viewBox="0 0 1800 1590"><rect width="1800" height="1590" fill="#101820"/><text x="35" y="45" font-family="Arial,sans-serif" font-size="30" fill="#e5edf5">Cooling choices • identical top-view scale • dimensions in millimetres</text><text x="35" y="80" font-family="Arial,sans-serif" font-size="20" fill="#e5edf5">Green = PCB Blue = cooler body Teal = proposed probe lane Orange dashed = planning boundary</text><text x="35" y="110" font-family="Arial,sans-serif" font-size="19" fill="#e5edf5">No 3D or collision claim. Cooling sits beside the PCB; Q1 must move to the edge/contact interface.</text><rect x="20" y="140" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="35" y="172" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">A Current R10 reference</text><rect x="40" y="220" width="279.35" height="222.0" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="49.25" y="234.8" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="136.2" y="257.0" width="140.97" height="140.785" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><text x="40" y="450" font-family="Arial,sans-serif" font-size="15" fill="#e5edf5">Baseline outline only; component positions schematic</text><text x="35" y="478" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">151 × 120 mm actual envelope</text><text x="35" y="511" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 69 mm assembly</text><text x="35" y="542" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">Historical assembly, not this schematic arrangement</text><rect x="615" y="140" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="630" y="172" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">B Preferred 50 mm chipset cooler</text><rect x="635" y="220" width="253.45000000000002" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="644.25" y="229.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="662.75" y="251.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="786.7" y="279.2" width="92.5" height="92.5" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="653.5" cy="238.5" r="4" fill="#e8b465"/><circle cx="653.5" cy="412.4" r="4" fill="#e8b465"/><circle cx="768.2" cy="238.5" r="4" fill="#e8b465"/><circle cx="768.2" cy="412.4" r="4" fill="#e8b465"/><rect x="771.9" y="314.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="791.7" y="325.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">50 × 50</text><text x="644.25" y="443.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><text x="630" y="478" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">137 × 114 mm planning envelope</text><text x="630" y="511" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 12 mm nominal</text><text x="630" y="542" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">Seller dimensions; replacement tach fan may add height</text><rect x="1210" y="140" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="1225" y="172" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">C 40 mm chipset + 4010 fan</text><rect x="1230" y="220" width="234.95000000000002" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="1239.25" y="229.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="1257.75" y="251.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="1381.7" y="288.45" width="74.0" height="74.0" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="1248.5" cy="238.5" r="4" fill="#e8b465"/><circle cx="1248.5" cy="412.4" r="4" fill="#e8b465"/><circle cx="1363.2" cy="238.5" r="4" fill="#e8b465"/><circle cx="1363.2" cy="412.4" r="4" fill="#e8b465"/><rect x="1366.9" y="314.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="1386.7" y="325.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">40 × 40</text><text x="1239.25" y="443.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><text x="1225" y="478" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">127 × 114 mm planning envelope</text><text x="1225" y="511" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 45 mm nominal</text><text x="1225" y="542" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">38 mm sink depth; 40 mm fan controls the projection</text><rect x="20" y="610" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="35" y="642" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">D 45 mm blower + ATS fin bank</text><rect x="40" y="690" width="244.20000000000002" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="49.25" y="699.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="67.75" y="721.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="191.70000000000002" y="721.45" width="83.25" height="148.0" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="58.5" cy="708.5" r="4" fill="#e8b465"/><circle cx="58.5" cy="882.4" r="4" fill="#e8b465"/><circle cx="173.2" cy="708.5" r="4" fill="#e8b465"/><circle cx="173.2" cy="882.4" r="4" fill="#e8b465"/><rect x="176.9" y="784.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="196.70000000000002" y="795.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">45 × 80</text><text x="49.25" y="913.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><rect x="191.70000000000002" y="721.45" width="83.25" height="83.25" rx="3" fill="#377c9d" stroke="#60768b" stroke-width="1.5" /><rect x="210.20000000000002" y="823.2" width="46.25" height="46.25" rx="3" fill="#426078" stroke="#60768b" stroke-width="1.5" /><text x="35" y="948" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">132 × 114 mm planning envelope</text><text x="35" y="981" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 30 mm nominal</text><text x="35" y="1012" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">45 blower + 10 duct + 25 sink; assembly is a concept</text><rect x="615" y="610" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="630" y="642" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">E Thermalright AXP90-X36</text><rect x="635" y="690" width="335.77500000000003" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="644.25" y="699.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="662.75" y="721.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="786.7" y="707.575" width="174.82500000000002" height="175.75" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="653.5" cy="708.5" r="4" fill="#e8b465"/><circle cx="653.5" cy="882.4" r="4" fill="#e8b465"/><circle cx="768.2" cy="708.5" r="4" fill="#e8b465"/><circle cx="768.2" cy="882.4" r="4" fill="#e8b465"/><rect x="771.9" y="784.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="791.7" y="795.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">94.5 × 95</text><text x="644.25" y="913.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><text x="630" y="948" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">181.5 × 114 mm planning envelope</text><text x="630" y="981" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 36 mm nominal</text><text x="630" y="1012" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">Manufacturer dimensions; 12 V auxiliary power needed</text><rect x="1210" y="610" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="1225" y="642" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">F Noctua NH-L9i</text><rect x="1230" y="690" width="336.7" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="1239.25" y="699.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="1257.75" y="721.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="1381.7" y="707.575" width="175.75" height="175.75" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="1248.5" cy="708.5" r="4" fill="#e8b465"/><circle cx="1248.5" cy="882.4" r="4" fill="#e8b465"/><circle cx="1363.2" cy="708.5" r="4" fill="#e8b465"/><circle cx="1363.2" cy="882.4" r="4" fill="#e8b465"/><rect x="1366.9" y="784.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="1386.7" y="795.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">95 × 95</text><text x="1239.25" y="913.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><text x="1225" y="948" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">182 × 114 mm planning envelope</text><text x="1225" y="981" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 37 mm nominal</text><text x="1225" y="1012" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">95 × 95 conservative body from manufacturer infosheet</text><rect x="20" y="1080" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="35" y="1112" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">G Documented compact CPU tower</text><rect x="40" y="1160" width="334.85" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="49.25" y="1169.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="67.75" y="1191.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="191.70000000000002" y="1178.5" width="173.9" height="173.9" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="58.5" cy="1178.5" r="4" fill="#e8b465"/><circle cx="58.5" cy="1352.4" r="4" fill="#e8b465"/><circle cx="173.2" cy="1178.5" r="4" fill="#e8b465"/><circle cx="173.2" cy="1352.4" r="4" fill="#e8b465"/><rect x="176.9" y="1254.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="196.70000000000002" y="1265.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">94 × 94</text><text x="49.25" y="1383.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><text x="35" y="1418" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">181 × 114 mm planning envelope</text><text x="35" y="1451" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 110 mm nominal</text><text x="35" y="1482" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">Silver Soul 110 reference; not the unmeasured AliExpress</text><text x="35" y="1503" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">tower</text><rect x="615" y="1080" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="630" y="1112" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">H ThinkPad laptop assembly</text><rect x="635" y="1160" width="503.20000000000005" height="210.9" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="644.25" y="1169.25" width="133.20000000000002" height="192.4" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="662.75" y="1191.45" width="33.300000000000004" height="148.0" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="786.7" y="1185.9" width="342.25" height="159.1" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="653.5" cy="1178.5" r="4" fill="#e8b465"/><circle cx="653.5" cy="1352.4" r="4" fill="#e8b465"/><circle cx="768.2" cy="1178.5" r="4" fill="#e8b465"/><circle cx="768.2" cy="1352.4" r="4" fill="#e8b465"/><rect x="771.9" y="1254.35" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="791.7" y="1265.45" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">185 × 86</text><text x="644.25" y="1383.65" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 72 × 104</text><text x="791.7" y="1205.9" font-family="Arial,sans-serif" font-size="16" fill="#e8b465">SIZE UNVERIFIED</text><text x="630" y="1418" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">272 × 114 mm ILLUSTRATIVE ONLY</text><text x="630" y="1451" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 13 mm nominal</text><text x="630" y="1482" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">Unverified reseller size; not a manufacturer fit drawing</text><rect x="1210" y="1080" width="575" height="450" rx="3" fill="#18232f" stroke="#314657" stroke-width="1.5" /><text x="1225" y="1112" font-family="Arial,sans-serif" font-size="21" fill="#e5edf5">I Smaller PCB + preferred cooler</text><rect x="1230" y="1160" width="231.25" height="175.75" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="1239.25" y="1169.25" width="111.0" height="157.25" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="1257.75" y="1191.45" width="33.300000000000004" height="112.85000000000001" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="1359.5" y="1201.625" width="92.5" height="92.5" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><circle cx="1248.5" cy="1178.5" r="4" fill="#e8b465"/><circle cx="1248.5" cy="1317.25" r="4" fill="#e8b465"/><circle cx="1341.0" cy="1178.5" r="4" fill="#e8b465"/><circle cx="1341.0" cy="1317.25" r="4" fill="#e8b465"/><rect x="1344.7" y="1236.775" width="14.8" height="22.200000000000003" rx="3" fill="#d49c47" stroke="#60768b" stroke-width="1.5" /><text x="1364.5" y="1247.875" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">50 × 50</text><text x="1239.25" y="1348.5" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">PCB 60 × 85</text><text x="1225" y="1418" font-family="Arial,sans-serif" font-size="21" fill="#e8b465">125 × 95 mm EXPLORATION TARGET</text><text x="1225" y="1451" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Cooler/body height: 12 mm nominal</text><text x="1225" y="1482" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">60 × 85 PCB not placed/routed; preserves no acceptance</text><text x="1225" y="1503" font-family="Arial,sans-serif" font-size="16" fill="#e5edf5">claim</text></svg>
docs/cooling-options/preferred-layouts.pngadded⋯ 1 unchanged line ⋯
docs/cooling-options/preferred-layouts.svgadded+1@@ -0,0 +1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="760" viewBox="0 0 1200 760"><rect width="1200" height="760" fill="#101820"/><text x="30" y="40" font-family="Arial,sans-serif" font-size="28" fill="#e5edf5">Preferred 50 mm cooler: two packing choices</text><text x="30" y="75" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">Same scale • 2D concepts • contact stack / airflow / probe travel still unresolved</text><text x="40" y="120" font-family="Arial,sans-serif" font-size="22" fill="#e5edf5">Beside existing-size PCB</text><rect x="40" y="160" width="411" height="342" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="55" y="175" width="216" height="312" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="85" y="211" width="54" height="240" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><rect x="286" y="256" width="150" height="150" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><text x="292" y="331" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">50 × 50</text><text x="40" y="550" font-family="Arial,sans-serif" font-size="22" fill="#e5edf5">PCB 72 × 104 mm</text><text x="40" y="585" font-family="Arial,sans-serif" font-size="22" fill="#e8b465">Planning carrier 137 × 114 mm</text><text x="40" y="620" font-family="Arial,sans-serif" font-size="17" fill="#e5edf5">Probe lane reserved; positions not routed</text><text x="40" y="650" font-family="Arial,sans-serif" font-size="17" fill="#e5edf5">Height = mounting stack + nominal 12 mm cooler</text><text x="670" y="120" font-family="Arial,sans-serif" font-size="22" fill="#e5edf5">Dedicated on-board cooling bay</text><rect x="670" y="160" width="270" height="342" rx="3" fill="none" stroke="#e8b465" stroke-width="1.5" stroke-dasharray="7 5"/><rect x="685" y="175" width="240" height="312" rx="3" fill="#215a46" stroke="#60768b" stroke-width="1.5" /><rect x="692.5" y="256" width="150" height="150" rx="3" fill="#245b78" stroke="#60768b" stroke-width="1.5" /><rect x="857.5" y="211" width="60" height="240" rx="3" fill="#247d80" stroke="#60768b" stroke-width="1.5" /><text x="700" y="331" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">50 × 50</text><text x="670" y="550" font-family="Arial,sans-serif" font-size="22" fill="#e5edf5">PCB 80 × 104 mm</text><text x="670" y="585" font-family="Arial,sans-serif" font-size="22" fill="#e8b465">Planning carrier 90 × 114 mm</text><text x="670" y="620" font-family="Arial,sans-serif" font-size="17" fill="#e5edf5">Probe lane reserved; positions not routed</text><text x="670" y="650" font-family="Arial,sans-serif" font-size="17" fill="#e5edf5">Height = mounting stack + nominal 12 mm cooler</text><text x="30" y="710" font-family="Arial,sans-serif" font-size="18" fill="#e5edf5">The 80 mm PCB is an exploration target. Cooler covers board area; every needed probe point must remain exposed.</text></svg>
docs/cooling-options/preferred-seller.jpgadded⋯ 1 unchanged line ⋯
tools/build_cooling_layouts.pyadded+81@@ -0,0 +1,81 @@+from pathlib import Path+import html,json+P=Path(__file__).resolve().parents[1]/'docs/cooling-options'+# Dimensions are nominal bodies. All mounting/clearance budgets are explicit concepts.+cases=[+('A','Current R10 reference',72,104,76.2,76.1,69,'151 × 120 mm actual envelope','Historical assembly, not this schematic arrangement'),+('B','Preferred 50 mm chipset cooler',72,104,50,50,12,'137 × 114 mm planning envelope','Seller dimensions; replacement tach fan may add height'),+('C','40 mm chipset + 4010 fan',72,104,40,40,45,'127 × 114 mm planning envelope','38 mm sink depth; 40 mm fan controls the projection'),+('D','45 mm blower + ATS fin bank',72,104,45,80,30,'132 × 114 mm planning envelope','45 blower + 10 duct + 25 sink; assembly is a concept'),+('E','Thermalright AXP90-X36',72,104,94.5,95,36,'181.5 × 114 mm planning envelope','Manufacturer dimensions; 12 V auxiliary power needed'),+('F','Noctua NH-L9i',72,104,95,95,37,'182 × 114 mm planning envelope','95 × 95 conservative body from manufacturer infosheet'),+('G','Documented compact CPU tower',72,104,94,94,110,'181 × 114 mm planning envelope','Silver Soul 110 reference; not the unmeasured AliExpress tower'),+('H','ThinkPad laptop assembly',72,104,185,86,13,'272 × 114 mm ILLUSTRATIVE ONLY','Unverified reseller size; not a manufacturer fit drawing'),+('I','Smaller PCB + preferred cooler',60,85,50,50,12,'125 × 95 mm EXPLORATION TARGET','60 × 85 PCB not placed/routed; preserves no acceptance claim')]+BG='#101820';TX='#e5edf5';GREEN='#215a46';BLUE='#245b78';GOLD='#e8b465'+svg=[f'<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1590" viewBox="0 0 1800 1590"><rect width="1800" height="1590" fill="{BG}"/>']+def text(x,y,s,size=18,color=TX):svg.append(f'<text x="{x}" y="{y}" font-family="Arial,sans-serif" font-size="{size}" fill="{color}">{html.escape(s)}</text>')+def rect(x,y,w,h,fill,stroke='#60768b',dash=''):svg.append(f'<rect x="{x}" y="{y}" width="{w}" height="{h}" rx="3" fill="{fill}" stroke="{stroke}" stroke-width="1.5" '+(f'stroke-dasharray="{dash}"' if dash else '')+'/>')+text(35,45,'Cooling choices • identical top-view scale • dimensions in millimetres',30)+text(35,80,'Green = PCB Blue = cooler body Teal = proposed probe lane Orange dashed = planning boundary',20)+text(35,110,'No 3D or collision claim. Cooling sits beside the PCB; Q1 must move to the edge/contact interface.',19)+for i,(id,title,bw,bh,cw,ch,z,env,note) in enumerate(cases):+ col=i%3;row=i//3; ox=20+col*595;oy=140+row*470+ rect(ox,oy,575,450,'#18232f','#314657')+ text(ox+15,oy+32,id+' '+title,21)+ s=1.85; x=ox+20;y=oy+80+ if id=='A':+ rect(x,y,151*s,120*s,'none',GOLD,'7 5');rect(x+5*s,y+8*s,72*s,104*s,GREEN)+ rect(x+52*s,y+20*s,76.2*s,76.1*s,BLUE)+ text(x,y+230,'Baseline outline only; component positions schematic',15)+ else:+ rect(x,y,(bw+15+cw)*s,(max(bh,ch)+10)*s,'none',GOLD,'7 5')+ px=x+5*s;py=y+5*s+ rect(px,py,bw*s,bh*s,GREEN)+ rect(px+10*s,py+12*s,18*s,(bh-24)*s,'#247d80')+ cx=px+(bw+5)*s;cy=py+(bh-ch)/2*s+ rect(cx,cy,cw*s,ch*s,BLUE)+ for hx in [px+5*s,px+(bw-5)*s]:+ for hy in [py+5*s,py+(bh-5)*s]:svg.append(f'<circle cx="{hx}" cy="{hy}" r="4" fill="{GOLD}"/>')+ # Interface area is proposed, not a routed MOSFET location.+ rect(px+(bw-3)*s,py+(bh/2-6)*s,8*s,12*s,'#d49c47')+ text(cx+5,cy+ch*s/2,f'{cw:g} × {ch:g}',16)+ text(px,py+bh*s+22,f'PCB {bw:g} × {bh:g}',16)+ if id=='D':+ rect(cx,cy,45*s,45*s,'#377c9d');rect(cx+10*s,cy+55*s,25*s,25*s,'#426078')+ if id=='H':text(cx+5,cy+20,'SIZE UNVERIFIED',16,GOLD)+ text(ox+15,oy+338,env,21,GOLD)+ text(ox+15,oy+371,f'Cooler/body height: {z:g} mm'+(' nominal' if id!='A' else ' assembly'),18)+ # wrap note+ import textwrap+ for n,line in enumerate(textwrap.wrap(note,58)):text(ox+15,oy+402+n*21,line,16)+svg.append('</svg>');(P/'layouts.svg').write_text(''.join(svg))+(P/'layout-data.json').write_text(json.dumps(cases,indent=2))+import cairosvg+cairosvg.svg2png(url=str(P/'layouts.svg'),write_to=str(P/'layouts.png'))++svg=[f'<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="760" viewBox="0 0 1200 760"><rect width="1200" height="760" fill="{BG}"/>']+text(30,40,'Preferred 50 mm cooler: two packing choices',28)+text(30,75,'Same scale • 2D concepts • contact stack / airflow / probe travel still unresolved',18)+for x,bw,env,title,side in [(40,72,137,'Beside existing-size PCB',True),(670,80,90,'Dedicated on-board cooling bay',False)]:+ s=3; y=160+ text(x,120,title,22)+ rect(x,y,env*s,114*s,'none',GOLD,'7 5')+ px=x+15;py=y+15+ rect(px,py,bw*s,104*s,GREEN)+ if side:+ rect(px+10*s,py+12*s,18*s,80*s,'#247d80')+ rect(px+77*s,py+27*s,50*s,50*s,BLUE)+ text(px+79*s,py+52*s,'50 × 50',18)+ else:+ rect(px+2.5*s,py+27*s,50*s,50*s,BLUE)+ rect(px+57.5*s,py+12*s,20*s,80*s,'#247d80')+ text(px+5*s,py+52*s,'50 × 50',18)+ text(x,550,f'PCB {bw} × 104 mm',22)+ text(x,585,f'Planning carrier {env} × 114 mm',22,GOLD)+ text(x,620,'Probe lane reserved; positions not routed',17)+ text(x,650,'Height = mounting stack + nominal 12 mm cooler',17)+text(30,710,'The 80 mm PCB is an exploration target. Cooler covers board area; every needed probe point must remain exposed.',18)+svg.append('</svg>')+(P/'preferred-layouts.svg').write_text(''.join(svg))+cairosvg.svg2png(url=str(P/'preferred-layouts.svg'),write_to=str(P/'preferred-layouts.png'))