Хронометраж для горных лыж на Ардуино. Питание

Одноплатный компьютер Ардуино Нано можно запитывать тремя способами. В заметке разберу выбранный способ. Кроме того распишу вариант контроля заряда аккумулятора.

Варианты питания Ардуино Нано

Три варианта питания Ардуино Нано

Через USB плата получает питание от компьютера при отладке программы или от Power Bank. Питание USB это 5 вольт (примерно, мне встречалось 4.6 — 5.1 В). Насколько понимаю, эти 5 вольт сразу «проваливаются» на ножку 5V. То есть можно считать (хотя вопрос спорный), что питание от USB особо не отличается от подачи напряжения с соответствующих проводков кабеля USB на ножку 5V.

Ножка Vin обслуживает внешнее питание более высоким чем 5 вольт напряжением. Верхнее значение иногда указывается 12 вольт, а иногда 9. Нижнее значение должно быть с некоторым запасом более 5 вольт. Внешнее напряжение проходит через «понижайку», микросхему с обвязкой, которая делает из более высокого напряжения 5 вольт. Опять-таки можно считать, что эти преобразованные пять вольт оказываются на ножке 5V. Расположена эта микросхема с обратной стороны платы.

Ножка 5V самая загадочная, поскольку с первого взгляда выглядит как выход (вывод) напряжения с платы для питания внешних модулей, таких как цифровые индикаторы, датчики и т.п. Тем более, что при запитывании всего проекта через Vin так оно и есть.

На самом деле правильнее считать, что ножка 5V это основной вход для питания Ардуино. То есть, при питании от USB входное напряжение подсоединяется к этой ножке и от него питается и чип Ардуино и подключенные внешние устройства. При питании через Vin происходит то же самое, но через встроенную «понижайку». А при поступлении питания прямо от ножку 5V все происходит совсем естественно. В описании платы на этот счет мне показалось недостаточно ясности, поэтому приводить его не буду 🙂


Таким образом, для питания проекта нужно организовать внешнее надежное питание 5 вольт (на практике можно от 3-х до 5-и вольт), которое подается и на все остальные модули и на ножку 5V Ардуино. Силовая микросхема на обратной стороне платы Ардуино при этом не задействована. Несколько раз порывался ее задействовать при отладке радиомодуля, и каждый раз это ничего не давало. То есть питание через Vin нужно оставить на какие-то случаи, когда под рукой есть только 9-12 вольт.

Вот схема соединений из заметки Хронометраж для горных лыж на Ардуино. Заодно.

1) Датчик температуры, 2) плата зарядки аккумулятора от разъема USB, 3) выключатель питания, 4) аккумулятор, 5) индикатор времени, 6) индикатор температуры, 7) светодиод «садится аккумулятор», 8) кнопка обнуления секунд для выставления времени часов (расположена не на виду, внутри блока), 9) Ардуино Нано, 10) плата часов, 11) выключатель режима контроля регламента, 12) пьезопищалка для контроля регламента

Питание организовано от аккумулятора, причем без стабилизации напряжения. Сколько аккумулятор выдает, а это от 4.2 до 3.0 вольт, столько и идет на питание всех элементов схемы.  Ардуино питается «на равных», получая напряжение на ножку 5V.

Питание от аккумулятора

Для «ответственных» блоков, в нашем случае это те, которые с радиомодулями, питание всей схемы должно быть «стабилизированным» (в смысле не «гулять» вместе с напряжением на аккумуляторе). Поэтому при питании от литий-ионного аккумулятора (3 — 4.2 вольта) нужно добавить «повышайку».

Хронометраж для горных лыж на Ардуино
1) модуль повышения напряжения, 2) выключатель питания, 3) плата зарядки аккумулятора от разъема USB, 4) аккумулятор

Контроль заряда аккумулятора

Вообще-то в хронометраже для горных лыж контроль аккумулятора не очень нужен. Перед тренировкой все аккумуляторы надо зарядить (благо в литий-ионных аккумуляторах нет эффекта памяти). Заряда аккумуляторов должно хватать на 2-3 часовое катание с троекратным запасом.

Тем не менее, какой-нибудь сигнал о разряде аккумулятора должен быть. Точнее, нужна уверенность, что с аккумулятором все в порядке. Тогда, если система вдруг перестанет работать, например пропадет радиоканал, проще искать неисправность. Для качественного контроля аккумулятора на Али-Экспресс продается огромное количество модулей с отдельным индикатором на цифрах или на линейке светодиодов разных цветов. Но качественный контроль не нужен, да и если на борту Ардуино есть аналого-цифровой преобразователь, то зачем дополнительный модуль?


В чипе Ардуино Нано есть один аналого-цифровой преобразователь (АЦП), который через мультиплексор (переключатель) можно программно подключать к ножкам А0 — А7 (см. на картинке вверху по тексту). В нашем случает лучше к А6 или А7, поскольку эти ножки сконфигурированы на работу «только» с АЦП. Остальные можно сконфигурировать, например как цифровые выводы на индикаторы.

Хронометраж для горных лыж на Ардуино
1) светодиод «садится аккумулятор», 2) Ардуино Нано, 3) модуль повышения напряжения, 4) выключатель питания, 5) плата зарядки аккумулятора от разъема USB, 6) аккумулятор

АЦП измеряет напряжение от нуля до так называемого опорного напряжения. Опорное напряжение можно программно выбрать из трех вариантов: по умолчанию это напряжение на ножке 5V (то есть обычное питание «на борту»), специально поданное напряжение на ножку REF (ножка слева от А0 на самой верхней картинке) и внутреннее опорное напряжение чипа 1.1 вольт. С ножкой REF нужно быть предельно аккуратным, там отдельные требования по входу, несоблюдение которых может сжечь чип. К тому же эта ножка может быть и выходом, на ней можно измерить выбранное «внутреннее» опорное напряжение 1.1 В. В общем, поигрался с ней, к счастью ничего не сжег, и решил, что в моем случае правильнее считать, что варианта «REF» нет 🙂

Опорное напряжение на ножке 5V в сети принято использовать для измерения относительных величин. Например переменный резистор, подключенный крайними выводами к нулю (GND) и 5V, а средний вывод (переменный) на вход АЦП. Оцифровываются при этом текущие показатели резистора относительно его полного сопротивления. Это к тому, что даже при работе со стабилизированным источником (если не доводить до абсурда), бортовое напряжение может изменяться в зависимости от общей нагрузки схемы. И уж тем более будет разным например при питании от USB или от аккумулятора. Поэтому если при измерении так или иначе интересуют пропорции (как в примере с переменным резистором), а не абсолютные значения напряжения, то выбор 5V в качестве опорного напряжения работает хорошо. К случаю контроля заряда аккумулятора это никак не относится, нужно измерять именно напряжение на аккумуляторе, а не какие-либо пропорции.


Поэтому для контроля аккумулятора так или иначе нужно использовать внутреннее опорное напряжение 1.1 вольт. Откуда оно берется? Оказывается, из Природы. Чип сделан из кремния. Ширина запрещенной зоны (Energy gap) кремния составляет от 1.17 эВ (при абсолютном нуле) до 1.11 эВ (при комнатной температуре), цифры отсюда (в других источниках как ни странно могут отличаться). В 1964 году придумали схему, как использовать это свойство для создания опорного напряжения (поиск по «bandgap voltage reference», например Википедия). Опорное напряжение может немного отличаться от чипа к чипу, но если его измерить (или отградуировать измеряемые значения), то дальше можно использовать как стабильный репер, не зависящий от температуры или нагрузки схемы.

Для использования опорного напряжения 1.1 В нужно измерять напряжение менее этого значения. То есть, для измерения напряжения на аккумуляторе нужно сделать делитель на двух резисторах. В сети это основной подход, правда как правило каждая конкретная реализация в комментариях подвергается жестокой критике. Дело в том, что делитель замыкает через себя плюс и минус схемы, поэтому сразу забирает на себя ток, чем меньше сопротивления «в плечах» делителя, тем больше тока просто «уходит в песок». В то же время поставить большие сопротивления нельзя, поскольку АЦП на входе приветствует определенные значения, примерно 10 кОм, хотя это тоже под вопросом. В общем, идея с делителем мне не нравится. Тем более, что можно обойтись без него.


В сети есть трюк, варианты которого находятся по поиску «Secret Voltmeter Arduino», например здесь. В заметке Хронометраж для горных лыж на Ардуино. Заодно этот трюк использовался для определения абсолютных значений напряжения на ножке 5V. Смысл в том, что используя бортовое напряжение как опорное можно при помощи «ковыряния» в регистрах чипа измерить напряжение репера 1.1 В в долях от опорного. А так как напряжение 1.1 В на самом деле известно, то обратным пересчетом получается значение бортового напряжения на ножке 5V. Поэтому можно оцифровывать напряжение на аккумуляторе относительно уже известного бортового напряжения. Единственное, напряжение на аккумуляторе нужно подавать через резистор 10 кОм. Если подавать напрямую, то напряжение проходит через ключи мультиплексора и может странным образом включать Ардуино. Четких рекомендаций, почему именно 10 кОм, в сети не нашел.

По измерениям мультиметром, при напряжении на аккумуляторе 4 вольта на этом резисторе 10К падает 0.04 вольта. Поскольку резистор участвует в делителе с дальнейшим внутренним сопротивлением Ардуино, то при разряде аккумулятора до 3 вольт на «ножке» входа (А7 на рисунке сверху) должно быть на 0.03 вольта меньше. По какой-то непонятной причине при переводе в «цифры» никакого падения напряжения на резисторе не вычисляется. Поэтому оставлю этот абзац просто, чтобы потом заново не возник вопрос 🙂

Оцифрованное значение напряжения скачет существенно больше, чем измеряемое внешним вольтметром. Это нормально. В сети есть аппаратные и программные решения. Но в нашем случае это не нужно. Достаточно просто при фиксации измеренного на аккумуляторе напряжения менее 3 В зажигать контрольный красный светодиод и переводить программу в режим «холостого хода».

Добавлено в декабре 2020

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

Поэтому при организации питания нужно учитывать, что питание Ардуино от ножки 5V подразумевает, что броски «бортового» напряжения будут не более 5.5 В и не менее 2.7 В. Организация бортового питания от «повышайки с потенциометром» не гарантирует этого, в частности потому, что поскольку там нет (и быть не может) стабилитрона на 5 В. Питание через Vin наверное предохранит контроллер, поскольку задействован стабилитрон на плате Ардуино. Но организация питания через Vin не совсем удобна, поскольку подавать нужно не менее 6 вольт, а нагрузку (индикаторы, например) лучше все-таки питать отдельно. Поэтому получается, что нужно организовывать две цепи питания (6+ вольт для Vin и 5 вольт для всего остального). При этом 5 вольт на ножке 5V может не совпадать с 5-ю вольтами отдельной цепи, что может приводить к непредсказуемым сбоям.

В случае проекта «Хронометраж…» был выбран вариант из отдельной цепи питания 3.3 В для нагрузки, вызывающей броски напряжения (это радиомодуль в режиме «передача»)  и  отдельного контура питания 5 вольт для всего остального, включая Ардуино.

Добавлено в 2023

При изготовлении последующих версий «хронометража» столкнулся с тем, что «повышайки» бывают и такие, что схема начинает глючить в некоторых ситуациях. Спасла такая схема питания. Одна повышайка с выходным напряжением 7В питает Ардуино по Vin и понижайку до 3.3 В для питания радиомодуля. А вторая на 5 В (если нужно) энерго потребляющие элементы типа больших индикаторов. У этих цепей питания «общая» только земля. То есть ножка 5V на Ардуино не задействована. И на входе питания Ардуино и радиомодуля конденсатор в несколько сотен микрофарад с низким ESR все-таки необходим. Или связка, параллельно обычный «электролит» и керамика с емкостью «чем больше, тем лучше».

Кроме этого, нужно стараться избегать использование «4-х амперной» повышайки на схеме XL6009. Модуль позиционируется как подходящий для работы от одной банки литий-ионного аккумулятора (диапазон входных напряжений 3.3-4.2 В). Но это, видимо, не правильно. Сама схема по «даташиту» работает от 5 В. То есть, весь диапазон работы аккумулятора происходит в недокументированных возможностях. На ютубе есть два (свежих) ролика, которые обнаруживают скачок выходного напряжения при падении входного напряжения до некоторого значения (индивидуального для конкретной сборки) в диапазоне 3.4 — 3.6 В. Возможно это привело к выходу из строя нескольких плат ардуино при испытаниях «на снегу«. Ссылка на один из роликов — в комментариях к той заметке.

 

Здесь собраны все заметки по теме «Хронометраж для горных лыж на Ардуино».

 


Vadim Nikitin DigInfo.ruВадим Никитин

 

 

 

на начало страницы

Добавить комментарий

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