ML51 MCU驱动NTC传感器通过ADC测量温度的示例

NTC传感器如下图所示,NTC的阻抗随温度升高而降低。

手册给出了从阻抗到温度的转换公式。

我们可以通过ML51微控制器提供的12位ADC读取串联电阻的分压,并根据参考电阻计算传感器的阻抗,然后使用手册中的温度计算公式来计算温度。

下图显示了手册中给出的几个常用计算常数B,可以根据测量范围合理选择这些常数以提高测量精度。

根据手册提供的公式实现温度转换:R = R0expB(1 / T-1 / T0);其中R是要测量的电阻,R0是在一定温度T0K时的已知电阻,B是温度传感器常数。

通过上述公式反算T = temp = 1 /((1 / T0)+(log(RT / R0)/ B));例如在数据测试中,当T0 = 25摄氏度,R0 = 10K欧姆时,将上述值代入实际计算中。

当使用绝对温度时,单位为开尔文。

通过测试上述公式,可以完成验证计算,即正确。

根据手册,此型号的B常数在25至50度之间为3380,在25至80之间为3428,在25至85之间为3434,在25至100摄氏度之间为3455。

为方便起见,本项目使用3455进行计算。

完成代码如下所示。

// **************************************************** ****************************************************** ********* //文件功能:ML51系列ADC软件触发onshotdemocode // **************************************** ****************************************************** ***************************#include“ ML51.h” #include“ math.h” #include“ NTC.h” / ***** ****************************************************** *********************** mainC函数。

程序执行从堆栈初始化后开始。

****************************************************** ***** / voidmain(){unsignedintADCRESULT; floatRval; floattemp; / *对于UART0P0.5TXD输出设置* includegipo.cinLibrary用于GPIO模式设置* includeuart.cinLibrarySetting for UART0 * / MFP_P31_UART0_TXD; /// UART0TXDuseP0.5P31_QUASI_MODE; / ); // OpenUART0usetimer1asbaudrategenerateandbaudrate = 115200ENABLE_UART0_PRINTF; / * ADCStotrigADCconvert * includeadc.cinLibrary for ADCinitialsetting * / ADC_Open(ADC_SINGLE,1); // EnableADC_CH4ADC_ConvertTime(3,7); // * find(set (ADCCON0 | CLR_BIT7)== CLR_BIT7); // waitADCF = 1; ADCRESULT =(ADCRHprintf =“ ADCresult =%d”,ADCRESULT); Timer0_Delay(24000000,100,5000); Rval = 1000 *((ADCRESULT * 6.2) )/(4095-ADCRESULT)); printf(“ Rval =%dOhm”,(unsignedint)Rval); temp = Res_to_Tem(Rval); printf(“ temp =%。

2f”,temp-K); printf( " ----------------");}}将阻抗转换为独立的头文件NTC.h#defineK273.15#defineT0(25.0 + K)#defineR010000.0# defineB3455.0 / *电阻值转换为温度adc_val:NTC的当前阻抗值,以欧姆为单位。

返回值:摄氏温度* / floatRes_to_Tem(floatadc_val){floattemp; temp = 1 /(((1 / T0)+(log(adc_val / R0)/ B))); returntemp-K;}这样就可以直接调用摄氏温度。

在此示例中,下图显示了通过串行端口打印的测量结果。

该手册还提供了表格查找方法,该方法提供了几个特殊点,如下图所示,绘制了如下图所示的曲线。

注释:NTC以低成本和快速响应来测量温度,仅需要一个ADC通道。

与数字温度计相比,它更容易驱动和使用,并且还可以单独实现校准功能。