Время течет, идеи меняются. Я решил изменить колесную схему своего робота и перейти от варианта шасси с четырьмя ведущими колесами к варианту с двумя ведущими колесами и третьим колесом, служащим просто в качестве опоры. Причиной тому явилось понимание, что сделать самоуправляемого робота на четырех колесах без использования системы подвески и достаточно сложного рулевого управления вряд ли удастся.
Различные дешевые четырехколесные платформы хороши для поделок с дистанционным управлением, при создании же автономных роботов они становятся не совсем подходящими. Во-первых, с четырьмя колесами, при движении по относительно неровной поверхности всегда есть вероятность того, что одно из колес может оказаться в воздухе, а следовательно появляется неопределенность в реализации управления с использованием этого колеса. Во-вторых, чтобы управлять с ожидаемым результатом четырехколесной тележкой нужна реализация принципа Аккермана для обеспечения корректного угла поворота рулевых колес при прохождении поворота или кривой. Это именно та схема, которая применяется в обычных автомобилях. Завязнуть в механике у меня особого желания нет, поэтому я решил реализовывать самую простую схему: два колеса с электромоторами и третьим колесом, служащим в качестве опоры для поддержания равновесия. Еще одной причиной для смены шасси явилось отсутствие возможности закрепить уже купленные колесные оптические энкодеры от DFRobot на двигателях, вследствие конструктивной особенности имеющихся моторов. Посмотрев стоимость подходящих двигателей я решил, что выгоднее будет приобрести новое четырехколесное шасси с двигателями, на которые я смог бы закрепить энкодеры. Как впоследствии выяснилось, я опять немного ошибся 😥
Свой выбор я остановил на платформе Smart car chassis 4WD kit, купленной на Aliexpress еще до скачка курса доллара. Полученный комплект выглядел следующим образом:
В комплекте идут:
- две детали из прозрачного акрилового стекла (PMMA) размером 250x148x3 мм
- 4 прорезиненных колеса диаметром 65 мм
- 4 мотор-редуктора
- 4 диска с прорезями для энкодера (как впоследствии оказалось, энкодер от DFRobot отказался с ними работать, вероятно, из-за меньшего размера отверстий)
- крепеж
Имеющиеся у меня пара энкодеров, предназначены для платформ DFRobot 3PA и AWD Rovers в составе которых идут вот такие двигатели:
В разобранном виде полученных мной новых двигателей, несколько отличающихся от оригинальных DFRobot можно видеть отдельно моторчик и пластиковый редуктор.
Для того, чтобы закрепить энкодеры на полученных мною мотор-редукторах, пришлось немного их доработать, высверлив сквозные отверстия. Разбирать пришлось для удаления стружки.
Такие мотор-редукторы можно купить здесь.
Установленный на мотор-редуктор энкодер с родным диском, имеющим 10 вырезов и припаянными к двигателю проводами выглядит следующим образом:
Разрешение инкрементного оптического энкодера DFRobot составляет 10 отсчетов на оборот, что очень мало и будет привносить достаточно большую погрешность, но, надеюсь, будет достаточным для моих экспериментов. С этим энкодером также не получится определять направление вращения.
Аналогичные, но несколько более дешевые энкодеры можно купить, например, здесь или здесь.
Принципиальная схема этого осевого датчика вращения с питанием 5В и потребляемым током не превышающим 20 мА приведена ниже.
Этот энкодер можно будет использовать для:
- Определения фактической скорости вращения колеса для целей, например, дифференциального управления (число отсчетов в единицу времени)
- Определения пути, пройденного колесом без учета проскальзывания.
Для вычисления пройденного пути необходимо учесть геометрические параметры колеса. В моем случае колесо имеет диаметр D=65 мм,следовательно длина его окружности:
Поэтому, 10 отсчетов энкодера при условии вращения в одном направлении соответствуют перемещению на 204мм.
Простенький скетч, который позволяет используя прерывания, считывать с двух энкодеров скорость вращения колес (в числе отсчетов в секунду) и выводить считанные значения в последовательный порт. Левый энкодер подключен ко 2-му цифровому пину Arduino, правый энкодер — к 3-му цифровому пину.
#define LEFT 0 #define RIGHT 1 long coder[2]={0,0}; int lastSpeed[2]={0,0}; void setup() { Serial.begin(9600); // инициализируем последовательный порт // инициализируем режимы прерывания для цифровых пинов 2 и 3 attachInterrupt(LEFT, LwheelSpeed, CHANGE); attachInterrupt(RIGHT, RwheelSpeed, CHANGE); } void loop() { while(1) { static unsigned long timer = 0; if(millis() - timer > 1000) { Serial.print("\nLeft wheel:"); Serial.print(coder[LEFT]); Serial.print("\tRight wheel:"); Serial.print(coder[RIGHT]); lastSpeed[LEFT] = coder[LEFT]; lastSpeed[RIGHT] = coder[RIGHT]; coder[LEFT] = 0; coder[RIGHT] = 0; timer = millis(); } } } void LwheelSpeed() { coder[LEFT] ++; // число прерываний левого энкодера } void RwheelSpeed() { coder[RIGHT] ++; // число прерываний правого энкодера }
[add_ratings]
Ценник конечно злой...
И давно хотел спросить...а не проще ли использовать шаговые двигатели вместо энкодеров?
И кстати несомненный + 3хколесного робота еще в том что у вас 4 двигателя с энкодерами... а это значит что можно сделать не одного а сразу 2х роботов: )
Шаговый двигатель — хорошая альтернатива мотору постоянного тока с энкодером. Минусы шаговых двигателей в моем случае — относительно большие размеры (самые маленькие, которые я нашел SparkFun — 42мм x 42мм, а колеса у меня 65мм), нужно придумывать как их крепить к платформе и втулки для крепления колес нужны, да и стоят они подороже. Но, в принципе, тоже хороший вариант. Если точности моих энкодеров мне окажется недостаточно, попробую поставить шаговые двигатели. А колес с двигателями у меня теперь и, правда, на нескольких роботов хватит 🙂
Нашел подходящий вариант на Aliexpress. Куплю, попробую с ними второго робота сделать. Заодно можно будет сравнить результаты...
у меня 2 таких есть... Работают как то медленно,слабые и греются довольно сильно...
Использовал с помощью моторшлида...Возможно я в коде накосячил что они так греется но хз...Я хотел их использовать для управления шторами но теперь сомневаюсь что они подойдут...
vk.com/kartel0878?w=wall33662191_3243%2Fall
Нашел видео с этим моторчиком. Судя по комментариям, действительно не быстрый двигатель. И вот видео с тестированием с нагрузкой. Тоже не очень. Шторы, наверное, не сдвинут.
Как вариант можно его немного переделать...
www.youtube.com/watch?v=-9Ghv99BeiA возможно это поможет увеличить его мощность...