+38 050 250 42 50 +38 093 654 82 83 +38 097 283 01 00
+38 067 998 74 48
Выберите валюту:

В помощь начинающему роботостроителю

просмотрено: 16219 раз
1 2 3 ... 7
В помощь начинающему роботостроителю
Пошаговое руководство по созданию многофункционального робота.
Будем делать пушку на Ардуино.
Свою бешеную популярность Arduino приобрела благодаря простоте и дружелюбности.
Даже полный ноль в программировании и схемотехнике может освоить основы работы с Arduino за пару часов. Этому поспособствуют тысячи публикаций, учебников, заметок в интернете и видеоуроков по Arduino.
(Как раз для меня, из института помню только - какие-то дырочки на перфокартах пробивали.)
Будем использовать электронику как для квадрокоптера, по ним много видеоуроков, ну и пушка не сложнее квадрокоптера.
Надо четыре бесколлекторных мотора, для них четыре регулятора (ESC), два сервопривода, Arduino Nano, переменные резисторы на 10 кОм - 5 шт., макетная плата с проводками (за все под 60$ на Али). Еще блок питания от ПК (5 и 12 вольт).
Про корпус: в сети много есть разных конструкций, есть готовые 3D модели для печати на 3D-принтере, на любой вкус, бери и печатай.
У меня был корпус от RoboPong 1040, я только новый ствол напечатал. Мои 3D модели в архиве, ссылка в конце.

Поехали!

1 шаг. Управляем БК мотором с помощью Arduino и переменного резистора. В программе надо написать всего 5 строк. Через две косые // комментарии (что бы самому не запутаться).

// Подключаем библиотеку Servo
1. #include <Servo.h>
2. Servo Motor; // Объявляем объект серво "Motor"
   void setup() {     
3. Motor.attach(9); }  // Подключаем объект серво "Motor" к 9 выводу
   void loop() {
// присваиваем переменной "zadanie_speed" маштабированное значение входа A1
// аналоговый вход выдает от 0 до 1023, а ESC надо от 1060 до 1860
4. int zadanie_speed = map(analogRead(A1), 0, 1023, 1060, 1860);
5. Motor.writeMicroseconds(zadanie_speed); }  // посылаем команду на ESC

Далее я не буду писать текст программ, пост будет большой. В архиве есть все программы, к каждому шагу.
Расширение в формате *.ino, можно открывать блокнотом, в шапке описание.
Файл в архиве: 1_ESC.ino.

2 шаг. Управляем БК мотором и сервоприводом с помощью Arduino и переменных резисторов.
Почти все то же самое. Для сервопривода команда немного другая - Servo.write(ugol) (0-180).
Файл в архиве: 2_ESC_Servo.ino.

3 шаг. Подключаем все моторы и сервоприводы. Тут моторы с реверсом. В прошивке ESC Blheli режим "Bi-directional". Статья Мясищева Хмельницкий университет про Blheli:
https://sites.google.com/site/webstm32/blhelisuite
Можно настроить под себя параметры: Damped Light, Startup Power, Startup Acceleration - как резко будут меняться обороты, - больше броски тока. При резком останове мотор работает как генератор, не всякий импульсный БП выдержит. Нужен дампер, гасит обратные броски тока. Схема в архиве.
Файл в архиве: 3_ESC_Servo.ino.

4 шаг. Подключаем две кнопки "Старт" и "Стоп".
Программно включаем-выключаем моторы, а не из розетки выдергиваем.
Файл в архиве: 4_ESC_Servo_Knopki.ino.

5 шаг. Будем считать вылетевшие мячи. Добавляем пару инфракрасных диодов: ИК-излучатель и ИК-приемник. В зависимости от счетчика посылать разные команды на ESC и сервоприводы. Как подключено - в шапке файла, и пример на 4 разных мяча.
Файл в архиве: 5_ESC_Servo_Knopki_IKdiod.ino.

6 шаг. Добрались до 1-го рабочего варианта. Добавляем кнопки для сохранения параметров мяча.
По нажатию кнопки будем сохранять значения с переменных резисторов. Каждая кнопка соответствует своему мячу. Например, добавим 5 кнопок, можно будет до 5 разных мячей гонять по кругу.
Можно сохранять в энергонезависимую память (EPROM), можно добавить поворот на случайный угол какой-нибудь кнопке. Частоту подачи мячей можно не программировать, оставить с резистора. Пока свежий, можно прибавить, устал - убавил немного.
Этот вариант хорош быстротой настройки. Например, поставили пушку на 3 метра от стола, хотим подрезку влево и топспин вправо из дальней зоны. Повернули резисторы на подрезку влево, нажали кнопку 1, повернули на топспин вправо, нажали кнопку 2, все настройка закончена.
Но варианту не хватает гибкости. Например, 5-ой кнопке добавили случайный поворот на угол в пол стола, а на 3 метрах от стола это уже угол в полтора стола. Будут некоторые мячи мимо улетать. Все кнопки и резисторы можно вынести на пульт, и цеплять его сбоку от стола.
Вариант очень похож на "BUTTERFLY AMICUS START".
Что бы не тянуть пучок проводов к пульту, можно в пульт добавить еще одну Nano, а связь по RS485.
Так связь в 8-ом шаге.
Пример на три кнопки в архиве.
Файл в архиве: 6_ESC_Servo_Mnogo_Knopki_IKdiod.ino.

7 шаг. Второй рабочий вариант.
Здесь будем управлять роботом с Веб-страницы.
Убираем все кнопки и переменные резисторы.
Вместо Arduino Nano возьмем ESP32. Это двуядерный процессор с встроенным Wi-Fi (около 6$ на Али).
Создаем Веб-страницу, подключаемся к ней с смартфона или планшета, главное что бы браузер был не древний. Ни какого приложения под Андроид или МакОС не надо. Я бы их не потянул.
В видео я подключался с ПК, телефоном видео записывал. Как выглядит страница на смартфоне в моем другом видео:
https://youtu.be/GoIfM7HPWHE
Файл в архиве: 7_ESP32_ESC.ino.

8 шаг. Мой вариант.
Пульт с сенсорным экраном 2.4 дюйма (около 4$ на Али). Ну и резисторы, куда без них.
15 программа это случайный поворот, в видео забыл, назвал нерабочей.
Файлы в архиве: 8_Pong_Pult.ino и 8_Pong_Robot.ino.

Ссылка на архив: https://yadi.sk/d/zIuhpJlfpFefKw
Ссылка на видео про все шаги:  https://youtu.be/ZBbeEgnnW6I
Re: В помощь начинающему роботостроителю
...
Надо четыре бесколлекторных мотора, для них четыре регулятора (ESC), два сервопривода, Arduino Nano, переменные резисторы на 10 кОм - 5 шт., макетная плата с проводками (за все под 60$ на Али). Еще блок питания от ПК (5 и 12 вольт)...

Если кому нужны будут блоки от ПК, могу организовать по приятной цене или в обмен на теннисный инвентарь (мячики, накладки). Как-то от скуки занимался ремонтом -старенькие, но мощности в них достаточно и даже с запасом для подобных поделок. Вывода на 3,3; 5 и 12 В - подключайте что-хотите. Есть и чисто корпуса от блоков питания и много чего для Ардуино (сами Ардуино-платы, датчики...).
Основа: BUTTERFLY INNERFORCE TAMCA ULC  
FH: XIOM VEGA Х max
BH: XIOM VEGA PRO max
Re: В помощь начинающему роботостроителю
Похоже, после окончания карантина у каждого второго теннисиста будет робот, сделанный своими руками!)
Friendship Sensor Grip OFF
FH   Friendship 729 God Favored
BH   XVT
Re: В помощь начинающему роботостроителю
На конец-то добрался до стола (официально все залы закрыты на карантин).
Провел предварительные испытания. В принципе работает, не без недостатков, конечно.
По механике : недостаточные углы поворота выше-ниже, в новой кострукции ствола на три мотора больше будет.
По электрике : на питание ардуины и ИК диодов надо поставить отдельный стабилизатор на 5 вольт, лучше линейный.  При большой нагрузке (реверс моторов при каждом мяче) датчик иногда не срабатывает.
У регуляторов (ESC EMAX BlHeli 30A) с текущими настройками большой запас по скорости управления. Реверс отрабатывают на ура. Можно вдоем играть, влево подрезку, вправо зависной топспин. Надо изменить настройки на более плавную реакцию, снизить нагрузку на БП.
По программе : ИК диод приемник подключить к прерыванию, в теории надежней срабатывать будет. Добавить набор готовых упражнений. EEPROM нужен мне или нет пока не понял.

Видео : https://youtu.be/PH0k6zhWoYc

PS: Подобрал клей, который хорошо приклеивает пористую резину! Полиуретановый клей.
Брал Момент для ПВХ лодок, больше не нашел в городе никаких. Клеил так : обезжирил, намазал пластиковое колесо и кольцо (диаметр меньше около 20%)  из резины,  через 5 минут второй слой и сразу одеваем кольцо, выравниваем и под пресс (хомут) на 24 часа.
Re: В помощь начинающему роботостроителю
Собрал очередную бета версию, ствол с тремя моторами.
На ESP32 и регуляторах ESC с прошивкой SimonK. Это тестовая версия для отработки программы,
не нравится со смартфона управлять, а на сенсорный пульт долго программу переделывать.
А на ESP32 буквально 10 проводов спаять, 4 резистора, 1 транзистор и 1 диод.
Как будет окончательный вариант, так и переделаю.
Программа такая - до 6 мячей, со своими параметрами, по кругу. Параметры такие:
1) число мячей (0 - нет);
2) мотор 1 - скорость;
3) мотор 2 - скорость;
4) мотор 3 - скорость;
5) угол выше - ниже;
6) угол лево - право;
7) величина случайной добавки к углу лево - право.
Можно выбрать № программы, если 0, то все мячи как задали, так и летят. Если задали другой номер, то углы лево-право из параметров игнорируются, а задаются от номера программы.
Например, 1-ый номер это 1-ый мяч влево, 2-ой вправо и покругу. Если 1-ый мяч - подрезка и число мячей - 1,
2-ой мяч - накат и число мячей - 7, с 3-го по 6-ой число мячей - 0, будет вылетать 1 подрезка влево, потом накат вправо, и еще 6 накатов, влево и вправо, далее по кругу.
Если № программы - 7, это 2 мяча влево, 1 мяч вправо, будет вылетать 1 подрезка влево, потом накат влево, потом накат вправо, и еще 5 накатов, 2 влево и 1 вправо, далее по кругу.
Величина случайной добавки к углу лево - право не игнорируется, добавляется так - к левому (0) прибавляется, от правого (100) отнимается. Если угол 0 (крайнее лево) и задали "random" 50
 - это случайно в левую половину, если 100 - это случайно по всему столу.
Добавил сохранение параметров мячей в энергонезависимую память - до 5 наборов. Потом можно будет понравившиеся серии перенести на № программы (в текст программы). Например, номер программы 11 - все параметры мячей прописаны, ни чего настраивать не надо,  12 номер - другие параметры и т.д.
 
Программа мне уже нравится, может надо будет добавить задание паузы в секундах после серии (0 - без паузы).

В ESC на Atmega8a c прошивкой SimonK изменил настройки: COMP_PWM=1 (было 0); MOTOR_BRAKE=1 (было 0); PC_PULSE_REVERSE=1 (было 0); BRAKE_POWER=MAX_POWER (было MAX_POWER*2/3); 
BRAKE_SPEED=8 (было 3). Стали лучше реверсировать, но все равно хуже чем мои EMAX 30A на SilabsF330 c прошивкой Blheli.

Видео : https://youtu.be/2PfsMl2Q3pw

Скетч для Arduino IDE: https://yadi.sk/d/j9irfmzYKUzzmw
Re: В помощь начинающему роботостроителю
На всякий случай спрошу, прежде чем допустить роковую ошибку роботостроителя :) :
а если поставить 4 мотора и моделировать типы вращений такими, как мы их слышим : "боковое-правое-верхнее" ?
У меня просто есть набор электроники  и моторов от аналогового двух-голового робота , хотел собрать одно-головго, но с боковыми вращениями...
Re: В помощь начинающему роботостроителю
Для такого достаточно 3 моторов - четыре будут избыточны
Re: В помощь начинающему роботостроителю
Добрался до стола. Проверял версию с тремя моторами.
ESC Emax BlHeli 30a быстро и точно управляют моторами, любые вращения в серии.
В программу добавил паузу после серии от 0 до 10 сек (0 - без паузы).

Видео - проверки пушки

https://youtu.be/di6ZcvWZqN8

Ссылка на скетч для Arduino IDE

https://yadi.sk/d/eJRJJz9n5rvUlg

Схему нарисовал - очень простая.
Re: В помощь начинающему роботостроителю
Добрый вечер,вопрос к RDV , какая у вас плата ESP 32? Пришла с алика esp 32_devkitc_v4,  но в ардуино такой нет,попробовал в нее залить ваш скетч, много всяких ошибок получается ,пока не пойму то ли что плата не та ,разбираюсь, какая у вас? Тогда понятнее будет
Re: В помощь начинающему роботостроителю
Вечер добрый. У меня ESP32 DEVKIT V1, в пушке на 30 выводов, а для экспериментов на 38. И ту и эту в ардуино IDE надо выбирать как " DOIT ESP32 DEVKIT V1 ". Кстати, автор библиотеки ESPUI выпустил очередную версию (где-то пару месяцев назад). У меня на ней страничка сделана. Он там подправил "слейдеры", теперь они синхронно отображаются на нескольких устройствах (мне это не актуально, только одним телефоном подключаюсь к есп). Зато у меня пропал контроль параметров на веб-странице, это когда значения ограничены диапазоном, например скорость не больше 100. Так что я остаюсь на старой версии библиотеки ESPUI.
Re: В помощь начинающему роботостроителю
Добрый день, помаленьку осваиваю ESP32, попробовал все ваши скетчи, компилируются все кроме последней бета версии, пишет error stray ' 357' in program, в инете поискал ,пишут где то затесались лишние знаки в скетче, увы я только начинаю осваивать ардуино, вряд ли  сам справлюсь. Все остальные скетчи компилируются нормально, пока ни чего к плате не подключал ,веб интерфейс и на телефоне и на компе появился,все нажимается управляется. У меня немного по другому сделан робот,подача шаров роторного типа,который крутит степ мотор а все остальное как у вас , три двигателя,прерывание опто парой. Если будет возможность посмотрите скетч бета 6 болс буду премного благодарен.
Re: В помощь начинающему роботостроителю
Ура, ошибку нашел ,был лишний пробел в первой строке, иду дальше.
Re: В помощь начинающему роботостроителю
На всякий случай, пишу свои версии библиотек с которыми у меня работает как надо.
Arduino  IDE 1.8.12
ESPUI  2.0.0
ESP32Servo 0.7.1
ESPAsyncWebServer 1.2.3
ArduinoJson  6.15.1
AsyncTCP 1.1.1
DNSServer 1.1.1.
Некоторые версии есть более новые, например ESPUI 2.0.1 и 2.0.2. Последнюю проверил, пропал контроль параметров задаваемых с веб-страницы, вернул версию 2.0.0.
Вот еще простой скетч, использую его для определения минимального значения для старта двигателя. У разных ESC обычно разные значения, кто то на 1115 стартует, а другой на 1123.
Ссылка  на яндекс диск: https://yadi.sk/d/9L687VgTrgjadg
В нем только пуск - стоп и задание скорости.
Re: В помощь начинающему роботостроителю
Вопрос к RDV, драйвера EMAX-30A, моторы 2208, при резком уменьшении оборотов мотор останавливается, идет писк (как будто калибровка). Если плавно уменьшать обороты, то все нормально. При увеличении оборотов тоже нормально. Мучаюсь уже который день. Думаю дело в настройках драйвера. Прошивка EMAX 14.9 Multi BLheli. Делал различные настройки в BLHeli Suite, ничего не помогает. Пробовал управлять с сервотестера, тоже самое. Прошу совета.
Re: В помощь начинающему роботостроителю
Я в настройках почти ничего не менял. Включил только режим "Bidirectional" для реверса. Пробовал прошивку "Tail" разницу не почувствовал. У вас похоже импульсный блок питания без дампера. У меня без него комп перезагружался, при резком торможении или реверсе, мотор работает как генератор, импульсный блок питания пытается отрегулировать это дело, в результате напряжение падает почти до нуля. После этого ESC тоже рестартует и весело пиликает мотором (как при калибровке). Схема дампера есть пару постов выше.
1 2 3 ... 7