开始,我一直认为Arduino的模拟口ADC采样是准确的,直到后来我知道了测量基准源这个玩意(USB供电的情况下会造成5V电压不足,用作5V基准的电压可能只有4.8V甚至更低),随后发现芯片内部基准源制造误差可能会达到5%(实际28颗批量样本测试为2.2% 数据表),远低于稳压LDO芯片1%精度的标准,所以有了今天的这篇文章。还是测温度,这次有点不同,我们会使用3.3V LDO作为基准源进行测量。依旧说明下试验环境:本试验是在没有任何外部硬件支持的情况下,Arduino采用USB供电方式,来达到尽可能准确的ADC采样。
首先。我们要将要用的基准源接入arduino的 aref接口,其他依旧链接,LM35测量室内温度。
搭建电路
然后是程序,算法上5V要改成 3.3V
void setup() { analogReference(EXTERNAL); //使用aref引脚电压作为基准源 Serial.begin(9600); //使用9600速率进行串口通讯 } void loop() { int n = analogRead(A0); //读取A0口的电压值 float vol = n * (3.3 / 1023.0*100); //使用浮点数存储温度数据,温度数据由电压值换算得到(电压3.3V) Serial.println(vol); //串口输出温度数据 delay(2000); //等待2秒,控制刷新速度 }
需标定以下参数供参考:LM35传感器理论误差为±0.25℃ ,静态热耗散0.08℃。
实验效果就不展示了,反正一样,请大家自行比较三种方式的温度误差,理论上本次的温度应该是三次中间最准的,有条件的童鞋可以弄个进过质监局标定的标准温度计对lm35温度进行标定,看看还误差多少。
发表评论
要发表评论,您必须先登录。