查看“第十九课--Microduino 内部基准源ADC采样/zh”的源代码
←
第十九课--Microduino 内部基准源ADC采样/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==目的== 前面讲过LM35采集时每升高10mv电压代表着温度上升1℃,两者成线性关系。因此对电压稳定性要求很高。本实验将通过调用Microduino 内部基准源(3.3V或1.1V电压)结合LM35采集温度。 *'''[[Microduino-Core]]''' *'''[[Microduino-FT232R]]''' *其他硬件设备 **面包板跳线 一盒 **面包板 一块 **USB数据连接线 一根 **LM35D温度传感器 一个 **数字万用表 一个 ==原理图== 原理图接法与以往一样LM35的VCC接5V,GND接GND,VOUT接A0. [[File:第十八课-原理图.jpg|600px|center|thumb]] ===实验一=== *用Microduino-Ft232RL供电 **程序 <source lang="cpp"> void setup() { Serial.begin(115200); //使用115200速率进行串口通讯 pinMode(A0, INPUT); } void loop() { int n = analogRead(A0); //读取A0口的电压值 double vol = n * (5.0 / 1024.0*100); //使用双精度浮点数存储温度数据,温度数据由电压值换算得到 Serial.println(vol); //串口输出温度数据 delay(1000); //等待1秒,控制刷新速度 } </source> 串口监视温度数据: [[File:第十八课-USB供电.jpg|600px|center|thumb]] ===实验二=== *用Microduino 内部基准源1.1V计算温度值 **程序 <source lang="cpp"> void setup() { Serial.begin(115200); //使用115200速率进行串口通讯 analogReference(INTERNAL); //调用板载1.1V基准源 } void loop() { int n = analogRead(A0); //读取A0口的电压值 double vol = n * (1.1 / 1024.0*100); //使用双精度浮点数存储温度数据,温度数据由电压值换算得到 Serial.println(vol); //串口输出温度数据 delay(1000); //等待1秒,控制刷新速度 } </source> 串口监视温度数据: [[File:第十八课-1.1V基准电源.jpg|600px|center|thumb]] ===实验三=== *用Microduino 内部基准源3.3V计算温度值 '''注意:使用aref引脚电压作为基准源,需要将3.3V基准源接入Microduino的 aref接口。''' [[File:第十八课-3.3基准原理图.jpg|600px|center|thumb]] 基准源3.3V作为外部基准源使用详细参考:http://www.geek-workshop.com/thread-5717-1-1.html *程序 <source lang="cpp"> void setup() { Serial.begin(115200); //使用115200速率进行串口通讯 analogReference(EXTERNAL); //使用aref引脚电压作为基准源,需要将3.3V基准源接入Microduino的 aref接口 } void loop() { int n = analogRead(A0); //读取A0口的电压值 double vol = n * (3.3 / 1024.0*100); //使用双精度浮点数存储温度数据,温度数据由电压值换算得到 Serial.println(vol); //串口输出温度数据 delay(1000); //等待1秒,控制刷新速度 } </source> 串口监视温度数据: [[File:第十八课-3.3V基准电源.jpg|600px|center|thumb]] ==分析== 本次使用三种不同方法,同一温度传感器得到不同数值。 *使用USB供电稍微好一点,供电电压为4.99V,偏离5V电压0.2%。 *调用内部1.1V和3.3V基准源,经过批量采样,1.1V内部基准源的平均误差范围在1.22%左右,最高达到2.2%。 *在5V量程下,Arduino ADC的采样精度是10位也就是1024级,最小分辨率为5/1024=0.0048828125 V=4.8828125 mV *在3.3V内部基准源量程下,Arduino ADC的采样精度是10位,最小分辨率为3.3/1024=0.00322265625 V=3.22265625 mV *在1.1V内部基准源量程下,Arduino ADC的采样精度是10位,最小分辨率为1.1/1024=0.00107421875 V=1.07421875 mV *LM35是每10mV代表1℃,在5V量程下,分辨率接近0.5度;3.3V量程下分辨率接近0.3度;1.1V量程下分辨率接近0.1度。 ==结果== 通过以上分析换算,这次使用USB供电时,基准源误差相对于其他更小一些,USB供电温度更接近真实温度,但是当供电环境不稳定时,内部基准源就发挥作用了。如果进一步要求更高级精度,那么就需要使用精密外部基准源。基准误差越小,ADC的精度也就越高,根据需求环境选用合适的基准源在各种制作中也是很重要的一个环节。 ==视频== |}
返回至
第十九课--Microduino 内部基准源ADC采样/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息