Устройство компьютерного управления различными приборами, схема которого показана на рис. 1, подключается к USB-порту компьютера, который сегодня есть в каждом из них. Единственная микросхема устройства - распространенный микроконтроллер ATmega8 . Он необходим для организации связи по шине USB . Хотя в нем и отсутствует специализированный аппаратный модуль, эта функция выполняется программно.
Рисунок 1
Резистор R1, подключенный между положительным выводом источника питания и линией D-шины USB, переводит ее в низкоскоростной режим LS со скоростью обмена 1,5 Мбит/с, что и позволяет расшифровывать посылки компьютера программным способом. Резисторы R4 и R5 устраняют переходные процессы, возникающие при обмене информацией, что увеличивает стабильность работы. Конденсатор С1 блокирует импульсные помехи в цепи питания, что также улучшает стабильность работы устройства Диоды VD1 и VD2 служат для понижения напряжения питания микроконтроллера приблизительно до 3,6 В - это требуется для согласования уровней с шиной USB.
Сигналы управления приборами формируются на выходах РВ0-РВ5 и РС0, РС1 микроконтроллера. Высокий логический уровень - напряжение около 3,4 В. Напряжение низкого уровня близко к нулю. К выходам можно подключать приборы, потребляющие ток не более 10 мА (от каждого выхода). Если требуются большие значения тока или напряжения, то следует использовать узлы согласования.
Устройство собрано на макетной плате, печатная не разрабатывалась Применены резисторы МЛТ, конденсаторы С2 и СЗ - керамические высокочастотные, С1 - К50-35 или аналогичный импортный. Диоды кремниевые с падением напряжения на переходе около 0,7 В.
Программа для микроконтроллера разработана в среде Bascom-AVR версии 1.12.0.0. Для работы с шиной USB использована библиотека swusb.LBX , которая выполняет программное декодирование сигналов USB в режиме реального времени. Полученный в результате компиляции код программы из файла с расширением HEX следует загрузить во FLASH-память микроконтроллера. Состояние разрядов конфигурации микроконтроллера должно соответствовать показанному на рис. 2.
Рисунок 2
При первом подключении устройства к компьютеру операционная система обнаружит новое USB НID совместимое устройство с именем "uniUSB " и установит необходимые драйверы. Через несколько секунд устройство настроено и готово к использованию. Для работы с ним была создана программа UniUSB. Она представлена в двух вариантах: для 32-разрядных (х86) и 64-разрядных (х64) операционных систем семейства Windows. Работа 32-разрядной версии проверена в операционных системах Windows 98, Windows ХР, Windows 7, а 64-разрядной - только в Windows ХР х64.
Программа UniUSB написана на языке PureBasic (версия 4.31) с использованием библиотеки пользовательских функций HID_Lib , поддерживающей работу с USB HID устройствами. Внешний вид окна программы показан на рис. 3.
Рисунок 3
В одной папке с ее исполняемым файлом должен находиться файл, называющийся UniUSB_KOfl.txt . В этом файле хранится сценарий управления внешними приборами. При запуске программы данные из файла загружаются в таблицу, расположенную в главном окне, а при завершении работы сохраняются в файле. Щелчок левой кнопкой мыши по ячейкам таблицы позволяет изменять их состояние: 1 - высокий логический уровень, 0 или пусто - низкий логический уровень.
Для добавления или удаления столбца таблицы нужно по ней щелкнуть правой кнопкой мыши и в появившемся меню выбрать требуемое действие. При подключении устройства к USB-порту программа обнаружит его и активирует кнопку "Пуск" , расположенную в верхней части окна на панели инструментов. Нажатием на эту кнопку запускают процесс перебора столбцов таблицы и установки указанных в них состояний выходов. Для большей наглядности слева от таблицы подсвечиваются номера выходов, на которых в данный момент установлен высокий логический уровень. Скорость перебора (время в миллисекундах между переходами от столбца к столбцу) задают в поле "Скорость, мс".
Учтите, операционная система Windows - многозадачная! Это означает, что процессорное время делится между множеством иногда скрытых от пользователя процессов, которые выполняются по очереди с учетом установленных в системе приоритетов. Поэтому не стоит ожидать большой точности выдерживания интервалов времени менее 100 мс.
Для кратковременной остановки перебора столбцов используйте кнопку "Пауза". Повторное нажатие на нее продолжит перебор с места остановки. Кнопка "Стоп" полностью прекращает перебор столбцов таблицы. Если в процессе обмена информацией между компьютером и устройством произойдет сбой либо устройство будет отключено от разъема USB компьютера, программа сообщит об ошибке, выведя в строке состояния соответствующее сообщение.
Источник: Радио №2, 2011 г.
13-01-2014
Захаров Денис, Украина
Как известно, существует достаточное количество интерфейсов, с помощью которых микроконтроллер (МК) может общаться с внешними устройствами. Если необходимо связать МК с персональным компьютером или ноутбуком, то с уверенностью можно сказать, что лучше всего использовать интерфейс COM-порта RS-232.
Причина такого выбора очевидна - практически все контроллеры имеют аппаратные модули UART, с помощью которых можно передавать информацию при минимальном расходе ресурсов МК. Кроме того, существует множество хорошо зарекомендовавших себя программ, предназначенных для работы с COM-портом. Поскольку сигналы МК имеют уровни TTL, для согласования с интерфейсом RS-232 необходим преобразователь уровней. Часто его выполняют на основе доступной и популярной микросхемы MAX232 .
Рисунок 1. |
Представленное устройство (Рисунок 1) предназначено для управления приборами с помощью любого ПК, имеющего порт USB. Современные компьютеры и ноутбуки имеют по несколько таких портов. С помощью этого комплекса можно производить управление светом, телевизором и другими приборами. Исполняющие устройства не обязательно должны находиться в непосредственной близости от ПК.
Прибор состоит из вполне доступных и распространенных элементов. Обе микросхемы - микроконтроллеры ATtiny2313 семейства . Первый контроллер подключен к USB-порту компьютера и выполняет функцию конвертора форматов USB-COM. Второй подключается к первому и все время сканирует команды, которые посылаются с ПК через терминальную программу Terminal v1.9b.
Подключенный к выводу 2 USB резистор R4 переводит устройство в низкоскоростной режим LS, позволяющий при обмене данными со скоростью 1.5 Мбит/с с помощью программы выпонять расшифровку посылок от ПК.
С помощью резисторов R2 и R3 происходит устранение переходных процессов. Конденсатор С5 блокирует импульсные помехи в цепи питания. Стабилитроны D1 и D2 необходимы для согласования логических уровней МК и USB входа ПК. Для безошибочной передачи данных между контроллерами частоты кварцевых резонаторов должны быть равны 12 и 4 МГц.
К выводам /RESET следует подключить подтягивающие резисторы, чтобы в дальнейшем избежать произвольного сброса МК из-за влияния помех и статических напряжений. В данной схеме все команды отображаются на светодиодах, подключенных к порту В. Чтобы управлять какими-либо устройствами, необходимо подключать выходы контроллера к реле (Рисунок 2).
Собрать устройство можно на макетной плате, хотя лучше, все же, на полноценной печатной плате. Элементы можно разместить, например, так, как показано на Рисунке 3.
Программа для микроконтроллера U1 разработана товарищем GetChiper в среде Bascom-AVR. Для работы с шиной USB использована библиотека swusb.LBX . С ее помощью выполняется программное декодирование USB протокола в режиме реального времени. Для работы устройства с ПК, нужно установить соответствующие драйверы, скопировав их на жесткий диск. При первом подключении устройство опознается и запросит драйвер. Далее нужно указать путь к папке с файлами, и все заработает.
Программа микроконтроллера U2 была написана мною в среде AVRStudio на языке ассемблера. Блок-схема алгоритма работы МК представлена на Рисунке 4. Аппаратный модуль UART следует настроить на прерывание по завершению приема данных. Сам МК не будет выполнять ни одной функции, пока не наступит прерывание. Для снижения энергопотребления можно воспользоваться режимом sleep, но в данной конструкции этого делать не понадобилось. Как только из терминала ПК последуют команды, МК мгновенно перейдет к их сканированию. На данный момент контроллер поддерживает следующую систему команд:
-on1, on2, on3, on4, on5, on6, on7, on8
- команды установки портов в «лог. 1»;
-off1, off2, off3, off4, off5, off6, off7, off8
- команды установки портов в «лог. 0»;
-ser - установить все порты в активное состояние «лог. 1»;
-clr
- сбросить все порты в состояние «лог.0».
После окончания ввода каждой команды необходимо нажимать Enter. Таким образом МК сможет определить конец команды и приступить к ее сканированию. На каждую верную команду контроллер будет отвечать «ok». Если ввести неверные данные, то в терминальную строку вернется «error». Пример выполнения команды показан на Рисунке 5.
Версия прошивки 1.0. Выставлять фьюзы необходимо в соответствии с Рисунком 6. Разрабатывается следующая версия прошивки, где будет происходить самообучение МК и изменение систем команд в терминале.
Программное обеспечение МК, виртуальная модель Proteus и драйвер для ПК -
Протокол передачи данных между МК и ПК- скачать