Главная arrow Программирование arrow AVR arrow usb-Relay - маленькое USB-устройство, управляющее включением и выключением реле Monday, March 20 2023  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

usb-Relay - маленькое USB-устройство, управляющее включением и выключением реле Версия для печати
Написал microsin   
22.10.2011

usb-Relay – маленькое аппаратное устройство, которое служит для включения и выключения различной электроники с помощью компьютера. Устройство usb-Relay подключается к компьютеру через USB.

Проект usb-Relay лицензирован под защитой GNU Affero General Public License. 

[Hardware (аппаратура устройства)]

usb-Relay-common-view.jpg
usb-Relay-DIP-and-SMD-3D.jpg
usb-Relay-DIP-and-SMD-PCB.png
usb-Relay-SCH.png

[Firmware (программное обеспечение микроконтроллера)]

Firmware основано на библиотеке V-USB (см. [2]). С помощью этой библиотеки устройство USB может быть полностью реализовано программно практически на любом микроконтроллере AVR, который не имеет специальной аппаратуры для поддержки шины USB. Устройство видится на компьютере как бесклассовое устройство (classeless device), и управляется через команды, определяемые вендором (vendor type commands). Протокол поддерживает до 256 управляемых реле, однако в описанном устройстве поддерживается только одно реле. Имеется две команды. Команда 0, работающая в направлении от устройства к ПО хоста, возвращает количество реле, поддерживаемых устройством (так как наше устройство поддерживает только одно реле, то оно всегда возвращает 1). Команда 0 передается через ПО хоста (утилита командной строки) count.exe. Команда 1, работающая в направлении от хоста к устройству, указывает нужное состояние реле (включить его или выключить). Старший байт в передаваемой команде указывает на номер нужного реле (от 0 до 255, эта реализация реагирует только на реле номер 0), а младший байт указывает нужное состояние реле (0 выключить реле, 1 включить реле). Команда 1 передается с помощью ПО хоста (утилита командной строки) set.exe.

[Software (ПО хоста, работающее на комьютере)]

ПО хоста основано на библиотеке libusb. Все части программного обеспечения используют библиотеку libusb для взаимосвязи с устройством USB usb-Relay. Программное обеспечение включает две утилиты командной строки count.exe и set.exe, а также пример маленькой GUI-программы (программы с графическим интерфейсом). Утилита count.exe (./count для *nix) возвращает количество реле, имеющихся в устройстве. Утилита set.exe (./set для *nix) устанавливает состояние одного реле. Первый параметр set.exe указывает номер реле (0..255), а второй параметр указывает состояние реле (0 выключено, 1 включено).

Маленькая GUI-улилита позволяет пользователю установить состояние реле только с помощью мыши. GUI-программа не настолько полезна, как и утилиты командной строки.

usb-Relay-gui.png

Программное обеспечение и libusb может быть скомпилировано под операционными системами Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X, и Windows.

[Проект usb-Relay, выполненный на макетной плате AVR-USB-TINY45]

Проект usb-Relay был портирован на макетную плату AVR-USB-TINY45 (см. [3]). Функционально порт ничем не отличается от оригинала, он точно так же может управлять только одним реле, подключенным на порт светодиода (PB1).

usb-Relay-conn-AVR-USB-TINY45.jpg

На макетной плате остаются свободными ножки ~RESET, PB3 и PB4 (выводы 1, 2, 3 соответственно) чипа AVR (ATtiny45 или ATtiny85), которые тоже потенциально можно использовать для управления реле (однако нужно будет доработать firmware микроконтроллера). Чтобы можно было использовать ножку ~RESET (вывод 1), нужно соответствующим образом запрограммировать фьюзы микроконтроллера. Иходный порт и скомпилированные бинарники firmware можно скачать по ссылке [1], см. папку usb-relay\firmware-tiny45\ архива. Текущий порт поддерживает только одно реле (сигнал управления реле снимается с ножки PB1), ножки ~RESET, PB3 и PB4 микроконтроллера не используются. Запрограммированные байты фьюзов для микроконтроллера должны иметь значения LOW FUSE BYTE: 0xD1, HIGH FUSE BYTE: 0xDD, EXT FUSE BYTE: 0xFF.

Принцип работы утилит командной строки count.exe и set.exe не поменялся  (исходный код утилит и скомпилированные бинарники для Windows см. в папке архива по сслылке [1]). Утилита count.exe возвращает 1 (поддерживается только одно реле). Утилита set.exe может управлять состоянием реле. Вот пример команды включения реле (при этом светодиод D1 на макетной плате AVR-USB-TINY45 зажигается):

set.exe 0 1

Пример команды выключения реле (при этом светодиод D1 на макетной плате AVR-USB-TINY45 гаснет): 

set.exe 0 0

[Проект usb-Relay, выполненный на макетной плате AVR-USB-MEGA16]

Проект usb-Relay был портирован на макетную плату AVR-USB-MEGA16 (см. [4]). Функционально порт отличается от оригинала тем, что может управлять не одним, а 23 различными реле. Сигнал на включение реле 0 подается от порта PB0, управляющим светодиодом на макетной плате. Остальные реле с номерами от 1 до 22 могут управляться от портов P1..P22 макетной платы.

usb-Relay-conn-AVR-USB-MEGA16.jpg

Иходный порт и скомпилированные бинарники firmware можно скачать по ссылке [1], см. папку usb-relay\firmware-mega16\ архива. Запрограммированные байты фьюзов для микроконтроллера должны иметь значения LOW FUSE BYTE: 0xCF, HIGH FUSE BYTE: 0x98, LOCKOPT BYTE: 0xEF.

Принцип работы утилит командной строки count.exe и set.exe не поменялся (исходный код утилит и скомпилированные бинарники для Windows см. в папке архива по сслылке [1]). Утилита count.exe возвращает 23 (поддерживается 23 разных реле). Утилита set.exe может управлять состоянием любых их 23 подключенных к макетке реле. Вот пример команды включения реле 0 (при этом светодиод D1 на макетной плате AVR-USB-MEGA16 зажигается):

set.exe 0 1

Пример команды выключения реле (при этом светодиод D1 на макетной плате AVR-USB-MEGA16 гаснет): 

set.exe 0 0

Пример включения реле 14 (сигнал на его управление снимается с порта P14 макетной платы): 

set.exe 14 1

Пример выключения реле 14:  

set.exe 14 0

[Замечания по принципиальным схемам]

В схемах usb-Relay можно применить любые биполярные транзисторы структуры N-P-N (например BC848).

BC846-BC848-pinout.jpg 

В качестве реле подойдет любое электромеханическое реле на номинальное напряжение на обмотке 5 вольт - например FINDER 32.21.7.005.2300 или 34.51.7.005.0010, а также TRIL-5VDC-SD-1CH, TRS-5VDC-SB-L15-R.

Finder-Relay-30-22S-5V.gif Finder-Relay-34-51-7-005-0010-5V.jpg Finder-Relay-36-11-5V.gif TRIL-5VDC-SD-1CH.jpg TRS-5VDC-SB-L15-R.jpg

Можно применить и твердотельное реле (см. [5]). В случае твердотельного реле последовательно с его входом нужно поставить тогоограничивающий резистор, см. даташит на соответствующее реле, а также пример подключения такого реле в [6]. Диоды, которые блокируют обмотку реле (для ограничения выброса напряжения ЭДС самоиндукции при выключении реле) могут быть типа 1N4001 или аналогичные кремниевые (ток 1 А или более, напряжение 50 вольт или более).

Макетная плата AVR-USB-MEGA16 может управлять большим количеством реле (целых 23 штуки), однако нужно помнить, что непосредственно от шины USB можно запитать только ограниченное количество реле, так как максимальный нагрузочный ток питания от USB можно получить не более 500 мА. Например, если обмотка одного реле потребляет 40 мА, то можно запитать от шины USB только 11 реле. Для того, чтобы снять ограничения по питанию от шины USB, применяйте внешний дополнительный источник питания для реле.

[Ссылки]

1. Исходный код оригинального проекта usb-Relay (firmware и ПО хоста), принципиальная схема и разводка платы, а также исходный код портов проекта usb-Relay на макетные платы AVR-USB-TINY45 и AVR-USB-MEGA16.
2. V-USB - википедия.
3. Макетная плата AVR-USB-TINY45 (AVR микроконтроллер ATtiny45 или ATtiny85).
4. Макетная плата AVR-USB-MEGA16 (AVR микроконтроллер ATmega16 или ATmega32).
5Все о твердотельных реле.
6AVR-USB-MEGA16: hardctrl - управляемый сторожевой таймер (watchdog) для компьютера.

Последнее обновление ( 16.04.2013 )
 

Комментарии  

  1. #2 Дмитрий
    2015-07-3111:09:11 Подскажите, при перезагрузке ПК это реле будет отваливаться? Сигнал USB bus reset обрабатывается каким либо образом?

    microsin: после перезагрузки это реле скорее всего не будет определено компьютером (однако так будет не всегда, зависит от хаба и контроллера хоста USB). Для полной поддержки сброса по шине (чтобы это устройство USB нормально проинициализиро валось после перезагрузки хоста) необходима доработка: нужно управление подключением нагрузочного резистора R3. Т. е. его плюсовой конец должен быть подключен с к порту микроконтроллер а, и в библиотеке V-USB должно быть разрешено его управление.
  2. #1 dohtor
    2012-02-2113:02:12 по 1 ссылке - "такого файла не существует … "

    microsin: перезалил.

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2023