Pull to refresh

Comments 59

Очень подробно описаны технические детали и весьма поверхностно всё, что связано с электрическими схемами. То есть по Вашей статье собрать платформу «физически» можно очень легко, даже тем, кто гвозди заколачивать с трудом. А вот электрическая схема заранее подразумевает, что паять Вы умеете и Arduino уже не раз подключали ко всяким устройствам.
Тем не менее спасибо, отличная статья. Надо попробовать.
Мне статья понравилась, в меру подробно.
Главное — есть весь набор необходимой терминалогии, банально загуглив которую, даже далекий от электроники человек сможет начать свой путь к новому, увлекательному хобби.
Отличный способ популяризации робототехники.
Все наши болтики и гаечки со стороны дна несильно уменьшили дорожный просвет
А почему бы не прикручивать все компоненты к «потолку» корпуса?
Тогда дно будет гладким и будет крышкой для доступа к внутренностям даже после того, как сверху будет установлена полезная нагрузка или другое оборудование.
Будет неудобно. Навскидку:
1) Когда мы будем «строить» второй этаж наверняка придётся не раз снимать верхнюю крышку. Сверлить дырки. И что бы просверлить одну дырку не хотелось бы разбирать всю начинку. А потом окажется что надо ещё одну. И совсем обидно окажется, если местоположение дыркы должно будет попадать на уже имеющийся болтик.
2) У нас много подключенных контактов. DC/DC преобразователи «просто так» вставлены. Машинка у нас ездит, сталкивается с препятствиями, присутствует вибрация. Чтобы все наши элементы и провода не повылетали их надо крепить, а лучше запаивать. Что неудобно на этапе отладки.
Для этого скорей было надо взять болты с потайной головкой или использовать болтгайки (как материнку в компе крепят)
Очень понравилась статья, спасибо. Чуть оффтопа с Вашего позволения: Подскажите простой способ контролировать разряд литий-ионных аккумуляторов, нужна платка с шиной uart/i2c для понимания на сколько разряжены аккумуляторы (подсчет и визуализацию буду делать на raspberry pi). Вариант с измерением напряжение не походит.
Никогда не слышал о таких. Но и не интересовался.
Мне кажется, Вам придётся делать контроллер под свои задачи. Можно взять ту же ардуину, датчик тока на эффекте холла (есть готовый модуль) и считать ток, который отдают аккумуляторы. При заряде аккумуляторов ток сменит направление и это тоже учитывать. Интегрируя по времени, можно посчитать какую ёмкость в аккумулятор закачали и какую из неё забрали. На ардуине можно организовать uart/i2c и отдавать по запросам или периодически текущее значение ёмкости в процентах от последней зарядки. Нужно будет ещё кучу вещей учитывать типа если зарядка внезапно прервалась, саморазряд аккумуляторов никто не отменял, ещё чего-то… Но как-то примерно можно будет контролировать. Очевидно, придётся делать какую-то самокалибровку такого контроллера. Вообщем получается как-то совсем непростой способ :)
Думал о подобном пути, но все же надеялся что есть что то простое. Например самый простой powerbank с экраном и индикатором в процентах, понимаю что его данные очень усредненные но все же, может есть способ как с него эту информацию.
Я не знаю насколько часто и точно Вам нужно снимать данные. Есть платы грубой индикации уровня заряда. Например, вот такая содержит пятисегментный индикатор. Но придётся колхозить пару проводков для управления и пять на телеметрию, возможно придётся еще и ограничивать выдаваемое напряжение. Учитывая, что всё сводится к замеру и оценке напряжения можно и самому тогда сделать резистивную цепочку и с неё сигнал оцифровывать. Если не хотите, что бы она постоянно что-то потребляла можно её через ключ или микрореле подключать к аккумулятору.
Это как раз по напряжению и показывает с вероятностью 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 светодиодов
На сколько мне известно там не линейная зависимость. Хотелось бы что то поточней. Замерял напряжение под нагрузкой, но на моих аккамуляторах до 50% можно построить какой то график, а дальше все может быстро уйти в разряд.
Нелинейная, но не сильно от линейной отличается, например:
image

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

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

Ну или если речь идет о поделках типа роботов описанных в статье с умными микропроцессорными контроллерами и мощными, но короткими импульсными нагрузками (типа сервоприводов какого-то манипулятора или движков крутящих колеса платформы), то 2й вариант это измерять напряжение только между(в перерывах) этими импульсными нагрузками. Когда идет только нагрузка от работы датчиков и микроконтроллера — они потребляют немного и напряжение на аккумуляторе почти не отличается от холостого хода. А раз ПО для контроллера управляющего девайсом мы пишем сами, то по-идее всегда должны знать работают в данный конкретный момент силовые приводы или нет.
Спасибо за комментарий.
ppc-ptz говорит, что есть специализированные средства. DS2741 — я так понял это контроллер зарядного тока. По I2C можно узнать и оставшуюся ёмкость. Правда формфактор TDFN не сильно располагает к домашнему творчеству)
К сожалению Вы правы, сложновато для самодельного робота.
Опрашивать нужно хотя бы раз в несколько минут чтоб примерно знать сколько еще протянет робот, подобные решения есть в дорогих квадракоптерах. Устал искать готовое.
Поставьте обычный резистивный делитель и подключите к ноге raspberry.
Как и описал выше данный метод будет не точен, но спасибо за совет. Буду искать дальше. Данный вариант на самый крайний случай.
Китайцы продают готовые девайсы типа такого
image
Напрямую использовать или найти доку на микросхему и подключиться
вот схема одного из
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
А ссылки на корпус, двигатели, желательно с али можно увидеть?
А ссылки на корпус, двигатели, желательно с али можно увидеть?

Двигатель jga-25-370. Корпус сложнее — надо идти в строительный магазин. Вот колёса — это вещь!
Вот такой набор есть: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

Правда скорость вращения не очень высокая (редуктор такой).
Или всё в сборе: 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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

Ага, синенькие :-)

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

А мотор такой:
Пока ничего сказать не могу по поводу качества мотора JGB37-555B. Крутящий момент у него высокий (по ссылке таблица есть).
Ссылки:
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
в отсутствии датчиков оборотов, как обеспечивается езда платформы по прямой?
разброс характеристик двигателей и трение в редукторах будет приводит к накоплению системной погрешности без коррекции по обратной связи.
понятно, что это всего лишь платформа, а не готовое изделие, но отсутствуют хвостовики на моторах для дальнейшего её развития.
Тут, понимаете, вопрос в том автономное это движение или нет.

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

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

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


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

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

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

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

Articles