找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1012|回复: 19
收起左侧

求助:STM32F103 采集LM35温度偏差太大

[复制链接]
ID:600558 发表于 2022-8-7 14:03 | 显示全部楼层 |阅读模式
实验条件:STM32F103最小系统板(网上10几元那种)、LM35模块    使用了PB0引脚,ADC采集温度值。
关键程序代码:
while(1){         
      /* Printf message with AD value to serial port every 1 second */
          AD_value = ADC_ConvertedValue;
                AD_value = (AD_value/4096)*3.3*1000/10;
                temperature=AD_value;        
    printf("The current temperature value =%d 0C  \r\n", temperature);  
          delay_ms(1000);   /* delay 1000ms */
        }
实验效果:可以输出温度,但与实际温度相差近一倍,不知道怎么回事?求助!

输出结果

输出结果


回复

使用道具 举报

ID:401564 发表于 2022-8-7 15:02 | 显示全部楼层
temperature=(float) AD_value*330/4096;
回复

使用道具 举报

ID:1034262 发表于 2022-8-7 15:34 | 显示全部楼层
先用数字万用表测量LM35的输出,正常了吗?
回复

使用道具 举报

ID:600558 发表于 2022-8-7 21:03 | 显示全部楼层
万用表测试电压就不正常
回复

使用道具 举报

ID:600558 发表于 2022-8-7 21:03 | 显示全部楼层
coody_sz 发表于 2022-8-7 15:34
先用数字万用表测量LM35的输出,正常了吗?

万用表测试电压就不正常
回复

使用道具 举报

ID:600558 发表于 2022-8-7 21:04 | 显示全部楼层
电压就不正常
回复

使用道具 举报

ID:600558 发表于 2022-8-7 21:13 | 显示全部楼层
Y_G_G 发表于 2022-8-7 15:02
temperature=(float) AD_value*330/4096;

还是不正确AD_value = ADC_ConvertedValue[1];
                temperature=(float) AD_value*330/4096;
                printf("The current X temperature value =%4.2f V \r\n", temperature);          结果仍然60多,实际温度31度               
回复

使用道具 举报

ID:883242 发表于 2022-8-7 23:39 | 显示全部楼层
处理AD_value这个值之前先把AD_value的值打印出来看看是不是你想要的。
回复

使用道具 举报

ID:420836 发表于 2022-8-7 23:53 | 显示全部楼层
确保 ADC 参考电压为 5V 或 3.3V。
回复

使用道具 举报

ID:401564 发表于 2022-8-8 12:57 | 显示全部楼层
qyljzjxl 发表于 2022-8-7 21:13
还是不正确AD_value = ADC_ConvertedValue[1];
                temperature=(float) AD_value*330/4096;
                printf(" ...

要是我的话,这种问题根本就不会专门发个帖子
1,先用万用表测量LM35对应当前温度输出的电压
2,先通过串口或者数码管,OLED都可以,把ADC的数字量显示出来
这基本就能找到问题的点了
你都通过串口输出转换后的温度值了,为什么不把ADC的数字量也显示一下呢?也许是哪个计算环节出问题了呢?
回复

使用道具 举报

ID:600558 发表于 2022-8-8 13:44 | 显示全部楼层
TTQ001 发表于 2022-8-7 23:53
确保 ADC 参考电压为 5V 或 3.3V。

如果使用电位器,输出电压完全正确,使用了开发板的3.3V引脚
回复

使用道具 举报

ID:401564 发表于 2022-8-8 15:34 | 显示全部楼层
LM35供电是多少V的?是不是也是用3.3V,LM35供电电压:
51hei截图20220808153225.png

回复

使用道具 举报

ID:1034262 发表于 2022-8-8 17:42 | 显示全部楼层
qyljzjxl 发表于 2022-8-7 21:03
万用表测试电压就不正常

那只能说,你的LM35不正常了。注意,我说的是LM35输出空载时测量,不能接ADC输入,因为可能你的ADC输入没有设置正确。
回复

使用道具 举报

ID:883242 发表于 2022-8-8 20:22 | 显示全部楼层
既然电压不正常,你给我们看软件没有任何意义。贴出电路图才是正经事。
回复

使用道具 举报

ID:600558 发表于 2022-8-9 16:03 | 显示全部楼层
就是网上购买的LM35模块,3个引脚那种,正接开发板3.3V了,负极接开发板地了,输出端接开发板B0脚了,是电路问题吗,但是接电位器完全没有问题呀!
回复

使用道具 举报

ID:600558 发表于 2022-8-9 16:04 | 显示全部楼层
实在不行,等以后再买个模块试试吧,不会坏了吧。
回复

使用道具 举报

ID:401564 发表于 2022-8-9 21:17 | 显示全部楼层
qyljzjxl 发表于 2022-8-9 16:03
就是网上购买的LM35模块,3个引脚那种,正接开发板3.3V了,负极接开发板地了,输出端接开发板B0脚了,是电 ...

是图片不清楚还是别的原因呢? 51hei截图20220809211702.png
回复

使用道具 举报

ID:883242 发表于 2022-8-9 21:26 | 显示全部楼层
qyljzjxl 发表于 2022-8-9 16:04
实在不行,等以后再买个模块试试吧,不会坏了吧。

你看楼主15楼的回复,LM35根本就没工作,买一万个模块都没用!
回复

使用道具 举报

ID:600558 发表于 2022-8-10 18:01 | 显示全部楼层
感谢大神耐心讲解,它确实是没有工作,不插这个模块,也是这样输出,为什么它不工作呢,在ARDUIO 开发板上,使用外接9V电池供电,确定模块+接在5V电压上(万用表测过),为什么就不运行呢?
回复

使用道具 举报

ID:600558 发表于 2022-8-10 19:29 | 显示全部楼层
查网上资料,直接用电源接模块正极和负极,输出脚万用表测试310MV左右,和室温30度差不多,为什么接板子上就不工作?感谢所用人耐心解答,先放一放,等以后再买个模块试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表