N76E003之ADC采集NTC温度

RG选用10k 1%精度NTC热敏电阻,R1使用10k 1%精度贴片电阻,电路如下图1所示,使用N76E003单片机AIN4通道进行采样,使用带隙电压进行修正。

分压计算公式:Urg=[RG/(RG+R1)]*Vdd *Coe
其中Coe是通过带隙电压得到的修正系数,为了获得正确的Vdd电压
N76E003之ADC采集NTC温度_第1张图片
(图1)

下图2为NTC热敏电阻数据手册中给出的电阻值对应温度表
在这里插入图片描述N76E003之ADC采集NTC温度_第2张图片
(图2)

在程序中建立一温度/电阻对应数组(其中温度为数组的对应位)

//正温度数组	
float TemperList1[55]={32.1,30.6,29.1,27.7,26.4,25.2,23.9,22.8,21.7,20.7,19.7,18.8,18,
17.1,16.4,15.6,14.9,14.2,13.6,13,12.4,11.9,11.4,10.9,10.4,10,9.5,9.1,8.7,8.4,8,7.7,
7.4,7.1,6.8,6.5,6.2,6,5.7,5.5,5.3,5.1,4.9,4.7,4.5,4.3,4.1,4,3.8,3.7,3.5,3.4,3.3,3.2,3};

带隙电压获取与修正在此不表,如有需要请看这篇博客

ADC_VC为单片机AIN4采集到的电压值
NTCr为计算得到的电阻值
TemperList1为正温度对照表
TemperAddr初值为-1,为温度值

/*热敏电阻测温度*/
/*
1、逆推NTC阻值——NTCr=(-10000*ADC_VC)/(ADC_VC-3300)
2、使用查表法(温度作为地址)

*/
void ADC_NTC()
{
	uint i=0;
	temp=ADC_VC/1000.00;	//将采集到的电压转换为浮点型
	NTCr=(10*temp)/(3.2-temp);//计算当前电阻值
	if(NTCr<=32.1&&NTCr>=3)//此时为正温度,使用TemperList1
	{
		for(i=0;i<55;i++)
		{
			if(NTCr>TemperList1[i])
			{
				TemperAddr=i-1;//数据迁移一位
				break;//跳出循环
			}
		}
	}
	if(TemperAddr!=-1)//为真,则表示已经读出数据
}

你可能感兴趣的:(N76E003,N76E003,单片机,学习)