从计算机到现实世界获取数字输出的最简单,最便宜的方法


8

我需要大量的数字输出来将计算机连接到现实世界,但是似乎这项工作并不像我希望的那么容易。

我研究了许多不同的方法,包括专用的数字I / O卡,带有USB接口的微控制器,串行端口,并行端口等。但是,所有解决方案似乎要么太昂贵,工作量太大,要么技术过时。

我希望有64个以上的数字输出,每个输出大约以1khz的速度运行,并且可单独控制。到目前为止,我能想到的最好的主意是将串行端口的输出粘贴到8位串行并行并行移位寄存器上,并在我希望更改和输出时(从USB到串行端口)通过串行连接发送字符。适配器)。我还没有测试过,所以我不知道它是否可以工作。

还有其他快速而又肮脏的方法可以从计算机中获取大量廉价的数字输出,我可以使用非常基本的C ++命令轻松控制这些数字输出吗?



你做过数学吗?简单的非USB RS232通常具有115200bps的最大速度,大约为10KB。假设每个通道仅需要1个字节(我对此表示怀疑)。您想每秒发送64 x 1000字节,大约64KB。然后,您的串行吞吐量将大大提高。有一些921600bps的高速USB串行电缆,尽管理论上可行,但我怀疑这是否有用,因为它处于边缘状态,而且正如我所说的1字节就足够了,微控制器几乎没有时间进行其他操作。您要么必须降低需求,要么准备钱包。
avra

3
也许你应该在重击某人之前重新阅读注释,以发现明显的错误... GPOI引脚输出位而不是字节。这意味着64 kbps / s,远低于最大115.2kbs
Faken

Answers:


7

听起来您打算闪烁一些圣诞灯。:-)

使用arduino或类似的东西有什么问题吗?如果大型1280/2560上的端口数量不够,那么扩展IO端口的数量将相当容易。您可以通过串行/ USB端子驱动它。您可以在arduino的输出引脚上使用移位寄存器,也可以使用i2c端口扩展器进行驱动。

使用这样的标准组件将使您的原型开发时间最短。

请注意,我的方式可能不是最便宜的。但这是有效的,并且实际上会使您快速滚动。


1
除了闪烁的灯光外,我正在尝试在原型自动万向夹具上控制32个步进电机,除非我没有任何资金...或任何电子知识。也许我解雇了微控制器的速度太快了,没有一步一步获得足够好的资源,以帮助他们从实际的例子着手快速起步。(而且我确实是从头开始的,我有一个相当奇怪的知识库,过于理论化而又不够实用,您可以假设我完全不知道……反正大多数时候还是喜欢这种感觉,
呵呵

1
控制步进电机将需要一些额外的功能。您将无法直接从微控制器输出引脚驱动它们。您需要在引脚和电动机之间使用一些电子“胶水”,以免炸微。像任何事情一样,最好从小处入手,逐步发展更高级的示例。我见过的更狂热的发烧友之一是tronixstuff.wordpress.com,它有一些不错的入门指南。我知道运行它的人也经常进行这种堆栈交换。
罗布2010年

1
是的,我发现一个非常好的步进电机驱动器可以在控制信号和电机之间使用(仅使用2个输入,步进和方向)。我会仔细阅读您链接的教程,谢谢。顺便说一句,为确保确定,我希望它是我的计算机,它通过c ++程序实时将命令发送到微控制器以移动电动机。使用此微控制器是否可能或非常容易做到?
Faken

1
当然。微控制器充当计算机和步进电机驱动器板之间的缓冲器。它可以解释您发送的命令并对其执行操作,并在需要时向PC提供反馈。使用常规做法的另一个好处是,您可以从社区中获得很多支持/建议,某人做类似事情的机会总是很高。因此,这本身就非常方便。微型计算机在PC和驱动板之间提供了一个非常好的低成本接口。
罗布2010年

Adafruit制作了一块不错的板,可用于驱动16个伺服器,并且可以将它们链接在一起。编写一些arduino代码从PC读取数据,然后将其发送到伺服驱动器板上,这将是相当容易的。adafruit.com/products/815
Eric Gunnerson

3

串行到并行移位寄存器将起作用。使用SPI端口,1KHz更新速率将没有问题。具有8MHz晶体(或更高)的ATmega328上的IIRC,您应该能够每秒获得1Mbits。许多其他微控制器也可以正常工作。

另一种选择是使用多个微控制器。例如,使用ATmega328(带无源元件的价格约为5美元)会给您18条线,同时保持TXD和RXD线空闲。平行于RXD线,然后所有uC将接收相同的命令字符串。您将需要在uC上解析命令字符串。使用FTDI电缆连接到USB。将Arduino引导加载程序添加到uC,您可以使用Arduino工具。

串行到并行的转换更为直接。如果您的应用可以使用漏极开路输出,则可以使用16通道LED驱动器。这意味着要增加四个芯片。


1

我遇到的最简单的选择似乎是IOIO-OTG。这是基于PIC控制器的外部OTG USB设备,专为android设计,但可通过Eclipse和Android开发工具包与PC一起使用。它具有46个3.3v GPIO引脚以及许多其他有用的东西。它没有项目所需的64个引脚,但是您可以使用一些串行至并行移位寄存器,如jluciani所述(或使用步进电机控制器,而使用较少的引脚)。

还有一个基于PIC的USB IO板,它执行类似的操作,但引脚数较少。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.