Главная » Хабрахабр » Сложная разработка простых устройств

Сложная разработка простых устройств

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

Условимся, что история вымышлена, любые совпадения случайны… или не случайны.
Однажды обратился ко мне Сережа-программист с просьбой сделать ему в машину устройство, которое эмулирует последовательное нажатие 2х виртуальных кнопок при нажатии одной физической в цепи управления круиз-контролем авто (Ford Focus 2). Схема стандартного блока управления выглядит следующим образом:

так вот задача устройства при нажатии аппаратной кнопки последовательно нажать кнопку ON и SET+ на время ~0,2с. Со стороны блока управления это классический кнопочный ввод с помощью АЦП. Напряжение на выводах подключения 4,6 В без подключенной схемы кнопок. Для простоты интеграции устройства было решено питать его от верхнего резистора делителя. Решение «в лоб»: Поскольку устройство планировалось сделать за вечер, мною была сделана схема без предварительных расчетов из того, что было на монтажном столе.

В момент, когда плату уже хотели паковать в корпус подрулевого переключателя кто-то из глубины офиса крикнул: «А че так сложно? Сережа написал прошивку, и устройство прекрасно заработало на авто. И началось… Автор идеи вызвался сам спаять макет «из 3х деталей» (видимо предвкушая легкую победу). Половину деталей можно выкинуть, да и вообще STM8 для такой задачи самое то». Я же (руководствуясь своей же статьей о профессиональной ревности) решил не мешать полету молодого специалиста, а подключился лишь на этапе, когда все поняли, что чуда не произошло.

Схема, предложенная моим коллегой, была действительно проще, но работала только на столе:

Ошибки были видны даже на первый взгляд, тем не менее я решил заставить работать схему именно на МК STM8S001J3.

Сопротивление верхнего резистора в делителе АЦП ~130 Ом, а напряжение без нагрузки 4,6 В. Для того чтобы понять как нужно переделать схему проведем несколько измерений.

Тогда схема узла кнопок имеет вид:

  • при отпущенных кнопках ток в цепи составляет 2 мА, напряжение на входе АЦП 4,33 В;
  • при нажатой кнопке ON 3,7 мА, напряжение на входе АЦП 4,11 В;
  • при нажатой кнопке SET+ 18,4 мА, напряжение на входе АЦП 2,2 В.

При этом диапазон рабочих напряжений МК STM8S001J3 составляет 2,95-5,5 В. Получается, что попытка нажатия кнопки SET+ приводит к падению напряжения ниже минимального и МК сбрасывается.

Обычно для таких поделок используют то, с чем разработчик умеет работать и то, что есть под рукой. На этом моменте предлагаю отвлечься и обсудить каков идеальный МК для этой задачи и почему не выбрали его. Эти микросхемы не требуют стабилизатора напряжения (как STM32L031), но и не будут перезагружаться при нажатии кнопки SET+ (как STM8S001J3). Например, у microchip есть контроллеры PIC10F200 или ATtiny10 в корпусе SOT23-6 с диапазоном напряжений питания 2(1,8) — 5,5 В. Красота, но в номенклатуре STMicro контроллеров с таким диапазоном питания нет. В обвязке будет всего лишь 2 резистора и конденсатор. Чтобы решить проблему со сбросом контроллера нам нужна энергия для питания контроллера во время нажатой кнопки SET+. Внимательный читатель справедливо заметит, что в рамках такой задачи можно освоить практически любой контроллер, но отсутствие привычной среды программирования и отладочных средств определяют выбор.
Вернемся к схеме. Для оценки количества этой энергии необходимо измерить ток потребления (или посмотреть в документации):

Это много, но чтобы было понятно я приведу расчет. Почти 500 мкА в самом лучшем случае. Для накопления энергии нам нужен диод (VD1) и конденсатор (C1):

При «нажатии» кнопки SET+ напряжение в точке Vin падает до 2,2 В, VD1 закрывается и МК питается от разряжающегося С1. Падение на VD1 0,2 В, соответственно при отпущенных кнопках С1 будет заряжен до 4,33 — 0,2 = 4,13 В.

Тогда емкость конденсатора: В этом выражении слева энергия запасенная в конденсаторе (при его разряде с 4,13 до 3,1 В), справа энергия затраченная контроллером за время t = 0,2 с.

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

Для этого у STM8 есть режим Active Halt Mode:

В таком случае для обеспечения работы контроллера нужен конденсатор емкостью всего 47 мкФ. Отключив MVR и Flash, удалось получить ток потребления ~40 мкА (это существенно выше заявленного тока, но для данной задачи такой ток подходит), а благодаря AWU (auto wake up unit) можно легко выставить пробуждение через 256 мс после перехода в сон.

Ток при нажатой кнопке SET+ 18,4 мА — это меньше предельного тока для вывода, но напряжение логического нуля при этом будет в районе 0,7 В. Вроде бы все проблемы решены, но есть еще одно НО. Я выбрал второй вариант как более прогнозируемый в поведении. Это приведет к падению тока через резистор и потребует либо пересчета сопротивления, либо использования внешнего транзистора по схеме с открытым стоком. Итоговая схема приняла вид:

В таком виде она успешно заработала и эксплуатируется по сей день.

Вместо заключения

С другой стороны, хотелось показать, как неоптимальный выбор основной элементной базы (в данном случае МК) усложняет процесс разработки и само изделие в виду двух основных причин: В этом материале я хочу обратить внимание на проблему того, как разработчик наказывается за излишне поверхностный или легкомысленный подход к разработке простого (на первый взгляд) устройства.

  1. Необходимости подстраивать выбор технических решений под умения программиста.
  2. Невозможности объять весь спектр возможных комплектующих, подходящих для выполнения задачи, чтобы выбрать из них «самое самое». Эти факторы, чаще всего, объясняют то, что многие устройства (бытовые, коммерческие, специальные) работают нормально, но сделаны не так, как сделали бы его вы.

Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] Сколько доменных имён .com не используется?

При поиске свободного имена в зоне .com меня неприятно удивило количество уже занятых, но неиспользуемых доменов. Судя по всему, зарегистрированы все произносимые комбинации букв на всех основных языках мира. И даже непроизносимые короткие комбинации. То ли существует большой рынок доменов, ...

[Из песочницы] Задача классификации глазами школьника: определение наличия автомобиля на парковке по кадрам с камеры видеонаблюдения

Здравствуйте, я школьник 11 классов, интересуюсь программированием, около-IT тематикой. Публикация может рассматриваться как пример удачной реализации для людей, несведущих в этой области знания, а так же как просьба указать мои ошибки для людей, соответственно, сведущих.Дано: видео-поток с камеры видеонаблюдения, на ...