Skip to the content
4 layers82.5 × 82.5 mmPVDX ADCS PMB, the printed circuit board in 3D

Avionics files related to ADCS and Perovskite schematics, pcb design, and documentation

Size
82.5 × 82.5 mm
Copper layers
4
Thickness
1.6 mm
Parts
114
Nets
112
Pads
481
Tracks, vias
1,351, 185
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Aug 2026
Updated
29 Sep 2026

Overview

PVDX ADCS PMB is an open-source printed circuit board by BrownSpaceEngineering, from the BrownSpaceEngineering/PVDX-ADCS-PMB repository on GitHub. It is a 4-layer board of 82.5 × 82.5 mm with 114 parts on 112 nets, routed with 1,351 tracks and 185 vias.

It is built around the INA226AIDGSR, TLV9001IDCKR-MS and ADG734BRUZ, with the MCP23017-E/SO among its other parts. Its parts include 39 capacitors, 37 resistors, 19 ICs and 7 connectors.

Main components

4

README

README.md

PVDX-ADCS-PMB

Combined ADCS actuation and Perovskite Measurement Board. Drives magnetorquers for attitude control and performs IV-sweep measurement of the perovskite solar cell payload.

Status

  • Design phase: Ready for review
  • Current rev: rev-1.1
  • Contributors: Nick Cavallo, Kelly Lin, Brandon Montoya

System overview

This board serves two subsystems on one physical PCB:

  • ADCS (Attitude Determination and Control System): drives the magnetorquers used for attitude control, via H-bridge drivers.
  • PMB (Perovskite Measurement Board): performs IV-sweep characterization of the perovskite payload cells (pixels PX01–PX16 across devices DV01–DV04), amplifying photodiode signal and switching between measurement channels.

Board sheets:

  • Connectors — Pin assignments for all board connectors: magnetorquers (MTQ), perovskite devices (PVK), and photodiodes (PD).
  • Magnetorquers — Magnetorquer drive circuitry, built around DRV8837C H-bridge drivers.
  • Perovskites — Perovskite cell IV-sweep measurement path, using INA226 current-sense for the current side of the sweep. Cell parameters this circuit is designed against: Isc = 5 mA, Voc = 1.1 V, sweep range 0–1.2 V, RSH1 = 10 Ω.
  • Photodiodes — Photodiode signal amplification via TLV9001 op-amp, with ADG734BRUZ analog mux for channel switching between pixels.

Repo layout

text
PVDX-ADCS-PMB/
├── PVDX-ADCS-PMB.kicad_pro / .kicad_sch / .kicad_pcb / .step
├── fp-lib-table, sym-lib-table, design-block-lib-table
├── schematics/          # sub-sheets
│   ├── connectors.kicad_sch
│   ├── magnetorquers.kicad_sch
│   ├── perovskites.kicad_sch
│   └── photodiodes.kicad_sch
├── libs/
│   ├── footprints.pretty/
│   ├── symbols/
│   ├── 3dmodels/
│   └── Library.kicad_blocks/
│       └── MTQ_Driver.kicad_block/   # deprecated
└── manufacturing/
    └── rev-<N>_<date>/
        ├── gerbers/
        ├── bom/
        └── plots/

Key design notes

  • Sweep range narrowed to 0–1.2V (from originally spec'd -0.2–1.2V): simplifies the voltage control chain to single-supply operation — no negative rail needed for the DAC/opamp reference path.
  • Pixel selection via MCP23017 + ADG734 switches: MCU sets one of 16 MCP23017 GPIO pins high over I2C to route that pixel's positive terminal to the measurement subcircuit. All other pixels are simultaneously routed through resistors to ground via the same ADG734 switches, so idle pixels have a defined thermal/electrical path (cooling) rather than floating while unmeasured.
  • Voltage control decouples DAC range from cell range: DAC output spans 0–3.3V; a voltage divider steps this down to the cell's 0–1.2V operating range, and the TLV9001 opamp sources/sinks whatever current the pixel needs to actually hold that divided setpoint. This avoids needing a dedicated low-voltage DAC — tradeoff is the opamp must supply the full sweep current (up to 5mA design max) at low output impedance.
  • Current/voltage reading via INA226 shunt, not a dedicated current-sense element: current is inferred from shunt voltage across a 10Ω shunt resistor, consistent with the confirmed RSH1 = 10Ω cell parameter. Design current range: 5mA max, 2–3mA expected typical.
  • Fixed I2C addresses: MCP23017 at 0b0100000, INA226 at 0b1000000 (address-pin strapped) — confirm no collisions with other devices sharing this board's I2C bus before finalizing layout.
  • 4-layer stackup: F.Cu (digital), In1.Cu (GND plane), In2.Cu (+3V3 plane), B.Cu (analog) — keeps the INA226 shunt-reading path referenced to the internal GND plane rather than sharing a layer with ADG734 switching noise.
  • Manual routing over autorouting: FreeRouting v2.3.0 proved unreliable for this board's density/isolation requirements; routing is done by hand.
  • KiCad 10 Design Blocks unreliable for layout replication: MTQ_Driver Design Block is reused at the schematic level only; PCB-side placement is manual (Swap command), not trusted to Design Block replication.

Manufacturing history

RevDateNotesLocation
1.19/4/26Prepared for fabricationmanufacturing/rev-1.0_2026-05-15/

Open items

  • Send out for fab
  • Verify new feedback impedance for PD amplifier circuit

Parts

114
QtyValueFootprintReferences
18150pCapacitor_SMD:C_0603_1608MetricC45, C46, C47, C48, C49, C50, C51, C52, C53, C54, C55, C56, C57, C58, C59, C60 +2
182k2Resistor_SMD:R_0603_1608MetricR40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55 +2
16100RResistor_SMD:R_0603_1608MetricR3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18
11100nCapacitor_SMD:C_0603_1608MetricC37, C38, C39, C40, C41, C42, CBY2, CBY6, CBY7, CBY8, CBY9
10100nCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C4, C5, C6, C7, C8, C9, CBY5
9OPA2381AIDGKRfootprints:DGK8U11, U12, U13, U14, U15, U16, U17, U18, U19
4ADG734BRUZfootprints:RU_20_ADIU6, U7, U8, U9
4MountingHolefootprints:MountingHole_3.4mm_M3_PVDXH1, H2, H3, H4
322ufootprints:GRM18xCB1, CB2, CB3
3DRV8837CDSGRfootprints:DSG8_P9X1P6_TEXU3, U4, U10
110RResistor_SMD:R_0603_1608MetricRSH1
110kResistor_SMD:R_0603_1608MetricR37
112kResistor_SMD:R_0603_1608MetricR2
121kResistor_SMD:R_0603_1608MetricR1
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3
1Conn_01x09Connector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_VerticalJ7
1Conn_01x17Connector_PinHeader_2.54mm:PinHeader_1x17_P2.54mm_VerticalJ5
1Conn_01x18footprints:FH34SRJ18S05SH50J2
1Conn_02x18_Row_Letter_LastConnector_PinHeader_2.54mm:PinHeader_2x18_P2.54mm_VerticalJ1
1INA226AIDGSRPackage_SO:TSSOP-10_3x3mm_P0.5mmU2
1LOGOfootprints:hotdogG***
1LOGOfootprints:snoopyG***
1LOGOLOGOG***
1MCP23017-E/SOPackage_SO:SOIC-28W_7.5x17.9mm_P1.27mmU5
1NetTie_2NetTie:NetTie-2_SMD_Pad0.5mmNT1
1TLV9001IDCKRPackage_TO_SOT_SMD:SOT-353_SC-70-5U1

More from BrownSpaceEngineering/PVDX-ADCS-PMB

1
  • 4 layersMTQ Driver, the printed circuit board in 3D

    MTQ Driver

    BrownSpaceEngineering/PVDX-ADCS-PMB

    Avionics files related to ADCS and Perovskite schematics, pcb design, and documentation

    4 parts1

Similar boards

  • 6 layers43 × 82.4 mmCmd z5, the printed circuit board in 3D

    Cmd z5

    befinitiv/cmd-z5-pager

    Replacement PCB & Software to turn Sony CMD-Z5 into a Meshtastic/Lorawan pager

    120 parts
  • 4 layers50.8 × 69.9 mmTagbase lipo v1, the printed circuit board in 3D

    Tagbase lipo v1

    tag-designs/hardware

    Hardware designs for tags and bases

    50 parts2CERN-OHL-P-2.0
  • 2 layers208.8 × 396.9 mmFerris, the printed circuit board in 3D

    Ferris

    pierrechevalier83/ferris

    A low profile split keyboard designed to satisfy one single use case elegantly

    145 parts1.3k
  • 4 layers103.5 × 90.6 mmEVE PCB V4, the printed circuit board in 3D

    EVE PCB V4

    vishhvaan/eve-pi

    The EVolutionary biorEactor (EVE)

    102 parts15MIT
  • 4 layers100 × 100 mmBedberry, the printed circuit board in 3D

    Bedberry

    DarwinInnovation/bedberry

    Open source PCB for bed/chair control

    88 parts1MIT
  • 4 layersStereo heli, the printed circuit board in 3D

    Stereo heli

    Kronos3/stereo-heli

    Stereo Vision Quadcopter

    173 parts1Apache-2.0
  • 2 layers109.5 × 119.5 mmEngineData, the printed circuit board in 3D

    EngineData

    techie66/EngineDataLogger-EngineData

    Arduino code for SleepyPi that is attached to main datalogger. Reads engine sensors.

    100 parts1GPL-2.0
  • 2 layers95 × 95 mmFront controls, the printed circuit board in 3D

    Front controls

    techie66/EngineDataLogger-FrontControls

    Arduino code for front controls device.

    135 parts1GPL-2.0

Questions

How big is the PVDX ADCS PMB PCB?

It measures 82.5 × 82.5 mm and has 4 copper layers, 1.6 mm thick.

What parts does the PVDX ADCS PMB use?

114 parts, built around the INA226AIDGSR, TLV9001IDCKR-MS, ADG734BRUZ and MCP23017-E/SO. 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 PVDX ADCS PMB KiCad files?

From the BrownSpaceEngineering/PVDX-ADCS-PMB repository on GitHub, at the commit this page was made from: the board is PVDX-ADCS-PMB.kicad_pcb and its schematic PVDX-ADCS-PMB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PVDX ADCS PMB design in my own project?

Its repository states no licence, so its author keeps all rights: ask BrownSpaceEngineering before reusing the design.