Arduino教程入门系列-第二十六课 关于基准源 将3.3V作为外部基准源使用
开始,我一直认为arduino的模拟口adc采样是准确的,直到Arduino入门教程--第十课--用arduino做简单温度计大家热烈的讨论为啥温度不准,偏高或者偏低,那时候我知道了测量基准源这个玩意(USB供电的情况下会造成5V电压不足,用作5V基准的电压可能只有4.8V甚至更低),随后有了Arduino入门教程--第十七课--使用内部基准源提高ADC(模拟口)采样精度 但依旧引起大家的热烈讨论,原因是芯片内部基准源制造误差可能会达到5%(实际28颗批量样本测试为2.2% 数据表),远低于稳压LDO芯片1%精度的标准,所以,有了今天的这篇文章。还是测温度,这次有点不同,我们会使用3.3V LDO作为基准源进行测量。
依旧说明下试验环境:本试验是在没有任何外部硬件支持的情况下,arduino采用usb供电方式,来达到尽可能准确的adc采样。
首先。我们要将要用的基准源接入arduino的 aref接口,其他依旧链接,LM35测量室内温度
搭建电路
2013-8-18 10:07 上传
(301.9 KB)
2013-8-18 10:07 上传
(127.98 KB)
然后程序基本一样。。。唯一的算法上5V 要改成 3.3V
ARDUINO 代码复制打印
/*
作者:迷你强
时间:2013年8月18日
IDE版本号:1.0.4
发布地址:www.geek-workshop.com
作用:第三次使用arduino模拟口测量室内温度,在没有外围基准的情况下,这次估计最准了。。
*/
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秒,控制刷新速度
}<br />
如需标定以下参数供参考:LM35传感器理论误差为±0.25℃ ,静态热耗散0.08℃。
实验效果就不展示了,反正一样,请大家自行比较三种方式的温度误差,理论上本次的温度应该是三次中间最准的,有条件的童鞋可以弄个进过质监局标定的标准温度计对lm35温度进行标定,看看还误差多少。
下一次,我们将使用带温度补偿的0.1%精度的专用外部基准源来再次做本实验,希望能将这个不准的问题终结掉
via - 极客工坊