【GD32F310G-START】NTC温度计
<p><a href="https://bbs.eeworld.com.cn/thread-1202376-1-1.html">【GD32F310G-START】电压表 - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)</a></p><p>在获取电压后,得到它的电压十分的准确,接上NTC后,立马变成温度计了:</p>
<p>原理图:</p>
<p></p>
<p>1、程序,在ADC获到电压的基础之上增加电阻获取与温度转换:</p>
<p> </p>
<pre>
<code>/*10K NTC 温度与阻值对应表 X轴代表温度Y轴代表阻值*/
int X_Temp = {-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 = {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)
{
StartPoint = Loop;
break;
}
}
RealTemp = (float)OneDimensionalEquation(X_Temp,Y_Res,X_Temp,Y_Res,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);
}</code></pre>
<p>主程序:</p>
<pre>
<code>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);
</code></pre>
<p><iframe allowfullscreen="true" frameborder="0" height="510" src="https://training.eeworld.com.cn/shareOpenCourseAPI?isauto=true&lessonid=33372" style="background:#eee;margin-bottom:10px;" width="700"></iframe><br />
这样一个温度计可以了,一下步用无线串口发送给RVB2601,完成温度采样。</p>
<p>温度计误差有做校准处理吗</p>
okhxyyo 发表于 2022-6-16 22:31
温度计误差有做校准处理吗
<p>这个只是做示例吧,没有量产的准备,所以没有考虑标定。</p>
页:
[1]