自动控制系统课程设计
基于单片机的温室温度控制系统
专业名称 班级学号 学生姓名 指导教师 设计时间
《自动控制系统》课程设计任务书
专业 自动化 班级 学生姓名
设计题目: 基于单片机的温室温度控制系统
一、设计实验条件
自动化实验室各实验系统
二、设计任务
查找资料,确定蔬菜大棚温室在植物生长的不同阶段所需的温度范围与控制精度,并以此为依据设计以单片机为核心的温度控制系统。要求:
1.写出温度控制过程,绘制控制系统组成框图
2.选择性能、价格合适的器件,给出温度检测与控制电路
3、编写温度检测与控制程序框图
三、设计说明书的内容
1、 设计题目与设计任务(设计任务书) 2、 前言(绪论)(设计的目的、意义等) 3、 主体设计部分 4、 结束语 5、 参考文献
四、设计时间与设计时间安排
1、设计时间 : 2 周 2、设计时间安排:
熟悉实验设备、实验、收集资料: 3 天
设计计算、绘制技术图纸: 3 天
编写课程设计说明书: 2 天
答辩: 1 天
1
目 录
前 言„„„„„„„„„„„„„„„„„„„„„„„„„„ 3 1 温度控制系统概述„„„„„„„„„„„„„„„„„„„„3 2 系统硬件设计„„„„„„„„„„„„„„„„„„„„„ 4 2.1 系统硬件结构图„„„„„„„„„„„„„„„„„„4 2.2 系统原理图„„„„„„„„„„„„„„„„„„„„4 2.3 系统框图„„„„„„„„„„„„„„„„„„„„„5 3 系统功能设计„„„„„„„„„„„„„„„„„„„„„„5 3.1 信号采集模块„„„„„„„„„„„„„„„„„„„ 5 3.2 显示模块„„„„„„„„„„„„„„„„„„„„„ 5 3.3 键盘模块„„„„„„„„„„„„„„„„„„„„„„6 3.4 设置功能转换模块„„„„„„„„„„„„„„„„„„6 3.5 S52芯片介绍„„„„„„„„„„„„„„„„„„„6 4 系统软件设计„„„„„„„„„„„„„„„„„„„„„„6 4.1 系统程序流程图„„„„„„„„„„„„„„„„„„„7 4.2 系统源程序„„„„„„„„„„„„„„„„„„„„„7 5 结束语„„„„„„„„„„„„„„„„„„„„„„„„„13 6 参考文献„„„„„„„„„„„„„„„„„„„„„„„„14
2
前言
随着生活条件的不断改善,人们更关注自身的健康,绿色蔬菜尤其受到重视。大棚种植充分满足了人们的需求,但对于和农作物生长密切相关的大棚温度的控制。对于大棚种植而言,良好的物种、本地适合种植的物种及土地酸碱度都是可以通过农民长期的种植经验获得的。但是温度是农民不能轻易解决的问题,而且温度的变化幅度大,不易人工控制,对于农民来说时刻关注作物的生长温度是个庞大的工作量。“白天太阳很好,阳光充足,外面的温度零下5度如果大棚的薄膜没有破,里面照样产生有25度以上的温度,从而地温也可以得到提升至15度左右。漆黑大风的夜晚棚内的温度会大幅度降低,能降低到零下5度以下,停止刮风可以恢复到较地温少低点为止。”这些专业知识对于常年种植的农民也未必了解。
应用于大棚种植的温度控制系统解决了长期以来困扰农民的问题,它的制作成本低廉,应用广泛,对农民自身的素质要求不高,便于农民操作。更重要的是,它不仅帮助农民节约了大量,还在无形之中提高了作物的产量,增加了农民的收入,满足了人们对大棚蔬菜的需求。基于单片机的大棚温度控制系统是个小型的软硬件结合的产品,它针对个体农民的需要设计,适于中小面积的大棚种植。
1. 系统概述
大棚蔬菜满足了人民能一年四季吃到新鲜蔬菜的愿望,为提供更多量、更有营养价值的蔬菜,智能的大棚温度控制系统已成为农民的迫切需要。以S52单片机为主的温度控制系统可对大棚内部的温度进行模拟和蔬菜所需的正常温度进行比较,以人性化的方式向大棚管理人员提供温度调节的信息,帮助农民提高农作物的产量,减少农民的工作量。
温度控制系统采用S52单片机为核心。大棚温度采用连续可变的电压信号进行模拟,采集到的模拟信号经TLC9模/数转换芯片转换为数字信号送单片机,单片机根据输入的温度得出结果,通过仿真示波器来显示结果,蜂鸣器报警提醒农民作出适当的温度调节。该系统成本低,操作方便,设计人性化,具有良好的推广价值。
此温度控制系统只是建立在模拟仿真的基础之上,大棚内温度采用连续可调的电压模拟,控制策略采用的是应用的广泛的PID控制,输出模块使用PWM模拟
3
输出,并用仿真示波器动态显示。
2.系统硬件设计 2.1系统硬件结构图
模拟信号发生装置 A/D转换器 P1口 ATS52 数码管显示 键盘输入 报警电路
图1 系统结构图
2.2系统原理图
RV1数据采集部分1k41%RV1(3)+5v213U2AINSDOREF+CSREF-SCLKTLC9256912151619256912151619ABCD657P10P11P12Q0Q1Q2Q3Q4Q5Q6Q774LS374OECLKQ0Q1Q2Q3Q4Q5Q6Q7U3U474LS374OECLKl21P14112l3D0D1D2D3D4D5D6D73478131417181P1311U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617r1r2r3r4l1l2l3+5v18XTAL29RST987632293031PSENALEEA1R1RP1RESPACK-8PULLUP1l1347813141718D0D1D2D3D4D5D6D7P10P11P12P13P1412345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51Q1FMMTH10r1A1472580369#r2BD1SW1SW-SPDTBUZZERLED-REDr3CBUZ1r4D3 4
图2 系统原理图
2.3系统框图
控制器 执行器
图3 系统原理框图
3.系统功能设计 3.1信号采集模块
信号发生采用的是直接从电源上得到可变的电压.”可变”体现在滑动变阻器上.滑动变阻器一端接地,另一端接高电平,滑动滑动变阻器,可输出渐变的电压,作为模拟电压信号.运用于蔬菜大棚的温度控制系统,不需要信号发生装置,可采用温度检测器检测实际大棚内温度.
将模拟电压信号转换为数字信号,送入单片机,完成信号采集单元.模/数转换器采用TLC9,它是8位串行A/D转换芯片.可与通用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC9允许最高转换速率为40 000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。TLC9芯片如下图4所示.
图4 TLC9芯片
3.2显示模块
将ATS52接到排阻上,然后接到74LS374上,最后连接到数码管显示器上。 (1)RESPACK8一般接在S52单片机的P0口,因为P0口内部没有上拉电阻,
5
不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端。
(2)74LS374具有三态输出的边沿触发器,374输出端O0„„O7可直接与总线相连,当三态允许控制端OE为低电平,O0„„O7为正常逻辑状态,可用来驱动负载总线。OE为高电平,O0„„O7高阻态,不驱动总线负载。当时钟端脉冲上升没作用下,O随数据D而变。
本次试验,采用两个74LS374芯片,一个用作段选U3,控制八位数码管的各段显示管,另一个用作片选U4。
(3)数码管显示电路。 3.3 键盘模块
将键盘与ATS52连接到一起,如硬件连接图连接方式连接电路。键盘作为可输入设定值,在之后的模块中与检测到的温度值作比较。 3.4设置功能转换模块
当SW 接于高电平时,选择数码显示模块,当SW接于低电平时,选择键盘设定值模块。
硬件实现很简单,在ATS52的P1.7口引出一条线,让它控制选择个模块。 3.5 S52芯片介绍
ATS52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得ATS52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。ATS52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,ATS52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
4 系统软件设计
6
4.1主程序流程图
开始 系统初始化 键盘设定温度值 显示设定值 N 是否功能转换 Y 采集模拟温度 A/D转换 采样值>?设定值 N Y 报警 PWM控制加热
4.2 系统源程序 #include uchar out0=0x7f ; //赋初值 7 uchar buf[3]={0,0,0};//全局数组 uchar pr[]={0x57,0x6E,0x5E,0x3E,0x6D,0x5D,0x3D,0x6B,0x5B,0x3B}; uchar discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint AD; //转换结果,十六进制 uint uuu,sc=0; //带小数部分数据处理结果 int Int_result,float_result;//Int_result整数部分,float_result小数部分 sbit Dataout=P1^0; sbit cs=P1^1; //数据线 //片选 //io口时钟 sbit sclk=P1^2; sbit dx=P1^3; sbit wx=P1^4; sbit sw=P1^7; sbit PWM=P1^5; sbit beep=P1^6; //断码显示控制锁存 //位控控制锁存 void delay1ms(uchar T) //单位时间1ms延时 { uchar time; while(T--) for(time=0;time<120;time++); } /***********显示程序*************/ void display(uint num) { uchar qian,bai,shi,ge; qian=num/1000; //千,百,十,个处理 bai=num/100%10; shi=num/10%10; ge=num%10; wx=0; P0=0xf7; 8 wx=1; dx=0; P0=discode[ge]; //显示个位 dx=1; delay1ms(1); if(num>0) { wx=0; P0=0xfb; wx=1; dx=0; P0=discode[shi]|0x80; //显示十位 dx=1; delay1ms(1); wx=0; P0=0xfd; wx=1; dx=0; P0=discode[bai]; //显示百位,带小数点 dx=1; delay1ms(1); } } /*************AD转换程序************/ AD_val() { uchar i,temp=0; cs=1; sclk=0; cs=0; 9 //TLC9处理 //初始化,启动 _nop_(); //读取采集数据,读取的是上一次采集数据 for(i=0;i<8;i++) { sclk=1; temp=temp<<1; if(Dataout) temp |=0x01; sclk=0; } cs=1; AD=temp; for(i=0;i<5;i++) _nop_(); Int_result=AD*5/256; //处理整数 float_result=AD*5%256*100/256; //处理小数部分 uuu=((Int_result*100)+(float_result));//整数部分和小数部分合成 return uuu;} /****************键盘扫描程序*************/ void KB_Scan1() { uchar tmp,line,i,j,flag,press; line=0x7E; for(i=1;i<=4;i++) { //延时17us以上,进行复位 P3=line; tmp=P3; tmp&=0x70; } if(tmp!=0x70) { tmp=P3;flag=1;break;} else line=(line<<1)|0x01; if(i==5) {tmp=0xFF;flag=0; } 10 for(j=0;j<10;j++) {if(tmp==pr[j]) press=j;} if(flag==1) { buf[2]=buf[1]; delay1ms(100); buf[1]=buf[0]; delay1ms(100); buf[0]= press; delay1ms(100); } /***************PID服务程序*************/ void PID() { fl e0,e1,e2; uchar du,out1; uchar kp=16, kd=0,ki=0;// ts=1; e0=e1;e1=e2;e2=(sc-uuu)/10; //设定值-采集量 if(e2>=0) { if(e2>=10) //测得偏差值与设定偏差值进行比较,若不在设定范围内则满功率加热。 {TR0=0;PWM=1;} else { du=25*e2;//(e2-e1)+ki*e2+kd*(e2-2*e1+e0); // PID算法 out1=du;//+out0; TR0=1; //若到达设定范围则调用PID程序,进行有效功率加热. } } 11 sc=buf[2]*100+buf[1]*10+buf[0]; } else //测得值与设定值比较,测得值大于设定值,关闭加热设备,停止加热。 {TR0=0;PWM=0;beep=1;} out0=out1; } /*********************PWM输出程序*********************/ /************ 定时器0中断服务程序**************/ void timer0() interrupt 1 { TR0=0 ; TH0=0xff ; TL0=0x66 ; TH1=0xff-out0 ; TR1=1 ; PWM=1 ; //启动输出 } /*********定时器1中断服务程序*******************/ void timer1() interrupt 3 { TR1=0 ; PWM=0 ; //结束输出 } /***************主函数**************************/ main() //主程序 TR0=1; { beep=0; TMOD=0x21 ; TH0=0xfc ; //1ms延时常数 12M TL0=0x18 ; //频率调节 TH1=0x7f; //脉宽调节 12 TL1=0 ; EA=1; ET0=1; ET1=1; while(1) {AD_val();//调用TCL9采集处理 if(sw==1) //显示最终结果 {display(uuu);} else{ if(P3^4==0||P3^5==0||P3^6==0) {KB_scan1(); display(sc);} else {display(sc);} } if(sc } 5 结束语 通过这次的课程设计,在很大程度上提高了我自主学习和思考的能力。论文中所涉及的知识很大程度上是在已有的知识基础上,借助书籍和网上资源,经过反复思考而得出的。当然还有一部分是参考资料上的内容。 温度控制系统对拥有中小范围面积的农民来说是具有很大的重要意义的: 1) 系统价格低,易于接受; 2) 方便农民更好地了解大棚内部的温度情况; 3) 不需专业的知识,操作简单; 4) 借助系统提示提高作物产量,增加农民收入。 本次课程设计非常适合当下农民人数日益减少,个体农业不景气的情况,在 13 设计和报告中并没有考虑到所用芯片的知识是否能被自己完全吸收,作出自己满意的课程设计。但是在实行的过程中,觉得要深入地了解一块芯片的功能是需要下一番功夫的,经过自己努力而获得的每一个知识也是更具意义的。由于能力及时间的,该系统并不是特别完善,针对TLC9模数转换芯片,我查阅大量的相关资料,但都不是特别详细。由于C语言和汇编语言相比有很大的优越性,故此次系统设计采用了C语言的编写方式。 相信在日后的学习中,努力地学习这方面的知识,日后必会有能力为农民设计一款实用、方便的温度控制系统,也可以在此系统基础上扩展自动通风系统等功能,大幅度的减少农民的工作量。 6 参考文献 [1] 马淑华,王凤文,张美金.单片机原理与接口技术[M].北京:北京邮电大学出版社,2007.8 [2] 张鹏,王雪梅.单片机原理与应用实例教程[M].北京:海洋出版社,2008.2 [3] 张婧武,周灵彬.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社,2007.4 [4] 唐颖,程菊花,任条娟.单片机原理与应用及C51程序设计[M].北京:北京大学出版社,2008.8 [5] 边春元,李文涛,江杰,杜平.C51单片机典型模块设计与应用[M].北京:机械工业出版社,2008.4 14 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务