Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 2. Управление внешними нагрузками через USB с помощью Ke-USB24A

Дмитрий Иванов, 15 Марта 2008

Файлы к статье скачать
Имя: KA002.zip (ZIP архив)
Размер: 132 КБ

USB модуль Ke-USB24A

Уважаемые читатели, предлагаю Вашему вниманию USB модуль Ke-USB24A. Специализация модуля - управление внешними нагрузками через порт USB. Он в чем-то похож на порт LPT в режиме прямого управления пинами. Подаем команду - определенный бит порта устанавливается в логическую еденицу, подаем другую - сбрасывается в ноль. В этом модуле таких "битов", т.е. линий управления, 24 штуки. Каждая из них может быть настроена либо на выход (можем управлять светодиодами, реле, и др. нагрузками) либо на вход (можем считывать информацию с ключей, кнопок и др. устройств).

USB модуль управления Ke-USB24A

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

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


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

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

Схема подключения светодиодов к Ke-USB24A

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

Управление светодиодами по USB

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

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

Программа управления выходными линиями модуля Ke-USB24A

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

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

void CLineControlDlg::WriteDataToLine(int line, bool value)
{
  if( line <0 || line > 24 || m_hFile == NULL )
  {
    MessageBox("Can`t Write\nCommand", "Error", MB_ICONERROR);	
    return;
  }

  DWORD lpdwBytesWritten;
  char buf[32];
  int len = sprintf(buf, "$KE,WR,%d,%d\r\n", line, value);

  WriteFile(m_hFile, buf, len, &lpdwBytesWritten, NULL);  
}

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

Управление светодиодами по USB

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


© Дмитрий Иванов
15 Марта 2008 года
http://www.kernelchip.ru


© KERNELCHIP 2006 - 2017