1. Тема дня

Сегодня разбираем устойчивость платы к электромагнитным помехам и электрическим переходным процессам:

text
длинный кабель / внешний разъём
→ ограничение энергии
→ защита от перенапряжения
→ фильтрация
→ гальваническая развязка или трансивер
→ формирование чистого цифрового уровня
→ GPIO/ADC ESP32 или STM32
→ программная диагностика

Главная мысль: Защита строится от разъёма к микроконтроллеру. Энергия помехи должна быть отведена или ограничена до того, как она попадёт на GPIO, землю логики или питание MCU.

2. Зачем это нужно в твоих проектах

Для входов фаз светофора полевой провод может идти рядом с силовыми кабелями, реле, контакторами, 220 В линиями, двигателями и частотниками. Помеха может выглядеть как ложный фронт, конфликт фаз, переполнение очереди или watchdog reset. Для RS-485/CAN возможны:

text
ESD от человека или разъёма
EFT от коммутации индуктивной нагрузки
surge на наружном кабеле
длительное подключение к 24 В
разность потенциалов земель

Прошивка может считать и фильтровать глитчи, но она не уменьшает ток через GPIO.

3. Теория

11.3.1 3.1. Типы воздействий

ВоздействиеХарактерЗадача защиты
ESDочень быстрый разрядотвести фронт у разъёма
EFTсерия быстрых импульсовфильтрация, возврат, развязка
Surgeдлительная высокая энергиямощный TVS, токовое ограничение
DC faultдлительное ошибочное напряжениепредохранитель, PTC, fault-protected input
Common-modeобе линии двигаются относительно землиизоляция, CMC, common-mode range
Differential noiseнапряжение между линиямиRC/LC, терминатор, диф. приёмник

11.3.2 3.2. Защитная цепочка

text
разъём
→ первичная защита
→ ограничение тока/энергии
→ фильтр
→ развязка или защищённый приёмник
→ вторичная защита/формирователь
→ MCU

Пример дискретного входа 24 В:

text
FIELD_IN
  ├─ TVS к field return
  ├─ последовательные резисторы
  ├─ RC-фильтр
  └─ оптопара / компаратор
         └─ Schmitt output → MCU GPIO

11.3.3 3.3. Расположение TVS

TVS должен стоять близко к разъёму. Важен короткий низкоиндуктивный путь возврата тока. Если TVS стоит рядом с MCU, импульс уже прошёл через плату.

11.3.4 3.4. Куда уходит ток TVS

Нужно различать:

text
PE / chassis
field ground
isolated bus ground
digital ground
analog ground

Если ток импульса проходит через digital GND, вся логика может получить скачок потенциала.

11.3.5 3.5. Выбор TVS

Проверяй:

text
VRWM — рабочее напряжение
VBR — напряжение пробоя
VCL — clamping voltage при заданном токе
IPP / pulse power — энергия импульса
capacitance — влияние на интерфейс

11.3.6 3.6. Последовательный резистор

Он ограничивает ток, образует RC-фильтр и уменьшает звон. Но нужно проверять рабочее напряжение, импульсную перегрузку, мощность и creepage.

11.3.7 3.7. RC-фильтр

text
τ = R × C
fc = 1 / (2πRC)

Пример:

text
R = 10 кОм
C = 10 нФ
τ = 100 мкс
fc ≈ 1.59 кГц

Фильтр выбирается по минимальной полезной длительности импульса и длительности помехи. Если интервалы пересекаются, одной RC-цепи мало.

11.3.8 3.8. Schmitt trigger

Schmitt trigger имеет два порога и убирает многократное переключение на медленном/шумном фронте.

text
оптопара
→ pull-up
→ RC
→ Schmitt buffer
→ GPIO

11.3.9 3.9. Внутренние clamp-диоды MCU

Их нельзя считать основной системной ESD-защитой внешнего кабеля. Нужно проверять absolute maximum voltage, injected current и суммарный ток по портам.

11.3.10 3.10. Промышленный вход 24 В

Концептуально:

text
24V_FIELD
→ fuse / fusible resistor
→ reverse polarity protection
→ TVS
→ resistor chain
→ RC
→ optocoupler LED
→ isolated transistor
→ pull-up 3.3 V
→ Schmitt/GPIO

Расчёт сопротивления LED оптопары:

text
R ≈ (VIN − VF_LED − Vbridge) / ILED

11.3.11 3.11. Вход 220/230 В AC

Для 230 В RMS:

text
VPEAK ≈ 230 × √2 ≈ 325 В

Нужно учитывать рабочее напряжение резисторов, surge rating, creepage/clearance, класс изоляции оптопары, предохранение и безопасность. Это не схема для макетной платы.

11.3.12 3.12. RS-485 и CAN

Концептуальная цепочка:

text
connector
→ TVS array
→ optional pulse-proof resistors / PTC
→ optional common-mode choke
→ termination/bias
→ fault-protected transceiver
→ optional isolation
→ MCU

11.3.13 3.13. Что может сделать прошивка

Прошивка должна считать остаточные помехи:

c
typedef struct {
    uint32_t raw_edge_count;
    uint32_t accepted_edge_count;
    uint32_t rejected_glitch_count;
    uint32_t conflict_count;
    uint32_t impossible_transition_count;
    uint32_t timeout_count;
    uint32_t min_pulse_us;
    uint32_t max_pulse_us;
    uint32_t min_interval_us;
    uint32_t max_interval_us;
    int64_t last_raw_edge_us;
    int64_t last_valid_change_us;
} emc_input_diag_t;

При glitch storm:

c
input_state = INPUT_DEGRADED_NOISY;
exti_temporarily_mask();
schedule_polled_recovery();
fault_report(FAULT_INPUT_GLITCH_STORM);

4. Типичные ошибки

text
1. Поставить TVS рядом с MCU.
2. Выбрать TVS только по VRWM.
3. Подключить все TVS к чувствительной digital GND.
4. Считать ESD, EFT и surge одним и тем же.
5. Защищать длительное 24 В подключение только TVS.
6. Использовать internal GPIO clamps как основную защиту.
7. Слишком большой конденсатор на входе.
8. Фильтровать в программе повреждающее напряжение.
9. Поставить high GPIO speed везде.
10. Не предусмотреть idle state при отключённом кабеле.
11. Игнорировать разность земель RS-485/CAN.
12. Тестировать помехи только программным генератором.

5. Практическое задание на 30-60 минут

Создай EMC_ESD_POLICY.md:

markdown
# EMC / ESD policy
1. Every external connector has a documented threat model.
2. Protection components are placed close to the connector.
3. Transient current return paths do not cross sensitive logic.
4. GPIO internal clamps are not system-level protection.
5. Every input has a defined idle state.
6. Hardware filtering is calculated from useful pulse timing.
7. Software debounce does not replace overvoltage protection.
8. Field and logic grounds are explicitly documented.
9. Every communication interface has an overrun/recovery policy.
10. EMC tests include both hardware survival and functional behavior.

Сделай таблицу угроз:

markdown
| Interface | Normal signal | Possible fault | Hardware reaction | Firmware reaction |
|---|---|---|---|---|
| RED input | 220 V AC via opto | EFT/glitch | RC + opto + Schmitt | reject short pulse |
| 24 V input | 0/24 V | reverse/36 V | series R + TVS | mark channel fault |
| RS-485 | differential | ESD/surge/DC fault | TVS/fault transceiver | framing/error counters |
| CAN | differential | common-mode pulse | TVS/CMC/isolation | bus-off recovery |
| EC25 UART | logic | ringing | series R, short traces | UART error counters |

Добавь CLI emc diag:

text
emc diag:
RED:
raw=12540
valid=11980
rejected=560
glitch_storms=1
min_pulse=42us
max_pulse=10220us
RS485:
frame_errors=2
crc_errors=4
collisions=0
recovery=1

Низковольтный HIL-тест:

text
стабильный уровень;
импульсы 1 мс;
глитчи 1-100 мкс;
пачка быстрых импульсов;
дребезг около фронта;
пропуск ожидаемого импульса.

6. Что почитать дальше

  • ST AN1709 по EMC.
  • ST AN4899 по GPIO.
  • ESP32 Hardware Design Guidelines.
  • TI reference designs по RS-485 ESD/EFT/surge.

Короткий итог

text
external cable
→ connector protection
→ controlled transient return
→ current limiting
→ filtering
→ isolation/protected transceiver
→ Schmitt/digital receiver
→ MCU input
→ timestamp/filter/diagnostics

Главные правила:

text
1. Сначала определяется тип помехи, затем выбирается защита.
2. TVS должен находиться около разъёма.
3. Путь transient current важен не меньше номинала TVS.
4. ESD, EFT, surge и DC fault требуют разных мер.
5. Internal GPIO clamps не являются основной внешней защитой.
6. RC выбирается по временам полезного сигнала и помехи.
7. Schmitt trigger устраняет многократное переключение на медленном фронте.
8. Прямой сетевой вход требует расчёта изоляции и безопасности.
9. RS-485/CAN защита включает common-mode и ground strategy.
10. Низкая GPIO speed и последовательные резисторы снижают эмиссию.
11. Прошивка должна считать глитчи и ошибки, а не только скрывать их.
12. Настоящая EMC-устойчивость подтверждается испытанием схемы, а не одним debounce.

12 Краткий индекс уроков 31-40

text
31. Архитектура времени: monotonic, UTC, NTP, PPS, drift.
32. UART/RS-485 и Modbus RTU: DE, t1.5/t3.5, CRC, DMA.
33. Low-level crash debug: STM32 HardFault и ESP32 Guru Meditation.
34. MPU и memory protection: XN RAM, read-only config, stack guards.
35. TrustZone/Secure Boot: изоляция ключей и проверка firmware.
36. TLS/PKI: CA, hostname, mTLS, сертификаты, EC25 vs ESP32 TLS.
37. Защищённые команды: HMAC, подпись, anti-replay, идемпотентность.
38. Детерминированная память: static allocation, object pools, heap budget.
39. Brownout и питание: EC25 пиковый ток, power-good, safe shutdown.
40. EMC/ESD: TVS, RC, Schmitt, промышленные входы, CAN/RS-485 защита.

Задание

Сравните low-voltage glitch HIL test и EMC protection test. Что доказывает каждый и почему большего software debounce недостаточно?

Критерии самопроверки: Сохранить low-voltage-only boundary; не вводить mains/breadboard experiments и не заявлять hardware immunity по успеху software.

Показать ответ автора

Controlled low-voltage test проверяет timestamps, filtering, counters, conflict handling и recovery. Он не доказывает выдерживание ESD/EFT/surge energy или DC faults. Protection должна ограничивать/отводить energy у connector и проходить hardware validation.

Задание

Проследите connector-side TVS transient return path. Что происходит при прохождении current через sensitive digital ground?

Критерии самопроверки: Рассмотреть placement и current-loop inductance, а не только TVS voltage; отделить common-mode disturbance от differential filtering.

Показать ответ автора

Определить field/chassis/isolated/digital/analog ground strategy и кратчайший подходящий return path. Большой transient current через digital ground может менять logic reference, вызывая false events или resets даже при локальном TVS clamp.