




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录第1节 引 言 3 1.1 水温控制系统概述 31.2 设计目的 31.3 设计任务与要求 31.4 系统组成 31.5 整体设计思路 4第2节 系统硬件设计 42.1 方案设计 42.2 元器件选择 5 2.3 单元电路设计 6 2.3.1 温度采集电路 6 2.3.2 温度控制电路 8 2.3.3 LCD液晶显示模块 92.4 主机控制部分 92.5 微机控制及图形显示部分 9第3节 系统软件设计 103.1 系统软件分析 10 3.1.1 系统设计原理 10 3.1.2 软件系统流程图 103.2 软件模块设计 11第4节 运行描述 20第5节 系统调试 20第6节 课程设计总结 20参考文献 211 引 言1.1方案选择1.2 水温控制系统概述本文介绍的是一个以EL-DSP-EXPII型教学实验系统为控制核心的水温控制系统,此系统通过人机交互设定控制温度,采用增量型PID算法,通过脉宽调制控制电炉加热,最终实现水温的恒定。该系统具有温度超调量小、调节时间短、静态误差小、测量精确、恒定温度与设定温度偏差小等优点,且控制方便、显示直观、性能稳定、可靠性高。1.3 设计任务与要求 系统的基本任务与要求: (1)系统的基本要求: 一定量水由电炉加热,要求水温可以在一定范围内由人工预先设定,并能在环境 温度降低至低于设定值时自动实现调整,以保持设定的温度基本不变。 (2)主要性能指标: a.温度设定范围:温度设定为080,误差小于1; b.控制水容器中电加热器件,使水温在5分钟内从室温升到45,并在随后的5分钟内将水温稳定在45,误差在2内。 c.用十进制数码显示实际水温;1.4 系统组成 本系统是一个典型的检测、控制型应用系统,它要求系统完成从水温检测、信号处理、输入、运算到输出控制电炉加热功率以实现水温控制的全过程。因此,以DSP为核心组成一个专用计算机应用系统,以满足检测、控制应用类型的功能要求。另外,DSP的使用为实现水温的智能化控制以及提供完善的人机界面及多机通讯接口提供了可能,而这些功能在常规数字逻辑电路中往往是难以实现或无法实现的。根据设计任务的基本要求,本系统应具有以下基本功能:(1)可以进行温度设定,并自动调节水温至给定的温度值。(2)可以调整PID控制参数,满足不同控制对象与控制品质要求。(3)可以实时显示给定温度与水温实测值。1.5 整体设计思路首先设计由AD590和ADC0804组成的温度采集电路,利用热敏电阻输出电压值与温度间的函数关系,检测温度的变化;然后将采集到的温度送入TMS320C5402中的A/D转换模块,将电压转换为数字信号;最后通过编写LCD显示函数来控制相应的温度及文字的变化。系统的整体框图如图1.5.1所示:数据采集键盘输入LCD显示控制电路待测水槽传感器 C5402 图1.5.1 系统整体框图2 系统硬件设计 2. 1 方案设计最小系统设计:TMS320C5402芯片包含33个电源引脚,时钟模块,分别有电源复位,复位引脚/RS,软件复位,非法地址,看门狗定时器溢出,欠电压复位这6种信号使DSP控制器复位。在设计中采用了由PCRESET引脚PCRESET电源复位的方式。为了可靠复位,高电平的有效时间至少保持6个时钟周期。DSP最小系统指的是由C5402芯片组成的电源模块,复位电路和晶振电路组成的无外围设备的系统。最小系统如图2.1.1:图2.1.12. 2 元器件选择 (1)AD590芯片(图2.2.1)图2.2.1(2)ADC0804芯片(图2.2.2) 图2.2.22. 3 单元电路设计 2.3.1 温度采集电路系统的温度采集电路主要由温度传感器(AD590)、基准电压(7812)及A/D转换电路(ADC0804)三部分组成。电路图如图2.3.1所示图2.3.1 温度采集电路原理图(1) AD590性能描述 测量范围在-50-+150,满刻度范围误差为0.3,当电源电压在510V之间,稳定度为1时,误差只有0.01 。AD590为电流型传感器温度每变化1其电流变化1uA,在0和80时输出电流分别为273.2uA和353.2uA。(2) ADC0804性能描述 ADC0804为8bit的一路A/D转换器,其输入电压范围在05v,转换速度小于100us,转换精度0.39。满足系统的要求。(3)电路原理及参数计算 温度采集电路的基本原理是采用电流型温度传感器AD590将温度的变化量转换成电流量,再将电流量转换成电压量通过A/D转换器ADC0804将其转换成数值量交由DSP芯片处理。如图2.3.2所示 A图2.3.2Uc图中三端稳压7812作为基准电压Ub,由运放虚短虚断可知运放的反向输入端Ui的电压为零伏。当输出电压为零伏时(即Uo=0v) 列出A点的结点方程如下:. (1) 由于系统控制的水温范围为0-80,所以图2-2-2当输出电压为零伏时AD590的输出电流为308.2uA,因此为了使Ui的电位为零就必须使电流Ib等于电流Ic等于308.2uA, 三端稳压7812的输出电压为12v所以由方程(1)得 . . (2)由方程(2)的取电阻R2=30k , R1=10k的电位器。由方程(2)的取电阻R2=30k , R1=10k的电位器。又由于ADC0804的输入电压范围为05v ,为了提高精度所以令水温为95时ADC0804的输入电压为5v(即Uo=5v)。此时列出A点的结点方程如下: (3)当水温为95时AD590的输出电流为368.2uA。由方程式(3)得R4+R5=83.33k因此取R5=81k , R5=5k的电位器。 2.3.2 温度控制电路此部分电路主要由光电耦合器MOC3041和双向可控硅BTA12组成。MOC3041光电耦合器的耐压值为400v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。100电阻与0.01uF电容组成双向可控硅保护电路。控制部分电路图如图2.3.3。图.3 LCD液晶显示模块 DSP需要对读写周期较慢的液晶显示模块进行访问,这样就存在DSP与慢速设备之间的输入/输出时序匹配问题。直接访问方式是将DSP的读写信号线与慢速设备口控制板引出的读写信号线直接相连,时序由DSP内部读写逻辑控制。由于慢速外设的读写周期相对DSP较慢,要使两者的时序匹配,还必须进行一些时序方面的控制处理,一种处理方法是软件编程等待状态发生器,将外部总线周期扩展到数个机器周期。由于受硬件条件的限制,这种扩展通常也是有限的。另一种处理方法是利用DSP的READY(外部设备准备就绪)引脚,通过硬件扩展实现外部状态自动等待,从而使DSP与慢速设备之间的时序匹配。虽然可以将总线周期扩展到任意个机器周期,但是需要进行硬件扩展,增加了系统设计的复杂度。间接访问是用DSP的数字I/O间接控制慢速设备通过软件控制DSP的I/O口来实现与慢速设备的时序匹配。此种方式无需硬件扩展即可实现与任意时序慢速设备之间的时序匹配。本设计采用间接访问方式来实现DSP与LCD之间的时序匹配,即在程序中加入大量延时语句。由于DSP为3.3V设备,而液晶显示模块属于+5V设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。2.4 主机控制部分此部分是电路的核心部分,系统的控制采用了EL-DSP-EXPII型教学实验系统。EL-DSP-EXPII教学实验系统内部有64KB单元的程序存储器及64KB的数据存储器。因此系统不必扩展外部程序存储器和数据存储器这样大大的减少了系统硬件部分。2.5 微机控制及图形显示部分为了使系统具有更好的人机交换界面,设在系统设计中我们通过Visual Basic 语言计了微机控制界面。通过系统与微机的通信大大的提高了系统的各方面性能。其控制界面见图2.5.1图2.5.1微机控制界面如图2.5.1的微机控制界面,具有温度控制及显示的功能。图中左半部分为水温的实测温度和给定温度的数值显示及对主系统的控制界面,右半部分为水温的实测温度的逐点采样及图形显示,通过此界面可以更直观的显示温度的变化,并且通过对图形的保存能方便的打印出水温的变化曲线。3 系统软件设计3.1 软件系统分析(1)系统设计原理 首先要初始化A/D转换模块,然后等待中断,当产生中断后对采集到的模拟信号进行处理,为了确保转换精度应多次取值求平均,将其转换结果放在结果寄存器的高12位上,最后将处理后的温度值送到LCD上显示。系统设计原理框图如图3.1.1:TMS320C5402温度采集电路A/D转换模块LCD显示模块图3.1.1系统设计原理框图 (2)软件系统流程图开始初始化DSP时钟初始化CTR初始化AD采样时钟中断采集,数据存入Voltagel中数据处理后的温度值送到LCD显示清楚并显示相关文字启动AD0通道采集3.2 软件模块设计(1)等待ADC中断程序#define ADC_usDELAY 8000L#define ADC_usDELAY2 20Linterrupt void adc_isr(void);Uint16 LoopCount;Uint16 ConversionCount;Uint16 Voltage11024;Uint16 Voltage21024;float temp;Uint16 i,j;void InitAdc(void);interrupt void adc_isr(void) Voltage1ConversionCount = AdcRegs.ADCRESULT0 4; Voltage2ConversionCount = AdcRegs.ADCRESULT1 4; / If 40 conversions have been logged, start over if(ConversionCount = 200) ConversionCount = 0; else ConversionCount+; if(ConversionCount=0) temp=0; for(i=0;i200;i+) temp=temp+Voltage1i; temp=temp/200.0; temp=temp*3.0/4095.0; / Reinitialize for next ADC sequence AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; / Reset SEQ1 AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; / Clear INT SEQ1 bit PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; / Acknowledge interrupt to PIE return;void InitAdc(void)extern void DSP28x_usDelay(Uint32 Count);AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;/ Power up bandgap/reference circuitryDELAY_US(ADC_usDELAY); / Delay before powering up rest of ADCAdcRegs.ADCTRL3.bit.ADCPWDN = 1;/ Power up rest of ADCDELAY_US(ADC_usDELAY2); / Delay after powering up ADC(2)延时子程序void Delay(unsigned int nDelay)int ii,jj,kk=0;for ( ii=0;iinDelay;ii+ )for ( jj=0;jj1024;jj+ )kk+;(3)打开显示子程序void TurnOnLCD()*(int *)0x108001=LCDCMDTURNON;Delay(LCDDELAY);*(int *)0x108002=0;Delay(2048); *(int *)0x108001=LCDCMDSTARTLINE;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);(4)清屏程序void LCDCLS()int i,j;*(int *)0x108001=LCDCMDSTARTLINE;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( i=0;i8;i+ )*(int *)0x108001=LCDCMDPAGE+i;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( j=0;j64;j+ )*(int *)0x108003=0;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY); *(int *)0x108001=LCDCMDPAGE+i;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( j=0;j64;j+ )*(int *)0x108004=0;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);(5)显示模块/汉字模块void LCDWrite(unsigned int x,unsigned int y,unsigned int LR,unsigned int n) unsigned char lcdkey532= 0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,/温0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,/度0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0X00,0X00,0X00,0X00,0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00,/显0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00,/示0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x18,0x00,0x00,/; if(LR=0) int j; int k=n; *(int *)0x108001=LCDCMDPAGE+x; Delay(1); *(int *)0x108002=0; Delay(1); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1); *(int *)0x108002=0; Delay(1); for(j=0;j16;j+) *(int *)0x108003=lcdkeykj; Delay(10); *(int *)0x108002=0; Delay(10); x+; *(int *)0x108001=LCDCMDPAGE+x; Delay(1); *(int *)0x108002=0; Delay(1); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1); *(int *)0x108002=0; Delay(1); for(j=16;j32;j+) *(int *)0x108003=lcdkeykj; Delay(100); *(int *)0x108002=0; Delay(100); else int j; int k=n; *(int *)0x108001=LCDCMDPAGE+x; Delay(1); *(int *)0x108002=0; Delay(1); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1); *(int *)0x108002=0; Delay(1); for(j=0;j16;j+) *(int *)0x108004=lcdkeykj; Delay(100); *(int *)0x108002=0; Delay(100); x+; *(int *)0x108001=LCDCMDPAGE+x; Delay(1); *(int *)0x108002=0; Delay(1); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1); *(int *)0x108002=0; Delay(1); for(j=16;j32;j+) *(int *)0x108004=lcdkeykj; Delay(100); *(int *)0x108002=0; Delay(100); /数字模块unsigned char ledkey128= /半角0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,/00x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00,/10x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00,/20x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00, /30x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00, /40x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00, /50x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00, /60x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00, /70x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00, /80x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00, /90x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00, /: 0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00, /. ;void WriteNb(unsigned int x,unsigned int y,unsigned char *No,unsigned f,unsigned int LR) int i; y*=8; *(int *)0x108001=LCDCMDPAGE+x;/ 设置操作页=1Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y;/ 起始列=8Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);if(LR=1)for(i=0;i8;i+) if(f=1) *(int*)0x108004=Noi; else *(int*)0x108004=Noi; Delay(LCDDELAY); *(int*)0x108002=0; Delay(LCDDELAY); else for(i=0;i8;i+) if(f=1) *(int*)0x108003=Noi; else *(int*)0x108003=Noi; Delay(LCDDELAY); *(int*)0x108002=0; Delay(LCDDELAY); (6)温度计算子程序void Wendu(float c) temp1=35.91-246.7*c; ZhengshuT=(int)temp1; XiaoshuT=(int)(temp1-ZhengshuT)*100); Zhongjian1=ZhengshuT/10; Zhongjian2=ZhengshuT%10; ZhengshuT=(Zhongjian14)|Zhongjian2; Zhongjian1=XiaoshuT/10; Zhongjian2=XiaoshuT%10; XiaoshuT=(Zhongjian14,0,0); WriteNb(6,2,ledkeyXiaoshuT&0x000f,0,1); WriteNb(6,1,ledkey(Xiao
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-重庆-重庆有线广播电视机务员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-重庆-重庆仓库管理员三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京工程测量工一级(高级技师)历年参考题库典型考点含答案解析
- 影视制作岗位必 备知识:制片助理面试题及答案详解
- 提供高分技巧及答案解析助力考生顺利通过面试
- 应急消防设备生产线项目人力资源管理方案
- 城市供水管网管道切换与安装方案
- 光伏电站公司项目管理优化方案
- 智算中心资源调度与优化技术方案
- 税务专家面试题及答案解析
- 民丰县盼水河铅锑矿工程项目环境影响报告书
- 2025-2030中国高速示波器行业市场发展趋势与前景展望战略研究报告
- 餐饮业安全生产管理制度汇编
- 新修订《普通高中数学课程标准》的解读与思考
- 《空调维护培训资料》课件
- 医院节能培训课件
- 混凝土质量保证措施
- 烟气CEMS在线比对验收调试报告附表D.1-12计算公式(HJ-75-2017)
- 学生请假安全协议书
- 隐形眼镜项目风险管理分析
- 过敏性休克应急处置流程
评论
0/150
提交评论