Питаем робота правильно, часть 1: преобразуем напряжение

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

Как правило, на простых роботов в качестве контроллера мы устанавливаем Arduino, которая имеет на борту свой собственный преобразователь. Это, безусловно, освобождает от необходимости городить какой-нибудь отдельный огород для организации питания, но имеет горстку серьёзных минусов в том случае, если проект перестаёт быть тривиальным. Так что я решил сделать плату, которая решала бы сразу горсть проблем, связанных с питанием в «нетривиальных» проектах, в едином корпусе.

Чтобы не тянуть — фото получившегося устройства:

IMG_20160319_001151

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

Что же не так с Arduino?

Всё очень просто. Arduino — максимально простая плата для максимально быстрого старта. Вообще, контроллеры, установленные на большинстве Arduino, требуют 5 вольт постоянного тока (такое напряжение, например, выдаёт USB-порт). Для того, чтобы иметь возможность питать Arduino от чего угодно, что выдаёт чуть больше 5 и чуть меньше 20 вольт, на плате распаяна микросхема так называемого линейного преобразователя.

Принцип его работы предельно прост: на вход он принимает напряжение чуть больше 5 вольт, на выходе выдаёт 5 вольт. Загвоздка в том, что линейный преобразователь рассеивает в тепло разницу входного и выходного напряжений, помноженную на ток (который на входе и на выходе преобразователя, разумеется, одинаков).

У такого стабилизатора есть свои плюсы: он очень дёшев, выдаёт очень стабильное напряжение на выходе, занимает совсем немного места на плате, не требует почти никакой «обвязки» (дополнительных компонентов на плате). Тем не менее, есть один большой минус, который во многих приложениях перечёркивает все достоинства.

Он неэффективный.

Рассмотрим пример из жизни. Мы хотим сделать робота. На нём обязательно должна быть Arduino, хочется поставить Raspberry Pi, чтобы программировать всё это на Питоне и обрабатывать картинку с web-камеры. Ну и для порядка прикрутим одну сервомашинку, чтобы махать манипулятором на ходу. Питание хотим сделать от 12-вольтового аккумулятора.

Грубо прикинем, сколько электроэнергии будет кушать наша схема. Потреблением самой Arduino можно пренебречь — это будет около 15-20 мА. Raspberry Pi будет более жестокой — это уже от 600-800 мА. Web-камера — ещё 100 мА. Ну и приправим сверху сервоприводом — если манипулятор нетяжёлый, то берём 150 мА.

Итого: около 1100 мА.

Я скромно промолчу про то, что стабилизатор на Arduino расчитан максимально на 1А выхода. Но давайте досчитаем. Разница напряжений: 12 — 5 = 7 вольт. Умножаем на 1.1 ампера — 7.7 Вт. При этом полезной мощности будет потребляться 5.5 Вт.

Проще говоря, с учётом размера стабилизатора на плате, он превратится в маленькую печку, больше половины энергии будет рассеивать в тепло и разряжать аккумулятор со страшной скоростью, если сам скорее не сгорит. Более того, от такой перегрузки он будет с трудом реагировать на потребление схемы (например, когда на Raspberry запустят какую-нибудь тяжёлую программку, она резко станет потреблять больше энергии), из-за чего напряжение будет проседать и всё будет глючить.

И как теперь жить?

Не так уж всё плохо. Существуют и другие преобразователи — импульсные. Сегодня они встречаются повсеместно: в зарядниках, в компьютерах, да практически во всех устройствах. И этому есть простое объяснение.

Принцип их работы чуть менее тривиальный: входное напряжение часто-часто включается и выключается с разной скважностью (длиной импульса), после чего сглаживается. Выходит, что, помимо самой микросхемы, нам понадобится фильтрующая схема (а это, по сути, конденсатор и катушка индуктивности). Но эти накладные расходы полностью окупаются тем, что импульсные стабилизаторы очень эффективные: их КПД приближается к 100%. Они не очень сильно греются и способны выдавать значительные токи.

Что дальше?

Импульсным преобразователям — однозначное «да».

Более того, почему бы не сделать на борту нашей платы сразу несколько преобразователей? В этом есть смысл, если мы хотим разделить питание вычислительной части робота (где будут контроллеры, Arduino, Raspberry и сенсоры) и механики (сервомоторы).

В этом есть смысл: в основе сервопривода, как правило, лежит электродвигатель, чаще всего — коллекторный. Это значит, что во время работы двигатель будет создавать электрические шумы в своей линии питания, что может не понравиться подключенной к этой же линии электронике. Иногда с таких выпадов контроллеры начинают зависать и всячески глючить, и это нереально отследить. Таким образом, разделяя питание, мы избавим себя от значительной части головной боли на тему глюков электроники.

Ну и, раз пошла такая пьянка, неплохо с помощью этого комбайна следить за уровнем заряда аккумулятора и каким-нибудь громко-ярким образом сообщать о разрядке. Аккумулятор всегда садится внезапно, а в случае с литиевыми аккумуляторами это ещё и чревато гибелью оного (если невнимательный робототехник допустил переразрядку). Более того, для защиты аккумулятора неплохо было бы полностью отключать питание робота до того, как аккумулятор разрядился до опасного порога.

В следующей части расскажу о том, как эти желания воплощались в жизнь, и покажу много фотографий :)

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