嵌入式系统课程论文基于ARM的温度测控系统设计23778.docx
- 文档编号:4394287
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:24
- 大小:146.26KB
嵌入式系统课程论文基于ARM的温度测控系统设计23778.docx
《嵌入式系统课程论文基于ARM的温度测控系统设计23778.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课程论文基于ARM的温度测控系统设计23778.docx(24页珍藏版)》请在冰豆网上搜索。
嵌入式系统课程论文基于ARM的温度测控系统设计23778
嵌入式系统课程论文:
基于ARM的温度测控系统设计23778
嵌入式系统课程论文
基于ARM的温度测控系统的设计
专业:
电气工程及其自动化
姓名:
左立刚
031040522学号:
指导老师:
刘三军
日期:
2013年11月3日
第一节引言………………………………………………………3
1.1温度控制系统概述……………………………………3
1.2本设计的主要任务和目标………………………………4第二节系统设计原理及方案选择………………………………4
2.1系统框图…………………………………………………4
2.2方案论证…………………………………………………4
2.3各部分电路方案…………………………………………5第三节硬件电路设计与计算……………………………………7
3.1温度采样和转换电路……………………………………7
3.2温度控制电路……………………………………………8
3.3ARM控制部分……………………………………………9
3.4键盘显示设定部分………………………………………10第四节实验测试…………………………………………………11
4.1整个系统的软件流程图………………………………11
4.2温度设定…………………………………………………13
4.3PWM输出…………………………………………………13第五节课程设计总结…………………………………………13
5.1设计中遇到的问题及解决……………………………13
5.2设计还存在的问题……………………………………14第六节附录………………………………………………………14
2
第一节引言
温度测量与控制在现代化工业企业及日常生活中应用广泛,分类较多,不同场合不同环境的温度控制系统也不尽相同,因而要根据不同的控制目标与要求设计出较好的温度测控系统,其中比较简单应用也十分广泛的就是采用PID调节控制,从而达到较理想的控制指标。
本课题的控制内核采用PHILIPS的ARM2131控制整个系统。
采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热时间来实现温度控制。
然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变PID调节参数值以取得佳性能。
本文首先用PID算法来控制PWM波的产生,进而控制电炉的加热时间来实现温度控制。
当实际温度偏离控制温度系统会通过软件自动修改重新稳定在控制目标附近,从而不至于使控制要求产生不理想的偏差。
当系统环境变化时可以通过软件修改参数达到较好的控制要求。
1.1温度控制系统概述
温度控制是无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,现代冶金、石油、化工及电力生产过程中,温度是极为重要而又普遍的热工参数之一。
在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉炉温进行测、显示、控制,使之达到工艺标准。
经过近年来的发展,ARM控制技术的发展越来越进步,ARM技术的应用也已经日趋成熟。
可以预见在不远的将来以ARM控制为核心嵌入式的发展会越来越广泛。
以ARM为核心设计的温度控制系统,可以同时采集多个数据,并将数据通过通讯口送至数码管进行显示和控制。
那么无论是哪种控制,我们都希望温度控制系统能够有很高的精确度(起码是在满足我们要求的范围内),帮助我们实现我们想要的控制,解决身边的问题。
在计算机没有发明之前,这些控制都是我们难以想象的。
而当今,随着电
子行业的迅猛发展,计算机技术和传感器技术的不断改进,而且计算机和传感器的价格也日益降低,可靠性逐步提高,用信息技术来实现温度控制并提高控制的精确度不仅是可以达到的而且是容易实现的。
用高新技术来解决工业生产问题,
排除生活中对温度的控制问题已成为我们电子行业的任务,以此来加强工业化建设,提高人民的生活水平。
1.2本系统的主要任务和目标
3
1、基本要求
整个系统可以自由修改要达到的控制温度,即修改给定量,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。
2、性能指标
@控制精度温度控制误差<=1摄氏度度
@用数码管显示设定温度后转化城的控制电压、实际电压、设定温度。
第二节系统设计原理及方案选择
2.1系统框图
信号处理A/DARM2131传感器键盘电路显示
最加热小电阻控制反馈电源系模块调节统
2.2方案论证
本课题并没有要求我们做出的具体控制系统的应用工作环境,因而我们选择的余地比较宽裕,对具体的性能指标也可不必做太过严格的要求。
根据我们手中现有的资源,有下面两种方案可供选择:
方案一:
选择的温度传感器为外形比较短小的热敏电阻(图1),它的特点是常温下电阻值特别大,而且为负温度系数电阻,即随着温度的升高,其电阻值在不断地减小。
而比较麻烦的它是一个随温度非线性变化的电阻,这就增加了整个系统的控制难度,它实际上要求我们在这个温度传感器上要做大量的工作,比如我们要把它随温度变化的曲线一点点的测试出来,然后还要还要根据测试出来的曲线图进行分段线性化,这样才有利于在控制程序中进行软件编程。
而我们根据手头的器材,只能简单的测试几个点的温度以及与其相对应电阻值,这样经过简单的计算就能得出该温度传感器的简单的温度变化曲线图,这样就可以通过具体电路把电阻值的变化转化为电压的变化,最后在通过周立功单片机公司生产的LPC2131开发板自带的A/D转换模块采样得到具体变化的电信号值。
有了这个电信号值就可以控制加热来实现温度的控制。
方案二:
选择温度和电阻值变化为线性变化的Pt-1000温度传感器(图2),
4
这个温度传感器能为我们节省大量的前期工作,而且控制方便容易实现。
根据IEEE规定该型号的铂电阻传感器温度变化系数为0.00374欧/摄氏度,需要注意的是该数值为百分数。
它在0摄氏度时电阻值为1000欧,温度每升高1摄氏度,电阻值增加3.74欧。
再通过差分电路信号放大电路将信号进行较好的处理后,在采用和方案一同样的A/D转换即可实现温度控制。
图1非线性图2线性
在本课题中我们选择了方案一,其缺点是明显的,那就是测试和控制的温度数值不准确,但作为一次控制过程,最终的控制结果还是可以接受的。
2.3各部分电路方案论证
1)采样部分
方案:
采用热敏电阻,可满足35?
--95?
的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1?
的温度信号是非常不利的。
但简单易行。
再利用LPC2131开发板自带的A/D转换电路即可准确测试。
2)键盘显示部分
控制与显示电路是反映电路性能、外观的最直观部分,所以此部分电路设计的好坏直接影响到电路的好坏。
方案一:
采用8个数码管、8个按键和两个74HC164组成键盘显示电路部分,只需利用一个LPC2131上的I/O管脚作为实现对按键的扫描、消除抖动,这再加上SPI
5
模块几个引脚就可以轻而易举的解决键盘显示部分电路。
方案二:
采用LCD显示。
这要增加不少外部电路,不仅增加了电路复杂度,而且加大了对课题的设计难度,操作也不方便。
方案三:
采用UART0串口通信的方式,送到上位机显示,这可能在程序设计上并没有增加复杂度,然而却要占用一个串口通信接口,在简单易于移动也是十分不利的。
由以上几种方案的比较,方案一的可行性以及便利处也是显而易见的,因此,我们毫不犹豫的选择了方案一。
2)控制电路部分
方案一:
采用增强型8051单片机进行控制,操作简便,价格便宜,而且能够较好的满足我们的控制要求。
方案二:
采用LPC2131进行控制,其强大的功能要满足这个控制要求简直是大材小用,价格也不便宜,但它明显的优势还是吸引了设计者。
更重要的是为以后的功能扩展奠定了坚实的基础。
鉴于我们身边的资源获取的难易程度,我们选择了方案二,其次,强大的功能也是我们做出选择的重要原因。
6
第三节硬件电路设计与计算
3.1温度采样与转换电路
图3LPC2131内核管脚图
图4数字电部分
图5直流电源部分
7
图6温度信号差分放大电路
如上面图4、图5、图6即为采样电路的外围电路,连接时VCC为图4最后的输出电压,图6的R4应为滑动变阻器,范围为0~100K选择使其接近30K,这样为采样之前的R3与R4将VCC基本平分,即各自为3.0V,然而在实际电路中实际值为2.89V左右。
这就刚好可以满足LPC2131对最大A/D转换至3.3V的限制。
R4与R3之间的引脚8要接在图3和图5的P0.30_AD0.3引脚。
3.2温度控制电路
图7继电器控制加热原理图
8
如上图为通过LPC2131的PWM2输出即P0.7口输出一定脉冲宽度的波形,这样就能够控制图7中三极管的导通时间来实现对图7中加热电阻(即HOT)加热时间的控制,从控制到了温度,也就改变了和(HOT)固定在一起的温度传感器的阻值,这样就能够进行采样A/D转换。
工作过程如下:
PWM高电平触发三极管的导通,这样继电器Relay-SPST的直流侧就导通了,紧接着继电器的交流侧AC8V导通,就开始了对加热电阻的加热,交流侧导通的同时两个反并联的发光二极管就会导通,起到指示电路开始工作的作用。
图7其中的1K与2K是限流电阻。
8V/2K=4mA。
3.3ARM控制部分
本课题采用的是控制芯片相当豪华的LPC2131。
它具有以下几个特点:
1)采用JTAG仿真技术,支持ADS1.2集成开发环境及PHILIPS公司所有型
号的ARM微控制器的仿真和开发。
2)板上的功能部件与CPU之间可使用跳线选择连接。
。
3)全面支持9种型号的64PIN小引脚ARM7微控制器。
4)多种免费商业化软件包及其详细的开发文档,如SPI、I2C总线软件包。
5)所有的I/O口全部引出,方便用户连接外部电路的开发和应用。
6)可进行GPIO的控制实验,如键盘输入、模拟SPI等。
)具有RS232转换电路,可与上位机进行通信等功能。
7
8)具有I2C接口和SPI、SSP接口输出
9)实时时钟控制实验。
10)A/D和D/A转换实验。
………………
图8EasyARM2131开发板功能框图
上图8为本课程设计用到的开发板的基本功能框图,在这里用到的有定时器
9
0,a/d转换,PWM输出,通用I/O口和SPI串口总线以及向量中断控制器VIC
等。
3.4键盘显示设定部分
在这里显示和修改部分采用的是我们常用的键盘显示板,由于经常使用,
操作起来十分方便,同时也非常清楚明了的完全能偶满足本设计的要求,从硬件上说减小了设计难度,从软件上也特别快捷。
直接利用LPC2131的SPI串行总线先发送要显示数据的段码在发送显示数据的位码,这样就能够把要显示的数据显示出来,再利用TIMER0的中断功能不断对数据进行快速刷新,从达到了董涛现实的目的。
另外通过显示板上的键盘修改要设定的温度值,这样所有的功能都能得到实现。
其中键盘显示的硬件电路图如下所示:
图9键盘显示原理图
第四节实验测试部分
4.1整个系统的软件流程图
由于整个系统软件比较复杂,为了便于编写、调试、修改和增删,系统程序的编制适合采用模块化的程序结构,故要求整个控制系统软件由许多独立的小模块组成,它们之间通过软件接口连接,遵循模块内的数据关系紧凑,模块间的数据关系松散的原则,将各功能模块组织成模块化的软件结构。
10
开始
置连续采样个数
系统的软件主要有主程序模块、数据采集
启动A/D模块、数据处理模块、控制算法模块等组成。
主模块的功能是为其余几个模块构建整体框
等待转换结束架及初始化等,数据采集模块是将A/D转换的
数字采集并存贮导存储器中,数据处理模块是N
将采集到的数据惊醒处理,最主要的是进行数连续采样个数到否字滤波、控制算法模块完成控制系统的PID运
算并输出空置量。
数字滤波
返回图
11图10A/D转换程序流程图
开始
系统初始化
设定温度值
数据采集转化
温度显示
4.2温度设定
由于采用的传感器并没有数据手册,只知道是一个非线性变化的热敏点电阻,这样我们只有见到的做了一个推测:
认为它的温度电阻值变化曲线是一个开PID运算
11
控制输出
满足设定,
口向下的抛物线在的图像在第一象限的部分,这样将设定的温度带入就会有一个电阻值与其对应,再根据串联电路将现在的电信号采样出来和设定值比较,结合控制算法进行控制。
i_R_value=(uint32)(1+952*tem-1.06*tem*tem)(式1)
ui_Ad_Cnl=(30200*2960)/(30200+i_R_value)(式2)
上面式1是温度与电阻值对应关系,式2是串联转化出来的设定电信号的值。
4.3PWM输出
通过软件设定PWMMR0的时间作为周期,利用算法在程序中修改
PWMMR2的值来改变输出脉冲的宽度,进行加热时间的调节。
第五节课程设计总结
5.1设计中遇到的问题及解决
在设计我们碰到了不少的问题,首先是整个电路的布局问题,如何才能合理布局不仅关系到整个系统的观赏性,更关系到系统是否能够稳定正常的工作,因而我们把整个电路除了LPC2131和键盘板外的所有元器件都焊接在了一个板子上,这样不仅看起来舒服美观,也为后面的调试打下了基础,调试起来不会因为电路的杂乱无章而焦头烂额,而键盘显示完全能够固定在整个电路板上,紧接着是电路的设计问题,在老师的关怀帮助下我们也很快得到了解决;采样信号的变化幅度趋向如何才能和温度的变化一致呢,这也是一个问题。
经过一番思索之后,我们决定将要采样的信号和一个滑动变阻器串连在一起,采样值从一端接地的滑动变阻器取出这样就可以了。
这是因为热敏电阻式一个负温度系数的电阻,温度升高传感器的阻值减小在其上的电信号反而减小,当从与其串联的滑动变阻器上取出电信号是则与之相反,亦即温度升高采样信号也随之升高。
在PID算法中最为困难的是Kp、Ki、Kd三个参数的设定,虽然我们按照虾米哪的规律设定调试参数还是用了几天的时间,可以说这件事太考验我们了,它的调试规律如下:
P参数设置
如不能肯定比例调节系数P应为多少,请把P参数先设置大些(如30%),以避免开机出现超调和振荡,运行后视响应情况再逐步调小,以加强比例作用的效果,提高系统响应的快速性,以既能快速响应,又不出现超调或振荡为最佳。
I参数设置
12
如不能肯定积分时间参数I应为多少,请先把I参数设置大些(如1800秒),(I>3600时,积分作用去除)系统投运后先把P参数调好,尔后再把I参数逐步往小调,观察系统响应,以系统能快速消除静差进入稳态,而不出现超调振荡为最佳。
D参数设置
如不能肯定微分时间参数D应为多少,请先把D参数设置为O,即去除微分作用,系统投运后先调好P参数和I参数,P、I确定后,再逐步增加D参数,加微分作用,以改善系统响应的快速性,以系统不出现振荡为最佳,(多数系统可不加微分作用)。
5.2设计还存在的问题
1)采样经过数字滤波之后采样值还是不够准确。
2)温度的变化电阻值具体变化的真实值还是不清楚。
3)经过PID算法之后的控制精度有待于进一步提高,波动范围还是有一点
大。
4)信号的处理还存在不科学的地方。
5)要提高控制精度还是要做好信号处理,最好做一个传感器线性变化的系
统出来做一下比较。
第六节附录
附录一:
参考书籍、网站
《深入浅出ARM7——LPC213X/214X》(上册)
XX网站、XX文库
附录二:
元件清单:
LPC2131开发板一块
键盘显示板、电路板一块
三极管9013、滑动变阻器各一枚
继电器、加热陶瓷、温度传感器各一个
三枚发光二极管
电阻、电容、导线若干
附录三:
程序如下
#include"config.h"
#defineKEY1<<5
uint8digitable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint8selectable[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uint8DATA0[8];
13
uint8Disp=0;
uint16ADC_Data[8]={0};//AD转换结果寄存器uint16ADC_Result;
uint16pwm_value=5;
uint8TEM=30;
uint8DATA0[8];
uint8T0Flag=0;
uint8SF=0,M=0,R=0,W=0,TK=0x09,PAGE=0;
uint32ui_Ad_Cnl=0;
fp32ui_Kp=1.2;
fp32ui_Kd=0.01;
fp32i_Ki=0.56;
int8i_pid_result;
/*========================delay==========================*/
voiddelay(void)
{
uint16i,j;
for(i=100;i>0;i--)
for(j=5000;j>0;j--);
}
/*========================timer0youguan=====================*/
voidTimer0_Init(void)
{
T0TC=0;//定时器设置为0
T0PR=0;//时钟不分频
T0MCR=0x03;//复位T0TC,并产生中断标志
T0MR0=Fpclk/1000;
//T0TCR=0x01;//1毫秒定时}
void__irqTimer0Int(void)
{
T0Flag=1;
Disp++;//T0中断标志置位
T0IR=0x01;//清除中断标志
VICVectAddr=0;//向量中断处理结束}
voidIRQ_Init(void)
{
VICIntSelect=0x00;//设置所有的通道为IRQ中断
VICVectCntl0=0x20|4;//Timer0分配到IRQslot1
14
VICVectAddr0=(uint32)Timer0Int;//设置Timer0向量地址
VICIntEnable=(1<<4);//使能Timer0和Timer1中断}
/*========================conbit==========================*/
voidCONVBIT0(uint16num,uint8hor){
DATA0[hor+3]=num/1000;
DATA0[hor+2]=num%1000/100;
DATA0[hor+1]=num%100/10;
DATA0[hor+0]=num%10/1;
}
/*========================spi==========================*/
voidMSPI_Init(void)
{
SPI_SPCCR=0x10;//设置SPI时钟分频
SPI_SPCR=(0<<3)|//在SCK第一个时钟沿采样
(1<<4)|//CPOL=1,SCK为低有效
(1<<5)|//MSTR=1,SPI处于主模式
(0<<6)|//SPI数据传输MSB(位7)在先
(0<<7);//SPIE=0,SPI中断被禁止}
uint8MSPI_SendData(uint8data){
SPI_SPDR=data;
while(0==(SPI_SPSR&0x80));//等待数据发送完毕
return(SPI_SPDR);
}
/*========================ADCaiyang==========================*/
voidADC_Init(void)
{
uint32ADclk=(Fpclk/1000000-1),h=0;
AD0CR=(1<<3)|//SEL=8,选择通道3
(ADclk<<8)|//CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0<<16)|//BURST=0,软件控制转换操作
(0<<17)|//CLKS=0,使用11clock转换
(1<<21)|//PDN=1,正常工作模式
(0<<22)|//TEST1:
0=00,正常工作模式
(1<<24)|//START=1,直接启动ADC转换
(0<<27);
delay();
h=AD0DR;
}
uint16ADC(void)
15
{
uint32ADC_R;
uint16ADC_R1;
AD0CR|=1<<24;//进行第一次转换
while((AD0DR&0x80000000)==0);//等待转换结束
AD0CR|=1<<24;//再次启动转换
while((AD0DR&0x80000000)==0);//等待转换结束
ADC_R=AD0DR;//读取ADC结果
ADC_R1=(ADC_R>>6)&0x3FF;
ADC_R1=ADC_R1*2480/1024;
return(ADC_R1);
}
/*========================PINinit==========================*/
voidpininit()
{
PINSEL1=(PINSEL1&(~(0x03<<28)))|(0x01<<28);//P0.30选择AD0.3通道
PINSEL0=(PINSEL0&(~(0xFF<<8)))|(0x55<<8);//选择SPI功能}
/*========================Pwminit==========================*/
voidPWMinit()
{
PINSEL0=(PINSEL0&(~(0x03<<14)))|(0x02<<14);
PWMPR=0;
PWMTC=0;
PWMMR0=Fpc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 课程 论文 基于 ARM 温度 测控 设计 23778