STC12C5A60S2实现PT100传感器分段高精度测温

一、绪论


最近研究怎么实现一个高度稳定的热源,家里没有PT1000,也没有高精度的AD,只有PT100和陈年的几个单片机,怎么办?方法总比困难多,经过搜罗,终于找到AD神器一片,STC12C5A60S2,可以同时实现8路10位AD,这么好的资源怎能放弃?好,开工。

二、电路设计

工欲善其事,必先利其器。先找原理图吧,经过搜罗和评估,认为这张图可信度高一些,看了下,两级运放放大,刨去固有的电压降低0.7+0.7=1.4,用5V的电源,至少可以将模拟电压信号固定在0.5~3.5伏,如果把惠斯通电桥调零到20-50度,1024的分辨率,精度理论可以在0.03,算了吧,能到0.1稳定下来就不错了。。。TL431产生稳定的电桥电源2.5v。
在这里插入图片描述

三、KEIL5 使用C51开发

打开KEIL5,才发现KEIL5默认没有KEIL C51支持,懒得下载和安装KEIL4,就下载了个c51v959.exe,安装完了,在使用STC-ISP安装STC单片机的支持就可以了。如图。
在这里插入图片描述
完了后记得破解才能用。

四、ADC采集与显示

#define ADC_POWER   0x80
#define ADC_FLAG    0x10 
#define ADC_START   0x08 
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL  0x20 
#define ADC_SPEEDH  0x40
#define ADC_SPEEDHH 0x60 

BYTE  ch = 0;
BYTE  result =0;
WORD  wresult =0;
BYTE num[]={'0','1','2','3','4','5','6','7','8','9'};

void Delay(WORD n)
{
    WORD x;

    while (n--)
    {
        x = 5000;
        while (x--);
    }
}

void InitADC()
{
    P1ASF = 0xff;
    ADC_RES = 0; 
		ADC_RESL = 0;
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    Delay(2);
}

WORD GetADCResult(BYTE ch)
{
		WORD result = 0;
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_(); 
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));
    ADC_CONTR &= ~ADC_FLAG; 
	
		ADC_RESL &=0x03;
		result=ADC_RES*4+ADC_RESL;
    return result;
}

void main(void)
{ 
	  P1M0 = 0x00;
    P1M1 = 0x00;

		Uart_Init();
		InitADC();
	
		Y_LAMP=1;
		G_LAMP=1;
		R_LAMP=1;
		SendString("start service...\r\n");
		while (1)	 
		{
			wresult = GetADCResult(0);
			SendString("value=");
			SendData(num[wresult/1000]);
			SendData(num[wresult%1000/100]);
			SendData(num[wresult%100/10]);
			SendData(num[wresult%10]);
			SendString("\r\n");
			delaytime(20000);
		}
}

五、效果展示

在这里插入图片描述
在这里插入图片描述
上面的数据没有处理,大家可以看到,从常温368-484是我用手攥了下PT100产生的。其实利用这种滑窗调节法,可以大大提高指定温度范围的精度。
更新:如果想做精度较高的低温窄带标准温度源的话,可以参考一下车载小型冰箱,拆开看看就可以了,呵呵,昨天偶把李宁送的车载冰箱拆开看了看,TEC模块,还有驱动,都有的,再加上一层保温,就可以解决了,这种半导体温度源,就是稳定下来稍微慢了点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值