我应该使用什么微控制器?

电器工程 微控制器
2022-01-12 16:34:21

我正在尝试为我的计算机程序找到与现实世界通信的最佳微控制器包。我希望有大量的 I/O 引脚(到目前为止,我只需要 64 个数字,没有什么像模拟和 PWM 那样花哨),我可以通过调用我在 CPU 上运行的程序中的函数来直接读取和写入。

我不想将程序下载到微控制器本身上运行,而是我想要一些简单地插入我的 USB 并给我一堆 CPU 控制的 I/O 引脚,我可以从我的 C++ 程序中控制这些引脚。

对我来说最好的微控制器包是什么?我希望有一些相当便宜但面向未来的东西,因为它通过 USB 运行并且具有适用于 Windows 7 等现代操作系统的 64 位驱动程序。能够将这些微控制器中的多个与相同的计算机程序连接起来将是一个也有很大的好处(未来的扩展)。

编辑:我不需要高采样率(可能 10 Hz 用于读取输入,1 kHz 用于输出信号)并且大多数引脚仅用于输出。我正在使用全新的计算机(核心 i7 860),所以即使采样效率有点低或慢,它仍然应该没问题(只有一个专用于 I/O 的线程并让主程序与之通信)。

我也不需要单个微控制器封装上的所有 64 个 I/O 引脚。如果我可以同时连接许多微控制器包,那也可以(实际上,能够连接许多较小的微控制器包是理想的,这意味着它很容易扩展)。

我看过这个:http ://www.schmalzhaus.com/UBW32/index.html

有没有人有过这样的经历?知道它是否会起作用吗?主要担心的是运行程序的是微控制器,而不是我的 CPU。

4个回答

我推荐一个Teensy++ 2.0(或任何其他 AT90USB1286 开发板)

128KB 闪存、8KB RAM、46 个 I/O 引脚、8 个模拟输入

24 美元

Teensy 板由 USB 供电,可以提供虚拟 COM 端口(USB 通信设备类)。您可以将此串行链路用于您的引脚控制协议。这在 Windows、OSX 和 Linux 上无需任何自定义驱动程序即可工作。

要创建引脚控制固件,可以使用 TeensyDuino或普通的旧 C。

当位敲击时,瓶颈将是微控制器的 USB 接口。因此,您可能希望将 I2C 和 SPI 等协议转移到微控制器。为此,您可以使用我的Bus Ninja

为您的设置添加额外的 Teensies 很简单,您只需要每个设备一个 USB 端口,每个设备显示一个虚拟 COM 端口。

(注意。这种方法同样适用于各种 ARM 处理器和其他处理器,我只是不知道有什么便宜的开发板带有可用的软件)。

另一种方法是使用 Arduino 和Caterpillar Shield来扩展 I/O。在我围绕同一个 I/O 扩展器构建的定制板上,我能够以超过 1KHz 的频率更新 256 个输出。

我认为您想要的不是微控制器,而是National Instruments PCI-6509 I/O 卡之类的东西。您也可以获得 USB 版本,但它们的 I/O 比 PCI-6509 少得多。National Instruments 也会向您出售 C++ 驱动程序。

如果这看起来太贵了,你可以试试Labjack U3之类的东西。

您描述的解决方案不存在较低的价格。问题是您想在不是为它设计的系统上运行控制软件。串行化 64 个端口并以高采样率通过 USB 推动它极大地降低了主机的速度。

有一些解决方案适用于提到的 labjack 等低性能应用程序。但是,处理高 IO 速率所需的真正解决方案将涉及一个已编程的系统。问题是您必须使用什么编程来实现系统。

LabView 是非常昂贵的软件(效果很好,不要误会我的意思)。它使用图形语言设计软件并编译为在 FPGA 或 ARM 系统上运行的代码。对于大容量嵌入式应用程序而言,所有组件都过于昂贵,但在测试环境中绝对很棒,因为它提供了快速开发和高性能。

一个较便宜的解决方案是找到一个运行具有许多 I/O 的 linux 的系统。EmbeddedARM.com是一个为此提供多种产品的站点。您可以编写的代码可能是 shell 脚本、java、C 等。

Arduino系统提供了可以使用更简单的开发环境进行开发的微控制器它们的开源性质意味着已经有许多项目可供学习。

假的,

根据我对您的要求,UBW32 是一个很好的选择。只要您对 3.3VI/O 没问题(有些可以承受 5V,但不是全部),它将完全支持您需要的东西。它价格便宜(40 美元),并且很容易使用任何可以支持的语言交谈串行端口(几乎是所有这些 - Basic、C、C#、Processing 等)

您可以将 76 个 I/O 引脚中的任何一个用作输入或输出。随附的库存固件可让您做您想做的事,无需在嵌入式端进行编程。通过 USB(仅 10Hz)将数据传输到 PC 将没有问题。让输出达到 1KHz 可能也可以正常工作。

如果您有任何问题,请告诉我。我很乐意帮助你。

*Brian Schmalz UBW32 创建者