打印
[STM32F1]

ADC采集到的电压值转换与显示

[复制链接]
273|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuzaiy|  楼主 | 2022-11-11 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  STM32C8T6 ADC采集到NTC上的电压值怎么在数码管显示,有代码请给一份,谢谢!

使用特权

评论回复
沙发
zwll| | 2022-11-11 19:20 | 只看该作者
你的数码管怎么驱动的?

使用特权

评论回复
板凳
renyaq| | 2022-11-11 19:22 | 只看该作者
NTC 热敏电阻温度计算公式Rt = R *EXP(B*(1/T1-1/T2))

这里T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度;

其中T2=(273.15+25)Rt 是热敏电阻在T1温度下的阻值;

R是热敏电阻在T2常温下的标称阻值;

B值是热敏电阻的重要参数;

EXP是e的n次方;

转换得:1/T1 =ln(Rt/R)/B+1/T2,求TI,然后再减去273.15就是实际温度,同时+0.5的误差矫正。

使用特权

评论回复
地板
stly| | 2022-11-11 19:24 | 只看该作者
#include "math.h"



const float Rp=10000.0;             //10K

const float T2 = (273.15+25.0); //T2

const float Bx = 3950.0;              //B

const float Ka = 273.15;



float temp;





while(1)

{

temp = 1/(log(Rt/Rp)/Bx + (1/T2));

temp = (temp - Ka + 0.5)*10;

LCD_ShowxNum(86,150,temp,5,16,0x80);  //显示温度

}







将各步拆分如下:



float Get_Temp(void)

{

float Rt;

float temp;

Rt = Get_TempResistor();   //获得电阻值

//like this R=5000, T2=273.15+25,B=3470, RT=5000*EXP(3470*(1/T1-1/(273.15+25)),  

temp = Rt/Rp;

temp = log(temp); //ln(Rt/Rp)

temp/=Bx; //ln(Rt/Rp)/B

temp+=(1/T2); //ln(Rt/Rp)/B+(1/T2)

temp = 1/(temp);

temp-=Ka;

temp+=0.5; //加0.5误差矫正

return temp;

}

使用特权

评论回复
5
jiajs| | 2022-11-11 19:27 | 只看该作者
这只是部分功能的。

使用特权

评论回复
6
houcs| | 2022-11-11 19:30 | 只看该作者
楼主你如果真不会去外包发包,出钱找人做,简单的很。驱动数码管有2中方式:三极管驱动和LED驱动芯片驱动(例如MAX7219)

使用特权

评论回复
7
bqyj| | 2022-11-11 19:32 | 只看该作者
三楼好详细  不过这个真的不难做

使用特权

评论回复
8
heweibig| | 2022-11-11 19:34 | 只看该作者
怎么接的数码管啊  这种东西很简单应该

使用特权

评论回复
9
liuzaiy|  楼主 | 2022-11-11 19:37 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
10
Stahan| | 2022-11-11 21:05 | 只看该作者
你的数码管怎么驱动的?

使用特权

评论回复
11
Henryko| | 2022-11-11 21:57 | 只看该作者
怎么接的数码管啊

使用特权

评论回复
12
Bowclad| | 2022-11-11 22:23 | 只看该作者
1/T1 =ln(Rt/R)/B+1/T2,求TI,然后再减去273.15就是实际温度

使用特权

评论回复
13
Undshing| | 2022-11-11 22:43 | 只看该作者
实在不行去找外包吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

735

主题

7546

帖子

2

粉丝