

Cryocooler
Control system for STI Hybrid-98 Stirling cycle cryocooler.
- Size
- 120 × 100 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 338
- Nets
- 213
- Pads
- 1,010
- Tracks, vias
- 3,869, 740
- Pours
- 22
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 17 Feb 2026
- Updated
- 7 Nov 2026
Overview
Cryocooler is an open-source printed circuit board by jhyland87, from the jhyland87/Cryocooler-Controller repository on GitHub. It is a 4-layer board of 120 × 100 mm with 338 parts on 213 nets, routed with 3,869 tracks and 740 vias.
It is built around the SN74LV1T34DBV, 74AHCT1G125SE and LM66100DCK, with the BSS138, BSS84 and DFLS240 among its other parts. Its parts include 122 resistors, 84 capacitors, 14 transistors, 10 diodes and 5 ICs.
Main components
7SN74LV1T34DBV
SOT-23-5-40℃~+125℃ 1 1 1.6V~5.5V 10uA 5.5ns@5V,15pF 74LV 8mA 8mA Level shifting Push-pull Unidirectional SOT-23-5 Buffers, Drivers, Receivers, Transceivers ROHSTexas InstrumentsBuffers, Drivers, Receivers, Transceivers74AHCT1G125SE
SOT-353-40℃~+125℃ 1 1 4.5V~5.5V 4.7ns@5V,50pF 40uA 74AHCT 8mA 8mA Schmitt trigger Tri-State Unidirectional SOT-353 Buffers, Drivers, Receivers, Transceivers ROHSDiodes IncorporatedBuffers, Drivers, Receivers, TransceiversLM66100DCK
SC-70-6-40℃~+125℃ 1 1.5A 1.5V~5.5V 150nA 95mΩ Integrated FET Reverse current blocking、Reverse polarity protection、With enable SC-70-6 ORing Controllers ROHSTexas InstrumentsPower Distribution SwitchesBSS138
SOT-23-55℃~+150℃ 1 N-channel 1.1Ω@10V、1.2Ω@4.5V 1.2V 1.7nC@10V 17.5pF 340mA 350mW 50V 6.5pF N-Channel SOT-23 MOSFETs ROHShongjiachengMOSFETsBSS84
SOT-23-55℃~+150℃ 1 P-Channel 130mA 2.8pF 24.6pF 2V 3.2Ω@5V 300mW 4.7pF 50V 590pC@10V SOT-23 MOSFETs ROHSDiodes IncorporatedMOSFETsDFLS240
PowerDI-123-65℃~+125℃ 1 Independent 20uA@40V 2A 40A 40V 700mV@2A PowerDI-123 Schottky Diodes ROHSDiodes IncorporatedSchottky Diodes1N4148W
SOD-123150mA 1A 1V@50mA 1uA@75V 400mW 4ns 75V Independent SOD-123 Switching Diodes ROHSSTMicroelectronicsSwitching Diodes
README
hardware/kicad/README.mdCryocooler controller — KiCad schematic
KiCad 10 hierarchical schematic for the ESP32-S3 cryocooler controller. Open
cryocooler.kicad_pro. A PDF export is in cryocooler-schematic.pdf. The 4-layer board is cryocooler.kicad_pcb (see PCB layout).
GPIO assignments follow include/config/pin_config.h.
The top-level README hardware table was brought in line with these sheets and the firmware
on 2026-10-14; if the two ever disagree, the schematic and pin_config.h win.
Sheets
| Sheet | Contents |
|---|---|
cryocooler.kicad_sch (root) | ESP32-S3-WROOM-2-N32R16V, EN/BOOT, USB-C + ESD |
power_input | 12 V DC jack (5.5 x 2.1 mm), 5 A fuse, SMBJ16A TVS, bulk caps |
power_button | LTC2954CTS8-2, IRF4905S high-side P-FET, KILL# bias, CL25N8-G (SOT-89) + red/green LED |
rails_logic | AP63205 buck (12→5 V); LM66100 pair ORs +5V and USB VBUS into +5V_OR → LD1117S33 (→3.3 V) |
rails_15v | LT8582 dual converter at 1.5 MHz (datasheet p.30 circuit): boost to +16.4 V, coupled-inductor (MSD7342-103) inverter to −16.5 V → one LT3097 dual LDO (±14.7 V, 147 kΩ SET resistors); PG1 / PG2 and the LT3097 PGP / PGN go to the power_good sheet (see below) |
power_good | One node and green LED per LT3097 PG pin, a BAT54AW AND of the two nodes into PG_15V, the 3.3 V flag PG_15V_N on GPIO43 (low = both ±15 V rails good), and 20k / 39k nodes for the LT8582 PG1 / PG2; all four flags are also read by the SC18IS604 GPIOs |
signal_gen | 25 MHz osc, AD9833, OPA1656, MCP4921 + LM4040-2.5 + OPA188, AD633 |
amp_control | GPIO6 → BSS138 → BSS84 high-side 12 V to amplifier REM, red/green LED; a second BSS138 (Q9) in series with the level shifter's source is gated by PG_15V, so REM cannot turn on unless both ±15 V rails are good |
amp_current | ACS37800 (SPI) + ISO7741 + MIE1W0505 (VSEL→GND2 = 3.3 V output), 4×1 MΩ + 4.02 kΩ divider |
system_current | INA239 (SPI mode 1, CS on GPIO3) + 15 mΩ shunt in the switched 12 V rail, 49.9 Ω / 470 nF input filter, ALERT and 3V3 power LEDs |
gpio_expander ("GPIO Expander") | MCP23S08 QFN-20 on the shared SPI bus (mode 0, CS GPIO8), on unswitched +3V3: GP0-3 power-good flags, GP4 display backlight enable, GP5/GP6 READY/FAULT LEDs, GP7 spare; RESET 10 kΩ up, A0/A1 and exposed pad to GND, INT test point only |
cooling ("Water Cooling") | Fan and pump: LEDC PWM through BSS138 open-drain drivers (gates held on by 10 kΩ to +3V3, so 0% drive at reset), tach through 1 kΩ to PCNT; Alphacool ES flow tach and NTC; connector-side pull-ups sit on the switched +3V3_COOL rail |
cold_head ("Cold Head Temp") | ADS1220 (SPI mode 1, CS on GPIO44), 4-wire PT1000, 3.9 kΩ Rref, DRDY pull-up + test point; powered from the switched +3V3_CH rail |
imu | J14, a plain shielded SMT RJ45 (Amphenol RJSSE-5380, no magnetics) for the off-board Adafruit LSM6DSOX module: SPI bus, CS, INT1/INT2, +3V3, GND on T568B pairs, 100 Ω series resistors, 10 kΩ CS pull-up, shield to GND |
compressor_relay | GPIO16 → BSS138 → BSS84 high-side +12 V switch, flyback diode, red/green state LED, 2-pin right-angle Sullins SWR25X output |
indicators | READY / FAULT LEDs, WS2812B status LED behind a 74AHCT1G125 level shifter |
debug | Test points on rails, grounds, SDA and control lines; LEDs on +5V, ±15V and ISO 3V3 |
supply_switches | 5 Keystone 5110 0603 zero-ohm jumpers JP1-JP5, one per section, in series with that section's supply (see "Supply jumpers" below), each with a green LED + resistor that shows its switched rail is live |
display | FH12-14S FPC (J15) to the Phoenix 2.4" ST7789V touch display in the UCS 125-87-F-GD-D2,4 lid (pinout from datasheet 109921), TSC2046 touch controller on the shared SPI bus, BSS138 backlight switch (+5 V through 39 Ω), 10 kΩ pull-downs on the GPIO45 / GPIO46 straps |
±15 V rails and power good
The LT8582 makes +16.4 V / −16.5 V (RFBX1 182k, RFBX2 198k; the inverter needs at least 5.6 µH at its ~0.80 duty,
hence the 10 µH coupled MSD7342), and one LT3097 post-regulates them to ±14.7 V (V = 100 µA × R_SET, 147 kΩ;
+15 V would sit at the top of the LT3097's 0–15 V positive range, so the nets keep their +15V / -15V names
but run about 0.3 V low). The LT8582 output capacitors (22 µF / 25 V X7R, two on -16V5) also serve as the LT3097
input capacitors, and each LT3097 output has two 22 µF / 25 V X7R capacitors. The compensation values are the datasheet's
±12 V ones; check the loops on the bench.
The LT8582 PG1 / PG2 pins (open drain, high = within 4 % of regulation, 0.5 mA max) each pull a 20k / 39k node from
its 5 V input: 3.3 V when good, 0 V when the converter is off. Together with PGP_15V / PGN_15V they go to the
MCP23S08 GP0-3, and the amplifier module logs which rail changed (amplifier::railFlags()).
PGP and PGN are open-collector (low = bad). Each drives its own node (PGP_15V, PGN_15V): +15 V through
220 kΩ / 62 kΩ, about 3.2 V when its rail is good and 0 V when its pin pulls low or the rail is missing (thresholds
from the 432 kΩ / 10 kΩ PGFB dividers, about 13.3 V). Each node turns on a BSS138W that lights its green LED (D24
for +15 V, D25 for −15 V). A BAT54AW (common anode) with a 10 kΩ pull-up to +3V3 ANDs the nodes into PG_15V
(3.3 V only when both are good). PG_15V gates Q9 (a series BSS138 in the amplifier REM switch) and Q10 (the
PG_15V_N flag for GPIO43). The amplifier module logs every change of PG_15V_N (they show in the dashboard
console); the firmware should still check it before starting the signal generator.
GPIO map (ESP32-S3-WROOM-2)
| Signal | GPIO | Signal | GPIO |
|---|---|---|---|
| Expander CS / fan PWM | 8 / 9 | AD9833 FSYNC | 7 |
| SPI SCK / MOSI / MISO | 42 / 41 / 40 | MCP4921 CS | 5 |
| LSM6DSOX CS / INT1 / INT2 | 1 / 2 / 39 | ACS37800 SCK / MOSI / MISO / CS | 11 / 12 / 13 / 17 |
| Amp REM enable | 6 | PWR_KILL (LTC2954 KILL#) | 10 |
| FAULT / READY LED | 14 / 15 | Flow tach | 18 |
| Pump PWM / fan tach | 14 / 15 | NTC ADC | 4 |
| Pump tach | 21 | ||
| Status RGB (WS2812B) | 38 | Compressor relay enable | 16 |
| INA239 CS (shared SPI bus) | 3 | ADS1220 CS (shared SPI bus) | 44 (RXD0) |
| Display CS / D/C | 47 / 48 | Display RESET / touch CS | 46 / 45 (straps, 10 kΩ pull-downs) |
GPIO3 is a strapping pin (JTAG source); the 10 kΩ pull-up on INA239_CS keeps it high at reset, which selects the default USB-JTAG. The INA239 ALERT pin drives only its LED. GPIO43 (TXD0) toggles with ROM boot messages, so it carries no chip select; it reads the active-low PG_15V_N power-good flag through a 1 kΩ series resistor (PG_15V_N_PIN). ACS37800 chip-select is on GPIO17. GPIO26–37 are reserved
by the octal flash/PSRAM and are left unconnected.
Drawing conventions
Power symbols are always upright (supplies point up, grounds hang down) and resistors use the US zig-zag symbol
(Device:R_US). Every sheet is hand-laid in the same style: signal flow runs left to right, supplies are drawn as
shared rails with decoupling caps hanging off them, switching loops are kept compact, and nets are wired with
lines rather than net labels (labels are used only for global signals such as the GPIO nets, and for a few
local nets that would otherwise need long detours, for example the ISO7741 isolated-side SPI lines).
Bypass/decoupling capacitors for each IC are drawn together in a labelled block at the side of the sheet (supply rail, caps, ground bus) and connect to the IC through the shared power nets; regulator input/output and compensation capacitors stay in the circuit.
No-overlap text rule. Reference, value, net-label and note text may not overlap other text or a symbol body
(plus 1 mm for pin numbers). tools/textlayout.py places each field in the first free spot, hides a field only
if none exists, and gen_schematic.py exits non-zero if text overlap check reports any overlap. Pin names and
numbers drawn inside a library symbol, and labels that sit on their own wire, are outside the rule.
Regenerating
The schematic files are generated; edit the Python and re-run, don't hand-edit the .kicad_sch files.
Each build_* function in tools/gen_schematic.py sets sh.handwired = True and draws its sheet in grid cells
(1 cell = 1.27 mm) with place_ic, pose=at(column, row, rot), wire, rail_symbol, rail_flag, spur and
net_label; tools/layout.py (the auto-router) is still there for sheets that leave handwired off.
Wires are split at pins automatically, so a pin in the middle of a wire is connected.
python3 hardware/kicad/tools/make_lib.py # lib/cryocooler.kicad_sym
python3 hardware/kicad/tools/gen_schematic.py # root + sheets/tools/gen_bom.py writes the Digi-Key BOM to bom/ (see bom/README.md).
tools/verify_netlist.py checks the GPIO map against pin_config.h, missing footprints and
single-pin nets on a kicad-cli sch export netlist output; tools/compare_netlists.py compares the
connectivity of two netlists (useful after changing layout, which must not change connections; two-pin
passives may be flipped), and tools/datasheet_rules.py checks datasheet-critical connections.
Review status
Every IC was audited against its datasheet; see DESIGN_REVIEW.md for the
errors found and fixed, what was verified, and the open issues that need a decision (notably:
the 12 V → 5 V stage is now an AP63205 buck instead of the over-limit LD1117S50).
tools/datasheet_rules.py re-checks 193 datasheet-derived connections on every change.
PCB layout
Schematic ahead of PCB: the schematic has replaced the EMC2303, SC18IS604 and 74LVC1G125 with an MCP23S08 expander
and direct GPIO fan and pump control. cryocooler.kicad_pcb, fabrication/ and bom/ still describe the board with
the old parts, and the layout notes below describe that board, until the PCB is regenerated.
cryocooler.kicad_pcb is generated by tools/gen_pcb.py (run with KiCad's bundled python, which provides
pcbnew); don't hand-edit it and expect the edits to survive a regeneration.
-
Board: 130 x 110 mm (was 130 x 100; the extra 10 mm at the bottom edge makes room for a label beside every part), 4 layers: F.Cu signal / In1 solid GND (ISO_GND island) / In2 signal + 3V3 pour / B.Cu signal, GND pours and stitching vias on the outer layers. Net classes (Power 0.3 mm, Power12V 0.8 mm, Usb) live in
cryocooler.kicad_pro. -
Floor plan: every schematic module has its own outlined, labelled box on the front silkscreen (
MODULE_REGIONSintools/pcbfloorplan.py): signal generator and amp control top left, indicators top middle, MCU & USB top right (antenna overhanging the right edge over a copper keep-out), the isolated amp current block middle left (ISO_GND island with 1.5 mm keep-out bands), +-15 V rails in the middle, compressor relay and the IMU cable header (J14) down the right, 12 V input / button / 5 V and 3.3 V rails / system current bottom left, and bottom right the WATER COOLING box (EMC2303, I2C bridge, flow sensor, NTC; fan/pump/flow/NTC headers on the bottom edge) and the COLD HEAD TEMP box (ADS1220 + PT1000 header on the right edge). Parts and their passives are placed only inside their own box, debug test points join the box of the part they sit beside (the cooling-section ones overflow into free spots of the power box, since those two boxes are full), andgen_pcb.pyfails if a part leaves its box or two boxes are closer than 1.8 mm. Lines stop short of the mounting holes; labels sit on a box border. -
Supply jumpers (JP1-JP5): to debug one section at a time, pull the shunt from its jumper and that supply is cut. Each jumper sits in its own section next to the load, with a name printed beside it and a green LED (D18-D22, resistor R96-R100) that lights while the switched rail is present. Pin 1 is the main rail, pin 2 the switched rail. They are 1.27 mm headers, rated only about 1 A per pin, which is plenty for these logic rails. A part whose supply is pulled can still be fed through its signal pins (the ESD diodes), so disconnect its cable too when you need it fully dead.
Jumper Label Cuts Section JP1 SG 3V3 +3.3 V to the signal generator (AD9833 side, MCP4921) Signal Generator JP2 ±15V EN +5 V into the ±15 V generator (ADP5071), the only source of both ±15 V rails: pull it to disable +15 V and -15 V Rails ±15V JP3 ISO PS +5 V into the isolated supply (PS1), which powers the whole isolated side Amp Current (Isolated) JP4 WATER EN switched +3.3 V net +3V3_COOL: fan and pump PWM and tach pull-ups, flow tach pull-up and the NTC dividerWater Cooling JP5 HEAD EN switched +3.3 V net +3V3_CH: the ADS1220 PT1000 ADC and its DRDY pull-upCold Head Temp Pulling JP4 cuts only the 3.3 V logic: the 12 V fans, pump and flow sensor stay powered, the BSS138 drivers still control PWM (they run from GPIOs on
+3V3), but tach, flow and NTC readings stop. An unpowered ADS1220 can still clamp the shared SPI MISO line through its ESD diodes while other devices are being read, so leave JP5 fitted during normal operation. -
IMU cable (J14, RJ45): the LSM6DSOX is the Adafruit breakout (product 4438) mounted on the cryocooler. J14 pins 1-8 run top to bottom on the board as VIN, GND, SCL, SDA, DO, CS, I1, I2, the same order as the breakout's SPI-side pads (minus its 3Vo pad), so an 8-wire cable maps pin for pin. Power the breakout's
Vinfrom 3V3 so its logic stays 3.3 V, and leave its3Vopad open. Keep the cable short (it hangs on the shared SPI bus; each signal has a 100 Ω series resistor at J14). The pin names are printed beside the connector.J14 (top to bottom) Board signal Breakout pad 1 +3V3 Vin 2 GND GND 3 SPI_SCK SCL 4 SPI_MOSI SDA 5 SPI_MISO DO 6 IMU_CS (GPIO 1, 10 k pull-up on the board) CS 7 IMU_INT1 (GPIO 2) I1 8 IMU_INT2 (GPIO 39) I2 -
Connector pin labels: every terminal and header has its pin functions printed beside the pads on the side facing the board interior (
PIN_LABELSintools/gen_pcb.py): J2 +12V/GND, J3/J4 GND/+12V/TACH/PWM, J5 GND/+12V/TACH, J6 NTC/GND, J7 BTN/GND, J8 REM/GND, J9 GND/SIG (sleeve, tip), J10 F+/S+/S-/F- (4-wire PT1000: force, sense), J11/J12 +/-, J13 12V/GND, J14 as above (VIN, GND, SCL, SDA, DO, CS, I1, I2). Pin 1 is the first label in each list. -
Current path: J11 (TE 2305908-2) -> ACS37800 pins 1-4 / 5-8 -> J12 (TE 2305908-3) on 2 mm traces. J11 - and J12 - share a 2 mm F.Cu link at x 7, stitched by five vias to ISO_GND.
-
Flow:
gen_pcb.py place(placement only) orgen_pcb.py route freerouting.jar(placement, Freerouting autoroute in two rounds on F.Cu/In2/B.Cu, pours, stitching vias, island vias).finishre-opens the routed board and redoes the pours and stitching. Freerouting 2.4.1 needs Java 25. -
Checks (2026-10-17):
kicad-cli pcb drcreports 0 unconnected items and no copper violations; the only warnings are 6 silkscreen ones (reference text against reference text or a neighbour's outline, and the back-side logo over the JP2 / JP3 pads). Schematic ERC is 0 and all 175 datasheet rules pass. 302 footprints. After the water-cooling / cold-head split, Freerouting left four connections open (+12V to the amp REM section, a +15V link to C22, VIN at U11, the J12 net at R53) and two stitching vias too close to inner tracks; they were completed with a small grid router (clearance-aware, using the board's own copper as obstacles) and a 0.13 mm via nudge, then the zones were refilled. -
Checks (2026-10-20, LT3097 revision):
kicad-cli pcb drc --schematic-parityreports 0 unconnected items, 0 parity issues and no copper violations; what remains is the TP24 / U1 courtyard overlap (also present on the previous board, the ESP32 courtyard includes its antenna keep-out), 43 silkscreen warnings (more reference texts share the ±15 V box). Schematic ERC is 0 and all 193 datasheet rules pass. 310 footprints. -
Fabrication export: every
gen_pcb.pyrun andlink_usb_vbus.pyends by runningtools/export_fab.py(Gerbers, drill files, the JLCPCB zip and the front / back renders infabrication/); setSKIP_FAB_EXPORT=1to skip it, or run the script yourself after a manual board edit. -
After
route: runpython3 tools/link_usb_vbus.py(KiCad's python). Freerouting leaves the A4/B9 pair of the USB-C VBUS pads unconnected; the script adds a stub, two vias and a short B.Cu link, trying positions until DRC is clean. -
After
route(LT3097 revision, Freerouting 2.5.0): runtools/fix_route.py(KiCad's python) on the routed board. It removes GND vias that short or crowd a foreign-net track, gives pour fragments that lost their via a new one, removes signal vias that touch one layer only, links R53 pad 2 to the J12 current path and pulls the Q2 gate track away from Q4. Its two track edits match one routing result, so re-check them after any re-route. This run did not needlink_usb_vbus.py(the VBUS pair routed).gen_pcb.pyalso joins the LT3097's same-net 0.5 mm-pitch pads with locked 0.2 mm stubs (PAD_BRIDGES) and pre-places its GND pad vias before routing, and it does not write the board stackup, so copy the(stackup ...)block from the previous board into(setupafter a regeneration. -
Fine-pitch ground pads: the INA239 (U23 pad 7) and AD9833 (U4 pads 4, 9) ground pads get locked 0.35 mm / 0.2 mm via-in-pad before routing;
cryocooler.kicad_proallows 0.35 mm vias and a 0.075 mm annular ring for them (order filled/capped vias, check the fab's minimums). -
Silkscreen labels: the placer reserves a label pocket beside every part before the next one is placed (
reserve_pocketsingen_pcb.py), so each reference designator and each small label (SILK_LABELS: the RESET / BOOT / POWER buttons, the panel button connector and every indicator LED) sits right next to its own part and inside its module box. The back silkscreen carries a black-and-white trace of the cryocooler (artwork/, vectorized with potrace, stickers removed, mirrored so it reads from the back) with "STI Hybrid-98 Cryocooler Control Unit" and "ALPHA DEV UNIT" under it; a large "ALPHA" is on the front. To retrace, seeartwork/trace_cooler.py. -
IC part numbers: each U / PS part gets its part number on the top silkscreen inside its body (between the pads, largest font that fits, two lines if needed), so the soldered part covers it and it helps placement;
add_ic_labelsingen_pcb.pyruns with the silkscreen and asiclabels. Long values use shorter text (IC_LABEL_TEXT). Not labelled (no room under the body, or exposed pad): U2, U4, U8, U11, U12, U13, U15, U23, U24, U26 (SOT-23 / MSOP) and U10, U20, U21, PS1 (exposed pads / pad ring). The pin-1 arrows from the library footprints are unchanged. -
3D models: KiCad ships no model file for the SG-8002CA (U3), SRP7050TA (L2, L3) or NANO2 fuse (F1), and PS1 is our own footprint, so
tools/pcbmodels.pywrites box envelope models (lib/cryocooler.3dshapes/, sized from the datasheets; the PS1 height of 1.8 mm is an assumption) and attaches them.gen_pcb.py textsredoes the silkscreen (box lines, reference designators, part labels, logo) and adds the models on an already routed board without touching tracks.gen_pcb.py iclabelsonly adds the IC part numbers (below). -
Test points: every
TPand theDebugsheet LEDs are placed beside a pad on their net bygen_pcb.py(ground loops use fixed anchors).
Parts
338| Qty | Value | Footprint | References |
|---|---|---|---|
| 37 | 100nF | Capacitor_SMD:C_0402_1005Metric | C2, C12, C13, C14, C16, C17, C18, C19, C20, C22, C23, C28, C122, C124, C127, C128 +21 |
| 29 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R2, R13, R18, R20, R23, R24, R26, R151, R152, R162, R168, R169, R171, R172, R175 +13 |
| 14 | 100k | Resistor_SMD:R_0402_1005Metric | R5, R10, R29, R33, R34, R36, R37, R48, R77, R78, R167, R178, R179, R180 |
| 12 | 1k | Resistor_SMD:R_0402_1005Metric | R22, R35, R38, R42, R43, R76, R79, R163, R173, R174, R176, R177 |
| 10 | 1.5k | Resistor_SMD:R_0402_1005Metric | R70, R71, R72, R73, R89, R96, R99, R100, R164, R165 |
| 9 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q2, Q3, Q4, Q5, Q7, Q21, Q25, Q26, Q27 |
| 8 | 100 | Resistor_SMD:R_0402_1005Metric | R8, R9, R90, R91, R92, R93, R94, R95 |
| 7 | 1uF | Capacitor_SMD:C_0603_1608Metric | C3, C10, C32, C51, C76, C123, C126 |
| 7 | 22uF/25V X7R | Capacitor_SMD:C_1210_3225Metric | C58, C60, C67, C69, C129, C130, C131 |
| 5 | 10uF | Capacitor_SMD:C_0805_2012Metric | C1, C11, C15, C21, C45 |
| 4 | 1M | Resistor_SMD:R_1206_3216Metric | R50, R51, R52, R53 |
| 4 | 3.3k | Resistor_SMD:R_0402_1005Metric | R7, R86, R97, R98 |
| 4 | MountingHole_3.2mm_M3 | MountingHole_3.2mm_M3 | , , , |
| 3 | 10nF | Capacitor_SMD:C_0402_1005Metric | C8, C33, C35 |
| 3 | 220k | Resistor_SMD:R_0402_1005Metric | R25, R153, R155 |
| 3 | 22uF/10V | Capacitor_SMD:C_1206_3216Metric | C40, C41, C42 |
| 3 | BSS138 | Package_TO_SOT_SMD:SOT-323_SC-70 | Q22, Q23, Q24 |
| 3 | GND | TestPoint:TestPoint_Keystone_5015_Micro_Mini | TP14, TP15, TP16 |
| 3 | RED/GREEN | LED_SMD:LED_1206_3216Metric | D3, D4, D12 |
| 2 | 100nF | Capacitor_SMD:C_0805_2012Metric | C7, C72 |
| 2 | 100uF/25V | Capacitor_SMD:CP_Elec_8x10 | C6, C73 |
| 2 | 13k | Resistor_SMD:R_0402_1005Metric | R87, R88 |
| 2 | 147k | Resistor_SMD:R_0402_1005Metric | R62, R64 |
| 2 | 1uF/50V | Capacitor_SMD:C_1206_3216Metric | C68, C70 |
| 2 | 2.2k | Resistor_SMD:R_0402_1005Metric | R39, R80 |
| 2 | 20k | Resistor_SMD:R_0402_1005Metric | R157, R159 |
| 2 | 22uF/25V | Capacitor_SMD:C_1210_3225Metric | C26, C27 |
| 2 | 330 | Resistor_SMD:R_0603_1608Metric | R30, R31 |
| 2 | 39k | Resistor_SMD:R_0402_1005Metric | R158, R160 |
| 2 | 4.7k | Resistor_SMD:R_0402_1005Metric | R19, R21 |
| 2 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C5, C125 |
| 2 | 4.7uF/25V | Capacitor_SMD:C_0805_2012Metric | C56, C57 |
| 2 | 432k | Resistor_SMD:R_0402_1005Metric | R61, R63 |
| 2 | 47pF | Capacitor_SMD:C_0402_1005Metric | C64, C66 |
| 2 | 49.9 | Resistor_SMD:R_0402_1005Metric | R66, R67 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R3, R4 |
| 2 | 53.6k | Resistor_SMD:R_0402_1005Metric | R57, R58 |
| 2 | 62k | Resistor_SMD:R_0402_1005Metric | R154, R156 |
| 2 | BSS84 | Package_TO_SOT_SMD:SOT-23 | Q6, Q8 |
| 2 | DFLS240 | Diode_SMD:D_PowerDI-123 | D5, D6 |
| 2 | LM66100 | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U28, U29 |
| 2 | SN74LV1T34 | Package_TO_SOT_SMD:SOT-23-5 | U30, U31 |
| 1 | +-15V RAILS ENABLE (+5V IN) (green) | LED_SMD:LED_0402_1005Metric | D19 |
| 1 | +12V | TestPoint:TestPoint_Pad_D1.0mm | TP5 |
| 1 | +15V | TestPoint:TestPoint_Pad_D1.0mm | TP9 |
| 1 | +15V (green) | LED_SMD:LED_0402_1005Metric | D15 |
| 1 | +16V5 | TestPoint:TestPoint_Pad_D1.0mm | TP11 |
| 1 | +3V3 | TestPoint:TestPoint_Pad_D1.0mm | TP8 |
| 1 | +5V | TestPoint:TestPoint_Pad_D1.0mm | TP7 |
| 1 | -15V | TestPoint:TestPoint_Pad_D1.0mm | TP10 |
| 1 | -15V (green) | LED_SMD:LED_0402_1005Metric | D16 |
| 1 | -16V5 | TestPoint:TestPoint_Pad_D1.0mm | TP12 |
| 1 | 10uF/25V | Capacitor_SMD:C_1206_3216Metric | C37 |
| 1 | 12V IN | cryocooler:Tensility_54-00164_5.5x2.1mm_Horizontal_SMD | J2 |
| 1 | 14.7k | Resistor_SMD:R_0402_1005Metric | R60 |
| 1 | 15m | Resistor_SMD:R_2512_6332Metric | R65 |
| 1 | 182k | Resistor_SMD:R_0402_1005Metric | R55 |
| 1 | 198k | Resistor_SMD:R_0402_1005Metric | R56 |
| 1 | 1N4148W | Diode_SMD:D_SOD-123 | D13 |
| 1 | 1nF/C0G | Capacitor_SMD:C_0402_1005Metric | C121 |
| 1 | 2.2nF | Capacitor_SMD:C_0402_1005Metric | C65 |
| 1 | 2.2uF/50V | Capacitor_SMD:C_1206_3216Metric | C59 |
| 1 | 2.4k | Resistor_SMD:R_0402_1005Metric | R170 |
| 1 | 22uF | Capacitor_SMD:C_1206_3216Metric | C47 |
| 1 | 22uF | Capacitor_Tantalum_SMD:CP_EIA-3528-21_Kemet-B | C43 |
| 1 | 3.9k | Resistor_SMD:R_0402_1005Metric | R44 |
| 1 | 30k | Resistor_SMD:R_0402_1005Metric | R12 |
| 1 | 330 | Resistor_SMD:R_0402_1005Metric | R75 |
| 1 | 39 | Resistor_SMD:R_0805_2012Metric | R166 |
| 1 | 4.02k | Resistor_SMD:R_0603_1608Metric | R49 |
| 1 | 4.7nF | Capacitor_SMD:C_0402_1005Metric | C63 |
| 1 | 470k | Resistor_SMD:R_0402_1005Metric | R161 |
| 1 | 470nF | Capacitor_SMD:C_0805_2012Metric | C74 |
| 1 | 47k | Resistor_SMD:R_0402_1005Metric | R6 |
| 1 | 5A backup | Fuse:Fuse_Littelfuse-NANO2-451_453 | F1 |
| 1 | 5V (green) | LED_SMD:LED_0402_1005Metric | D14 |
| 1 | 5V_OR | TestPoint:TestPoint_Pad_D1.0mm | TP44 |
| 1 | 6.49k | Resistor_SMD:R_0402_1005Metric | R59 |
| 1 | 6.8k | Resistor_SMD:R_0402_1005Metric | R11 |
| 1 | 74AHCT1G125 | Package_TO_SOT_SMD:SOT-23-5 | U24 |
The 252 most common of 338 parts.
Questions
How big is the Cryocooler PCB?
It measures 120 × 100 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Cryocooler use?
338 parts, built around the SN74LV1T34DBV, 74AHCT1G125SE, LM66100DCK and BSS138. 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.
Where can I download the Cryocooler KiCad files?
From the jhyland87/Cryocooler-Controller repository on GitHub, at the commit this page was made from: the board is hardware/kicad/cryocooler.kicad_pcb and its schematic docs/oem-controller/kicad/oem-controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Cryocooler design in my own project?
Its repository states no licence, so its author keeps all rights: ask jhyland87 before reusing the design.
Similar boards
- 4 layers70 × 97 mm

- 6 layers147.3 × 95.9 mm

Zoutwachter measurement
Multiflexmeter/PZLD-Zoutwachter
Automated groundwater conductivity readout based CN0359
335 parts - 4 layers106 × 63.5 mm

- 2 layers83 × 127 mm

Numpad
blafr103/pico-numpad
Hand-wired 17-key USB numpad on Pi Pico W. CircuitPython, diode matrix, event-driven scanning.
120 partsMIT - 2 layers166 × 105 mm

Pico synth sandbox
relic-se/PicoSynth_Sandbox-hardware
Raspberry Pi Pico digital synthesizer board with I2S stereo audio i/o, MEMS microphones, MIDI i/o, a capacitive keybed, 1602 display, 2 rotary encoders, and LiPo battery. Designed for use with CircuitPython and synthio.
184 parts26GPL-3.0 - 4 layers65 × 56 mm

Canary hat
danbrunski/canary
Four 25 F cells in series for CANary-PWR's LTC3350 hold-up, on a lead (design record: docs/CANary-PWR-Spec.md §P4). The board has no active parts: four cells, an NTC, two Kelvin net ties and a Micro-Fit 2 × 5 header.
66 parts - 2 layers72.5 × 55 mm

- 6 layers186 × 160 mm

Open TWIST rev0
louisreg/Open-TWIST
An open-source and open-hardware benchtop neurostimulator offering precise, programmable, and arbitrary waveform generation for neuroscience research.
824 parts