单片机 热敏电阻怎么检测他的温度的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机 热敏电阻怎么检测他的温度的相关的知识,希望对你有一定的参考价值。
用热敏电阻测温,一般是要加一个固定电阻做分压,然后用ADC来做的。用热敏电阻一般不精准。一般是用ADC得到AD值后再查表得到温度的。要温度分辨率高,查表数组就得很大。 参考技术A 电阻值转换成电压值,ad转换后给单片机,单片机算出电阻阻值,再进行查表,得出对就温度。热敏电阻每个温度下的电阻值是可以在器件资料中查阅的,实在没有就实际测量下。基于单片机PID算法的温度控制调节器控制设计
设计思路:
改进PID算法的温度调节器设计,采用单片机为控制器,研究热电阻测温电路,控制量输出电路和温度控制PID算法。
功能实现:
1.采用市电供电。
2.采用单片机。
3.LED数码管显示。
4.4*4键盘输入。
5.热电阻测温0-150℃。
6. 工艺参数断电可保持,AT24C02存储。
7. 电流输出4-20mA,电压输出0-5V。
8.有超偏差报警功能。
9.增量式PID算法。
#include "Interrupt.h" //中断头文件 #include "24C02.h" //存储器 #include "delay.h" //延时函数 #include "PID.h" //改进PID算法 #include "DISPLAY.h" //数码管显示 sbit Change=P3^6; //切换显示按键 sbit Warning=P3^3; unsigned char key=16,ShowPage=0; int PID_Data; //PID算法输出的计算值 unsigned int LTC1655_WritData=0; //给DA的值 extern PID sPID; unsigned int LT1860_ReadData=0; float LTC1860_Voltage=0; float RealTemp=0; float LTC1655_Voltage; //DA输出电压 void ParaInit(void); //从存储器中读取参数值 void main(void) IIC_Init(); //IIC初始化 24C02初始化 Timer_Init(); //定时器1初始化 Timer_EN(); //打开定时器1中断 Glob_Interrupt_EN(); //打开全局中断允许 IncPIDInit(); //改进PID初始化 ParaInit(); //开机读取上次设定的PID的参数和设定的温度 Warning=0; while(1) LT1860_ReadData=LTV1860_GetData(); //读取AD的值 LTC1860_Voltage=5.0*LT1860_ReadData/4096; //读到的值转换成电压 RealTemp=(LTC1860_Voltage+10)/(40-LTC1860_Voltage)*1039-272.72+0.5; //电压转换成温度 if(RealTemp<109) //软件补偿 消除误差 RealTemp-=3; else if(RealTemp<149) RealTemp-=2; else RealTemp-=1; if((int)RealTemp>150||(int)RealTemp<0) //报警 Warning=1; else Warning=0; PID_Data=IncPIDCalc(RealTemp); //PID算法 LTC1655_WritData=PID_Data+32767; LTC1655_WritWord(LTC1655_WritData); //读到的值送到DA LTC1655_Voltage=5.0*LTC1655_WritData/65535;
【资源下载】下载地址:点击下载(5)
以上是关于单片机 热敏电阻怎么检测他的温度的的主要内容,如果未能解决你的问题,请参考以下文章
怎样写用热敏电阻测温度的程序?我用单片机AD测的热敏电阻的AD值,怎样把数字量转换成温度?急求。