← AXS-021

Circuit review & bench-test guide

AXS-021 — Ultrasonic ranger carrier PMOD module

Design-stage — board not yet fabricated

Document purpose#

This document explains the axs-021-ultrasonic PMOD carrier at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on generate_design.py, README.md, and the ERC report in reports/.

This board has never been fabricated. Repository status is schematic generated, ERC clean (0 errors / 0 warnings), netlist reviewed; PCB layout not started; not released. There is no PCB, no BOM export, no DRC record, and no first-article bench result. Every number below is a target to verify against real hardware, not a proven result.

1. What the board does#

The board is a passive PMOD carrier for a 3.3 V HC-SR04-form-factor ultrasonic ranger, intended to be the Adafruit RCWL-1601 (product 4007). The transducer module plugs upright into a 1x4 socket; the carrier adds the Digilent PMOD Type 1 (GPIO) interface, a TRIG pull-down, a series resistor on the module-driven ECHO line, and local decoupling. There is no active silicon on the carrier itself.

The FPGA host drives TRIG high for at least 10 µs; the module emits an 8-cycle 40 kHz burst and raises ECHO for a time proportional to the round trip: distance_cm = echo_high_us / 58.

Functional block diagram#

PMOD host (3.3 V)                 Carrier                    Plug-in module
┌──────────────┐        ┌───────────────────────┐        ┌────────────────┐
│ J1 pin 1 TRIG├───────>│ TRIG ──┬──────────────├───────>│ Trig           │
│              │        │        R2 10k         │        │                │
│              │        │        └── GND        │        │  RCWL-1601     │
│ J1 pin 2 ECHO│<───────│ ECHO ──R1 100Ω── ECHO_RAW <────│ Echo           │
│              │        │                       │        │  (40 kHz Tx/Rx │
│ 3V3 (6, 12)  ├───────>│ 3V3 ──┬──┬────────────├───────>│ Vcc  pair)     │
│ GND (5, 11)  ├────────│ GND   C1  C2          ├────────│ Gnd            │
└──────────────┘        │      100n 10µ         │  J2    └────────────────┘
                        └───────────────────────┘  1x4 socket

2. Safety and scope boundaries#

3. Signal and power sequence#

  1. 3V3 and GND arrive from the PMOD host (pins 6/12 and 5/11) or the bench supply. C2 charges; C1 provides high-frequency decoupling at the socket.
  2. With the host pin unconfigured (high-Z at FPGA configuration time), R2 holds TRIG at GND so the module cannot false-trigger.
  3. The module (RCWL-1601) powers up and idles with ECHO low.
  4. The host drives TRIG high for ≥10 µs, then low.
  5. The module emits an 8-cycle 40 kHz transmit burst (~200 µs of drive); C2 buffers this brief current peak so the 3.3 V rail does not sag at the end of the PMOD cable.
  6. ECHO goes high when the burst is sent and returns low when the reflection is received (or after an internal timeout, typically tens of ms, if nothing echoes back). The host times the high interval through R1.
  7. Wait ≥60 ms before the next trigger so a late echo from the previous burst cannot corrupt the next measurement.

4. Interfaces#

ReferencePins/signalsIntended use
J112-pin PMOD plug (2x6 right-angle male, Digilent spec 1.2)Host connection: pin 1 TRIG (host out), pin 2 ECHO (host in), 3/4/7/8/9/10 NC, 5/11 GND, 6/12 3V3
J21x4 socket, 2.54 mm verticalRanger socket in HC-SR04 pin order: 1 VCC(3V3), 2 Trig, 3 Echo(ECHO_RAW), 4 GND

PMOD pin map (Type 1 GPIO):

PMOD pin123456789101112
NetTRIGECHONCNCGND3V3NCNCNCNCGND3V3

There are no test points defined yet (no layout exists); bench probing is at J1/J2 pins and passives.

5. Component-by-component review#

5.1 Connectors#

Ref.PartFunction and why neededIf absent/openIf shorted, wrong, or misassembled
J1Generic 2x6 right-angle 2.54 mm male header (MPN TBD)PMOD plug; carries 3V3/GND and TRIG/ECHO to the hostNo power, no signalsOdd/even numbering mistake in layout swaps rows and can put 3V3 on a signal pin — verify against Digilent PMOD spec 1.2 before fab
J2Generic 1x4 socket 2.54 mm vertical (MPN TBD)Holds the plug-in ranger in HC-SR04 pin order VCC/Trig/Echo/GNDNo sensor; TRIG drives an open pin harmlessly (R2 keeps it defined)Reversed pin order applies GND to module VCC and 3.3 V to module GND — most modules have no reverse protection; verify the socket-to-net map on the first article before ever inserting a module

5.2 Line conditioning#

Ref.Value / partPurposeIf absent/openIf shorted or wrong value
R1100 Ω, Yageo RC0603FR-07100RL, 1% 0603Series protection between the module-driven ECHO_RAW and the host ECHO pin; limits fault current and damps the line on the plug/cable stubHost never sees ECHO — measurements always time outShort removes the (already modest) protection; a large value (e.g. 100 kΩ by reel mix-up) forms an RC with pin capacitance and slows edges — at 100 Ω the added delay (~ns) is negligible against 58 µs/cm
R210 kΩ, Yageo RC0603FR-0710KL, 1% 0603TRIG pull-down so an unconfigured or tri-stated host pin cannot false-trigger a burstTRIG floats before FPGA configuration; spurious bursts and phantom ECHO activity possibleShort holds TRIG at GND permanently — the host can never trigger (drive fights 0 Ω); a too-small value loads the host driver

5.3 Decoupling#

Ref.Value / partPurposeIf absent/openIf shorted or wrong value
C1100 nF 16 V X7R, Murata GRM188R71C104KA01D, 0603High-frequency decoupling at the ranger socketMore rail noise coupling into the module's analog receive path; degraded max range/repeatabilityShort is a 3V3-to-GND short — host PMOD supply or bench limit trips; wrong (larger) value is generally benign
C210 µF 10 V X5R, Murata GRM21BR61A106KE19L, 0805Bulk reservoir for the ~200 µs transmit-burst current peak at the end of the PMOD cableRail droop during the burst; symptoms are shortened max range, occasional module resets, or missed echoes that worsen with longer cablesShort is a rail short (as C1); a much smaller value reintroduces droop

#FLG01/#FLG02 are ERC power-flag symbols only — they place no physical part.

5.4 The plug-in module (in scope)#

Ref.PartFunctionIf absentIf a 5 V-only HC-SR04 is fitted instead
(plug-in at J2)Adafruit RCWL-1601 (product 4007)The actual ultrasonic transceiver: 40 kHz transducer pair, drive and receive electronics, HC-SR04-compatible Trig/Echo protocol, 3.0–5.5 V supplyCarrier is inert; ECHO stays low, all measurements time outAt 3.3 V it will typically fail to range (5 V-only electronics under-voltage). If someone powers it at 5 V externally while Trig/Echo remain on the carrier, its 5 V ECHO reaches the host through only 100 Ω — see 9.F

6. Datasheet summary and design interpretation#

DeviceKey manufacturer factsBoard-specific interpretation
RCWL-16013.0–5.5 V supply, ~2.2 mA typical, 40 kHz, range 2–450 cm (10–250 cm recommended), ±2 % / ±0.5 cm accuracy, 1 mm resolution, ±15–20° beam, ~50 ms measurement cycle, HC-SR04 software compatible, logic levels track the supplyThe 3.3 V-capable supply and supply-tracking logic levels are exactly why this module (and not a classic HC-SR04) is specified. At 3.3 V, ECHO high is ~3.3 V — safe for the host. The ~50 ms cycle motivates the ≥60 ms repetition rule
HC-SR04 protocol (reference)≥10 µs TRIG high starts a cycle; module sends an 8-cycle 40 kHz burst; ECHO high time = round-trip time; distance_cm = echo_us/58 (≈ inch = echo_us/148); recommended ≥60 ms between measurementsThe carrier's TRIG pull-down and ECHO series resistor are shaped around this protocol; the FPGA timing core divides by 58 in fabric
Murata GRM188R71C104KA01D / GRM21BR61A106KE19L100 nF X7R 16 V 0603; 10 µF X5R 10 V 0805. X5R/X7R lose effective capacitance with DC bias — a 10 µF X5R at 3.3 V still retains most of its value in 0805Adequate margin at 3.3 V. Do not substitute a 10 µF in 0402/0603, where DC-bias derating is much worse
Yageo RC0603 seriesGeneral-purpose thick film, 1 %, 100 mWValues are non-critical to ±5 %; 1 % chosen for BOM consistency

Official references: Adafruit RCWL-1601 product page (4007), Adafruit ultrasonic sonar distance sensors guide, classic HC-SR04 datasheet (SparkFun mirror, protocol reference), Murata GRM188R71C104KA01D, Murata GRM21BR61A106KE19L, Yageo RC thick-film series. Check the current revision before procurement; the RCWL-1601 itself has no formal manufacturer datasheet — Adafruit's product page and guide are the practical documentation.

7. Expected values before bench testing#

All values are design targets for a board that does not yet exist.

QuantityTargetHow to measure
3V3-to-GND resistance, unpowered, no moduleHigh (>100 kΩ after cap charge; meter-dependent)DMM at J1 pin 6 to pin 5, both polarities
TRIG-to-GND resistance~10 kΩ (R2)DMM at J1 pin 1
ECHO (J1 pin 2) to J2 pin 3~100 Ω (R1)DMM
Idle supply current, module fitted~2–3 mABench supply readout
TRIG pulse (host-generated)≥10 µs high, 0→3.3 V, clean edgesScope at J2 pin 2
Transmit burst8 cycles at 40 kHz ≈ 200 µs, right after TRIG fallsScope on module transducer pins or rail ripple; a second receiving module also works
ECHO width at 10 cm≈ 580 µsScope at J1 pin 2
ECHO width at 50 cm≈ 2 900 µs (2.9 ms)Scope
ECHO width at 1 m≈ 5 800 µs (5.8 ms)Scope
Minimum range~2–3 cm blind zone (10 cm recommended floor)Target on ruler
Maximum rangeup to ~450 cm claimed; ~250 cm reliably, target-dependentLarge flat target, echo ≈ 26 ms at 4.5 m
No-target behaviorECHO high then internal timeout (tens of ms, module-dependent — record it)Point at open space
Repetition interval≥60 ms between triggersHost timing core
Rail droop during burstMinimal with C2 fitted; record actualScope, AC-coupled, at J2 pin 1
ECHO high level at 3.3 V supply≈3.3 V, never 5 VScope, DC-coupled

8. Manual schematic and assembly review checklist#

9. Ordered bench-test procedure#

Stop at the first abnormal result. Record board serial, module identity (exact marking/vendor), equipment, and ambient conditions.

A. Unpowered inspection and resistance tests (no module fitted)#

  1. Visual inspection under magnification: solder quality on J1/J2, R1, R2, C1, C2; no bridges.
  2. DMM: 3V3-to-GND high resistance both polarities; TRIG-to-GND ≈ 10 kΩ; J1 pin 2 to J2 pin 3 ≈ 100 Ω; J2 pin 1 to J1 pin 6 ≈ 0 Ω; J2 pin 4 to J1 pin 5 ≈ 0 Ω.
  3. Buzz every J2 pin to its intended net. Do not skip this — a reversed socket destroys the first module inserted.

B. Candidate-module qualification (BEFORE it ever touches the carrier)#

This is the mandatory 5 V-module screening test. Many "HC-SR04" modules are 5 V-only with a 5 V ECHO output; a genuine RCWL-1601 is 3.3 V-capable. Markings are not reliable — test electrically.

  1. Power the bare candidate module from a current-limited 3.3 V bench supply only (50 mA limit). Confirm it draws a plausible ~2–3 mA.
  2. Drive Trig with a 3.3 V 10 µs pulse (signal generator or a known-good 3.3 V dev board) and scope Echo.
  3. Pass criteria: the module ranges (Echo width tracks a target moved by hand) AND Echo high level is ≈3.3 V. A module that does not range at 3.3 V, or ranges only when supplied 5 V, is 5 V-only — reject it for this carrier.
  4. Never pre-qualify by powering the module at 5 V while its Echo is connected to anything 3.3 V.

C. Standalone carrier bring-up (bench supply, no host)#

  1. With a qualified module fitted, connect a current-limited 3.3 V supply (100 mA limit) to J1 pin 6 (3V3) and pin 5 (GND). Confirm ~2–3 mA idle.
  2. Scope TRIG at J2 pin 2: it must sit at 0 V (R2) with nothing driving.
  3. Inject a 10 µs 3.3 V pulse into J1 pin 1 from a generator. Scope ECHO at J1 pin 2: a pulse appears whose width tracks target distance.
  4. Verify the width math at measured distances: tape a target at 10 cm, 50 cm, and 1 m and confirm ≈580 µs / 2.9 ms / 5.8 ms within a few percent (temperature affects the speed of sound ~0.17 %/°C).
  5. Scope the 3V3 rail AC-coupled during a burst; record droop.

D. Hosted bring-up (PMOD host providing 3.3 V)#

  1. Plug the carrier into the FPGA PMOD port with the host unconfigured. Confirm no bursts occur (R2 holds TRIG low) — listen with a scope on ECHO for several seconds.
  2. Load the trigger/echo timer core. Trigger single measurements first, then continuous at ≥60 ms intervals.
  3. Cross-check fabric-computed distance against a ruler at 10/50/100 cm.
  4. Sweep the repetition interval down below 60 ms deliberately and observe when readings become unstable (late echoes aliasing); document the safe floor, then return to ≥60 ms.
  5. Test minimum range (expect a ~2–3 cm blind zone, unreliable below ~10 cm) and maximum range against a large flat target.
  6. Test angular response: ±15–20° off-axis targets should still return.

E. Robustness checks#

  1. Hot-plug behavior: insert/remove the module with carrier power on and confirm nothing latches or is damaged (low energy, but record it).
  2. Long PMOD cable (if used): repeat D.3 and check rail droop and edge quality.

F. 5 V-module fault-mode awareness test (analysis + optional destructive test)#

What happens if a 5 V-only module is inserted anyway:

10. Troubleshooting map#

SymptomFirst measurementsLikely areas
No ECHO ever, module fitted3V3 at J2 pin 1; TRIG pulse present at J2 pin 2J2 solder/pin-order, R2 short, host pin map, dead module
ECHO always times out at maxECHO_RAW at module pin vs J1 pin 2R1 open, J2 pin 3 open, target too soft/angled
Ranges at 5 V bench test but not on carrierModule supply-voltage capability5 V-only module — reject (section 9.B)
Readings jump erraticallyrepetition interval; rail ripple during burstinterval <60 ms, C2 missing/open, long cable droop
Distance consistently scaled wrongraw echo width vs ruler÷58 math in fabric, clock frequency assumption
Spurious bursts before FPGA configTRIG level at J2 pin 2 unpowered-hostR2 open, host pull-ups fighting R2
Supply trips at power-on3V3-to-GND resistanceC1/C2 short, J2 reversed with module in

11. Bench record template#

FieldRecord
Board revision / serial
Plug-in module identity, vendor, markings
Module 3.3 V qualification result (9.B): current, ranges?, ECHO level
Supply / generator / scope IDs and calibration
Ambient temperature (speed-of-sound correction)
Resistance and continuity results (9.A)
Standalone results: echo widths at 10/50/100 cm
Hosted results: fabric distance vs ruler
Min/max range achieved; timeout duration observed
Rail droop during burst
Deviations, photos, raw-file paths
Reviewer / date / disposition

12. Review conclusion#

The carrier is deliberately minimal and its schematic is coherent for the lesson it teaches: R2 makes the unconfigured-host state safe, R1 adds modest fault isolation on the one module-driven line, and C1/C2 address the transmit-burst current at the end of a PMOD cable. The design's single sharp edge is module selection: it is only safe with a genuinely 3.3 V-capable ranger (RCWL-1601), because the carrier intentionally has no level protection beyond 100 Ω of series resistance. The principal open risks are that no PCB exists yet (layout, J1 row order, and J2 pin order are all unbuilt and unverified), the plug-in qualification procedure must actually be followed for every candidate module, and every timing figure in section 7 is protocol-derived rather than measured.