Намедни как-то б-г послал мне книгу — The ARRL Handbook. Она же — Справочник Радиолюбителя. Вообще случайно послал. Сначала кто-то упомянул на ютюбе, а затем, спустя несколько поворотов судьбы и сто баксов для амазона, бумажный фолиант приземлился рядом с остальными пылесборниками моих книжных полок.
Фолиант реально прикольный. Массивный — таким и таракана пришибить, и от грабителя отбиться можно. Ну и внутри интересный — если бы его преподавали в школе, я бы, может, а понял чего. Но важно не это. Важно то, что мне снова захотелось поковырять Жорика Аннигилятора и направить его на путь охоты.
Текущие Жориковые проблемы
Там ведь на чём всё застопорилось… Всё нарастающая сложность системы по итогу привела к тому, что даже включать робота стало тяжело. Сначала нужно щёлкнуть выключателем общего питания. Затем — выключатель питания мотора. Ну и наконец — кнопка включения «мозгового компьютера».
Выключение тоже превратилось в геморрой. Так как на компьютере работает Ubuntu, просто выдернуть робота из розетки никак нельзя. Нужно сначала дождаться состояния «Теперь питание компьютера можно отключить» (shutdown -h now
), а затем поотрубать выключатели. Что-то, конечно, можно упростить, но рядом стоит вторая энергетическая проблема.
Дело в том, что моторам нужно очень много тока. И вольт 12 напряжения. Nvidia Jetson Nano компьютер — на котором вертится Убунта, и который достаточно мощный, чтобы запускать собственный кусок искусственного интеллекта, хочет 5 вольт, и тоже много ампер тока. У него, конечно, есть аж два режима энергопотребления — минимальной (< 2A) и максимальной производительности (>4A), но на минимальной робот не сильно интеллектуален, а на максимальной система «вырубает пробки» и наглухо отключается.
До последнего момента я обходился 8 AA аккумуляторами для моторов и здоровенным пауэр-банком для Jetson Nano, и теории это работало. До первой зарядки аккумуляторов, которые нужно доставать по одному. Или перезагрузки пауэр-банка, который замечал, что Jetson потягивает напряжение даже выключенным, и решал отключаться навсегда. Ну и пауэр-банк тоже надо заряжать. Сплошной геморрой.
Ведь в идеале, всё должно быть так: я нажимаю кнопку, и все компоненты включаются в нужном порядке и в нужное время. Нажимаю её ещё раз, и последовательность повторяется в обратном порядке. Короче, нужно придумать контроллер питания, и теперь, кажется, я знаю, как это правильно сделать.
Светлое Жориковое будущее
Во-первых, все батарейки и пайэр-банки идут лесом. Я купил стайку дешёвых 18650 аккумуляторов на пробу (тех самых, на которых когда-то ездили Tesla), и штук шесть оных (два по три последовательных соединения, 3s2p) должны потянуть и моторы, и компьютеры, и даже на фары со светомузыкой останется. Блин, да они такой ампераж дают, что хорошо, если я дом не сожгу при коротком замыкании.
Что приводит нас к действительно большой проблеме. 18650 — капризные. Не как литий-полимерные батареи, конечно, но тем не менее. Закоротил батарею — готовься к пожару. Слишком сильно зарядил батарею — готовься к пожару. Слишком сильно разрядил батарею — покупай новую. То есть это совсем не те устройства, которые разумно подавать на мои умеренно кривые руки.
Но все три проблемы решаются специальной платой — BMS. Она же — battery management system. Штука защищает от всего, чего можно, позволяет на вход подключать зарядное устройство, и стоит от силы пару долларов на алиэкспрессе. Порывшись в своих запасах кремния, я даже нашёл парочку. Если она работает, то вопрос батареи и её зарядки решается полностью, и остаётся проблема очерёдности включений компонентов. То есть — во-вторых.
Во-вторых, мне нужно ещё один микроконтроллер, какая-нибудь маломощная ардуинка, которая всегда будет включена (пускай и в режиме энергосбережения). К ней я прикреплю кнопку, на нажатие которой питание подастся в остальные места, а также на «вкл» кнопку Убунты.
Сделать выключение чуть сложнее, но тоже можно. На нажатие кнопки микроконтроллер скажет Убунте выключиться, и потом по таймеру (либо замерив потребляемый ток), полностью отключит Убунту от сети. Красота!
Первый эксперимент
В принципе, «во-вторых» мне не кажется слишком сложной задачей, потому что это с большего программирование и чуть-чуть паяльника. Я бы лучше начал с батарей и BMS, как с наиболее неизвестного.
Пайка — элементарная. Три плюса подпаиваются к терминалам BMS, а сами батареи соединяются последовательно. Я добавил терминал для удобства, вставил батарейки и таки да, наука показала целых 12 вольт на выходе. Прекрасное колдунство.
Я подключил настольный блок питания к терминалам и попробовал зарядить шайтан-машину, и наука сработала и в этот раз! Как и обещала Партия, BMS начал заряжать батареи большим током, но снизил его почти до нуля, когда батареи зарядились.
Но это всё фигня. Потянет ли эта шайтан машина Nvidia Jetson Nano на максимальных настройках? Подключив комп к батарее через пятивольтовый регулятор напряжения, я тыркнул кнопкой и…
Во-первых, зелёная лампочка включения загорелась, что есть гуд.
Во-вторых, я смог подключиться к Jetson по SSH — значит штука действительно загрузилась. Судя по выводу jtop
, система уже была в максимальном режиме потребления (NV Power[0]: MAXN
), но так как на ней ничего не запущено, она и жрала всего ампер. Такое я мог получить и от пауэр-банка. Надо бы систему напрячь.
sudo stress -c 4 -t 300
должно стрессануть все четыре ядра на пять минут, так что батареи смогут показать себя. Запускаем, и…
Четыре с хвостом ампера! Иногда доходило до 4.6A, а батарейкам хоть бы хны. Даже не нагрелись. Я держал Jetson на стрессе до тех пор, пока батареи не ушли в ноль (точнее, BMS отключил их сам), и в какой-то момент Jetson даже вентилятор попросил. Отродясь такого не было.
Теперь то и осталось что купить нормальные 18650, не китай, распечатать корпус, сделать второй такой блок, и робот сможет носиться как угорелый. Берегись, физрук! Вынужденная передышка закончилась, Немезида без пяти минут снова в строю!