tompoo
1

Разрыв провода питания и дата провода usb

05.03.2017, 15:42. Показов 4054. Ответов 21
Метки нет (Все метки)

Подскажите пожалуйста, мне требуется разрывать провод + питания, и D+ data провод у USB.
т.е.:


http://**************************/download/file.php?id=30965&sid=e4f6bc5edcb8e790fb22d083a311d2d6

До этого было решение на сборке реле. Но Когда нужно разрывать 12 проводов, то вся эта канитель начинает много кушать и щелкает как печатная машинка.

Сейчас хочу заменить реле транзисторами, работающими в режиме ключа. Знаю, что транзисторы работают как кран :-D

Пусть питание usb устройств макс 1А, напряжение как обычно 5В, я подобрал для этого транзистор BD438, потому что у его макс ток 4А, а напряжение открытия 5В, как раз как у ардуинки.
Для дата-провода BC546B, у него макс ток 0.1А, напряжение открытия тоже 5В.

Пойдет так? И не будет ли мешать транзистор передаче данных через D+?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2017, 15:42
Ответы с готовыми решениями:

Длина USB провода
Приветствую, такое дело у нас в Ясиноватой имеется проблема с кабелями USB. Нет не то что их нет а...

Провода для подключения нагрузки блока питания
Собственно сабж. Где можно взять провода для подключения разной нагрузки, в том числе и до 30...

Сдружить провода
Возможно вопрос примитивен, но в полной мере отображает уровень моих знаний в этой сфере. Итак.....

Длина провода от батареек до оборудования
Здравствуйте Имеется беспроводной датчик температуры от настольной метеостанции. Датчик питается...

21
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
05.03.2017, 20:31 2
Нет, так не пойдёт.
Для шины данных можно посмотреть аналоговый мультиплексор. Для USB Low Speed и наверное Full Speed, что нибудь вроде 74HC4067, ADG406. Для USB High Speed нужно что нибудь более злое.
Для коммутации питания P-канальный полевой транзистор с лог. уровнями, например irlml6402.
0
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 753
06.03.2017, 08:51 3
Но Когда нужно разрывать 12 проводов
для USB, что за дикое желание? Какова истинная цель, исходная проблема?
0
tompoo
06.03.2017, 12:27 4
Цитата Сообщение от яверт
Нет, так не пойдёт.
Для шины данных можно посмотреть аналоговый мультиплексор. Для USB Low Speed и наверное Full Speed, что нибудь вроде 74HC4067, ADG406. Для USB High Speed нужно что нибудь более злое.
Для коммутации питания P-канальный полевой транзистор с лог. уровнями, например irlml6402.
мультиплексор я так понимаю принимает несколько каналов и выдает только один, который мы скажем? Не подходит, потому что иногда нужно, чтобы все usb были доступны. А вот с транзистором спасибо!

Цитата Сообщение от roxp
Но Когда нужно разрывать 12 проводов
для USB, что за дикое желание? Какова истинная цель, исходная проблема?
Есть много usb девайсов, которые воткнуты в хаб. Есть dllка (для windows), которая работает с этими девайсами. Проблема в том, что dll корявая и умеет работать только с одним девайсом, причем если воткнуто 5 устройств, то она как-то на бум выбирает одно из них. Вот я и придумал такой аппаратный костыль в виде разрыва цепей.
Логическую шину еще вариант отрубать программно, либо dllку в песочницу какую-то, к которой поочередно подрубать usb, но это всё долго, а нужно как обычно вчера.
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 753
06.03.2017, 13:24 5
...к примеру, libusb прекрасно работает с разными девайсами по моему опыту, хотя предпочитаю писать свои либы.

1- что значит коряво, может быть дело не в корявости либы, а в одинаковых идентификаторах устройств (корявости ПО разработчика девайсов)? О какой либе и устройствах речь?
2- отрубать/врубать логически (питание тут ни причем) можно через SetupAPI, посмотрите как это делает готовый divcon Руссиновича c сайта мелкософта. Утилита с открытыми сорцами, но никто не мешает ею из командной строки рулить.

Простой пример как можно рулить девайсами на шине:
Код
divcon64.ixi disable "PCI\VEN_10EC&DEV_8168"
divcon64.ixi enable "@SWMUXBUS\SW_NET_0_VID_1199&PID_0029"
divcon64.ixi enable "USB\VID_1410&PID_B005&REV_0014&MI_04"
обратно:
Код
divcon64.ixi enable "PCI\VEN_10EC&DEV_8168"
divcon64.ixi disable "@SWMUXBUS\SW_NET_0_VID_1199&PID_0029"
divcon64.ixi disable "USB\VID_1410&PID_B005&REV_0014&MI_04"
0
tompoo
06.03.2017, 13:38 6
Так, у меня был транзюк IRLU120NPBF, питание разрывает отлично.
Правильно ли я понимаю, что если Полевой транзюк NPN, то он всегда открыт, когда на gate либо ничего нет, либо когда пороговое значение gate больше, чем в даташите? И закрыт, когда мы подаем GND?

И сразу еще такой вопрос: почему не получается передавать данные через него? Т.е. я ставлю его в разрыв D+ линии и устройство просто не распознается, если подаю GND на транзюк. Плюс само устройство в этот момент думает, что оно подключено. По идее ведь транзюк открыт, и по нему свободно бегает всё.

tompoo
06.03.2017, 13:40 7
Цитата Сообщение от roxp
...к примеру, libusb прекрасно работает с разными девайсами по моему опыту, хотя предпочитаю писать свои либы.

1- что значит коряво, может быть дело не в корявости либы, а в одинаковых идентификаторах устройств (корявости ПО разработчика девайсов)? О какой либе и устройствах речь?
2- отрубать/врубать логически (питание тут ни причем) можно через SetupAPI, посмотрите как это делает готовый divcon Руссиновича c сайта мелкософта. Утилита с открытыми сорцами, но никто не мешает ею из командной строки рулить.

Простой пример как можно рулить девайсами на шине:
Код:
divcon64.ixi disable "PCI\VEN_10EC&DEV_8168"
divcon64.ixi enable "@SWMUXBUS\SW_NET_0_VID_1199&PID_0029"
divcon64.ixi enable "USB\VID_1410&PID_B005&REV_0014&MI_04"

обратно:
Код
divcon64.ixi enable "PCI\VEN_10EC&DEV_8168"
divcon64.ixi disable "@SWMUXBUS\SW_NET_0_VID_1199&PID_0029"
divcon64.ixi disable "USB\VID_1410&PID_B005&REV_0014&MI_04"
Вот да, этим вопросом я сейчас занимаюсь, пока что только устанавливаю win dryver kit. Но понимаете, если управление программно будет происходить дольше, чем аппаратный разрыв, то придется остановится на аппаратном, что я тоже очень не хочу, т.к. паять овер много)
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
06.03.2017, 13:51 8
Цитата Сообщение от tompoo
мультиплексор я так понимаю принимает несколько каналов и выдает только один, который мы скажем? Не подходит, потому что иногда нужно, чтобы все usb были доступны.
http://www.analog.som/ru/products/switc ... t-overview
0
tompoo
06.03.2017, 14:16 9
Цитата Сообщение от roxp
...к примеру, libusb прекрасно работает с разными девайсами по моему опыту, хотя предпочитаю писать свои либы.
1- что значит коряво, может быть дело не в корявости либы, а в одинаковых идентификаторах устройств (корявости ПО разработчика девайсов)? О какой либе и устройствах речь?
2- отрубать/врубать логически (питание тут ни причем) можно через SetupAPI, посмотрите как это делает готовый divcon Руссиновича c сайта мелкософта. Утилита с открытыми сорцами, но никто не мешает ею из командной строки рулить.
1. идентификаторы некоторых устройств типа USB\VID_XXXX&PID_XXXX&REV_XXXX&123456789OBSDEF, но и это не имеет значения. В dllке есть команды типа connect() и disconnect(), указывать куда подключаться, как и почему - нельзя х) Конкретно идет речь о камерах, которые нужно настраивать через usb.

Вообще это не проблема, всё это понятно как решать. Проблема в том, что я не могу 100% связать физический порт и его номер.
Т.е. вот я вставил 2 устройства и хочу знать, в какие именно физические порты я вставил. Сейчас определение физических портов такое: я подключаю устройство к физическому порту #1, у него divice location например Port_#0002.Hub_#0009. Окей, это значение мы добавляем в таблицу под номером 1. Подключаюсь с физ. порту #2, проделываем тоже самое и т.д.
НО! Иногда номера Port_#000Х.Hub_#000Х меняются, и почему я еще не выяснил. Возможно хаб перетыкали в другой разъем на компе, но у меня по моему такое случалось, даже если я хаб втыкал в тот же разъем, что и раньше. Сейчас есть идея повесить на каждый usb какую-нибудь метку, которую можно считать. Т.е. сначала мы считываем метку, потом сопоставляем метку и divice location, потом переключаем шину на устройство и сопоставляем устройство с этим divice location. Всё это огромные костыли по моему. Но что делать, если дали такую dll?
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 753
06.03.2017, 16:02 10
Проблема в том, что я не могу 100% связать физический порт и его номер.
К примеру, для устройств USB, драйвер которых создает виртуальные порты, идентификацию и привязку к какому порту было переподключено устройство давно решил, опять же, через - SetupAPI (причем энумерация ветки идет практически мгновенно) по идентификаторам устройств VID/PID + friendly name + serial number.

Этот же API позволит работать с любыми устройствами на шине PCI, в том числе USB.

Но что делать, если дали такую dll?
пока что DLL сферическая.

Конкретно идет речь о камерах, которые нужно настраивать через usb.
производители камер либо предоставляют собственное API и обертку (библиотеку) для работы напрямую через их драйвер (как это делает, к примеру, для плат видеозахвата - AngeloRTV), либо предоставляют драйвер WDM, обеспечивающий универсальный доступ через DyristShow. Либо и то и другое.
0
tompoo
06.03.2017, 19:20 11
В общем с транзюком IRLU120NPBF я далеко не уехал, он видимо не до конца открывается от ардуинки нано. Возможно из-за этого и усб не определяется, если его вешать на D+
Буду покупать с лог. уровнем irlml6402, как подсказал яверт
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
06.03.2017, 22:08 12
Цитата Сообщение от tompoo
мультиплексор я так понимаю принимает несколько каналов и выдает только один, который мы скажем? Не подходит, потому что иногда нужно, чтобы все usb были доступны. А вот с транзистором спасибо!
Я подумал, что надо подключать попеременно несколько устройств к одному USB порту. Но если используется USB хаб и у каждого устройства свой порт, то наверное можно просто отключать питание и не трогать D+.

Цитата Сообщение от tompoo
В общем с транзюком IRLU120NPBF я далеко не уехал, он видимо не до конца открывается от ардуинки нано.
Он N канальный, для открытия ему надо подать на затвор напряжение хотя бы на 3-4В выше напряжения истока. Если на истоке +5В, то на затвор получается надо подать хотя бы 8-9В...
С P канальным транзистором будет проще, он управляется отрицательным напряжением относительно истока.
0
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
07.03.2017, 12:27 13
отрубать/врубать логически (питание тут ни причем) можно через SetupAPI, посмотрите как это делает готовый divcon Руссиновича c сайта мелкософта. Утилита с открытыми сорцами, но никто не мешает ею из командной строки рулить.
тоже была похожая задача, тоже хотели решить программно, только вскрытие показало, что питание на материнке напрямую с БП идет на юсб
сделали на IRLML6402, прекрасно работает


http://**************************/download/file.php?id=30977&sid=e4f6bc5edcb8e790fb22d083a311d2d6
0
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 753
07.03.2017, 16:55 14
тоже была похожая задача, тоже хотели решить программно, только вскрытие показало, что питание на материнке напрямую с БП идет на юсб
ау-у-у, внимательно прочитали то, что процитировали? Речь не идет о снятии питания с устройства. Еще раз почитайте про divcon https://msdn.microsoft.som/en-us/window ... est/divcon )

Про поведение хаба и перемычки мне известно. Обесточивать нет необходимости, когда не идет речь о мультиплексировании многих-к-одному.
0
tompoo
07.03.2017, 18:03 15
Сейчас получается так, что если мы отключаем порт программно, через тот же divcon, то divcon его всё равно видит. И dllка видимо к нему пытается коннектится х)
tompoo
07.03.2017, 18:14 16
Блин, а вообще есть что-нибудь попроще этих мультиплексоров? Зачем мне покупать микросхемы на 16 ног, чтобы управлять всего одним разрывом? Почему нельзя с помощью транзистора?
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 753
07.03.2017, 20:46 17
Конечно она (divcon) видит, ведь устройство по-прежнему подключено физически, вот только не запущено или не примонтировано (зависит от функционала), а значит недоступно для использования.

Что до DLL, она по-прежнему - сферическая и поведение ее кроме вас никто не видел. Утверждение о том, что DLL видит устройство тоже только на словах. Обмен ее перехватывали, зависимости смотрели? Тем же Dependency Walker. Проще говоря, не вижу смысла вами ее упоминания без дополнительной информации по ней и железу. Камера она тоже камере - рознь, за плату видеозахвата упоминал.
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
07.03.2017, 22:41 18
Цитата Сообщение от tompoo
Блин, а вообще есть что-нибудь попроще этих мультиплексоров? Зачем мне покупать микросхемы на 16 ног, чтобы управлять всего одним разрывом?
STT вам предложил ADG811, это 4 независимых аналоговых ключа. В 74й серии есть тоже нечто подобное 74hc4066, и его одинарная версия - 74HC1G66.
0
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
08.03.2017, 00:36 19
Почему нельзя с помощью транзистора?
+1
Если с питанием получается, то почему с данными нельзя?
0
tompoo
08.03.2017, 19:37 20
Цитата Сообщение от judshym
Почему нельзя с помощью транзистора?
+1
Если с питанием получается, то почему с данными нельзя?
Кажись я понял, почему нельзя. В транзюке же есть диод, который не позволяет данным туда-сюда ходить.
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2017, 19:37

Самодельные провода папа-мама
Провод мама-мама сделать можно коннектор обжав соответствующий на концах провода. А как можно...

Помогите найти марку провода
Доброго дня всем! Есть такой милый провод МГТФ, всем он хорош. Но порой бывает легче паять...

Не лудятся провода
Сдох у меня внезапно зарядник для ноутбука (да так, что пробки выбило не только на розетки, но и...

Плата и 2 провода
Здравствуйте. Проблема такая. У меня есть микрофон, но так получилось, что я случайно вырвал провод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.