Ke usb24a своими руками
USB модуль Ke-USB24A
Уважаемые читатели, предлагаю Вашему вниманию USB модуль Ke-USB24A. Специализация модуля — управление внешними нагрузками через порт USB. Он в чем-то похож на порт LPT в режиме прямого управления пинами. Подаем команду — определенный бит порта устанавливается в логическую еденицу, подаем другую — сбрасывается в ноль. В этом модуле таких «битов», т.е. линий управления, 24 штуки. Каждая из них может быть настроена либо на выход (можем управлять светодиодами, реле, и др. нагрузками) либо на вход (можем считывать информацию с ключей, кнопок и др. устройств).
С точки зрения программирования модуль предлагает весьма интересное решение. Во-первых, что следует указать, при подключении к компьютеру он определяется ОС Windows (и Linux тоже) как виртуальный COM порт, т.е. в диспетчере устройств у Вас появится дополнительный COM порт. Соответственно, управление модулем осуществяляется через обычный последовательный порт. Это означает, что для работы с модулем Вам вообще нет необходимость даже вспоминать о USB — Вы работаете только с COM портом. Значит для работы с модулем можно использовать любой язык / среду / компонент прграммирования, главное только чтобы он поддерживал работу с последовательными портами. Для непосредственного управления модулем предусмотрен набор текстовых команд управления. Т.е. выбираем нужную команду, записываем ее в COM порт и модуль выполняет то что заказано. Весьма просто и удобно. Благодаря тому что команды текстовые, модулем можно управлять из любой программы-терминала для COM портов, например HyperTerminal, входящей в состав Windows.
Помимо возможности управления линиями ввода/вывода модуль также имеет встроенный 10-ти разрядный АЦП с частотой дискретизации до 400 Гц + еще парочку интересных настроек и свойств, о которых мы поговорим позже.
Итак, приступим к практическому использованию модуля. Первым делом необходимо установить драйвера для него. Весть процесс установки модуля подробнейшим образом описан в соответствующем оффициальном документе Руководство по установке. Здесь я дублировать информацию не буду, обращю только внимание на то, что фактически драйвер, требуемый для модуля уже находится в составе Windows. Это так называемый стандартный драйвер виртуального COM порта. Итого из файлов установки нам нужен только ke-usb24.inf в котором указаны параметры установки.
После установки устройства, давайте создадим на основе модуля самую простенькую схемку — будем управлять светодиодами, подключенными к модулю, а именно зажигать или тушить их по нашей команде. Схема подобного устройства показана на рисунке ниже. Схема расчитана на маломощные светодиоды. Я использую L-934 фирмы Kingbright. Если используемые Вами светодиоды помощнее и Вы чувствуете что корпус модуля или светодиода изрядно нагревается, лучше между светодиодом и выводом модуля включить токоограничивающий резистор номиналом в 200-600 Ом.
Вот эта же схема собранная мною на макетной плате. Я позволил тут себе не набирать все светодиоды.
Итак, схему собрали. Пора взяться непосредственно за софт. Тут есть два варианта. Первый, это использовать готовую терминальную программу и подавать в ней команды модулю в ручную. К таким программам относятся, например, HyperTerminal или KeTerm. Последняя хороша тем, что для нее доступны исходные коды и при желании ее можно модернизировать под свои нужды. Второй вариант, болле интересный, разработка собственнго софта. Давайте так и сделам. Напишем небольшую Windows программку на С++ в среде Microsoft Visual C++ 6.0 для управления линиями модуля, настроенными на выход.
Внешне она выглядит вот так. Т.е. вводим номер порта, нажимаем кнопку «Open». Далее галочками выбираем каким светодиодам светиться, а каким нет. Все весьма просто.
Посмотрим на код этой программы. Начнем с функции открытия порта. Тут все уже рассматривалось не раз. Единственное, на что я хотел бы обратить Ваше внимание, так это на скорость порта. Для модуля Ke-USB24A она не имеет НИКАКОГО значения. Можно было подключаться и на 1200 и 115200. Хоть мы и работаем с COM портом, он всеже виртуальный, и реально данные передаются по USB каналу. А ему знания о скорости виртуального COM порта совершенно не нужны. Здесь они указываются только для поддержания совместимости.
Рассмотрим код формирования команды модулю и ее отправки в порт. Для установки линии модуля Ke-USB24A служит текстовая команда $KE,WR, , . Собственно в этой функции мы такую команду и формируем. Обратите внимание на \r\n в конце команды. Таков синтаксис команд модуля — все должно заканчиваться символами возврата каретки и перевода на новую строку.
Итак, с кодом наверное все понятно. Запускаем программу, не забыв при этом подключить модуль. Открываем порт (номер порта можно посмотреть в диспетчере устройств). Щелкаем галочками — управляем светодиодами.
Вот таким вот образом можно за минимальный срок собрать схему управления светодиодами через USB. Ke-USB24A может использоваться и для управления нагрузками помощнее, но для этого к нему будет необходимо добавить дополнительную внешнюю схему в виде реле или мощного транзистора. Об этом мы поговорим позже.
Источник
USB Модуль Ke-USB24A
В этой статье я хотел бы познакомить Вас с USB модулем Ke-USB24A от KERNELCHIP (http://www.kernelchip.ru). Что это такое и для чего он нужен?
Наверняка, те кто занимаются разработкой и эксплуатацией устройств сопряжения с компьютером хорошо знакомы и LPT и COM портами — еще бы, ведь именно они являлись до недавнего времени основными способами коммуникации между внешней схемой и компьютером. Однако, в настоящий момент времени эти порты постепенно исчезают из состава материнских плат современных компьютеров. Встает вопрос о переходе на шину USB. Помимо кучи преимуществ использование этой шины требует гораздо больше усилий чем например, обычный COM порт. Теперь необходимо программировать USB микроконтроллер, заниматься разработкой USB драйвера, существенно усложнять программное обеспечение. Даже использование HID устройства не всегда является удобным — требуется довольно громоздкая процедура работы с устройством на стороне PC. Примеры для работы с ней широко распространены для языка С++. А что делать, если мы хотим использовать, например, Java?
Если перед нами стоит задача управления внешними устройствами, например, ключами, реле и т.д. через шину USB интересным ходом будет использование модуля Ke-USB24A. Он предназначен для сопряжения внешних цифровых и аналоговых устройств, датчиков и исполнительных механизмов с компьютером через шину USB. Модуль имеет 24 линии ввода/вывода с возможностью независимой настройки направления передачи данных.
Одной из интереснейших особенностей этого модуля является то, что при подключении его к компьютеру он определяется операционной системой как дополнительный COM порт! Т.е. если установить для модуля драйвера (уже готовые, и доступные для скачивания на сайте разработчика), то в диспетчере устройств в разделе последовательных портов появится новый COM порт. Именно через него мы будем общаться с модулем.
Это означает что с программной точки зрения обмен информацией между модулем и компьютером осуществляется через интерфейс обычного последовательного порта. Последнее обстоятельство существенно облегчает программирование, т.к. нет необходимости в применении дополнительных динамических библиотек, сложных интерфейсов и непосредственного общения с драйвером. Для написания собственных программ управления модулем возможно применение любого языка/среды программирования, поддерживающих возможность работы с COM портами. Можно использовать C++, Delphi, VisualBasic, Java и даже встроенный в Excel язык VBA!
Также внутри модуля уже интегрирован 10-ти разрядный аналого-цифровой преобразователь (АЦП) с частотой дискретизации до 400 Гц. Также модуль имеет возможность сохранения настроек направлений линий ввода/вывода, позволяет сохранять в своей памяти данные пользователя. Также модуль позволяет изменять свой строковый дескриптор USB устройства. Именно этот текст появляется в Windows при подключении нового USB устройства. У Вас есть возможность установить и сохранить свой собственный текст, который будет появляться при подключении модуля к компьютеру.
Как осуществляется управление модулем? Решение тоже весьма интересно — используются текстовые команды, наподобие тех, которые применяются в управлении модемами. Например, чтобы установить высокий уровень напряжения (+5 В) на линии ввода/вывода под номером 14 необходимо в COM порт, ассоциированный с модулем записать команду вида $KE,WR,14,1 , чтобы подать логический ноль — $KE,WR,14,0 и т.д. Для дальнейшего ознакомления с модулем рекомендую скачать описание команд управления Ke-USB24A ( скачать ).
Познакомимся поближе с выводами модуля. Назначение и схема их расположения показаны на рисунке и в таблице ниже.
Номер вывода | Обозначение | Описание вывода |
1, 32 | + 5 В | Если джампер JM1 установлен – на выводе установлено напряжение +5 В от шины USB (питание модуля осуществляется от шины USB). Если джампер не установлен, на данный вывод необходимо подать напряжение + 5 В от внешнего источника для питания модуля Ke-USB24A (модуль физически отключен от шины питания USB). |
2 | Vadc | Аналоговый вход АЦП |
3 | I/O1 | Линия ввода/вывода 1 |
4 | I/O2 | Линия ввода/вывода 2 |
5 | I/O3 | Линия ввода/вывода 3 |
6 | I/O4 | Линия ввода/вывода 4 |
7 | I/O5 | Линия ввода/вывода 5 |
8 | I/O6 | Линия ввода/вывода 6 |
9 | I/O7 | Линия ввода/вывода 7 |
10 | I/O8 | Линия ввода/вывода 8 |
11 | I/O9 | Линия ввода/вывода 9 |
12 | I/O10 | Линия ввода/вывода 10 |
13,14,15 | NC | Вывод не используется (Not Connected) |
16, 17 | GND | Земля |
18 | I/O11 | Линия ввода/вывода 11 |
19 | I/O12 | Линия ввода/вывода 12 |
20 | I/O13 | Линия ввода/вывода 13 |
21 | I/O14 | Линия ввода/вывода 14 |
22 | I/O15 | Линия ввода/вывода 15 |
23 | I/O16 | Линия ввода/вывода 16 |
24 | I/O17 | Линия ввода/вывода 17 |
25 | I/O18 | Линия ввода/вывода 18 |
26 | I/O19 | Линия ввода/вывода 19 |
27 | I/O20 | Линия ввода/вывода 20 |
28 | I/O21 | Линия ввода/вывода 21 |
29 | I/O22 | Линия ввода/вывода 22 |
30 | I/O23 | Линия ввода/вывода 23 |
31 | I/O24 | Линия ввода/вывода 24 |
Теперь давайте перейдем сразу к практическому использованию модуля. Соберем схему на основе модуля для управления внешними нагрузками через шину USB, например, давайте будем управлять светодиодами, подключенными к линиям ввода/вывода. Рекомендованная схема от производителя представлена ниже. Схема предельно проста — к линиям ввода/вывода просто подключены светодиоды. Все светодиоды «сажаются» на общий провод схемы — например, вывод 16 модуля. Обратите внимание, что если Вы хотите управлять более мощными нагрузками, например, лампочками, реле или моторами Вам необходимо позаботится о буферной схеме, т.к. Ke-USB24A не выдержит такой нагрузки и перегорит. Светодиоды можно подключать вполне спокойно.
Со схемотехникой разобрались — пора переходить к софту. Нам необходима программа, которая могла бы передавать данные через COM порт. Тут есть несколько вариантов — можно использовать уже готовую программу, например, HyperTerminal, входящую в состав любой ОС Windows. Можно использовать специальную терминальную программу KeTerm, рекомендуемую разработчиком (для нее доступны исходные коды на языке С++, среда разработки Microsoft Visual C++ 6.0). Скачать ее можно на сайте Kernelchip. И наконец, наиболее интересный вариант — написать свою программу. Это весьма просто, т.к. нам потребуются знания только по программированию COM порта — о программировании USB нам даже вспоминать не ненужно.
Начнем с HyperTerminal т.к. она есть в любой версии Windows и всегда под рукой. Для ее запуска выберите Пуск ->Программы -> Стандартные -> Связь -> HyperTerminal. Тотчас же запуститься мастер создания нового соединения с предложением указать имя соединения. Укажите любое название, нажмите «OK». Следующим шагом необходимо выбрать COM порт через который необходимо установить соединение. В списке выбираем такой номер порта который был выделен Windows для модуля (можно посмотреть в диспетчере устройств). Нажмите «OK». Далее мастер предложит изменить настройки порта. Здесь необходимо сделать важное замечание – такие параметры как скорость, количество битов данных, битов четности и остальные настройки не имеют ни какого значения для модуля, т.к. фактически данные передаются по шине USB. Можно смело оставить все настройки по умолчанию. Нажмите «OK».Итак, соединение установлено. Далее настоятельно рекомендуется изменить некоторые настройки в программе для удобства работы. В главной панели программы нажмите на кнопку «Свойства». В открывшемся окне перейдите на вкладку «Параметры» и нажмите на кнопку «Параметры ASCII. «. Установите флажки как на рисунке ниже. Обратите внимание на первый флажок. Синтаксис команд модуля требует чтобы все команды заканчивались символом возврата каретки и перевода на новую строку. Нажмите «OK».
Все настройки выполнены. Можно приступать к работе. Для начала отправим модулю самую простую команду $KE – команду проверки. Набираем текст $KE и нажимаем Enter. В ответ мы получаем строку #OK – это значит что модуль исправен и готов к работе.
Ну а дальше дело техники — используем команду $KE,WR с нужным номером линии и необходимым значением для записи. Посылаем разные команды — мигаем светодиодами.
На этом я хотел бы закончить эту вводную статью. Далее мы познакомимся с тем как управлять модулем из программ написанных на С++, Delphi и даже из EXcel. Познакомимся с другими полезными функциями модуля, например АЦП.
Автор: Дмитрий Иванов (Grirog). Апрель 2008 г.
Источник