В автомобильной электронике есть отдельный класс устройств, которые называются кузовная электроника. Задача таких плат это управление нагрузками. В качестве нагрузки выступают фары, насосы, бензонасосы, нагреватели, клапаны и прочие маломощные исполнительные механизмы.

В данном тексте я покажу как электронные блоки кузовной электроники могут самостоятельно определить подключенную нагрузку и даже регистрировать короткие замыкания.

Определения

  • Hi‑side ключ — это когда ключ коммутируется на питание.

  • low‑side ключ — это когда ключ коммутируется на GND.

  • подтяжка к GND— соединение пина и GND через резистор

  • подтяжка к VCC— соединение пина и VCC через резистор

Аппаратная часть

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

Какие могут быть проблемы при hi‑side подключении?

  1. Нагрузка может отвалиться

  2. Может произойти короткое замыкание выходного пина на GND

  3. Может произойти короткое замыкание выходного пина на VBAT

  4. Может произойти короткое замыкание выходного пина на выходной пин другого канала

Однако в этом тексте я покажу, как можно зарегистрировать отвалившуюся нагрузку. Данный алгоритм работает только в случае, когда ключи отключены. Если ключи включены, то подтяжка к питанию не окажет существенного влияния.

Программная часть

Данная задача решается при помощи конечного автомата (KA). Он настолько прост, что я привожу этапы его проектирования.

Фаза 1: Перечислить состояние конечного автомата:

Load‑detect для hi‑side ключа строится из конечного автомата всего из двух состояний.

  • Подтяжка к питанию подключена (PULL_UP_ON)

  • Подтяжка к питанию отключена (PULL_UP_OFF)

Фаза 2: Перечислить входы конечного автомата:

Со входами тоже все просто. У нашего автомата всего один внешний стимул:

  • Прошел TimeOut переходного процесса

Фаза 3: Перечислить действия конечного автомата:

  • Установить на выходе подтяжку к питанию.

  • Отключить на выходе подтяжку к питанию.

  • Прочитать напряжение на обратной связи.

  • Исполнить алгоритм определения нагрузки.

Фаза 4: Заполнить таблицу переходов

Таблица переходов показывает как меняется состояние автомата в зависимости от входного воздействия и текущего состояния автомата.

Состояние

Вход

TimeOut

PULL_UP_ON

PULL_UP_OFF

PULL_UP_OFF

PULL_UP_ON

Фаза 5: Заполнить таблицу выходов

Таблица выходов показывает, что делает конечный автомат в зависимости от входного воздействия и текущего состяния.

Состояние

Вход

TimeOut

PULL_UP_ON

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

PULL_UP_OFF

Прочитать напряжение,
включить подтяжку,
Исполнить алгоритм определения нагрузки,

Фаза 6: Нарисовать граф конечного автомата

Всё сказанное выше можно изобразить на одной единственной картинке, показать на графе.

Когда конечный автомат сделает один оборот можно запустить алгоритм вычисления статуса подключения нагрузки. Для определения состояния достаточно просто обратиться к LookUp таблице. То есть извлечь из массива константу: код ошибки.

FeedBack voltage

Состояние нагрузки

Pull Up

Pull Down

низкое

низкое

Исправная нагрузка ( или короткое замыкание на GND)

низкое

высокое

нереальная ситуация (Error)

высокое

низкое

нет нагрузки (open load)

высокое

высокое

Короткое замыкание на VBAT

Регулируя длительность таймаута можно задавать частоту дискретизации измерений состояний нагрузки. Стоит заметить, что для определения оторванной нагрузки Вам даже не нужен датчик тока. Всё необходимое делается на резистивных подтяжках и измерении напряжения.

Итоги

Вот так просто и незатейливо удалось разработать алгоритм определения неисправностей в Hi‑side ключах.

Источники

Название

URL

Load‑Detect для Проверки Качества Пайки

https://habr.com/ru/articles/756572/

H‑мост: Load Detect (или как выявлять вандализм)

https://habr.com/ru/articles/709374/

Cross‑Detect для Проверки Качества Пайки в Электронных Цепях

https://habr.com/ru/articles/762142/

Разработка блока управления боковыми зеркалами автомобиля @RV3EFE

https://habr.com/ru/articles/697388/

Вопросы:

  • Как прошивка может отличить в hi‑side ключе исправную нагрузку от короткого замыкания на GND? Никак. Надо ставить датчик тока в нагрузке. Измерять сопротивление по закону Ома.

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


  1. KivApple
    20.08.2026 12:35

    Выглядит как чей-то кусок диплома или курсача - не читабельно же


    1. aabzel Автор
      20.08.2026 12:35

      Вовсе нет. Обыкновенная практическая задача и ее решение.


      1. KivApple
        20.08.2026 12:35

        Задача - да, статья - нет. Все эти "Шаг 1", "Шаг 2" с минимальными пояснениями выглядят как отчёт по образцу для лабораторной)) При этом для того кто разбирается в конечных автоматах такая разбивка на шаги выглядит явно избыточно (хватило бы одной схемы), а для того кто не разбирается в статье нет детальных объяснений.


  1. SuperTEHb
    20.08.2026 12:35

    Не нашёл в таблице состояния, когда нагрузка исправна.


    1. aabzel Автор
      20.08.2026 12:35

      Обычно нагрузки имеют малое сопротивление. Десятки ом. Поэтому при исправной нагрузке будет то же, что при коротком замыкании на GND.


      1. SuperTEHb
        20.08.2026 12:35

        Получается, что таким способом мы не можем определить КЗ в нагрузке. Нужен контроль тока.


        1. aabzel Автор
          20.08.2026 12:35

          мы не можем определить КЗ в нагрузке. Нужен контроль тока.

          Да. Однако некоторые экземпляры микросхем драйверов hi-side ключей обладают встроеннным амперметром. Например VNQ7E100AJ (Analog feedback of load current with high precision proportional current mirror).

          Однако я не рекомендовал бы VNQ7E100AJ, так как он сигнал тока мультиплексирует с сигналом об ошибках.


          1. SuperTEHb
            20.08.2026 12:35

            Некоторые модели ВАЗа имеют узел контроля исправности ламп, но там это именно что отдельный узел. Вот прямо коробочка в монтажном блоке, можно вытащить и положить в карман. Для неё нашей промышленностью даже была выпущена специальная микросхема. Тут уж от задачи зависит совмещать контроль с коммутацией или нет.

            Кстати интересно, почему на схеме VNQ7E100AJ внутри показан N-канальный транзистор, а никакого зарядового насоса для питания затвора не показано? Наверное, условность.


  1. Coder007
    20.08.2026 12:35

    Да, здесь в статье не совсем понятен механизм контроля, а конечные автоматы - это отдельная тема для понимания, это как давать примеры на Ассемблере человеку, который его не понимает, но при этом отлично программирует на С и С++.

    Я мысль понял, но не совсем принцип и как будто бы не законченная статья... Ну вот что-то мы выяснили, а потом...? Какие-то микросхемы, что-то могут, подтягивают к земле, к питанию, ну а дальше? Что измеряют? Короткое замыкание - это токовый замер, обрыв - тоже токовый... Видимо стоит немного уточнить и дораскрыть тему.

    Я не так давно делал что-то похожее, но на большее расстояние. Мне необходимо было соединить 2 узла по питанию и первый узел отдаёт питание на второй, но не просто так отдаёт, он должен определить, что отдаёт питание такому же узлу, а не кому-то другому. А питание - 230В и вот тут как раз и получается такая схема с определением того, что на втором конце привязано.

    • Сначала необходимо посмотреть, не пристегнули ли туда 230В внешних и

      если не пристегнули, то нужно проверить, что там висит на конце, подав туда 5В и проверить ток в линии;

    • если ток в пределах 5-10мА, то поморгать в линию напряжением 5В (на второй стороне стоит схема индикации, что бы человек, подключивший конечный узел понимал, что устройство опознано и сейчас сюда прилетит 230В);

    • если ток меньше 5 и больше 2мА, отправить проверить линию, есть обрыв,

    • если более 10мА и менее 30мА, то тоже проверить линию, возможно есть повреждения

    • Если более 30мА, то считаем что там короткое замыкание или левая нагрузка

    И вот когда мы поморгали 4 секунды, то подаём в линию 230В, отключив от линии всю диагностику. И в конечный узел приходит полное напряжение питания 230В, отключая схему низковольтного токового контроля.

    Я не расписал ещё логику контроля тока при напряжении 230В, но это уже не важно.

    Вот в этой схеме есть логика, есть порядок и да, нет конечного автомата, но есть результаты работы. А что происходит у вас? Подключается или не подключается нагрузка (фара, фонарь, насос и так далее, диагностируется ошибка и выдаётся в виде кода ошибки или просто ничего не происходит?

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


    1. aabzel Автор
      20.08.2026 12:35

      Подключается или не подключается нагрузка (фара, фонарь, насос и так далее, диагностируется ошибка и выдаётся в виде кода ошибки или просто ничего не происходит?

      Ну вот что-то мы выяснили, а потом...?

      На прошлой работе у нас load-detect инициировал отправку на смартфон водителю автобуса push уведомления , если вандалы откручивали лампочки из фары.


    1. aabzel Автор
      20.08.2026 12:35

      Что измеряют? Короткое замыкание - это токовый замер, обрыв - тоже токовый... Видимо стоит немного уточнить и дораскрыть тему.

      load detect может преспокойно работать на измерениях напряжений. Измерять ток не обязательно.


    1. aabzel Автор
      20.08.2026 12:35

      не понимаю суть конечного автомата в данной интерпретации (давно, сильно давно мы их в универе проходили).

      Конечные автоматы (FSM) сложно забыть.
      В программировании микроконтроллеров FSM - это золотой шаблон проектирования.

      Вот лишь малый перечень случаев, когда на практике пришлось проектировать FSM:

      Обзор Протокола ISO-TP [ISO 15765-2] https://habr.com/ru/articles/798489/

      Конечный Aвтомат Аппаратного I2C-Трансивера https://habr.com/ru/articles/856548/

      Квантование на Триггерах Шмитта https://habr.com/ru/articles/1003262/

      Конечный автомат инкрементного энкодера https://habr.com/ru/articles/1044930/

      Принцип Определения Дальности Между UWB Трансиверами (Конечный Автомат Для DS-TWR) https://habr.com/ru/articles/723822/

      Протокол TBFP https://habr.com/ru/articles/969948/

      Пуск Беспроводной CLI на Микроконтроллере https://habr.com/ru/articles/929086/

      Синтаксический разбор CSV строчек https://habr.com/ru/articles/765066/

      Теория управления шаговым двигателем (или как вертеть PTZ камеру) https://habr.com/ru/articles/709500/

      Техникум: Конечный Aвтомат Обработки Сигнала с Кнопки https://habr.com/ru/articles/760088/

      Техникум: Распознавание Вещественного Числа из Строчки https://habr.com/ru/articles/757122/

      Cross-Detect для Проверки Качества Пайки в Электронных Цепях https://habr.com/ru/articles/762142/

      H-мост: Load Detect (или как выявлять вандализм) https://habr.com/ru/articles/709374/

      Load-Detect для Проверки Качества Пайки https://habr.com/ru/articles/756572/


    1. aabzel Автор
      20.08.2026 12:35

      здесь в статье не совсем понятен механизм контроля,

      Всё просто. Подергал подтяжку, измерил напряжения на ADC, проанализировал два числа, сделал вывод.


  1. Coder007
    20.08.2026 12:35

    Конечные автоматы (FSM) сложно забыть. В программировании микроконтроллеров FSM - это золотой шаблон проектирования.

    Возможно, но если мы их делали ещё на битовой логике и дальше чем И, И-НЕ, ИЛИ, ИЛИ-НЕ, 2И, 3И ну и так далее, дело не доходило, контроллеры в то время были Ремиконты и Ломиконты и более выглядели как логические шкафы. Микроконтроллеров не было в принципе для домашнего или универского использования.

    Всё просто. Подергал подтяжку, измерил напряжения на ADC, проанализировал два числа, сделал вывод.

    Да, я то понял, судя по комментариям не всем это было понятно. Подал VCC через резистор, измерил, понял что там осталась земля, решил что там лампочка на месте. Если висит VCC в чистом виде, значит "сперли" лампочку.