1. Тема дня
Сегодня разбираем устойчивость платы к электромагнитным помехам и электрическим переходным процессам:
длинный кабель / внешний разъём
→ ограничение энергии
→ защита от перенапряжения
→ фильтрация
→ гальваническая развязка или трансивер
→ формирование чистого цифрового уровня
→ GPIO/ADC ESP32 или STM32
→ программная диагностикаГлавная мысль: Защита строится от разъёма к микроконтроллеру. Энергия помехи должна быть отведена или ограничена до того, как она попадёт на GPIO, землю логики или питание MCU.
2. Зачем это нужно в твоих проектах
Для входов фаз светофора полевой провод может идти рядом с силовыми кабелями, реле, контакторами, 220 В линиями, двигателями и частотниками. Помеха может выглядеть как ложный фронт, конфликт фаз, переполнение очереди или watchdog reset. Для RS-485/CAN возможны:
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. Защитная цепочка
разъём
→ первичная защита
→ ограничение тока/энергии
→ фильтр
→ развязка или защищённый приёмник
→ вторичная защита/формирователь
→ MCUПример дискретного входа 24 В:
FIELD_IN
├─ TVS к field return
├─ последовательные резисторы
├─ RC-фильтр
└─ оптопара / компаратор
└─ Schmitt output → MCU GPIO11.3.3 3.3. Расположение TVS
TVS должен стоять близко к разъёму. Важен короткий низкоиндуктивный путь возврата тока. Если TVS стоит рядом с MCU, импульс уже прошёл через плату.
11.3.4 3.4. Куда уходит ток TVS
Нужно различать:
PE / chassis
field ground
isolated bus ground
digital ground
analog groundЕсли ток импульса проходит через digital GND, вся логика может получить скачок потенциала.
11.3.5 3.5. Выбор TVS
Проверяй:
VRWM — рабочее напряжение
VBR — напряжение пробоя
VCL — clamping voltage при заданном токе
IPP / pulse power — энергия импульса
capacitance — влияние на интерфейс11.3.6 3.6. Последовательный резистор
Он ограничивает ток, образует RC-фильтр и уменьшает звон. Но нужно проверять рабочее напряжение, импульсную перегрузку, мощность и creepage.
11.3.7 3.7. RC-фильтр
τ = R × C
fc = 1 / (2πRC)Пример:
R = 10 кОм
C = 10 нФ
τ = 100 мкс
fc ≈ 1.59 кГцФильтр выбирается по минимальной полезной длительности импульса и длительности помехи. Если интервалы пересекаются, одной RC-цепи мало.
11.3.8 3.8. Schmitt trigger
Schmitt trigger имеет два порога и убирает многократное переключение на медленном/шумном фронте.
оптопара
→ pull-up
→ RC
→ Schmitt buffer
→ GPIO11.3.9 3.9. Внутренние clamp-диоды MCU
Их нельзя считать основной системной ESD-защитой внешнего кабеля. Нужно проверять absolute maximum voltage, injected current и суммарный ток по портам.
11.3.10 3.10. Промышленный вход 24 В
Концептуально:
24V_FIELD
→ fuse / fusible resistor
→ reverse polarity protection
→ TVS
→ resistor chain
→ RC
→ optocoupler LED
→ isolated transistor
→ pull-up 3.3 V
→ Schmitt/GPIOРасчёт сопротивления LED оптопары:
R ≈ (VIN − VF_LED − Vbridge) / ILED11.3.11 3.11. Вход 220/230 В AC
Для 230 В RMS:
VPEAK ≈ 230 × √2 ≈ 325 ВНужно учитывать рабочее напряжение резисторов, surge rating, creepage/clearance, класс изоляции оптопары, предохранение и безопасность. Это не схема для макетной платы.
11.3.12 3.12. RS-485 и CAN
Концептуальная цепочка:
connector
→ TVS array
→ optional pulse-proof resistors / PTC
→ optional common-mode choke
→ termination/bias
→ fault-protected transceiver
→ optional isolation
→ MCU11.3.13 3.13. Что может сделать прошивка
Прошивка должна считать остаточные помехи:
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:
input_state = INPUT_DEGRADED_NOISY;
exti_temporarily_mask();
schedule_polled_recovery();
fault_report(FAULT_INPUT_GLITCH_STORM);4. Типичные ошибки
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:
# 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.Сделай таблицу угроз:
| 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:
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-тест:
стабильный уровень;
импульсы 1 мс;
глитчи 1-100 мкс;
пачка быстрых импульсов;
дребезг около фронта;
пропуск ожидаемого импульса.6. Что почитать дальше
- ST AN1709 по EMC.
- ST AN4899 по GPIO.
- ESP32 Hardware Design Guidelines.
- TI reference designs по RS-485 ESD/EFT/surge.
Короткий итог
external cable
→ connector protection
→ controlled transient return
→ current limiting
→ filtering
→ isolation/protected transceiver
→ Schmitt/digital receiver
→ MCU input
→ timestamp/filter/diagnosticsГлавные правила:
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
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.