Каталог статей

Главная » Все схемы » Схемы устройств на микроконтроллерах » Устройства на микроконтроллерах

Выбранная схема!!!


2377
Управление модулем Ke-USB24A из Excel
Уважаемые читатели! В этой и последующих статьях я хотел бы познакомить Вас с USB модулем Ke-USB24A от KERNELCHIP (www.kernelchip.ru). Что это такое и для чего он нужен?


USB Модуль Ke-USB24A



Наверняка, те кто занимаются разработкой и эксплуатацией устройств сопряжения с компьютером хорошо знакомы и 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).
2VadcАналоговый вход АЦП
3I/O1Линия ввода/вывода 1
4I/O2Линия ввода/вывода 2
5I/O3Линия ввода/вывода 3
6I/O4Линия ввода/вывода 4
7I/O5Линия ввода/вывода 5
8I/O6Линия ввода/вывода 6
9I/O7Линия ввода/вывода 7
10I/O8Линия ввода/вывода 8
11I/O9Линия ввода/вывода 9
12I/O10Линия ввода/вывода 10
13,14,15NCВывод не используется (Not Connected)
16, 17GNDЗемля
18I/O11Линия ввода/вывода 11
19I/O12Линия ввода/вывода 12
20I/O13Линия ввода/вывода 13
21I/O14Линия ввода/вывода 14
22I/O15Линия ввода/вывода 15
23I/O16Линия ввода/вывода 16
24I/O17Линия ввода/вывода 17
25I/O18Линия ввода/вывода 18
26I/O19Линия ввода/вывода 19
27I/O20Линия ввода/вывода 20
28I/O21Линия ввода/вывода 21
29I/O22Линия ввода/вывода 22
30I/O23Линия ввода/вывода 23
31I/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. Познакомися с другими полезными функциями модуля, например АЦП.





Всю прелесть программирования USB модуля Ke-USB24A можно оценить когда встает вопрос о необходимости написания программы на каком-либо не очень широко распространенном языке или для какой-либо среды, которая, казалось бы не предусматривает возможность работы с USB устройствами. Как тут быть? - разбираться с подключением библиотек, вызовами системных функци и т.д.? Все это зачастую бывает сложно. Модуль Ke-USB24A совсем другое дело! Благодаря тому что программный интерфейс реализован в виде последовательного порта, можно программировать модуль практически на любом языке. Продемонстрируем это на примере. В этой статье мы рассмотрим как можно управлять выводами модуля из программы Excel! Да-да, именно из нее, где Вы обычно составляете таблицы и строите графики.

Файлы к статье Управление модулем Ke-USB24A из Excel

Для того чтобы Excel могла общаться с COM портом нам потребуется установить в системе специальный компонент от Microsoft - ActiveX элемент MSComm. Для этого скачайте 

. Там будет находиться папка ActiveX.

Для инсталляции компонента достаточно выполнить файл Instal.bat - он сам выполнит всю необходимую работу по установке и регестрации компонента в системе. В процессе его выполнения Вам будет задан вопрос такого вида:

Нажимайите "Да". Полим сообщение об успешной установке. Нажимаем "Ok".

 

Все компонент установлен, можно браться непосредственно за Excel. Запускаем программу. Нам необходимо следующим шагом разрешить выполнение макросов Excel, т.к. по умолчанию они скорее всего выключены. Для этого заходите в менюСервис -> Макрос -> Безопасность...

Установите вариант низкой безопастности - ведь мы то уверены в том наша собственная программа безопасна.

 

Теперь определимся что мы собственно хотим получить от Excel:

 

Пусть на листе будут размещены элементы управления, которые позволят нам открывать доступ к устройству и записывать на указанную нами линию ввода/вывода низкий или высокий уровень напряжения.

Займемся расстановкой элементов управления. Для этого вызовите соответствующее окно, например, щелкнув правой кнпкой мыши по главному меню программы и выбрав в появившемся списке "Элементы управления".

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

Теперь пора взяться собственно за программирование. Программа Excel, как в прочем и другие офисные программы от Microsoft (например, Word, Acsess и т.д.) имеют встроенную поддержку языка программирования VBA (Visual Basic For Application). Он представляет из себя несколько расширенный Visual Basic. Чтобы перейти в редактор программы дважды щелкните по кнопке "Открыть порт", ведь именно с нее начнется процесс выполнения программы.

Мы попадаем в редактор VBA, где перед нами появляется пустая заготовка кода для обработки события нажатия кнопки.

Прежде чем мы начнем непосредственно писать программу нам еобходимо подключить компонент MSComm (тот самый который мы чуть выше только что устанавливали в системе). Для этого в редакторе VBA в меню выбираем Tools -> References....

Нажимаем кнопку Browse.... В появившемся окне выбора файлов отыскиваем наш компонент MSCOMM32.OCX - он должен находится в директории C:\Windows\system32\. Нажимаем Открыть, затем кнопку Ok.

Пишем следующий код. Что он делает? Содаем экземпляр компонента для работы с портом, настраиваем его параметры и в конце открываем порт.

'Создаем экземпляр компонента для работы с портом
Dim KeUSB As New MSComm

Private Sub CommandButton1_Click()
'Настраиваем порт
KeUSB.CommPort = Val(TextBox1.Value)
KeUSB.Settings = "9600,N,8,1"
KeUSB.Handshaking = comNone
KeUSB.InputLen = 0
KeUSB.InBufferSize = 40
KeUSB.OutBufferSize = 40
KeUSB.RThreshold = 0
'Открываем порт
KeUSB.PortOpen = True
End Sub

Далее возвращаемся на лист Excel. Дважды щелкаем на кнопку Записать. Добавляем следующий код:

Private Sub CommandButton2_Click()
'Формируем команду $KE,WR
KeUSB.Output = "$KE,WR," & TextBox2.Value & "," & TextBox3.Value & Chr(13) & Chr(10)
End Sub

Все, с программированием закончили. Можно закрывать редактор VBA (незабываем сохранить перед выходом). Теперь нам необходимо на листе Excel перейти из режима редактора элементов управления в режим выполнения. Для этого на коне "Элементы управления" необходимо нажать соответсвующую кнопку в виде линейки-треугольника, чтобы она стала неактивной (не подствеченной).

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

Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.

А вот и фотография конструкции. Схема набрана на макетной плате - очень удобно, паять ни чего не нужно. Здесь установлены не все 24 светодиода а меньше.

Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.

Программу конечно необходимо модернизировать - мы здесь ни как не анализируем ни ошибок выполнения, ни сами введенные данные. Однако не смотря на простоту данный пример показывает что с модулем Ke-USB24A можно работать практически из любой среды, в которой есть поддрежка ActiveX компонент и хоть какой-либо язык программирования (даже скриптовый). Например, работу с модулем можно интегрировать в программу Microsoft Acsess и вести базу данных, можно интегрировать данную концепцию в программу 1С, например, и проводить какие-либо действия по внешним событиям с датчиков (ключей) и т.д. - возможности неисчерпаемы. А можно продолжать развивать тему с Excel - например, использовать ее для автоматического построения графиков по данным получаемым с АЦП модуля.

 


Категория: Устройства на микроконтроллерах | Добавил: Администратор (26.10.2011)
Просмотров: 5298 | Комментарии: 5 | Рейтинг: 0.0/0


Всего комментариев: 5
0
5 ilgiz   (03.03.2018 22:12) [Материал]
Нужен VBA проект для управления модулем Ke-USB24R из Excel, (чтобы автоматически при изменении ячейки (которая ссылается на др. ячейку) Excel на 0 или 1 происходило переключение вывода модулем Ke-USB24R).

Пожалуйста остав

0
Файлы к статье Управление модулем Ke-USB24A из Excel в архиве все есть !!!! БУДЬТЕ ВНИМАТЕЛЬНЕЕ biggrin

Пожалуйста остав

0
3 sergeybo   (22.01.2012 13:39) [Материал]
В статье говорится о том, что чтобы установить и зарегистрировать компонент MSCOMM32.OCX в системе, достаточно запустить файл instal.bat. Который можно скачать... но нет ссылки, откуда. Поэтому просьба моя заключается в помощи найти этот файл. Спасибо.

Пожалуйста остав

0
BAT пакетный файл. туда записываются команды MS-DOS в виде листинга и выполняются по порядку нажми WIN+R и введи CMD а потом в командной строке help

Пожалуйста остав

0
1 sergeybo   (21.01.2012 19:17) [Материал]
как можно получить instal.bat
или как выполняется работа по установке и регистрации компонента в системе?

Пожалуйста остав

Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов! Подробно тут!
Жалоба

ьте свои комментарии !!!!

Имя *:
Email:
Код *:

Copyright Zloy Soft (Company) © 2008 - 2024