Найти в Дзене

Разработка обучающей платформы на Ардуино. Продолжение разработки.

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

Всем привет!

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

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

Этот робот сегодня никуда не поедет
Этот робот сегодня никуда не поедет

А платформа оказалась не такой уж и простенькой. Требования у меня к ней довольно высокие. Оглядываясь на возможности конструкторов линейки Lego Mindstorms, возникает желание сделать что-то подобное, но с учетом возможностей платы Ардуино и компонентов доступных в магазине.

На текущий момент что я хочу от моей платформы?

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

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

Места для креплений датчиков линии. На текущей версии места есть как спереди так сзади. Можно впихнуть до 5 датчиков. Тут все просто.

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

Исполнительная система. Расчеты для точного перемещения.

Или другими словами то что нашу телегу двигает в пространстве и времени. На данный момент я имею то что имею, а точнее простейшие мотор-редукторы с драйверов управления на L298N. Это самое доступное и простое в управлении.

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

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

Давайте я объясню общую идею и покажу расчеты.

Маневр - поворот машины одним колесом с центром окружности на неподвижном колесе. Для наглядности - картинка ниже. Наш маневр слева.

Варианты маневра "Поворот"
Варианты маневра "Поворот"

Какие данные нам нужны для расчетов?

Первое, нам нужно знать диаметр колеса. У меня, на данный момент, диаметр равен 68 мм. Далее нам нужно рассчитать длину окружности этого колеса. Умножаем диаметр на 3,14 получаем 213,52 мм. Это расстояние проходит колесо за один оборот. Запомнили!

Второе. Измеряет ширину колесной базы. Так мы узнаем радус круга по которому будет осуществляться поворот. База у меня 143 мм. Значит длинна окружности по которой мы должны проехать колесов будет ПR2 или 3,14*143*2=898,04 мм.

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

Колесо с щелевым датчиком
Колесо с щелевым датчиком

Следовательно мы считаем сколько мы проедем если сделаем один шаг этого диска. Нужно разделить 30 на длину окружности колеса, мы рассчитали ее ранее 213,52 мм, получаем 7,12 мм. Это наш минимум на которой мы можем сдвинуть колесо.

Четвертое. Нам нужно рассчитать длину дуги для требуемого угла поворота. Например, мы хотим чтобы робот повернул на 90 градусов. Сколько это будет в мм? Будем считать. Формула простая, делим длину окружности (окружность по которой поедет робот) на 360 и умножаем на требуемый угол. 898,04/360*90=224,51 мм. Теперь нужно понять сколько шагов нам потребуется чтобы пройти колесом это расстояние. Считаем 224,51/7,12=31,53. Нам придется округлить значение до целого, выходит 32 шага.

Если всё верно посчитано и измерено, то робот поедет как надо. Но в реальности вступают, так сказать, не учтенные силы. А именно различные люфты, задержки при переходных процессах, инерция движения и прочее и прочее. Масса факторов, которые сложно контролировать. Выходит, что моторы с таким типом обратной связи весьма сомнительное решение. Для точного перемещения скорей всего придется перейти на что-то другое. И скорее всего это будут шаговые двигатели типа 28BYJ-48. Потому что это максимально просто и доступно, ну и ещё потому что они у меня есть) Они конечно ну оччеень медленные, но попробовать стоит.

Моторы которые я использовал.

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

Шасси для полноприводной машины на РУ
Шасси для полноприводной машины на РУ

Следующие моторы это синие мотор-редукторы с металлическими шестеренками. Было указано что соотношение редуктора 1 к 90. Но при каком напряжении, фиг знает. Скорость моторов сильно зависит от напряжения питания, если АКБ посажен, то едут по другому. Есть один нюанс - выходной вал соединяется с шестеренкой с помощью лыски. У меня в этом месте был люфт, шестеренка разбила это место и болталась на валу. Пришлось разобрать редуктор и приклеить намертво на китайскую эпоксидную смолу. Очень злая штука, я ей уже много чего клеил и очень доволен. Держит и жар и холод. Клеил трещину на батарее все ОК. Состоит из двух компонентов, при смешивании меняет цвет. Застывает не мгновенно, тягучая и воняет. При засыхании становиться твердой как камень.

Люфт был успешно устранен. Я надеялся на точные перемещения, но увы, точность плавает. Периодически пролетает мимо нужного угла.

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

Разбирать их не стал, но вроде как должны быть с металлическими шестеренками. Люфта нет совсем. Вроде все хорошо должно быть, но у меня они крутились с разными скоростями. То ли драйвер шалит, то ли что. Ну в общем я их тоже отложил.

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

В теории можно поставить гироскоп и отслеживать перемещение по нему, но там придется писать довольно мутный код, который я не смогу объяснить простыми словами. А это тоже важно, чтобы программа была прозрачна я понятна ребёнку. Чтобы можно было показать расчеты, а затем перевести эти расчеты в подвижную модель.

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

На этом не прощаюсь!