将 I2C 实现为模拟

电器工程 Arduino i2c 电压 模拟 解码器
2022-01-11 19:11:08

我怎样才能实现(或者可能有一个已经这样做的IC)一个输入为I2C而输出为模拟电压(0V - 5V)的板?

最终,我想将其中的几个连接到 arduino 的 IO 引脚,从而有效地创建数字到模拟输出。

4个回答

考虑一下 Microchip TC1321,它是一个 I2C 数模转换器 (DAC),具有 10 位分辨率(4.88mV/步),可在SOIC8中使用(您需要一个易于焊接的适配器板 [例如sparkfunfuturlec),并从 5伏特。如果您只接受 8 位(19.5mV/步)就可以考虑TC1320

这两款芯片均可从MouserMicrochip Direct购买,价格约为 2 美元。

如果您可以使用 SPI 而不是 I2C,您的选择会更容易,MCP4821 和 MCP4822 是采用漂亮 PDIP8 封装的单双 SPI DAC 芯片。同样,它们从通常的地方(mouser、digikey、microchip direct、farnell)花费大约 2 美元。

根据您驾驶的内容,如果您有 Arduino,您已经有三到六个模拟输出,因为您可以使用 AnalogWrite 功能来设置 PWM 引脚的占空比。频率约为 490 Hz,对于 LED 来说绰绰有余(同样,这取决于您的应用)。您可以将值设置为 0 到 255,从而为您提供 (5v / 256 =) .020V 的分辨率。

您需要确定 490 Hz 是否足够,但 PWM 用于模拟许多应用的模拟电压,它可能适合您,无需额外的部件或编程。

您也可以考虑使用滤波器(电容-电阻网络)来平滑方波。它会在您可以控制的应用程序中为您提供更多的回旋余地,而且无源器件很便宜,但根据您的应用程序,它甚至可能不是必需的。

http://www.arduino.cc/en/Reference/AnalogWrite

您需要某种类型的基于 I2C 的数模转换器 (DAC),快速搜索发现以下内容:

http://www.sparkfun.com/commerce/product_info.php?products_id=8736

正如您所知,AVR(Arduino 中使用的芯片)已经可以通过使用 PWM + 电容器来平滑波形(在某些情况下甚至不需要电容器)来产生“模拟”电压。它的分辨率不如专用 DAC 芯片那么高,但足以满足许多需求。