Arduino入门教程--第十七课--使用内部基准源进行ADC采样

  • 秦时茗月
  • LV5工程师
  • |      2015-05-07 17:45:49
  • 浏览量 4316
  • 回复:4

 ADC全称为Analog To Digital Converter,中文全称为模数转换器。其作用是把模拟量的电压值,转换为数字。

在前面的教程中我们使用过LM35温度传感器,这个传感器为一个模拟量传感器,给传感器VCC连接ocrobot mango(Arduino兼容板)板上5V,GND连接板子上GND,在Vout引脚会输出电压,从0V开始,每升高10mv电压代表着温度上升1℃, 两者成线性关系。

线路连接图我也同样按照以前的接法,LM35的VCC接5V,GND接GND,VOUT接A0


Arduino入门教程--第十七课--使用内部基准源进行ADC采样


Arduino A0-A5口为ADC引脚,其分辨率为10位,也就是1024级,输出数值为0-1023,默认以输入电压作为基准电压。

对于一些场合,比如使用电池供电,因为在电量消耗过程中电压会不停变化,如果输入电压过高或者不准,就会导致参考基准不准,从而导致数值发生偏差。这时我们就可以采用内部基准源。

以LM35温度传感器为例:
首先我们使用USB线连接ocrobot mango(Arduino兼容板),用USB供电,下载下面代码。

Arduino入门教程--第十七课--使用内部基准源进行ADC采样


我们使用万用表同步测试5V端口(默认的基准电压从这里采集)的供电电压,万用表显示为5.03V。


Arduino入门教程--第十七课--使用内部基准源进行ADC采样

代码下载好以后,我们使用串口监视器查看返回来的温度数值,数值显示当前温度在27.34℃左右。


Arduino入门教程--第十七课--使用内部基准源进行ADC采样

然后我们使用外接电源从DC口供电,这时USB供电就会被自动切断,换用外置供电稳压后的电源给系统供电,万用表上数值显示当前电压为5.11V。


Arduino入门教程--第十七课--使用内部基准源进行ADC采样


然后我们重新打开串口监视器,返回的数值显示当前温度在26.86设置度左右。


Arduino入门教程--第十七课--使用内部基准源进行ADC采样


下面调用内部1.1V基准来试试看从LM35读取的温度数值。把下面代码下载,然后打开串口监视器。


Arduino入门教程--第十七课--使用内部基准源进行ADC采样


我这里返回的结果如下,显示当前温度为28.25℃左右。


Arduino入门教程--第十七课--使用内部基准源进行ADC采样


本次使用三种不同方法,同一温度传感器得到不同数值。

  • 使用外置电源供电误差最大,其供电电压为5.11V,偏离5V电压2.2%。
  • 使用USB供电稍微好一点,但是供电电压为5.03V,偏离5V电压0.6%。
  • 调用内部1.1V基准源,经过批量采样,1.1V内部基准源的平均误差范围在1.22%左右,最高达到2.2%。

在5V量程下,Arduino ADC的采样精度是10位也就是1024级,最小分辨率为5/1024=0.0048828125 V=4.8828125 mV

在1.1V内部基准源量程下,Arduino ADC的采样精度是10位,最小分辨率为1.1/1024=0.00107421875 V=1.07421875 mV

LM35是每10mV代表1℃,在5V量程下,分辨率接近0.5度,1.1V量程下分辨率接近0.1度。

通过以上分析换算,这次使用USB供电时,基准源误差相对于其他更小一些,USB供电温度更接近真实温度,但是当供电环境不稳定时,内部基准源就发挥作用 了~如果进一步要求更高级精度,那么就需要使用精密外部基准源。基准误差越小,ADC的精度也就越高,根据需求环境选用合适的基准源在各种制作中也是很重 要的一个环节。





大家如果有什么好的建议和想法,可以告诉我,QQ-3241299213, ICKey社区欢迎大家踊跃发表自己的想法

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:4
毳犇 2015-09-29
测试不准确啊,,,,
0   回复
举报
发布
cgd 2015-05-31
MARK ,
0   回复
举报
发布
秦时茗月 2015-05-27
什么?
0   回复
举报
发布
cgd 9小时前
马克!!!!!
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子