使用D/A转换器灵活控制电压并使用Arduino输出模拟信号的方法

您所在的位置:网站首页 arduino模拟电压输出精度 使用D/A转换器灵活控制电压并使用Arduino输出模拟信号的方法

使用D/A转换器灵活控制电压并使用Arduino输出模拟信号的方法

2024-07-03 15:31:13| 来源: 网络整理| 查看: 265

2023.03.17

使用D/A转换器灵活控制电压并使用Arduino输出模拟信号的方法

Arduino具有输出数字信号和PWM信号等功能,但不具备输出模拟信号的功能。这次,我们将为您介绍能够实现这种模拟信号输出的D/A转换器。

 

目录 什么是D/A转换器? 如何通过Arduino使用D/A转换器? 尝试用Arduino控制D/A转换器 连接设备数字和人类模拟的桥梁——D/A转换器

 

1. 什么是D/A转换器?

 

数字信号是由二进制数字0和1表示的信号。在电子电路领域,有时也用“LOW/HIGH”或“ON/OFF”来表示。而自然界中的现象和人类能够感知的信号都属于模拟信号。模拟信号的特点是其大小、时间和数量是连续的。

D/A转换器是一种能够将数字信号转换为模拟信号并输出的转换器。

 

音频和视频属于模拟信号。然而,近年来,音频处理和图像、视频处理开始需要数字信号了。处理模拟信号时不支持滤波处理和压缩,而数字信号则支持。将处理后的数字信号转换回模拟信号就需要用到D/A转换器。

 

2. 如何通过Arduino使用D/A转换器?

Arduino包括Arduino Uno、Arduino Leonardo和Arduino Nano等多种产品。 Arduino Due是内置D/A转换器的Arduino之一。不过Due的外形与Arduino Uno不同,工作电压为3.3V,使用方法也有所不同。

如果要使用已经很普及的Arduino Uno来输出模拟信号的话,就需要外置D/A转换器IC。

 

3. 尝试用Arduino控制D/A转换器

这次,我们不使用内置D/A转换器的扩展板,而是尝试将D/A转换器IC直接连接到Arduino,看看能否输出模拟信号。我们使用的是ROHM的D/A转换器IC“BH2219FVM”(8bit分辨率,双通道)。

由于BH2219FVM为MSOP8封装,所以我们将使用转换板来使其适配万用板。

 

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

一边查看BH2219FVM的技术规格书一边与Arduino连接。将示波器探头连接到输出引脚并确认波形

 

BH2219FVM的技术规格书中提供了详细的使用方法。除了最大额定值和电气特性外,技术规格书中还提供怎样施加信号才工作的操作规范,需要一边阅读这些内容一边思考处理方法。

参考:D/A转换器 标准8bit分辨率 双通道/三通道型|ROHM

 

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

下面以向AO1端口输出2.5V电压为例进行说明。

根据上表“通道设置(BH2219FVM)”,前4位表示“AO1端口”的固定值是“0000”。 接下来的数据是表示“2.5V”的8位值,通过 “256 × 输出电压 ÷ 电源电压 = 数据” 进行计算。结果是: “256 × 2.5[V] ÷ 5[V] = 128”。

由于2.5V是“电源电压的一半”,所以数据是“8位能表示的数字(256)的一半”,也就是“128”。用二进制表示时,128是“10000000”。

通过使DI引脚按照CLK引脚ON的时序依次ON/OFF(1/0),将“0000”和“10000000”发送给BH2219FVM。最后,只要使LD引脚ON、OFF,BH2219FVM即可输出2.5V的模拟信号。

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

#define LD 8 #define CLK 7 #define DI 6 boolean D[12]; //将输入的数值转换为二进制并保存在数组D0~D7中 int binary(int out) { int i = 0; for (i = 0; i < 8; i++) { D[i] = out % 2; out = out / 2; } } //将输出端口指定结果保存在数组D8~D11中 int chSelect(int outPin) { int i; if (outPin == 1) { for (i = 8; i < 12; i++) { D[i] = LOW; } } else if (outPin == 2) { D[8] = HIGH; for (i = 9; i < 12; i++) { D[i] = LOW; } } } //将数组输出到DAC void outConfirm() { int i; for (i = 11; i >= 0; i--) { digitalWrite(DI, D[i]); digitalWrite(CLK, HIGH); digitalWrite(DI, LOW); digitalWrite(CLK, LOW); } digitalWrite(LD, HIGH); digitalWrite(LD, LOW); } //将输出值和输出端口传递给每个变量 int operationOut(int value, int ch) { binary(value); chSelect(ch); outConfirm(); } void setup() { //将DA转换器用的引脚初始化 pinMode(LD, OUTPUT); pinMode(CLK, OUTPUT); pinMode(DI, OUTPUT); digitalWrite(LD, LOW); } void loop() { int i; //输出锯齿波 for (i = 0; i arduino, D/A转换器

数字晶体管是削减元器件、创建简单电路的第一步

安全使用三端稳压器必备的散热基础知识



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭