В данную часть сериала входит краткое описание автоматизированной системы проектирования электроники 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).
![фото](ircasiopano/s1/fitzing1m.jpg)
Для многих элементов можно менять такие параметры, как количество ножек и способ монтажа. Для сопротивлений можно задать номинал, причем в режиме просмотра будет показана правильная маркировка цветными кольцами.
![фото](ircasiopano/s1/fitzing3m.jpg)
![фото](ircasiopano/s1/fitzing2m.jpg)
Реализована возможность автоматической и ручной трассировки. В меню доступен ряд специфических элементов, применяемых исключительно при проектировке печатной платы.
В программе есть и простенький редактор для создания собственных элементов или модернизации уже имеющихся. При создании собственных элементов предлагается брать за основу элемент Mystery Part. В этом элементе можно изменять число контактов. Для редактирования изображений нужен внешний редактор для файлов в формате SVG.
![фото](ircasiopano/s1/fitzinge1.jpg)
![фото](ircasiopano/s1/fitzinge3.jpg)
![фото](ircasiopano/s1/fitzinge2.jpg)
![фото](ircasiopano/s1/fitzinge5.jpg)
![фото](ircasiopano/s1/fitzinge4.jpg)
Модуль управления двигателями
L298 представляет из себя четыре полумоста, объединённые по два сигналами разрешения работы. Популярное описание принципов работы этой микросхемы можно найти здесь. Чтобы полностью использовать потенциальные возможности микросхемы, придется задействовать 6 цифровых выходов и два аналоговых входа платы микроконтроллера. Это очень расточительно, и обычно используются дополнительные логические микросхемы и связь через последовательный порт с микроконтроллером. Но выбранная мной для этой установки плата Seeeduino Mega имеет избыточное для данной задачи количество портов, да и все возможности L298 я использовать не планировал, поэтому пошел по пути максимального упрощения схемы и минимизации числа используемых деталей. Поскольку у микросхемы есть запас по току для моих двигателей, то мерить его я не собираюсь и замыкаю ножки SENA и SENB не через сопротивление, а прямо на землю. Естественно, аналоговые входы в этом случае тоже не используются. Используемая мной батарея питания не потянет одновременную работу двух двигателей, поэтому входы IN1—IN4 обеих микросхем подключаются параллельно. Я собираюсь использовать одновременно обе обмотки двигателя, поэтому соединяю входы разрешения работы (ENABLE), обозначенные на схеме как ENA и ENB. Таким образом, для управления двумя двигателями будет задействовано 6 цифровых выходов: 2 для выбора двигателя и 4 для управления. Другими словами, можно было бы обойтись и Freeduino Nano v5. Но с точки зрения простоты реализации у Seeeduino Mega есть несколько плюсов: три дополнительных аппаратных последовательных порта, что позволяет легко реализовать одновременную работу по связи с компьютером, связи по Bluetooth и управление камерой Casio. Кроме того, есть переключатель напряжения логики в режим 3 В, что позволяет упростить схему подключения модуля Bluetooth.
Ниже приведены фотографии получившейся установки.
А так выглядит наглядное описание установки, подготовленное программой Fritzing.
А так программа Fritzing позволяет подготовить принципиальную схему в классическом виде.
И, наконец, печатная плата. Схема приведена исключительно для демонстрации возможностей программы Fritzing. Я ее не проверял и не использовал.
![фото](ircasiopano/s1/panam06dpcb2pup_pcbm.jpg)
Целиком проект, подготовленный в Fritzing, можно скачать здесь.
Программа управления двигателями
Программирование осуществлялось в среде Arduino IDE 1.0.1. Новая версия отличается наличием русского интерфейса и заменой расширения файлов проекта с «pde» на «ino». Изменения также коснулись библиотек и синтаксиса некоторых команд, поэтому старые проекты, возможно, придется править. С Java Runtime Environment или Java Development Kit версии 1.7 Arduino IDE 1.0.1 у меня работала крайне криво. Некоторые важные пункты меню типа «Сервис/Плата» были недоступны. С версией 1.6 все работает прекрасно.
Для поворота двигателя на один шаг используется следующая простая подпрограмма:
Подпрограмма поворота по часовой стрелке на заданный угол будет выглядеть так:
где переменная fq — полученный от телефона угол поворота, а переменная enable определяет, какой двигатель используется.
![фото](ircasiopano/s1/arduino1.jpg)
Как видно из приведенного снимка экрана, на всю программу было задействовано около 10% доступной памяти. Программу можно скачать здесь. Управление через Bluetooth полностью аналогично описанному в статье «Управление съемкой с помощью телефона». Для работы программы необходима библиотека MeetAndroid версии от 8 декабря 2011 года, причем в файле MeetAndroid.cpp надо заменить Serial на Serial1. В программе сохранен модуль управления камерой Sony NEX по ИК-каналу. Сигнал о спуске затвора подается одновременно на все подключенные камеры.
Программа управления камерой Casio
Управляющие команды взяты с сайта www.dicasoft.de. Собственно программный код предельно прост. Отправляем два однобайтных кода: один для начала операции, другой для завершения. Без кода завершения камера будет не готова к приему следующей команды. В случае управления изменением фокусного расстояния интервал между командами определяет величину изменения фокусного расстояния.
Подпрограмма спуска затвора:
Подпрограмма увеличения фокусного расстояния:
Подпрограмма уменьшения фокусного расстояния:
В следующих сериях будут рассмотрены управляющие программы для телефона.