一种使用DA转换器灵活控制电压的方法,并使用Arduino输出模拟信号

小夏 科技 更新 2024-02-21

Arduino具有输出数字信号和PWM信号等功能,但不具备输出模拟信号的能力。 在本文中,我们将介绍一个可以实现这种模拟信号输出的DA转换器。

数字信号是由二进制数字 0 和 1 表示的信号。 在电子电路领域,有时也被称为“低高”或“开关”。 自然界中的现象和人类可以感知的信号是模拟信号。 模拟信号的特点是它们的大小、时间和数量是连续的。

转换器是将数字信号转换为模拟信号并输出的转换器。

音频和 ** 是模拟信号。 然而,近年来,音频处理和图像处理已经开始需要数字信号。 处理模拟信号时不支持滤波和压缩,而数字信号则支持。 将处理后的数字信号转换回模拟信号需要DA转换器。

Arduino 包括 Arduino Uno、Arduino Leonardo 和 Arduino Nano 等多种产品。

Arduino Due 是带有内置 DA 转换器的 Arduino 之一。 但是,DU的形状与Arduino Uno的形状不同,工作电压为33V,使用方式也不同。

如果要使用已经很流行的Arduino UNO输出模拟信号,则需要外部DA转换器IC。

这一次,我们没有使用带有内置DA转换器的扩展板,而是尝试将DA转换器IC直接连接到Arduino,看看是否可以输出模拟信号。 我们使用的是ROHM的DA转换器IC“BH2219FVM”(8位分辨率,双通道)。

由于BH2219FVM采用 MSOP8 封装,我们将使用转换板使其与多用途板兼容。

与 I2C 和 SPI 方法的 D-A 转换器不同,该 DA 转换器通过三线串行通信运行。 由于这是它自己的方式,并且不符合特定的协议,因此您需要创建自己的串行通信处理,以便 DA 转换器在草图中正常工作。

在连接到Arduino时检查BH2219FVM的技术规格。 将示波器探头连接到输出引脚并确认波形。

BH2219FVM的技术数据表提供了有关如何使用它的详细说明。 除了最大额定值和电气特性外,技术规范还提供了如何应用信号进行操作的操作说明,在阅读这些内容时有必要考虑如何处理它们。

参考: D A 转换器 标准 8 位分辨率 双通道 三通道 Rohm

BH2219FVM的控制方法很简单。 输出模拟信号的端口(4 位)和 8 位数据(4 位、8 位、12 位)以 1 位为增量依次传输到 DI 引脚。 BH2219FVM读取 CLK 引脚上升沿上的 DI 引脚。 12位传输完成后,如果LD引脚接通,则输出与数据对应的模拟信号。

以下是将输出 2 到 AO1 端口以 5V 电压为例。

根据上表信道设置(BH2219FVM),前四位数字表示端口AO1的固定值为0000。

下一个数据是显示“25v“ 的 8 位值,通过。

256 输出电压电源电压数据”。

进行计算。 结果是:

256 × 2.5[v] ÷5[v] =128”。

自 25V 是“电源电压的一半”,因此数据是“可以用 8 位表示的数字 (256) 的一半”,即“128”。 当以二进制表示时,128 是“10000000”。

将“0000”和“10000000”发送到BH2219FVM,方法是按照 CLK 引脚的 ON 顺序将 DI 引脚放在 (1 0) 上。 最后,只要LD引脚是ON和OFF,BH2219FVM就可以输出25V模拟信号。

下面的草图是通过串行通信将数据从Arduino发送到BH2219FVM,并将“锯齿波”输出到BH2219FVM的AO1引脚。

#define ld 8#define clk 7#define di 6boolean d[12];将输入值转换为二进制并保存在数组 d0 d7int binary(int out)} 保存指定的输出端口 result in array d8 d11int chselect(int outpin) }else if (outpin == 2) 将数组输出到 dacvoid outconfirm() digitalwrite(ld, high); digitalwrite(ld, low);} 将输出值和输出端口传递给每个变量 int operationout(int value, int ch)void setup() void loop()。
这个草图比较注重易懂性,所以效率不是很好,转换周期有点慢。

草图中的每件作品都在下面解释。

#define ld 8#define clk 7#define di 6boolean d[12];
首先,将要连接的 DA 转换器的引脚与 Arduino 的引脚号相关联。 LD 是引脚 8,CLK 是引脚 7,DI 是引脚 6。 接下来,定义一个阵列 d 来保存要发送到 DI 引脚的 12 位信息。 为了将 0 1 保留为 12 位,需要 12 个数组元素。 由于只保存了 0 和 1,因此我们使用 boolean 数据类型。

void setup()
通过设置功能设置要使用的引脚的工作。 所有三个引脚都用于输出。 在设置功能中将LD引脚指定为低电平是为了防止其状态不稳定。

void loop()
“要输出的数据”和“端口号”通过循环功能传递给操作输出功能(用于将信号输出到下文所述的 DA 转换器)。 对于要输出的数据,使用 for 语句将值设置为从 0 到 255 逐渐增加。 由于每次调用环路函数时都会重复工作,因此输出电压为“锯齿波”。

int operationout(int value, int ch)
operationout 函数已将参数传递给执行实际处理的函数。 然后调用三个函数:chselect 函数,它将端口号(上 4 位)扩展到 0 或 1,二进制函数,将要输出的数据(下 8 位)扩展到 0 或 1,以及 outconfirm 函数,将数组 d 的内容传输到 da 转换器。

int chselect(int outpin) }else if (outpin == 2)
使用 chselect 函数执行最多 4 位的操作。 当从参数中指定端口号 1 时,0 将保存在数组 d 的元素 8 到 11 中。 当从参数中指定端口号 2 时,1 保存在数组 d 的元素 8 中,0 保存在元素 9 到 11 中。

int binary(int out)}
传入的十进制数由二进制函数转换为 8 位二进制数,并存储在 d[0] 到 d[7] 中。 此技术通常用于二进制转换。 使用 for 语句“找到除以 2 后的余数(最低数字是 0 还是 1? ),除以 2(四舍五入最低数字)“到”依次从最低数字转换为二进制数”。

void outconfirm() digitalwrite(ld, high); digitalwrite(ld, low);}
通过最终的输出确认功能,将阵列 d 中的数据传输到 da 转换器并输出模拟信号。

数组 d 中 0 个 1 的顺序与它传输到 d a 转换器的顺序相反。 因此,for 语句按从 11 到 0 的降序循环,并以正确的顺序输出数组 d 的内容。 在循环中,还执行 CLK 处理。 for语句结束后,当添加LD引脚的上升沿信号时,DA转换器输出与传输数据相对应的模拟信号。

下面是用示波器观测到的每个点的电压图。

Arduino操作BH2219FVM时的波形从DA转换器的输出引脚输出19Hz锯齿波。

查看 DI 引脚(顶部)和 CLK 引脚(底部)上的波形。 您可以根据 CLK 的动作查看 DI 引脚的打开和关闭方式。

放形以查看信号的发送方式。 图中显示,180的信号被发送到DA转换器的AO1引脚。 根据此信号输出 352V电压。

随着数字化的进步,DA转换器广泛应用于**设备、通信设备、电机驱动设备等各种产品中。

通过在Arduino上添加使用DA转换器的模拟信号处理,它可以在各种场景中使用。

在这种情况下,数据传输方法可能看起来有点复杂,但使用支持 I2C 或 SPI 等常见数据传输标准的转换器会更容易、更简单。 当您需要模拟输出时,请尝试 DA 转换器!

如需购买D变频器,申请样品测试、BOM匹配等需求,**客服微信:13310830171。

相似文章

    如何使用字体转换器?

    搜索主题 月全职挑战赛 音量转换器是一个强大的工具,可以帮助我们轻松地将文本转换为各种不同的字体样式,使我们的文档 海报 徽标和更加独特 专业和个性化。本文将向您介绍字体转换器的使用方法和技巧。.选择合适的字体转换器。在选择字体转换器时,我们需要考虑以下因素 特点 不同的字体转换器具有不同的功能和特...

    将PDF转换为Word转换器! 分享3个宝藏!

    在我们的日常工作和生活中,我们经常需要将PDF文件转换为可编辑的格式,如word excel ppt等。然而,简单的文件格式转换并不像我们想象的那么简单。我们需要一个专业的PDF转换器来完成这项任务。本文将为您推荐几款实用的PDF转Word转换器软件。.迅速PDF转换器 它是一款易于使用的 PDF ...

    XLSX 和 vCard 转换器? 80人不知道可以转换的格式

    随着数字时代的到来,对数据转换的需求越来越大。其中,XLSX和VCARD格式的转换尤为常见。为了满足这一需求,我们开发了XLSX和VCARD转换器 锦州VCF转换器。该转换器允许用户在这两种格式之间快速准确地进行转换,大大提高了数据管理的便利性。.XLSX 和 vCard 转换器的功能特点 .多种文...

    DC DC 电源转换器是铁路行业的节能解决方案

    DC DC 电源转换器 铁路行业的节能解决方案。在铁路工业中,直流电源转换器是一种非常重要的设备,它将一个电力系统 如电网 的直流电转换为另一个电力系统所需的直流电,或转换一个电力系统的电压或电流水平。这种功率转换器在铁路系统中起着至关重要的作用,尤其是在节能和高效率方面。.直流电源转换器的应用。....

    AC DC转换器原理、类型和应用

    在现代电子设备和电力系统中,AC DC转换器作为电的桥梁起着至关重要的作用,将交流电转换为直流电,为各种电子设备提供所需的电力。AC DC转换器,也称为整流器,基于将交流电转换为直流电的原理。交流电源是周期性变化的电压,而直流电源是恒定电压。为了满足电子设备对直流电的需求,AC DC转换器通过整流过...