4575|2

6960

帖子

11

TA的资源

版主

楼主
 

【GD32F310G-START】NTC温度计 [复制链接]

【GD32F310G-START】电压表 - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)

在获取电压后,得到它的电压十分的准确,接上NTC后,立马变成温度计了:

原理图:

1、程序,在ADC获到电压的基础之上增加电阻获取与温度转换:

 

/*10K NTC 温度与阻值对应表 X轴代表温度  Y轴代表阻值*/
int X_Temp[24] = {-30,-20,-15,-10,-3,-2,-1,0,6,12,18,25,31,37,45,50,57,63,70,76,83,89,94,100};
int Y_Res[24] = {1706211,938797,707223,537697,371848,35241,33567,31908,23698,17794,13498,9900,7625,5925,4288,3529,2709,2177,1701,1386,1101,909,778,649};
 
/*************************************************
 *函数名称:OneDimensionalEquation                                  
 *功    能:解一元一次方程   给出两点坐标和第三点的x值或y值  得出第三点y值或x值                          
 *参    数:                                      
 *返 回 值:                                     
 *************************************************/
float OneDimensionalEquation(int x1,int y1,int x2,int y2,int Unkown_x,int Unkown_y)
{
	float k = 0;
	float b = 0;
	
	k = (((int32_t)y1-(int32_t)y2)/((int32_t)x1-(int32_t)x2));
	b = y1-x1*k;
	
	if(0 == Unkown_x)  //如果unknown_x设为0 就是求x的值 否则求y值
		return ((float)Unkown_y-b)/k;
	else
		return ((float)Unkown_x*k+b); 
}
/*************************************************
 *函数名称:uint8_t Res_To_Temperature(uint16_t NTC_Res)                  
 *功    能:计算真实温度              
 *参    数:NTC当前阻值                             
 *返 回 值:温度值                            
 *************************************************/
float Res_To_Temperature(uint16_t NTC_Res)
{
	uint8_t Loop = 0;
	uint8_t StartPoint = 0;
	float RealTemp = 0;
	
	/*查找阻值所对应的区间*/
	for(Loop = 0;Loop < 17;Loop++)
	{
		if(NTC_Res > Y_Res[Loop+1])
		{
			StartPoint = Loop;
			break;
		}
	}
 
	RealTemp = (float)OneDimensionalEquation(X_Temp[StartPoint],Y_Res[StartPoint],X_Temp[StartPoint+1],Y_Res[StartPoint+1],0,NTC_Res);
 
	return RealTemp;
}

float get_temper(uint8_t channel)
{
  uint16_t value,R_value;
  float R;
  value = adc_Channel_Average(ADC_CHANNEL_9);
  R_value = (value * 10000)/(4096-value);
  return Res_To_Temperature(R_value);
}

主程序:

vref_value = get_temper(ADC_CHANNEL_9);
sprintf(show_adc_str,"%.2f C",vref_value);
LCD_ShowString(18,36,show_adc_str,WHITE,BLUE,32,0);


这样一个温度计可以了,一下步用无线串口发送给RVB2601,完成温度采样。

此帖出自GD32 MCU论坛

最新回复

温度计误差有做校准处理吗   详情 回复 发表于 2022-6-16 22:31
点赞 关注(3)
 

回复
举报

1万

帖子

2853

TA的资源

管理员

沙发
 

温度计误差有做校准处理吗

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

这个只是做示例吧,没有量产的准备,所以没有考虑标定。  详情 回复 发表于 2022-6-17 07:10
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复

6960

帖子

11

TA的资源

版主

板凳
 
okhxyyo 发表于 2022-6-16 22:31 温度计误差有做校准处理吗

这个只是做示例吧,没有量产的准备,所以没有考虑标定。

此帖出自GD32 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表