Роботостроительство – делаем базовую платформу для будущего робота

    Всем бодрого/доброго (нужное подчеркнуть) времени суток и хорошего настроения! Хочу рассказать и показать процесс, как я придумывал (проектировал) и изготавливал базовое шасси для четырёхколёсного робота.

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



    Цель этого поста – показать процесс разработки и изготовления подобной платформы. Обычно в статьях по робототематике показывают уже готовые устройства, демонстрируя, что сделано и как оно в результате работает. Это интересно, конечно же. Но с бóльшим удовольствием я читаю статьи, в которых поэтапно показывается, как именно сделано, почему и описание каких-то отдельных моментов или мыслей. Я попробую подробно описать как собиралась движущаяся платформа в домашних условиях. Эта статья – профильное чтение для отдыха. Саму статью я подготавливал, наверное, больше времени раза в три, чем рукоделием занимался. Не претендую на полноту описания, высокотехнологичность, наукоёмкость, инновационность и безошибочность… Но надеюсь, что для кого-то она поможет сделать какие-то первые шаги и покажет, что современная модульная электроника это совсем не сложно, хотя и не совсем просто, как кажется. «Дяди снова играют в машинки вместо того, чтобы серьёзным делом заниматься». Но ведь нужно же заниматься чем-то тем, кто никак не может вырасти. Осторожно – под катом будет много текста и неприлично много картинок.

    Предисловие


    Я уже делал, вернее собирал, робота RASH1. Этого робота сложно назвать handmade, так как платформа абсолютно собирается на готовых комплектующих. Интерес представляет система управления такой платформой, построенная на базе небольшого маршрутизатора с системой cyberWRT, которая позволяет управлять роботом с любого устройства через браузер. Сознаюсь, смысл работы был больше в демонстрации самого процесса разработки с точки зрения методики и документации, нежели в непосредственном изготовлении. По этому поводу на хабре, в меру добросовестно, была запилена почти концептуальная статья, так как я посчитал, что раз уж попытаться описать разработку, то сделать это для всех, тем более, стартап изначально нацеливался на open source и ребята были не против подобной инициативы.



    Если Вы посмотрите видео, то убедитесь, что китайские моторчики за 300 рублей бывают очень разные и порой непросто подобрать их одинаковыми, особенно если других нет. А, если они неодинаково крутятся, то робот прямо ездить не будет. Хотя, своим стремлением лишний раз утянуться налево, он не оставил равнодушными ни одного домочадца, такой эффект явно нежелателен. Можно поставить энкодеры и программно корректировать вращение колёс. Если же энкодеров нет, то можно эмпирически вычислить, насколько нужно притормозить (понизить уровень напряжения) более быстрый двигатель, чтобы робот ездил прямо и ровно. Однако, по мере разряда батареек/аккумуляторов, характеристики подогнанной «рабочей точки» изменятся и при другом напряжении двигатели ведут себя уже совсем иначе – робот опять начнёт «забирать» в какую-то сторону. Помимо этого, управление роботом через cyberWRT всё же не идеально – связь обрывалась, иногда пропадала картинка, точно не помню, кажется, на Firefox управление сенсорными кнопками вообще не работало. После переподключения к роботу всё восстанавливалось, то есть чинилось без перезагрузки маршрутизатора, возможно имела место какая-то капризность связи компьютер/телефон-маршрутизатор-маршрутизатор_на_роботе. Стоит отметить, что cyberWRT довольно просто решает вопрос организации управления, давая возможность написать свой модуль и преобразовать, грубо говоря, WEB с одной стороны в UART с другой. В интернете достаточно русскоязычной информации, а также присутствует довольно активное сообщество, которое может помочь разобраться в каких-то вопросах. Ну, и робот получился больше для демонстрации и изучения, чем для сугубо практической пользы. Он очень весело и шустро ездил без второго этажа, но заметно погрустнел, когда добавились маршрутизатор с небольшим USB хабом и видеокамера.



    Сама по себе, сборка робота RASH1 вполне позволяет новичкам в робототехнике сделать первые шаги, не заостряя внимание на разработке электроники, прикладывая минимум усилий с паяльником в руках (существует готовая разведённая плата, которая без особого труда распаивается), но, тем не менее, получается робот, сделанный своими руками – я уверен в том, что только на одних легоподобных электронных конструкторах нормальный инженер-робототехник всё же не взрастится. В принципе, этого уже достаточно: полученный робот, и без управления через cyberWRT, позволяет программировать своё поведение. Достаточно разобраться в Arduino (схемотехника и программирование), освоить понятие широтно-импульсной модуляции (ссылка 1, ссылка 2) и в интернете поискать примеры применения тех или иных датчиков.

    Например, базовая прошивка имеет автономный режим, который включается нажатием кнопки на роботе и позволяет роботу ездить в помещении, в идеале, без столкновений с предметами – сонар (ультразвуковой датчик) постоянно отслеживает обстановку перед роботом и при обнаружении препятствия робот прекращает движение и запускает слегка навороченный алгоритм разворота, суть которого – получить случайные повороты, чтобы победно покинуть любую ловушку из хитро расставленной людьми мебели. Можно добавить ещё один сонар, улучшив «зрение» робота. Можно подключить датчик освещённости и по его значениям включать или выключать «фары» робота, чтобы ему было «виднее» во всяких тёмных уголках под столами и стульями. Или подключить датчик движения, например, недорогой HC-SR501 (на базе микросхемы BISS0001) чтобы научить робота затаиваться от людей. В общем – немалые просторы для творчества, развлечения и познания как именно работает электроника на «низком» уровне.

    После RASH1 мне стало интересно и я сделал робота RASH2. Этот робот уже можно классифицировать как handmade. За базу взята покупная платформа – верхнее и нижнее стеклотекстолитовое основание, стойки, моторчики – это все единый комплект, приобретенный в «великих китайских интернетах».



    Этот робот уже имеет разработанную собственную электронику, которая изготовлена на макетной плате, к которой припаивались разъёмы, а роль дорожек выполняли проводки. Питание осуществляется, не от АА батареек/аккумуляторов, а от четырёх литий-ионных аккумуляторов типоразмера 18650. Установлены сервоприводы, которые позволяют «голове» робота крутиться в двух плоскостях. На «голове» робота установлена видеокамера и сонар. В автоматическом режиме роботу уже не нужно крутиться целиком – достаточно «осмотреться» сонаром. Робот имеет такие же «жёлтенькие» двигатели, как и предыдущий, и изначально задумывался как переднеприводный, но потом пришлось переделать на полноприводный ввиду совсем никакой динамики из-за приличного веса. Энкодеры уже установлены, но смысла в них особого нет, так как робот достаточно тяжелый и соседние колеса по одному борту будут подтормаживать друг друга сами по себе. Система управления так же построена на маршрутизаторе TL-MR3020 с прошивкой cyberWRT.



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

    Раздумья о новом роботе


    И вот, теперь новый робот. Что мы от него хотим?

    Мы хотим, чтобы платформа была прочная, грузоподъёмная, с хорошими проходимостью и дорожным просветом (клиренсом). Мы хотим получить универсальную платформу, чтобы каждый раз не делать новую – практика жизни, правда, обычно доказывает иное – но так многие разработки начинаются, это нормальное и здоровое стремление. Какой складывается образ универсальной платформы исходя из требований, изложенных выше? Наверное, это металлическое шасси, четыре двигателя с хорошей мощностью и большие колёса. Очевидно, что лучше двигатели закрыть в отдельный закрытый отсек. В этот двигательный отсек неплохо было бы убрать драйвер для двигателей, батареи питания и какую-то силовую электронику. Например, те же DC/DC преобразователи напряжения, если они присутствуют. Батарейки менять не хочется, так же, как и не хочется вытаскивать аккумуляторы для подзарядки – всё внутрь платформы и пусть она будет сама уметь подзаряжать аккумуляторы. Для дополнительного оборудования можно будет установить металлические стойки и организовать «второй этаж» на платформе.

    В первую очередь я поделил процесс создания полноценного робота на две части – создание какой-то универсальной платформы и создание робота на базе этой универсальной платформы. Это позволяет не думать о роботе в целом, продумывая только стык этих двух частей. Далее будет идти речь только о платформе.

    Второй важный момент – деление самой платформы на две части. Первая часть уже описана – двигатели и питание. Но двигателями нужно управлять. Устройство управления будет, очевидно, на базе какого-нибудь микроконтроллера – убирать его внутрь двигательного отсека или нет? Соблазн – сделать вообще полностью готовую автономную платформу. Но рациональность говорит о том, что микроконтроллер чисто только для управления двигателями плюс какой-то интерфейс для получения команд – это расточительный расход вычислительного ресурса. Поэтому лучше обособить эту часть от двигательно-силового отсека.

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

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

    Двигатели и питание


    После всех этих размышлений начался подбор комплектующих для платформы.
    Поизучав предложения, я выбрал двигатели семейства JGA25-370.

    Судя по описанию на эту серию двигателей, они имеют диапазон рабочих напряжений 3-36 В, номинальных напряжений 6-24 В. Эти двигатели выпускаются с разными скоростями, редукторами и, соответственно, имеют различные крутящие моменты (0,1-10 кг*см). Размер и места крепления у всей серии одинаков, поэтому мы получаем хорошее универсальное решение в плане будущих модификаций — для более тяжелой и тяговитой платформы, например, можно поставить двигатели с более низкой скоростью, но большим крутящим моментом. Типизированные номиналы рабочих напряжений для двигателей 6, 12 и 24 В. Важный вопрос — какой номинал выбрать?

    В связи с выбором питания двигателей встаёт вопрос организации автономного питания всей нашей платформы. Батарейки и аккумуляторы типоразмеров АА или ААА я использовать не хотел. Хотелось использовать действительно ёмкие аккумуляторы. Я выбрал литий-ионные аккумуляторы типоразмера 18650, ёмкость которых варьируется от 1000 мАч до 3500 мАч. У меня уже есть положительный опыт работы с ними, хорошее устройство для заряда, да и сами аккумуляторы активно используются в быту, то есть для меня это не новинка.

    Литий-ионные аккумуляторы имеют достаточно большое количество циклов заряда/разряда, быстрое время заряда относительно большим током, отсутствует эффект памяти (хотя по некоторым данным он, хоть и незначительный, но есть), низкий уровень саморазряда, меньший вес по сравнению с кислотными или щелочными аккумуляторами, бóльшую ёмкость по сравнению с NiMH аккумуляторами. Однако нужно помнить, что такие аккумуляторы не любят чрезмерный нагрев (вероятность взрыва) или чрезмерное охлаждение (уменьшение ёмкости). Их нельзя глубоко разряжать, очень быстро заряжать или очень быстро разряжать (высокотоковые аккумуляторы рассматривать не будем). Если аккумулятор будет сильно разряжён, он, наверняка, выйдет из строя с вероятностью разгерметизации при попытке заряда. Если будет нарушена герметичность аккумулятора, то при сильных токах есть вероятность воспламенения лития, а потушить такой аккумулятор водой уже не получится – литий вступает в реакцию с водой, образуя щелочь и водород. К чему все эти страхи? К тому, что надо понимать: использование таких аккумуляторов – дело серьёзное (помним про периодический опыт от Samsung).

    Номинальное напряжение одного литий-ионного элемента 18650 составляет 3,6-3,7 В. Полностью заряженный элемент выдаёт 4,1-4,2 В. А вот с минимальным напряжением сложнее – конечное напряжение разряда зависит от типа аккумулятора и эта цифра может колебаться в пределах 2,6-3,2 В. Разрядить можно и ниже, но это верный путь к быстрой деградации элемента питания. Я решил загрубить оценку выдаваемого аккумулятором напряжения диапазоном номинал-максимум. Тогда получается, что сборки из двух, трёх и четырёх последовательных аккумуляторов дают нам диапазоны 7,2-8,4 В, 10,8-12,6 В, 14,4-16,8 В. От такой сборки нам нужно получить два напряжения – какое-то напряжение для питания двигателей и 5 В для питания электроники. Сборкой из двух аккумуляторов можно запитать двигатели на 6 В, использовав понижающий DC/DC преобразователь, но разница между минимальным значением напряжения (при разрядке аккумуляторной батареи до номинала это будет 7,2 В) и 6 В будет порядка 1,2 В, что может быть недостаточно для стабильной работы понижающего DC/DC преобразователя – во избежание проблем, необходимо иметь разницу напряжений между его входом и выходом не менее 2 В (на самом деле может быть и меньше для low dropout преобразователей, но на них не будем ориентироваться). Нам вполне подходит сборка из трёх элементов, необходимые напряжения мы получим путём применения понижающих DC/DC преобразователей. Двигатели можно запитать и на 9 В, тогда в худшем случае мы получим разницу 1,8 В, что должно быть вполне достаточно. Сборка из четырёх элементов так же подойдёт, но нужно понимать, что дополнительный аккумулятор – это лишний вес и занимаемое место, хотя и большая энергоёмкость всей батареи.

    Второй путь организации питания – использовать параллельные соединения тех же аккумуляторов и повышающий DC/DC преобразователь. Тогда с 3,6-4,2 В напряжение можно повысить до 5 В для электроники и до 6-9 В для двигателей. Кажется, что ёмкость такой аккумуляторной сборки легко варьировать путём добавления новых элементов, однако не стоит забывать, что используемые аккумуляторы должны иметь схожие ёмкость и внутреннее сопротивление.

    Для зарядки/разрядки последовательных или параллельных аккумуляторных батарей существуют специальные платы-контроллеры. Контроллеры защиты защищают аккумуляторную сборку от чрезмерного заряда или разряда (контроль напряжения), короткого замыкания, превышения допустимого тока разряда. При использовании таких простых плат, требуется внешний источник питания с ограничением зарядного тока. Контроллеры заряда/разряда самостоятельно умеют заряжать аккумуляторы по методу cc/cv с ограничением зарядного тока. Продвинутые контроллеры для последовательного соединения аккумуляторов так же могут обеспечивать индивидуальный заряд для каждого аккумулятора – производят балансировку элементов аккумуляторной батареи.

    Я выбрал последовательную схему соединения аккумуляторов с использованием платы защиты и внешним зарядным устройством. В будущем такую простую плату контроля можно заменить на контроллер заряда с балансировкой. Хотя, при параллельном соединении балансировка не требуется, нужно учитывать, что при сильном износе какого-то одного аккумулятора, контроллер обнаружить это не сможет и это может быть чем-то чревато. Стоит учитывать также тот факт, что режимы работы каждого аккумулятора будут другие. Например, при съёме одной и той же мощности, аккумуляторам при параллельном соединении придётся отдавать бóльший ток, чем при параллельном соединении.

    Следовательно, подойдут двигатели с номинальным напряжением 6 В и рабочим диапазоном 3-9 В. Я выбрал двигатель со скоростью 281 об/мин и потреблением, в режиме холостого хода, 80 мА. Под нагрузкой скорость проседает до 238 об/мин, ток возрастает до 380 мА, при этом двигатель выдаёт мощность в 2 Вт и развивает крутящий момент в 0,5 кг*см. При стопоре двигателя крутящий момент возрастает до 4 кг*см, а ток до 900 мА. Все эти характеристики были взяты из таблички, выложенной на сайте одного из продавцов товара, так как нормального «даташита» мне найти не удалось.

    Корпус и сборка ходовой


    Двигатели я заказал следующие.



    Если посмотреть на фотографию, то можно увидеть шлицы на валах, выступающих из двигателей. Для этих двигателей был найден комплект муфт и колёс.



    Колеса диаметром 80 мм, резина мягкая, шипованная.




    Само основание я собирался изготовить из широких алюминиевых уголков (или чего-то подобного что можно найти в строительных магазинах) с помощью которых сделать «бортовой» каркас, который закрыть какими-то легкими, прочными, металлическими пластинами. В нужных местах сверлятся отверстия и нарезается резьба по мере необходимости. Однако сначала я решил поискать что может предложить китайская промышленность. И нашел кит — комплект шасси для конструирования робота, который содержал в себе сам корпус, вышеупомянутые двигатели, муфты и колёса, а также батарейный отсек для батареек AA, переключатель питания, гнездо питания и крепёж. Сам корпус имеет множество отверстий, что по логике делает его легче и их наличие должно минимизировать объём слесарных работ.




    Прикинув размеры и объём внутреннего пространства (параллельно выбиралась электроника для платформы, которая и должна была поместиться в этот корпус), я заказал этот кит. На пришедших двигателях, как можно видеть выше, почему-то написано JGA25-370-9v-281rpm. Почему именно 9v, когда номиналом этой подгруппы является 6 В, я не понял, но, наверное, китайцам виднее, что писать, чтобы лучше продавалось.

    Сам корпус весит почти 400 граммов. Из какого материала он изготовлен, затрудняюсь ответить, но на чистый алюминий непохож.






    Снимаем крышку и устанавливаем двигатели. Отверстия под двигатели имеют диаметр как раз под винты М3, не оставлено никакого запаса на юстировку положения, но, надо отдать должное, это не доставило проблем — отверстия четко совпадают с резьбой на корпусе двигателей.





    Устанавливаем муфты.




    И прикручиваем колёса.




    Получилась готовая платформа с дорожным просветом порядка 23 мм.



    Вес «холостого» шасси составил чуть больше килограмма. Помните картинки с замером массы отдельных деталей? 393+(58+85+20)*4 = 1045 граммов. Всё в сборе весит 1057 граммов. 12 граммов добавили 16 болтиков.



    Вот такая получилась, вполне симпатичная, платформа.



    Электрическая схема


    Тут стоит пояснить важный момент, почему именно этот кит. Дело в том, что если мы изготавливаем корпус сами, то его внутренний объём можно сделать произвольным. Покупной же корпус предоставляет нам строго фиксированный объём, в который должно всё поместиться. В идеале ещё и запас остаться. Это нужно учитывать изначально и понимать: поместится ли нужная начинка именно в этот корпус или нет и нужно будет, или электронику менять, или корпус другой выбирать. Внутри корпуса будут установлены: двигатели, аккумуляторная батарея, драйвер для двигателей, плата питания, на которой также будет располагаться какая-то электроника – те же преобразователи напряжения.
    Вроде бы понятно, что именно у нас будет внутри. Но как это всё будет соединяться? Если у вас есть идея, но вы не можете создать её образ – у вас нет идеи. В электронике получается так, что образа должно быть два – визуальный, который уже вполне представляем, и электрический (на самом деле есть ещё алгоритмический – когда расписывается поведение устройства, обусловленное его аппаратными и/или программными (функционал прошивка) возможностями).

    Я трачу достаточно много времени в пути на работу. Вообще говоря, при правильном подходе, далекую дорогу можно обратить в плюс, читая книги, смотря/слушая научно-популярные программы или аудиокниги, которые бы никогда не прочитал, не послушал и не посмотрел. Именно благодаря таким вот условиям, я стал фанатом и отслушал все рассказы Модели для сборки (чтобы не было вопросов в комментариях — статья на википедии). Роботоблудие не стало исключением и принципиальную схему платформы я продумал и нарисовал в дороге на планшете.

    Схема нарисована в OneNote. Картинка кликабельна. Да, мне стыдно – принципиальная схема выглядит непринципиально. Последние три недели я никак не могу уделить время на доводку статьи и уже встал вопрос – публиковать вообще что-то или отложить «на потом». Решил опубликовать так, иначе «на потом» может быть чревато. Нарисую нормальные схемы – заменю картинки. С другой стороны, такое оформление выглядит в стиле оригинального DIY. На работе или дома, когда формируется какая-то идея сначала берётся обычный лист бумаги и обычный карандаш…




    Давайте посмотрим по принципиальной схеме, что и с чем у нас будет соединяться. К контроллеру литий-ионных аккумуляторов D1 подключаются три аккумулятора формата 18650. У всей схемы «общая земля», которой и подключен выход P- контроллера D1. Выход P+, через предохранитель FU1 и выключатель SW, подключен к входам DC/DC преобразователей D3 и D4. Преобразователь D3 формирует напряжение для двигателей, D4 – для питания всей электроники. Выходы этих преобразователей подключены к драйверу двигателей D5, к которому подключены двигатели. К каналу МА подключены двигатели ML1, ML2 левого борта, а к MB – MR1, MR2 правого борта. Драйвер двухканальный, это значит, что можно будет управлять двумя группами двигателей (каналы А и В), но не индивидуально каждым двигателем. Для управления скоростью и направлением вращения двигателей предназначены порты ENA, ENB, IN1-IN4. Резистивная цепочка, формирующая напряжение Vbat’ подобрана так, чтобы сформировать в диапазоне 0…5 В телеметрию напряжения Vbat аккумуляторного блока. Если Vbat = 13 В (чего не должно быть, так как аккумуляторный блок может выдать максимум 12,6В, но я немного перестраховался), то Vbat’ = 3,94 В (то есть значение гарантированно не выйдет за предел 5 В). Ток, протекающий через резистивную цепочку при 12 В будет равен 3,6 мА, и эти потери я посчитал допустимыми (порядка 0,1% при ёмкости аккумуляторной батареи 3000 мАч). К входу контроллера D1 подключается гнездо для подачи внешнего питания. Но, мы видим по схеме, что оно подключено через реле D2.

    Сначала хочу пояснить наличие резистора 10 кОм, подтягивающего один из выводов в разъёме питания к напряжению 5 В. Разъём питания у нас с тремя выходами. Пара выходов передают напряжение источника питания. Третий выход является информационным. Он замкнут на отрицательный выход (он у нас подключен к «земле»), если штекера в гнезде нет и размыкается, если штекер вставлен в гнездо. Таким образом, мы получаем сигнал телеметрии Vinon’ о подключении источника питания: если напряжение Vinon’ = 0, то внешнее питание не подключено, если Vinon’ = 5 В – подключено. Резистор 10 кОм подтягивает этот выход к 5 В. При подключении штекера через резистор будет протекать ток 0,5 мА, что вполне приемлемо.

    При подключении внешнего источника через нормально-замкнутое реле D2 и предохранитель FU1 аккумуляторы начнут заряжаться. Нормально-замкнутое реле – это значит – его выводы всегда замкнуты и размыкаются только при подаче напряжения на управляющий контакт. Зачем реле D2? Допустим, у нас нет этого реле. Если блок питания подключили к платформе, но забыли его включить в розетку – как плата микроконтроллера узнает — заряжается сейчас аккумуляторный блок или нет? А, если источник питания включен в розетку, но не выдаёт напряжение? Или всё работает, но источник питания выдаёт только 10В вместо положенных 12В? А, если я такой источник (который только 10 В выдаёт) подключил к аккумуляторной батарее, которая еще не разряжена до конца и выдаёт 11 В, то как я узнаю – эти 11 В формирует аккумуляторный блок (который на самом деле выше 10В не выдаёт) или внешний источник? Для таких ситуаций и был продуман алгоритм, для которого потребовалось реле. О подключении внешнего источника питания мы узнаем по телеметрии Vinon’. Отключаем реле и смотрим на телеметрию Vin’. Если она устраивает и это напряжение находится в ожидаемом диапазоне, то включаем реле и сигнализируем о процессе заряда. Если не устраивает – не включаем реле и сигнализируем о неисправности. Процессом анализа и индикации пусть занимается бортовая плата управления, а не платформа. Для этого мы передадим ей все необходимые напряжения и сигнал управления для реле Vinoff’. Управляющий вход модуля реле через резистор 10 кОм подтягиваем к 5 В, обеспечивая постоянное включение реле. При подаче 0 В на этот вход реле отключится.

    Но почему, именно, допотопное механическое реле? Ведь можно поставить MOSFET транзистор. Такая идея была, но от неё пришлось отказаться. Современные МДП транзисторы обладают низким сопротивлением (десятки миллиом) в открытом состоянии и при протекании тока в 2-5 А на нём не будет сильно значимого падения напряжения и, как следствие, нагрева – небольшую мощность способен рассеять сам корпус транзистора даже без радиатора. Но это всё касается схемы, в которой такой цифровой ключ будет управлять подключением источника питания к пассивной нагрузке. Мы же ставим транзистор между двумя источниками, в результате чего разница напряжений между стоком и истоком может быть существенна, что будет приводить к повышенному тепловыделению и транзистор будет сильно греться. Так же, для открытия или запирания транзистора нужно будет делать цепь управления (драйвер), потому что уровень управляющего напряжения от платы микроконтроллера 5 В, что недостаточно для создания разницы напряжения затвор-исток для управления транзистором (для управления транзистором, например, IRFZ44N нам придётся подать на его затвор 8-12 В для того, чтобы его открыть). То ли дело – готовый модуль реле, который надо просто подключить и который, если уж замкнут, то гарантированно соединяет выход с входом без всяких заморочек.

    Таким образом, у нас получилась не просто коммутационная плата, а полноценная плата питания. На плате устанавливаются DC/DC преобразователи, резистивные цепочки, предохранитель и куча разъёмов для подключения электроники. Структурно можно выделить два разъёма. Разъём CON1, к которому будут подключаться батарейный блок, переключатель/кнопка питания, разъём питания, модуль реле, двигатели, плата драйвера двигателей – вся периферия внутри платформы. И разъём CON2, назначение которого – соединение с платой управления. На этот разъём выводятся сигналы телеметрии и управления, напряжения 5 В, а также полезно «прокинуть» напряжение с аккумуляторного блока Vbat – мы даём возможность «уровнем выше» организовать свои каналы питания с различными напряжениями, например, 6 В для питания сервоприводов.

    Электроника шасси


    Электроника выбиралась параллельно с разработкой электрической схемы устройства.



    Гнездо питания с тумблером пошли в дело из полученного комплекта шасси. Были выбраны и приобретены драйвер для двигателей на базе микросхемы L298N, платы DC/DC преобразователей XL4005, безымянный модуль реле, батарейный отсек и монтажная плата размерами 50х70 мм и шагом отверстий 2,54 мм.

    Помимо этого, нам ещё понадобятся следующие материалы.



    Вверху фотографии можно увидеть несколько длинных штыревых разъёмов с шагом 2,54 мм, а также гнёзд, ниже – металлические контакты на кабель, левее – гнёзда для них, справа – винты, гайки и шайбы М2. Разъёмы на плату и кабель в разных магазинах называются по-разному. В силу исторических причин я называю штыревые разъёмы для платы PLS, гнёзда на плату – PBS, разъёмы на кабель – BLS. В интернете на заграничных сайтах такие разъёмы ищутся по запросу вида «2.54mm connector» или «dupont connector». Помимо этого, потребуется различный расходный материал – припой, флюс, провода и так далее, а также набор ручных инструментов – кусачки, пинцет, отвёртки и прочее – всё это обычно есть у тех, кто хоть как-то занимается DIY (Do It Yourself – сделай это сам).

    Прежде, чем заказать электронику и корпус, я прикинул — выбранная электроника должна без проблем уместиться во внутреннем пространстве. Наступило время это проверить: расставляем электронику и отмечаем будущие посадочные места.




    Теперь примемся за подготовку плат.

    Начал я с аккумуляторного блока. Контроллер литий-ионных аккумуляторов был «посажен» на термоклей и к нему припаяны выводы контактов в соответствии с принципиальной схемой. Я думаю, читателям будет интересно, что и каким инструментом делалось, поэтому в конце статьи, под спойлером, я разместил картинки некоторого используемого оборудования со своими краткими комментариями. Термоклей наносился с помощью термопистолета. Однако, перед этим мне пришлось провести работу по, так скажем, повышению надежности этого отсека. Предупрежу всех, кто соберётся что-то делать – лучше не допускать моей ошибки и взять более прочные батарейные отсеки. Одно время я никак не мог найти такие отсеки в розницу и когда нашёл, то набрал их немало на радостях по простоте душевной. А с ними всё не так просто. Потому что в этом отсеке аккумуляторы с плоскими, невыступающими плюсовыми площадками просто не достают до контакта. Кроме этого, все подпружиненные контакты вращаются, контакт плохой. Поэтому пришлось ввернуть болтики М2, откусить лишнее, навернуть гайки и затянуть для улучшения контакта. Но мне этого показалось мало, и я ещё и хорошенько пропаял все соединения. Потому что, если что-то делается, то это должно быть надёжно, чтобы это в будущем не доставляло проблем и к этому потом не возвращаться снова.

    Следует заметить, что для литий-ионных аккумуляторов используется обычный контроллер без балансировки. Это значит, что при заряде одного из трёх аккумуляторов, контроллер наверняка прервёт заряд всех аккумуляторов. Фактически – это просто плата защиты от низкого разряда и перезаряда аккумуляторных батарей и контролем тока разряда. Поэтому желательно использовать аккумуляторы с одинаковой реальной ёмкостью. Если использовать контроллер с балансировкой, то подбор по ёмкости менее критичен и аккумуляторные батареи будут использоваться более эффективно, но такие контроллеры стоят дороже и занимают побольше места. Как же подобрать аккумуляторные батареи с одинаковой реальной ёмкостью? Ведь, купив одинаковые аккумуляторы из одной и той же серии даже от брендов, ёмкость может различаться на 5-10%, а китайские аккумуляторы с надписями 6000-8000 мАч, вообще, представляют собой аккумуляторы с неизвестной ёмкостью. Для замера реальных ёмкостей я использовал довольно популярное в своей среде зарядное устройство OPUS BT-C3100. С помощью него было проверено 12 приобретённых аккумуляторов и отобраны три, разброс ёмкостей которых минимален и не превышает нескольких процентов. Ёмкость аккумуляторов LG LGABC21865 была заявлена в 2800 мАч, но в реальности колебалась в диапазоне 2400-2500 мАч (тестировал на токе 700 мА).

    Небольшое отступление в виде размышления. Зарядное устройство посчитало нам ёмкость аккумуляторов с учётом их заряда до 4,2 В и разряда, если я не ошибаюсь для OPUS BT-C3100, до 2,8 В. У нас же аккумуляторы не должны разряжаться меньше номинала в 3,5-3,7 В. То есть, наша рабочая ёмкость батарей сильно ниже измеренной. Это нужно учитывать. Возможно, в будущем, стоит подумать об аккумуляторном блоке из четырёх аккумуляторов. А можно ли будет просто заменить аккумуляторный блок и блок питания для его заряда? Давайте прикинем. У нас получится диапазон напряжений 14,4-16,8 В. Преобразователи напряжения работают с входным напряжением до 32 В. Резистивные делители нам дадут диапазон напряжений сигналов телеметрии 4,3-5,1 В, что немного выходит за верхний диапазон 0-5 В. Но это можно парировать на уровне платы управления – если напряжение телеметрии 5 В, то аккумуляторный блок через некоторое время будет почти заряжен. С другой стороны, если понизить напряжение на двигатели до 6-7 В, можно сильнее разряжать имеющийся аккумуляторный блок и более эффективно использовать аккумуляторные батареи – в этом случае нужно будет только лишь подстроить один преобразователь напряжения. На первый взгляд, есть простор для будущих исследований вообще без изменения аппаратной части, а уж, как именно интерпретировать сигналы телеметрии в зависимости от установленного аккумуляторного блока – это пусть решается на уровне платы управления, то есть, пока об этом можно не думать.

    Выходные провода с получившегося аккумуляторного блока я зачистил специальными клещами (стриппер) и обжал в металлические контакты, используя обжимные клещи (кримпер), для надёжности пропаял и надел на них пластиковые корпуса, получив BLS разъёмы. При пайке использовалась паяльная станция, в качестве припоя – ПОС-61 без канифоли, в качестве флюса – безотмывочный FluxPlus NC-D500.





    После сборки аккумуляторного блока и установки в него аккумуляторных батарей, он выдавать ничего не будет. Так устроены многие контроллеры литий-ионных батарей – они обесточивают нагрузку при коротком замыкании, сильном разряде, превышении разрядного тока. Для того, чтобы «сбросить» защиту и привести аккумуляторный блок в рабочий вид его нужно подать 12-12,6 В на контакты +P/-P. Тоже самое надо сделать после первого подсоединения аккумуляторных батарей к контроллеру. После этого можно убедиться, что блок выдаёт напряжение, если аккумуляторы правильно подсоединены к контроллеру.

    Для заряда подобных сборок аккумуляторов существуют блоки питания с выходным напряжением 12,6 В (3х4,2 В). С таким блоком питания аккумуляторы будут использоваться более эффективно, хотя можно использовать и источники питания номиналом 12 В. У меня уже имеется такой блок питания с выходом 12,6 В и током 5 А. Если же подобный источник будет приобретаться, то стоит убедиться соответствует ли он заявляемым характеристикам. Простейшая проверка – проверка нагрузочной способности. Для этого я использовал керамические резисторы номиналом 1 Ом 10 Вт и 4,7 Ом 10 Вт. Собрав из таких резисторов сборку сопротивлением 2,5 Ом, я подключил к ней блок питания и замерил напряжение на его выходе. При расчётном токе в 12,6/2,5 = 5 А мой блок питания выдавал 12,6 В – это отличный результат. Китайские блоки питания, на которых написано нечто, типа – 12V3А, нередко начинают «проседать» на 10-20% при нагрузке всего около 1 А.




    По аналогии были подготовлены переключатель и гнездо питания.



    С модуля реле с помощью фена была снята клеммная колодка и припаяны PLS контакты. Для подключения этого модуля к плате питания я изготовил провода – зачистил, обжал и пропаял провода питания (через которые будет соединяться разъём питания и аккумуляторный блок) сечением 18-20 AWG. А для управления использовал имеющиеся у меня провода, с более тонкими жилами, которые легко ищутся по названию «Dupont».




    То же самое было проделано с драйвером двигателей.




    На DC/DC преобразователи были напаяны «ножки». Стоит упомянуть, что эти контакты сделаны из такого металла, который хорошо паяется только активным флюсом. Тогда вместо FluxPlus я использую ЛТИ-120 с последующим протиранием мест пайки тряпочкой, смоченной изопропанолом, для удаления остатков флюса.



    Теперь изготавливаем нашу плату с электроникой. Для начала неплохо представить себе в целом как и что будет соединяться на плате. То есть попробовать нарисовать монтажную плату.

    [Плата питания]



    Догадайтесь, где я придумывал и «вылизывал» эту плату? Мы видим два разъёма на плате, два преобразователя напряжения. Появился дополнительный джампер (снимаемая перемычка), который можно установить, исключив предохранитель из электрической схемы – я это сделал специально из-за банального отсутствия предохранителя на момент изготовления платы.

    Распайка платы – работа довольно нудная и кропотливая. Для питания я использовал провода сечением 18-20 AWG, для остальных сигналов — 26-30 AWG. Почему именно макетная плата и морока с проводками? Потому что у нас ещё только первый прототип. Что-то может меняться, поэтому перепаять проводки проще, чем резать дорожки и напаивать всякие перемычки на готовой печатной плате. Сделать печатную плату нужно время – развести, сделать маску, протравить, рассверлить, залудить, распаять – вряд ли для этого потребуется меньше времени, чем изготовить плату с «проводками». Хотя печатная плата будет надёжнее, а выглядеть — профессиональнее.

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






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

    После проверки перед сборкой следует убедиться, что плата будет нормально работать при подключении всей периферии. Для этого нужно сначала подключить аккумуляторный блок, переключатель питания и щелкнуть переключателем. Должны загореться светодиоды на преобразователях напряжения и ничего не сгореть. Пока ничего не подключено необходимо отрегулировать выходное напряжение преобразователей. Затем отключается питание, подключается модуль реле и снова подаётся питание. Таким образом, поэтапно и под контролем подключается вся периферия.

    Установка и подключение электроники платформы


    Электроника готова. Теперь необходимо её установить. Помните, отмечались посадочные места электронных плат? Аккумуляторным шуруповёртом в нужных местах сверлятся отверстия. Затем шлифуются минидрелью с шлифовальной насадкой. В отверстия вкручиваются винты М2. Под винты и гайки обязательно подкладываются шайбы. Кроме того, я накрутил по второй гайке – контргайка обеспечит более надежное резьбовое соединение и уменьшит вероятность его раскручивания. Мы же машинку делаем.



    Замечу, что расстояние между двумя соседними двигателями довольно большое. Это важный момент, на который стоит обратить внимание по следующей причине. Дело в том, что выбранные двигатели без обратной связи. Просто подаём на них определённый уровень напряжения и они крутятся с определённой скоростью. Но характеристики двигателей могут отличаться, что наверняка будет приводить к проблемам при прямолинейном движении. Если разброс двигателей мал и робот будет управляться только оператором, который всегда может подкорректировать движение, то это может быть несущественной проблемой. Но если разброс значимый или робот должен будет проехать большое расстояние «по прямой» в автоматическом режиме, то необходимо предусмотреть обратную связь. Существует идентичная по конструктиву серия двигателей GM25-370, на которых уже установлены датчики Холла. Что это такое? С обратной стороны двигателя, на удлинённый вал, крепится диск, с размещённым на нём магнитом, который будет влиять на датчик Холла. После каждого полного оборота диска мы получаем импульсный сигнал, обрабатывая который можно установить количество оборотов в минуту. Таким образом, в нашу платформу закладывается довольно серьёзный задел на будущее: возможно установить двигатели с обратной связью, подключить их к плате питания, которая запитает датчики на них, а сигналы телеметрии передать на плату управления — система управления может автоматически выравнивать скорость двигателей.




    Провода к двигателям я припаял в соответствии с метками на них – на каждом двигателе около одного из двух контактов была нанесена красная точка. После получения двигателей я проверял их, но не обратил внимания на корректность этой маркировки. Один из двигателей, кстати, пришёл с браком и совсем не прокручивался, продавец любезно мне выслал замену, которая добиралась до меня не менее месяца. Впоследствии оказалось, что у одного из двигателей маркировка была перепутана, но это не беда – достаточно просто поменять полярность подключения этого двигателя к плате питания. Забегая вперёд, скажу, что такая же ситуация случилась и с подключением «бортов» — при подаче команды «вперёд» колёса по правому борту вращались вперёд, по левому – назад. Это исправляется так же изменением полярности подключения нужного канала драйвера двигателей к плате питания. Изменение полярности подключения – не надо ничего перепаивать или переделывать, нужно просто поменять провода местами.

    Для того, чтобы исключить электрический контакт плат электроники с корпусом я вырезал из блистерной упаковки пластиковые пластины на дно платформы.



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




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




    Изолируем дно в местах установки электронных плат. На металлическую пластинку в аккумуляторном блоке тоже вырезаем и кладем полоску пластика, чтобы исключить даже царапание корпуса аккумулятора о головку винта, литий – это же серьезно!




    Устанавливаем и прикручиваем электронные платы и разъём питания.








    Кошмар, сколько проводов… Подключаем периферию к плате питания.




    Электроника управления платформой


    Как Вы понимаете, в принципе, задача выполнена. Платформа получена, всё довольно удачно получилось. Для управления платформой можно использовать любой микроконтроллер, ПЛИС, платы Arduino, Intel Galileo и прочее.

    Я выбрал плату Arduino Nano, нашел к ней недорогую и удобную плату расширения для подключения периферии и модуль bluetooth. Базовая идея – управление нашей платформой с смартфона через bluetooth. Плата расширения, своим обилием контактов для подключения внешних устройств, позволит в будущем беспроблемно подключить будущую периферию робота.




    Теперь нам необходимо разработать и сделать монтажную плату для этой электроники. Будем делать «бутерброд»: монтажная плата, на которую устанавливаются модуль bluetooth и плата расширения, в которую, в свою очередь, устанавливается плата с микроконтроллером.



    По сравнению с платой питания эта плата практически чисто коммутационная. В центре к 18-контактному трёхрядному разъёму подключается шлейф, соединяющий эту плату управления с платой питания. С этого разъёма сигналы разводятся на нужные контакты платы расширения, которые потом попадают на нужные, заранее выбранные, контакты микроконтроллера. Также на отдельные контакты на плате выводится напряжение 5 В и Vbat. На плате подведено питание к модулю bluetooth, его входы Rx/Tx соединены с входами Rx/Tx платы Arduino Nano через плату расширения. На плате располагается съёмный двухполярный светодиод, предназначение которого – индикация всех процессов, связанных с питанием. Светодиод может формировать зеленое и красное постоянное свечение, мигать с заданной частотой – этого должно хватить для индикации нормального напряжения аккумуляторного блока, его разряда, индикации процесса заряда и сообщения исправности подключенного источника питания.
    Для того, чтобы не запутаться, что и куда нужно подключать, я схематично нарисовал плату Arduino Nano и распределил сигналы для нее.



    Порты Rx/Tx занимает модуль bluetooth, который работает по протоколу UART. Сигналы IN1-IN4 по возможности заведены на цифровые порты – полярность этих сигналов будет определять направление вращения двигателей, а ENA/ENB на те порты, которые позволяют выдавать ШИМ сигналы – эти сигналы будут задавать скорость вращения двигателей. Значения сигналов телеметрии платформы будут оцифровываться аналоговыми входами A0-A3 платы Arduino Nano. Светодиод занимает порты A4 и A5, причём он подключен через джамперы. Дело в том, что именно эти два порта нужны для простой организации протокола I2C и, если он нам понадобится, мы просто можем снять джамперы. Светодиод же можно «перекинуть» на другие свободные порты или подключить к освободившимся портам А4 и А5 модуль расширения портов (например, на базе микросхемы PCF8574T – даст дополнительных восемь цифровых портов ввода/вывода, управление модулем осуществляется как раз по протоколу I2C), к паре выводов которого и подключить светодиод. В результате такого распределения подключения сохранились возможности беспроблемного подключения устройств SPI, оцифровки ещё двух аналоговых сигналов, выдачи до четырёх ШИМ сигналов (например, для управления сервоприводами). В общем-то свободных сигналов хотелось бы больше, но их количество можно увеличить, используя PCF8574T. В конце концов, можно использовать еще один Arduino Nano или заменить его на более подходящую для требуемых задач платформу – определённый минимум данное решение вполне обеспечивает.

    Также наша плата обеспечивает простое подключение к питанию: присутствуют контакты питания 5 В и напряжения с аккумуляторного блока (до 12,6 В).

    Стоит отметить один нюанс используемой платы расширения для Arduino Nano. В принципе, плата расширения позволяет завести на неё Vbat. На плате расширения установлен преобразователь напряжения, который понижает входное напряжение до 5 В и подаёт его на плату Arduino Nano, преобразователь которой понижает его до 3,3 В, и уже это напряжение снимается с платы Arduino Nano и разводится по соответствующим контактам платы расширения. Однако, я не стал так делать и завёл 5 В на соответствующий контакт платы расширения. Кроме этого, контрольный светодиод на плате расширения вообще не светился, если не установлена плата Arduino Nano, то есть данная плата расширения без Arduino Nano, видимо, фактически неработоспособна. В причинах я разбираться не стал, но этот момент отметил.

    Изготавливаем эту плату управления.





    Устанавливаем на неё электронные платы.





    Подготавливаем посадочные места под нашу плату. Заодно устанавливаем переключатель.




    И всё собираем.




    Теперь нужно изготовить кабель для соединения двух плат. Разъёмы питания так же пропаиваем для надёжности. Правильно и очень внимательно проверяем всё. 12 В должно приходить на 12 В, а 5 В – на 5 В. На картинках монтажных плат питания и управления изображён «вид сверху», то есть, если перевернуть платы, то с нижней, распаечной, стороны плат контакты меняются местами – это надо учитывать при изготовлении кабеля и проброса соответственных проводов в нём. Разъёмы я изготовил просто: сначала набирался ряд проводов с BLS разъёмами и обматывался на 2 раза скотчем. Потом собирались все два/три ряда вместе и снова туго обматывались скотчем. Получался целый и монолитный разъём. В неиспользованные контакты разъёма просто помещались пластиковые BLS разъёмы без контактов.

    После изготовления кабеля с платы управления снимаются все электронные платы, и она проверяется с помощью мультиметра так же, как и плата питания. Соединяем плату управления с платой питания и подаём питание. С помощью мультиметра внимательно проверяем контакты питания всех модулей, любопытствуем напряжениями сигналов телеметрии – лишний раз убеждаемся, что всё разведено правильно. Можно этого и не делать, самоуверенно всё собрать, подать питание и обнаружить что каким-то, конечно же мистическим, образом перепутаны провода 5 В и Vbat и у нас сгорела плата Arduino и модуль bluetooth. Но лучше не повторять чужие ошибки.

    На фотографии можно видеть, что один из красных проводов питания подкрашен серебристым цветом. Это обозначение проводника, который передаёт напряжение Vbat. Когда собирается устройство, полезно делать «ключи» для подключения. Например, специально не распаивать на разъёме один PLS контакт, а ответное гнездо в кабеле портить или забивать кусочком изоляции – в этом случае реализуется «защита от дурака», так как тогда такой кабель на соответствующий разъём на плате можно установить только безошибочно просто потому, что он иначе не установится (метод не даёт гарантии 100% — в интернете полно картинок, когда особо настойчивым индивидуумам всё же как-то удаётся обходить такую защиту, применив завидное упорство и свою недюжинную силу). Я обычно подкрашиваю соответствующие контакты на разъёмах. Полезно было бы на плате питания так обозначить входные разъёмы DC/DC преобразователей и подкрасить соответствующие гнёзда на плате. Это бы исключило неправильность установки преобразователей, а если использовать несколько цветов, то это исключит перепутывание плат преобразователей, которые формируют 5 В и 9 В. Для обозначения можно использовать яркий женский лак для ногтей. Это маленькое правило сильно помогает при частой сборке/разборке разрабатываемого устройства на этапе его отладки и тестирования.





    Подключаем кабель к плате питания.




    И к плате микроконтроллера.





    Прежде чем всё собирать – снова проверяем работоспособность – щелкаем выключателем. И убеждаемся, что всё работает.
    Работают два преобразователя напряжения.



    Работает драйвер двигателей.



    На модуль реле приходит питание.



    Удивительно — всё работает. Собираем всё вместе!






    Проверяем, что после полной сборки всё тоже работоспособно.




    Вот такого симпатягу мы собрали. Завесим новорождённого.



    Получили 1,4 кг.

    Обычно, после окончания какой-то работы тот, кто её делал, понимает, как её можно сделать ещё лучше. Не стоит сразу бросаться всё переделывать, своевременно вспомнив, что лучшее – враг хорошего. Но и не стоит останавливаться на достигнутом. Практически любая работа – это 20 процентов творчества и 80 процентов рутины, которую необходимо сделать, чтобы получить готовый продукт труда. Именно рутина убивает интерес, желание, творчество. Поэтому если и не сразу что-то переделывать, то стоит подумать: а что можно улучшить в будущем?

    Я бы хотел ненадолго вернуться к началу статьи, к моменту, когда мы разделили платформу на две части и вынесли плату управления «отдельно». На тот момент это казалось весьма сбалансированным решением. Однако, смотря на обильное поле контактов на плате расширения для Arduino, мы понимаем, что добрая половина этих контактов не может быть задействована при текущей реализации платформы – мы же заняли почти половину разъёмов ввода/вывода на плате Arduino. Да и сам микроконтроллер «крутит» не просто программу для выдачи пары ШИМ сигналов на двигатели, а обеспечивает полный контроль по внутреннему и внешнему питанию всей платформы. Стоит подумать – может быть стоит микроконтроллер включить в состав двигательного отсека нашей платформы? Bluetooth «отдать» «надплатформенной» электронике, которая будет управлять устройствами робота, и продумать с ней интерфейсный стык. Можно организовать протокол UART (займёт два пина микроконтроллера) по которому будет передаваться пакет данных, содержащий направление и скорость вращения двигателей, а также общее состояние платформы… И нужно хорошо подумать над конструктивом, так как места в двигательном отсеке у нас не так много… Хотя… Если развернуть и подвинуть реле…

    Ну вот и закончилось моё длинное и местами занудное повествование. Разработано, изготовлено и собрано только «железо» – аппаратное обеспечение платформы. Следующая часть работы – программная. Но это не значит, что дальше работать нужно будет только программистом. В процессе создания прошивки для микроконтроллера и её отладки порой приходится брать мультиметр, а то и осциллограф, и разбираться какой сигнал, куда и в каком виде приходит. Обычно именно в начале этого этапа, в большей степени, проявляются ошибки и недосмотры «железячного» этапа проектирования. Наше устройство очень простое, поэтому если что-то не заработает, то ошибка быстро найдётся. А представляете каково работать с действительно сложными схемами? Там нужно быть гораздо внимательнее и аккуратнее. Так же необходимо будет организовать интерфейс управления через bluetooth с смартфоном – придумать какой-то протокол информационного взаимодействия робота с телефоном. И разработать программное обеспечение, с помощью которого комфортно и удобно управлять роботом. Но это всё – уже другая, отдельная история.

    Некоторые используемые инструменты и оборудование
    BOSCH GluePen. Клеевой пистолет. По терминологии Bosch – клеевой карандаш. Отличное мобильное решение. Работает на аккумуляторе 18650, то есть с заменой в будущем проблем не будет, а больше там ломаться особо и нечему. Быстро нагревается (15 секунд) и готов к работе, после выключения практически сразу прекращает работу – клей из него не течёт как в других термопистолетах. Нашёл применение в быту и рукоделии. Единственный минус – не такие распространённые клеевые стержни: 7 мм, высокотемпературные 150…170С (подходят стержни DREMEL GG01 и GG03).



    GROSS 17718. Инструмент для снятия изоляции (стриппер). Полный аналог известной модели KBT WS-04A, которую множество производителей передарала 1-в-1.



    HT-202A. Инструмент для обжима проводов с контактами разъёмов (кримпер).



    Solomon SL-30. Надежная паяльная станция. Напряжение питания паяльника 24В. Никелированное жало. Точный температурный контроль.



    SAIKE 8858. Он же Element 8032. Он же Yihua 8858. Он же ZHaoxin 858DH. Вариации между этими моделями есть, но исполнение, нагреватели и электроника одни и те же. Неплохой, удобный, дешевый и реально компактный паяльный фен. Покупался на импортном сайте, с последующей доработкой дешевого китайпрома: вытряхивание всякого металлического (!) мусора, отмывка флюса, пропайка контактов на плате, силовой симистор посажен на КПТ8. Пока доволен, фен – как фен, дует, температура и скорость наддува регулируется. В принципе, фен свои деньги оправдывает. Относительно недавняя покупка и пока непонятна статистика по надёжности, но подозреваю, что для нечастых работ сгодится.



    Metabo BZ 12SP. Очень старый шуруповёрт. Раритет. Такие уже, наверное, не продаются. Позволяет делать достаточно тонкую работу благодаря хорошей центровке и отсутствию биений шпинделя.



    Velleman VTHD02. Минидрель. Или как еще называют – дремель (хотя это неверно так же, как копиры называть ксероксами). Когда-то по акции был куплен комплект, польстился больше на комплект насадок, чем на саму дрель. Однако, она оказалась неплоха с доработкой по питанию. От родного блока питания работает, но под нагрузкой ей как-то тяжеловато. Года два назад, конечно же, исключительно временно, был сделан мобильный блок питания из отсека для четырёх аккумуляторов 18650 с регулируемым выходом. Минидрель стала автономной. С таким питанием минидрель стала себя чувствовать намного лучше и оказалась весьма полезным устройством в хозяйстве.




    Noble NB4000P-4. Мультиметр. Удобен тем, что провода убираются полностью внутрь. Приобретён в тяжёлые студенческие годы. То есть – давно. Провода давно отломились – пришлось «приоперировать» от другого вышедшего из строя мультиметра. Теперь провода убираться перестали. Не раз менялась батарейка и предохранитель. Работает до сих пор – удивительная надёжность при посредственной точности.



    Fluke 179. Высокоточный мультиметр. Качественный, удобный и, главное, точный инструмент.



    Получила как реклама какая-то. Хотя… почему бы и нет – где тут мои комиссионные тогда? Все эти инструменты приведены для общего информирования. В своё время, я, например, открыл для себя стрипперы, которые процесс зачистки проводов превращают из рутины в удовольствие и ничуть не жалею о покупке BOSCH GluePen. Может быть, кому-то поможет эта небольшая подборка.

    Для сборки своего робота вовсе необязательно иметь разнообразный и дорогой инструмент, хотя он, безусловно, повышает качество работы и приносит бóльшее удовольствие от неё. Вполне достаточно иметь обычный паяльник, несколько отвёрток и дрель. В конце концов, когда-то у автора этой статьи, давным-давно, в распоряжении имелись всего лишь пассатижи, молоток, пара отвёрток, медная проволока, коловорот (до сих пор где-то есть!) и два сверла, кусочки телефонных проводов и много синей изоленты (нередко — ранее использованной), этого вполне хватало, чтобы сделать простейшую машинку, которая при нажатии на кнопку самостоятельно ехала прямо.



    Основные комплектующие
    По многочисленным просьбам читателей привожу ссылки (ebay/aliexpress) на основные комплектующие. Ссылки рабочие на сентябрь 2016 года. Заказывалось всё полгода назад (февраль-март 2016 года), поэтому рекомендую поискать дополнительно — может быть сейчас можно купить по более выгодной цене.

    Шасси, двигатели, колёса, крепёж — платформа (выбор из двух цветов) + 4 * (колесо 80 мм + крепёж + двигатель(выбор из трёх скоростей))

    Обратите внимание на следующий комплект — 130 мм колесо + крепёж + двигатель с датчиком Холла

    Аккумуляторы 18650 — LG С2 18650 / 2800мАч / 3,7V / незащищённые

    Обратите внимание на ёмкие аккумуляторы (несколько раз с ними работал — у этих аккумуляторов реальная и заявленная ёмкости обычно совпадают, т.е. в них реально 3400 мАч!) — Panasonic NCR18650B 18650 / 3400мАч / 3,7V / незащищённые

    Контроллер для аккумуляторов 18650 — HX-3S-01

    Держатели для аккумуляторов лучше использовать такие — 18650 Holder 3S

    Модуль реле — Arduino Relay Module

    Преобразователь напряжения — DC/DC Step-Down XL4005

    Драйвер для двигателей — L298N H-bridge Motor Driver

    Микроконтроллерная плата — Arduino Nano

    Плата расширения для Arduino Nano — Arduino Nano IO Shield

    Модуль bluetooth — Module Bluetooth HC-06



    Опросы


    Не знаю, как у людей, которые работают, получается написать статью за два-три дня — у меня это занимает от двух до шести недель. Поэтому моя производительность не более двух статей в год. Понятно, что есть рейтинг статьи и карма автора, но хотелось бы поточнее оценить Ваше отношение к подобному материалу и его изложению, поэтому голосование в нижеприведённых опросах приветствуется. Срок действия опроса — 1 год с момента публикации.

    Only registered users can participate in poll. Log in, please.

    Вам была полезна статья?

    • 37.1%Очень — узнал много нового, интересно!85
    • 42.3%Да — узнал что-то новое.97
    • 10.4%Нейтрально — всё вы земляне копаетесь с допотопными технологиями24
    • 4.8%Скорее нет, чем да.11
    • 3.9%Нет — да это детский сад какой-то, устроили тут кружок «очумелые ручки»!9
    • 1.3%Затрудняюсь ответить или поясню в комментариях.3

    Как Вы оцените стиль изложения?

    • 61.5%Отлично — всё понятно и доступным языком написано!125
    • 27.5%Хорошо — однако стоит избавиться от жаргонов и всяких разговорных слов в текстовой форме изложения мыслей.56
    • 1.4%Никак — до сих пор мыслесловие не освоено, компьютеры вместо печатающих машинок… и что с вами, людьми, делать-то?3
    • 2.4%Плохо — слишком попсово написано, посерьёзнее надо относиться.5
    • 0.9%Ужасно — где культура речи, нормальное построение предложений… автору синтаксис, да и морфологию подучить надо!2
    • 5.9%Затрудняюсь ответить или поясню в комментариях.12

    В целом, читать Вам было интересно?

    • 91.7%Да.211
    • 4.7%Нет.11
    • 3.4%Затрудняюсь ответить или поясню в комментариях.8
    Share post

    Comments 59

      0
      Очень подробно описаны технические детали и весьма поверхностно всё, что связано с электрическими схемами. То есть по Вашей статье собрать платформу «физически» можно очень легко, даже тем, кто гвозди заколачивать с трудом. А вот электрическая схема заранее подразумевает, что паять Вы умеете и Arduino уже не раз подключали ко всяким устройствам.
      Тем не менее спасибо, отличная статья. Надо попробовать.
        0
        Мне статья понравилась, в меру подробно.
        Главное — есть весь набор необходимой терминалогии, банально загуглив которую, даже далекий от электроники человек сможет начать свой путь к новому, увлекательному хобби.
        Отличный способ популяризации робототехники.
          0
          Все наши болтики и гаечки со стороны дна несильно уменьшили дорожный просвет
          А почему бы не прикручивать все компоненты к «потолку» корпуса?
          Тогда дно будет гладким и будет крышкой для доступа к внутренностям даже после того, как сверху будет установлена полезная нагрузка или другое оборудование.
            0
            Будет неудобно. Навскидку:
            1) Когда мы будем «строить» второй этаж наверняка придётся не раз снимать верхнюю крышку. Сверлить дырки. И что бы просверлить одну дырку не хотелось бы разбирать всю начинку. А потом окажется что надо ещё одну. И совсем обидно окажется, если местоположение дыркы должно будет попадать на уже имеющийся болтик.
            2) У нас много подключенных контактов. DC/DC преобразователи «просто так» вставлены. Машинка у нас ездит, сталкивается с препятствиями, присутствует вибрация. Чтобы все наши элементы и провода не повылетали их надо крепить, а лучше запаивать. Что неудобно на этапе отладки.
              0
              Для этого скорей было надо взять болты с потайной головкой или использовать болтгайки (как материнку в компе крепят)
              0
              Очень понравилась статья, спасибо. Чуть оффтопа с Вашего позволения: Подскажите простой способ контролировать разряд литий-ионных аккумуляторов, нужна платка с шиной uart/i2c для понимания на сколько разряжены аккумуляторы (подсчет и визуализацию буду делать на raspberry pi). Вариант с измерением напряжение не походит.
                0
                Никогда не слышал о таких. Но и не интересовался.
                Мне кажется, Вам придётся делать контроллер под свои задачи. Можно взять ту же ардуину, датчик тока на эффекте холла (есть готовый модуль) и считать ток, который отдают аккумуляторы. При заряде аккумуляторов ток сменит направление и это тоже учитывать. Интегрируя по времени, можно посчитать какую ёмкость в аккумулятор закачали и какую из неё забрали. На ардуине можно организовать uart/i2c и отдавать по запросам или периодически текущее значение ёмкости в процентах от последней зарядки. Нужно будет ещё кучу вещей учитывать типа если зарядка внезапно прервалась, саморазряд аккумуляторов никто не отменял, ещё чего-то… Но как-то примерно можно будет контролировать. Очевидно, придётся делать какую-то самокалибровку такого контроллера. Вообщем получается как-то совсем непростой способ :)
                  0
                  Думал о подобном пути, но все же надеялся что есть что то простое. Например самый простой powerbank с экраном и индикатором в процентах, понимаю что его данные очень усредненные но все же, может есть способ как с него эту информацию.
                    0
                    Я не знаю насколько часто и точно Вам нужно снимать данные. Есть платы грубой индикации уровня заряда. Например, вот такая содержит пятисегментный индикатор. Но придётся колхозить пару проводков для управления и пять на телеметрию, возможно придётся еще и ограничивать выдаваемое напряжение. Учитывая, что всё сводится к замеру и оценке напряжения можно и самому тогда сделать резистивную цепочку и с неё сигнал оцифровывать. Если не хотите, что бы она постоянно что-то потребляла можно её через ключ или микрореле подключать к аккумулятору.
                      0
                      Это как раз по напряжению и показывает с вероятностью 99%
                      Для одной банки можно использовать например Maxim DS2741
                      https://datasheets.maximintegrated.com/en/ds/DS2741.pdf
                      со 100%
                      цитата
                      5ти сегментный светодиодный индикатор отображает уровень заряда от 20% до 100%.
                      0% (< 3В на Li-ion ячейке) Светодиод моргает
                      20% (3,0 — 3,3В на Li-ion ячейке) горит 1 светодиод
                      40% (3,3 — 3,5В на Li-Ion ячейке) горит 2 светодиода
                      60% (3,5 — 3,8В на Li-Ion ячейке) горит 3 светодиода
                      80% (3,8 — 4,0В на Li-Ion ячейке) горит 4 светодиода
                      100% (4,0 — 4,2В на Li-Ion ячейке) горит 5 светодиодов
                        0
                        На сколько мне известно там не линейная зависимость. Хотелось бы что то поточней. Замерял напряжение под нагрузкой, но на моих аккамуляторах до 50% можно построить какой то график, а дальше все может быстро уйти в разряд.
                          0
                          Нелинейная, но не сильно от линейной отличается, например:
                          image

                          А от 4.1 и до 3.2-3.3 вольта (на холостом или под низкой нагрузкой), т.е. в диапазоне примерно 95%-20% емкости практически линейная и точность получается хорошая.
                            0
                            Спасибо за ответ, а как быть если нужно измерять под нагрузкой?
                              0
                              Смотря какая нагрузка. Вообще сама зависимость и под нагрузкой остается близкой к линейной кроме ну очень больших токов — просто смещаются (в сторону снижения разумеется) все напряжения — см. график, каждая линия своему току нагрузки соответствует (1/3/5/7/10 Ампер) и кроме самого начала и конца график фактически линейный.

                              Так что если заранее измерить внутренне сопротивление конкретных используемых аккумуляторов (по падению напряжения при работе с известной нагрузкой — один раз для каждого используемого комплекта), то можно просто давать фиксированную поправку — зная напряжение под нагрузкой и внутреннее сопротивление своих батарей всегда можно в 1 действие рассчитать напряжение холостого хода, а уже по нему с приличной точностью оценить уровень остающегося заряда.

                              Ну или если речь идет о поделках типа роботов описанных в статье с умными микропроцессорными контроллерами и мощными, но короткими импульсными нагрузками (типа сервоприводов какого-то манипулятора или движков крутящих колеса платформы), то 2й вариант это измерять напряжение только между(в перерывах) этими импульсными нагрузками. Когда идет только нагрузка от работы датчиков и микроконтроллера — они потребляют немного и напряжение на аккумуляторе почти не отличается от холостого хода. А раз ПО для контроллера управляющего девайсом мы пишем сами, то по-идее всегда должны знать работают в данный конкретный момент силовые приводы или нет.
                                0
                                Спасибо за комментарий.
                        0
                        ppc-ptz говорит, что есть специализированные средства. DS2741 — я так понял это контроллер зарядного тока. По I2C можно узнать и оставшуюся ёмкость. Правда формфактор TDFN не сильно располагает к домашнему творчеству)
                          0
                          К сожалению Вы правы, сложновато для самодельного робота.
                          0
                          Опрашивать нужно хотя бы раз в несколько минут чтоб примерно знать сколько еще протянет робот, подобные решения есть в дорогих квадракоптерах. Устал искать готовое.
                          0
                          Поставьте обычный резистивный делитель и подключите к ноге raspberry.
                            0
                            Как и описал выше данный метод будет не точен, но спасибо за совет. Буду искать дальше. Данный вариант на самый крайний случай.
                        0
                        Китайцы продают готовые девайсы типа такого
                        image
                        Напрямую использовать или найти доку на микросхему и подключиться
                          0
                          Спасибо буду изучать.
                            0
                            вот схема одного из
                            http://img.mysku-st.ru/uploads/images/02/80/11/2014/10/21/dcf653.jpg

                            PIC16F1933T-I/SS = 8-bit Microcontrollers — MCU 7KB Flash 1.8-5.5V 256B RAM 256B EEPROM
                        0
                        А ссылки на корпус, двигатели, желательно с али можно увидеть?
                          0
                          А ссылки на корпус, двигатели, желательно с али можно увидеть?

                          Двигатель jga-25-370. Корпус сложнее — надо идти в строительный магазин. Вот колёса — это вещь!
                            0
                            Вот такой набор есть:https://ru.aliexpress.com/item/ONE-Set-of-Car-Parts-included-25-motor-85mm-wheel-Tyre-Width-38mm-coupling-motor-bracket/32609240322.html?spm=2114.10010208.1000022.1.VPYTw7&isOrig=true#extend

                            Правда скорость вращения не очень высокая (редуктор такой).
                              0
                              Или всё в сборе: https://ru.aliexpress.com/item/4wd-full-metal-motor-4x4-full-aluminum-alloy-intelligent-barrowload-chassis-big-robot/852707822.html?spm=2114.13010708.0.82.cmG0nI

                              А то что скорость вращения маленькая — это хорошо, я взял вариант с шустрыми моторами и в итоге их момента не хватало чтобы поворачивать платформу на месте =(
                                0
                                Я дополнил статью ссылками на основные комплектующие. По платформе — по моей ссылке у продавца можно заказать один из двух цветов платформы и один из трёх номиналов скоростей (как следствие и крутящих моментов) двигателей.
                                  0
                                  Я не нашел приемлемых готовых платформ с датчиками Холла.
                                    0
                                    Платформу можно найти без кита или попросить продавца выслать одну, не китом.
                                    А двигатели с датчиками взять отдельно — ссылку я привёл в статье.
                              0
                              Когда-то тоже такую платформу находил, поэтому ссылку сохранил, но не на ALI

                              http://www.banggood.com/4WD-WIFI-Crosscountry-Offroad-Robot-Smart-Car-Kit-For-Arduino-p-927973.html
                                0
                                кит с пластиковыми редукторами

                                кит с металлическими редукторами
                                  0
                                  Я дополнил статью — в конце под спойлером размещён список основных комплектующих, ссылки присутствуют.
                                  0
                                  Хммм если честно получается дороже чем у меня несмотря, на то что у меня мощнее процессор…
                                  У Вас получается очень много рассыпухи.
                                  У меня набор примерно похожий но обошелся без арудинки…
                                  DC/DC — Преобразователь
                                  L298 -Мотор шилд
                                  NanoPi2-мозги плюс wi-fi

                                    +1
                                    1. Голые моторы без обратной связи (энкодер) и ПИД регулятора, очень поверхностное решение. Будут проблемы с прямолинейным движением и прохождением препятствий.

                                    2. Стыковка колесо-мотор через адаптер — слабое звено. Будет разбалтываться и слетать с вала. Бонусом будет повышенная нагрузка на подшипники редуктора(а они там подшипники скольжения) и быстрый выход редукторов из строя, особенно если на платформу будет ставиться полезная нагрузка.

                                    Тут похожий проект https://geektimes.ru/post/257894/

                                      0
                                      Врядли этот робот предполагается интенсивно эксплуатировать. Как и у большенства подобных тележек, судьба его пылится на антресольке.
                                        0
                                        Основная идея — сделать себе передвижной удалённый видеомониторинг своего дома. То есть, с работы можно подключить к роботу, поездить, посмотреть во двор (к окнам деревянный настил приставить в качестве трапа). А вот что из этого выйдет, хватит ли терпения и найдётся ли время на реализацию всего — это время и покажет)
                                        0
                                        1. При тестовых запусках прямо ездит нормально. Но в целом, я с Вами согласен. Задел на двигатели с ОС оставлен — двигатели можно поменять на более дорогие GM25-370 с встроенными датчиками Холла.

                                        2. Да. Тут Вы правы. Но я не нашёл нормальных готовых решений. В принципе, можно получить доступ к токарному станку и выточить (если до сих пор не разучился) осевой адаптер на вал двигателя, но всё равно его «класть» на что-то надо, подшипник надо как-то крепить к корпусу. У Вас в этом плане сделано замечательно (я статью прочитал), но в домашних условиях так сделать, лично я не смогу.

                                        У Вас, кстати, получилось замечательная платформа! Я Вашу статью читал и практически полностью вспоминал свои мысли год назад. Автономные «мозги», контроль пространства на уровне платформы, нормальный стык колесо-редуктор и т.д. Но получилось всё сильно попроще.

                                        6 колёс. Есть смыл в использовании энкодеров у средней пары колёс? Т.е. если без них — сильно прямо так скажется на движении?

                                        И ещё вопрос возник — а как в вашем макете с поворотами дела обстоят? На гладкой поверхности я могу просто бортами в разные строны закручивать и платформа поворачивается без особых проблем. А вот на шерстяном паласе — никак. Т.е. вообще никак) Пришлось выдавать на 50 миллисекунд импульс на движение вперёд, а потом уже реверс по какому-то борту включать.



                                        А вообще, Ваш аккаунт навевает грусть. Это видимо как раз тот случай, когда человеку слили карму чисто за мнения в комментариях. Хотя качество оригинального материала — отличное. Но теперь владелец этого аккаунта врят ли что-то сюда писать захочет… тем не менее — поддержал в карму.
                                          0
                                          >1. При тестовых запусках прямо ездит нормально.
                                          Это пока движки свежие, они в процессе эксплуатации начинают крутить по разному и у робота при одинаковых параметрах ШИМ появляется дуга.

                                          >2. Да. Тут Вы правы. Но я не нашёл нормальных готовых решений.
                                          Готовых решений в китай-сегменте нет. Часть фрезерованных деталей заменяется 3D печатью, на момент статьи принтера у нас не было, но был выход на станок с ЧПУ. По итогам эксплуатации этот узел оказался самым надежным, китай-моторы жили значительно дольше, но потом все равно разваливался редуктор.

                                          >6 колёс. Есть смыл в использовании энкодеров у средней пары колёс?
                                          Только если езда по плоскости, при пересеченке есть вариант, когда среднее колесо может оказаться в воздухе, т.е. на ПИД поступают нормальные данные и он крутит колесо с малым усилием, а на два других уже не хватает. При жестком корпусе в идеале все 6 колес под ПИД управлением, если только средние то желательно продумать активную подвеску.

                                          >И ещё вопрос возник — а как в вашем макете с поворотами дела обстоят?
                                          Танковые развороты выходили отлично. Робот занимал призовые места в соревнованиях и прекрасно себя чувствовал на любом покрытии. Четырех-колесные платформы в этом плане сильно хуже, при хорошем сцеплении (шипованые колеса и ковролин) очень тяжело вертеть и хана редукторам. Еще момент насчет драйвера он явно маловат, там 2А на канал и в пике до 4А, два двигателя в параллели при блокировке запросто затребуют больше 4А, т.е. минимум нужно на пару движков по драйверу. Рекомендую схему: два ведущих колеса и мебельный ролик, по энергетике/управляемости самое то. Ссылка на внешний вид платформы http://rtc.ru/ru/sobytiya/73-tsnii-rtk-sadu-benua-125-let в конце несколько фотографий.

                                          >А вообще, Ваш аккаунт навевает грусть.
                                          Это хабр, дело привычное. За карму спасибо, готов ответить на возникшие вопросы, но не чаще чем раз в час :)… карма она такая.
                                            0
                                            Возник такой вопрос. Как на Arduino c энкодерами поступили? Прерывание на ногу?

                                            P.S.
                                            Сам STM32 Nucleo-144 взял. Наверно, некий оверхед, но аппаратно четыре энкодера поддерживает. Плюс USB (в большой комп или микро-комп). Ещё десять ультразвуковых датчиков. В итоге 144 ноги уже почти закончились :-).
                                              0
                                              В RASH2 да, я вешал два энкодера на прерывания.

                                              Интересно было бы взглянуть на вашу платформу. С десятью сонарами)
                                                0
                                                У GM25-370 датчик Холла на валу двигателя.
                                                У модели, где после редуктора 150 об/сек, вал вращается со скоростью 11500 об/сек. Нужно два канала, чтобы знать направление.
                                                На мой взгляд, на прерываниях это нереально сделать на любом микроконтроллере, а особенно на Arduino.
                                                У STM32 аппаратно инкрементируется счётчик, если на первом канале энкодера сигнал пришел раньше. И декрементируется, если на втором канале пришел раньше.

                                                > Интересно было бы взглянуть на вашу платформу. С десятью сонарами)
                                                Самому интересно :-). Пришлось всё-таки MCP23S17 применить — ног мало. В бою сразу десять ещё не пробовал. Пока жду посылки.
                                                  0
                                                  Да, это быстро. Можно использовать недорогой ПЛИС, который я использовал для WOL. ПЛИС — это уже сплошное творчество без ограничений)
                                                0
                                                >Возник такой вопрос. Как на Arduino c энкодерами поступили? Прерывание на ногу?

                                                Да именно так, задействовано 4-ре ноги т.к. энкодеры двухканальные, что позволяет определять направление вращения.
                                                Хорошая статья http://easyelectronics.ru/avr-uchebnyj-kurs-inkrementalnyj-enkoder.html
                                                Производительности 8-ми битного AVR хватает на обработку данных с энкодера и обсчет пид регулятора на два канала + отправка данных по UART/CAN в систему управления.

                                                >В итоге 144 ноги уже почти закончились :-).
                                                Моя рекомендация не накручивать все на один мк, т.к. масштабируемость решения никакая. Перспективнее несколько плат с МК (мы используем atmega32m1) завязанных на одну шину (в нашем случае CAN). В результате получается ряд локальных законченных решений (управление двигателями, опрос дальномеров, навигация, отображение информации на индикаторе, контроль питания) которые сами по себе мигрируют от платформы к платформе. Если какое то локальное решение не «взлетает» то это всего лишь одна ветка, попробовали, не вышло и забыли.
                                                0
                                                Сейчас платформа передана ребятам из Endurance. Посмотрю на отзывы по криводвижению) Небольшой апгрейд, если понадобится, запланирован путём замены а двигатели с датчиками Холла — конструктивно всё должно получиться, запитать их можно от платы питания, а сигналы с датчиков «прокинуть» на плату управления — резервные пины тоже есть.

                                                Насчёт драйвера двигателей согласен. Он выбран с 20-25% запасом по мощности, но только для случая штатной работы. Если вдруг «встанут» все четыре колеса, то микросхема драйвера может и легко сгореть. Выбор сознателен — цена и предположение, что оператор не идиот и не будет совсем уж «загонять» платформу. А как, куда и вообще надо ли будет развивать платформу дальше — определится позже.
                                            0
                                            Любопытная статья!

                                            Сам начал с желтых пластмассовых двигателей. Потом решил 25мм двигатель и 85мм колёса. Сейчас же жду 130мм колёса и 37мм двигатели 400RPM.
                                            Двигатели с датчиком Холла. Наконец-то я понял, что мне повезло со специальностью :-) (Приборостроение) и очень полезно знать про системы с обратной связью.

                                              0
                                              Колёса не такие случайно?
                                                0
                                                Ага, синенькие :-)

                                                Самые дешёвые, которые попались:

                                                А мотор такой:
                                                Пока ничего сказать не могу по поводу качества мотора JGB37-555B. Крутящий момент у него высокий (по ссылке таблица есть).
                                                  0
                                                  Ссылки:
                                                  https://ru.aliexpress.com/item/2pcs-lot-130mm-Plastic-Wheels-New-Style-robot-wheels-new-wheels-for-DIY-smart-car-Robot/32549479884.html?spm=2114.10010208.1000022.1.mF0e0Q&isOrig=true#extend

                                                  https://ru.aliexpress.com/item/JGB37-555B-6v-24v-High-torque-DC-gear-motor-with-high-precision-encoder-Speed-encoder-motor/32700191670.html?spm=2114.10010208.1000022.1.gMGZix&isOrig=true#extend
                                              0
                                              в отсутствии датчиков оборотов, как обеспечивается езда платформы по прямой?
                                              разброс характеристик двигателей и трение в редукторах будет приводит к накоплению системной погрешности без коррекции по обратной связи.
                                              понятно, что это всего лишь платформа, а не готовое изделие, но отсутствуют хвостовики на моторах для дальнейшего её развития.
                                                0
                                                Тут, понимаете, вопрос в том автономное это движение или нет.

                                                Если движение ручное, то это неважно — оператор движение всегда и так скорректирует. Главное что бы он не ездил уж совсем криво как в первом видео в статье — там им управлять совсем уж тяжко, так как постоянно «ловить» приходится. Разброс характеритик несколько парируется тем, что у нас полный привод и колеса друг другу не дают «разгуляться». Может, конечно, неповести так, что будет сильный разброс по бортам, но пробные тесты показали, что по прямой он замечательно ездит в пределах квартиры по крайней мере.

                                                Если же это будет автомат, то тогда ваше замечание резонно. Но это продумано «на будущее». Существуют двигатели GM25-370 с установленными датчиками Холла на концах двигателей. В этот корпус они должны вместиться почти впритык друг к другу. По крепежным местам подходят к корпусу. Датчик Холла можно запитать от платы питания, а его выходные сигналы «продёрнуть» на плату управления. Кстати, я этот момент хотел упомянуть в статье, но всё же забыл — дополню.
                                                0
                                                К контроллеру литий-ионных аккумуляторов D1 подключаются три аккумулятора формата 18650

                                                Практически полностью аналогичная конструкция (+еще 2 кг на вес манипулятора. Поворотный стол и сервоприводы) запитанная от кислотного аккумулятора 12В 1.2А/ч (свеже купленный) имеет автономность где то в 30-40 минут движения (без задействования манипулятора) в непрерывном движении с маневрированием.


                                                А у Вас какая автономность выходит? (что бы сравнить… может на 18650 перевести).

                                                  0
                                                  К сожалению это неизвестно. Пока, по крайней мере. Робот собирался для стартапа Endurance и был ему передан.
                                                  Изначально предполагалось только собрать «базовое железо». Но я так же успел сделать простейшую тестовую прошивку, которая позволяет задать имя для модуля bluetooth, принимать данные от этого модуля по несложному протоколу и выполнять четыре команды (вперёд, назад, влево, вправо). То есть, никакой мониторинг и телеметрия реализованы не были. Во время проверок и отладки робот гонялся по квартире минут по 30-40, при этом я не заметил, что у него динамика изменилась — как катался в начале, так же катался и через полчаса. При этом, повороты на ковролине, я думаю, неслабо так напрягали аккумуляторы, так как при стопоре двигатели в 3-4 раза больше тока потребляют. После этого я его обычно ставил на подзарядку, которая занимала 1,5-2 часа. Я думаю реально в том виде, в котором он сейчас есть он может и часа 2 отъездить.

                                                  Ваш свинцовый аккумулятор гораздо проще заряжать, он неприхотлив и гораздо дешевле. Перевод на 18650 вам даст снижение веса при повышении ёмкости и кратном повышении цены, так как нормальный и ёмкий один аккумулятор 18650 (например, Panasonic NCR18650B) стоит как ваш свинцовый. Заряжать можно 12-вольтовым блоком питания, если он умеет нормально ток ограничивать, но для лучшей эффективности надо использовать внешнюю зарядку (как у меня в статье) или делать схему заряда самому с ограничением тока (можно попробовать использовать китайские Step-Down преобразователи которые имеют регулятор ограничения по току — тогда на робота можно подавать просто 12В от любого источника питания). В целом вы можете вес снизить раза в три, энергоёмкость поднять раза в 2-4, но и цена возрастёт в несколько раз.
                                                  0
                                                  Зачем городить свой моторный контроллер, когда можно просто купить китайский ESC?
                                                    0
                                                    Их же обычно применяют в авиамоделизме для управления бесколлекторными двигателями?
                                                    Был бы благодарен за ссылку по практическому применению именно для «машинок».
                                                  0
                                                  Китайские моторредукторы хоть и мощные, но отвратительно шумные.
                                                  Ждем версию RASH который не режет уши!
                                                    0
                                                    Класс. У меня вопрос, т.к. пытаюсь на таких же движках собрать робота, как бы вы решили задачу по определению количества оборотов колес для синхронизации?
                                                      0
                                                      Я бы брал движки с встроеннымы датчиками Холла.

                                                      А если с этими двигателями. Навскидку. Можно прикрепить на муфту или на обратную сторону колеса магнитик. А на корпусе разместить микросхемку датчика Холла. Но тут народ чуть выше подсказывает, что можно взять и каждый двигатель подключить через контроллер ESC, эту тему надо, конечно, поизучать.

                                                    Only users with full accounts can post comments. Log in, please.