USB Интерфейс с использованием программного обеспечения Python | Полный проект электроники
USB Интерфейс с использованием программного обеспечения Python | Полный проект электроники
Это выход простого транзистора программа трассировки характеристических кривых через микроконтроллер PIC & USB интерфейс с использованием языка программирования Python. Выходная характеристика транзистора автоматизируется с использованием программного обеспечения Python и интерфейса USB. Прикладное программное обеспечение для сбора измеренного значения и отображения его на экране монитора разработано с использованием Python.
Типы USB
В последних компьютерах устаревшие порты, такие как параллельный порт, последовательный порт и т. д., были заменены на USB. Функция Plug-and-Play USB может использоваться для автоматизации лабораторных приборов/систем сбора данных. Чтобы удовлетворить потребности различных приложений, использующих интерфейс USB, в спецификации USB V2.0 были разработаны три скорости работы: низкая скорость (1,5 Мбит/с), полная скорость (12 Мбит/с) и высокая скорость (480 Мбит/с).
Недавно в спецификации USB3.0 появилась сверхскорость — 5 Гбит/с. Физическое соединение USB использует четыре провода. Два провода используются для передачи дифференциального сигнала (D+ и D-), а два других предназначены для питания и заземления. Для передачи данных между главным ПК и устройством USB V2.0 поддерживает четыре типа передачи данных, а именно: управление, групповую передачу, прерывание и изохронную.
Передача управления в основном используется для настройки устройства при его первом подключении к ПК. Процесс настройки известен как перечисление. Он определяется как первоначальный обмен информацией, посредством которого хост узнает об устройстве и назначает соответствующий драйвер устройства.
Массовая передача данных используется, когда данные генерируются или потребляются в относительно больших количествах.
Прерывание передачи данных используется для своевременной, но надежной доставки данных.
Изохронная передача данных занимает заранее согласованную полосу пропускания USB с заранее согласованной задержкой доставки (также называемой потоковой передачей в реальном времени).
Одним из основных препятствий для разработчиков периферийных устройств USB является разработка драйверов для специализированных устройств USB. Это было удалено с помощью LibUSB-Win32, драйвера с открытым исходным кодом.
Хостовое программное обеспечение
USB поддерживает конфигурацию «главный-подчиненный». Мастер – это всегда ПК. Программное обеспечение, которое находится на ПК и управляет потоком данных, называется хост-программой. В этой статье хост-программа, используемая для связи с классом запоминающего устройства/устройством связи USB, — это Python.
Python — это интерпретируемый язык, который позволяет значительно сэкономить время при разработке программ, поскольку не требуется компиляция и компоновка. Это популярный язык программирования, используемый как для автономных программ, так и для сценариев. Это бесплатная, портативная, мощная и удивительно простая в использовании программа.
Интерпретатор можно использовать в интерактивном режиме, что позволяет легко экспериментировать с особенностями языка. Программы, написанные на Python, обычно намного короче, чем эквивалентные программы на C или C++. Существует два способа использования интерпретаторов: интерактивный режим и режим сценария. В интерактивном режиме интерпретатор печатает результат по мере набора программы.
Шеврон >>> — это подсказка, которую переводчик использует, чтобы указать, что он готов. Альтернативно вы можете сохранить код в файле и использовать интерпретатор для выполнения содержимого файла, который называется скриптом.
Требуется программное обеспечение
Необходимое программное обеспечение включает Python 2.5 (python-2.5.2) или более позднюю версию IDE, Win32 Python (pywin32-210.win32-py2.5), библиотеку Matplot (matplotlib-0.91.2.win32-Py2.5), Numeric Python (numpy-1.0.4.win32-py2.5) и PyUSB-1.0.0a2.
PyUSB-1.0.0a2 — это библиотека Python, обеспечивающая легкий доступ к USB. Версия PyUSB-1.0.0a2 написана на Python, что позволяет программистам Python, не имеющим опыта работы с C, понять, как работает PyUSB. PyUSB может работать на любой платформе с Python 2.4 и более поздних версий. Общаться с устройством USB еще никогда не было так просто. USB — сложный протокол, но PyUSB имеет все необходимые функции, необходимые для настройки устройства с поддержкой USB. Модули PyUSB имеют два подмодуля: usb.core в качестве основного модуля и usb.util, содержащий служебные функции.
Руководство по PyUSB 1.0 дает базовую информацию о сложном протоколе USB. Если вы хотите узнать всю информацию, связанную с USB, обратитесь к книгам USB Design by Sample Джона Хайда и USB Complete Яна Аксельсона.
Функции, необходимые для настройки USB и сбора данных, включены в pic18f4550.py, а именно: __init__(self,val1,val2), set_portb_output(self,val), set_portd_output(self,val), read_analog_0(self), read_analog_1(self) и set_voltage12(self, val).
Подробности следующие:
• __init__(self,val1,val2) обеспечивает связь USB.
• set_portb_output(self,val) помогает установить значения порта B от 0 до 255.
• set_portd_output(self,val) помогает установить значения порта D от 0 до 255.
• read_analog_0(self) помогает считывать аналоговые значения из канала 0.
• read_analog_1(self) помогает считывать аналоговые значения из канала 1.
• set_voltage12(self, val) помогает отправить 12-битное значение в DAC MAX5154.
Установка программного обеспечения
Установите Python2.5.2 IDE или более позднюю версию в операционной системе Windows 7. Затем установите вспомогательные инструменты один за другим. Папкой по умолчанию является папка C (C:Python25). Извлеките zip-файл PyUSB-1.0.0a2 в папку Python25. Теперь, используя командную строку, перейдите в папку PyUSB, которая находится внутри папки Python25, и установите PyUSB с помощью следующей команды (также показано на рис. 1):
>установка python setup.py
Установив необходимое программное обеспечение, поместите файлы pic18f4550.py и efy_trans.py в папку Python25.
Рис. 1: Скриншот командной строки
Цепь и работа
Принципиальная схема интерфейса USB с использованием Python и трассировщика характеристик транзисторов показана на рис. 2. Он построен на базе микроконтроллера PIC18F4550, 12-битного цифро-аналогового преобразователя MAX5154, стабилизатора напряжения AD780, усилителя напряжения LM358, преобразователя ток-напряжение OP741, силового транзистора SL100/CL100, исследуемого транзистора. BC547 (T1) и другие важные компоненты, необходимые для конфигурации USB.
Рис. 2: Принципиальная схема интерфейса USB и индикатора кривой транзистора
Микроконтроллер имеет встроенный приемопередатчик USB, который подключается к главному ПК через кабель USB. Тактовая частота, необходимая для работы USB на полной скорости, определяется внешним кристаллом 20 МГц. Подтягивающий резистор, внутренний в микроконтроллере, настраивает устройство USB как полноскоростное устройство. В этой конструкции питание, необходимое для работы PIC18F4550, берется из шины.
Ток базы исследуемого транзистора изменяется от 0 мкА до 175 мкА за восемь шагов с использованием контактов порта D (D0, D1 и D2). Напряжение коллектора изменяется от 0 В до 2,5 В за восемь шагов на цифро-аналоговом преобразователе от порта B.
Выходное напряжение цифро-аналогового преобразователя впоследствии усиливается примерно в четыре раза с помощью LM358 и подается на базу силового транзистора. Эмиттер силового транзистора SL100 соединен с коллектором транзистора, напряжение которого изменяется.
Коллекторное напряжение подается на канал 0 встроенного аналого-цифрового преобразователя после деления напряжения ровно пополам с использованием устройства делителя потенциала для удовлетворения ограничения напряжения микроконтроллера. Предполагая, что ток коллектора равен току эмиттера, выходной сигнал снимается на сопротивлении в один Ом, а падение на сопротивлении в один Ом усиливается примерно в 50 раз и подается на канал 1 встроенного аналого-цифрового преобразователя.
Авторский прототип показан на рис. 3.
Рис. 3: Авторский прототип
Строительство
Односторонняя компоновка PCB для интерфейса USB показана на рис. 4, а компоновка его компонентов — на рис. 5. После сборки схемы на PCB поместите ее в подходящую коробку.
Рис. 4: PCB макет интерфейса USB с использованием программного обеспечения PythonРис. 5. Компоновка компонентов PCB
Загрузите PCB и PDF-файлы компоновки компонентов: Нажмите здесь
Прошивка
Все устройства USB обрабатывают стандартный набор запросов, описанный в спецификации USB. Это реализовано с использованием заголовочного файла pic18_usb, предоставляемого компилятором CCS C. Компилятор предоставляет базовую основу для перечисления. Во время перечисления хост запрашивает у устройства структуры данных, называемые дескрипторами. Эти дескрипторы содержат информацию об устройстве USB и типе связи. Если вы хотите создать собственное устройство USB, обратите внимание на детали конечной точки, идентификаторы поставщиков и идентификаторы продуктов. Эта информация необходима для перечисления устройств и содержится в файле usb_desc_cdc1.h. Прошивка, помимо требования USB, реализует следующие задачи:
Генерирует различные базовые напряжения
Генерирует различные токи эмиттера.
Измеряет напряжение коллектора.
Отправляет данные на компьютер.
Хост USB взаимодействует с периферийным устройством USB через драйвер устройства. Драйвер устройства — это программный компонент, который позволяет приложению получать доступ к аппаратному устройству. USB драйверы устройств для Windows должны соответствовать модели драйверов Win32.
Windows включает функции интерфейса программиста приложений, которые позволяют приложениям взаимодействовать с драйверами устройств. Драйвер устройства создается с помощью мастера библиотеки USB, и устройство устанавливается на главный компьютер. Libusb-win32 — это порт библиотеки USB для операционной системы Windows. Библиотека позволяет приложениям пользовательского пространства получать доступ к любому устройству USB в Windows обычным способом без написания какой-либо строки кода драйвера ядра.
Процедура установки оборудования
Шаг 1
После встраивания программы (шестнадцатеричного файла) в микроконтроллер подключите плату к ПК. Как только они будут подключены, появится всплывающее окно, как показано на рис. 6.
Рис. 6: Экран мастера оборудования
Шаг 2
Используйте inf-master, расположенный в папке libusb-win32-device-bin-1.2.6.0, чтобы сгенерировать драйвер для подключенного устройства. Если драйвер установлен правильно, подключенное устройство появится в диспетчере устройств, как показано на рис. 7.
Рис. 7. Окно диспетчера устройств
Шаг 3
Основные функции, включая настройку USB, настройку битов порта B и считывание аналоговых напряжений, можно протестировать с помощью интерактивного окна Python default. С помощью команды set_portb_output (192) можно зажечь подключенные светодиоды (LED1 и LED2).
Аналогично аналоговое напряжение можно измерить, подключив клемму (AN0) к 5 В. Значение, соответствующее 5 В, равно 255. Лучше протестировать базовую функцию в интерактивном окне Python (рис. 8) перед тестированием реальной платы.
Рис. 8. Интерактивная оболочка Python
Шаг 4
Откройте файл efy_trans.py из интерактивного окна PythonWin 2.5.2 и запустите сценарий, как показано на рис. 9. Шаблон вывода программы отображается с помощью программного обеспечения Tkinter, которое показано на рис. 10.
Рис. 9. Открытие файла efy_trans.py и запуск его с помощью pywin32Рис. 10: Программный вывод ВАХ транзистораРис. 10: Программный вывод ВАХ транзистора
Система сбора данных на базе USB, использующая интерфейс Python и драйвер устройства общего назначения с открытым исходным кодом, упрощает подключение USB. Интерактивный характер программного обеспечения Python делает подключение USB более удобным для пользователя по сравнению с другими визуальными языками.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба