Оглавление:

Ползунок камеры слежения за объектом с осью вращения. Напечатано на 3D-принтере и построено на контроллере двигателя постоянного тока RoboClaw и Arduino: 5 шагов (с изображениями)
Ползунок камеры слежения за объектом с осью вращения. Напечатано на 3D-принтере и построено на контроллере двигателя постоянного тока RoboClaw и Arduino: 5 шагов (с изображениями)

Видео: Ползунок камеры слежения за объектом с осью вращения. Напечатано на 3D-принтере и построено на контроллере двигателя постоянного тока RoboClaw и Arduino: 5 шагов (с изображениями)

Видео: Ползунок камеры слежения за объектом с осью вращения. Напечатано на 3D-принтере и построено на контроллере двигателя постоянного тока RoboClaw и Arduino: 5 шагов (с изображениями)
Видео: Возврат камеры после СЛЕЖЕНИЯ.Правильное включение функции слежения. 2024, Июль
Anonim
Image
Image
Проектирование оборудования + сборка + 3D-печать
Проектирование оборудования + сборка + 3D-печать

Проекты Fusion 360 »

Этот проект стал одним из моих любимых с тех пор, как мне удалось совместить свой интерес к созданию видео с DIY. Я всегда смотрел и хотел имитировать те кинематографические кадры в фильмах, где камера перемещается по экрану при панорамировании для отслеживания объекта. Это добавляет очень интересный эффект глубины к 2-мерному видео. Желая повторить это, не тратя тысячи долларов на голливудское оборудование, я решил сам сделать такой слайдер для камеры.

Весь проект построен на частях, которые можно распечатать на 3D-принтере, а код работает на популярной плате Arduino. Все файлы проекта, такие как файлы САПР и код, доступны для скачивания ниже.

Файлы для печати CAD / 3D доступны здесь

Файл кода Arduino доступен здесь

Проект вращается вокруг двух зубчатых щеточных двигателей постоянного тока и контроллера Basic Micro Roboclaw Motor. Этот контроллер двигателя может превратить щеточные двигатели постоянного тока в сервопривод превосходного типа с невероятной точностью позиционирования, большим крутящим моментом и полным вращением на 360 градусов. Подробнее об этом позже.

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

Материалы-

  • 2 стержня с резьбой m10 длиной 1 метр, используемые для соединения всех частей
  • 8 гаек M10 для крепления деталей к шпилькам с резьбой
  • 2 гладких стальных стержня длиной 95 см длиной 8 мм для скольжения слайдера
  • 4 подшипника lm8uu для плавного скольжения каретки по стальным стержням
  • 4 гайки длиной 10 мм m3 для крепления двигателя
  • 2 подшипника для скейтборда (внешний диаметр 22 мм, внутренний диаметр 8 мм) для оси вращения
  • 1x 15 мм подшипник для стороны холостого хода
  • 1x 4 см длинный болт m4 с контргайкой m4 для крепления промежуточного подшипника к детали, напечатанной на 3d-принтере.
  • Шестерня на 20 зубьев с внутренним диаметром 4 мм для двигателя ползуна. Точный шкив не очень важен, так как ваш двигатель постоянного тока должен иметь достаточный крутящий момент. Просто убедитесь, что он такой же, как у вашего ремня.
  • Ремень GT2 длиной 2 метра. Опять же, вы можете использовать любой ремень, если он соответствует шагу зубьев вашего шкива.

Электроника

  • 2 * Мотор-редукторы постоянного тока с энкодерами (один контролирует поперечное движение, а другой - ось вращения). Вот тот, который я использовал. Подробнее об этом читайте в части руководства, посвященной электронике.
  • Контроллер мотора постоянного тока RoboClaw. (Я использовал двойной контроллер на 15 А, поскольку он позволял мне управлять обоими двигателями с помощью одного контроллера)
  • Любой Ардуино. Я использовал Arduino UNO
  • Аккумулятор / источник питания. (Я использовал 2-элементный LiPo аккумулятор 7,4 В)
  • Экран (для отображения меню. Подойдет любой экран, совместимый с U8G, я использовал этот 1,3-дюймовый OLED-экран)
  • Ротационный энкодер (для навигации и настройки параметров в меню)
  • Физическая кнопка (для запуска движения ползунка)

Шаг 1. Проектирование оборудования + сборка + 3D-печать

Электроника
Электроника

Далее перейдем к электронике. Электроника - вот где этот проект обладает большой гибкостью.

Начнем с ядра этого проекта - двух щеточных двигателей постоянного тока.

Я выбрал щеточные двигатели постоянного тока по нескольким причинам.

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

Я выбрал именно этот двигатель постоянного тока. Этот двигатель давал мне чрезвычайно высокий крутящий момент, который был необходим для перемещения такой тяжелой нагрузки на камеру. Кроме того, высокая передача означала, что пиковые обороты были медленными, что означало, что я мог снимать более медленные движения, а высокая передача также приводила к более высокой точности позиционирования, поскольку одно вращение выходного вала на 360 градусов означало 341,2 отсчета энкодера двигателя.

Это подводит нас к контроллеру движения RoboClaw. Двойной контроллер двигателя постоянного тока Roboclaw Motor принимает простые инструкции от вашего Arduino с помощью простых кодовых команд и выполняет всю тяжелую обработку и подачу энергии, чтобы ваш двигатель работал должным образом. Arduino может отправлять сигналы на Roboclaw через ШИМ, аналоговое напряжение, простой последовательный или пакетный последовательный порт. Пакетный последовательный порт - лучший способ, поскольку он позволяет вам получать обратно информацию от Roboclaw, которая необходима для позиционного отслеживания. На следующем этапе (программирование) я углублюсь в программное обеспечение и программирование Roboclaw.

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

Следующая часть электроники - это экран. Для своего экрана я выбрал эту OLED-панель из-за ее размера и высокой контрастности. Эта высокая контрастность невероятна и делает экран очень простым в использовании под прямыми солнечными лучами, при этом не выделяя слишком много света, который может помешать снимку камеры в темноте. Этот экран можно легко заменить на другой экран, совместимый с U8G. Полный список совместимых экранов доступен здесь. Фактически, этот проект был намеренно написан на основе библиотеки U8G, чтобы строители DIY, такие как вы, имели больше гибкости в своих частях.

Последними частями электроники для этого проекта были поворотный энкодер и кнопка для запуска движения ползунка. Кодировщик позволяет перемещаться по экранному меню и настраивать все меню слайдера с помощью всего лишь одного диска. Поворотный энкодер не имеет «конечного» положения, как традиционный потенциометр, и это особенно полезно для настройки координат x и y объекта, отслеживаемого на экране. Кнопка используется исключительно для запуска движения ползунка без необходимости возиться с поворотным энкодером.

Шаг 3: программирование слайдера камеры

Программирование слайдера камеры
Программирование слайдера камеры
Программирование слайдера камеры
Программирование слайдера камеры

Кодирование было, безусловно, самой сложной задачей в этом проекте. Понимаете, с самого начала я хотел, чтобы ползунком можно было управлять с экрана. Чтобы сделать этот проект совместимым с максимально возможным количеством экранов, мне пришлось использовать библиотеку U8Glib для Arduino. Эта библиотека поддерживает более 32 экранов. Однако библиотека U8Glib использовала цикл изображения для рисования меню на экране, и это противоречило способности Arduino одновременно собирать информацию о положении камеры, которая требовалась для функции вычисления угла камеры (это рассматривается в следующих парах абзацев.). В U8Glib2 есть альтернатива циклу изображения, использующая так называемый вариант полного буфера страницы, но библиотека потребляет слишком много памяти и затрудняет размещение остальной части кода с учетом ограничений памяти Arduino Uno. Это означало, что я застрял в U8G и должен был обойти проблему, не позволяя экрану обновляться каждый раз, когда ползунок находился в движении, а Arduino требовалось собирать позиционные данные от Roboclaw. Я также был вынужден запустить ползунок, чтобы начать движение за пределы цикла меню, поскольку как только я вошел в подменю, я оказался внутри цикла изображения, и ползунок не работал, как предполагалось. Я также обошел эту проблему, установив отдельную физическую кнопку, запускающую движение ползунка.

Теперь поговорим об элементе отслеживания вращения. Эта часть кажется очень сложной для интеграции, но на самом деле она довольно проста. Реализация для этого находится в функции «motor ()» в моем коде Arduino. Первый шаг - создать двухмерную сетку и решить, где разместить объект, который вы хотите отслеживать. Исходя из этого, вы можете нарисовать треугольник для вашего текущего местоположения. Вы можете получить свое текущее местоположение по значению энкодера двигателя. Если вы хотите настроить положение отслеживаемого объекта в см / мм, вам нужно будет перевести значение энкодера в значение в см / мм. Это можно просто сделать, переместив ползунок камеры на 1 см и измерив увеличение значения энкодера. Вы можете ввести это значение в верхней части кода под переменной encoder_mm.

Двигаясь дальше, теперь мы будем использовать функцию обратной касательной, чтобы получить угол, под которым камера должна быть направлена на ваш объект. Обратная касательная берет на себя противоположную и смежную сторону треугольника. Противоположная сторона треугольника никогда не меняется, так как это расстояние y от вашего слайдера до объекта. Однако прилегающая сторона ползунка камеры меняется. Эту прилегающую сторону можно рассчитать, взяв положение объекта по оси x и вычтя из него ваше текущее положение. По мере того, как ползунок перемещается по диапазону движения, он будет продолжать обновлять Arduino по значению кодировщика. Arduino будет многократно преобразовывать это значение энкодера в позиционное значение в см / мм x, а затем вычислять длину соседней стороны и, наконец, вычислять угол, под которым камера должна быть обращена все время, чтобы указывать на объект.

Теперь, когда наш Arduino динамически обрабатывает угол камеры, мы можем преобразовать этот угол в позиционное значение, к которому будет перемещаться двигатель вращения. Это подводит нас к самой большой функции RoboClaw для этого проекта. Задавая Roboclaw значение положения, он может заставить щеточный двигатель постоянного тока вести себя как сервопривод. За исключением того, что в отличие от сервопривода, у нашего двигателя намного больше крутящего момента, гораздо более высокая точность, а также он может вращаться на 360 градусов.

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

roboclaw. SpeedAccelDeccelPositionM1 (адрес, «скорость», «ускорение», «замедление», «позиция, в которую вы хотите перейти», 1);

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

RoboClaw также дал мне возможность настраивать другие факторы, такие как ускорение, замедление и значения PID. Это также позволило мне сгладить движение оси вращения, особенно когда изменения угла были крошечными, и добавились рывки без высокого значения PID «D». Вы также можете автоматически настроить значения PID через настольное приложение Roboclaw.

Шаг 4. Использование ползунка камеры

Управление слайдером камеры
Управление слайдером камеры

Теперь мы переходим к самой интересной части, работе с ползунком. В меню есть 4 основные вкладки. Верхняя вкладка предназначена для управления скоростью. Средняя строка меню содержит вкладки для настройки положения отслеживаемого объекта по осям X и Y в мм, а также для настройки того, хотим ли мы, чтобы ползунок вращался и отслеживал наш объект, или просто выполнял простое скользящее движение без поворота. Вращение поворотного энкодера позволяет нам перемещаться по различным параметрам меню. Чтобы настроить любой из параметров, перейдите к нему и нажмите поворотный регулятор. После нажатия поворот поворотного энкодера изменит значение выделенного подменю, а не пролистывает меню. Как только вы достигли желаемого значения, вы можете снова щелкнуть поворотный энкодер. Теперь вы вернулись в главное меню и можете перемещаться между различными вкладками. Когда вы будете готовы, просто нажмите кнопку перехода рядом с экраном, и ползунок сделает свое дело!

Убедитесь, что после того, как вы закончите использовать ползунок камеры, камера находится в «исходном» положении: стороне ползунка, на котором она была запущена. Причина этого в том, что энкодер двигателя не является абсолютным энкодером, что означает, что Roboclaw / Arduino не может определить, где находится энкодер. Они могут только сказать, насколько изменился кодировщик с момента последнего включения. Это означает, что когда вы выключаете ползунок камеры, ползунок «забудет» положение ползунка и сбросит кодировщик на 0. Следовательно, если вы выключите ползунок на другой стороне, когда вы включите его, ползунок будет попробуйте пройти дальше края и врезаться в стенку слайдера. Такое поведение кодировщика также является причиной того, что камера сбрасывает угол поворота после каждого перемещения камеры. Ось вращения также защищает себя от столкновения в конце диапазона своего движения.

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

Шаг 5: Заключительные мысли + будущие улучшения

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

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

Наконец, если бы я сделал версию 2.0, вот некоторые улучшения, которые я бы внес.

  1. Более высокое передаточное число для двигателя оси вращения. Более высокое передаточное число означает, что я могу делать более точные небольшие движения. Это особенно важно, когда камера находится далеко от объекта, а угол обзора камеры меняется очень медленно. В настоящее время мой мотор не настроен слишком высоко, и это может привести к легким рывкам, когда ползунок камеры движется слишком медленно или когда угол поворота меняется очень мало. Добавление высокого значения PID «D» помогло мне избавиться от этого, но это произошло за счет немного меньшей точности отслеживания объекта.
  2. Модульная длина. Это надуманная цель, но мне бы хотелось, чтобы слайдер камеры был модульным по длине, что означает, что вы можете легко прикрепить более длинные направляющие, по которым камера будет скользить. Это довольно сложно, так как нужно будет идеально выровнять обе гусеницы и выяснить, как работает система ремня. Тем не менее, это был бы крутой апгрейд!
  3. Пользовательское движение по ключевым кадрам. Я хотел бы представить концепцию движений по ключевым кадрам в этом слайдере камеры. Ключевые кадры - это метод, очень часто используемый в производстве видео и аудио. Это обеспечило бы нелинейные движения камеры, когда камера переходит в определенную позицию, ждет, затем перемещается в другую позицию с другой скоростью, ждет, затем переходит в третью позицию и т. Д.
  4. Управление Bluetooth / беспроводным телефоном. Было бы действительно здорово иметь возможность настраивать параметры слайдера камеры по беспроводной сети и иметь возможность развертывать слайдер камеры в труднодоступных местах. Приложение для телефона также может открыть возможности для интеграции ключевых кадров, как упоминалось в последнем абзаце.

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

Дополнительную информацию по содержанию и руководству по электронике вы также можете найти на моем канале YouTube здесь.

Рекомендуемые: