Circuit review & bench-test guide
AXA-001 — TB6612FNG dual DC motor driver PMOD module
Document purpose#
This document explains the axa-001-dc-motor PMOD module at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on the generated schematic (generate_design.py, rev 0.1-schematic), the module README, and the actuator-line rules in ../README.md.
This design is unfabricated. Status is "schematic generated, ERC clean (0/0), netlist reviewed, PCB layout not started, not released." No board has been built, no first-article exists, and no bench evidence of any kind has been recorded. Every voltage, current, and timing value below is a design target or a datasheet number to verify against real hardware, not proof that an assembled module works or is safe. The procedures are written so they can be executed unchanged on the first article.
1. What the board does#
The module is a two-channel brushed-DC motor driver PMOD peripheral built around the Toshiba TB6612FNG dual H-bridge. A host FPGA (AruviX ECP5 board or any PMOD Type 1 GPIO host) drives each channel with a direction pair (xIN1/xIN2) and a PWM input at up to 100 kHz, plus a shared STBY gate. Motor power (VM, 2.5–13.5 V) enters on a screw terminal only and never flows through the PMOD connector; the PMOD carries 3.3 V logic exclusively, and the motor and logic grounds join on this module.
The TB6612FNG has no fault output and no current-sense output — a documented exception to the actuator-line feedback rule. Nothing on this module reports overcurrent, thermal shutdown, or UVLO back to the host. A spinning motor proves only that one commanded state works; it does not prove the truth table, the standby gate, current capability, or thermal margin.
Functional block diagram#
PMOD host (3.3 V logic only) Motor supply (bench PSU / battery)
│ │
v v
J1 PMOD plug J3 screw terminal
PWMA AIN1 AIN2 VMOT (2.5–13.5 V), GND
PWMB BIN1 BIN2 │
STBY 3V3 GND ├── C1, C2 10 µF bulk
│ │ └── C3 100 nF HF bypass
│ └── C4 100 nF (VCC) │
v v
R1 10k STBY pull-down ──────> U1 TB6612FNG dual H-bridge
(drivers default OFF) VCC = 3V3, VM = VMOT
UVLO + TSD internal, no fault pin
│ │
v v
J4 MOTOR A J5 MOTOR B
AO1 / AO2 BO1 / BO2
There is no J2 in this design; the reference-designator sequence J1, J3, J4, J5 is intentional in the generator and should not be "fixed" during layout without updating this document.
2. Actuator safety boundaries (mandatory reading)#
This board drives motors: moving, energy-storing, inductive loads. The rules below are not optional style; each one maps to a real failure mode.
- First power-up always on a current-limited bench supply. Set the motor supply current limit below the TB6612FNG's 1.2 A/channel absolute maximum before anything is connected. A miswired bridge, a solder short, or a wrong truth-table state then becomes a limited event instead of a burned SSOP-24.
- Know your motor's stall current before you connect it. A stalled or shorted-rotor motor draws its full locked-rotor current continuously. Typical figures (verify the exact motor you own — vendors vary):
- N20-class micro metal gearmotors: roughly 0.36 A (LP), 0.67 A (MP), to 1.5–1.6 A (HP/HPCB) stall at 6 V per Pololu's published specifications. Only LP/MP windings stall inside the TB6612FNG's 1.2 A/channel rating; an HP winding at stall exceeds it.
- JGA25-370-class 25 mm gearmotors: published stall figures are commonly in the 1.2–2.5 A range at 12 V, and the hottest windings are estimated up to roughly 4 A. Treat these as typical estimates, not data; check the specific motor's datasheet (for example the Seeed JGA25-370 datasheet). Most JGA25-class motors are not safe stall loads for this driver.
- Never hot-plug motor leads while the board is powered. Breaking an inductive circuit at a screw terminal draws an arc and produces a voltage spike; making one can chatter. Power down, wire, torque the terminal, then power up.
- Flyback path must be verified, not assumed. The recirculation path is the H-bridge body diodes inside U1 (VF 1.0 V typical at 1 A). There are no external flyback diodes. Scope the outputs during PWM and during commanded stop from full speed and confirm output excursions stay within one diode drop of VM and GND. Long motor leads add inductance; keep first-spin leads short.
- External rail sequencing: bring the 3.3 V logic rail up before the motor rail, and take it down after the motor rail. With VCC absent the control inputs' −0.2 to 6 V absolute maximum still applies and the internal 200 kΩ pull-downs hold the inputs low, but an unpowered controller with a live VM is an unverified state — do not rely on it. VM present with VCC absent must be treated as a forbidden operating condition until measured.
- "Hands clear" convention for the first commanded spin: before STBY is ever driven high with a motor attached, fingers, hair, sleeves, probe leads, and loose cables are away from shafts, couplings, and anything mounted on them; the motor body is clamped or held in a fixture, not hand-held; and the person at the enable control announces it. Geared micro motors have little torque but couplings, wheels, and test rigs can still snag and whip.
- The green-wire rule of this line applies: PMOD carries logic only. Never jumper VMOT to any PMOD pin "for convenience" — the PMOD host was never designed to carry motor current, and 13.5 V on a 3.3 V FPGA bank is fatal to the host.
- A working spin is not EMC, safety, or environmental qualification. This is a curriculum prototype.
3. Power and control sequence#
- With logic power applied and no host activity, R1 (10 kΩ) plus U1's internal 200 kΩ pull-down hold STBY low. Both bridges are in standby: outputs high-impedance, standby supply current ≤1 µA per the datasheet.
- All control inputs (PWMA/B, AIN1/2, BIN1/2) also have internal 200 kΩ pull-downs, so a floating or unconfigured host reads as all-low, which is the stop state even if STBY were high.
- Motor power arrives on J3; C1/C2 (2× 10 µF) supply PWM switching current and C3 (100 nF) handles high frequency at the driver.
- The host drives STBY high (VIH ≥ 0.7 × VCC = 2.31 V at 3.3 V) to enable both bridges, then commands each channel with xIN1/xIN2/PWMx per the truth table in section 6.
- Internal UVLO (low-voltage detection, 1.9 V typical detect / 2.2 V typical recover, datasheet design-target values) and thermal shutdown (175 °C typical, 20 °C hysteresis, design target) protect the die silently — no pin reports either event.
Two bench contexts#
(a) Plugged into a PMOD host FPGA board. The host provides 3.3 V and the logic ground reference through J1; only the motor supply is external on J3. Grounds join on this module, so the motor supply's negative lead becomes common with the FPGA ground — the motor bench supply must therefore be floating (a normal isolated lab supply) or share the same earth reference deliberately. Sequencing: power the FPGA board first (logic up), then enable the motor supply; disable the motor supply before removing FPGA power. Keep the host's bitstream in a known state (all module pins low or high-Z) before the motor supply is enabled.
(b) Standalone bench, no FPGA. A lab supply provides 3.3 V into a PMOD pin 6/12 (3V3) and pin 5/11 (GND) breakout, and a separate current-limited supply provides VM on J3. The two supplies share ground only through this module's ground plane — do not add a second ground bond elsewhere that turns motor return current into a loop through logic wiring. Control inputs are driven from jumper wires to 3V3/GND or from a signal generator (0–3.3 V, never 5 V: VIN absolute maximum is 6 V but the logic rail context is 3.3 V and a 5 V generator into a shared setup invites mistakes). Same sequencing rule: 3.3 V up first, down last.
4. Interfaces#
| Reference | Pins/signals | Intended use |
|---|---|---|
| J1 | PMOD 12-pin, Type 1 GPIO | Host logic: all lines host-driven |
| J3 | 1 VMOT, 2 GND (5.08 mm screw terminal) | Motor supply 2.5–13.5 V; grounds join here |
| J4 | 1 AO1, 2 AO2 | Motor A |
| J5 | 1 BO1, 2 BO2 | Motor B |
| PMOD pin | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Net | PWMA | AIN1 | AIN2 | PWMB | GND | 3V3 | BIN1 | BIN2 | STBY | NC | GND | 3V3 |
There are no series resistors on the PMOD lines: the sensor-line 100 Ω rule applies to module-driven lines only, and every line here is host-driven. There are also no test points in the rev 0.1 schematic — probing is at component pads and connector screws. Adding test points on VMOT, 3V3, STBY, AO1/AO2, and BO1/BO2 is a recommended layout-stage improvement.
5. Component-by-component review#
5.1 Driver and connectors#
| Ref. | Part / datasheet summary | Function and why needed | If absent/open | If shorted, wrong, or misassembled |
|---|---|---|---|---|
| U1 | Toshiba TB6612FNG (TB6612FNG,C,8), SSOP-24 dual H-bridge; VM 2.5–13.5 V operating / 15 V abs max, VCC 2.7–5.5 V / 6 V abs max, 1.2 A/channel abs max, 0.5 Ω typ total on-resistance, internal UVLO and TSD, no fault pin | Both power stages and all control logic; converts host PWM+direction into bridge states with internal dead time (50/230 ns design targets) | No module function at all | Rotated or shifted SSOP-24 can put VM on logic pins (VCC abs max 6 V — destructive); bridged 0.65 mm pins can create shoot-through or a permanent brake; unsoldered PGND pins force motor current through the signal GND pin |
| J1 | PMOD 12-pin plug, Type 1 GPIO | Host logic, 3.3 V, and logic ground; all lines host-driven | No control or logic power | Mis-keyed/offset insertion swaps 3V3 and signals; PMOD must never carry VM |
| J3 | Phoenix MKDS 1,5/2-5,08 class screw terminal (exact MPN still TBD in the generator) | Motor supply entry, the only permitted VM path; GND pin is where motor and logic grounds join | No motor power | Reversed leads apply −VM across C1/C2 (polarity-insensitive MLCC survives, U1's VM pins see reverse bias through body diodes — treat as destructive); loose screw arcs under motor load |
| J4 | Screw terminal, AO1/AO2 | Motor A connection | No Motor A drive | Motor lead short at the terminal is an output short — U1 has no current limit, only TSD; the bench supply current limit is the real protection |
| J5 | Screw terminal, BO1/BO2 | Motor B connection | No Motor B drive | Same as J4 |
Reversing a motor's two leads at J4/J5 is not a fault — it swaps CW/CCW meaning. Document which lead went to which screw in the bench record.
5.2 Passives#
| Ref. | Value / part | Purpose | What is lost if omitted | Important failure/review point |
|---|---|---|---|---|
| R1 | 10 kΩ 0603, Yageo RC0603FR-0710KL | STBY pull-down: both bridges disabled until the host deliberately drives PMOD pin 9 high; safe default during host configuration, reset, and hot-plug of the PMOD | Only U1's internal 200 kΩ pull-down remains — weaker noise immunity on the enable line during host power-up glitches | Short to GND makes STBY undrivable (host fights 0 Ω — outputs stay off and the host pin is stressed); wrong high value is mostly harmless; wrong low value (e.g. 100 Ω) loads the host pin |
| C1 | 10 µF 25 V X5R 0805, Murata GRM21BR61E106KA73L | VM bulk reservoir for PWM switching current | VM droop/ringing each PWM edge; supply-lead inductance rings against the bridge | 25 V rating is fine at 13.5 V, but X5R DC-bias derating at 13.5 V typically halves effective capacitance — verify Murata's bias curve; a shorted C1 is a VM-to-GND short (bench current limit catches it) |
| C2 | 10 µF 25 V X5R 0805, same MPN | Second VM bulk reservoir (parallel with C1) | Half the bulk capacitance; worse droop under simultaneous two-channel PWM | Same notes as C1 |
| C3 | 100 nF 16 V X7R 0603, Murata GRM188R71C104KA01D | VM high-frequency decoupling at the driver pins | Fast edge current loops enlarge; more ringing and radiated noise | 16 V rating on a rail specified to 13.5 V is only 84 % derating — marginal. Recommend a 25 V or 50 V part at layout/BOM stage. Datasheet application note: place noise-absorption capacitors as close as possible to the IC |
| C4 | 100 nF 16 V X7R 0603, same MPN | VCC (3.3 V) logic decoupling | Logic-supply noise at U1; possible spurious UVLO events near the 1.9 V detect threshold if the rail bounces | Toshiba's application diagram shows 10 µF + 0.1 µF on VCC; this design has only 100 nF and relies on the host PMOD rail's bulk capacitance. Acceptable assumption for a PMOD module, but verify VCC ripple on the bench, especially standalone |
| #FLG01–03 | ERC power flags (3V3, GND, VMOT) | Schematic-only objects satisfying ERC power-input checks | Not physical parts | Nothing to assemble; listed for completeness |
6. TB6612FNG datasheet summary and design interpretation#
Primary references: Toshiba TB6612FNG product page and the TB6612FNG datasheet, 2012-11-01 revision (the generator's toshiba.semicon-storage.com/info/...20141001.pdf link now returns 404; confirm the latest revision on the Toshiba page before release). All numbers below were read from the 2012-11-01 datasheet.
| Manufacturer fact | Value | Board-specific interpretation |
|---|---|---|
| Absolute max VM / VCC / VIN / VOUT | 15 V / 6 V / −0.2 to 6 V / 15 V | J3 spec of 2.5–13.5 V is the operating range; 15 V is abs max with no margin. A 3S LiPo fresh off the charger is 12.6 V — acceptable; anything above 13.5 V is out of spec |
| Output current abs max | 1.2 A per channel; 2 A peak (20 ms pulses, duty ≤ 20 %); 3.2 A peak (10 ms single pulse) | The often-quoted "1.2 A ave / 3.2 A peak" is per channel and the peaks are short-pulse ratings, not headroom. A stalled HP N20 (~1.6 A) or any JGA25-class stall exceeds continuous rating |
| Operating output current | max 1.0 A (VM ≥ 4.5 V); 0.4 A (2.5 V ≤ VM < 4.5 V, without PWM) | For sustained running plan around ~1.0 A/channel, not 1.2 A. Low-VM operation is much more restricted |
| IOUT–duty derating (target chart) | Dual-channel 100 % duty at 25 °C, IC only: roughly 0.9–1.0 A | Two motors near stall simultaneously is thermally worse than the per-channel numbers suggest |
| Power dissipation | 0.78 W IC only (θj–a 160 °C/W); 0.89 W on 50 × 50 mm ≥ 40 % Cu; 1.36 W on 76.2 × 114.3 mm ≥ 30 % Cu | The 20 × 40 mm actuator outline is smaller than the smallest datasheet reference board — assume the worst column and pour maximal copper on VM/PGND at layout |
| On-resistance / saturation | 0.5 Ω typ upper+lower (VM ≥ 5 V); Vsat 0.5 V typ / 0.7 V max at 1 A (VCC = VM = 5 V) | At 1 A expect ~0.5 W in the die from one channel alone — consistent with the dissipation limits above |
| Body diode VF | 1.0 V typ / 1.1 V max at 1 A | This is the module's only flyback path; verify on the scope (section 9.E) |
| Logic thresholds | VIH ≥ 0.7 × VCC, VIL ≤ 0.3 × VCC; all inputs have internal 200 kΩ pull-downs; input current 5–25 µA at 3 V | At VCC = 3.3 V: VIH = 2.31 V, VIL = 0.99 V — 3.3 V FPGA banks drive this directly, no level shifting needed |
| Supply currents | ICC 1.1 mA typ / 1.8 mA max (VCC = 3 V); standby ICC and IM ≤ 1 µA | Measurable pass/fail numbers for the first logic-only power-up |
| UVLO | detect 1.9 V typ, recover 2.2 V typ — datasheet marks these "design target only" | No min/max is guaranteed; do not design behavior around exact UVLO points |
| Thermal shutdown | 175 °C typ, 20 °C hysteresis — "design target only" | Silent: no pin reports it. A motor that mysteriously stops then restarts may be TSD cycling |
| Switching | fPWM up to 100 kHz; tr 24 ns / tf 41 ns typ; dead time 50 ns (H→L) / 230 ns (L→H), design targets | 100 kHz is the ceiling for the pwm_gen HDL core; dead time is internal — no host-side dead-time generation needed for this module |
| Truth table | See below | Must be verified per channel at the outputs, both channels |
H-SW control truth table (datasheet, to be verified on hardware)#
| IN1 | IN2 | PWM | STBY | OUT1 | OUT2 | Mode |
|---|---|---|---|---|---|---|
| H | H | H or L | H | L | L | Short brake |
| L | H | H | H | L | H | CCW |
| L | H | L | H | L | L | Short brake |
| H | L | H | H | H | L | CW |
| H | L | L | H | L | L | Short brake |
| L | L | H | H | high-Z | high-Z | Stop |
| any | any | any | L | high-Z | high-Z | Standby |
Note the asymmetry that surprises firmware authors: PWM low does not mean coast — it means short brake (slow-decay). Coast (high-Z) requires IN1 = IN2 = L or STBY low.
7. Expected values before bench testing#
All values are datasheet-derived targets for an unbuilt board.
| Quantity | Design target | What to measure |
|---|---|---|
| VCC rail | 3.3 V from PMOD/bench | J1 pin 6/12 to pin 5/11 |
| ICC, STBY low | ≤ 1 µA (plus R1's ~0 µA; leakage only) | 3.3 V supply current, inputs idle |
| ICC, STBY high, no PWM | ~1.1 mA typ, ≤ 2.2 mA | 3.3 V supply current |
| IM (VM), standby | ≤ 1 µA | Motor-supply current, STBY low |
| STBY at rest | < 0.99 V (expect ≈ 0 V via R1) | U1 pin 19 / PMOD pin 9 |
| CW/CCW driven output | VM − Vsat; ≈ VM − 0.5 V at 1 A | J4/J5 across motor terminals |
| Short-brake state | Both outputs ≈ 0 V, low impedance | J4/J5 to GND |
| Stop/standby state | Both outputs high-Z (floats, follows a pull) | J4/J5 with 10 kΩ test pulls |
| Flyback excursion | Within VM + 1.1 V and GND − 1.1 V | Scope on AO1/AO2 during PWM |
| Stalled-N20 channel current | Motor-dependent: ~0.36–0.67 A (LP/MP at 6 V); must stay < 1.0 A | Series ammeter or supply readout, limit enforced by supply |
| Dead-time shoot-through | No VM current spike beyond load current at PWM edges | Current probe on VM lead |
| U1 package temperature | Well below TSD; rough IC-only estimate ~0.5 W per channel at 1 A → large rise on a small board; measure | Thermocouple/IR on U1 during soak |
8. Manual schematic and assembly review checklist#
- Verify U1 orientation (pin 1 index toward AO1 side) and that all 24 SSOP pins are wetted; inspect for 0.65 mm-pitch bridges under magnification.
- Confirm PGND1 (pins 3/4), PGND2 (pins 9/10), and GND (pin 18) are all soldered and all reach the common ground pour — the schematic joins them with one label each; layout must give motor return current a path that does not pass through pin 18.
- Confirm VM1/VM2/VM3 (pins 24/13/14) are all connected; the generator labels each separately.
- Measure R1 = 10 kΩ from STBY to GND before connecting a host.
- Verify C1/C2 (0805) and C3/C4 (0603) locations: C1–C3 on VMOT, C4 on 3V3. Flag C3's 16 V rating if VM above ~11 V will be used.
- Buzz the PMOD pinout against the table in section 4, especially that pins 6/12 are 3V3 and 5/11 are GND, and that pin 10 is truly unconnected.
- Confirm no continuity between VMOT and 3V3, VMOT and any PMOD signal, and 3V3 and GND.
- Check screw-terminal torque on J3/J4/J5 and that stranded motor leads are ferruled or tinned per your bench convention.
9. Ordered bench-test procedure#
Stop at the first abnormal result. Record board serial, motor identity (vendor, winding, measured terminal resistance), supplies, equipment IDs, ambient, and operator. Observe the hands-clear convention (section 2) before every first enable with a motor attached.
A. Unpowered inspection and resistance tests#
- Nothing connected. Complete the section 8 checklist under magnification.
- Measure resistance VMOT-to-GND and 3V3-to-GND in both meter polarities. Expect no hard short (MLCC charging kick then high resistance).
- Measure AO1/AO2/BO1/BO2 to VMOT and to GND. Expect diode signatures from the body diodes in diode-test mode (~0.5–0.7 V meter reading), never 0 Ω.
- Measure STBY to GND: 10 kΩ (R1, in parallel with U1's internal 200 kΩ — expect ≈ 9.5 kΩ).
- Verify VMOT-to-3V3 is open.
B. Logic-only power-up (no motor supply, no motors)#
Standalone context: bench 3.3 V, current limit 50 mA, onto PMOD 3V3/GND. Host context: plug into the FPGA board with a bitstream that drives all module pins low.
- Apply 3.3 V. Expect supply current ≤ ~1 µA-class (meter floor) with STBY low; investigate anything above a few mA immediately.
- Confirm STBY reads ≈ 0 V, all outputs high-Z (a 10 kΩ pull to a test voltage on AO1 moves the node freely).
- Drive STBY high (3.3 V). Supply current should rise to ~1.1 mA typ (≤ 2.2 mA). Outputs remain high-Z with IN pins low (stop state).
- Return STBY low before proceeding.
C. Motor supply, no motors: truth table and STBY verification#
Connect the second, current-limited supply to J3 (suggest 6 V, limit 200 mA for this section — no load current should flow). Attach 10 kΩ test pull resistors from each output to a midpoint (or alternately to VM and GND) to make high-Z detectable. This section is mandatory for both channels.
- STBY low: step IN1/IN2/PWM through all combinations. All four outputs must remain high-Z throughout (outputs follow the test pulls). This is the STBY high-Z verification.
- STBY high, channel A: verify every row of the section 6 truth table at AO1/AO2 with a DMM/scope: IN1=H IN2=L PWM=H → AO1=VM−Vsat, AO2≈0 (CW); IN1=L IN2=H PWM=H → AO1≈0, AO2=VM−Vsat (CCW); PWM=L in either direction → both outputs low (short brake); IN1=IN2=H → both low (short brake); IN1=IN2=L → high-Z (stop).
- Repeat step 2 completely for channel B at BO1/BO2.
- Apply 20 kHz PWM to PWMA with IN1=H IN2=L and scope AO1: clean VM/GND square wave, edges monotonic. Watch VM supply current for shoot-through spikes at edges. Repeat for channel B.
- Drop STBY low mid-PWM: outputs must go high-Z immediately.
D. First motor spin (one channel, one motor)#
Use an N20-class LP or MP motor first (stall 0.36–0.67 A at 6 V — inside the driver's continuous rating). Motor supply 6 V, current limit set to 0.8 A.
- Power everything down. Wire the motor to J4. Torque the screws. Never change motor wiring with power applied.
- Hands clear. Logic up, motor supply up, STBY high, then command CW at 50 % PWM. The motor should spin; note direction against lead colors.
- Command CCW: direction reverses. Command PWM low: short brake (shaft resists by hand noticeably more than in stop). Command stop (L/L): shaft spins freely.
- Sweep PWM duty 10–100 % at 20 kHz; speed should track monotonically.
- Repeat on J5/channel B with the same motor.
E. Flyback and dynamic checks#
- Scope AO1 and AO2 (and VM) during PWM at 50 % duty with the motor loaded by finger-braking the gearbox output (not the bare shaft). Output excursions must stay within roughly VM + 1.1 V and GND − 1.1 V (body-diode VF at 1 A is 1.0 V typ / 1.1 V max). Anything beyond that indicates lead inductance or a decoupling problem.
- From full speed, command short brake and capture the VM bus: C1/C2 must absorb the regenerative pump-up without VM rising near 15 V abs max. With a bench supply that cannot sink current, expect some pump-up — quantify it; large motors or long decelerations may need bulk electrolytic or a different brake strategy.
- Repeat with the longest motor leads the application will use.
F. Stalled-motor per-channel current test#
This test deliberately stalls a motor. Stay under the TB6612FNG's ~1 A continuous per-channel operating rating; use the supply current limit to enforce this, not good intentions.
- Use an N20 LP or MP winding (expected stall 0.36–0.67 A at 6 V). Do not run this test with an HP N20 (~1.6 A) or JGA25-class motor at rated voltage — their stall currents exceed the driver's continuous rating. Datasheet reality check: the 1.2 A "average" and 3.2 A "peak" absolute maximums are a 100 % figure and a 10 ms single-pulse figure respectively; neither permits sustained stall above ~1.0 A operating.
- Set the motor supply current limit to 1.0 A. Command CW at 100 % duty and mechanically lock the gearbox output with a clamp fixture (never fingers).
- Record steady-state channel current, VM droop, and U1 package temperature every 30 s for 5 minutes or until temperature plateaus. Terminate at once if U1 exceeds ~100 °C surface, if current misbehaves, or if the motor smells hot — small motors cook at stall long before the driver does.
- Repeat for channel B, then both channels stalled together at reduced VM if dual-stall behavior matters to the application: the datasheet dual-channel derating curve shows roughly 0.9–1.0 A per channel at 100 % duty, IC only, 25 °C — the small board makes this worse. Watch for silent TSD cycling (motors pulsing without command changes).
G. Host-context integration#
- Repeat sections C and D with the FPGA host generating the signals from the
pwm_genHDL core (once written — it is still a release to-do). - Verify host reset/reconfiguration mid-spin: STBY must fall (R1's job) and motors must coast during FPGA reconfiguration. This is the single most safety-relevant integration behavior; record it explicitly.
10. Troubleshooting map#
| Symptom | First measurements | Likely areas |
|---|---|---|
| Logic current high at first power-up | 3V3 rail, U1 orientation | U1 rotated/bridged, C4 short, PMOD miswire |
| Outputs never leave high-Z | STBY at U1 pin 19, VM at pins 13/14/24 | R1 short, host not driving pin 9, VM absent, UVLO (VCC < ~2 V) |
| One channel dead, other fine | Truth-table pass at U1 pins vs. connector | Unsoldered SSOP pins, screw terminal, PMOD signal open |
| Motor runs one direction only | IN1/IN2 at U1 pins during both commands | Bridged/open IN pin, host pin assignment |
| Both outputs always low | IN1/IN2 both stuck high; short-brake row | Solder bridge on inputs, host driving H/H |
| Motor pulses/stutters without command | U1 temperature, VM droop, supply limit | TSD cycling, UVLO from VM sag, supply current limit engaging |
| VM rings or spikes at PWM edges | Scope C1/C2/C3 right at pads | Missing/cracked bulk caps, long supply leads, C3 open |
| Weak drive / large voltage loss | Vsat across each half-bridge at load | Expected 0.5 V typ at 1 A; more suggests poor soldering on VM/PGND pins |
| Board fine bare, fails in host | Ground path between motor supply and host | Ground loop or missing common ground; supplies not sharing reference |
| Everything works but board is hot | Compare against section 7 dissipation notes | Undersized copper (board is smaller than any datasheet reference layout) — layout revision |
11. Bench record template#
| Field | Record |
|---|---|
| Board revision / serial | |
| Assembly notes and checklist deviations | |
| Motor(s): vendor, winding, terminal resistance, measured stall current | |
| Logic supply / host board ID and bitstream | |
| Motor supply ID and current-limit setting per test | |
| DMM/scope/current-probe/thermal equipment and calibration | |
| Ambient, mounting/fixture description | |
| A: unpowered resistance results | |
| B: logic-only currents (STBY low / high) | |
| C: truth table result, channel A and channel B; STBY high-Z result | |
| D: first-spin result, both channels, direction vs. lead colors | |
| E: flyback excursion and brake pump-up captures | |
| F: stall current, VM droop, U1 temperature curves per channel | |
| G: host reset-during-spin behavior | |
| Deviations, photos, raw-file paths | |
| Reviewer / date / disposition |
12. Review conclusion#
The architecture is deliberately minimal and pedagogically coherent: one integrated dual H-bridge with internal dead time, flyback diodes, UVLO, and TSD; strict motor/logic power separation with grounds joined on the module; and a fail-safe standby default via R1. The datasheet supports 3.3 V logic directly and the PMOD carries no motor current, which protects the host by construction.
The honest weaknesses are equally clear. First, the design is unfabricated — nothing here has ever been measured. Second, the TB6612FNG reports no faults: TSD and UVLO are silent, so the bench supply's current limit is the only external protection and the host cannot know a channel has shut down; this is a documented line-rule exception, and the curriculum should say so out loud. Third, thermals are the main physical risk: the 20 × 40 mm outline is smaller than the smallest datasheet reference board, and dual-channel operation near 1 A per channel is at the edge of the derating curve — layout copper and a measured stall soak (section 9.F) must close this before release. Fourth, small BOM items remain open: C3's 16 V rating is marginal against a 13.5 V rail, the J3/J4/J5 screw-terminal MPN is still TBD, the generator's datasheet URL is dead, and the VCC decoupling is lighter than Toshiba's application diagram. Finally, motor selection is a safety parameter, not a preference: only LP/MP N20-class windings stall safely inside this driver's rating, and that constraint belongs on the silkscreen or at least in the README.