EMG Schematic Layout Cleanup


Thought for 3 mins 20 sec
Thought for 7 sec
Managing 1 task
Thought for 7 sec
2/2 Verify schematic readability and unchanged electrical connections; identify remaining cleanup.

Arrange and draw all functional blocks without changing connectivity.

Verify schematic readability and unchanged electrical connections; identify remaining cleanup.

Thought for 10 sec
Awaiting 1 task
"Schematic Drafting Review" completed.
The connectivity comparison confirms that all 49 nets still connect the same pins. The readability check found more work in the op-amp stages and electrode-jack wiring, which I’m correcting now.
Thought for 26 mins 21 sec
Thought for 8 sec
Awaiting 1 task
"STM32 EMG Schematic Layout" completed.
The analog stages now have drawn signal paths, but a wire-placement bug on flipped symbols is blocking part of the USB drawing. I’ll leave the affected connections labeled and finish the independent label fixes; the bug needs Contact Support.
Thought for 8 mins 11 sec
Thought for 10 sec
Thought for 9 sec
Awaiting 1 task
"STM32 EMG Schematic Layout" completed.
I arranged all 78 components into eight functional blocks and added local wires and net labels. All 49 nets retain exactly the same pin connections; no electrical connections changed.
The drawing is not fully clean: wire crossings and label crowding remain, and a flipped-symbol wire-placement bug blocks the shared USB power wire. That bug needs Contact Support; the remaining drafting cleanup is still open.

Simulation Guide
Current-state adoption addendum — 2026-10-27, commit 063c2fe6
The user-authorized gain redistribution is now applied: R12/R13 = 13.7k each, 0.1%, 0402; R17 = 210k and R19 = 2.43k, both 1%, 0402; R18 remains 10k. These values supersede the original 4.99k/82k/2.26k snapshot. There remain 78 components and 49 nets; topology, filters, protection and PCB were not changed. J2's obsolete USBLC6 note was corrected by the capture agent to the actual TPD2E2U06DRLR. That agent reports fresh ERC 0 errors / 1 unchanged D4 unspecified-pin-type warning; this documentation continuation did not rerun ERC or edit the live design.
Current ideal equations: RG = 27.4k; G1 = 1 + 100k/27.4k = 4.6496350365. G2 open = 22; G2 closed = 1 + 210k(1/10k + 1/2.43k) = 108.4197530864. Resistor-only totals = 102.291970803 / 504.112282599 V/V. Balanced zero-source-impedance input attenuation is 1/1.02 = 0.980392157, not an additional arbitrary gain correction.
Newly executed ideal AC (400/800 points per decade, plus exact-frequency samples): jack-to-ADC gains at 20/100/500 Hz are 71.36898/98.54068/73.04825 open and 351.7185/485.6253/359.9943 closed. Peaks are 100.5408/495.4822 V/V near 253.367 Hz; peak-relative band 19.892–506.603 Hz. Relative-to-100-Hz attenuation is 72.7269 dB at 4 kHz, 96.3984 dB at 7.5 kHz and 99.0169 dB at 8.02 kHz. These are unlimited linear models, not achievable 1 V-input output swings.
Under the explicitly assumed 3.2 V rail, 1.6 V midrail and ±1.5 V usable swing, ±250 mV jack DC plus 12 mVpk gives INA output excursion 1.194318 V, not the unloaded 1.218 V. ±100 mV plus 12 mVpk gives 0.510548 V. At 12/2.4 mVpk open/closed, U4D AC excursions are 1.206490/1.189157 V. Adding assumed U4B 500 µV Vos times G2 and 1 mV for two followers gives 1.218490/1.244367 V; capacity/demand = 1.23103/1.20543. Both meet the nominal 1.2 screen, high gain marginal; tolerances and real limits remain unqualified. INA internal outputs are VCM ∓ G1·vd/2, where vd is the loaded INA differential input, not merely the internal feedback-resistor term.
CM_SENSE nominal source Thevenin changes 2.495k → 6.85k; assumed 60 pA U5A bias gives 0.411 µV loading error. Preserve physical split RG and the corrected signed midpoint formula in the review. No new RLD phase/gain-margin or total-noise result was computed: previous AC/headroom/noise/SNR/RLD numerical results elsewhere in this guide or older notes are historical, superseded as current-state evidence by this dated addendum and the Gain Update Verification. Unchanged ideal normalized filter shape is not evidence of unchanged real loop stability or noise.
Current run evidence: 400 points/decade, 800 points/decade, exact frequencies. Vendor/internal RG fidelity, nonlinear recovery, actual ADC/noise, procurement and complete-system isolation/safety remain unresolved. Bench simulator only. No AD8232 substitution was made.
Scope, provenance and interpretation
Snapshot: 2026-10-27, STM32 Surface EMG. Read-only schematic/component-property inspection reports 78 components; complete net inspection reports 49 connected nets. This guide covers 78/78 designators: R1–R31, C1–C31, U1–U5, D1–D5, J1–J4, F1 and Y1. No circuit, BOM, symbol or package selection is changed by this document. Live topology, not the earlier architectural sketch, is authoritative. Symbol coordinates are immaterial to simulation.
Evidence used: current full schematic properties, complete 49-net membership list, targeted pin metadata and BOM descriptions; all seven existing project files (Design Notes, Project Specification, EMG Sensor Requirements, Firmware Requirements, Board Bring-Up Plan, Safety FMEA and Design History File); focused manufacturer-datasheet queries and TI model-catalog search. Values described as recorded below are project data, not independently procurement-qualified datasheet guarantees. Datasheet claims carry inline citations; calculations are explicitly calculations. Missing data is not permission to infer a guarantee.
Historical ERC read: 0 errors, 1 warning, D4 unspecified library pin types (review timestamp 2026-10-27T18:33:16.623Z); post-adoption capture reports the same counts as noted above. Warning means possibly wrong, not proof of wrong polarity; earlier design notes record manual symbol/footprint cathode verification. ERC is not an analog simulation or a safety approval. No fabrication DRC claim is made. This continuation makes documentation only. Native IEC symbol-style setting was unavailable; existing symbols remain unchanged. No GPIO insertion detector or isolated detect contact is implemented.
Bench simulator only. Neither these simulations, current-limiting calculations nor an external USB isolator constitute human-safety certification. Human connection remains blocked pending complete-system qualified isolation/leakage/fault review, including shield, SWD and instrumentation ground paths.
Signal flow and operating references
User-confirmed jack decision (2026-10-27): retain SJ-3524-SMT-TR and omit GPIO plug detection. Tip (pin 2) is EMG+, ring (pin 3) is EMG−, sleeve (pin 1) is driven reference, and tip-switch (pin 4) remains unconnected. Simulations must not add a GPIO detector, detector pull-up, or ground connection to the sleeve. J1 tip/ring -> R6/R8 jack-side limiters -> midpoint D2/D3 clamps -> R7/R9 INA-side limiters -> INA_INP/INA_INN with R10/R11 bias returns and C18/C19/C20 RF filtering -> U3 INA333 -> C23/R16 HP -> U4B selectable noninverting gain -> U4C low-Q Sallen-Key -> U4D high-Q Sallen-Key -> R24/C28 -> U1 PA0 ADC.
R14/R15 divide actual 3V3A, C22 filters that divider, and U4A buffers it as VMID. VMID is not an independent fixed 1.650 V supply and is not GND. It biases the INA REF, both input bias returns, HP return, gain lower legs and RLD references. LP shunt capacitors C25/C27 connect to GND, not VMID. At settled DC, the LP chain passes the biased signal with unity gain.
U3 split gain-resistor midpoint CM_SENSE -> U5A buffer -> R25 -> U5B inverting feedback around VMID with R26 parallel C30 -> R27 -> D5-clamped RLD_MID -> R28 -> J1 sleeve. The sleeve is RLD_JACK, never ground. The external body/electrode network closes this loop; do not replace body common mode by an ideal grounded source during stability analysis. U5C/D are powered spare followers, not extra filters.
Power: J2 VBUS_CONN with D4 TVS -> F1 -> 5V_USB -> U2 always-enabled LDO -> 3V3 -> R1 -> 3V3A. USB2 data uses D1, R4/R5; MCU uses Y1/C16/C17, boot/reset and bench-only J3 SWD. There is no onboard power/data isolation.
Connectivity and component inventory conventions
The following inventory is a complete reconstruction appendix. Net labels are literal project names; map GND to SPICE node 0 and use a reversible alias table for punctuation in USB_D+/USB_D- and leading digits in rail names if required. Never merge VMID, VMID_DIV or GND. NC means physically unconnected, not grounded. Every R/C has pin name P1 = physical pin 1, P2 = physical pin 2; table endpoints are in that exact order.
Packages use imperial sizes: 0402 = SMD_0402_1005Metric, 0603 = SMD_0603_1608Metric, 0805 = SMD_0805_2012Metric, 1206 = SMD_1206_3216Metric. All resistor power ratings are recorded: 0.063 W for 0402, 0.66 W for the six 1206 limiters. Generic R/C tolerance entries are capture/design targets unless the selected procurement MPN is qualified; they are not automatically purchase guarantees. missing is a genuinely absent tolerance property, not 0%.
All 31 resistors
MPN generic means no exact procurement MPN recorded. Panasonic parts retain generic library symbols but do have instance MPNs.

Table


RefNominalRecorded tolerancePackageMPNPin 1 netPin 2 netPurpose
R110 ohm1% target0402generic3V33V3AAnalog rail RC feed
R210k1% target0402genericBOOT0GNDFlash-boot pulldown
R310k1% target0402generic5V_USBUSB_VBUS_SENSEVBUS divider upper
R40 ohm1% recorded, unsuitable as absolute jumper bound0402genericUSB_DP_CONNUSB_D+D+ series tuning position
R50 ohm1% recorded, unsuitable as absolute jumper bound0402genericUSB_DM_CONNUSB_D-D- series tuning position
R6100k1% recorded1206ERJ-P08F1003VEMG_P_JACKEMG_P_PROTPositive jack-side limiter
R7100k1% recorded1206ERJ-P08F1003VEMG_P_PROTINA_INPPositive INA-side limiter
R8100k1% recorded1206ERJ-P08F1003VEMG_N_JACKEMG_N_PROTNegative jack-side limiter
R9100k1% recorded1206ERJ-P08F1003VEMG_N_PROTINA_INNNegative INA-side limiter
R1010M1% target0402genericINA_INPVMIDPositive bias return
R1110M1% target0402genericINA_INNVMIDNegative bias return
R1213.7k0.1% target0402genericINA_RG_ACM_SENSEINA split RG first half
R1313.7k0.1% target0402genericCM_SENSEINA_RG_BINA split RG second half
R14100k0.1% target0402generic3V3AVMID_DIVMidrail upper divider
R15100k0.1% target0402genericVMID_DIVGNDMidrail lower divider
R1680.6k1% target0402genericHP_NODEVMIDHP DC return
R17210k1% target0402genericGAIN_FBGAIN_OUTGain feedback
R1810k1% target0402genericGAIN_FBVMIDAlways-present gain lower leg
R192.43k1% target0402genericGAIN_FBGAIN_SELJumper-enabled parallel lower leg
R2028.7k1% target0402genericGAIN_OUTLP1_ALP1 first series resistor
R2128.7k1% target0402genericLP1_ALP1_BLP1 second series resistor
R2254.9k1% target0402genericLP1_OUTLP2_ALP2 first series resistor
R2354.9k1% target0402genericLP2_ALP2_BLP2 second series resistor
R24100 ohm1% target0402genericLP2_OUTADC_EMGADC drive isolation
R2549.9k1% target0402genericCM_BUFRLD_INVRLD input resistor
R261M1% target0402genericRLD_INVRLD_OUTRLD DC feedback limit
R27200k1% recorded1206ERJ-P08F2003VRLD_OUTRLD_MIDOpamp-side reference limiter
R28200k1% recorded1206ERJ-P08F2003VRLD_MIDRLD_JACKJack-side reference limiter
R295.1k1% target0402genericUSB_CC1GNDCC1 independent sink pulldown
R305.1k1% target0402genericUSB_CC2GNDCC2 independent sink pulldown
R3120kmissing0402genericUSB_VBUS_SENSEGNDVBUS divider lower
R12 design note records a 25 ppm/°C target; no selected MPN guarantees it. R6 note records ±100 ppm/°C for the Panasonic limiter family; this is recorded prior research, not freshly validated here, and must be confirmed for both limiter MPNs before thermal-corner claims. No other resistor TCR or voltage coefficient is provided. Recorded limiter working-voltage/pulse claims are not needed for nominal SPICE; pulse-energy qualification remains open. No resistor voltage rating is promoted here from an uncited design note.
All 31 capacitors
Dielectric in parentheses is a design-note target, rather than a populated Dielectric property. All are generic/unqualified procurement parts except C24/C26, whose selected Murata MPNs are stated. Nominal capacitance must not be silently treated as effective biased capacitance.

Table


RefNominalRecorded tolerancePackageRecorded voltage ratingDielectric/statusPin 1 netPin 2 netPurpose / selected MPN
C14.7uFmissing060316VX5R5V_USBGNDInput bulk; generic
C21uFmissing040216VX7R5V_USBGNDU2 input bypass; generic
C31uFmissing040210VX7R3V3GNDLDO stability capacitor; generic
C410uFmissing060310VX5R3V3GNDDigital bulk; generic
C510uFmissing060310VX5R3V3AGNDAnalog RC bulk; generic
C6100nFmissing040216VX7R3V3AGNDAnalog HF bypass; generic
C7100nFmissing040216VX7R3V3GNDU1 VDD24 bypass; generic
C8100nFmissing040216VX7R3V3GNDU1 VDD36 bypass; generic
C9100nFmissing040216VX7R3V3GNDU1 VDD48 bypass; generic
C104.7uFmissing060310VX7R3V3GNDMCU bulk; generic
C114.7uFmissing06036.3VX5RVCAP1GNDCore-regulator capacitor; generic
C121uFmissing040210VX7R3V3AGNDVDDA/reference bypass; generic
C13100nFmissing040216VX7R3V3AGNDVDDA/reference bypass; generic
C14100nFmissing040216VX7R3V3GNDVBAT bypass; generic
C15100nFmissing040216VX7RMCU_NRSTGNDReset filtering; generic
C1618pFmissing040250VC0GHSE_INGNDHSE input load; generic
C1718pFmissing040250VC0GHSE_OUTGNDHSE output load; generic
C1847pF5% target040250V(C0G)INA_INPINA_INNDifferential RF shunt; generic
C1910pF2% target040250V(C0G, match C20)INA_INPGNDPositive CM RF shunt; generic
C2010pF2% target040250V(C0G, match C19)INA_INNGNDNegative CM RF shunt; generic
C21100nFmissing040216V(X7R)3V3AGNDU3 bypass; generic
C221uFmissing040210VunspecifiedVMID_DIVGNDMidrail divider filter; generic
C23100nF5% target080550V(C0G or PPS film, unresolved procurement)INA_OUTHP_NODEHP coupling; generic
C2412nF5% recorded080550V(C0G)LP1_ALP1_OUTLP1 feedback; GCM2195C1H123JA16D
C2510nF5% target040250V(C0G)LP1_BGNDLP1 shunt; generic
C2615nF5% recorded080550V(C0G)LP2_ALP2_OUTLP2 feedback; GCM2195C1H153JA16D
C272.2nF5% target040250V(C0G)LP2_BGNDLP2 shunt; generic
C281nF5% target040250V(C0G)ADC_EMGGNDADC charge reservoir; generic
C29100nFmissing040216V(X7R)3V3AGNDU4 bypass; generic
C3010nF5% target040250V(C0G)RLD_INVRLD_OUTRLD compensation; generic
C31100nFmissing040216V(X7R)3V3AGNDU5 bypass; generic
Missing tolerance count: 22 of 62 R/C parts: R31 and C1–C17, C21, C22, C29, C31 (1 resistor + 21 capacitors). The other 40 have recorded tolerance properties; most remain unsourced design targets, not procurement guarantees. R4/R5 additionally need an absolute resistance bound for a real 0-ohm jumper; a percentage of zero does not supply one.
No part-specific effective-C versus DC-bias curve, ESR versus frequency, ESL or aging model is captured for any capacitor. In particular C4/C5 at 3.3 V and C11 near the internally regulated core voltage require selected-MPN qualification. Earlier generic estimates such as C1 retaining 40–50% are not acceptable min/max guarantees. C22 dielectric is unknown. Numeric capacitance temperature coefficients are not recorded; C0G/X7R/X5R labels alone do not specify a measured distribution or biased effective value for a chosen MPN. All unprovided numeric thermal/aging/ESR/bias ranges are TBD; an exploratory multiplier is a study assumption only.
0402 exceptions: 14 R/C parts, leaving 48/62 in 0402. C1/C4/C5/C10/C11 are 0603 for effective-C/VCAP concerns; C23/C24/C26 are 0805 for stable-dielectric capacitance availability; R6–R9/R27/R28 are 1206 for limiter voltage/energy considerations. Existing notes call C24/C26 the smallest verified C0G sourcing options, not proof that no future smaller part exists. F1 is 0805 but is not an R/C exception.
Remaining 16 components: identity, package and exact connectivity
Packages below are captured library package codes/descriptions, not new footprint qualifications.

Table


RefRecorded MPN / identityRecorded package or package evidencePurpose
U1STM32F401CEU6UFQFPN-48_L7.0-W7.0-P0.50-BL-EPRecorder/ADC/USB
U2TPS7A2033PDBVRSOT-23-5_L2.9-W1.6-P0.95-LS2.8-BR3V3 LDO
U3INA333AIDGKRSOP65P490X110-8N library codeDifferential INA
U4OPA4340UABOM description 14-SOIC; no Package property returnedMidrail, gain, two LP units
U5OPA4340UABOM description 14-SOIC; no Package property returnedCM buffer, RLD, two spare units
D1TPD2E2U06DRLRSOT-553-5_L1.6-W1.2-P0.50-LS1.6-TL-1USB two-channel ESD
D2BAV199LT1GSOT-23_L2.9-W1.3-P1.90-LS2.4-BRPositive input clamp
D3BAV199LT1GSame SOT-23 codeNegative input clamp
D4SMF6.0A (Liown)SOD-123FL_L2.8-W1.9-LS3.7-RDVBUS TVS
D5BAV199LT1GSame SOT-23 codeRLD midpoint clamp
F10805L020YRF0805Resettable PTC
J1SJ-3524-SMT-TRManufacturer-specific SMT jack; no Package property returnedElectrode TRS
J2CX90M-16PUSB-C-SMD_CX90M-16PUSB2 Type-C receptacle
J3PZ254V-11-05PHDR-TH_5P-P2.54-V-MBench-only SWD
J422284020HDR-TH_2P-P2.54-V-M-1Gain shunt header
Y1X322512MSB4SI, 12 MHzBOM SMD3225-4PPassive HSE crystal, not powered oscillator
U3 physical pin mapping, directly from live capture: 1 RG_1=INA_RG_A; 2 VIN-=INA_INN; 3 VIN+=INA_INP; 4 V-=GND; 5 REF=VMID; 6 VOUT=INA_OUT; 7 V+=3V3A; 8 RG_2=INA_RG_B. INA333 gain equation G=1+(100kΩ/RG), RG between physical 1 and 8, is datasheet-supported. The external midpoint is real: do not collapse R12/R13 to one 27.4k resistor when studying RLD. Its common-mode behavior depends on the INA internal topology, not solely the differential output gain; the focused lookup did not independently validate a split-midpoint RLD application, so vendor-model midpoint fidelity must be tested.
U2: 1 IN=5V_USB; 2 GND=GND; 3 EN=5V_USB; 4 NC=unconnected; 5 OUT=3V3.
Every OPA4340 unit
Rows identify actual physical package pins; model port order must be mapped separately from the chosen .SUBCKT declaration. For both U4 and U5, physical 4 V+=3V3A and 11 V-=GND. The map below comes from the live schematic, not an assumed generic quad pin order.

Table


Device/unit+ input pin/net- input pin/netOutput pin/netConnected function
U4A3 VMID_DIV2 VMID1 VMIDMidrail unity buffer
U4B5 HP_NODE6 GAIN_FB7 GAIN_OUTNoninverting selectable gain
U4C10 LP1_B9 LP1_OUT8 LP1_OUTUnity LP1 follower
U4D12 LP2_B13 LP2_OUT14 LP2_OUTUnity LP2 follower/ADC drive
U5A3 CM_SENSE2 CM_BUF1 CM_BUFCM unity buffer
U5B5 VMID6 RLD_INV7 RLD_OUTCompensated inverting RLD
U5C10 VMID9 U5C_SPARE8 U5C_SPARESpare unity follower
U5D12 VMID13 U5D_SPARE14 U5D_SPARESpare unity follower
D1: 1 NC and 2 NC unconnected; 3 IO1=USB_DP_CONN; 4 GND=GND; 5 IO2=USB_DM_CONN. No VBUS steering pin. D2/D3/D5 each: 1 A=GND, 2 C=3V3A, 3 C/A respectively EMG_P_PROT / EMG_N_PROT / RLD_MID. Implement each dual diode as GND-anode to midpoint-cathode plus midpoint-anode to 3V3A-cathode, with correct reverse leakage/capacitance if included. D4 physical 1=VBUS_CONN, 2=GND; recorded polarity is 1 cathode / 2 anode, notwithstanding generic pin labels. F1 physical 1=VBUS_CONN, 2=5V_USB.
J1: 1 SLEEVE=RLD_JACK; 2 TIP=EMG_P_JACK; 3 RING=EMG_N_JACK; 4 TIP_SWITCH=NC. Manufacturer pin functions are verified. Pin 4 is the tip's switched contact, not electrically independent insertion detection; no GPIO detector exists. For no-plug studies open all external electrode connections; do not add a fictitious ground sleeve or detector bias. Plug insertion contact-short sequences require a separately declared test model, not an inferred schematic component.
J2: A5 CC1=USB_CC1; B5 CC2=USB_CC2; A6 DP1 and B6 DP2=USB_DP_CONN; A7 DN1 and B7 DN2=USB_DM_CONN; A4/A9/B4/B9 VBUS=VBUS_CONN; A1/A12/B1/B12 GND=GND; A8 SBU1 and B8 SBU2=NC. SHELL25/26/27/28 and MD27/28 all connect GND; the duplicate physical numbers are separate library terminal representations, not extra USB signal contacts. The shield is on the board's presumed isolated-side ground; whether external cabling preserves isolation is unknown. Capture corrected the obsolete USBLC6 wording: actual D1 is TPD2E2U06DRLR, with D4 separate on VBUS. Do not simulate the obsolete part.
J3 physical 1=3V3 reference, 2=SWCLK, 3=GND, 4=SWDIO, 5=MCU_NRST. Never treat 1 as a permitted external power input. J4 physical 1=GAIN_SEL, 2=VMID; use an open/closed shunt between these nodes. Y1 physical 1=HSE_IN, 3=HSE_OUT, 2/4=GND; it is a passive crystal despite the library display name. Exact crystal CL is unresolved: BOM description says 20pF, while the design note says exact-MPN CL is unconfirmed and uses inconsistent 12/14pF load assumptions across notes. Do not present clock pulling/startup margin as validated; confirm manufacturer ordering data first.
Every U1 physical pin

Table


PinNameNet/state
1VBAT3V3
2PC13NC
3PC14-OSC32_INNC
4PC15-OSC32_OUTNC
5PH0-OSC_INHSE_IN
6PH1-OSC_OUTHSE_OUT
7NRSTMCU_NRST
8VSSAVREF-GND
9VDDAVREF+3V3A
10PA0ADC_EMG
11PA1NC
12PA2NC
13PA3NC
14PA4NC
15PA5NC
16PA6NC
17PA7NC
18PB0NC
19PB1NC
20PB2NC
21PB10NC
22VCAP1VCAP1
23VSSGND
24VDD3V3
25PB12NC
26PB13NC
27PB14NC
28PB15NC
29PA8NC
30PA9USB_VBUS_SENSE
31PA10NC
32PA11USB_D-
33PA12USB_D+
34PA13SWDIO
35VSSGND
36VDD3V3
37PA14SWCLK
38PA15NC
39PB3NC
40PB4NC
41PB5NC
42PB6NC
43PB7NC
44BOOT0BOOT0
45PB8NC
46PB9NC
47VSSGND
48VDD3V3
49EPGND
49-net cross-check list
Every connected net below is represented in the component appendix; external sources/electrodes are testbench elements, not members of the 78-part BOM.
INA_RG_A, VMID_DIV, HSE_IN, SWCLK, INA_INN, HSE_OUT, SWDIO, INA_INP, LP2_A, CM_SENSE, U5C_SPARE, 3V3, HP_NODE, GND, USB_DM_CONN, EMG_N_JACK, ADC_EMG, EMG_N_PROT, 5V_USB, U5D_SPARE, RLD_MID, RLD_INV, CM_BUF, INA_OUT, USB_D+, MCU_NRST, VCAP1, USB_VBUS_SENSE, EMG_P_PROT, GAIN_SEL, RLD_OUT, EMG_P_JACK, USB_CC2, VMID, GAIN_FB, LP1_A, LP2_OUT, VBUS_CONN, LP1_OUT, USB_DP_CONN, BOOT0, USB_CC1, RLD_JACK, LP2_B, 3V3A, GAIN_OUT, INA_RG_B, USB_D-, LP1_B.
Nominal circuit relationships and sensitivity
These equations are ideal-circuit calculations, not procurement guarantees or new requirements.
  • VMID_DIV = 3V3A × R15/(R14+R15); nominal 0.5 × 3V3A. Divider Thevenin resistance 50k and C22 1uF give 50ms time constant / 3.18Hz pole before buffer dynamics. Actual VMID includes U4A offset/loading/finite bandwidth. Opposite ±0.1% divider extremes yield ratio 0.4995–0.5005 under the recorded targets, not a certified production band.
  • R1/C5 alone give 1/(2π×10×10uF)=1.59kHz; actual shunt includes C6/C12/C13/C21/C29/C31 and load impedances, so use the full supply network. DC 3V3A = 3V3 − 10ohm × analog-load current. Supply current modeled implicitly by ideal voltage-controlled sources is generally zero and cannot reproduce that drop.
  • U3 RG = R12 + R13 = 27.4k gives G1 = 4.6496350365. Preserve RG midpoint loading. Low-impedance source approximation gives input attenuation 10M/(10M + 200k) = 0.980392157 per balanced leg; skin impedance changes this. R10/R11 terminate at VMID, not ground.
  • C18 plus equal C19/C20 has approximate differential effective C =47pF+10pF/2=52pF; differential series R≈400k gives RF pole ≈7.65kHz. Approximate common-mode RC pole 1/(2π×200k×10pF)=79.6kHz. Electrode impedance, bias resistors, clamp capacitance and board/cable parasitics modify these approximations. Do not substitute these poles for the actual connected network.
  • HP C23/R16: 19.75Hz and 8.06ms nominal. At DC C23 opens, so HP_NODE returns to VMID; the INA can still saturate before this capacitor. High-pass filtering does not rescue an overloaded first stage.
  • J4 open: R19 dead-ended at GAIN_SEL, G2 = 1 + 210k/10k = 22; ideal total G1×G2 = 102.291970803. J4 closed: R19 joins VMID, Rg = 10k ∥ 2.43k, G2 = 108.4197530864; total = 504.112282599. The user authorized this gain redistribution, not a guaranteed signal/noise envelope; 8 kS/s remains a planned sample rate. J4 is manual and unreadable by firmware in this hardware. Model finite shunt resistance only as a declared study assumption until sourced.
  • Each LP section is unity-gain Sallen-Key with input -> Ra -> node A -> Rb -> node B -> follower output, Cf from A to output, Cg from B to GND. Ideal denominator is 1+s·Cg(Ra+Rb)+s²RaRbCfCg. Thus f0=1/[2π√(RaRbCfCg)] and Q=√(RaRbCfCg)/[Cg(Ra+Rb)]. LP1 explicitly uses Ra=R20, Rb=R21, Cf=C24, Cg=C25, giving f0≈506Hz, Q≈0.5477. LP2 uses Ra=R22, Rb=R23, Cf=C26, Cg=C27, giving f0≈505Hz, Q≈1.3056. Target Butterworth section Qs were 0.5412/1.3066; actual LP1 is not exactly that target. They are not two Q=0.707 sections. C24/C26 do not go to ground.
  • For equal-R sections, Q≈0.5√(Cf/Cg): cap-ratio errors change peaking; common scaling of both caps moves f0 without changing Q. Frequency logarithmic sensitivity is −1/2 to each of Ra/Rb/Cf/Cg. Use the general Q equation when independently varying resistors. HP has −1 logarithmic sensitivity to each R16/C23. Gain changes follow resistor ratios, including INA internal gain accuracy separately from external RG tolerance.
  • R24/C28 alone yield 100ns and 1.59MHz, not an extra 500Hz anti-alias pole. The reservoir/kickback settling must be simulated with the ADC switch and opamp output impedance, not inferred from this corner alone.
  • RLD feedback relative to VMID: H(s)=−(R26/R25)/(1+sR26C30), nominal DC −20.04, feedback pole 15.92Hz, high-frequency integration-unity estimate 1/(2πR25C30)=318.95Hz. This is not actual body-loop crossover. R27+R28=400k limits drive but adds load-dependent loop phase. U5A buffer dynamics and U3 CM_SENSE transfer must remain in the loop.
  • VBUS sense divider R3/R31 gives 2/3 nominal: 3.167–3.500V if protected 5V_USB itself is 4.75–5.25V. F1 drop lowers it. R31 lacks recorded tolerance, so a guaranteed divider min/max cannot be calculated. Earlier design notes' opposite 1% R31 calculation is an assumption, not supported by that property. No positive-injection/ramp guarantee follows from this ratio.
Model hierarchy and vendor-model provenance
  1. Topology/linear check: ideal resistors/capacitors and ideal amplifiers, finite testbench bias paths, a declared ideal 3V3A supply and VMID divider/buffer. Useful for nominal transfer only. Explicitly exclude rail limits, offset, noise, output current, ADC kickback, supply drop, chopper behavior, ESD and RLD safety. Do not use a single differential-output behavioral INA with floating RG pins to analyze RLD.
  2. Behavioral study: finite open-loop gain, dominant pole, output resistance, swing/current/ slew limits and offsets, with assumptions listed. The older RLD study used a single-pole 5.5MHz opamp assumption; that is not a full OPA4340 vendor macromodel or guaranteed worst-case GBW. A behavioral INA must implement the physical split-RG common-mode path. Compare CM_SENSE versus external common mode and differential input before trusting loop gain. Do not hardwire CM_SENSE to an arbitrary constant merely to obtain convergence.
  3. Vendor-model validation: TI datasheet states an OPA4340 SPICE macromodel is available. Catalog search on 2026-10-27 identified OPAx340 TINA-TI model Rev E, SBOM273E and INA333 PSpice Rev G SBOM382G / TINA-TI Rev E SBOM310E. These are catalog listings, not downloaded, version-pinned, inspected or executed model assets in this project. Model body revision/date/hash, license, simulator compatibility and exact pin order remain TBD; do not equate ZIP revision to the internal model revision. Download from TI, retain original archive and hash, record .SUBCKT headers/port mapping and any syntax adaptations before use. A single-channel family model may be instantiated eight times for U4/U5, but shared-supply/channel coupling must then be declared excluded unless supported. No quad-specific crosstalk simulation is claimed.
The INA333 datasheet notes its SPICE simulation requires a resistor on the RG pins (a very large value for nominal unity gain); this design already has R12/R13 and should preserve them. A model that exposes RG pins is necessary but not sufficient: validate that it gives physically meaningful midpoint/common-mode loading rather than a differential-gain abstraction. If it does not, retain a separately validated internal-topology behavioral RLD study and label that substitution.
Before vendor-model use, compare gain/phase versus gain setting and supply, input-common-mode/output envelope, offset/noise spectra at current G1 ≈ 4.65, bias/leakage versus temperature, output swing versus load, slew/recovery, PSRR and capacitive-load response against appropriate datasheet conditions. Do not apply a headline offset/noise number specified at G≥100 directly at G1 ≈ 4.65. Historical G≈11 models/results require reevaluation. Conditional device limits remain incomplete; missing values are TBD, not zero. Models may implement only typical values or omit temperature/chopping, overload recovery, input protection, power sequencing, PSRR, shared-channel coupling and package parasitics. Catalog availability is not evidence those behaviors are covered. Document supported/unsupported behavior per model file before claiming a result. Do not double-count noise or offset by adding external sources already implemented inside a model.
Power and digital simplification boundaries
For analog transfer, U1 can be replaced by an ADC input load plus static/dynamic rail-current sinks, while J2/USB/SWD/clock/reset/BOOT circuitry stays in the connectivity record but may be excluded from the SPICE solve. Explicitly state exclusions: firmware correctness, DMA/USB buffering, enumeration, PHY eye diagrams/ESD, clock startup/jitter, core regulator, boot/reset sequencing, SWD backpower, conducted/radiated coupling and digital ground bounce. These require dedicated models/tests, not an assertion that the omitted components have no effect.
For rail-sensitivity work retain R1 and all rail capacitors; use U2 vendor model or a declared source/output impedance and noise model. Draw MCU/analog supply loads explicitly because many opamp models do not consume realistic quiescent current. Prior allowances are 35mA typical / 60mA design input, not measured or complete datasheet maxima. Include F1 series resistance/thermal current dependence only when sourced; source-current-limit/inrush behavior is TBD. Nominal upstream range 4.75–5.25V is the intended normal USB supply, not a TVS-guaranteed operating range.
Do not use ideal voltage sources to prove protection: D1/D4 clamp coordination is not qualified; existing records state residual TVS clamps may exceed protected IC absolute maxima. Diode leakage/capacitance, reverse recovery and temperature model availability are unresolved. Ideal clamps are acceptable only for a labelled qualitative fault study, not ESD/surge survival. C11 is connected to an internal MCU regulator output and must not be driven by an invented external source unless a declared core-regulator approximation is being studied.
Intended firmware calculations: 12MHz HSE, M6/N168/P4/Q7 -> 84MHz SYSCLK and 48MHz USB; proposed ADC clock 21MHz with 480-cycle acquisition (~22.86us) and 8kS/s trigger (125us interval). These are plans, not executed firmware. Full conversion timing and internal ADC capacitance/resistance/charge injection must be sourced before a settling guarantee. A previously recorded ~4pF ADC-cap estimate is an unverified modeling assumption, not a guaranteed input-capacitance value. Model quantization using actual 3V3A/VREF and ground; decide and document code convention, INL/DNL/reference-noise assumptions rather than declaring an ideal quantizer to be a real 12-bit performance result.
Monte Carlo and corners: instructions for another LLM
Parameter provenance and ranges
For a recorded ±t% passive tolerance, a design-study bounded interval is x0(1−t/100) to x0(1+t/100). For generic parts call these design-target bounds, not supplier-guaranteed bounds. A tolerance gives a bound, not a probability density and not automatically ±3σ. Default exploratory draws may be uniform on that interval only if explicitly declared as a study assumption. Truncated Gaussian/lognormal alternatives and their σ/correlation need evidence or a stated study assumption. Unknown tolerance parts remain TBD; do not silently assign 5%, 10% or 20%. A nominal-only first pass is permitted but label those parts fixed and the yield estimate incomplete.
Examples calculated from current recorded targets: 100k ±1% → 99–101k; R12/R13 13.7k ±0.1% → 13.6863–13.7137k; 100k ±0.1% → 99.9–100.1k; 80.6k ±1% → 79.794–81.406k; R17 210k ±1% → 207.9–212.1k; 10k ±1% → 9.9–10.1k; R19 2.43k ±1% → 2.4057–2.4543k; 28.7k ±1% → 28.413–28.987k; 54.9k ±1% → 54.351–55.449k; 47 pF ±5% → 44.65–49.35 pF; 10 pF ±2% → 9.8–10.2 pF; C23 100 nF ±5% → 95–105 nF; C24 12 nF ±5% → 11.4–12.6 nF; C25/C30 10 nF ±5% → 9.5–10.5 nF; C26 15 nF ±5% → 14.25–15.75 nF; C27 2.2 nF ±5% → 2.09–2.31 nF; C28 1 nF ±5% → 0.95–1.05 nF. Formula above defines each remaining recorded range without guessing missing values. R4/R5 nominal 0 ohm may be shorted in the nominal analog exclusion model; do not claim physical resistance is guaranteed zero.
Do not multiply initial tolerance, thermal drift, DC-bias reduction and aging as though they were the same distribution. Separate x_eff(V,T,time) from initial manufacturing deviation, retain guaranteed combined limits where supplied, and label independence assumptions. C4/C5/C11 are priority effective-C/ESR qualification blockers. Actual temperature range of the complete design and all numeric temperature-dependent distributions remain TBD.
Correlation and sensitivity protocol
  • Default exploratory manufacturing draws: independent per part, including nominally identical resistors/caps, unless a matched network or vendor ratio-tracking specification exists. Notes saying “matched” for R6/R8, R7/R9, R10/R11, R12/R13, R14/R15 and C19/C20 express design intent, not guaranteed correlation. These are discrete parts, not a selected matched array.
  • Study both independent worst mismatch and a separately labelled common-lot/common-temperature component. Positive correlation can preserve ratios yet move absolute poles. Shared ambient temperature is correlated; self-heating and local gradients need separate assumptions. Keep supply/VMID/reference variations coupled physically, not independent random voltage sources.
  • Corner R12+R13 sum for INA gain; corner their mismatch and parasitic loading for CM_SENSE. Independently vary R17/R18/R19 and both J4 states. Sweep R14/R15 opposite extremes for midpoint ratio. Sweep R6–R11/C19/C20/electrode imbalance for CM-to-differential conversion. RLD tolerance includes R25, R26, C30 and both output limiters.
  • Sweep LP cap ratio and resistor mismatch, not only all-high/all-low frequency corners; the high-Q second section is particularly sensitive to ratio/GBW and load effects. Calculate actual f0/Q per draw, along with combined passband peak/ripple and attenuation. Tolerance corners are not guaranteed bounded system response if active parameters are omitted.
  • Include per-amplifier Vos, Ib±/Ios, voltage/current noise spectra, finite GBW/open-loop poles, output rail/current limits and INA gain/CMRR errors only with sourced conditional values or explicit TBD study ranges. Same-die offsets/drift are not guaranteed independent; compare shared/common and independent study cases when covariance is unknown. Never equate typical curves to absolute bounds. Noise is a time/frequency stochastic process, not simply a random DC offset.
  • Save random seed, sample count, distribution/ranges/provenance, temperature, supplies, electrode conditions, model hashes, simulator/options and failure logs. Increase sample count until reported quantiles stabilize to a stated study criterion; do not invent a production-yield confidence from an arbitrary run count. Report convergence failures separately, not as good draws.
Required analyses and test cases
  1. Operating point/startup: power ramps, 3V3A load drop, divider/VMID settling, C23 charge history and both gains; plot every amplifier output, INA inputs, CM_SENSE, RLD current and ADC bias. Initial capacitor voltages must be declared. Allow enough settling relative to slowest time constant; prior firmware plan discards at least 1s, not a proven worst-case recovery bound.
  2. AC transfer: differential excitation through finite electrode impedances, normalize to the stated source point (skin/body or jack, never interchange them). Record gain at 20/100/500Hz, peak, relative −3dB corners, f0/Q, 4kHz and 7.5kHz attenuation and phase. Repeat RLD on/off, both gains, tolerances and rails. Do not force common mode with a stiff ideal source when measuring RLD effectiveness.
  3. Electrode/skin/cable: explicitly draw a body common-mode node; each sensing electrode gets its own interface impedance and DC half-cell source; reference electrode gets its own impedance to RLD_JACK. A simple Rs+(Rp||Cp) or R||C is an exploratory equivalent, not a validated biological model. Prior setup used 50k||47nF per electrode, 200pF cable, then 500pF cables and 200k||10nF electrode cases. Reuse only as labelled prior study cases; broader min/max, frequency-dependent skin parameters, contact mismatch, cable-to-ground/interconductor capacitance, shield termination, electrode area, motion and noise sources are TBD measurements/study inputs. A cable length does not fix capacitance. Sweep one lead and all leads independently, open/near-short contacts, asymmetric half-cell offsets, dry/high impedance and cable capacitance. Do not assume all cable capacitance goes to local board ground; define its actual return.
  4. RLD loop stability: measure return ratio using an injection method preserving DC bias/loading, with correct feedback polarity; include U3 midpoint transfer, U5A/B, limiters, electrode/body/cable paths, input RF caps, bias resistors and clamp capacitance. Record crossover(s), phase/gain margin and probe sign convention; look for multiple crossings. Repeat electrode/cable and component/GBW/rail corners, lead-open/reconnection, U5 saturation and recovery. Closed-loop transient ringing is corroboration, not a substitute for a valid loop measurement. Acceptance margins are design targets TBD, not already certified.
  5. Signal/DC/headroom: sweep differential offset through −100/0/+100mV as earlier design study cases, plus amplitudes around 1mVpk and previous 15mVpk low-gain/3mVpk high-gain trials. These are not confirmed user range requirements. Sweep common mode independently and inspect INA internal/headroom limits where model exposes them; increase offsets/amplitude until saturation, then remove to measure recovery. HP recentering does not prove INA linearity. Include overload artifact and mismatch-induced CM conversion.
  6. Mains/interference: 50Hz and 60Hz common-mode coupling via explicitly declared capacitance/current source; independently vary coupling asymmetry, body return and cable paths. Prior 1Vpk through 2pF is a behavioral testbench condition, not a real-world environment limit. Report body CM, input differential artifact, ADC residual and RLD-on/off comparison. Add differential mains and out-of-band tones; ranges are TBD. Avoid reporting the RLD-only suppression ratio as the total circuit CMRR.
  7. ADC load/aliasing: start with ideal high-Z ADC, then switched sample capacitor with sourced or labelled assumed capacitance/switch resistance, acquisition time, charge injection, reference impedance and sample timing. Sweep source load and opamp stability, verify R24/C28 settling within a declared fraction-of-LSB target (target TBD), and include parasitic cable/board loads only where physically applicable. At provisional 8kS/s Nyquist=4kHz; inject tones near n·fs±20…500Hz and integrate broadband out-of-band noise through analog response and sampling. Analog attenuation alone is not a complete alias budget: source amplitude/spectrum and acceptable aliased noise are TBD. Compare ADC time-domain sampled spectra, not only continuous AC plots. Clock jitter and actual reference noise require separate sourced inputs.
  8. Noise/thermal/leakage: include resistor thermal noise, electrode impedances, R10/R11 noise/loading, opamp/INA voltage and current noise, clamp leakage and VMID/reference noise; integrate over a clearly stated analog/digital bandwidth. Add low-frequency drift/offset separately from broadband noise. Vendor-model .noise support must be demonstrated rather than assumed. Noise targets and temperature extremes remain unconfirmed.
Noise and SNR estimation: self-contained simulation recipe
Definitions, bandwidths and missing inputs
No numerical board noise floor or SNR is established here. Required inputs remain TBD: desired differential signal RMS amplitude and spectrum at a named source plane (body or J1), crest factor, electrode impedance/noise range and mismatch, body/cable coupling, operating temperature, real supply/reference spectra, ADC acquisition/noise/nonlinearity behavior and acceptable noise/SNR. For a sine, Vrms=Vpk/√2; a raw EMG waveform needs its actual RMS spectrum and crest factor instead. Electrode half-cell DC offset and amplifier Vos affect operating point/headroom but are not automatically integrated broadband noise. Motion artifacts and mains lines are interference, not the desired EMG signal. Report separate thermal/electronic noise, interference and distortion budgets, with a combined metric only when its denominator is defined.
Use one-sided PSD throughout this section: V²/Hz for voltage, A²/Hz for current; amplitude spectral density is the square root and has V/√Hz or A/√Hz units. For an equilibrium resistor at temperature T kelvin, series Johnson voltage PSD is S_v=4k_BTR (equivalent parallel current PSD 4k_BT/R); k_B=1.380649×10^−23 J/K. Choose one representation, not both. This equation gives thermal noise only, not thick-film excess noise, microphonics or electrode electrochemical noise. A passive equilibrium complex source impedance has thermal voltage PSD 4k_BT·Re[Z(f)] under the applicable equilibrium model; real electrodes can have excess/nonstationary noise and need separate measured or explicitly assumed spectra. Do not add both constituent resistor noise and an equivalent full-network thermal source.
Define H_sig(f)=V(ADC_EMG)/V_diff_source at the chosen source plane, with the actual electrode network, RLD and selected J4 state. Desired output signal power for a random signal is integral of |H_sig|² S_sig over its declared bandwidth; for a sine use |H_sig(f_sig)|×Vsig_in_rms. In-band 20–500Hz output noise is sqrt(integral_20^500 S_out(f) df), optionally including a specified digital filter |D(f)|². This is not total output noise. Also report full analog output noise integrated across a stated converged frequency range or physical measurement bandwidth, including frequencies below 20Hz and above 500Hz when relevant to saturation/sampling. With white input noise S0 and transfer H, ENBW=integral_0^infinity |H(f)|²df / |H_ref|² for a stated reference gain H_ref. Different injection points have different ENBWs; the 480Hz arithmetic band width is not the full-chain ENBW and cannot be used indiscriminately for every source. Integration limits and endpoint conventions must be recorded.
Source-by-source transfer through this actual circuit
For each primitive voltage noise source j, obtain the complex AC transfer H_j=V_ADC/v_j by a unit series-voltage injection at that source with all other independent AC excitations zeroed but the physical DC bias and impedances retained. For current noise, use a unit current injection and transimpedance Z_j=V_ADC/i_j. Then S_out,j=|H_j|²S_v,j or |Z_j|²S_i,j. A source injected after a filter does not see that upstream filter. Use the exact connected network, not one blanket gain×bandwidth approximation.
  • R6/R7/R8/R9 thermal sources sit in their own series legs and are shaped by C18–C20, R10/R11, electrode impedances and the INA input path before HP/gain/LP. R10/R11 have substantial impedance but their noise is shunted by the actual source network; do not simply RSS their open-circuit 10M noise at the INA. R12/R13 inject through the internal gain-resistor network and CM_SENSE/RLD loop; they are not external input series resistors. Validate that the INA model propagates this noise physically.
  • U3 input voltage/current noise needs spectra valid at current G1 ≈ 4.65, actual supply, common mode and temperature. Input-current noise flows through frequency-dependent impedances seen separately by VIN+ and VIN−; a shortcut i_n×200k misses the electrodes, 10M returns, RF caps, RLD and mismatch. Include any separate INA output-noise term with the correct gain dependence if the vendor model/specification separates input and output noise. Conditional device spectra and 1/f corners remain incomplete; earlier G≈11 lumped estimates and headline design-note numbers are not adopted as current board-level guarantees.
  • R16 thermal noise and U4B input noise enter at/near HP_NODE or GAIN_FB; they need their own transfer rather than assumed suppression by C23/R16's signal high pass. R17/R18 and R19 when J4 is closed contribute through the feedback impedances. U4B voltage-noise gain generally differs from signal transfer versus frequency. For J4 open, R19 is ideally dead-ended but its real parasitic path may matter at high frequency; label parasitics separately.
  • R20/R21 and U4C voltage/current noise act inside LP1. R22/R23 and U4D noise act inside LP2, and R24 thermal noise is generated after the two LP sections. Thus not every source is filtered by the full fourth-order response. Include C28, opamp output impedance and ADC loading in their transfers; ideal capacitors are noiseless, while modeled ESR is a dissipative noise source. Model dielectric loss only with sourced or labelled assumed parameters.
  • R14/R15 thermal sources are filtered by C22 then U4A. U4A's own noise is not filtered by C22 identically. VMID noise fans out simultaneously to U3 REF, R10/R11, R16/R18/J4 and U5 references. Keep this as a shared source with multiple coherent paths, not independent copies to RSS. U5A/B noise and R25/R26/R27/R28 thermal noise feed back through the reference electrode/body into sensing electrodes; common-mode conversion depends on mismatch. U5C/D may contribute shared-rail loading/coupling if the model supports it; independent channel models otherwise exclude that effect explicitly.
  • U2/input-source noise, R1 thermal noise, supply-current modulation and local ground/reference noise require actual PSRR/reference-path models. A 3V3A fluctuation simultaneously moves VMID, INA/opamp supplies and ADC VREF; ratiometric cancellation may be partial and frequency-dependent. Do not inject independent noise at every one of these derived nodes or claim perfect cancellation. R2/R3/R29/R30/R31 and other digital-side components may be excluded from an ideal analog-only noise solve only with supply/ground coupling explicitly excluded; in a coupled model their contributions enter via physical paths, not a fabricated direct signal connection.
For uncorrelated primitive sources, sum powers: S_out=Σ|H_j|²S_j. For correlated sources/cross-spectra, S_out=Σ_jΣ_k H_j H_k* S_jk, using a consistent cross-PSD definition; equivalently retain cross terms 2Re[H_j H_k* S_jk]. Most importantly, if a single noise source reaches the ADC through several paths, sum its complex path transfers before taking magnitude squared. Unknown covariance is TBD or a labelled sensitivity study; manufacturing-tolerance correlation is not the same as stochastic noise correlation. Do not blanket-RSS shared VMID/reference/supply contributions.
For opamp/INA white plus 1/f exploratory models one may parameterize S_e(f)=e_white²(1+f_corner/f) over a declared applicable range, similarly for current noise, but e_white/f_corner and correlations require evidence or explicit study assumptions. This form is not asserted to model zero-drift chopping or real low-frequency drift accurately. Check vendor .noise implementation first; disable internal sources only when a validated external equivalent replaces them, and never add external resistor/opamp noise already generated by the simulator/macromodel. Noise-free ideal active models must be clearly identified as incomplete. Offset Monte Carlo is separate from spectral noise analysis.
Mains, RLD and sampled ADC noise
Derive H_CM(f)=V_ADC/V_body_CM under a specified common-mode source impedance and compare to H_sig; effective system CMRR=20log10(|H_sig/H_CM|) only with compatible voltage definitions. Measure both 50/60Hz and frequency-dependent rejection with electrode/cable/resistor/cap mismatch. Report discrete line RMS amplitudes separately from integrated random noise, and label whether SNR excludes them or includes them as interference. RLD can suppress CM but can also inject its own noise, peak near loop crossover, saturate or become unstable; small-signal noise results are invalid around an unstable or clipped operating point. Never count the prior 30.6dB setup-specific RLD suppression as universal CMRR.
At U1, ideal quantizer step q=Vref/2^N, with the intended N=12 and Vref=actual 3V3A relative to VSSAVREF−. The familiar total RMS error q/√12 applies only when quantization error is approximately uniform over a step and sufficiently decorrelated from the signal, without overload. It is not a guaranteed ADC noise spec; a quiet DC input can give constant/stuck codes or periodic signal-correlated quantization error, and clipping creates distortion rather than white noise. Include actual ADC thermal noise, reference noise, INL/DNL, sample settling and timing only from evidence or labelled study parameters, avoiding double count when a measured total ADC noise model already includes them.
If quantization noise is demonstrably white over 0…fs/2, its one-sided PSD is q²/(6fs) and the assumed 20–500Hz RMS contribution before additional digital-filter shaping is (q/√12)√[(500−20)/(fs/2)]. Otherwise quantize the time-domain sampled waveform and measure its error spectrum. This formula is not a claim of actual oversampling gain. Oversampling/decimation improves in-band white uncorrelated noise only with sufficient signal/noise dithering, an appropriate digital filter, no clipping and an actual noise spectrum meeting those assumptions; it does not remove in-band mains, drift, distortion, correlated errors or pre-existing analog aliases. Document any added dither and its cost.
Analog sampled-noise aliasing must include frequencies above Nyquist. Using two-sided PSDs for the alias sum avoids a factor-of-two error: S_sampled,2(f)=Σ_m S_analog,2(f+m·fs)|A(f+m·fs)|² for a declared aperture transfer A; then convert back to one-sided baseband PSD and apply the actual digital filter. Integrate all non-negligible aliases into 20–500Hz, not merely the 20–500Hz continuous analog PSD. Opamp/ADC-driver noise generated after the LP stages can be a priority alias source. For switched/periodic circuits use transient-noise or periodic-noise methodology appropriate to the simulator; a time-invariant .noise run does not automatically include switched-capacitor noise folding. Bound numerical truncation of alias sums and show convergence with increasing modeled bandwidth.
SNR, SINAD, gain/headroom and executable-style procedure
SNR=20log10(Vsignal_rms/Vnoise_rms), with both quantities at the same node and bandwidth. Report separately: analog 20–500Hz SNR, sampled/filtered in-band SNR including aliases/ADC effects, and signal-to-noise-plus-interference if mains/artifacts are included. SINAD includes noise and distortion, using a stated tone/analysis convention; the common ENOB=(SINAD−1.76dB)/6.02 relation assumes the conventional full-scale sine ideal-ADC comparison, and is not a direct “usable EMG bits” metric for an arbitrary low-level broadband waveform. Narrowband SNR, nominal bit depth and ENOB are not interchangeable.
For a sine input, predict output RMS from the measured H_sig at that frequency for each J4 state (current nominal overall resistor gains 102.291970803/504.112282599, loaded gain frequency-dependent). Higher gain can reduce input-referred ADC/downstream noise but does not improve upstream signal-to-noise equally and reduces available headroom. Require crest factor times signal RMS plus remaining bias/offset/transient excursions to stay within verified stage/ADC swings. Check U3 offset headroom before C23 independently of ADC centering; inspect U4B, both LP outputs and RLD in both gain states. Historical unclipped ranges are not guarantees. No numerical SNR is current without a declared signal spectrum and complete source assumptions.

Python


# Pseudocode: substitute actual simulator APIs; no numerical board result implied.
snapshot = build_exact_78_part_connectivity_from_inventory()
assert snapshot.connected_net_count == 49
inputs = require_or_label_assumed(
    temperature_K, signal_rms_and_PSD, electrode_models_and_noise,
    supply_reference_PSD, device_noise_models, ADC_and_digital_filter)
audit_noise_ownership()  # exactly once: native resistor, vendor model, or external source
for gain_state in ['J4_open', 'J4_closed']:
    circuit = set_physical_shunt(snapshot, gain_state)
    for corner_or_MC_draw in declared_parameter_cases:
        apply_parameters(circuit, corner_or_MC_draw)
        op = solve_DC_and_startup(circuit, electrodes, body_return)
        require_stable_loop_and_unclipped_all_stages(op)
        f = frequency_grid_resolving_HP_LP_RLD_and_noise_corners()
        Hsig = AC_transfer(circuit, differential_source_plane, 'ADC_EMG', f)
        primitives, S_cross = define_noise_sources_and_cross_PSD(f, inputs)
        # Each primitive is injected once, allowing every physical shared path.
        H = [unit_voltage_or_current_transfer(circuit, src, 'ADC_EMG', f)
             for src in primitives]
        Sout = sum(H[j] * conj(H[k]) * S_cross[j,k]
                   for j in primitives for k in primitives)
        require_real_nonnegative_PSD_within_numerical_error(Sout)
        noise_20_500 = sqrt(integrate(Sout, 20, 500))
        noise_full = sqrt(integrate(Sout, declared_low, converged_high))
        signal_out = sqrt(integrate(abs(Hsig)**2 * Ssignal, signal_band))
        report_per_source_powers_and_cross_terms_and_ENBWs()
        sampled_noise = fold_aliases_with_aperture_and_digital_filter(Sout, fs)
        # Add ADC error only under proven ownership/correlation assumptions.
        sampled_wave = transient_sample_and_quantize_with_actual_Vref(
            circuit, signal_plus_noise_and_separate_interference_cases)
        assert_no_clipping_and_check_PSD_normalization(sampled_wave)
        report_SNR_SINAD_and_headroom_for_defined_band_and_signal()
save_all_seeds_models_assumptions_integration_limits_and_convergence_failures()
Practical bench comparison, simulator only
Use a shielded electrode simulator with documented source impedances and independently verified noise floor, not a human and not only a low-impedance input short. Record temperature, actual cable routing/capacitance, isolator/power setup, gain state, rail/VMID levels, fs/acquisition settings and raw samples. Measure first with balanced zero-differential input at realistic common mode after settling, then mismatched electrode impedances; repeat RLD on/off under controlled simulator conditions, both gains, and deliberate 50/60Hz coupling as a separate interference test. A jack short is a useful electronics-floor comparison but removes skin-impedance/current-noise effects and is not a complete source model.
Acquire sufficiently long stationary records to resolve low-frequency and mains structure; save duration, FFT window, coherent gain, PSD normalization, window ENBW, averaging/overlap and detrending. Remove only the declared DC mean/settling interval; do not notch mains or discard clipping silently. Integrate calibrated one-sided PSD over 20–500Hz and a separately stated full measurement bandwidth; compare against directly band-filtered RMS. Verify front-end/ADC/USB integrity and absence of clipping or missing samples. Inject a calibrated low-distortion sine of known RMS within headroom, fit its fundamental, and estimate residual noise and harmonics with clearly stated bins/bandwidth; report SNR and SINAD separately. Generator, probe and ADC measurement floors require independent characterization; subtract noise powers only for demonstrably independent contributions with adequate uncertainty, never subtract RMS amplitudes. No bench performance or safety result is claimed until those measurements exist.
Previously recorded results, not new simulations
Source: historical Design Notes and U4/U5 component notes. The table below is historical and superseded for current-state evidence by the dated adoption addendum and new run links at the top. These entries are not newly reproduced vendor-model results; new ideal AC execution is explicitly documented separately.

Table


Prior resultRecorded valueModel/qualification
Peak gain open / closed J499.6 / 493 V/VIdeal chain, input loading included
Relative −3dB band19.1–511.5HzIdeal chain
Attenuation at 4kHz / 7.5kHz relative to 100Hz72.7 / 96.4dBIdeal continuous transfer, not full alias budget
LP step11.4% overshoot, ~3.1ms settleU4 recorded ideal simulation note
+100mV differential DC offsetINA_OUT ~2.730V, settled ADC ~1.650VIdeal fixed-rail study
15mVpk low gain / 3mVpk high gain on +100mV offsetADC 0.185–3.115V / 0.202–3.098VU4 recorded ideal transient note
Approximate unclipped differential AC amplitude15.8 / 3.2mVpkIdeal headroom assumptions, not guaranteed
RLD 50k47nF electrodes, 200pF cables
RLD 500pF cables214Hz, 53.8° PMSame simplified model
RLD 200k10nF electrodes
60Hz body-CM suppression30.6dB vs RLD open; 2.06mVpk -> 61uVpk1Vpk/2pF coupling, setup-dependent
RLD step~20% reverse excursion, ~316Hz damped, ~2ms settleU5 recorded behavioral note
C30 was previously raised from 4.7nF to the actual 10nF; old 4.7nF cases reported 53° nominal PM / 41° at 500pF and are historical comparisons, not current circuit results. No tolerance Monte Carlo, vendor-model chain/RLD verification, ESD simulation, measured hardware performance or safety qualification is recorded. Prior ~145mV combined input-offset-plus-signal headroom and alias “12-bit margin” wording must not be generalized across real supply/headroom/noise conditions.
Remaining inputs and factual blockers
  • Tolerance/model completeness: 22 R/C tolerance properties missing (list above); remaining generic tolerance/dielectric targets need MPN-backed qualification. R4/R5 absolute resistance, selected capacitor effective-C/ESR/aging data, resistor TCR, INA/opamp noise/offset/GBW/rail corners and their distribution/correlation remain incomplete. This blocks guaranteed statistical yield and production bounds, not a labelled nominal topology simulation.
  • Vendor models: candidate TI model archives identified but not fetched/hashed/inspected; RG midpoint fidelity and parameter/noise coverage unverified. This blocks calling a future run vendor-model validated until checked. Package-property gaps on U4/U5/J1 and crystal CL discrepancy require confirmation before physical release; BOM descriptions are not footprint audits.
  • Exact external USB isolator: make/model, power and data isolation ratings/classification, barrier capacitance/leakage, output voltage/current capacity, inrush/foldback, FS throughput, shield continuity, creepage/clearance and alternate grounds unknown. A provisional 60mA budget is not isolator qualification. Human connection is blocked.
  • Cable: SparkFun CAB-12970 is only the prior candidate (three surface snaps/TRS). Exact purchased model/contact-to-color map and impedance/capacitance/shield model remain unconfirmed. Continuity-map each cable tip=EMG+, ring=EMG−, sleeve=REF; no audio mating or needle-electrode compatibility. Insert/remove only with pads detached from a person. Its product links in prior records are supplemental, not a verified electrical cable model.
  • Performance requirements: confirmed passband target is 20–500Hz; input signal amplitude, differential/common-mode offset envelope, input impedance, noise/SNR, gain accuracy, rejection, overload recovery and alias-error targets are unconfirmed. Gain ~100/500 and 8kS/s remain provisional defaults. Numeric unsupplied ranges in this guide are TBD or explicitly study assumptions, never facts.
  • Before layout: board dimensions/shape, mounting, connector edge positions/access, enclosure/height/keepouts, environmental/temperature and isolation-distance requirements are unresolved. Firmware build, actual ADC timing, clock load/startup, PCB parasitics, procurement, assembly, bench validation and manufacturing release are separate work.
Reproduction checklist and report contract
Build from every endpoint above; verify 78 unique component identities and 49 circuit nets before testbench-only aliases/nodes are added. Check U3 polarity and REF, all eight quad units, LP feedback capacitors, RLD sign, VMID returns, both J4 states and J1 pin4 NC. Perform operating point before AC/transient/noise; preserve floating-body bias paths and avoid artificial testbench grounding. Record any omitted component explicitly with its identity and reason; an analog subset is not a full-board model. Save nominal/corner/Monte Carlo assumptions and model provenance, report saturation and convergence failures, and compare against the prior simplified results only under matching conditions. No new component selection or topology change is authorized by this guide.
Supporting project files: Design Notes, Project Specification, Board Bring-Up Plan. Crosslinks supplement, rather than replace, this document's component and net appendix.
  • Current-state adoption addendum — 2026-10-27, commit 063c2fe6

  • Scope, provenance and interpretation

  • Signal flow and operating references

  • Connectivity and component inventory conventions

  • All 31 resistors

  • All 31 capacitors

  • Remaining 16 components: identity, package and exact connectivity

  • 49-net cross-check list

  • Nominal circuit relationships and sensitivity

  • Model hierarchy and vendor-model provenance

  • Power and digital simplification boundaries

  • Monte Carlo and corners: instructions for another LLM

  • Parameter provenance and ranges

  • Correlation and sensitivity protocol

  • Required analyses and test cases

  • Noise and SNR estimation: self-contained simulation recipe

  • Definitions, bandwidths and missing inputs

  • Source-by-source transfer through this actual circuit

  • Mains, RLD and sampled ADC noise

  • SNR, SINAD, gain/headroom and executable-style procedure

  • Practical bench comparison, simulator only

  • Previously recorded results, not new simulations

  • Remaining inputs and factual blockers

  • Reproduction checklist and report contract