Содержание
Фоторобот
Установка для съемки панорам на базе контроллера Freeduino, часть 2: контроллер и программирование в среде Arduino.exe
Freeduino
В этой части статьи будет описано использование контроллера Freeduino для управления панорамной съемкой с помощью установки, описанной в первой части. Так как это первая из статей, в которой затрагивается вопрос взаимодействия Freeduino и Windows, этому вопросу (установка драйверов, ПО для программирования) также будет уделено внимание.
В установке используется модель Freeduino Through-Hole (аналог Arduino Diecimila) с микроконтроллером ATmega328. Память программ — 32 К (2 К заняты загрузчиком), ОЗУ — 2 Кбайт, EEPROM — 1 Кбайт, тактовая частота — 16 МГц. Подробное описание устройства можно найти на сайте проекта Freeduino. Для практических нужд достаточно знать следующее:
- устройство имеет 14 контактов цифрового ввода/вывода (выводы работают с сигналами уровня 0/5 В, ток до 20 мА), 6 из них (№№3, 5, 6, 9, 10, 11) могут работать в режиме широтно-импульсной модуляции (ШИМ)
- выводы 1 и 2 совмещены с цепями обмена по USB и при подключении к компьютеру использоваться не могут
- устройство имеет 6 аналоговых входов АЦП, дискретность — 1024 уровня
- есть интерфейс USB
- питание осуществляется от USB либо от внешнего источника (оптимальное напряжение 7—12 В, имеется встроенный стабилизатор), переключение питания — перемычкой на плате
- встроенный предохранитель защищает компьютер при перегрузке при токе более 500 мА
- сброс микроконтроллера — аппаратный по USB от компьютера или кнопкой на плате
Freeduino Through-Hole. Верхний ряд разъемов — цифровые входы/выходы, нижний — аналоговые входы, питание и «сброс»
Для управления шаговым двигателем в установке используется плата расширения Motor Shield v3 на двух микросхемах L293D. С ее помощью можно независимо управлять двигателями постоянного тока (до 4), двигателями шаговыми (до 2), сервоприводами (до 2). Поддерживается ШИМ-режим. Сервоприводы управляются по отдельным каналам, двигатели постоянного тока и шаговые — по общим, поэтому одновременно можно подключать 2 шаговых двигателя, либо 1 шаговый и 2 двигателя постоянного тока, либо 4 двигателя постоянного тока.
Что нужно знать о Motor Shield v3:
- напряжение питания 5 В (слаботочная цепь и сервоприводы, питание поступает от стабилизированной цепи основного модуля Freeduino), 7—24 В (силовая цепь двигателей, питание от внешнего источника либо от внешней цепи питания основного модуля Freeduino; переключатель — перемычка на плате)
- максимально-продолжительный ток каждого канала 0,6 А
- для управления платой расширения используется библиотека Adafruit Motor shield library (AFMotor), которую следует распаковать в папку hardwarelibraries с ПО Arduino
Плата расширения Motor Shield v3. В верхнем левом углу разъем подключения сервоприводов. Слева и справа разъемы синего цвета для двигателей постоянного тока. Нижний разъем синего цвета — внешнее питание. Разъемы черного цвета для штыревого монтажа обеспечивают доступ к соответствующим выводам основного модуля Freeduino
Плата Motor Shield v3 устанавливается непосредственно в плату Freeduino Through-Hole
Плата Motor Shield v3 устанавливается непосредственно в плату Freeduino Through-Hole, при этом доступ к портам Freeduino обеспечивается через сквозные разъемы Motor Shield v3. Так как обмен данными осуществляется по общим цифровым каналам, не все из них можно использовать для задач, не связанных с управлением двигателями. Подробнее информацию о свободных портах можно найти на сайте ladyada.net в разделе вопросов и ответов по Motor Shield. Кратко же, свободными портами при подключении и объявлении в управляющей программе подключения двигателей к портам M1-M4 (синие клеммы), остаются все аналоговые входы, порты для сервомашинок 9 и 10, порт 2 и 13 (с ограничениями, связанными с подключением по USB и работой встроенного в плату индикатора загрузки контроллера на 13-м порте). Для управления камерой (дистанционное управление по USB) в описываемой в статье установке используется порт 9. В установке питание Motor Shield v3 осуществляется от цепи питания модуля Freeduino Through-Hole, к которой подключается внешний блок питания 7—8 В (6 аккумуляторов типа АА). Напряжение на клеммах двигателя в процессе работы 6—7 В, при сопротивлении обмоток в 10 Ом продолжительный ток лишь немного превышает допустимый 0,6 А.
Freeduino и Windows
Подключение Freeduino к компьютерам с ОС Windows (XP и 7) — простой процесс, требующий лишь выполнения последовательности действий, описанных в инструкции к устройству Freeduino. В комплект платы Freeduino Through-Hole входит диск с ПО и инструкциями (его также можно скачать с сайтов Arduino, Freeduino и прочих совместимых проектов). Имеющийся на диске архив arduino-0017.zip нужно распаковать в папку arduino-0017 в корень системного диска (C:). На плате Freeduino Through-Hole перемычкой устанавливаем питание по USB и после этого подключаем Freeduino Through-Hole к компьютеру. Система обнаружит новое устройство и предложит выбрать для него драйвер, указываем путь к нему: C:arduino-0017driversFTDI USB Drivers. После этого через Диспетчер устройств Windows нужно определить, какой из COM-портов приписан Freeduino, подключенному по USB:
Можно приступать к программированию. В папке arduino-0017 (или более поздних версий) имеется программа Arduino.exe — интегрированная среда разработки и загрузки, написанная на Java. В нее входят редактор кода, компилятор, модуль передачи программы в плату Freeduino/Arduino, справочная система и набор программ-примеров. В программе после подключения устройства Freeduino/Arduino нужно выбрать его тип и COM-порт подключения:
Для желающих программировать «визуально», а не в текстовом формате, есть программа Scratch for Arduino S4A.
Scratch for Arduino (S4A), программа для визуального программирования Arduino-совместимых платформ и обучения программированию
Программа управления панорамной съемкой, Arduino.
exe
Программа для управления панорамной съемкой должна выполнить следующие действия:
- подать сигнал 5 В на USB-порт камеры для съемки (устойчиво срабатывает, если сигнал подается в течение 1-2 секунд),
- выдержать паузу (3 секунды), необходимую на съемку,
- подать сигнал на шаговый двигатель — повернуть камеру на заданный угол,
- остановиться и подождать, пока конструкция стабилизируется (3 секунды),
- повторить цикл нужное число раз.
Цикл должен повторяться до тех пор, пока не будет обеспечен требуемый угол охвата пространства (я выбрал полуоборот). Кроме того, перед выполнением циклов съемки-поворота нужно выставить камеру в нужном направлении съемки, для этого шаговый двигатель должен свободно вращаться — с него нужно снять напряжение на время прицеливания.
Камера Canon PowerShot G9 оснащена зум-объективом с эквивалентным фокусным расстоянием 35—210 мм. На весь диапазон приходится 12 шагов привода зума, для панорамной съемки стоит использовать первые 5-6 шагов. С помощью поворотной головки со шкалой панорамирования было определено, что угол поворота камеры при панорамировании с минимальным фокусным расстоянием — ≈45°. При фокусном расстоянии, соответствующем шестому шагу зума, этот угол — ≈25° Если выбрать угол поворота для каждого цикла панорамирования 22°, можно снимать панораму и для шестой позиции зума, и для нулевой, выбросив в последнем случае из серии каждый второй кадр. Для промежуточных положений зума панорамная серия просто будет избыточной, что лишь увеличит время на обработку. Чтобы снять панораму с охватом в полуоборот при единичном повороте на 22°, понадобится 9 циклов «съемка-поворот».
Для управления шаговым двигателем (имя объекта motor) используются инструкции и функции из библиотеки AFMotor.h:
- AF_Stepper motor(«число шагов на полный оборот», «порт управления»),
- motor.setSpeed(«скорость в оборотах в минуту»),
- motor.release(),
- motor.step(«угол поворота», «направление», «режим вращения»).
Первая описывает шаговый двигатель. В нашем случае двигателя с 200 шагами на оборот, подключенного к первому и второму портам Motor Shield, инициализация выглядит так:
AF_Stepper motor(200, 1)
Вторая задает скорость вращения — на практике все нормально работает при скорости 4 оборота в минуту:
motor.setSpeed(4)
Третья инструкция «освобождает» двигатель, чтобы его можно было вращать:
motor.release()
Отмечу, что так как редуктор в установке не используется, в процессе съемки для фиксации неподвижной камеры питание с обмоток двигателя не снимается — команда motor.release() не подается внутри цикла, только лишь на этапе прицеливания. Чтобы установка не раскачивалась шаговым двигатель, выбран режим поворота Interleave — двойной точности и половинной скорости, при этом аргумент «угол поворота», задаваемый в шагах двигателя, нужно удвоить. Четвертая инструкция:
motor.step(angle*2, FORWARD, INTERLEAVE)
Язык программирования, применяемый в среде Arduino. exe, близок к C++. Программа имеет две обязательные функции: void setup() и void loop(). В первой выполняется инициализация, объявление переменных и объектов. Вторая — цикл выполнения инструкций, повторяющийся раз за разом, пока контроллер не будет отключен от цепи питания. Чтобы программа съемки панорамы не выполнялась более одного раза, цикл съемки нужно поместить не в void loop(), а в void setup(). Время в программе задается в миллисекундах. Код программы («скетч» в среде Arduino.exe) выглядит так:
Окно программы после компиляции. Код программы в виде текстового файла — pano_usb_shot_m.txt
Программа загружается в контроллер Freeduino и хранится там, даже если питание отключить. Чтобы запустить программу из памяти контроллера, нужно просто включить питание на блоке питания или нажать кнопку Reset.
Видеоролик о работе установки, файл 1 МБ, MP4.
11 июля 2011 Г.
Сергей Щербаков
Новости
Nikon готовит полнокадровую беззеркальную камеру Z8 – c 46-мегапиксельным сенсором и записью видео 8К 60 к/с
12 марта 2023
Sony готовит новую полнокадровую камеру ZV FF и топовую камеру с датчиком APS-C
12 марта 2023
Fujifilm прощается со 100-мегапиксельной среднеформатной камерой GFX 100
5 марта 2023
Раздел новостей >
The Maker Show: Эпизод 8.
Управление шаговым двигателем с помощью Arduino
Episode
The Maker Show
В этом выпуске The Maker Show Брет Стейтхэм покажет вам, как управлять шаговым двигателем с помощью Arduino.
Шаговые двигатели — один из незамеченных героев века. Без них просто не существовало бы жестких дисков, фрезерных станков с ЧПУ, 3D-принтеров и многого другого. Они могут делать гораздо больше, чем обычный двигатель постоянного тока, но эта возможность сопряжена с небольшой сложностью. Это видео надеется демистифицировать это и показать вам, как легко начать.
Двигатель 28BYJ-48, использованный в этом видео, недорог и легко доступен. Вы сможете найти их в Интернете менее чем за 10 долларов США, и они предложат фантастический способ попасть в мир шаговых двигателей. Возьмите один и следуйте за ним!
В этом видео рассказывается, как на самом деле управлять двигателем с помощью Arduino. Чтобы лучше понять внутреннее устройство двигателей 28BYJ-48 и то, как плата ULN2003 используется для их управления, посмотрите видео Брета «28BYJ-48 Stepper Motor and ULN2003 Driver Intro» (https://aka. ms/). 28BYJ).
Наконец, вы можете взять весь код и слайды из этого эпизода из репозитория Брета 28BYJ-48 на GitHub: https://aka.ms/28byjrepo
Нет, идите и включите моторы!
В этом выпуске:
[01:44] Подключаем все это
[05:20] Управление волнами
[07:15] Получение кода с GitHub
[08:10] Демонстрация управления волнами
[15:28] ] Демонстрация обратного направления
[16:40] Перемещение на определенное расстояние
[18:24] Рефакторинг кода для использования массивов
[20:05] Полный шаг и полушаг
[25:11] Библиотеки шаговых двигателей
[26:30] Демонстрация AccelStepper
FoIIow @bretstateham
FoIIow themakershow
В этом выпуске The Maker Show Брет Стейтхэм покажет вам, как управлять шаговым двигателем с помощью Arduino.
Шаговые двигатели — один из незамеченных героев века. Без них просто не существовало бы жестких дисков, фрезерных станков с ЧПУ, 3D-принтеров и многого другого. Они могут делать гораздо больше, чем обычный двигатель постоянного тока, но эта возможность сопряжена с небольшой сложностью. Это видео надеется демистифицировать это и показать вам, как легко начать.
Двигатель 28BYJ-48, использованный в этом видео, недорог и легко доступен. Вы сможете найти их в Интернете менее чем за 10 долларов США, и они предложат фантастический способ попасть в мир шаговых двигателей. Возьмите один и следуйте за ним!
В этом видео рассказывается, как на самом деле управлять двигателем с помощью Arduino. Чтобы лучше понять внутреннее устройство двигателей 28BYJ-48 и то, как плата ULN2003 используется для их управления, посмотрите видео Брета «28BYJ-48 Stepper Motor and ULN2003 Driver Intro» (https://aka.ms/). 28BYJ).
Наконец, вы можете взять весь код и слайды из этого эпизода из репозитория Брета 28BYJ-48 на GitHub: https://aka.ms/28byjrepo
Нет, идите и включите моторы!
В этом выпуске:
[01:44] Подключаем все это
[05:20] Управление волнами
[07:15] Получение кода с GitHub
[08:10] Демонстрация управления волнами
[15:28] ] Демонстрация обратного направления
[16:40] Перемещение на определенное расстояние
[18:24] Рефакторинг кода для использования массивов
[20:05] Полный шаг и полушаг
[25:11] Библиотеки Stepper
[26:30] AccelStepper demo
FoIIow @bretstateham
FoIIow themakershow
Отсутствует
Отсутствует
|