241

Ответ на пост «Восстание машин откладывается»1

Ну вы конечно проснулись. Видео про Octo-Bouncer вышло на Ютубе почти два года назад:

Автор написал короткую статью о разработке, привожу ее перевод.

Я задумался о создании машины для жонглирования мячом в 2015 году. Первые попытки осуществить задуманное я совершил в 2017. Сейчас на дворе 2020 год, и наконец-то у меня получилось создать аппарат, способный надежно жонглировать мячом для настольного тенниса. Текущая конфигурация робота способна удерживать мяч в движении в течение нескольких часов.

Комплектующие

- 1х микроконтроллер Teensy 4.0, прошитый вот этим кодом

- 4х драйвер для шаговых двигателей StepperOnline DM442S

- 4х шаговый двигатель Nema 17 с планетарным редуктором 5:1

- 1х блок питания на 48 В, 8 А

- 1х камера e-con Systems See3CAM_CU135

- Компьютер с Windows и OpenCV

- Чертежи частей выполнены в этом проекте Fusion360

- Управляющая программа, написанная в Unity

Почему Teensy 4.0?

Потому что он работает на частоте 600 МГц. Сравните с 16 МГц, на которых работает большинство плат Arduino. Почему тактовая частота так важна? Потому что необходимо генерировать импульсы с частотой до 250 кГц для каждого из 4-х шаговых двигателей. Поскольку мы хотим, чтобы шаговые двигатели запускались и останавливались плавно, интервал между импульсами должен увеличиваться/уменьшаться по синусоидальному или сигмовидному закону. Линейное увеличение скорости, скорее всего, не сможет обеспечить необходимую плавность движения. Выходит слишком много вычислений для 16 МГц, поэтому я остановил свой выбор на Teensy 4.0.

В качестве приятного бонуса мы получаем FPU (модуль для работы с числами с плавающей запятой), поддерживающий как 32-битные, так и 64-битные числа.

Нам действительно нужно 600 МГц?

«Но зачем генерировать импульсные сигналы с частотой 250 кГц? Моторы ведь вращаются не так быстро. Разве не хватит, например, 10 кГц?» Хороший вопрос. Вот что я обнаружил, пытаясь заставить свои моторы двигаться как можно быстрее:

- Чем больше микрошагов, тем лучше- Чем выше напряжение, тем лучше

Я установил настройку микрошага на своих драйверах на 25 600 шагов за оборот. Не забывайте, что мы используем редуктор 5:1. Выходит 128 000 шагов за оборот. Выбор частоты 250 кГц уже не кажется слишком нелогичным. На следующем изображении показаны первые 9 мс сигнала длительностью 150 мс:

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

Что делает микроконтроллер?

Микроконтроллер Teensy 4.0 выполняет простую программу:

1. Слушает команды движения, передаваемые по последовательной шине

2. Генерирует импульсы для управления шаговыми двигателями

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

0.11941:0.11941:0.11941:0.11941:0.15000

Каждая команда содержит 5 чисел, разделенных двоеточиями. Первые 4 значения — это абсолютные позиции двигателей (в радианах), пятое значение — время движения. С помощью инструкции, приведенной в качестве примера, мы говорим машине переместить все свои двигатели в абсолютное положение 0.11941 радиан за 0.15 секунд. Машина будет выполнять команды последовательно, в порядке поступления.

Что делает приложение на компьютере?

Я написал приложение для обработки изображений размером 640x480 пикселов со скоростью 120 кадров в секунду. Приложение выполняет следующую программу:

- Настраивает камеру (поток данных 120 FPS, разрешение 640x480, усиление, экспозиция, контрастность, ISO, насыщенность) через OpenCV

- Распознает окружность с помощью алгоритма преобразования Хафа из библиотеки OpenCV

- Находит трехмерное положение мячика для пинг-понга

- Рассчитывает скорость мяча

- Использует положение и скорость шарика для расчета коррекции наклона пластины с помощью ПИД-регулятора

- Рассчитывает инверсную кинематику, чтобы выяснить, как с помощью поворота двигателей поднять пластину на определенную высоту с определенным наклоном

- Отправляет результаты расчета инверсной кинематики в микроконтроллер через последовательный интерфейс

- Отрисовывает мяч, движения машины и результаты обработки изображения с камеры

Как я изготовил алюминиевые части

Мой аппарат состоит из более чем 150 алюминиевых деталей. Производство всех деталей потребовало очень много терпения. Мой станок Benbox CNC 1310 работал (почти) без остановок в течение нескольких недель. Общее время обработки всех деталей составило около 160 часов.

«Почему станок с ЧПУ такой медленный?» Потому, что шпиндель не такой мощный, как хотелось бы, всего на 80 Вт.

Еще я сделал звуконепроницаемый контейнер для станка, чтобы не сойти с ума :)

Я использовал фрезу диаметром 1.5 мм и лист алюминиевого сплава 6061 толщиной 3 мм. Я закреплял рабочую поверхность четырьмя болтами, чтобы обеспечить максимально ровную поверхность. Прикрепляю еще несколько фотографий, сделанных во время работы над проектом.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества