使用USB激活MOSFET/继电器

3
我正在进行一个个人项目,涉及通过USB从计算机向电路发送简单信号。基本上我使用USB信号作为MOSFET的门信号,然后激活继电器以开/关各种交流外设。例如,如果我想每分钟打开一个灯泡5秒钟,我将在第一条线路上的前5秒钟发送1。
这是我的问题:我不知道如何手动在USB电缆上的特定线路上传输0/1,甚至无法与USB端口进行交互:(
所以我想这个问题有多个部分,是否可能直接与通过USB端口发送的位进行交互?如果可以,我该怎么做?我熟悉C++和C#,所以希望你能用其中一种语言完成它...
谢谢!
编辑:嗯,看起来USB端口实际上只有一个5V引脚,因此直接的USB交互不起作用。我将查看并回来尝试使用并行适配器。
6个回答

3

如果电线的另一端没有USB接口,则USB不适合任何事情。如果您不想自己构建USB设备,我建议购买USB串行适配器,它可以为您提供两个可直接控制的输出线(流控制线),或者购买USB并口适配器,它可以为您提供超过8条线。

Chris Johnson的答案中有链接指向Windows串行端口编程说明。您需要查看第7节 - SETDTRCLRDTRSETRTSCLRRTS是您的流控制线切换(分别为DTR和RTS线)。

就硬件而言,“1”(设置)值在流控制线上的电压为+3至+15伏特,并且“0”为-3至-15伏特。实际电压可能因设备而异;进行测量以确保正确。(已编辑;我把1和0搞混了。控制线使用与数据线相反的约定。)

这里是维基百科关于电压特性引脚图的页面。

编辑:在对USB至并行适配器进行更多研究后,我不认为它们提供所需的控制级别。 为了获得最佳结果,您需要PCI或PCMCIA并口卡,或者集成到主板中的并行端口。

我不是Windows程序员,但这个库可能有助于从Windows控制并口的线路。


那么,如果我使用DE9串行适配器,理论上可以有六个控制线路?DTR、DCS、DSR、RI、RTS和CTS?MOSFET可以处理5-15V的门电压,因此线路上的实际电压应该不会太重要,除非它在低端时会导致过多的热量。 - FlyingStreudel
哎呀,顺便问一下...你知道负电压对MOSFET这样的晶体管会有什么影响吗?这可能是个愚蠢的问题,但现在已经是早上6点了 :) 但是,对于这个项目来说,负电压(就意图而言)不等同于0V吗?(也就是说,它不会打开门) - FlyingStreudel
并不完全正确 - 问题在于,其中一些是输入行。DTR和RTS是输出(从计算机到设备),而CTS、DCD、DSR和RI是输入(从设备到计算机)。 - Jander
嗯,我可能会选择并口。我需要控制超过两条线路。 - FlyingStreudel
不要使用并行端口,而是使用专为您提供USB串行I/O的设备。请参阅我的帖子,了解我在项目中使用的硬件。 - Scott Chamberlain
1
不,负电压并不等同于0V。负电压会偏置与晶体管衬底形成的寄生二极管,并可能对未受保护的设备造成永久性损害。 - Ben Voigt

3
使用串口仿真是这个应用程序中最简单的方法,可以使用USB-Serial电缆或在硬件设备中使用USB-Serial转换芯片(例如FTDI FT232)。 无论哪种方式,都可以让您像使用串口一样与USB设备进行交互(例如在Windows中使用C++的方法请参见此处)。

我已经阅读了文档,但似乎没有具体说明如何通过串口输出 :( 我不想通过电线发送信息,我只是想在我告诉它时在引脚8上提供5V电荷。 - FlyingStreudel
这些设备模拟串口,因此您可以使用串口API来控制引脚。在Windows中,请参阅http://msdn.microsoft.com/en-us/library/aa363194%28v=VS.85%29.aspx中的EscapeCommFunction。 - Lee Reeves
FTDI芯片还具有“位挤压”模式(使用其DLL而不是将其视为虚拟串行端口),可直接控制我认为的12个引脚。如果我没记错,它将是0V / 3.3V,但这足以打开大多数MOSFET。 - Ben Voigt

3
与克里斯所建议的一样,您可以从FTDI获得USB从设备。 在digikey上售价27美元,将为您提供一个已完成所有细微布线的小板子。
然而,对于您的目的,数据表第39页描述的位挤压模式比UART模式更好(UART在几千赫兹时会生成脉冲,您希望电压保持在您设置的水平)。
希望您的MOSFET能够通过3V信号打开,因为FTDI将输出大约3.1-3.2V的高电平。
此外,请确保使用来自FTDI的最新驱动程序...几年前他们有导致频繁蓝屏的驱动程序(甚至是WHQL认证的),我经常发现随硬件附带的驱动程序CD已经过时了几年。

Ben Voigt建议的板子是基于FT2232H芯片的。您可以使用FT232RL板和位挤压模式来降低成本并简化操作。 FTDI提供了一个C DLL。 Nusbio库支持C#。 - MadeInTheUSB

1

我曾经做过与你类似的东西(我曾经用USB设备驱动汽车电动窗,使用了MOSFET H桥(图中的HDR1X8)来驱动电机)。你需要一个USB到I/O设备这是我使用的(我用的是U421,它们完美地适配面包板的中心线,如果你没有分裂的面包板,401也可以很好地适配面包板。

http://img201.imageshack.us/img201/9316/u421.png

他们会给你一个dll文件,你只需要将其链接到你的代码中。就像调用WriteA和WriteB一样简单,用于向你的mosfet设备写入输出。请注意,逻辑电平线不适合驱动电流,因此如果你希望有任何中等到大型电流流动,你需要将其连接到晶体管上。请参见usbmicro网站上应用笔记菜单中的App1,以了解正确的连接方式。


“将这个连接到晶体管”-- FlyingStreudel已经在做了,他说它正在驱动MOSFET(金属氧化物半导体场效应晶体管)的门。 - Ben Voigt
我知道,你也知道,但是任何试图用原始USB驱动灯泡的人可能不知道,因此有时在他烧毁IO芯片之前重申问题是很好的。 - Scott Chamberlain

0
使用USB原型板。它通常附带软件SDK。

0

请查看我网站上的这些链接: 1.您可以使用USB串口转换器。您只需要知道此处的信息即可。 2.您可以使用编程直接访问USB,但是对于这种情况,您必须已经为您的设备安装了驱动程序。详细信息在此处


只提供翻译文本,不提供链接:需要详细的解决方案 - Somnath Kharat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接