Управляем нагрузками от COM или USB. Управление нагрузкой через usb Управление компьютера внешними устройствами через usb

Управление устройствами через USB-порт компьютера.

П. ВЫСОЧАНСКИЙ, г. Рыбница, Приднестровье, Молдавия
Устройство компьютерного управления различными приборами, схема которого показана на рис. 1, функционально подобно описанному в , но подключается к USB-порту компьютера, который (в отличие от СОМ-порта) сегодня есть в каждом из них. Единственная микросхема устройства - распространенный микроконтроллер ATmega8. Он необходим для организации связи по шине USB. Хотя в нем и отсутствует специализированный аппаратный модуль, эта функция выполняется программно.

Резистор R1, подключенный между положительным выводом источника питания и линией D-шины USB, переводит ее в низкоскоростной режим LS со скоростью обмена 1,5 Мбит/с, что и позволяет расшифровывать посыпки компьютера программным способом. Резисторы R4 и В5 устраняют переходные процессы, возникающие при обмене информацией, что увеличивает стабильность работы. Конденсатор С1 блокирует импульсные помехи в цепи питания, что также улучшает стабильность работы устройства. Диоды VD1 и VD2 служат для понижения напряжения питания микроконтроллера приблизительно до 3,6 В - это требуетсядля согласования уровнен с шиной USB.
Сигналы управления приборами формируются на выходах РВ0-РВ5 и РСО, РС1 микроконтроллера. Высокий логический уровень - напряжение около 3,4 В.
Напряжение низкого уровня близко к нулю. К выходам можно подключать приборы, потребляющие ток не более 10 мА (от каждого выхода). Если требуются большие значения тока или напряжения, то следует использовать узлы согласования, показанные в на рис. 5 и 6. Устройство собрано на макетной плате, печатная не разрабатывалась Применены резисторы МЛТ, конденсаторы С2 и СЗ - керамические высокочастотные, С1 - К50-35 или аналогичный импортный. Диоды кремниевые с падением напряжения на переходе около 0,7 В. Программа для микроконтроллера разработана в среде Bascom-AVR версии 1.12.0.0. Для работы с шиной USB использована библиотека swusb.LBX, которая выполняет программное декодирование сигналов USB в режиме реального времени. Полученный в результате компиляции код программы из файла с расширением HEX следует загрузить во FLASH-память микроконтроллера. Для этого был использован программатор совместно со встроенной в Bascom-AVR утилитой. Состояние разрядов конфигурации микроконтроллера должно соответствовать показанному на рис.2


При первом подключении устройства к компьютеру операционная система обнаружит новое USB HID совместимое устройство с именем "uniUSB" и установит необходимые драйверы. Через несколько секунд устройство настроено и готово к использованию. Для работы с ним была создана программа UniUSB. Она представлена в двух вариантах: для 32-разрядных (х86) и 64-разрядных (х64) операционных систем семейства Windows. Работа 32-разрядной версии проверена в операционных: Windows 98, Windows XP, Windows 7, а 64-разрядной - только в Windows XP х64. Программа UniUSB написана иа языке PureBasic (версия 4.31) с использованием библиотеки пользовательских функций HID Lib, поддерживающей работу с USB HID устройствами. Внешний вид окна программы показан на Рис.3


В одной папке с ее исполняемым файлом должен находиться файл, называющийся UniUSB_код.txt или UniCOM_код.txt. Последний вариант необходим для совместимости с программой UniCOM, предложенной в . В этом файле хранится сценарий управления внешними приборами. При запуске программы данные из файла загружаются в таблицу, расположенную в главном окне, а при завершении работы сохраняются в файле. Щелчок левой кнопкой мыши по ячейкам таблицы позволяет изменять их состояние: 1 - высокий логический уровень, 0 или пусто - низкий логический уровень. Для добавления или удаления столбца таблицы нужно по ней щелкнуть правой кнопкой мыши и в появившемся меню выбрать требуемое действие. При подключении устройства к USB-порту программа обнаружит его и активирует кнопку, расположенную в верхней части окна на панели инструментов. Нажатием на эту кнопку запускают процесс перебора столбцов таблицы и установки указанных в них состояний выходов. Для большей наглядности слева от таблицы подсвечиваются номера выходов, на которых в данный момент установлен высокий логический уровень. Скорость перебора (время в миллисекундах между переходами от столбца к столбцу) задают в поле "Скорость, мс". Учтите, операционная система Windows -- многозадачная! Это означает, что процессорное время делится между множеством иногда скрытых от пользователя процессов, которые выполняются по очереди с учетом установленных в системе приоритетов. По этому не стоит ожидать большой точности выдерживания интервалов времени менее 100 мс.
Для кратковременной остановки перебора столбцов используйте кнопку, Повторное нажатие на нее продолжит перебор с места остановки. Кнопка полностью прекращает перебор столбцов таблицы. Если в процессе обмена информацией между компьютером и устройством произойдет сбой либо устройство будет отключено от разъема USB компьютера, программа сообщит об ошибке, выведя в строке состояния соответствующее сообщение.

ЛИТЕРАТУРА

1. Носов Т. Управление приборами через СОМ-порт компьютера - Радио, 2007, № 11,с.61,62.
2. Рыжков A. US-программатор микроконтроллеров AVR и AT89S, совместимый с AVR910. - Радио, 2008, № 7, с. 28, 29.

По материалам журнала "Радио 2`2011"
Скачать прошивку микроконтроллера и программу для PC можно

За основу схемы взяты сдвиговые регистры 74hc595 которые управляются микроконтроллером PIC18F252. Выхода схемы логические, т.е. лог "1" или лог. "0". Они маломощные, по этому для управления какими нибудь устройствами нужны усилители (ключи). Не забывайте про гальваническую развязку управляемых устройств со схемой! Контроллер управляется по протоколу USART непосредственно с компьютера. Способы реализации протокола рассмотрены ниже.

Рассмотрим два способа получения USART.

1-ый, самый простой способ:
Это преобразователь уровня RS232 в USART. Схема которого приведена ниже.

Думаю здесь рассказывать нечего. 7,8 выводы подключаются к СОМ порту компьютера, а 9,10 к основной схеме устройства.

2-ой способ : Преобразователь USB - COM

Практически на всех новых компьютерах нет последовательного COM порта, а большая часть старой техники, работает именно через этот интерфейс, так называемый RS232. На новых компьютерах появилась последовательная шина USB, но протокол обмена данными через USB сложнее, чем по RS232.
Благодаря разработкам английской компании FTDI (Future Technology Devices International) появилась возможность преобразовать USB в "виртуальный" последовательный порт, обмен данными с которым ведут привычными хорошо известными методами.

Это преобразователь интерфейсов USB to COM предназначен для подключения к USB шине модема, сканера, различную измерительную аппаратуру, т.е. фактически любое устройство, ранее использовавшее интерфейс RS-232. Причем пользователю не требуется никаких знаний об устройстве и работе USB. Поставляемые компанией FTDI программные драйверы создают впечатление, что обмен идет через обычный COM порт. Разумеется, это справедливо только в том случае, если программное обеспечение использует COM порт в стандартном режиме.
Принципиальная схема преобразователя интерфейса показана на рисунке. Его основа - микросхема DD1 FT232BM включена по стандартной схеме, рекомендованной изготовителем.

Микросхему ЭСППЗУ DD2 AT93C46 можно не устанавливать. В ней хранятся идентификаторы изготовителя (VID) и персональный (PID), заводской номер изделия и другие данные. Это необходимо, если по USB с компьютером одновременно связаны несколько устройств на микросхемах FT232BM. Особенно важен серийный номер, так как программный драйвер полагается на его уникальность, ассоциируя тот или иной виртуальный COM-порт с конкретным устройством. Если ПЗУ отсутствует, к компьютеру можно подключить только одно образующее виртуальный COM порт устройство. Вместо AT93С46 можно использовать AT93C56 или AT93C66. Программируется ПЗУ непосредственно в устройстве с помощью специальной утилиты, поставляемой FTDI.

Я немножко подукоротил схемку и сделал вот так. Питание сделал от общей схемы устройства.


Выводы RX и TX к основной схеме устройства. Драйвер к этой МС можно скачать на оф. сайте под конкретную ОС.

Работа устройства представляет из себя двухстороннюю связь с ПК на скорости 115200 Кбит/сек. с проверкой контрольной суммы команды. Т.е. исключены ошибочная передача данных. При запуске программы происходит опрос наличия подключенного устройства и если оно обнаружено или утеряно в процессе, программа даст знать.

Управляется это устройство, специально мною написаной, программой и лежит в архиве. В принципе программа как бы демонстрационная, может только управлять выводами. Так что за индивидуальной программой, для конкретного случая, обращайтесь.

В наше время в каждой мастерской по ремонту электротехники, да, в прочем, и у каждого радиолюбителя рабочий день начинается с включения ПК, а уж потом и вспомогательного электрооборудования. В прочем с включения ПК рабочий день начинается не только у радиолюбителей, но и во многих пользователей сего «девайса», плотно вошедшего в нашу жизнь. А вот каждый день включать утром и выключать вечером, ну, предположим, принтер, активные колонки, настольную лампу да мало ли чего можно встретить у рядового пользователя, немножко надоедает. Исходя из условленных задач была поставлена цель создать коммутатор нагрузки, предназначенный для включения-выключения всех сопутствующих устройств. Соглашусь можно пойти по пути наименьшего сопротивления и поставить на всё обыкновенный выключатель, но, похоже, это не путь для радиолюбителя. Мы будем делать гораздо удобнее - встроим автомат в сетевой фильтр:

Так как устройство отслеживает факт включения-выключения устройства по принципу «ведомый-ведущий» самый простой способ - использовать USB порт. Обозначу сразу, при использовании USB порта устройство работает в ноутбуках и компьютерах с блоком питания, отключающем все источники питания. К примеру, в последних моделях блоков питания +5 вольт USB порта присутствует как дежурное даже при выключенном блоке. С ними устройство работать не будет, точнее будет, но постоянно включено. Здесь необходимо как источник сигнала использовать какой либо иной порт, и, соответственно, согласовывать сигнал источника и исполнительного механизма.

В данном устройстве исполнительным механизмом служит реле, с контактами, рассчитаными на 16 ампер и с катушкой на 5 вольт. Использование реле выполняет гальваническую развязку источника сигнала и сети 220 вольт.

После проведения ряда экспериментов было установлено, что при питании, согласно паспортных данных, +5 вольт реле потребляет 150 мА тока. Если использовать стационарный компьютер - нет никаких проблем, ибо +5 вольт USB порта идут непосредственно с блока питания и не сильно нагружают его. Если всё вышесказанное устраивает на этом - можно остановиться и сделать свой вариант по ниже приведенной схеме.

Но если планируется использовать ноутбук, то как бы прогонять дополнительные 150 мА через через компьютер не желательно, в таком случае необходимо использовать дополнительный блок питания 5 вольт. В данном варианте был использован импульсный источник питания от зарядного устройства от мобильного телефона. Можно использовать любой нестабилизированный источник питания при условии, что он может обеспечить напряжение 5 вольт и ток порядка 250 мА с учетом запаса. Также можно использовать и другое напряжение, но в таком случае необходимо будет взять и реле с соответственным напряжением питания. Для согласования источника сигнала с реле и источником питания необходимо установить транзисторный ключ типа:

Транзистор выбран типа КТ815 с любой буквой и резистор 1 кОм, диод - КД522. При такой схеме включения ток потребления показал 4 мА, что не столь существенно для ноутбука. Светодиод LED1 и LED2 обозначают состояние цепи. По желанию вместе с резисторами их можно исключить из схемы.

Устройство управления 220 В собрано в свободном месте корпуса розетки - сетевого фильтра. Файл схемы в сплане находится

– Игорь (Администратор)

Сегодня, многие пользователи имеют далеко не одно USB устройство. На самом деле, подключение через USB стало практически универсальным способом. Большинство, наверно, уже даже забыло о существовании таких портов/разъемов, как LPT и COM. Например, достаточно большая часть периферийных устройств (принтер и т.д.) подключаются только через USB.

Программа менеджер USBDeview для управления USB устройствами

Если у вас много различных usb устройств, и вы ими активно пользуетесь, то, скорее всего, вы сталкивались с проблемами и ограниченностью стандартного менеджера usb устройств Windows. Для более эффективного управления подключениями, существует специальная утилита под названием USBDeview от NirSoft (ссылка на скачивание).

Примечание : Ограниченность стандартного менеджера устройств Windows вполне обоснована. Так как этой функциональностью пользуются как опытные, так и самые начинающие пользователи.

Примечание : На странице разработчика достаточно много информации. Сами ссылки на скачивание находятся в самом низу.

Утилита является портативной и может выполняться где угодно. Исполняемый файл весит порядке 170 КБ и поставляется как для 32-разрядных, так и для 64-разрядных версий Windows. Для такой небольшой программы, она имеет удивительно большое количество полезных функций.

Примечание : Полностью обо всех ее возможностях вы можете узнать на сайте разработчика. В данной статье речь пойдет лишь о некоторых наиболее используемых из них.

Как вы, наверное, заметили, на картинке представлена часть доступных функций. Подключение, отключение, удаление, открытие, проверка скорости, смена буквы и многое другое.

Полезные функции программы USBDeview

По различным причинам, реестр Windows хранит записи обо всех usb устройствах, когда либо подключенных к операционной системе. USBDeview покажет вам всю информацию обо всех устройствах, для которых сохранились записи в реестре. При необходимости, вы сможете подправить нужную информацию в реестре (утилита позволяет сразу открыть ключ реестра с информацией об usb устройстве).

Примечание : Хранение информации об устройствах используется, как минимум, по нескольким причинам. Во-первых, повторное подключение устройства будет происходить быстрее. Во-вторых, для устройств, требующих установки нестандартных драйверов, это жизненно необходимая функция. Иначе бы приходилось каждый раз устанавливать драйвера заново. В-третьих, устройствам могут присваиваться буквы диска. И чтобы ограничить риск возникновения проблем с одинаковыми буквами, имеет смысл присваивать каждому устройству уникальную букву.

Несмотря на стандарты, применяемые к определению скорости чтения и записи для каждой версии протокола обмена для USB, на каждом устройстве эта скорость может быть разной. USBDeview позволяет проводить простой тест, используя один большой файл для записи и чтения. Конечно, более корректным тестированием было бы копирование и чтение различных групп файлов с разными размерами, но, тем не менее, даже этот тест позволяет оценить примерную скорость.

Утилита так же позволяет сменить букву диска. Конечно, существуют и другие способы, но в данном случае вы сможете это сделать всего в пару щелчков мыши.

В целом, USBDeview представляет собой отличный менеджер USB устройств.



С точки зрения программирования модуль предлагает весьма интересное решение. Во-первых, что следует указать, при подключении к компьютеру он определяется ОС Windows (и Linux тоже) как виртуальный COM порт, т.е. в диспетчере устройств у Вас появится дополнительный COM порт. Соответственно, управление модулем осуществяляется через обычный последовательный порт. Это означает, что для работы с модулем Вам вообще нет необходимость даже вспоминать о USB - Вы работаете только с COM портом. Значит для работы с модулем можно использовать любой язык / среду / компонент прграммирования, главное только чтобы он поддерживал работу с последовательными портами. Для непосредственного управления модулем предусмотрен набор текстовых . Т.е. выбираем нужную команду, записываем ее в COM порт и модуль выполняет то что заказано. Весьма просто и удобно. Благодаря тому что команды текстовые, модулем можно управлять из любой программы-терминала для COM портов, например HyperTerminal, входящей в состав Windows.

Помимо возможности управления линиями ввода/вывода модуль также имеет встроенный 10-ти разрядный АЦП с частотой дискретизации до 400 Гц + еще парочку интересных настроек и свойств, о которых мы поговорим позже.


Итак, приступим к практическому использованию модуля. Первым делом необходимо установить драйвера для него. Весть процесс установки модуля подробнейшим образом описан в соответствующем оффициальном документе . Здесь я дублировать информацию не буду, обращю только внимание на то, что фактически драйвер, требуемый для модуля уже находится в составе Windows. Это так называемый стандартный драйвер виртуального COM порта. Итого из файлов установки нам нужен только ke-usb24.inf в котором указаны параметры установки.

После установки устройства, давайте создадим на основе модуля самую простенькую схемку - будем управлять светодиодами, подключенными к модулю, а именно зажигать или тушить их по нашей команде. Схема подобного устройства показана на рисунке ниже. Схема расчитана на маломощные светодиоды. Я использую L-934 фирмы Kingbright. Если используемые Вами светодиоды помощнее и Вы чувствуете что корпус модуля или светодиода изрядно нагревается, лучше между светодиодом и выводом модуля включить токоограничивающий резистор номиналом в 200-600 Ом.

Вот эта же схема собранная мною на макетной плате. Я позволил тут себе не набирать все светодиоды.

Итак, схему собрали. Пора взяться непосредственно за софт. Тут есть два варианта. Первый, это использовать готовую терминальную программу и подавать в ней команды модулю в ручную. К таким программам относятся, например, HyperTerminal или . Последняя хороша тем, что для нее доступны исходные коды и при желании ее можно модернизировать под свои нужды. Второй вариант, болле интересный, разработка собственнго софта. Давайте так и сделам. Напишем небольшую Windows программку на С++ в среде Microsoft Visual C++ 6.0 для управления линиями модуля, настроенными на выход.

Внешне она выглядит вот так. Т.е. вводим номер порта, нажимаем кнопку "Open". Далее галочками выбираем каким светодиодам светиться, а каким нет. Все весьма просто.

Посмотрим на код этой программы. Начнем с функции открытия порта. Тут все уже рассматривалось не раз. Единственное, на что я хотел бы обратить Ваше внимание, так это на скорость порта. Для модуля Ke-USB24A она не имеет НИКАКОГО значения. Можно было подключаться и на 1200 и 115200. Хоть мы и работаем с COM портом, он всеже виртуальный, и реально данные передаются по USB каналу. А ему знания о скорости виртуального COM порта совершенно не нужны. Здесь они указываются только для поддержания совместимости.

Рассмотрим код формирования команды модулю и ее отправки в порт. Для установки линии модуля Ke-USB24A служит текстовая команда $KE,WR, . Собственно в этой функции мы такую команду и формируем. Обратите внимание на \r\n в конце команды. Таков синтаксис команд модуля - все должно заканчиваться символами возврата каретки и перевода на новую строку.

void CLineControlDlg::WriteDataToLine(int line, bool value) { if (line 24 || m_hFile == NULL) { MessageBox("Can`t Write\nCommand", "Error", MB_ICONERROR); return ; } DWORD lpdwBytesWritten; char buf; int len = sprintf(buf, "$KE,WR,%d,%d\r\n", line, value); WriteFile(m_hFile, buf, len, &lpdwBytesWritten, NULL); }

Итак, с кодом наверное все понятно. Запускаем программу, не забыв при этом подключить модуль. Открываем порт (номер порта можно посмотреть в диспетчере устройств). Щелкаем галочками - управляем светодиодами.

Вот таким вот образом можно за минимальный срок собрать схему управления светодиодами через USB. Ke-USB24A может использоваться и для управления нагрузками помощнее, но для этого к нему будет необходимо добавить дополнительную внешнюю схему в виде реле или мощного транзистора. Об этом мы поговорим позже.