Circuit review & bench-test guide
AXS-024 — TFmini-S lidar carrier PMOD module
Document purpose#
This document explains the axs-024-lidar 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, the generated schematic, the README, and the manufacturer documentation for the carrier parts and the intended plug-in module (Benewake TFmini-S).
The board is an unfabricated prototype: schematic generated, ERC clean (0/0), netlist reviewed, no PCB layout, no fabricated board, no BOM export, and no bench results exist. Two connector MPNs are still TBD: in the schematic fields. Everything below is design intent to be verified, not proof that an assembled board works or is safe.
1. What the board does#
The carrier adapts a Benewake TFmini-S single-point ToF lidar to a Digilent PMOD Type 3 (UART) socket. The TFmini-S is a 5 V-powered sensor with 3.3 V LVTTL UART logic, so the carrier splits the domains: external 5 V enters on screw terminal J3 and goes only to the J2 supply pin; all signals and the PMOD stay strictly 3.3 V. The sensor streams 9-byte binary frames (header 0x59 0x59, distance, signal strength, chip temperature, checksum) at 115200 baud, 100 Hz by default.
Functional block diagram#
EXT 5 V bench supply ──> J3 (screw terminal) ──┬──> J2 pin "+5V" ──> TFmini-S VCC
├── C1 100 nF
└── C2 10 µF
PMOD host (ECP5) J1 TFmini-S (plug-in, JST GH pigtail)
pin 2 TXD ──────────────────────────────────> J2 "RXD" (lidar receive)
pin 3 RXD <───────── R1 100 Ω ────────────── J2 "TXD" (lidar transmit, LIDAR_TX)
pins 5/11 GND ─────────── common ground ────── J2 GND ── J3 GND
pins 6/12 3V3 ── (decoupling reference only; does NOT power the lidar)
2. Safety and scope boundaries#
- The TFmini-S manual states the product has no overvoltage and no polarity protection; supply must be 5 V ± 0.1 V. A reversed or overvolted J3 can destroy the sensor immediately. Verify J3 polarity with a DMM before every first connection of a new supply.
- Never feed 5 V into any PMOD pin. The only 5 V nets are J3 pin 1 and the J2 supply pin. On the unrouted PCB this separation must be re-verified after layout.
- The emitter is a near-infrared source behind an IR-pass filter. Do not stare into the transmit lens at close range, and do not remove the shell or filter.
- Use a current-limited bench supply (set ≈300 mA limit) for first power-up.
- This guide covers bench verification only; nothing here is EMC, laser-safety classification, or environmental qualification evidence.
3. Supply sequencing, common ground, and no-host behavior#
This is an external-5 V carrier; the order in which rails appear matters.
- Ground first, always common. J3 pin 2, J2 pin 4, and PMOD pins 5/11 are one ground net. Before any power, buzz continuity from the bench-supply return through J3 to the PMOD ground pins. Never feed J3 from a supply whose return is not tied to this net (no "floating 5 V" with a separate earth path through the scope).
- Recommended order: PMOD host on first, then external 5 V. Power the FPGA host (3V3 present, host TXD idle high or tri-stated), then enable the J3 supply. Power down in reverse: 5 V off first, then the host.
- What happens if 5 V is applied with no PMOD host attached: the lidar runs normally and drives 3.3 V UART frames into R1 toward an open pin — harmless. The riskier case is 5 V applied while the host board is attached but unpowered: LIDAR_TX then drives ≈3.3 V through R1 into the unpowered FPGA input, forward-biasing its protection diode and back-powering the dead 3V3 rail. R1 (100 Ω) limits this to roughly (3.3 − 0.3 − V_rail)/100 Ω ≤ ~30 mA worst case, which exceeds typical per-pin injection ratings. Treat "5 V on, host attached but unpowered" as a prohibited state.
- There is no reverse-blocking or inrush element on EXT_5V; C2 charges directly at connection. With only 10 µF this is benign, but do not add large external capacitance at J2 without rechecking.
4. Plug-in module verification (read before first power)#
This section is mandatory. TFmini-S pigtails and clone cables vary, and a swapped supply/signal wire can destroy the sensor or the FPGA.
4.1 The pin-order question — a real, unresolved discrepancy#
The carrier schematic and README assume J2 order 1 +5V, 2 RXD (into lidar), 3 TXD (out of lidar), 4 GND. The Benewake product manual (SJ-PM-TFmini-S A01, Table 5) numbers the module connector ① GND (black), ② +5V (red), ③ RXD/SDA (white), ④ TXD/SCL (green) on a GH1.25-4P connector with a Molex 51021-0400 terminal on the far end. That manual ordering matches the carrier's assumed order in neither direction (forward: GND/5V/RXD/TXD; reversed: TXD/RXD/5V/GND). The numbering convention of the physical JST GH housing versus the manual's ①–④ may reconcile this, or the schematic may simply be wrong — this must be resolved against a physical unit before the PCB is laid out, and re-verified on every assembled cable before first power.
Verification procedure, with the sensor not connected to the carrier:
- Identify the wire colors at the sensor end: black = GND, red = +5 V, white = RXD (into lidar), green = TXD (out of lidar), per the manual.
- Follow each wire through the pigtail (and any extension) to the plug that mates with carrier J2. Extensions can swap pairs; buzz end-to-end.
- With the carrier unpowered, buzz J2 pad 1 to J3 pin 1 (+5 V net) and J2 pad 4 to J3 pin 2 (GND net). Confirm the red wire will land on the +5 V pad and the black wire on the GND pad in the actual mated orientation.
- Confirm the white wire lands on the net driven by PMOD pin 2 (host TXD) and the green wire on the R1 side (LIDAR_TX).
- Only then connect the sensor.
4.2 Plug-in key specifications (Benewake TFmini-S, manual A01)#
| Item | Manufacturer value | Bench relevance |
|---|---|---|
| Supply | 5 V ± 0.1 V | J3 must be a regulated 5 V; ±0.1 V fluctuation allowed |
| Average current | ≤140 mA (long-distance mode; ~50 mA short-distance mode) | Supply and wiring sizing; current-limit setting |
| Peak current | 200 mA | C2 covers transmit-pulse peaks; watch supply droop |
| Average power | 700 mW | Sensor runs warm; normal |
| UART logic | LVTTL 3.3 V | Direct PMOD connection is legitimate |
| Default UART | 115200 baud, 8N1 | HDL UART setting |
| Frame | 9 bytes: 0x59 0x59, Dist_L/H, Strength_L/H, Temp_L/H, checksum | Checksum = low 8 bits of the sum of the first 8 bytes |
| Distance | 0.1–12 m (90 % target), 0.1–7 m (10 % target); unit cm | Blind zone 0–10 cm: data unreliable there |
| Abnormal codes | Dist 65535 when Strength < 100; 65534 on strength saturation; 65532 on ambient-light saturation | Parser must handle these, and the bench test should provoke them |
| Frame rate | 1–1000 Hz, default 100 Hz | Expect a frame every ~10 ms |
| Temperature word | °C = Temp/8 − 256 | Sanity check ≈ warm room temperature |
| Protection | None (no polarity or overvoltage protection) | Carrier and operator are the only protection |
5. Component-by-component review#
Every physical reference designator on the schematic is covered. #FLG01– #FLG03 are ERC power flags only; they place no physical part.
| 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, Pmod spec 1.2; carries TXD/RXD, GND, 3V3 | No host link | Mirrored assembly swaps rows: 3V3/GND onto signal pins — verify pin 1 orientation against the Pmod spec before soldering |
| J2 | JST SM04B-GHS-TB, GH 4-pin horizontal | Mates the TFmini-S pigtail; carries 5 V, GND, both UART lines | No sensor connection | Wrong wire order can put 5 V on a UART line or reverse the sensor supply — see section 4.1 |
| J3 | Phoenix MKDS 1,5/2-5,08 screw terminal (MPN TBD:) | External 5 V entry; only source of lidar power | Sensor never powers | Reversed wiring destroys the unprotected sensor; loose screw contact causes brownouts at 140–200 mA |
| R1 | 100 Ω 0603, Yageo RC0603FR-07100RL | Series protection on the lidar-driven TX line; damps the stub, limits fault/injection current | Signal still works but no current limiting during power-sequencing faults | Open: host receives nothing (RXD floats); grossly wrong value slows edges — at 115200 baud even 1 kΩ would still work, so a value error hides functionally |
| C1 | 100 nF 16 V X7R, Murata GRM188R71C104KA01D | High-frequency decoupling at the J2 supply pin | More noise coupled into the sensor supply during transmit pulses | Short kills EXT_5V; 16 V rating is adequate for 5 V |
| C2 | 10 µF 10 V X5R, Murata GRM21BR61A106KE19L | Bulk reservoir for 200 mA transmit-pulse peaks over lead inductance | Supply droop at each pulse; possible sensor resets with long J3 leads | Short kills EXT_5V; polarity is not a concern (ceramic) |
Note: the host-driven TXD line has no series resistor — it is host output to sensor input, consistent with the other carriers in this line. The sensor-driven direction has R1.
6. Datasheet summary and design interpretation#
| Device | Key manufacturer facts | Board-specific interpretation |
|---|---|---|
| TFmini-S | 5 V ± 0.1 V, ≤140 mA avg / 200 mA peak, LVTTL 3.3 V UART, 115200 8N1, 9-byte 0x59 0x59 frames, no input protection, GH1.25-4P pigtail (black/red/white/green = GND/5V/RXD/TXD) | The external-5 V architecture is correct; the J2 pin-order assumption does not match the manual's numbering and is the top open risk |
| Yageo RC0603 resistors | General-purpose thick film, 1 % | Values uncritical at 115200 baud |
| Murata GRM188/GRM21B capacitors | X7R 16 V / X5R 10 V ceramics | 10 V rating on C2 gives limited headroom over 5 V; acceptable but do not substitute a 6.3 V part |
Official references: Benewake TFmini-S product page, TFmini-S Product Manual SJ-PM-TFmini-S A01 (SparkFun mirror), TFmini-S datasheet SJ-PM-TFmini-S-01 A01 (Mouser mirror), JST GH connector family. Check the current revision before procurement.
7. Expected values before bench testing#
| Quantity | Design target / manufacturer value | What to measure |
|---|---|---|
| EXT_5V at J2 | 5.0 V ± 0.1 V under load | DMM at the J2 supply pad, sensor running |
| Supply current, long-distance mode | ≤140 mA average | Bench-supply readout / series DMM |
| Supply current, peaks | ≤200 mA | Current probe or shunt + scope |
| UART idle level at PMOD pin 3 | 3.3 V (idle high) | DMM/scope |
| Frame header | 0x59 0x59 every ~10 ms (100 Hz default) | Scope/logic analyzer on LIDAR_TX |
| First distance reading | Plausible cm value for a target ≥10 cm away; Dist = 65535 with Strength < 100 | Decoded frames |
| Checksum | Low 8 bits of sum of first 8 bytes, every frame | Parser statistics over ≥1000 frames |
| Temp word | Temp/8 − 256 ≈ 25–50 °C | Decoded frames after warm-up |
8. Manual schematic and assembly review checklist#
- Resolve the J2 pin-order discrepancy (section 4.1) against a physical TFmini-S before layout; record the resolution in the repository.
- Pin the two
TBD:MPNs (J1 header, J3 Phoenix terminal) before BOM release. - After layout: confirm the 5 V net exists only between J3, C1, C2, and the J2 supply pin; confirm a 5 V keep-out from the PMOD edge; check J3 polarity marking on silkscreen.
- Confirm J2 pin-1 marking on silkscreen matches the GH housing polarization.
- Verify R1 is in the lidar-TX line, not the host-TX line.
- Inspect solder on the GH connector's small pads; verify the locking latch.
9. Ordered bench-test procedure#
Stop at the first abnormal result. Record board serial, sensor serial, supply, equipment, and operator.
A. Unpowered checks#
- Complete section 4.1 (pigtail buzz-out). Do not skip it.
- Measure resistance EXT_5V-to-GND (expect high, capacitive charging) and 3V3-to-GND at the PMOD plug. Investigate any hard short.
- Verify J3 GND to PMOD GND continuity (<1 Ω).
B. Sensor alone, no host#
- Leave the PMOD unplugged. Set the bench supply to 5.00 V, 300 mA limit.
- Power J3. Expect ≤140 mA average; a red glow is visible in the transmit lens viewed from the front (per the Benewake manual's no-data checklist).
- Scope LIDAR_TX (sensor side of R1): 3.3 V UART bursts every ~10 ms.
- Power off.
C. Host attach and first frames#
- Power the FPGA host first, then J3 (section 3 order).
- Capture PMOD pin 3 with a logic analyzer at 115200 8N1: verify
0x59 0x59sync, decode distance/strength/temp, verify checksum on every frame. - Point the sensor at a wall ≈1 m away: distance within ±6 cm (manufacturer accuracy for 0.1–6 m). Move to 3 m and re-check.
- Provoke abnormal codes: cover the lens (expect Dist 65535 / Strength <100); aim at a mirror or through glass and note the documented malfunction modes.
- Blind-zone check: a target at <10 cm should be treated as unreliable.
D. Robustness#
- Sweep the J3 supply 4.9–5.1 V (the allowed ±0.1 V): frames must stay valid.
- One-hour soak at 100 Hz: log frame-loss and checksum-error counts (target 0), supply current, and connector temperature.
- Hot-unplug/replug of J3 with the host running; verify the sensor recovers and the host UART resynchronizes on the next
0x59 0x59.
10. Troubleshooting map#
| Symptom | First measurements | Likely areas |
|---|---|---|
| No current draw on J3 | J3 voltage/polarity, J2 supply pad | J3 wiring, pigtail order, GH solder |
| Draws current, no UART bursts | LIDAR_TX at J2, red glow check | Wrong pigtail order (TX not where expected), damaged sensor |
| Bursts at J2, nothing at PMOD pin 3 | Both sides of R1 | R1 open, PCB trace, PMOD contact |
| Garbage bytes | Baud/format on analyzer, ground bounce | 115200 8N1 mismatch, missing common ground |
| Frames but Dist always 65535 | Strength field | Target too weak/far, dirty lens, strength < 100 |
| Sensor resets under load | EXT_5V droop on scope during pulses | Long/thin J3 leads, missing C2, weak supply |
11. Bench record template#
| Field | Record |
|---|---|
| Board serial / assembly variant | |
| TFmini-S serial and firmware | |
| Pigtail order verification result (section 4.1) | |
| Supply, current limit, equipment IDs | |
| Idle current / average / peak | |
| Frame decode statistics (frames, checksum errors) | |
| Distance accuracy spot checks (1 m / 3 m) | |
| Abnormal-code and blind-zone behavior | |
| 1-hour soak result | |
| Deviations, raw-file paths | |
| Reviewer / date / disposition |
12. Review conclusion#
The architecture is honest and simple: external 5 V for a 5 V sensor, common ground, 3.3 V-only signaling to the PMOD, one series resistor on the only sensor-driven line, and local decoupling sized for the documented 200 mA transmit peaks. The principal risks are (1) the unresolved J2 pin-order assumption versus the Benewake manual's connector numbering — the sensor has no input protection, so this is a destroy-the-part class error; (2) the back-powering path into an attached-but-unpowered host; (3) two TBD: connector MPNs; and (4) the total absence of layout, fabrication, and bench evidence at this revision.