Как управлять USB через Python

Необходимо сделать электромагнит, который должен поочередно включаться и выключаться 1 раз в секунду через USB кабель с помощью Python библиотеки Pyusb без использования микроконтроллеров. Возможно ли это сделать? P.S. Идея в том, чтобы электромагнит срабатывал от напряжения которое приходит от USB. На рисунке изображена схема, которую я хочу повторить введите сюда описание изображения


Ответы (1 шт):

Автор решения: eri

Если не используем контроллер, то нужно найти чип в котором есть usb и программируемый выход. Самое дешевое это чип UART на базе CP2102 или CH340. Бери на котором есть выход DTR.

Если возьмешь как на картинке ,с доп выходами, то там есть ещё 1 или 2 управляемых неподписанных пина (для второго магнита) ;)

уарт

Дальше нужен мосфет. Для того чтоб не спалить комп в экспериментах бери схемку с опторазвязкой (кубик с 4 ногами). Полевик по мощности магнита.

мосфет

DTR соединяешь с GND, +3.3v соединяется с PWM. Если нужно инвертировать включение, то соединяется DTR-PWM и GND-GND. Второй магнит, работающий противоположно первому включается по второму варианту через ещё один транзистор.

В зависимости схемок может понадобится резистор последовательно перед входом оптопары. Если использовать USB-COM вместо USB-UART или использовать гейт-драйвер вроде TLP350 вместо схемки... номинал R=(Uвых-Uвх)/Iвх

Электромагнит подключается к контактам "+" и load. Блок питания магнита к "+" и "-".

Ещё нужен диод, по мощности сопоставимый с электромагнитом. Например, 1N4007 хватит для небольших магнитов. Втыкается параллельно магниту в обратном направлении. "+" на катод и load на анод (полоской к плюсу).

диод

Он для того чтоб при отрыве не сгорел транзистор. Надеюсь ничего не перепутал.

Дальше Python. pip3 install pyserial

import serial, time

s = serial.Serial('COM5')
s.setDTR(True)
time.sleep(1)
s.setDTR(False)
→ Ссылка