Основные параметры:
- 8 портов, каждый из которых может работать как цифровой выход или вход,
- управление и питание от порта USB,
- использует класс связи CDC,
- эмулирует последовательный порт COM, параметры связи 9600, 8, 1, нет,
- драйверы для систем Win XP, Win7
(32 бита).
- специальное приложение для Windows
с исходным кодом в .NЕТ С #,
- размеры 79x41 мм, выделенный корпус G403.
Работа схемы
Устройство было создано на основе проекта CDC-IO, источник и подробное описание которого можно найти по адресу http://www.recursion.jp/avrcdc/сdc-io.html, а его создателем является Осаму Тамура.
Схема системы показана на рисунке 1. Напряжение от USB-разъема сначала подается на фильтр CI, LI, C2, C5, затем после прохождения через два выпрямительных диода, соединенных последовательно в местах элементов R21 * и R22 *, опускается до уровня примерно 3,5 В и дополнительно фильтруется С6.
Несмотря на простое решение, этот «регулятор напряжения» обеспечивает полностью корректную работу системы.
Единственным недостатком является то, что значение этого напряжения может варьироваться в зависимости от нагрузки на выходах устройства. Если это не приемлемо, то можно использовать «реальный»
Стабилизатор USI на месте LM3940-3.3V. Сигналы от разъема USB через резисторы с небольшим сопротивлением R1 и R2 поступают непосредственно на микроконтроллер, сигнал USBB (D-) дополнительно подается на источник питания плюс - в соответствии со спецификацией USB, таким образом определяется скорость связи, в данном случае «низкая скорость» "(1,5 Мбит / с). Восемь микроконтроллерных линий через защитные резисторы низкого сопротивления подключены к выходному разъему OUT и к светодиодам, которые показывают состояние выходов. Дополнительный диод - LEDI, не связан с разъемом и может быть использован как индикатор состояние устройства. Помимо этих элементов в схеме имеется только кварцевый резонатор с конденсаторами и резистора сигнала сброса.
Связь с модулем.
Программное обеспечение CDC-IO реализует простой интерфейс USB1.1 в микроконтроллере AVR.
После подключения компьютера к USB-порту и его установки устройство будет распознано как виртуальный последовательный порт. Для управления работой устройства отправьте простые текстовые команды с компьютера на этот порт, используя любую терминальную программу или специальное приложение. В таблице 1 перечислены поддерживаемые команды.
Вот несколько важных замечаний о командах управления: элементы команды должны быть разделены пробелом. Каждая команда должна заканчиваться символом новой строки т.е. завершения каждой команды нажатием ENTER).
Модуль также подтверждает каждую команду и каждый ответ, посылая эти два специальных символа. Все отправленные значения (элементы значений и маска из таблицы 1) должны быть сохранены в шестнадцатеричной форме, то есть они должны быть в диапазоне 00 ... FF,
также модуль возвращает значения в этой форме. В качестве регистра введите имя регистра, который вы хотите сохранить или прочитать.
В представленном устройстве выходной разъем состоит из двух портов микроконтроллера - 6 битов порта «B» (контакты 1 ... 6) и двух битов порта «C» (контакты 7 и 8).
Поэтому интересующие нас регистры: «portb» и «porte» - регистры, позволяющие установить соответствующее состояние на выходах модуля; «Ddrb» и «ddrc» - регистры, задающие направление работы: input (значение бита = 0) или выход (битовое значение = 1); «Pinb» и «pinc» - используются для считывания состояния, преобладающего на выходах разъема.
После подключения модуля все регистры имеют значение 00, поэтому все контакты настроены как входы.
Чтобы настроить выводы как выходные, отправьте две команды :, 3F ddrb = 'и 07 ddrc =. После такой операции все 8 выводов и управление LED1 готовы к работе. Теперь вы можете отправить команду «04 portc =», которая загорится светодиод. Чтобы настроить контакты для работы в качестве цифровых входов,
соответствующие биты регистра ddr должны быть равны нулю. Отправка команды «3C ddrb =» установит контакты 1 и 2 в качестве входов.
Чтобы прочитать состояние, преобладающее на входах, отправьте команду «pinb», в ответ модуль отправит значение hex. описание состояния всего порта «B *».
Контрольное приложение.
Вид окна управляющего приложения, используемого на ПК, показан на рисунке 2. Программа написана с использованием бесплатного инструмента Visual CE Express 2010 (находится в архиве).
После запуска приложения оно находит все COM-порты, существующие на компьютере, в верхнем фрейме, указывает номер порта, на котором установлен модуль.
После установления связи при первом запуске программы создается файл конфигурации, при следующем пропуске этого этапа.
Содержимое файла конфигурации показано на рисунке 3.
Первая строка содержит значение FF. Он определяет, какие выводы модуля должны быть сконфигурированы как выходы, включая
для всех. Таким образом, программа отправляет команды модулю :, 3F ddrb = 'и 07 ddre =, затем программа считывает состояние выходов модуля, используя команды:' pinb? ' и ,pine ?' и переводит статус в изображения элементов управления (красные светодиоды). Одновременно в программе загорается индикатор состояние (LED) и светодиод состояния устройства(LED1). Значение в следующей строке важно только для выводов, работающих как входы - оно определяет, на какие входы будут включены подтягивающие резисторы, подключенные к источнику питания, в данном случае 00, т.е. ни один из входов. Следующие восемь строк - это имена, которые должны быть назначены восьми элементам управления в программе - восемь выводов в модуле. Файл конфигурации, расположенный на компьютере, можно редактировать в блокноте, создавая различные конфигурации для модуля; важно только не менять его название.
Нажатие на элемент управления меняет его статус на противоположный и отправляет соответствующую команду модулю. Для этого программа использует команды xx portb = 'и, xx portc =, поэтому каждый раз отправляет состояние всего вывода, а не только отдельного
биты (не использует команды '|', '&', '^').
Чтобы проверить состояние на входах модуля, отправьте соответствующие команды и прочитайте ответ модуля; приложение запускается с включенной по умолчанию функцией „Auto odczyt” (Авто чтение). Это означает, что программа периодически (примерно 2 раза в секунду) опрашивает модуль на предмет состояния входов и показывает его на элементах управления. Эту функцию можно отключить, тогда проверка состояния возможна после нажатия на кнопку „Odczyt stanu wejsc” («Читать состояние ввода»).
Изготовление устройства
Расположение элементов показано на рис.4,а печатная плата в формате Eagle находится в архиве.
Программа для микроконтроллера находится в архиве.
Полезно почитать Readme.txt из папки moduł_usb_io_program
Cтабилизатор *US1 не ставится, вместо этого устанавливаем диоды вместо R21* и R22* (см.рис.4).
Плата должна быть отмыта от флюса и тщательно высушена.Проверьте правильность монтажа.
Любая ошибка может повредить порт USB.
После подключения к компьютеру операционная система запросит драйверы устройств. Драйверы находятся в архивае и на веб-сайте: http://www.recursion.jp/avrcdc/driver:html#windows.
В 64-разрядных системах возникнет проблема при установке драйверов с цифровой подписью. Эту проблему можно обойти: информацию можно найти в Интернете.
После установки драйверов вы можете запустить приложение и, если все сделано правильно, в модуле (рис.2) загорится зеленый светодиод.
Расположение портов на выходном разъеме показано на рисунке 5.
Каждая из клемм модуля обеспечивает напряжение около 3,5 В и ток около 5… 10 мА. Для управления работой других устройств необходимы исполнительные системы например, в форме транзистора и реле.
Интересным дополнением к модулю может быть 8-канальная релейная плата (будет описана в следующей статье). Если контакты имеют функцию входов, следует помнить, что максимальное напряжение, которое можно подавать на них должно быть 3,5 В.
Если вам нужен сигнал с напряжением 5 В это можно сделать через резистор со значением несколько кОм. Если активное состояние на входе должно быть коротким замыканием на массу, то на этом входе должно быть включено подтягивающее (положительное подтягивающее сопротивление).
Программное обеспечение CDC дает гораздо больше возможностей, чем описано в статье выше
Материал взят из журнала Elektronika dla Wszystkich за 2015.05