Схема управления нагрузками через компьютер.  Как эффективно управлять подключенными USB устройствами? Используемое программное обеспечение

За основу схемы взяты сдвиговые регистры 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 Кбит/сек. с проверкой контрольной суммы команды. Т.е. исключены ошибочная передача данных. При запуске программы происходит опрос наличия подключенного устройства и если оно обнаружено или утеряно в процессе, программа даст знать.

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



С точки зрения программирования модуль предлагает весьма интересное решение. Во-первых, что следует указать, при подключении к компьютеру он определяется ОС 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 может использоваться и для управления нагрузками помощнее, но для этого к нему будет необходимо добавить дополнительную внешнюю схему в виде реле или мощного транзистора. Об этом мы поговорим позже.


13-01-2014

ATiny2313

Захаров Денис, Украина

Как известно, существует достаточное количество интерфейсов, с помощью которых микроконтроллер (МК) может общаться с внешними устройствами. Если необходимо связать МК с персональным компьютером или ноутбуком, то с уверенностью можно сказать, что лучше всего использовать интерфейс 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 и драйвер для ПК -
Протокол передачи данных между МК и ПК- скачать

  • ....вообще-то хотелось увидеть соопрежение м/у USB-портом одного компьютера с COM-портом второго...или LPT-порта третьего...
  • Спасибо! Опечатка исправлена:)
  • Зачем использовать 2 МК? Неужели у Attiny2313 мало flash? Или просто не хватает портов I/O? Тогда ладно, видно, что USB висит на INT0/INT1.
  • Сопротивление катушек маломощных реле в районе 100-200 Ом, не учитывая насыщенный транзистор (это же не пускатель, и не контактор). Так что 50-200 мА подходящий ключ не испугается. Материал очень интересен в плане привязки МК к USB без всяких интерфейсных микросхем и без присутствия в структуре МК аппаратного USB. Но учитывая цели и задачи первоисточника http://www.recursion.jp/avrcdc/cdc-232.html, из двух МК один выполняет всё же функции преобразователя USB-COM. И весьма дешёвого преобразователя, что безусловно радует.
  • Вот интересный гражданин попался с «дворянскими замашками», судя по нику. О каких экстремумах идёт речь? Вроде в материале нет даже упоминания о типе реле или транзисторов. И если реле запитывается от 5В USB то, безусловно, хотелось бы минимизировать потребление со стороны хоста на ПК. Этого можно добиться оптронами и дополнительным питанием реле со стороны нагрузки, что усложняет схему. Или ещё пару вариантов. Разве акцент в статье сделан на оптимизации? Автор добился своего и правильно делает, что не выкладывает конкретную плату. Для того, кто будет повторять, данного узла достаточно.
  • Да, статейка еще та... но стоит ли так опситраться? Я тоже хотел кое что прокомментировать сразу как ее прочел, и диод в том числе. Но анонимно тут нельзя. Вот зачем автору AVR-CDC? Я не заметил что где-то в схеме используются сигналы DTR, DTS, RTS, CTS. V-USB не хватило? Про два "кирпича" уже написали выше, - хватило бы и одного. А про диод уже исправлено, слава Будде! Диод нужен для защиты транзистора от импульса напряжения самоиндукции обмотки реле, в момент размыкания тока. Вот, кстати, вспомнил одну реализацию. Статья была в журнале Радио, но и в интернетах нашлась, кому интересно можете глянуть.

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

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

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

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

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

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

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

Утилита для контроля над подключенными и отображения ранее используемых USB-устройств. USBDeview покажет детальную информацию о каждом составном устройстве. Позволит управлять активными USB-портами и диагностировать скорость передачи данных.

USBDeview обзор

Программа выводит сведения для каждого USB-устройства с возможностью его протестировать:

  • Название устройства
  • Описание
  • Тип устройства
  • Серийный номер (для устройств хранения данных)
  • Дата и время добавления устройства
  • VendorID, ProductID и многое другое

Полное управление над подключенным через порт USB оборудованием:

  • Удалить из системы, ранее используемые USB-устройства
  • Отсоединить, подключенное в данный момент устройство
  • Отключение и включение USB-устройств

USBDeview включает в себя несколько полезных инструментов. Например Speed Test for USB Flash Drives , который проводит диагностику скорости чтения – записи подключенного флэш-накопителя. Имейте в виду вам нужно, минимум 100 Мб свободного дискового пространства для того, чтобы успешно сделать этот тест скорости.

С помощью USBDeview, вы можете управлять свойствами автозапуска для USB-устройств хранения данных. Есть возможность работы на удаленном компьютере, но для этого необходимо войти в систему с правами администратора.