как отключить питание от usb устройства с помощью arduino

Похоже, я не могу перезапустить USB-модем в Linux, поэтому я настроил arduino-гиг для эмуляции подключения/отключения USB-модема.

У меня есть Arduino Uno R3 и несколько N-канальных мосфетов https://www.sparkfun.com/products/10213 , и я использовал настройку в http://bildr.org/2012/03/rfp30n06le-arduino/ для переключения земли. провод usb модема вкл/выкл.

Некоторое время работает, потом начались проблемы с usb хабом. Я думаю, что мне действительно нужно эмулировать подключение/отключение USB, то есть отрезать как провод питания, так и провод данных USB-модема.

Проблема в том, что в то время как питание USB имеет +5 В и заземление, данные имеют D + ~ + 2,5 В и D- ~ -2,5 В, они не имеют общего заземления, которое можно использовать с настройкой с использованием N-канального MOSFET. .

Что я должен делать? если я куплю другой arduino uno только для провода данных, у меня все еще есть проблема, земля данных не совпадает с землей arduino (я думаю, что для N-Mosfet требуется общая земля), я не знаю, вызовет ли это проблему .

Нужен ли мне компонент повышения напряжения постоянного тока? или есть другое решение.

Я думаю, как работает usb-штекер: сначала подключите провод питания, подождите несколько микросекунд, затем подключите провод данных, а отсоедините наоборот.

Вы не думали об использовании старых добрых реле?
Вы никогда не должны открывать только заземляющий провод USB-соединения; это вызывает всевозможные проблемы, как вы обнаружили. Вместо этого вы должны использовать P-канальный полевой транзистор в проводе V_USB.
@arne есть ли компонент, который вы бы порекомендовали? Я думал, что реле должно использоваться для отключения питания переменного тока: P
Реле — это не что иное, как электромагнитный переключатель. Переключатель можно использовать для любого типа цепи (переменного или постоянного тока), если он соответствует напряжению и току системы. Имейте в виду, я бы по-прежнему рекомендовал ответ @Turbo J. Используйте PMOS на шине питания USB.

Ответы (1)

включение/выключение заземляющего провода usb-модема.

Плохой выбор. Вместо этого используйте P-канальный MOSFET (например, IRLML6401 ) для переключения провода +5 Вольт.

Отключение GND может привести к тому, что линии передачи данных будут плавать около уровня питания 5 В, потому что на них обычно есть некоторая защита от электростатического разряда. На них также может быть некоторый обратный ток. Оба могут привести к сбоям в работе USB-концентраторов.

как работает usb-разъем, сначала подключите провод питания, подождите несколько микросекунд

Причина этого заключается в том, чтобы уменьшить вероятность повреждения электростатическим разрядом линий передачи данных — вероятность повреждения электростатическим разрядом линий электропередач гораздо меньше. Вам вообще не нужно разделять линии данных (и GND), если вы просто отключите питание на линии 5 вольт.

Для P-ch MOSFET есть ли другой компонент, который мне нужен? Например, для N-ch MOSFET я должен добавить к затвору подтягивающий резистор. Я искал местные интернет-магазины Arduino, но у них нет P-ch MOSFET, у них есть реле, но не твердотельное.