加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
提高单片机对模拟传感器(电压)采样精度
game00over2013/06/24仪器仪表 IP:天津
自学电子的道路是漫长的,分享本人一点关于单片机对微弱电压变化的采样的经验。如果有出错的地方,欢迎各位大神指出错误,谢谢。

        前段时间群里有个朋友问道Arduino的模拟输入的分辨率是多少,其实这个问题没有一个固定的答案。不过普遍大多数刚刚接触Arduino的初学者来说,普遍认为是4.88mV更精确的理论值0.0048828125V。也就是说,输入电压=0.0048828125*返回数值(0~1023),换句话说误差也是4.88mV。
        大部分初学者根据此来设计程序,比如 一温度传感器 ,温度与输出电压成正比, 10mV对应1℃(如:38.4℃对应输出384mV)。程序按照此规则编写好后,烧写,上电。却发现有时测出的温度与用其他使用相同传感器的电子温度计数值不同,有时甚至有两三摄氏度的误差。其实,绝大多数并不是由于传感器质量的原因。而是由于供电电压不是标准的5V的原因。
        为什么采样值会与供电电压有关系呢?
        我们不妨先分析下那个4.88mV的分辨率是怎么来的。Arduino的模拟基准电压默认为5V,也就是说分辨率=基准电压/1024。而我们在日常使用方法中,有时并不能得到一个非常标准的5V电源为Arduino供电,以一种常见的USB手机直充头来说。经测试,它的输出电压为5.4V,那么如果以它为Arduino供电,这时分辨率=5.4V/1024=5.2734375mV 。有人可能说不就多了0.3mV么,这点电压够干什么?您接着往下看,以上面的温度传感器为例,若此时输出电压为384mV

在标准5V情况下:
分辨率=4.88mV
返回值=384/4.88=78或79
经程序处理输出温度=38.064℃或38.552℃

在5.4V非标准供电下:
分辨率=5.27mV
返回值=384/5.27=72或73
经程序处理输出温度=35.136℃或35.624℃

所以,千万别小看基准电压带来的问题,这在实际中可是大问题。
这还仅仅是10mV对应一摄氏度的“敏感”型传感器,如果是一些电压变化较小的传感器呢?
由基准电压不稳定造成的测量误差实在是太大了。

---------------------------------------------------------------------------------------
ps:深夜宿舍手机发帖,码字辛苦。所以不能一次写完,望谅解~
若超时,将以回帖方式补充
下帖预告“提高单片机对模拟传感器(电压)采样精度之-从氧气传感器的电压采样说起"
来自:仪器与装备 / 仪器仪表
14
新版本公告
~~空空如也
game00over 作者
12年1个月前 IP:未同步
539599
回 3楼(.........) 的帖子
我仅仅是举例……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
game00over
学者 笔友
文章
45
回复
576
学术分
4
2010/12/31注册,2年2个月前活动

喜欢捣鼓的宅男

主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的