Skip to content

Antenna Interference & Servo EMI

Problem: Battery level stops transmitting after case is closed. GPS still works. Servo is active.
Root cause: Servo motor generates broadband noise (commutator arcing) that couples into I2C bus and antenna circuits.


Brushed DC motors generate microarcs (nanosecond pulses) at each brush contact. Each spark = impulse with spectral content up to 1 GHz and beyond.

FrequencyNoise LevelAffected Systems
1 MHz – 100 MHz-20 dBm typicalPWM harmonics, I2C, analog circuits
100 MHz – 1 GHz-40 to -60 dBmGPS L1 (1575 MHz), LTE RX, LNA input

Servo startup: 300–700 mA for 1–3 seconds. Inadequate filtering → voltage droop → noise injection into analog rail.

Motor coil inductance generates 50–100 V spikes when servo stops. Without protection:

  • Can exceed MOSFET rating
  • Couples RF noise onto power rails (antenna effect)
  • Causes I2C communication errors

  • Expected signal: -130 dBm
  • GPS front-end noise figure: 1–2 dB
  • If servo EMI > -80 dBm near antenna → GPS can’t lock

Observed: GPS continues (separate cable, better isolation). Battery level sensor (I2C, on-board) fails.

  • I2C operates at low voltages (3.3V logic swing)
  • Servo noise couples onto I2C SCL/SDA lines
  • Device responds with NAK (not acknowledge)
  • Fuel gauge reading = 0 or invalid → not sent to Notehub
  • Usually more robust than GPS (designed for noisy environments)
  • Higher SNR threshold than GPS
  • Still affected if servo near Notecard RF section

1. RC Snubber on Motor Terminals (Critical)

Section titled “1. RC Snubber on Motor Terminals (Critical)”
Motor+ ──┬─ [10Ω 1W] ── [10nF/100V] ──┬─ Motor-
│ (soldered directly on motor terminals)
│ SMD 1210 size (fast response)

Effect: Back-EMF spike reduced from -100V to -15V (safe). Broadband noise peak reduced by 20 dB.

Part: Vishay CRCW121010R0FKEA (10Ω) + Murata GRM32DR72A103KW01L (10nF)

2. Ferrite Bead on Servo Power Line (Critical)

Section titled “2. Ferrite Bead on Servo Power Line (Critical)”
MOSFET Drain ── [Ferrite: Murata BLM18KG471SN1D] ── Servo V+

Effect: High-frequency noise (>1 MHz) absorbed, low-frequency PWM unaffected. Suppresses antenna-mode RF emission from servo power wire.

3. Separate Power Rail for Servo (Important)

Section titled “3. Separate Power Rail for Servo (Important)”
Battery → [MOSFET] → [LC filter: 10µH + 100µF] → Servo
[GPIO control]

Isolate servo spikes from MCU/GPS power. RC time constant ensures slow ramp, no sharp edges.

  • Notecard has built-in 2.2k pull-ups
  • If XIAO also has pull-ups: don’t add external 4.7k (parallel = 1.4k, too strong, bus latency)
  • If XIAO has none: add external 4.7k (good)

Check: Measure SDA/SCL voltage with multimeter when I2C idle. Should be 3.2–3.3V, not oscillating.

Section titled “5. RF Shield Can Over GPS Front-End (Recommended)”

Harwin S01 or Würth WE-SHC shield can over GPS LNA section gives 30–40 dB isolation from broadband servo noise.

if (accelerometer_motion_detected() && servo_not_running) {
enable_gps();
} else {
disable_gps();
}

Keep GPS off during servo operation → no interference.


┌─────────────────────────────────────────┐
│ ZONE A: RF (GPS, LTE front-end) │
│ [Keep servo area >100mm away] │
├─────────────────────────────────────────┤
│ ZONE B: Digital (MCU, I2C) │
│ [Via fence between A and C] │
├─────────────────────────────────────────┤
│ ZONE C: Servo + Power │
│ [LC filter, ferrite beads here] │
└─────────────────────────────────────────┘
  • Wide (≥2 mm) to reduce inductance
  • Short, kept in ZONE C only
  • 100Ω series resistor + ferrite on PWM signal line
  • GND plane stitching (via spacing ≤10 mm)
  • Keep away from servo power lines
  • 100nF bypass capacitor at each I2C device
  • If >50 mm long: ferrite bead on SCL or common-mode choke on pair

1. Servo OFF, measure GPS C/N0 for satellites → baseline
2. Servo ON (positioning), re-measure C/N0
3. Acceptable: <3 dB degradation
4. Unacceptable: >5 dB drop (needs filtering)
1. Loop: read fuel gauge every 100 ms while servo OFF
2. Repeat while servo running
3. Count communication failures (CRC errors)
4. Acceptable: 0 failures
5. Unacceptable: >1% error rate (needs RC snubber)
1. Read Notecard RSRP (via card.wireless) with servo OFF
2. Activate servo, re-read RSRP
3. Acceptable: <5 dB difference

If using multiple RF systems (LTE, GPS, Skylo satellite):

PairFreq GapIsolation NeededMethod
GPS L1 ↔ LTE225 MHz30 dBDistance (100 mm) + shield can
GPS L1 ↔ Iridium41 MHz40 dBNotch filter + firmware muting
LTE ↔ Skylo450+ MHz20 dBFerrite bead + distance

Critical: GPS L1 ↔ Iridium overlap is dangerous. If satellite TX active, disable GPS RX (firmware lock).


EMI SourceSymptomsQuick FixProper Fix
Back-EMF spikeI2C timeouts, resetRC snubberRC snubber + soft-start PWM
Servo power noiseGPS C/N0 dropsFerrite beadSeparate servo rail + LC filter
PWM harmonicsI2C glitchesFerrite on PWMCommon-mode choke on I2C pair
Broadband arcingBattery level failsShield canProper grounding + via stitching
Antenna couplingGPS lock loss100 mm spacingSeparate antennas + isolation

Must do:

  1. Add RC snubber (10Ω + 10nF) directly on servo terminals
  2. Ferrite bead on servo power line (after MOSFET)
  3. Verify I2C pull-ups are correct (don’t double-up)

Should do: 4. RF shield can over GPS/LTE front-end 5. Separate servo power rail with LC filter 6. Via stitching between RF and power zones

Nice to have: 7. Common-mode choke on I2C if traces >50 mm 8. Firmware muting of GPS during servo operation 9. Accelerometer-gated GPS (only on while moving)