自学电子的道路是漫长的,分享本人一点关于单片机对微弱电压变化的采样的经验。如果有出错的地方,欢迎各位大神指出错误,谢谢。
前段时间群里有个朋友问道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:深夜宿舍手机发帖,码字辛苦。所以不能一次写完,望谅解~
若超时,将以回帖方式补充
下帖预告“提高单片机对模拟传感器(电压)采样精度之-从氧气传感器的电压采样说起"
200字以内,仅用于支线交流,主线讨论请采用回复功能。