← AXA-001

Circuit review & bench-test guide

AXA-001 — TB6612FNG dual DC motor driver PMOD module

Design-stage — board not yet fabricated

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.

3. Power and control sequence#

  1. 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.
  2. 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.
  3. Motor power arrives on J3; C1/C2 (2× 10 µF) supply PWM switching current and C3 (100 nF) handles high frequency at the driver.
  4. 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.
  5. 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#

ReferencePins/signalsIntended use
J1PMOD 12-pin, Type 1 GPIOHost logic: all lines host-driven
J31 VMOT, 2 GND (5.08 mm screw terminal)Motor supply 2.5–13.5 V; grounds join here
J41 AO1, 2 AO2Motor A
J51 BO1, 2 BO2Motor B
PMOD pin123456789101112
NetPWMAAIN1AIN2PWMBGND3V3BIN1BIN2STBYNCGND3V3

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 summaryFunction and why neededIf absent/openIf shorted, wrong, or misassembled
U1Toshiba 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 pinBoth 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 allRotated 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
J1PMOD 12-pin plug, Type 1 GPIOHost logic, 3.3 V, and logic ground; all lines host-drivenNo control or logic powerMis-keyed/offset insertion swaps 3V3 and signals; PMOD must never carry VM
J3Phoenix 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 joinNo motor powerReversed 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
J4Screw terminal, AO1/AO2Motor A connectionNo Motor A driveMotor 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
J5Screw terminal, BO1/BO2Motor B connectionNo Motor B driveSame 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 / partPurposeWhat is lost if omittedImportant failure/review point
R110 kΩ 0603, Yageo RC0603FR-0710KLSTBY 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 PMODOnly U1's internal 200 kΩ pull-down remains — weaker noise immunity on the enable line during host power-up glitchesShort 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
C110 µF 25 V X5R 0805, Murata GRM21BR61E106KA73LVM bulk reservoir for PWM switching currentVM droop/ringing each PWM edge; supply-lead inductance rings against the bridge25 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)
C210 µF 25 V X5R 0805, same MPNSecond VM bulk reservoir (parallel with C1)Half the bulk capacitance; worse droop under simultaneous two-channel PWMSame notes as C1
C3100 nF 16 V X7R 0603, Murata GRM188R71C104KA01DVM high-frequency decoupling at the driver pinsFast edge current loops enlarge; more ringing and radiated noise16 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
C4100 nF 16 V X7R 0603, same MPNVCC (3.3 V) logic decouplingLogic-supply noise at U1; possible spurious UVLO events near the 1.9 V detect threshold if the rail bouncesToshiba'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–03ERC power flags (3V3, GND, VMOT)Schematic-only objects satisfying ERC power-input checksNot physical partsNothing 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 factValueBoard-specific interpretation
Absolute max VM / VCC / VIN / VOUT15 V / 6 V / −0.2 to 6 V / 15 VJ3 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 max1.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 currentmax 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 ATwo motors near stall simultaneously is thermally worse than the per-channel numbers suggest
Power dissipation0.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 % CuThe 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 / saturation0.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 VF1.0 V typ / 1.1 V max at 1 AThis is the module's only flyback path; verify on the scope (section 9.E)
Logic thresholdsVIH ≥ 0.7 × VCC, VIL ≤ 0.3 × VCC; all inputs have internal 200 kΩ pull-downs; input current 5–25 µA at 3 VAt 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 currentsICC 1.1 mA typ / 1.8 mA max (VCC = 3 V); standby ICC and IM ≤ 1 µAMeasurable pass/fail numbers for the first logic-only power-up
UVLOdetect 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 shutdown175 °C typ, 20 °C hysteresis — "design target only"Silent: no pin reports it. A motor that mysteriously stops then restarts may be TSD cycling
SwitchingfPWM up to 100 kHz; tr 24 ns / tf 41 ns typ; dead time 50 ns (H→L) / 230 ns (L→H), design targets100 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 tableSee belowMust be verified per channel at the outputs, both channels

H-SW control truth table (datasheet, to be verified on hardware)#

IN1IN2PWMSTBYOUT1OUT2Mode
HHH or LHLLShort brake
LHHHLHCCW
LHLHLLShort brake
HLHHHLCW
HLLHLLShort brake
LLHHhigh-Zhigh-ZStop
anyanyanyLhigh-Zhigh-ZStandby

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.

QuantityDesign targetWhat to measure
VCC rail3.3 V from PMOD/benchJ1 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 mA3.3 V supply current
IM (VM), standby≤ 1 µAMotor-supply current, STBY low
STBY at rest< 0.99 V (expect ≈ 0 V via R1)U1 pin 19 / PMOD pin 9
CW/CCW driven outputVM − Vsat; ≈ VM − 0.5 V at 1 AJ4/J5 across motor terminals
Short-brake stateBoth outputs ≈ 0 V, low impedanceJ4/J5 to GND
Stop/standby stateBoth outputs high-Z (floats, follows a pull)J4/J5 with 10 kΩ test pulls
Flyback excursionWithin VM + 1.1 V and GND − 1.1 VScope on AO1/AO2 during PWM
Stalled-N20 channel currentMotor-dependent: ~0.36–0.67 A (LP/MP at 6 V); must stay < 1.0 ASeries ammeter or supply readout, limit enforced by supply
Dead-time shoot-throughNo VM current spike beyond load current at PWM edgesCurrent probe on VM lead
U1 package temperatureWell below TSD; rough IC-only estimate ~0.5 W per channel at 1 A → large rise on a small board; measureThermocouple/IR on U1 during soak

8. Manual schematic and assembly review checklist#

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#

  1. Nothing connected. Complete the section 8 checklist under magnification.
  2. Measure resistance VMOT-to-GND and 3V3-to-GND in both meter polarities. Expect no hard short (MLCC charging kick then high resistance).
  3. 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 Ω.
  4. Measure STBY to GND: 10 kΩ (R1, in parallel with U1's internal 200 kΩ — expect ≈ 9.5 kΩ).
  5. 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.

  1. Apply 3.3 V. Expect supply current ≤ ~1 µA-class (meter floor) with STBY low; investigate anything above a few mA immediately.
  2. Confirm STBY reads ≈ 0 V, all outputs high-Z (a 10 kΩ pull to a test voltage on AO1 moves the node freely).
  3. 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).
  4. 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.

  1. 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.
  2. 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).
  3. Repeat step 2 completely for channel B at BO1/BO2.
  4. 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.
  5. 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.

  1. Power everything down. Wire the motor to J4. Torque the screws. Never change motor wiring with power applied.
  2. Hands clear. Logic up, motor supply up, STBY high, then command CW at 50 % PWM. The motor should spin; note direction against lead colors.
  3. 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.
  4. Sweep PWM duty 10–100 % at 20 kHz; speed should track monotonically.
  5. Repeat on J5/channel B with the same motor.

E. Flyback and dynamic checks#

  1. 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.
  2. 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.
  3. 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.

  1. 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.
  2. 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).
  3. 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.
  4. 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#

  1. Repeat sections C and D with the FPGA host generating the signals from the pwm_gen HDL core (once written — it is still a release to-do).
  2. 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#

SymptomFirst measurementsLikely areas
Logic current high at first power-up3V3 rail, U1 orientationU1 rotated/bridged, C4 short, PMOD miswire
Outputs never leave high-ZSTBY at U1 pin 19, VM at pins 13/14/24R1 short, host not driving pin 9, VM absent, UVLO (VCC < ~2 V)
One channel dead, other fineTruth-table pass at U1 pins vs. connectorUnsoldered SSOP pins, screw terminal, PMOD signal open
Motor runs one direction onlyIN1/IN2 at U1 pins during both commandsBridged/open IN pin, host pin assignment
Both outputs always lowIN1/IN2 both stuck high; short-brake rowSolder bridge on inputs, host driving H/H
Motor pulses/stutters without commandU1 temperature, VM droop, supply limitTSD cycling, UVLO from VM sag, supply current limit engaging
VM rings or spikes at PWM edgesScope C1/C2/C3 right at padsMissing/cracked bulk caps, long supply leads, C3 open
Weak drive / large voltage lossVsat across each half-bridge at loadExpected 0.5 V typ at 1 A; more suggests poor soldering on VM/PGND pins
Board fine bare, fails in hostGround path between motor supply and hostGround loop or missing common ground; supplies not sharing reference
Everything works but board is hotCompare against section 7 dissipation notesUndersized copper (board is smaller than any datasheet reference layout) — layout revision

11. Bench record template#

FieldRecord
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.