Поворотный стол с фоторезисторами на Arduino

Опубликовано: 27.11.2018

видео Поворотный стол с фоторезисторами на Arduino

Крутящаяся платформа на Arduino

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


Маячок для мачты на ARDUINO + фоторезистор .

Проект будет интересен как новичкам в Arduino так и людям с опытом. Уверены, что начинающие Ардуинщики откроют для себя что-то новое и при этом разработают реальную конструкцию вращающегося стола. В проекте использованы комплектующие от Adafruit, но вы смело можете заменить их на аналоги от других (в том числе и Китайских) производителей.


Датчик движения и плавное включение светодиодной ленты на ATtiny13

Список необходимых компонентов

Плата Arduino Uno R3 (с микропроцессором Atmega328) Блок питания 5 В для Arduino Uno R3 Что-то в качестве вращающейся платформы (в данном случае используется напечатанная на 3D принтере деталь) Много проводов (по правде говоря, их никогда не бывает много ;) ) Шаговый двигатель NEMA-17 , 200 шагов, 12 вольт 350мА или его аналог Adafruit Motor Shield для Arduino v. 2.3 (или китайский аналог). Источник питания на 12 вольт для мотор-шилда (так как питания Arduino будет недостаточно). Бредборд . Датчики освещения - фоторезисторы .

Перед тем как вы начали: в проекте используется мотор-шилд. В зависимости от поставщика, его иногда надо распаять. Детальная инструкция по распайке мотор-шилда v.1 для Arduino .

Ниже приведены ссылки на STL файлы, которые вы можете использовать (и изменять при желании) в проекте, если у вас есть доступ к 3D принтеру.

Подключаем источник питания

После сборки мотор-шилда, устанавливаем его на Arduino и подключаем к нему источник питания. Волноваться за Arduino не стоит, так как у него отдельное питание 5 В от USB или от блока питания.

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

Все. Можете подключать питание к адаптеру и (если вы ничего не перепутали!), мотор-шилд готов к работе.

Подключаем шаговый двигатель

На этом этапе мотор-шилд уже подключен к Arduino Uno, снимать его не надо, а вот питание можете пока что отключить.

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

Для теста вам надо скачать библиотеку library for the stepper motor . Импортируйте библиотеку в Arduino и включите ее в код в директиве include.

Внимание : не используйте встроенную библиотеку под названием "Stepper" из раздела Examples. Эта библиотека подходит для шилдов версии 1.0. Для запуска шагового двигателя воспользуйтесь именно скачанной по ссылке выше библиотекой.

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

Тестируем датчики освещения

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

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

Для наглядности - для подключения 4-х датчиков освещенности к контактам 2, 3, 6 и 7 - использовались проводники разных цветов. В качестве источника питания можно использовать контакты 5 V и 3.3 V на Arduino. В библиотеке, код которой приведен по ссылке, каждый датчик освещенности связан с углом поворота: 0, 90, 180, 270 (0 равен 360). Таким образом, в зависимости от времени, которое понадобится электрическому сигналу, чтобы достичь Arduino, можно симулировать угол поворота платформы. Чтобы увидеть результат, просто накройте рукой один из фоторезисторов.

Для проверки датчиков освещенности вам надо:

Подать питание (в нашем случае - это контакты 3.3v и 5v на Arduino Uno R3). Подключить питание к рельсе монтажной платы. Установить датчики освещенности. При подключении фоторезисторов каждому надо выделить собственный канал, поэтому один установлен ножкой на следующей рельсе, а второй - через одну рельсу. Подключить провода к цифровым или аналоговым пинам на Arduino. С них вы будете снимать показания. Убедитесь, что вы сменили в коде номера контактов, которые вы подключили. Если вы используете аналоговые контакты, измените методы digitalRead() и digitalWrite на analogRead() и analogWrite() соответсвенно). Возможно, вам также надо будет подстроить метод RCTime(). Загрузить скетч на ваш Arduino Uno R3, откройте серийный монитор и можете отслеживать результат тестирования.

Синхронизируем шаговый двигатель и фоторезисторы

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

Пошаговое разъяснение кода для Arduino:

Текущий угол сохраняется в переменной в качестве предыдущего угла. Получаем угол датчика освещения, который отсылает сигнал дольше всего. Проверяем, равен или больше нуля текущий угол. Если условие выполняется, заменяем значение текущего угла на предыдущее и больше ничего не делаем. Получаем разницу между новым и предыдущим углом. Сравниваем разницу. Допустимые значения: -270, -180, -90, 0, 90, 180, 270: Движение вперед 90: 90, -270 (от 270 до 0); Движение назад 90: -90, 270 (от 0 до 270); Движение вперед 180: 180; Движение назад 180: -180; Поворот в положение, определенное с помощью датчика освещенности (эти значения рассчитаны на двигатели с 200 шагами на один оборот. То есть, на один шаг приходится 1.8 градуса): Движение вперед 90: (50 x 1.8) = 90, FORWARD (clockwise); Движение назад 90: (50 x 1.8) = 90, BACKWARD (counter-clockwise); Движение вперед 90: (100 x 1.8) = 180, FORWARD (clockwise); Движение назад 90: (100 x 1.8) = 180, BACKWARD (counter-clockwise);

Закомментированные строчки кода - это пример различных шагов, которые вы можете использовать в проекте. Они остались от предыдущего кода, приведенного в статье.

На видео ниже представлен результат синхронизации работы фоторезисторов и шагового двигателя:

Собственный дизайн конструкции поворотного стола

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

Если у вас есть доступ к 3D принтеру, то можете напечатать детали, предложенные в начале статьи или воспользоваться этими stl файлами . Если у вас есть доступ к лазерному резаку - можно собрать конструкцию из акрила/фанеры. Использованный в проекте двигатель Nema 17 отлично потянет и алюминиевый столик.

Любые вопросы и уточнения приветствуются в комментариях ниже.