Фотокубики 2012Управление двигателями и спуск затвора камеры CasioВ данную часть сериала входит краткое описание автоматизированной системы проектирования электроники Fritzing, модуль управления биполярными шаговыми двигателями на двух микросхемах L298 и программное обеспечение для него, программа управления камерой Casio QV-4000. Проект FritzingДве микросхемы можно соединить проводами на макетной плате, и не вычерчивая предварительно принципиальную и монтажную схемы. Но если на одной макетной плате планируется собрать несколько модулей и особенно если в дальнейшем проект планируется повторять, то наличие читаемой внятной схемы становится крайне желательным. Основная задача технической документации - это дать возможность воспроизвести устройство, руководствуясь ей. Этой задачи служит и стандартизация документации. Документ, составленный строго в соответствии с ГОСТами, позволяет собрать устройство через много лет и даже в том случае, когда этим занимаются люди, не работавшие ранее с данным типом устройств. Однако этот метод не всегда является самым наглядным и удобным в случае, когда информация предназначена для тех, кто в теме. Можно провести аналогию между академическим языком и техническим жаргоном. Устройства на базе конструктора Arduino оперируют более крупными блоками, чем отдельная микросхема, и при сборке часто бывает полезнее знать номер на плате, а не не соответствующий номер ножки микросхемы. Проект Fritzing - это попытка создать автоматизированную систему проектирования электроники, заточенную именно под различные конструкторы на базе микроконтролеров. Программа позволяет расположить элементы на макетных платах нескольких типов, вычертить принципиальную схему и развести дорожки по двухслойной печатной плате. Проект стартовал в 2008 году. Текущая версия программы 0.7.10b(eta) опубликована 16 октября 2012 года под лицензией GNU GPL v3. С сайта проекта можно скачать исходный код и версии для Windows, Mac OS X 10.5, Linux (64-bit), Linux (32-bit). Некоторые макетные платы, доступные в проекте.
Так выглядит простейшая схема в режиме просмотра Макетная плата.
Для многих элементов можно менять такие параметры, как количество ножек и способ монтажа. Для сопротивлений можно задать номинал, причем в режиме просмотра будет показана правильная маркировка цветными кольцами. А так выглядит та же схема в режиме просмотра Принципиальная схема.
А так в режиме просмотра Печатная плата.
Есть возможность автоматической и ручной трассировки. В меню доступен ряд специфических элементов, применяемых исключительно при проектировке печатной платы. В программе есть и простенький редактор для создания собственных элементов или модернизации уже имеющихся. При создании собственных элементов предлагается брать за основу элемент Mystery Part. В этом элементе можно изменять число контактов. Для редактирования изображений нужен внешний редактор для файлов в формате SVG. В этом окне можно приписать соединения отдельным элементам рисунка, демонстрируемого в режиме Макетная плата.
Аналогичная операция для принципиальной схемы.
И для печатной платы.
В этом окне можно отредактировать свойства элемента.
А это окно позволяет менять число и тип контактов.
Модуль управления двигателямиL298 представляет из себя четыре полумоста, объединённые по-два сигналами разрешения работы. Популярное описание принципов работы этой микросхемы можно найти здесь. Чтобы полностью использовать потенциальные возможности микросхемы, придется задействовать 6 цифровых выходов и два аналоговых входа платы микроконтроллера. Это очень расточительно, и обычно используются дополнительные логические микросхемы и связь через последовательный порт с микроконтроллером. Но выбранная мной для этой установки плата Seeeduino Mega имеет избыточное для этой задачи количество портов, да и все возможности L298 я использовать не планировал, поэтому пошел по пути максимального упрощения схемы и минимизации числа используемых деталей. Поскольку у микросхемы есть запас по току для моих двигателей, то мерить его я не собираюсь и замыкаю ножки SENA и SENB не через сопротивление, а прямо на землю. Естественно, аналоговые входы в этом случае тоже не используются. Используемая мной батарея питания не потянет одновременную работу двух двигателей, поэтому входы IN1-IN4 обеих микросхем подключаются параллельно. Я собираюсь использовать одновременно обе обмотки двигателя, поэтому соединяю входы разрешения работы (ENABLE), обозначенные на схеме как ENA и ENB. Таким образом, для управления двумя двигателями будет задействовано 6 цифровых выходов. Два для выбора двигателя и 4 для управления. Т.е. можно было бы обойтись и Freeduino Nano v5. Но с точки зрения простоты реализации у Seeeduino Mega есть несколько плюсов: три дополнительных аппаратных последовательных порта, что позволяет легко реализовать одновременную работу по связи с компьютером, связи по Bluetooth и управление камерой Casio. Кроме того, есть переключатель напряжения логики в режим 3 В, что позволяет упростить схему подключения модуля Bluetooth. Ниже приведены фотографии получившейся установки. Вид установки целиком.
Только электронная часть в собранном состоянии.
Электронная часть в полуразобранном состоянии.
А так выглядит наглядное описание установки, подготовленное программой Fritzing. А так программа Fritzing позволяет подготовить принципиальную схему в классическом виде. И, наконец, печатная плата. Схема приведена исключительно для демонстрации возможностей программы Fritzing. Я ее не проверял и не использовал. Целиком проект, подготовленный в Fritzing, можно скачать здесь. Программа управления двигателямиПрограмирование осуществлялось в среде Arduino IDE 1.0.1. Новая версия отличается наличием русского интерфейса и заменой расширения файлов проекта с «pde» на «ino». Изменения также коснулись библиотек и синтаксиса некоторых команд, поэтому старые проекты, возможно, придется править. С Java Runtime Environment или Java Development Kit версии 1.7 Arduino IDE 1.0.1 у меня работала крайне криво. Некоторые важные пункты меню типа «Сервис/Плата» были недоступны. С версией 1.6 все работает прекрасно. Для поворота двигателя на один шаг используется следующая простая подпрограмма: void Faza() { byte fazaA[] = {HIGH, HIGH, LOW, LOW}; byte fazaB[] = {LOW, LOW, HIGH, HIGH}; byte fazaC[] = {LOW, HIGH, HIGH, LOW}; byte fazaD[] = {HIGH, LOW, LOW, HIGH}; int faz; if (enable == enable1) { faz1 = faz1 + napr; if (faz1 > 3) {faz1 = 0;} else if (faz1 < 0) {faz1 = 3;} faz = faz1; } else { faz2 = faz2 + napr; if (faz2 > 3) {faz2 = 0;} else if (faz2 < 0) {faz2 = 3;} faz = faz2; } digitalWrite(enable, HIGH); digitalWrite(inp1, fazaA[faz]); digitalWrite(inp2, fazaB[faz]); digitalWrite(inp3, fazaC[faz]); digitalWrite(inp4, fazaD[faz]); delay(dt1); digitalWrite(enable, LOW); } Подпрограмма поворота по часовой стрелке на заданный угол будет выглядеть так: void fq(byte flag, byte numOfValues)//Поворот по часовой стрелке в { int fq = meetAndroid.getInt(); mstepxd = 35*fq/9; napr = 1; enable = enable1; for (int i=0; i <= mstepxd; i++) { mstepx = mstepx + napr; Faza(); } SendUgolG();//Передаем данные об горизонтальном угле телефону } где переменная fq - полученный от телефона угол поворота, а переменная enable определяет, какой двигатель используется. Как видно из приведенного снимка экрана, на всю программу было задействовано около 10% доступной памяти. Всю программу можно скачать здесь. Управление через Bluetooth полностью аналогично описанному в статье Управление съемкой с помощью телефона. Для работы программы необходима библиотека MeetAndroid версии от 8 декабря 2011 года, причем в файле MeetAndroid.cpp надо заменить Serial на Serial1. В программе сохранен модуль управления камерой Sony NEX по ИК каналу. Сигнал о спуске затвора подается одновременно на все подключенные камеры. Программа управления камерой CasioУправляющие команды взяты с сайта www.dicasoft.de. Собственно программный код предельно прост. Отправляем два однобайтных кода: один для начала операции, другой для завершения. Без кода завершения камера будет не готова к приему следующей команды. В случае управления изменением фокусного расстояния интервал между командами определяет величину изменения фокусного расстояния. Подпрограмма спуска затвора: void Zatvor() { digitalWrite(13, HIGH);//Индикация паузы светодиодом на плате delay(wp);// Пауза перед спуском затвора digitalWrite(13, LOW); byte inByte = 66; Serial2.write(inByte); delay(15); inByte = 98; Serial2.write(inByte); digitalWrite(13, HIGH); delay(wzat); // Время нажатия кнопки затвора digitalWrite(13, LOW); } Подпрограмма увеличения фокусного расстояния: void fz(byte flag, byte numOfValues)//Зум T { int fw = meetAndroid.getInt(); digitalWrite(13, HIGH); byte inByte = 68; Serial2.write(inByte); delay(fw); inByte = 100; Serial2.write(inByte); digitalWrite(13, LOW); } Подпрограмма уменьшения фокусного расстояния: void fw(byte flag, byte numOfValues)//Зум W { int fw = meetAndroid.getInt(); digitalWrite(13, HIGH); byte inByte = 67; Serial2.write(inByte); delay(fw); inByte = 99; Serial2.write(inByte); digitalWrite(13, LOW); } В следующих сериях будут рассмотрены управляющие программы для телефона. 14.11.2012
Установите проигрыватель Flash
|
Облако тегов:
...
|