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

Первая версия была сделана на Arduino Uno – как демонстрационный стенд, который должен был обозначить все основные трудности, которые придется преодолевать в серьезных прототипах. С этим он справился на отлично – выдвинув целую кучу тезисов:
-
Ориентироваться по чему-то кроме как по сигналам а-ля парктроник весьма сложно. Сложную информацию приходится дольше воспринимать, и как следствие, чаще врезаться.
-
Продолжая пункт 1, датчик должен быть строго однонаправленным. Направляя его в стороны в коридоре, можно настрадаться от ложных предупреждений.
-
Оказывается, рост людей бывает разный. Место закрепления прибора тоже может различаться. Как следствие, расстояние до земли тоже растет и уменьшается!
-
Всегда сигналить в ухо нельзя – теряется восприятие окружения, которое особенно важно в городской обстановке, например, чтобы вовремя среагировать на дорогу.
-
Вес отладочного макета, даже без корпуса, просто огромен – и большую часть занимает аккумулятор, который должен держать заряд для постоянной работы двигателей.
-
Стабилизация, так как она была сделана на тестовом макете, была смехотворно некомпетентной. Как оказалось, высчитывать угол наклона чисто при помощи арктангенсов векторов в акселерометре было не самой лучшей идеей, учитывая импульсы при ходьбе.
По первому, второму и четвертому тезису решение нашлось быстро – было принято, что для сигнализации превышения уровня поверхности будут использоваться короткие и частые сигналы, а для участков сниженной высоты – длинные и редкие, в остальное время же прибор будет молчать. С третьим пунктом тоже все просто – при запуске достаточно «поглядеть» вниз, оценив расстояние до земли, и на основе него уже считать расстояние до препятствия. Пятый тезис определил дальнейший курс развития на применение контроллеров низкого энергопотребления (тоже заведомо ложный в данном контексте, т.к. если электромеханика работает постоянно, выигрыш от низкопотребляющей логики уловить сложно). Шестой тезис заставил меня вникнуть в такую концепцию, как фильтр Калмана и MEMS-датчики, совмещающие различные измерительные приборы.

И вроде как, оно даже работало. Порой не успевало корректировать положение, весило как кирпич, иногда сгорало от нагромождения проводов…, и я решил улучшить сей прибор современными технологиями, нацелившись на свою печатную плату и микроконтроллер низкого энергопотребления, в идеале что-то из ассортимента STM32 (т.к. из современных МК, как я понял, они были задокументированы лучше всего). Я думал, это будет просто. Я очень сильно ошибался.
Два месяца я изучал «Искусство схемотехники» Хоровица и Хилла, «Освоение STM32» Кармина Н. , по одной простой причине – я не знал абсолютно ничего, а мои знания физики заканчивались на законе Ома. Обе эти книги могу очень сильно порекомендовать, так как они, конечно, не заменили мне опыта пары сгоревших плат и неработающих программ, но они дали основательную базу, позволившую мне отследить эти ошибки и понять, что нужно изменить для их исправления.

Но эта итерация, впрочем, смогла вместиться в относительно адекватные размеры (практически в два раза меньше, чем предыдущая версия), продемонстрировать приемлемую прочность, да и вес у нее был заметно меньше. Осталось лишь применить бритву Оккама – как оказалось, нет никакого смысла в аудиоусилителе при передаче простейшего писка, а кнопка включения/выключения может быть спокойно заменена таймером низкого потребления, проверяющим, сдвинулось ли устройство с места или нет, и переводящим конструкцию в режим энергосбережения.

Было проведено множество тестов, и я четко понял несколько моментов. Во-первых, тонкие дорожки в проекте, задействующем до 1.5А – крайне неудачная затея. При сильных поворотах сервомотора, падения напряжения возникают такие, что маска платы начинает отклеиваться от нагрева. Но еще худшим решением было поставить линейный преобразователь с ~6-8 вольт аккумулятора в 5в моторов – ЛДО буквально кипел и дымился при подключении сервомоторов. Пришло время все переделать на импульсном понижающем преобразователе, и с нормальной топологией платы…
…но у меня кончились деньги. Это было ожидаемо, учитывая кризис микроконтроллеров и стоимость прототипирования печатных плат – но едва ли это означало паузу в работе над проектом. Прочтя в процессе “PIC-микроконтроллеры” Сида Катцена, я загорелся идеей сделать новую итерацию на минимальном железе, и максимально оптимизировать ее, применяя ассемблер. Это несло даже некоторую выгоду проекту – убирая лишнюю цепь 3.3в, можно было заметно срезать на инфраструктуре питания. В голове – AtMega328p, начнем.

Оказалось, делать плату таким образом – худшее, что можно было придумать. Даже травление лазерно-утюжной «технологией» было более разумной затеей. Перемычки отлетали, припой протекал, а макетная плата начинала напоминать поле битвы после даже небольшой смены конфигурации. И конечно, замыкания – они повсюду. Плата, впрочем, действительно получилась крайне компактной, другое дело, что она едва ли работала. Любая хоть сколько-то сложная передача пропадала в какофонии помех, порожденных нагромождением паразитных емкостей и индуктивностей – что приводило к совершенно непредсказуемой работе платы. Был поднят вопрос о травлении сей конструкции своими руками, но…
Пришла стипендия, и вместе с ней пришло время делать новую нормальную версию устройства. Но зачем останавливаться на одной проблеме питания? Я решил составить блок-схему устройства по всем канонам мехатроники, и обнаружил, что я полагаюсь на избыточную обратную связь – сервомоторы применяют энкодер, чтобы определить, попали ли они в нужный угол, диктуемый им гироскопом. Было бы логично убрать лишнее звено, сделав прямую связь – двигатели корректируют положение с уменьшающейся скоростью до тех пор, пока не придут близко к приемлемому значению угла наклона. Я предположил, что при должном быстродействии, это поможет полностью устранить проблему автоколебаний сервомотора при ходьбе, понизить лишнее энергопотребление, и многократно увеличить точность устройства. Для предсказуемого вращения были взяты шаговые двигатели (потребовавшие свои микросхемы-драйверы). Помимо этого, был вынесен определенный урок касательно подключения проводов к плате – даже если они не подразумевают включение-выключение пользователем, во имя износостойкости их лучше подключать через клеммы или разъемы.

Эта плата, на мой взгляд до сих пор, была одной из лучших, что я делал. Явных ошибок разводки там не было, да и собрана она была плюс-минус прилично (спасибо фену и паяльной пасте). Но… по какой-то причине, микроконтроллер сгорел. То ли это было статическое электричество (от которого я тщательно заземлялся браслетом, подключенным к батарее), то ли температура фена (который опять же, работал на минимальном нагреве и отводился мгновенно, как паста заблестит) – неизвестно. Одно было понятно точно – в феврале произошли события, навсегда изменившие рынок микроэлектроники в России, и на получение микроконтроллеров STM32, тем более по адекватным ценам, можно было уже не надеяться. Я довольно долго думал, что про микроконтроллеры вообще можно забыть, но произошло кое-что необычное.
Я увидел мощные, сложные, и крайне плохо задокументированные МК серии ATSAM (как я понял — попытка Atmel запрыгнуть в уходящий поезд разработки 32-битных контроллеров), по совершенно смешной цене в 300 рублей. Естественно, они и легли в основу следующей итерации сего устройства – даже несмотря на экспоненциальный рост сложности разводки.

Но… во-первых, из-за цен на прототипирование в России, плата явно не попадет ко мне на стол, а во-вторых, этот проект, внезапно, выиграл мне грант. Не буду подробно акцентироваться, я специально выждал с этой статьей, чтобы она не несла отпечаток горделиво-трепетного превознесения этого момента, но да – теперь, этот проект можно развить еще дальше. На текущий момент я думаю переделать плату под многослойную топологию, сделать ее максимально компактной и помехозащищенной, и реализовать устройство на рынке именно в таком формате.
Другое дело, зачем оно вообще? Концепция механической стабилизации, зашитая глубоко в идее устройства – худшее, до чего я мог додуматься. В Сколково сделали «Робин», полагающийся на твердотельные датчики и машинное зрение – он намного эффективнее обнаруживает препятствия. Я не имею никаких иллюзий по поводу востребованности своего проекта, и потому, эту статью априори нельзя рассматривать как его рекламу. Но все же, я надеюсь она поможет кому-то в создании своего пет-проекта в схемотехнике, в избегании моих ошибок как в постановке задачи, так и в ее исполнении.
ссылка на оригинал статьи https://habr.com/ru/post/666282/
Добавить комментарий