Circuit review & bench-test guide
AXS-044 — PMS5003 particulate-matter carrier PMOD module
Document purpose#
This document explains the axs-044-particulate carrier at component level and turns the design evidence into a manual-review and bench-test plan. It is based on generate_design.py, the generated schematic, the README, and the Plantower PMS5003 data manual.
The board is an unfabricated prototype: schematic generated, ERC clean (0/0), netlist reviewed, no PCB layout, no fabricated board, no BOM export, no bench results. Two connector MPNs are TBD:. The J2 pad-to-pin mapping is explicitly flagged by the design itself as unverified against hardware.
1. What the board does#
The carrier adapts a Plantower PMS5003 laser-scattering particulate sensor (PM1.0/PM2.5/PM10) to a PMOD Type 3 (UART) socket with two control extras: SET (sleep) on PMOD pin 1 and RESET on PMOD pin 7. The PMS5003 is 5 V powered — its fan needs 5 V — with 3.3 V logic, so external 5 V enters on screw terminal J3 and the PMOD stays strictly 3.3 V. The sensor streams fixed 32-byte frames (start 0x42 0x4D) at 9600 baud in active mode.
Functional block diagram#
EXT 5 V bench supply ──> J3 ──┬──> J2 pins 1/2 (VCC) ──> PMS5003
├── C1 100 nF
└── C2 10 µF
PMOD host (ECP5) J1 PMS5003 (via its supplied cable, J2 2x5 1.27 mm)
pin 1 PM_SET ────┬───────────────────────────────> SET (R2 10 k pull-up to 3V3)
pin 7 PM_RESET_N ┬───────────────────────────────> RESET (R3 10 k pull-up to 3V3)
pin 2 TXD ───────────────────────────────────────> RX
pin 3 RXD <── R1 100 Ω ────────────────────────── TX (PM_TX)
pins 5/11 GND ── common ground ── J2 pins 3/4 ── J3 GND
pins 6/12 3V3 ── pull-up rail + decoupling reference only (never powers the sensor)
2. Safety and scope boundaries#
- The PMS5003 contains a laser diode. It is enclosed, but do not open the metal shell ("do not break up the sensor" — Plantower), and stop using a unit with a damaged housing.
- The metal shell is internally connected to GND (Plantower installation note). Do not let it touch any other node, and account for it when probing.
- Never feed 5 V into any PMOD pin. The 5 V domain is J3, C1, C2, and J2 pins 1/2 only.
- Plantower cautions against sustained use in high-concentration environments (kitchens, water mist, outdoors without protection); bench smoke tests should be brief.
- Use a current-limited supply (≈300 mA) for first power-up.
3. Supply sequencing, common ground, and no-host behavior#
- Common ground first. J3 GND, J2 pins 3/4, and PMOD GND are one net. Buzz continuity before power; never feed J3 from a supply with a separate ground path.
- Recommended order: PMOD host on first, then external 5 V. The sensor's SET/RESET idle states are guaranteed by R2/R3 pulling to the host 3V3, so the 3V3 rail should exist before the sensor boots. Power down in reverse (5 V off first).
- 5 V with no PMOD host attached: the sensor runs (its SET/RESET are also pulled up internally, per the datasheet's circuit attentions) and drives UART frames into R1 toward an open pin — harmless. R2/R3 then tie SET/RESET to a dead 3V3 net; the sensor's internal pull-ups leak µA-level current through 10 k into that net — benign.
- 5 V with the host attached but unpowered is prohibited: PM_TX drives ≈3.3 V through R1 (100 Ω) into the unpowered FPGA input and back-powers the 3V3 rail through its protection diode at up to tens of mA; SET/RESET internal pull-ups add a smaller path through R2/R3.
4. Plug-in module verification (read before first power)#
Mandatory section. The PMS5003's connector is the single most error-prone part of this design, and the design itself flags it.
4.1 Connector and pin-order check#
Two facts must be reconciled on real hardware:
- The carrier assumes the widely documented 10-pin layout (1.27 mm 2×5, pad N = sensor pin N): 1 VCC, 2 VCC, 3 GND, 4 GND, 5 RESET, 6 NC, 7 RX, 8 NC, 9 TX, 10 SET.
- The Plantower data manual V2.3 prints an 8-entry pin table: 1 VCC, 2 GND, 3 SET, 4 RX, 5 TX, 6 RESET, 7/8 NC. Later Plantower documents and the shipped 1.27 mm cable correspond to the 10-pin layout, but note that RESET and SET sit at different positions in the two tables. If the purchased unit follows the 8-pin table, plugging it into a 10-pin-wired carrier would put GND on a VCC pad and SET on a GND pad.
Resolution procedure, sensor in hand and carrier unpowered:
- Identify the connector on the purchased PMS5003 (count positions: 2×5, 1.27 mm) and locate its pin-1 marking (Plantower's drawing shows PIN1 at one end of the recessed header; the supplied cable is keyed).
- With a DMM in continuity mode from the sensor end of the supplied cable, map each cable position to a sensor pin. The shell is GND — use it to identify the GND positions confidently.
- Buzz each cable position through to the carrier J2 pads and confirm: VCC positions land on the EXT_5V net (to J3 pin 1), GND positions on GND, TX on the R1 side, RX on the TXD net, SET on PM_SET, RESET on PM_RESET_N.
- Verify the mated orientation cannot be reversed (shrouded/keyed header chosen for J2 — the MPN is still
TBD:, so this property must be part of the part selection). - Only then apply power. Record the mapping with photos.
4.2 Plug-in key specifications (Plantower PMS5003 manual V2.3, 2016-06-01)#
| Item | Manufacturer value | Bench relevance |
|---|---|---|
| Supply | 5.0 V typ (4.5–5.5 V) | J3 setting; fan is the reason 3.3 V cannot work |
| Active current | ≤100 mA | Supply sizing; expect a fan spin-up surge at power-on |
| Standby current | ≤200 µA | Sleep-mode verification target (SET low) |
| Logic | 3.3 V TTL: L < 0.8 V, H > 2.7 V | Direct PMOD wiring is legitimate; a 5 V host would need level conversion (not our case) |
| SET pin | High or floating = run; low = sleep; internally pulled up | R2 duplicates the pull-up on-carrier; host drives low to sleep |
| RESET pin | Active-low reset; internally pulled up | R3 duplicates; host drives low to reset |
| Wake-up time | Stable data ≥30 s after wake from sleep (fan performance) | Do not grade data in the first 30 s |
| UART | 9600 baud, 8N1 | HDL UART setting |
| Frame | 32 bytes: 0x42 0x4D, length (=28), 13 data words, 16-bit checksum = sum of all preceding bytes | Parser and bench decode |
| Data | PM1.0/2.5/10 in CF=1 and atmospheric calibrations; particle counts >0.3/0.5/1.0/2.5/5/10 µm per 0.1 L | Two calibrations differ by design — not a fault |
| Modes | Active (default; 2.3 s stable / 200–800 ms fast interval) and passive (0xE2 read, 0xE1 mode, 0xE4 sleep/wake) | Active mode expected at first power |
| Response | <1 s single, ≤10 s total | Smoke-test timing |
| Lifetime | MTTF ≥ 3 years (fan-limited) | Soak expectations |
5. Component-by-component review#
#FLG01–#FLG03 are ERC power flags, not physical parts.
| Ref. | Part / value | Function and why needed | If absent/open | If shorted, wrong, or misassembled |
|---|---|---|---|---|
| J1 | 2×6 right-angle PMOD plug (MPN TBD:) | Host interface; SET on pin 1, RESET_N on pin 7, UART on 2/3 | No host link | Mirrored assembly puts rails on signals — verify pin-1 orientation |
| J2 | 1.27 mm 2×5 shrouded header (MPN TBD:) | Mates the PMS5003 cable, pad N = sensor pin N | No sensor | Wrong pad-to-pin mapping or unkeyed part allows reversed mating: 5 V onto GND/SET — see 4.1 |
| J3 | Phoenix MKDS 1,5/2-5,08 screw terminal (MPN TBD:) | External 5 V entry | Sensor never powers | Reversed polarity risks the sensor; loose contact browns out the fan |
| R1 | 100 Ω 0603, Yageo RC0603FR-07100RL | Series protection on sensor-driven TX | Loses fault-current limiting | Open: no data at PMOD pin 3 |
| R2 | 10 kΩ 0603, Yageo RC0603FR-0710KL | SET pull-up to 3V3: sensor runs if host leaves pin 1 alone | Sensor still runs on its internal pull-up, but the idle level then depends on the sensor alone | Short to 3V3 prevents the host from ever sleeping the sensor |
| R3 | 10 kΩ 0603, Yageo RC0603FR-0710KL | RESET pull-up to 3V3: sensor out of reset by default | Same fallback as R2 | Short to 3V3 prevents host reset; solder bridge to GND holds the sensor in permanent reset |
| C1 | 100 nF 16 V X7R, Murata GRM188R71C104KA01D | High-frequency decoupling at the header | Noise on the sensor supply | Short kills EXT_5V |
| C2 | 10 µF 10 V X5R, Murata GRM21BR61A106KE19L | Bulk for fan start-up surge | Supply droop at spin-up; possible boot loops | Short kills EXT_5V |
Note: Plantower says SET and RESET "should not be connected if without usage" because they are internally pulled up. The carrier connects them through its own 10 k pull-ups plus host pins — functionally equivalent to "unused" when the host tri-states, and controllable when the host drives. This is a deliberate, defensible deviation; verify on the bench that the idle levels read high.
6. Datasheet summary and design interpretation#
| Device | Key manufacturer facts | Board-specific interpretation |
|---|---|---|
| PMS5003 | 5 V fan, ≤100 mA active, ≤200 µA standby, 3.3 V logic, 9600 8N1, 32-byte 0x42 0x4D frames, ≥30 s stabilization after wake, internal SET/RESET pull-ups, GND-bonded shell | The split-domain architecture is exactly what the datasheet's own typical circuit shows (10 k pull-ups to 3.3 V on SET/RESET included) |
| Yageo RC0603 | Thick film 1 % | Uncritical |
| Murata GRM188/GRM21B | X7R/X5R ceramics | C2's 10 V rating adequate at 5 V; do not downgrade to 6.3 V |
Official references: Plantower PMS5003 product page, PMS5003 data manual V2.3 (Adafruit mirror). Later manual revisions exist; obtain the revision matching the purchased unit (this matters for the connector table — see section 4.1).
7. Expected values before bench testing#
| Quantity | Design target / manufacturer value | What to measure |
|---|---|---|
| EXT_5V | 4.5–5.5 V, 5.0 V nominal | DMM at J2 pins 1/2 |
| Active current | ≤100 mA, plus fan spin-up surge at t=0 | Supply readout + scope on a shunt |
| Sleep current | ≤200 µA with PM_SET held low | µA-range DMM in the J3 feed |
| Idle levels | PM_SET and PM_RESET_N ≈ 3.3 V, host tri-stated | DMM at PMOD pins 1/7 |
| UART | 9600 8N1; a frame every ~2.3 s (stable) to 200–800 ms (fast) | Logic analyzer on PM_TX |
| Frame | 0x42 0x4D, length word 28, checksum = 16-bit sum of first 30 bytes | Parser over ≥100 frames |
| Wake-to-stable | ≥30 s after SET returns high | Timestamped decode after sleep test |
| Reset | Sensor reboots and resumes frames after PM_RESET_N pulsed low | Scope + decode |
8. Manual schematic and assembly review checklist#
- Complete the section 4.1 connector mapping against a purchased PMS5003 + cable before layout, and pick a keyed/shrouded J2 (close the
TBD:). - Pin J1/J3 MPNs; export and availability-check the BOM.
- After layout: 5 V net confined to J3/C1/C2/J2 pins 1/2; 5 V keep-out from the PMOD edge; silkscreen polarity at J3; pad-1 marking at J2 matching the cable key.
- Verify R1 is in the sensor-TX line; R2/R3 to 3V3 (not EXT_5V — a pull-up to 5 V would violate the sensor's 3.3 V logic and the FPGA pins).
- Mounting: per Plantower, keep the shell's inlet/outlet unobstructed and do not screw into the sensor deeper than 5 mm.
9. Ordered bench-test procedure#
Stop at the first abnormal result.
A. Unpowered checks#
- Complete section 4.1 mapping. Do not skip it.
- Resistance EXT_5V-to-GND and 3V3-to-GND; investigate hard shorts.
- Continuity J3 GND ↔ PMOD GND ↔ sensor shell (shell is GND-bonded).
B. First power, active mode#
- Host on first, then J3 at 5.00 V with a 300 mA limit.
- Confirm fan audibly spins; record current (spin-up surge, then ≤100 mA).
- Capture PM_TX at 9600 8N1: frames start 0x42 0x4D, length 28, checksum valid. Log the frame interval (2.3 s stable mode is normal in clean air).
- Read PM2.5 in room air: a plausible low value with both calibrations present in the frame. Values are not being graded against a reference — Plantower only promises consistency against their own sensors.
C. SET/RESET line tests#
- Sleep: drive PM_SET low from the host. Fan stops; frames stop; current falls to the µA range (target ≤200 µA — measure in the J3 feed with the host still powered).
- Wake: release/drive PM_SET high. Fan restarts; frames resume; mark the first frame time and discard 30 s of data before judging values; compare a reading at t+35 s against pre-sleep values.
- Reset: pulse PM_RESET_N low ≥1 ms. Sensor reboots; frames stop and resume; confirm idle level returns to 3.3 V.
- With the host tri-stating both lines, confirm the sensor free-runs (pull-up sanity — R2/R3 doing their job).
D. Passive-mode protocol (optional but recommended)#
- Send 0xE1 (change mode → passive), then 0xE2 read requests; verify one 32-byte answer per request.
- Send 0xE4 sleep/wake commands and compare behavior with the SET-pin test.
- Return to active mode and power-cycle to confirm the default state.
E. Aerosol response and soak#
- Briefly present a controlled particle source near the inlet (e.g., an extinguished match at a distance); PM2.5 should rise within ≤10 s (total response time) and decay afterward. Keep it brief — high concentration exposure is a documented stressor.
- 2-hour soak in room air: frame-loss/checksum-error count (target 0), current stability, and value drift.
10. Troubleshooting map#
| Symptom | First measurements | Likely areas |
|---|---|---|
| No current, no fan | J3 polarity, J2 VCC pads | Connector mapping (4.1), J3 wiring |
| Fan runs, no frames | PM_TX at J2 pin 9, R1 both sides | TX/RX swapped in mapping, R1 open, analyzer baud |
| Frames with checksum errors | Ground bounce, baud accuracy | Common ground, cable quality, 9600 timing |
| Cannot sleep | PMOD pin 1 level while driven low | R2 short, host pin not actually driving, SET not at expected pad |
| Never leaves reset | PM_RESET_N level | Bridge to GND, host pin stuck low |
| Values nonsense right after wake | Time since wake | <30 s stabilization — expected, not a fault |
| Sleep current far above 200 µA | Which rail the current is in | Fan still on (SET level), leakage through mis-mapped pins |
11. Bench record template#
| Field | Record |
|---|---|
| Board serial / assembly variant | |
| PMS5003 serial, purchase source, connector mapping photos | |
| Manual revision matched to the unit | |
| Supply, current limit, equipment IDs | |
| Active / sleep current | |
| Frame decode statistics | |
| Sleep/wake/reset test results (with 30 s discard noted) | |
| Passive-mode results | |
| Aerosol response and soak results | |
| Deviations, raw-file paths | |
| Reviewer / date / disposition |
12. Review conclusion#
The design mirrors Plantower's own typical application circuit: external 5 V for the fan, 3.3 V logic straight to the host, and 10 k pull-ups to 3.3 V on SET and RESET. The decoupling and series-resistor conventions match the rest of the board family. The principal risks are (1) the J2 pad-to-pin mapping against the real connector and cable — made sharper by the fact that Plantower's own V2.3 manual prints a different (8-entry) pin table than the 10-pin layout the carrier assumes, with RESET/SET in different places; (2) the unkeyed-header hazard until the TBD: J2 part is pinned as a shrouded, keyed component; (3) back-powering an unpowered host through R1; and (4) the absence of layout, fabrication, and bench evidence.