3

我正在从事一个个人项目,涉及通过 USB 将简单信号从我的计算机发送到电路。基本上,我使用 USB 信号作为 MOSFET 的栅极信号,然后激活继电器以打开/关闭各种交流外围设备。例如,如果我想每分钟打开一个灯泡 5 秒,我将在每分钟的前 5 秒向第一根电线发送一个 1。

这是我的问题:我不知道如何在 USB 电缆上的特定线上手动发送 0/1,甚至根本不与 USB 端口交互:(

所以我想这个问题有多个部分,是否可以直接与通过 USB 端口发送的位进行交互?如果是这样,我会怎么做?我熟悉 C++ 和 C#,所以我真的希望你能在其中之一中做到这一点......

谢谢!

编辑嗯,所以看起来 USB 端口实际上只有一个 5V 引脚,所以直接 USB 交互不起作用。打算看看并行适配器并重新使用它。

4

6 回答 6

3

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

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

就硬件而言,流量控制线上的“1”(SET)值是线路上的 +3 到 +15 伏,而“0”是 -3 到 -15。实际电压可能因设备而异;测量它以确定。(已编辑;我把 1 和 0 弄混了。控制线使用与数据线相反的约定。)

以下是电压特性引脚排列的维基百科页面。

编辑:在对 USB 转并行适配器进行了更多研究之后,我认为它们不会提供所需的控制级别。为获得最佳效果,您需要一个 PCI 或 PCMCIA 并行卡,或一个内置于主板的并行端口。

我不是 Windows 程序员,但这个库可能对从 Windows 控制并行端口的线路很有用。

于 2010-10-03T09:17:09.110 回答
3

对于此应用程序,最简单的方法是使用串行端口仿真,可以使用 USB 串行电缆,也可以使用硬件设备中的 USB 串行转换器芯片(例如 FTDI FT232)。

无论哪种方式,这都允许您与您的 USB 设备进行交互,就像您使用串行端口一样(请参阅此处,了解如何在 Windows 中的 C++ 中执行此操作)

于 2010-10-03T09:23:08.243 回答
3

就像 Chris 建议的那样,您可以从 FTDI 获得 USB 从设备。 只需 27 美元,digikey就能为您提供一块已经完成所有精细布线的小板。

但是,出于您的目的,数据表第 39 页上描述的 bit-banging 模式将比 UART 模式好得多(UART 产生几千赫兹的脉冲,您希望电压保持在您设置的水平)。

希望您的 MOSFET 会以 3V 信号开启,因为 FTDI 会输出大约 3.1-3.2V 的高输出电压。

另外,请确保您使用FTDI 的最新驱动程序……几年前,他们的驱动程序(甚至经过 WHQL 认证)会导致频繁的 BSOD,而且我经常发现硬件随附的驱动程序 CD 已经好几年了日期。

于 2010-10-04T04:50:58.943 回答
1

我构建了一些与您正在做的非常相似的东西(我正在通过 USB 设备运行车窗电机,使用 mossfet H 桥(图中的 HDR1X8)来驱动电机。)。你需要一个 USB 到 I/O 设备,这是我使用的(我有一个 U421,它们非常适合面包板的中心线,如果你没有拆分的,401 也可以很好地与面包板配合使用。

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

他们给你一个dll,你只需用你的代码链接到它。它就像调用 WriteA 和 WriteB 以写入您的 mosfet 设备一样简单。请注意,逻辑电平线并不意味着驱动电流,因此如果您期望任何类型的中到大电流流动,则需要将其连接到晶体管。请参阅 usbmicro 网站上菜单的应用说明中的 App1,以了解连接它的正确方法。

于 2010-10-04T04:04:42.330 回答
0

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

于 2010-10-03T09:45:00.310 回答
0

从我的网站查看这些链接: 1.您可以使用 USB 转串口转换器。所有你需要知道的都在这里 2.你可以使用编程来直接访问 USB,但是对于这个你必须已经为你的设备安装了一个驱动程序。详情在这里

于 2013-09-07T12:44:23.460 回答