В этом тексте я написал как диагностировать и тестировать такую электрическую схему как H-мост. Запрограммировать H-мост это просто. Куда сложнее в Run-Time(е) определять Fault(ы) в этом пресловутом H-мосте, чтобы вовремя отключить ключи и перевести всю цепь в безопасное состояние тем самым спасти дорогое оборудование от сгорания в стиле бенгальского огня.

Немного теории

В электронике существует классическая электрическая цепочка, которая называется H-мост (H-bridge).

рис 1
рис 1

Эта схема позволяет пропускать ток через нагрузку в прямом и обратном направлении. Если в эту цепь подключить DC-мотор, то он будет крутиться либо по часовой стрелке (СW) либо против часовой стрелки (CCW). Также можно модулировать величину тока, если переключать ключи PWM сигналом. Также из схемы H-моста можно сделать инвертор. То есть переходник с постоянного тока в переменный ток.

H-мосты активно применяют в маломощных устройствах, которые крутят, например, шаговые двигатели в CNC станках или, например, в контроллерах управления автомобильными стекло-опускателями, выдвижными ramp(ами) в автобусах. Это всё так называемые прошивки-спинеры. Также H-мостом можно управлять фарами автомобиля и прочее.

Однако есть проблема. Вернее есть 31 проблема. То есть в H-мостах может быть 31 тип сбоев, которые приведут к тому, что H-мост просто больше не будет работать. А 14 lethal кейсов приведут к тому, что из H-моста просто посыплются искры. Вот список этих аварий.

рис 2
рис 2

Как же определить аварии в H-мосте во время исполнения? Надо разработать механизм, который можно назвать Load Detect.

Понятное дело что за H-мостом надо как-то наблюдать. В электронике есть только 2 способа наблюдать за чем-либо: GPIO, работающие на вход и ADC.

Вот возможная схемотехника, которая позволит диагностировать состояние H-моста. Тут на каждое плечо H-моста подключен аналого-цифровой преобр. (ADC) и тут же ключ, который управляет подтяжкой напряжения к питанию на каждом плече H-моста.



pbc 3. Схема наблюдения за H-мостом
pbc 3. Схема наблюдения за H-мостом

У каждого микроконтроллера, есть аналоговые пины, которые подключены к внутреннему ADC преобразователю. Подтяжками же напряжения к питанию можно управлять по GPIO или при помощи ключа и высоко-омного резистора или при помощи специальных ASIC микросхем-источников смачивающего тока. (Если нужно название чипа, то пишите в личку).

рис 4
рис 4

Очевидно, что нужен какой-то алгоритм или высокоуровневый программный конечный автомат (FSM), который будет сообщать, когда в H-мосте возникли аварии. В идеале хотелось бы, чтобы этим занимался отдельный ASIC. Однако можно составить и чисто программное решение на С(ях).

Разработка конечного автомата это просто механические действия. Как известно, любые конечные автоматы проектируются за 7 шагов:

Фаза

Этап разработки конечного автомата

1--

определить выходы

2--

определить состояния

3--

определить действия

4--

определить входы

5--

составить таблицу переходов

6--

нарисовать граф переходов

7--

воплотить конечный автомат в коде

1-- Вот выходы конечного автомата диагностики H-моста. Это как раз те высокоуровневые события, которые хочет услышать обыкновенный пользователь (схемотехник, программист, техник, интегратор, водитель).

FSM Output

Type

Wire

shoulder

1

left shoulder short GND

short

GND

left

2

left shoulder short Vbat

short

Vbat

left

3

right shoulder short GND

short

GND

right

4

right shoulder short Vbat

short

Vbat

right

5

open load

open

load

--

2-- Состояния конечного автомата может определяться состоянием подтяжек к питанию. Важно устанавливать подтяжки именно в коде Грея. Это уменьшит время переходного процесса установки подтяжек и уменьшит энергопотребление устройства, да и отлаживаться на осциллографе так проще.

Left shoulder

Right shoulder

1

Pull none

Pull none

2

Pull none

Pull up

3

Pull up

Pull up

4

Pull up

Pull none

3-- Что будет делать этот конечный автомат на низком (аппаратном) уровне? Или какие он будет делать системные действия?

Действие

плечо

H-моста

Type

1

Установить подтяжку к питанию на левом плече

левое

on

2

Установить подтяжку к питанию на правом плече

правое

on

3

Отключить подтяжку к питанию на левом плече

левое

off

4

Отключить подтяжку к питанию на правом плече

правое

off

5

Измерить показание напряжения на левом плече

левое

get

6

Измерить показание напряжения на правом плече

правое

get

7

Рассчитать аналитику

--

calc

4--Входом конечного автомата будет являться прерывание по таймеру. Конечный автомат будет переключаться в очередное состояние и просто ждать, пока пройдет переходной процесс в установке подтяжке напряжения. Это порядка 100ms. Для определенности можно считать что это время равно 500ms. Это основной параметр данного конечного автомата. Этот параметр зависит от величины смачивающего тока. Чем больше ток подтяжки тем быстрее переходной процесс. Надо калибровать каждый конкретный H-мост. Значение таймаута перехода в другое состояние стоит хранить в NVRAM.

Входное воздействие

1

Сработало прерывание по переполнению аппаратного таймера

2

На H-мост подали PWM сигнал со скважностью более 0%

Аналитику надо запускать именно пройдя полный цикл в конечном автомате. Только так будет накоплена полная необходимая статистика для принятия решения о здоровье H-моста.

5--Таблица переходов состояний конечного автомата диагностика H-моста

начальное

состояние

Inputs

TimeOut

0%<PWM duty

LN_RN

LN_RU

LN_RN

LN_RU

LU_RU

LN_RN

LU_RU

LU_RN

LN_RN

LU_RN

LN_RN

LN_RN

6--Граф переходов получился такой (рис 5). За один оборот конечный автомат накапливает все нужные исходные данные для принятия решения о состоянии H-моста

рис 5
рис 5

На рисунке 6 представлена LookUp таблица для принятия решения. На основе измерений напряжений на плечах H-моста можно судить о таких высокоуровневых событиях как "отвалившийся мотор" или "короткое замыкание" в цепи. Таблицу можно хранить в ROM (on-chip Nor Flash) памяти микроконтроллера-спинера H-моста.

рис. 6 LookUp таблица принятия решения
рис. 6 LookUp таблица принятия решения
ссылка на таблицу

Как видите для разработки алгоритмов программирования микроконтроллеров надо уметь активно пользоваться полноценными электронными таблицами (коллективное редактирование, сортировка по категориям, тягание столбцов, раскраска ячеек, фиксация шапки и прочее).

Вывод

За работой H-моста надо внимательно наблюдать. Благодаря программному компоненту Load Detect, например, если злоумышленник выкрутит лампочку в фаре автомобиля, то водителю на смартфон придет push-уведомление. Это же так здорово!

Надеюсь этот текст поможет другим инженерам тоже делать надежные драйверы умных H-мостов с диагностикой в run time.

Если есть опыт работы с H-мостами, то напишите об этом в комментариях.

Акроним

Расшифровка

ADC

Analog-to-Digital Converter

PWM

Pulse-Width Modulation

ASIC

Application-Specific Integrated Circuit

FSM

Finite-State Machine

NVRAM

Non-volatile random-access memory

CW

ClockWise

LU_RN

Left shoulder pull up, Right shoulder pull none

LU

Left shoulder pull Up

RN

Right shoulder pull none

CCW

CounterClockWise


Links

https://habr.com/ru/post/697388/
https://habr.com/ru/company/vk/blog/373397/

Комментарии (12)


  1. sim2q
    08.01.2023 09:42
    +4

    смачивающего тока

    интересная аналогия, немного похоже из мира контактов если они не из благородных металлов


    1. Avsmirn0ov
      08.01.2023 13:47
      +1

      Скорее всего, это оно и есть, более чем уверен, что Н-мосты были и до широкого распространения транзисторов, как раз на реле; при этом там была та же самая подтяжка гейта (в данном случае койла) к питанию или земле, и от её номинала зависило качество переходного процесса: слишком большая - он будет долгий, слишком мелкая - контактер слишком быстро ударится о нормально закрытый контакт и отскочит, тем самым вызовет множественное срабатывание/дребезг


  1. emusic
    08.01.2023 13:58
    +2

    Выражение "вдоль или поперек" нагрузки откровенно неудачное - у двухполюсной нагрузки не может быть никакого "поперек". :) Лучше заменить на "в прямом и обратном направлении", или хоть "туда и обратно". :)


  1. Mike-M
    08.01.2023 16:03
    +5

    Похоже на перевод. И, судя по перлам типа «микросхем- источников смачивающего тока», перевод не совсем удачный. И без ссылки на оригинал статьи.

    пока пройдет переходной процесс в установке подтяжке напряжения. Это порядка 100ms. Для определенности можно считать что это время равно 500ms.
    Пол-секунды на переходной процесс? Может всё-таки не ms, а us?

    За работой H-моста надо внимательно наблюдать. Благодаря программному компоненту Load Detect, например, если злоумышленник выкрутит лампочку в фаре автомобиле,
    В современных автомобилях лампочки подключаются по мостовой схеме? Не знал, не знал )


    1. aabzel Автор
      08.01.2023 16:19
      +3

      Есть такие чипы, которые являются источниками слабого тока.
      Специально для нагнетания подтяжки напряжения либо к земле либо к VCC.
      Вот кусок datasheet(а)


      1. Mike-M
        08.01.2023 16:51
        +1

        Спасибо. Предлагаю удалить лишний пробел из фразы «микросхем- источников смачивающего тока» и дополнить её ссылкой на указанный datasheet, чтобы вопросов ни у кого не возникало.


  1. tigreavecdesailes
    08.01.2023 17:00
    +2

    В начале статьи пугают 14-ю фатальными состояниями H-моста, но они все связаны с тем, что какое-либо плечо закорачивает питание на землю. Данное же решение за этим не наблюдает, и в таблице действий нет действий по таким ситуациям.


    1. aabzel Автор
      08.01.2023 18:58
      +2

      Это как раз случай, когда из платы сыплются искры.
      Тут только датчик тока на VBAT ставить или Fuse(ы).


    1. aabzel Автор
      09.01.2023 02:50

      Данный алгоритм спасет оборудование, если уже есть предпосылки нечаянно сжечь мост программно.
      Когда уже присутствует одно замыкание либо на VCC либо на GND на одном из плечей H-моста, то это можно выявить за полсекунды.

      В любом случае это лучше чем "голый" H-мост.




  1. Hik
    08.01.2023 20:21
    +9

    Если не известен перевод термина, не стоит его переводить. Wetting current - ток восстановления контакта.


  1. tnt23
    09.01.2023 15:31

    Однако можно накропать и чисто программное решение

    Судя по качеству статьи, автор ее именно что "накропал"


    1. tnt23
      09.01.2023 15:49
      -1

      Как видите для разработки алгоритмов программирования микроконтроллеров надо уметь активно пользоваться полноценными электронными таблицами (коллективное редактирование, сортировка по категориям, тягание столбцов, раскраска ячеек, фиксация шапки и прочее).

      Для продолжения рода нужно совсем другое (с) Янковский-Мюнхгаузен