Печать

Управление нагрузкой через USB интерфейс

Опубликовано . Опубликовано в Устройства на AVR

Рейтинг:   / 13
ПлохоОтлично 

Устройство компьютерного управления различными приборами, схема которого показана на рис. 1, подключается к USB-порту компьютера, который сегодня есть в каждом из них. Единственная микросхема устройства — распространенный микроконтроллер ATmega8. Он необходим для организации связи по шине USB. Хотя в нем и отсутствует специализированный аппаратный модуль, эта функция выполняется программно.

Управление нагрузкой через USB интерфейс - схема

Рисунок 1

Резистор R1, подключенный между положительным выводом источника питания и линией D-шины USB, переводит ее в низкоскоростной режим LS со скоростью обмена 1,5 Мбит/с, что и позволяет расшифровывать посылки компьютера программным способом. Резисторы R4 и R5 устраняют переходные процессы, возникающие при обмене информацией, что увеличивает стабильность работы. Конденсатор С1 блокирует импульсные помехи в цепи питания, что также улучшает стабильность работы устройства Диоды VD1 и VD2 служат для понижения напряжения питания микроконтроллера приблизительно до 3,6 В — это требуется для согласования уровней с шиной USB.

Сигналы управления приборами формируются на выходах РВ0—РВ5 и РС0, РС1 микроконтроллера. Высокий логический уровень — напряжение около 3,4 В. Напряжение низкого уровня близко к нулю. К выходам можно подключать приборы, потребляющие ток не более 10 мА (от каждого выхода). Если требуются большие значения тока или напряжения, то следует использовать узлы согласования.

Устройство собрано на макетной плате, печатная не разрабатывалась Применены резисторы МЛТ, конденсаторы С2 и СЗ — керамические высокочастотные, С1 — К50-35 или аналогичный импортный. Диоды кремниевые с падением напряжения на переходе около 0,7 В.

Программа для микроконтроллера разработана в среде Bascom-AVR версии 1.12.0.0. Для работы с шиной USB использована библиотека swusb.LBX, которая выполняет программное декодирование сигналов USB в режиме реального времени. Полученный в результате компиляции код программы из файла с расширением HEX следует загрузить во FLASH-память микроконтроллера. Состояние разрядов конфигурации микроконтроллера должно соответствовать показанному на рис. 2.

Рисунок 2

При первом подключении устройства к компьютеру операционная система обнаружит новое USB НID совместимое устройство с именем "uniUSB" и установит необходимые драйверы. Через несколько секунд устройство настроено и готово к использованию. Для работы с ним была создана программа UniUSB. Она представлена в двух вариантах: для 32-разрядных (х86) и 64-разрядных (х64) операционных систем семейства Windows. Работа 32-разрядной версии проверена в операционных системах Windows 98, Windows ХР, Windows 7, а 64-разрядной — только в Windows ХР х64.

Программа UniUSB написана на языке PureBasic (версия 4.31) с использованием библиотеки пользовательских функций HID_Lib, поддерживающей работу с USB HID устройствами. Внешний вид окна программы показан на рис. 3.

Рисунок 3

В одной папке с ее исполняемым файлом должен находиться файл, называющийся UniUSB_KOfl.txt. В этом файле хранится сценарий управления внешними приборами. При запуске программы данные из файла загружаются в таблицу, расположенную в главном окне, а при завершении работы сохраняются в файле. Щелчок левой кнопкой мыши по ячейкам таблицы позволяет изменять их состояние: 1 — высокий логический уровень, 0 или пусто — низкий логический уровень.

Для добавления или удаления столбца таблицы нужно по ней щелкнуть правой кнопкой мыши и в появившемся меню выбрать требуемое действие. При подключении устройства к USB-порту программа обнаружит его и активирует кнопку "Пуск" , расположенную в верхней части окна на панели инструментов. Нажатием на эту кнопку запускают процесс перебора столбцов таблицы и установки указанных в них состояний выходов. Для большей наглядности слева от таблицы подсвечиваются номера выходов, на которых в данный момент установлен высокий логический уровень. Скорость перебора (время в миллисекундах между переходами от столбца к столбцу) задают в поле "Скорость, мс".

Учтите, операционная система Windows — многозадачная! Это означает, что процессорное время делится между множеством иногда скрытых от пользователя процессов, которые выполняются по очереди с учетом установленных в системе приоритетов. Поэтому не стоит ожидать большой точности выдерживания интервалов времени менее 100 мс.

Для кратковременной остановки перебора столбцов используйте кнопку "Пауза". Повторное нажатие на нее продолжит перебор с места остановки. Кнопка "Стоп" полностью прекращает перебор столбцов таблицы. Если в процессе обмена информацией между компьютером и устройством произойдет сбой либо устройство будет отключено от разъема USB компьютера, программа сообщит об ошибке, выведя в строке состояния соответствующее сообщение.

Источник: Радио №2, 2011 г.

Файлы:
Исходные тексты программ, файл прошивки микроконтроллера, программа uniUSB
Дата 05.09.2011 Размер файла 89.3 KB Закачек 2343

Комментарии  

-3 #1 Виталий Николаев 03.10.2011 16:16
Подскажите пожалуйста, как добавить в программу кнопку, чтобы она по кругу работала, т.е. доходит до конца перебора и начинает все с начала. Установил среду разработки и ничего не понял если честно... Спасибо!
Сообщить модератору
0 #2 AntonChip 04.10.2011 06:39
Цитирую Виталий Николаев:
Подскажите пожалуйста, как добавить в программу кнопку, чтобы она по кругу работала, т.е. доходит до конца перебора и начинает все с начала. Установил среду разработки и ничего не понял если честно... Спасибо!

По моему в программе перебор идет по циклу
Сообщить модератору
0 #3 Vitaliy 26.03.2013 19:44
подскажите пожалуйста как выставлять биты конфигурации в понипрог?
Сообщить модератору
0 #4 AntonChip 28.03.2013 07:46
Цитирую Vitaliy:
подскажите пожалуйста как выставлять биты конфигурации в понипрог?

Ставь галки в Понипрог также как на рисунке 2
Сообщить модератору
-1 #5 Stalker7538 09.10.2014 16:24
Добрый день никак не могу заставить устройство работать. Могли бы вы что то подсказать. Не опознается устройство.
Могли бы вы выложить фюзы для квазама програмер или AVR Dude или чего то что работает AVRBas программатором.
Сообщить модератору
-2 #6 максим123 02.05.2015 23:33
собрал макетку, прошил через стк500. Питание и масса есть на всех ножках микрухи. С резонатора 12Мгц есть, только напряжение на резонаторе как мне кажется маленькое. завтра куплю новый поставлю на всякий случай. В общем на компе выдает устройство не опознано код ошибки 43. Может поможете советом в чем дело ?
Сообщить модератору
+4 #7 ПавелPRO 20.07.2016 19:24
Здравствуйте, не хватает времени изучить язык PureBasic, могли бы вы изменить внешний вид программы(чтобы были кнопки на включение\выклю чение выходов МК)
Сообщить модератору

Рекомендуем посмотреть