肚子着凉吃什么药| 海凉粉是什么做的| 污蔑是什么意思| 什么是无氧运动| 验孕棒什么时候测| 增加骨密度吃什么药| 肺结核可以做什么运动| 小孩阑尾炎是由什么原因引起的| 种马什么意思| 奶阵是什么意思| 什么是核糖核酸| 肺炎吃什么药| qcy是什么牌子| 怀孕后为什么会生化| 失温是什么意思| 毛囊炎吃什么药最有效| 父母都没有狐臭为什么孩子会有呢| 大排畸和四维的区别是什么| 抗生素是什么药| 725是什么意思| 岁寒三友指什么| 骨穿是检查什么病| 松垮是什么意思| 特警是干什么的| g6pd筛查是检查什么| 四点半是什么时辰| 看望病人买什么东西好| 爻辞是什么意思| 癞皮狗是什么意思| 南字五行属什么| 耳鸣是什么意思| 口周皮炎用什么药膏| 我还是什么| 滑膜炎吃什么药好| 喉咙扁桃体发炎吃什么药| 健脾祛湿吃什么药| 免疫力低下吃什么药| 廉航是什么意思| 什么是玄学| 乳酸阈值是什么意思| 粗人是什么意思| 腿老是抽筋是什么原因| 教皇是什么意思| 去三亚需要什么证件| 丹参粉有什么作用和功效| 一什么牛| 故事情节是什么意思| 寻麻疹是什么原因引起的| 做胃镜有什么好处| 磨豆浆是什么意思| 趴着睡觉有什么坏处| 一什么柳树| 肾虚吃什么食物好| 苦丁茶有什么功效| 考护师需要什么条件| 淋巴炎吃什么药| 1932年属什么生肖| 脾是干什么用的| 公主和郡主有什么区别| 下海什么意思| 山东日照有什么好玩的| 鱼龙混杂什么意思| emba是什么| 血小板低吃什么| 专科有什么专业| 送朋友什么礼物好| 七九年属什么生肖| 糟老头是什么意思| 嘴巴里长水泡是什么原因| 胆汁反流吃什么药最好| 人绒毛膜促性腺激素是查什么的| 凌晨四点醒是什么原因| 10015是什么电话| pd999是什么金| 小case什么意思| 突然恶心想吐是什么原因| 榴莲有什么好处| 母胎单身什么意思| 张飞穿针歇后语下一句是什么| 大白片是什么药| 咽喉炎用什么药| 魔芋是什么| 中位生存期什么意思| 孩子手脚冰凉是什么原因| 大吉大利是什么生肖| 静脉石是什么意思| 成龙真名叫什么名字| 即什么意思| 坐月子吃什么下奶最快最多最有效| 海椒是什么辣椒| 什么叫十二指肠球炎| 18岁属什么| 肝炎挂什么科| 晚生是什么意思| 2月18日什么星座| 什么叫慢性非萎缩性胃炎| 鼻甲肥大吃什么药最好| 6月25日是什么星座| 什么是工科| 熊吃什么| 花胶有什么功效与作用| 双喜临门是什么生肖| 胆红素三个指标都高是什么原因| 喜欢紫色的人是什么性格| 一什么露珠| 蛇肉吃了有什么好处| 瞳距是什么意思| 读书有什么好处| 花荣的绰号是什么| 三句半是什么意思| 草是什么颜色的| 危如累卵是什么意思| 画像是什么意思| 为什么晚上不能倒垃圾| 马拉色菌毛囊炎用什么药治疗最好| 什么是穿刺| 基础医学是什么| 氯高是什么原因| 胃息肉有什么症状| 东北冻梨是什么梨| 双龙什么| ko是什么意思啊| 韩后属于什么档次| 78年的马是什么命| 1月8日是什么星座| 拉稀拉水吃什么药管用| 孕妇耳鸣是什么原因引起的| 懊恼是什么意思| 座驾是什么意思| 顶针什么意思| 牛黄安宫丸什么时候吃最好| exp是什么函数| 兰蔻是什么牌子| 容五行属什么| 为老不尊是什么意思| 美业是什么行业| 梦见橘子是什么意思| 危险是什么意思| 吃山竹有什么好处| 湿浊中阻是什么意思| 女人为什么会叫床| 川字五行属什么| 三月三是什么星座| 1974年属虎的是什么命| 秋天有什么花| 大人吃什么排黄疸快| 1月19号什么星座| 社保卡是什么样的图片| 一进门见到什么植物好| 肌腱炎有什么症状| 如意什么意思| 粘米粉是什么粉| 高抬贵手是什么意思| 二代试管是什么意思| 大兴安岭属于什么市| 牙周炎吃什么药好| 月经突然停止是什么原因| 肌酐高吃什么药好| 说梦话是什么原因引起的| 甲状腺做什么检查最准确| 月经为什么是黑色的| 手术室为什么在三楼| 落红是什么意思| 为什么半夜流鼻血| 纪委书记是什么级别| 三个毛念什么字| top1是什么意思| 药物制剂是干什么的| 胎心不稳定是什么原因| ad是什么| 什么的图案| 女人在什么时候最想男人| 肚子疼是什么原因| 主理人什么意思| 淋球菌阳性是什么病| 降钙素原检测是什么| dm表示什么单位| 金针菇为什么不能消化| 娣什么意思| 无花果和什么不能一起吃| 老鼠人是什么意思| 睡觉脚抽筋是什么原因引起的| 归脾丸什么时候吃效果最好| 井里面一个点念什么| 胰管扩张是什么意思| 专业职称是什么| 苹果补充什么维生素| 蝉联是什么意思| 景色奇异的异是什么意思| 5是什么生肖| 万宝龙皮带算什么档次| gf是什么单位| kalenji是什么品牌| 梦见摘瓜是什么意思啊| 桃花长什么样| dr胸部正位片是检查什么的| 青霉素是什么药| 吃什么抑制食欲| 暇步士是什么档次品牌| 赭色是什么颜色| 体积是什么| 静推是什么意思| 家徒四壁是什么生肖| 茶禅一味是什么意思| 小孩睡不着觉是什么原因| 被蜜蜂蛰了有什么好处| 芒硝是什么东西| 十月十五号是什么星座| 肠道紊乱吃什么药| 电焊打眼最有效最快的方法是什么| 6月8日什么星座| 端午节什么时候吃粽子| 胆囊壁结晶是什么意思| 出圈什么意思| 低血糖和贫血有什么区别| 杯酒释兵权是什么意思| 八月2号是什么星座| 23年属什么生肖| 本科是什么| 弟子规是什么意思| 牛肉补什么| 过敏吃什么药| 佛龛是什么意思| 丁未五行属什么| 以什么当什么| 2月2日是什么星座| 建设性意见是什么意思| 百白破是什么疫苗| 什么叫血糖| it是什么意思| 容字五行属什么| 下午一点到三点是什么时辰| 二氧化碳是什么东西| 打生长激素有什么危害和副作用| 颈椎病有什么特效药| 重庆的市花是什么| 狼牙套是什么| 居高临下的临是什么意思| 韩红和张一山什么关系| 苡米和薏米有什么区别| 宝宝为什么老是吐奶| 减肥吃什么食物瘦得快| 阑尾炎疼吃什么药| 釉是什么| 尿素高是什么意思| 禄是什么意思| 海马炖什么好小孩长高| 为什么指甲会凹凸不平| 忧虑是什么意思| 人设什么意思| 水压低用什么花洒| 秋葵什么时候播种| 叩是什么意思| 平均血红蛋白浓度偏低是什么意思| 手脚心热是什么原因| 胆囊是什么| 去鱼腥味最好的方法是什么| 什么是韧性| 手心脚心发热是什么原因| 喝什么茶养肝护肝最好| 三心二意是指什么生肖| 什么样的蝴蝶| 优思明是什么药| 康膜的功效是什么| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 活动中心 ? 板卡试用 ? 【换取逻辑分析仪】Arduino系列教程基于ArduinounoR4wifi版本

共2条 1/1 1 跳转至

【换取逻辑分析仪】Arduino系列教程基于ArduinounoR4wifi版本【ADC+DAC】

工程师
2025-08-04 01:36:59   被打赏 30 分(兑奖)     打赏
百度 由于固态锂电池具有安全性能好、能量密度高和循环寿命长等优点,是电动汽车理想的动力电池。

简介

在上一个章节中我们已经学习了如何使用Arduino的API来控制IO的状态切换,实现了LED的Blink效果。那么在本章节我将带着大家学习一下如何使用Arduino 的 AD (模拟信号转换为数字信号) 和 DAC PWM方式(数字信号转换成模拟信号)功能。



正文

在前两章的学习中我们已经知道了Arduino R4的 A0 - A5的端口可以用于模拟信号的采集或者是转换,如下图所示。那么本章节我们将使用ADC的功能来采集某一个PIN的电压值,并且使用DAC将其输出。 通过观察输入和输出的情况可以更好的让我们来学习AD和DA。如果你手头有一个示波器的话,那么可以更好的观察到实验的现象。

image.png


首先让我们来认识一下ADC

ADC转换(Analog-to-Digital Conversion,模数转换)是将模拟信号(如电压、温度、压力等连续信号)转换为数字信号的过程。ADC(模数转换器)是完成这一转换的硬件设备。

在微控制器、传感器和其他电子设备中,很多输入信号是模拟的,而数字系统(如计算机或微控制器)只能处理离散的数字信号。因此,ADC能够把模拟信号转换成一定范围内的离散数字值,使数字系统可以对其进行处理。

ADC转换的关键参数包括:

  1. 分辨率:通常用位数表示(如8位、12位、16位等),表示ADC能够将模拟信号分成多少个离散的数字值。分辨率越高,输出的数字信号越精确。

  2. 采样率:ADC每秒钟可以执行的转换次数,通常以“每秒采样次数”(Samples per Second,SPS)来衡量。

  3. 输入范围:ADC能够处理的模拟信号电压范围 (通常的输入范围为GND - Vref, 但是也可以通过分压电路来使其ADC采集更高的电压)。


那么在这款Arduino uno r4 wifi的开发板上, 它具备了一个十四位的ADC。ADC的分辨率可以被设置为 10位, 12 位或者 14 位。读取的ADC最大值分别为 1023, 4095 和 16383 


image.png

那么对ADC和DAC涉及的Arduino API 分别有以下几个

1- analogRead()
2- analogReadResolution()
3- analogReference()
4- analogWrite()
5- analogWriteResolution()




API 介绍


1- analogRead(PIN)

analogRead()  主要用于读取某一个PIN的ADC转换结果,根据设置的ADC的分辨率可以读取出不同的值。需要注意的一点是, 如果你当前系统的供电电压是3.3V的话, 那么你在十位ADC的分辨率下读取出来的数据最大值也是1024 也就代表的3.3v。如果是5v的系统供电的话,那么读取出来的数据将是5.0V。


下图为Arduino系列开发板ADC测量的最大电压,模拟输入IO PIN 和 支持的最大分辨率


image.png


2- analogReadResolution(bits)

analogReadResolution() 的API主要用于设置ADC转换的分辨率 (不要被这个名称迷惑, 你可能会觉得,它是用来读取当前ADC的分辨率)

我们可以根据上述的表格或者根据你自己开发板的数据手册来确定你的ADC分辨率是多少。然后调用上述的API进行设置。通过设置的位数不同,ADC读取的数值范围也有所不同


3- analogReference(type)

analogReference() API 主要用于设置开发板ADC的参考电压。通过设置的ADC参考电压值的不同,ADC读取的电压的范围也会有所改变。那么根据官方文档得知。 R4的默认参考电压为电源的电压,如果你使用的是5V的供电,那么参考电压也就是5v。

下图为Arduino R4 当前函数支持设置的参考电压。 分别是默认的电压5v。 RA4M1 上的1.5V,R7FA6M5上的1.5V,R7FA6M5上的2.0V ,R7FA6M5上的2.5V和外部的参考电压输入(输入只能输入0-5v之间)。

image.png


4- analogWrite(pin, value)

analogWrite() API 主要用于设置DAC输出的值。通过设置对应的PIN 和 value。对应的PIN便可以按照设定的分辨率输出对应的电压。

下图为Arduino uno 支持的 DAC输出的PIN (实际上使用的PWM模拟)


image.png


5- analogWriteResolution(bits)

analogWriteResolution() API 主要用于设置analogWrite(pin, value) 的输出分辨率。根据设置的分辨率的不同,那么analogWrite(pin, value) value 值也将不同。输出的电压也将不同。 这里有一点需要注意的是,如果你设置的分辨率实际上高于板子支持的分辨率的话。 那么你多余出来的位数将会被丢弃



实验DEMO

那么现在我们来写一个demo程序,来实际的应用一下ADC的转换和DAC的输出。

代码如下

int analogPin = A3; // 电位器滑动端(中间引脚)连接到模拟引脚3
                    // 外部引脚分别连接到地和+5V
int val = 0;  // 用于存储读取值的变量

void setup() {
  Serial.begin(9600);           // 设置串口通信
}

void loop() {
  val = analogRead(analogPin);  // 读取输入引脚的模拟值
  Serial.println(val);          // 输出读取的值用于调试
}


接线图如下:

16962027fc2ea230154af4118e814e3.jpg


我们可以通过调节滑动变阻器的值,来改变ADC转换的结果。 现象如下所示


image.png


此时我们可以观察到由于我们设置的为10位的ADC分辨率,那么读取出的AD的最大值为1024. 我们尝试将ADC的分辨率设置为14位。烧录再进行测试。


image.png

此时我们可以观察到AD的转换的值已经来到的2*14 也就是16384左右。




DAC输出Demo测试(PWM方式)

我们尝试小小的修改一下电路,使其我们可以读取ADC的值,并且转换成DAC的输出。

3c11131ce88c5f0085242e8755076b2.jpg

代码如下


int analogPin = A3; // 电位器滑动端(中间引脚)连接到模拟引脚A3
                    // 外部引脚分别连接到地和+5V
int val = 0;  // 用于存储读取值的变量
int outputPin = A5;  // 设置模拟输出引脚A5

void setup() {
  Serial.begin(9600);           // 设置串口通信
  analogReadResolution(10);     // 设置模拟读取分辨率为10位(0-1023)
  pinMode(outputPin, OUTPUT);   // 将引脚A5设置为输出模式
}

void loop() {
  val = analogRead(analogPin);  // 读取电位器输入引脚A3的模拟值
  Serial.println(val);          // 输出读取的值到串口用于调试
  analogWrite(outputPin, val / 4);  // 将读取的值缩小为0-255,用于控制A5引脚的PWM输出
}



总结


在本章节中,我们学习了如何使用Arduino R4的**ADC(模数转换)DAC(数模转换)**功能。通过电位器输入模拟电压信号,利用ADC将其转换为数字信号,再使用DAC功能将数字信号以PWM形式输出至指定引脚。我们探讨了关键的API函数,如analogRead()、analogWrite()、analogReadResolution()等,掌握了如何设置ADC和DAC的分辨率与参考电压。

通过实验,我们验证了ADC和DAC的工作原理,并通过代码示例加深了对模拟信号处理的理解,特别是使用电位器调节输入信号,并观察相应的输出现象。






关键词: Arduino     系列     教程     ArduinounoR    

专家
2025-08-04 09:25:19     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
什么叫肾阳虚肾阴虚 月是什么意思 转载是什么意思 五脏六腑指什么 贫血吃什么水果好
九月初六是什么星座 七夕节是什么时候 为什么咳嗽一直不好 来姨妈为什么是黑色的血 心脏造影是什么意思
为什么感冒喝白酒好了 bgb是什么意思 dave是什么意思 edf是什么意思 太阳为什么能一直燃烧
睡不着觉是什么原因引起的 肝回声改变是什么意思 观察是什么意思 忧愁是什么意思 大力丸是什么药
月经要来之前有什么症状hcv9jop8ns0r.cn 小孩子隔三差五流鼻血什么原因hcv8jop8ns8r.cn 梦见红棺材是什么征兆hcv8jop1ns7r.cn 鹅口疮用什么药hcv9jop3ns7r.cn 稼穑是什么意思hcv9jop0ns2r.cn
古代新疆叫什么hcv7jop6ns3r.cn 梦见坟墓是什么意思0735v.com 严重脱发是什么病先兆1949doufunao.com 为什么晚上不能扫地hcv7jop7ns1r.cn 亨廷顿舞蹈症是什么病hcv8jop2ns5r.cn
无缘无故吐血是什么原因hcv8jop6ns3r.cn 吹风扇感冒了吃什么药hcv8jop7ns0r.cn 吃什么补铁快hcv8jop7ns4r.cn hvp是什么病毒xinjiangjialails.com 甲状腺是什么病严重吗hcv8jop9ns1r.cn
骨质疏松用什么药好xjhesheng.com 指甲长出来是白色的什么原因hcv8jop1ns0r.cn 为什么要小心吉普赛人hcv8jop6ns7r.cn 恬静是什么意思hcv8jop9ns4r.cn 麦穗鱼吃什么hcv8jop3ns9r.cn
百度