资源描述:
《温度的测量与控制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、温度的测量与控制一、课题任务与要求1、课题任务设计并制作一套能在3(rc到8o°c范围内实现温度测量与控制的电路系统。系统中采用20Q/30W的空心瓷管电阻或水泥电阻做为电热元件,用直流稳压电源(30V/2A)做为供电电源,用PT100做为温度传感器。2、基本要求1)设计一个温度测量电路,其输出电压能随电热元件温度的变化而变化;记录在30°C〜80°C范围内每变化5°C对应的模拟电压值;2)以数字方式显示温度值3)先将电热元件温度稳定地控制在40°C(至少保持一分钟);然后快速升温到60°C,并将温度稳定地控制在60°C(至少保持两分钟);并分别让LED指示升
2、温中、温度达到40°C和温度达到60°Co二、应用前景和背景知识温度的测量与控制在工业生产的各个过程中都有广泛应用,例如在材料的加工中就需要温度的测量与控制。这个课题所涉及的背景知识主要有lpcl700,AltiumDesignerSummer09以及C语言。三、结构框图1、总体方案设置)温度传感器<>电阻12、硬件方案电源串口设置显不CPU►功率放大一►电阻放大温度传感器四、器件选择1、LPC1700LPC1700系列Cortex-M3微控制器用于处理要求高度集成和低功耗的嵌入式应用。ARMCortex-M3是下一代新生内核,它可提供系统增强型特性,例如现代
3、化调试特性和支持更高级别的块集成。LPC1700系列Cortex-M3微控制器的操作频率可达lOOMHzoARMCortex-M3CPU具有3级流水线和哈佛结构,带独立的本地指令和数据总线以及用于外设的稍微低性能的第三条总线。ARMCortex-M3CPU还包含一个支持随机跳转的内部预収指单元。LPC17OO系列Cortex-M3微控制器的外设组件包含高达512KB的Flash存储器、64KB的数据存储器、以太网MAC、USB主机/从机/OTG接口、8通道的通用DMA控制器、4个UART、2条CAN通道、2个SSP控制器、SPI接口、3个I2C接口、2■输入和
4、2■输出的I2S接口、8通道的12位ADC、10位DAC、电机控制PWM、正交编码器接口、4个通用定时器、6-输出的通用PWM、带独立电池供电的超低功耗RTC和多达70个的通用I/O管脚。2、温度传感器PT100温度感测器是一种以白金(Pt)作成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系式如下:R=Ro(l+aT)其屮a=0.00385,Ro为100Q(在0°C的电阻值),T为摄氏温度,PT后的100即表示它在0°C时阻值为100欧姆。五、程序流程图1、系统流程图MAINCPU:Fclk,Pclk(按键、LED、数码管、AD、加热输出)、定时、
5、屮断初始化YASet+1Set-1启动定时器T2,输出PWM脉冲,开始加热启动定时器T3,进行PTD运算,等到脉冲宽度关闭定时器T2,T3,加热输出清0“停止”?从SetT和CuT更新显示缓冲区DPBuff口2、中断程序流程图开始DPBuff[i]译码成段码后,送段码对应的10口笫i位对应的10口送出1,其余送出0i>7?Y
6、N*i=0返冋3、PID流程图根据设置数据计算a0?al,a2读取或计算设置温度转移变量(e0・〉el,el・>e2)读取为前温度,计算eO△U(n)=aoe(n)+aie(n-1)+a2e(n-2)修改输岀OSTimeDly(25*10
7、)六、程序1、ADC功能程序include“LPC17xx.H”include“ADC.h”externuint32_tCuT;#ifndefFPCLK#defineFPCLK250000#endifuint32_tadr;uint8_tADC_Num;voidADC」NIT(void){adr=0;ADC_Num=0;LPC_PINCON・〉PINSEL3&二〜(3UL«28);LPCPINCON->PINSEL3
8、=(3UL«28);LPC_SC->PCONP1=d«I2);LPC_ADC->ADCR=d«4)
9、(4«8)
10、(1«21);NVIC_Enab
11、leIRQ(ADC」RQn);NVIC_SetPriority(ADC_IRQn,4);}voidADC_StopCnv(void){LPC_ADC->ADCR&二〜(7vv24);voidADC」RQHandler(void){ADC_StopCnv();if(ADC_Num<=7){adr+二((LPC_ADC->ADGDR>>4)&OxOOOOOFFF);ADC_Num++;}else{CuT=1*adr/&ADC_Num=O;voidADC_StartCnv(void){LPC_ADC->ADCR&二~(7«24);LPC_ADC->ADCR
12、=(1«
13、24);voidINIT_TIMERl