Arduino uno教程④:模拟量,使用ADC测电压【连载】

科技   2024-11-24 08:22   广东  
性能参数
①主控芯片:ATmega328P
②数字输入输出引脚:14个
③PWM引脚:6个
④储存(存放代码的空间)32KB
⑤运存(运行时的存储)2KB;EEPROM(掉电保存空间)1KB
⑥晶振16MHz
在线仿真:https://wokwi.com/

Arduino uno教程①:安装Arduino IDE
Arduino uno教程②:开发板及点灯测试
Arduino uno教程③:按钮控制LED灯,附练习题
Arduino uno教程④:模拟量,使用ADC测电压

(一)简介

在实际的电路中,电压值往往不是精确的整数值,而是带有无限不循环小数的模拟值。然而,计算机无法直接处理这样的模拟值,因此需要将它们转换为数字值。Arduino Uno通过内置的ADC来实现这一转换。

Arduino UNO有5个模拟引脚,A0-A5

ADC的工作原理

电压范围:Arduino Uno的ADC可以读取0到5V范围内的电压。

分辨率:Arduino Uno的ADC具有10位的分辨率,这意味着它可以将0到5V的电压范围分成1024(2^10)个等份。因此,每个等份代表的电压值为5V/1024。

转换过程:当模拟电压施加到Arduino Uno的模拟引脚上时,ADC会读取该电压值,并将其转换为最接近的等分值。例如,如果电压为3V,则ADC会将其转换为最接近的整数值,即614(3V/5V×1024≈614.4,取整为614)。

串联电阻

Arduino Uno的模拟输入引脚具有固定的参考电压(通常为5V或3.3V,取决于开发板的供电电压),并且其ADC(模数转换器)具有固定的分辨率(通常为10位,即能够区分0到1023之间的值)。

如果待测电压超过了Arduino模拟输入的参考电压,或者待测电压范围过大,直接使用可能会导致测量不准确或损坏开发板。此时,通过串联一个或多个电阻来分压,可以将待测电压降低到适合Arduino测量的范围内。

(二) 程序
①Arduino Uno的模拟输入范围(5V)被ADC(模数转换器)分成1023个单位后,每个单位对应的电压值
5/1024=0.0048875855327468
#define BV 0.0048875855327468

②定义变量
int v; //定义analog所测得的数字(1~1023)double lv; //定义所测电阻的电压int RR = 2; //电阻数量

③初始化函数
启用串口,波特率为9600
将A0端口设置为输入模式
void setup() { Serial.begin(9600); pinMode(A0,INPUT);}

④循环函数
读取A0端口的模拟量,保存到变量v内
变量v再乘上每份ADC的电压BV,将结果保存到lv内
串口打印变量lv的值
voidloop() { v = analogRead(A0); lv = v * BV*2; Serial.println(lv);}

⑤程序
#defineBV0.0048875855327468 //analog将5V分成了1023个单位——5/1023int v; //定义analog所测得的数字(1~1023)double lv; //定义所测电阻的电压int RR = 2; //电阻数量voidsetup() { Serial.begin(9600); pinMode(A0,INPUT);
}
voidloop() { v = analogRead(A0); lv = v * BV*2; Serial.println(lv);}

⑥实验现象

待续...


END

 免费申请开发板 


投稿/推广/合作/加群 请扫码添加微信
(请备注来意,加群请备注城市-称呼-行业岗位信息)
 


面包板社区
分享电子技术干货,工程师福利!EET电子工程专辑、ESM国际电子商情、EDN电子技术设计官方社区。
 最新文章