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测量室内温度



搭建电路


3.3v基准测温度_bb.png

2013-8-18 10:07 上传
(301.9 KB)






3.3v基准测温度_图示.png

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 - 极客工坊

标签: Arduino教程