![]() |
![]() |
|||||||||||||||
Выключатель для шины USB
Автор: Сергей Безруков aka Ser60 Тем, кто занимается разработкой USB-устройств, наверняка приходится при отладке многократно вынимать и вновь вставлять в разъем USB кабель, соединяющий устройство с компьютером. Это приводит к износу контактов USB разъемов устройств и кабеля. Было-бы гораздо удобнее включать и отключать устройство посредством кнопки. Механические выключатели в данном случае неприменимы по нескольким причинам, в частности из-за неизбежного дребезга их контактов. К такому-же выводу пришел ранее и Райнер Ройш - автор статьи об аналогичном по функционированию выключателе, опубликованной в журнале Elektor Electronics №7-8 (2009), стр. 64. Однако, в его выключателе управление сигнальными шинами USB осуществлялось низкочастотными ключами серии 4000 и управление их включением и отключением производилось двумя раздельными механическими переключателями. Кроме того, сигнальные шины USB подключались к устройству одновременно с питанием. Как известно, при подключении USB устройства геометрия разъема USB обеспечивает подачу питания на него до подключения сигнальных шин. Отключение устройства производится в обратном порядке. Для некоторых USB устройств это может быть существенно. С учетом указанных недостатков оригинальный выключатель был переработан под иную элементную базу и логику работы. Включение и отключение устройства к шине USB в предлагаемом выключателе производится одной кнопкой с индикацией состояния светодиодом. Подключение сигнальных шин D+ и D- по нажатии кнопки происходит с задержкой около 200 мсек после подачи питания на потребитель. При повторном нажатии на кнопку отключение питания производится с той-же задержкой после отключения шин D+ и D-. Это позволяет иммитировать процесс подключения/отключения USB устройства к шине без его физического удаления/вставки в разъем. Для исключения коммутации подключенного USB устройства при случайном нажатии на кнопку введена задержка на время около 3 секунд. Таким образом, для коммутации USB устройства кнопка должна удерживаться в нажатом состоянии несколько секунд. Я пользуюсь описанным здесь выключателем на протяжении уже более 2 лет и не раз мысленно благодарил Райнера за его идею. Выключатель соединяется с компьютером (или хабом) через USB кабель, подключаемый к разъему J1 типа USB-B. Ведомые USB устройства подключаются к нему через разъем J2 типа USB-A. Сигнальные шины D+ и D- коммутируются электронными ключами U1 и U2, а питание - МОП транзистором Q1. Последний не нагреваясь коммутирует нагрузку до 1А. Работа при больших токах не проверялась, т.к. стандартом USB предполаается подключение устройств потребляющих не более 500 мА.
Логика работы устройства обеспечивается микроконтроллером (МК) U3, который помимо упомянутых выше функций устраняет влияние дребезга контактов кнопки. Кнопка подключена к входу МК через подтягивающий резистор внутри МК. При ожидании нажатия кнопки МК переводится в спящий режим, что минимизирует токопотребление устройства. Резисторы R1 и R2 обеспечивают отключение ведомого устройства от шины USB после подачи питания на схему вплоть до того, как МК инициализируется и установит напряжения логической 1 и нуля на выводах 1 и 3, соответственно. Полоса пропускания сигнальных ключей U1 и U2 достаточна для работы подключаемого USB устройства в режиме Full Speed (скорость обмена данными до 12 Мбит/сек). Выключатель собран на печатной плате, установленной в корпус 1551H фирмы Hammond. Файл печатной платы для системы Eagle прилагается. Первым делом на плате следует устанавливить МК и запрограммировать его внутрисхемно, временно подпаяв провода от программатора к дорожкам печатной платы. На плате имеются 3 проволочные перемычки, показанные синим цветом в файле платы. Программа МК написана на языке ассемблера и отлажена в системе MPLAB, которую можно скачать с сайта www.microchip.com . Исхoдный текст программы и загрузочный HEX файл прилагаются.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |
![](/templates/radiokot_classic_neew/images/datasheet.png)
![](/templates/radiokot_classic_neew/images/dorogi.png)
![]() |
![]() |
|||
|
||||
![]() |
![]() |