博主最近在学习arduino的过程中尝试串口通信获得温度传感器的数值来显示在串口监视器中。
博主采用了两种温度传感器:LM35线性温度传感器、DHT11温湿度传感器。
LM35与arduino通信每秒输出一个电压值,由虚拟IO读取这个电压值,然后转换为对应的温度值,奇怪的是串口监视器输出的温度值一直保持在88~500摄氏度之间且不连续性的变化。用手捂住传感器后,温度竟然变成了0摄氏度!0摄氏度!0摄氏度!你没有听错!0摄氏度!
我以为是算法出错,然后检查程序,并无问题。然后检查连线,连线引脚连接正常。上位机环境有问题?我用OTG线连接usb线接通手机与arduino,然后usb串口读取arduino温度数据。温度正常,持续显示31摄氏度。难道真的是上位机问题?查驱动、查端口,everything is ok why?机智的我重新组装了面板板连线。上电,传感器温度升高,手被烫了一颗泡,串口输出竟然是21摄氏度!难道我的传感器被烧坏了?拆下传感器直接插到STC80c51板子上的接口,烧写程序,传感器主观测试温度正常,数码管显示温度均匀变化且接近室温。我就完全看不懂了。(逃
DHT11温湿度传感器看起来就很正规(至少比那个像三极管一样的LM35大很多)。直接接在arduino板子上,上位机串口监视,上电,一切正常,温度均匀变化。换安卓手机OTG线连接,串口监控,手机死机——卒。换用STC89c52,数码管显示数据稳定均匀。
目前情况来看,LM35似乎并不稳定,温度测试值受串口影响较大,但数码管显示温度正常。DHT11比较稳定,温度测试值不受串口影响,数码管显示也正常。
关于LM35的串口读取问题,我会持续关注研究,求前辈解答。
文章评论