Робототехника как прикрепить колесо к двигателю

от admin

Подключаем мотор-колесо от гироскутера к ESP32 (среда программирования Arduino ide)

Разбираем его. К сожалению, воспользоваться драйверами самого скутера у меня не получилось, они ушли на запчасти, а вот мотор-колеса и батарея пригодится в нашем проекте.

В гироскутере пара таких драйверов

Драйвер мотора используемый в гироскутер

Мотор-колесо имеет три силовых фазы (это бесколлекторный трехфазный двигатель) и энкодер в виде трех датчиков Холла (с питанием датчиков это 5 контактов) . Контакты по краям разъема – питание, внутренние сигналы от датчиков Холла.

Мотор-колесо от гироскутера 6 дюймов

Как я уже заметил, подключить к контроллеру имеющийся в комплекте гироскутера драйвер у меня не получилось.
На помощь пришел знаменитый китайский магазин.
По итогу был выбран драйвер BLD-300B. Особенностью драйвера можно считать «заточенность» на управление через подстроечный резистор (внутренний либо внешний). Такой драйвер можно использовать для регулировки вращения шпинделя фрезерного станка. Но мне нужно использовать его для управления вращением колеса. При этом должна адекватно работать обратная связь по скорости. Т.е. если сопротивление вращению увеличивается драйвер должен это компенсировать, добавив мощности мотору доведя скорость до заданной.

DLD-300B

BLD-300B

Если требуется, чтобы драйвер держал заданную скорость, переключите тумблер в положение ON

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

Самая элементарная схема подключения изображена ниже. Нужно заземлить EN и BRK. После этого можно управлять мотором посредством внутреннего подстроечного резистора.

В качестве источника питания для мотора я буду использовать батарею от разобранного гироскутера на 36V емкостью 4 амперчаса.

Входы драйвера EN, BRK, F/R через резистор подтянуты к 5 вольтам питания, как следствие, если их не подключать никуда, они будут находиться в состоянии высокого сигнала (на них будет 5 вольт).

BLD-300B простое включение

Аккумулятор от гироскутера
Я протестировал вращение с использованием внутреннего потенциометра. Единственное, что мне не понравилось, это отсутствие полной блокировки вращения колеса, даже при использовании функции тормоза (колесо можно провернуть). При этом я не тестировал вращения в разные стороны.
Следующая схема позволяет изменять направление вращения и подключать тормоз. Но мне она не интересна, мне требуется научиться управлять при помощи микроконтроллера.
Простое включение BLD-300B

Подключаем микроконтроллер

Первое, что я попробовал сделать, это научить микроконтроллер управлять скоростью мотора. Для этого я подключил вывод контроллера к SV входу драйвера. Но согласно документации частота PWM управления должна быть не менее 1Кгц. Стандартный ШИМ от Arduino Nano генерируется на частоте 500Гц. Решено использовать контроллер на базе ESP32
ESP32
Для согласования уровня сигнала я использовал преобразователь уровней сигнала вроде того, что показан в центре схемы ниже.
Управляем скоростью от МК

Программа содержит два файла, один описывает класс мотора motor_init.h, а второй — главная программа, работающая в цикле testmk1.ino .

Испытания прошли успешно.

Управляю направлением и тормозом

Следующим этапом я подключил контакты направления вращения и тормоза по схеме ниже. В программу также включил возможность управления мотором. Но, к сожалению, схема оказалась не рабочей. Преобразователь уровня стал работать в обратном направлении и передавал напряжение со входов DIR и BREAK драйвера на контроллер. Контроллер зависал, перезагружался – «паниковал».

Программа - управление направлением

Поразмыслив, и используя элементарную логику, я составил еще пару схем, первую с использованием полевых транзисторов, а вторую с использование оптопары. Обе они приводили к замыканию/размыканию через полупроводниковый элемент DIR и BREAK на землю. Обе они оказались работоспособными.
Последняя схема мне нравится больше, т.к. оптопара еще является защитой от высокого потенциала для контроллера. Возможно ШИМ (контакт SV) нужно выполнить в таком же «стиле».
Тестовые программы прикреплены к статье.

Присоединение ведущего колеса к валу ШД

Присоединение ведущего колеса к валу ШД может представлять определенную проблему. На рис. 10.9 показан один из вариантов ее простого решения. Найдите пластмассовую шестерню большого диаметра с фиксирующим винтом. Осевое отверстие шестерни должно совпадать с диаметром вала ШД. Приложите шестерню к ведущему колесу по центру. Просверлите три сквозных отверстия на окружности шестерни через 120°. Скрепите ведущее колесо и шестерню с помощью винтов, гаек и шайб. Затем наденьте шестерню на вал ШД и закрепите ее фиксирующим винтом.

Рис. 10.9. Соединение ведущего колеса с валом двигателя

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Читайте также

Колеса

Колеса Еще одной проблемой для новичков являются колеса. К примеру, начинающие водители частенько забывают проверить состояние колес, прежде чем отправиться в дорогу. Речь даже не идет о проверке давления в шинах! Забывают и об обычном визуальном осмотре. Недавно автору

Все четыре колеса…

Все четыре колеса… Ни защитная надувная подушка, ни надувные резиновые бамперы для смягчения удара при столкновении, ни надувное запасное ветровое стекло (тоже полезная вещь!) не могут считаться главным применением воздушной подушки на автомобиле. На первое место нужно

3. Самовращающиеся колеса и неуравновешенные грузы

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

5. Капиллярное притяжение и колеса из губок

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

9.2. Получение Технических условий и Разрешения на присоединение мощности

9.2. Получение Технических условий и Разрешения на присоединение мощности Данный этап оформления договора энергоснабжения регламентируется (для нашего примера) требованиями Службы присоединения и перспективного развития (СПиПР) ОАО «Московская городская

Глава 2 ПОЛУЧЕНИЕ ТЕХНИЧЕСКИХ УСЛОВИЙ И/ИЛИ РАЗРЕШЕНИЯ НА ПРИСОЕДИНЕНИЕ МОЩНОСТИ

Глава 2 ПОЛУЧЕНИЕ ТЕХНИЧЕСКИХ УСЛОВИЙ И/ИЛИ РАЗРЕШЕНИЯ НА ПРИСОЕДИНЕНИЕ МОЩНОСТИ Вопрос 39. Кто имеет право на технологическое присоединение своих энергопринимающих устройств (энергетических установок) к электрическим сетям?Ответ. В соответствии с ФЗ «Об

Грузовые автомобили. Колеса

Грузовые автомобили. Колеса Трудно найти в настоящее время человека, который бы не представлял, что обозначает слово «машина». Слово и понятие настолько прочно вошли в наш лексикон, что многие не задумываются над тем, какой глубокий смысл заложен в нем.В политехническом

Изобретение колеса

Изобретение колеса Современные автомобили в том виде, в котором мы привыкли их видеть, сконструированы несколько десятков лет назад, история их изобретения насчитывает несколько сотен лет, а история изобретения колесных повозок несколько тысячелетий.А до этого прошли

Колеса грузовых автомобилей

Колеса грузовых автомобилей У грузовых автомобилей устанавливают дисковые и бездисковые (автомобиль КамАЗ) колеса с пневматическими шинами. В результате сцепления ведущих колес с дорожным покрытием их вращательное движение преобразуется в поступательное движение

Забористые колёса

Давно уже мы ломали голову как порадовать общественность (и себя=) доступным и качественным движителем для роботов. Ничего не выходило — готовые компоненты — слишком дорого, заказывать производство — тоже не бюджетно выходило, самим делать из не предназначенных для этого деталей — получается жуткий колхоз.
И вот после долгой и безуспешной борьбы с сервами, стеклоподъёмниками, шуруповёртами, колёсами от роликовых коньков, мебели и ещё чёрт знает от чего, когда мы уже сдались — закупили дорогие мотор-редукторы, крепёж и колёса…Совершенно неожидано, братья-коммунисты решили проблему с перевыполнением плана=)
Встречайте — колёсный узел от китайского робота-пылесоса!

Это законченный агрегат с 12 вольтовым мотором, металлическим редуктором, энкодером, с симпатичным колесом в цепкой резиновой покрышке, с подвеской и датчиком отрыва от пола! Причём всё это весьма приличного качества.
Ниже всё подробно, с разборкой и большим количеством фоток.

Есть колёса левые и правые — отличаются зеркально. Далее рассматривать будем левое

Разглядим внешне:




Состоит агрегат из двух частей — «мотоблока» (двигатель-редуктор-колесо)и «корпуса» в котором всё это подвешено и закреплён разъём.
Мотоблок качается на оси закреплённой в «корпусе» так, что колесо ходит вверх-вниз. В свободном состоянии пружина в верхней части корпуса сжата и оттопыривает мотоблок создавая максимальный «клиренс» — 33мм.
Если на корпус нажать то пружина сжимается — получается своего рода подвеска=)


Растягивается полностью пружина под весом 1.2кг и тогда просвет становится 13мм. Для не слишком тяжёлых роботов — сойдёт за подвеску для езды по коврам и порожкам.
При полностью оттопыренном колесе — замыкается микрик в верхней части корпуса — датчик отрыва от пола.
Так что можно выключать дисковые пилы своего робота-убийцы когда его поднимают(или наоборот включать…). А можно сделать чтобы он орал дурным голосом требуя вернуть его на землю =)
Снаружи всё ясно, начнём ковырять! Первым делом снимаем заглушки колпаки с колёсных болтов.

Очень меня повеселила такая обстоятельная конструкция колеса=)Дальше больше!
Крутим три винта обнаруживаем, что диски у нас не просто литьё, а ещё и разборные:

Резина низкопрофильная, мягкая, а чтоб не проворачивалась на дисках — сидит на «штифтах»

Вывинчиваем ещё три винта, снимаем вторую часть диска и видим что проворот на оси колесу не угрожает — держится оно не только на винтах но ещё и на массивных выступах стальной ступицы.

Не китайский запас прочности=)
Снимаем крышку редуктора и опять удивляемся — пластиковые шестерёнки не высыпаются на стол, отнюдь!

Там опять всё из металла и пластмассой только прикрыто=)
Редуктор не разборный — заклёпан между двумя толстыми стальными пластинами и надёжно прикручен к металлическому корпусу двигателя.


Всё обстоятельно, капитально и аккуратно — наверно делали пленные немцы…
У редуктора только одна шестерня пластиковая — вторая (на самом моторе — латунная) — наверно для демпфирования, в сервах такое, говорят, встречается.

Выходная шестерня со ступицей сидит вот в таких массивных бронзовых втулках

Хотелось бы шариковые подшипники но это было бы уже слишком=)
Так, с редуктором разобрались, приятно поудивлялись, полезем дальше.
Нужно разнять «мотоблок» и «корпус» — «располовинить»=)
Это оказалось весьма непросто — ось запрессована очень туго — пришлось жестоко выбивать, на удивление без последствий. Так же надо вывернуть два винта по бокам от разъёма и аккуратно снять пружину

Корпус разнимается на верхнюю и нижнюю половины.

Виден крючок для пружины на мотоблоке и пазы для платы разъёма в нижней части корпуса.
Никакого термоклея и стяжек — даже провод от микрика проложен в специальном канале=)
Если поднатужиться и выбить-вытянуть ось ещё дальше — можно отделить мотоблок от корпуса.

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


Можно сделать как здесь.
Ковыряем дальше мотоблок.
Снимаем заднюю крышку и видим энкодер

стянем кодирующий диск (16 просветов)

под ним обнаруживается оптика и недурственный фильтр

Отпаяем плату и удивимся ещё раз — фильтрец полнейший!

кстати вот схема этой платы — обозначены провода приходящие на плату разъёма

Двигатель снабжён честными медно-угольными щётками (а не трёт по коллектору латунными лепестками, как бывает в дешёвых движках)

Мотоблок в полном разборе

Плата-разъём, контакты «желтого металла», всё подписано=)


Обратите внимание, что на плате разъёма один из выводов микрика-датчика отрыва соединён с землёй(см схему)
Распиновка:

Пока мы в поисках правильной ответной части на этот разъём, замечу что шаг у него 2.54
и на него прекрасно напаивается кусочек PLD-шки (5х2). Совершенно без разборки, для удобства можно срезать часть пластмассы

Эстеты впоследствии могут стянуть пластмаску с PLD-шки натянуть туда пластмаску от IDC10-MS

В общем вот такая вот загагулина.

Читать:
Чем обработать крыло автомобиля изнутри перед установкой

Работает негромко, резина тянет прилично. Крутится колесо начинает от 3В но тормозиться при этом слишком легко, при 12В на холостых вертится

90об/мин и тормозиться рукой с ощутимым трудом.
Зато измерили момент — при 12В поднимает до 1.7кг вертикально(на колесо намотана верёвка с подвешенным грузом.) Тесть крутящий момент на валу приблизительно 6кгсм(диаметр колеса 68мм).
Как всё это выглядит в динамике:

Сколхозили за 15минут телегу — скорость проверить. Просто батарея на моторы.

Скорость ползания с грузом в 3,8кг на 12В вышла около 0,29м/с.

  • Двигатель — коллекторный постоянного тока
    • Напряжение питания 12В (видимо)
    • Ток ХХ 60мА (при 12В)
    • Ток заторможенного 1,05А (при 12В)
    • за оборот двигателя — 16 импульсов
    • за оборот колеса — 1000 импульсов
    • Диаметр колеса 68мм
    • Ширина 15мм
    • клиренс 13-33мм
    • выжимается при 1,2кг на колесо

    А на закуску — чертёж

    Ну и наконец — купить это чудо восточной мысли и инженерии можно в нашем магазине.

    Робот, ездящий по линии под управлением Arduino

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

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

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

    В результате выглядеть он будет так:

    Что понадобится

    Для нашего примера понадобятся следующие детали:

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

    Собираем робота

    Сначала соберём робота, установим всю механику и электронику.

    Собираем платформу

    Для начала прикрепим колёса к моторам.

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

    Теперь крепим балансировочный шар.

    Отлично! Платформа собрана. Если вам кажется, что колёсам отведено слишком мало места и они трутся о платформу, то скорее всего вам нужно посильнее надавить на колёса, чтобы они плотнее сели на вал мотора.

    Крепим сенсоры

    Закрепим их, как показано на фото:

    Можно было бы выбрать и другое место. Это могло бы сделать контроль проще или сложнее, а самого робота более или менее эффективным. Оптимальное расположение — вопрос серии экспериментов. Для этого проекта просто был выбран такой способ крепления.

    Крепим Arduino

    Arduino закрепим с противоположной стороны двумя винтиками и гайками.

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

    Крепим Motor Shield и соединительные провода

    Установим Motor Shield на Arduino и подсоединим соединительные провода. Обратите внимание, чтобы соотвествовать программному коду из примера ниже, моторчики соединены с Motor Shield так: правый — к клеммам M1 с прямой полярностью (плюс к плюсу), а левый — к M2 с обратной (плюс к минусу).

    В этом проекте, для экономии времени концы соединительных проводов просто скручены с контактами моторов. При работе «начисто» стоит жёстко припаять провода к моторам.

    Крепим Troyka Shield

    Присоединяем сверху Troyka Shield и подключаем датчики к 8 и 9 цифровым контактам. В итоге получаем следующую конструкцию:

    Программирование

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

    Основная идея алгоритма

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

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

    При повороте траектории направо, правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево, ноль показывает левый сенсор.

    Таким образом получаем простую систему с тремя состояниями:

    На вход системы поступает информация с сенсоров. Получаем следующую логику переходов:

    Левый Правый Целевое состояние
    0 0 STATE_FORWARD
    0 1 STATE_RIGHT
    1 0 STATE_LEFT
    1 1 STATE_FORWARD

    Реализация на Arduino

    Проблема инертности и её решение

    Однако если выставить скорость моторов побольше, мы столкнёмся со следующей проблемой: наш робот будет вылетать с трека, не успевая отреагировать на поворот. Это связано с тем, что наши моторчики не умеют тормозить мгновенно.

    В этом легко убедиться поставив следующий эксперимент: с заданной скоростью робот будет двигаться по поверхности, и в некоторый момент будет установлена нулевая скорость и измерен тормозной путь робота. Пусть робот разгоняется по монотонной поверхности и тормозится при фиксировании импровизированной стоп-линии.

    Эксперимент проведём для разных скоростей. Код программы для эксперимента таков:

    На той поверхности, на которой проводился эксперимент, были получены следующие результаты:

    Таким образом, начиная с некоторого момента у нашего робота нет никакой возможности успеть среагировать и остаться на треке.

    Что можно сделать?! После того, как сенсоры улавливают поворот, можно остановиться и вернуться назад на некоторое расстояние, зависящее от скорости перед остановкой. Однако мы можем отдать команду роботу ехать с какой-то скоростью, но не можем приказать ему проехать какое-то расстояние.

    Для того, чтобы понять зависимость расстояния при заднем ходе от времени, был проведён ещё один замер:

    На скорости 50, например, робот проделывал путь, зависящий от времени следующим образом:

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

    Обратим внимание на то, что у вас значения могут оказаться другими: из-за особенностей сборки либо из-за поверхности, поэтому в общем случае лучше провести все измерения самостоятельно.

    Адаптивное поведение

    Перед финальным экспериментом произведём ещё несколько поправок.

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

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

    В итоге наш код будет выглядит следующим образом:

    Результат

    Что дальше?

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

Похожие публикации