您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 基于Proteus的汽车空调控制系统的设计与仿真
基于Proteus的汽车空调控制系统的设计与仿真聂茹(华南理工大学广州学院电子信息工程学院,广州510800)摘要本文介绍的是利用Atmega16单片机、Proteus仿真软件开发的汽车空调自动控制系统。该系统具有电路结构简单、分立元件少、系统界面友好、操作简单等优点,能满足一般要求的汽车空调的自动控制。关键字Proteus仿真;AVR单片机;空调控制DesignandSimulationofAutomobileAir-conditioningControlSystemBasedonProteusNIERu(CollegeofElectronicinformationengineering,GuangzhouCollegeofSouthChinaUniversityofTechnology,Guangzhou510800)[Abstract]Thispaperintroducesautomobileair-conditioningautomaticcontrolsystemwhichisdevelopedbyAtmega16SCM,Proteussimulationsoftware.Thissystemhastheadvantagessuchassimplecircuitstructure,lessdivisionelement,friendlysysteminterface,simpleoperationandsoon,cansatisfythegeneralrequirementsoftheautomobileair-conditioningautomaticcontrol.[Keywords]Proteussimulation;AVRsinglechip;air-conditioningcontrol1引言汽车空调作为一种舒适性空调,不仅是人民生活水平提高的标志,也是提高汽车市场竞争能力的重要手段,同时,人们对汽车空调的温度控制性能也提出了更高的要求。本文介绍的就是利用Atmega16单片机、Proteus仿真软件开发的汽车空调自动控制系统,能满足一般要求的汽车空调的自动控制。Atmega16是8位的单片机,具有Flash存储器,利用AVR单片机进行系统开发只需很少的外部器件就可以实现强大的功能,因此,在各种场合得到广泛应用,取代其它的8位单片机。而Proteus软件则是目前最好的模拟单片机及外围器件的仿真软件,可以仿真51系列、AVR,等,也可以仿真单片机的外围电路如键盘、LED、LCD、AD/DA、74系列、COMS4000系列芯片等,应用Proteus提供的仿真模型和虚拟仪器可以高效地完成系统的软硬件设计和调试工作[1],因此利用Proteus不仅可以大大提高开发效率,而且可以降低投资。2系统设计本设计的系统包含以下五部分:热电阻温度采集、液晶模块显示、继电器控制、键盘输入、风向步进电机的控制。2.1热电阻温度采集在大型的中央空调中,热电阻温度传感器因其温度特性稳定、测量精度高等特点,得到了广泛的应用。本系统就是用Pt1000型铂电阻进行温度采集,铂电阻最常应用于中低温区,精度高,稳定性好,具有一定的非线性,温度越高电阻变化率越小,测量范围一般为一200~850℃。目前应用最广泛的是Ptl00[2]。图1Pt1000热电阻温度测量电路图1为Pt1000热电阻温度传感器的测量电路。在电路中,热电阻RT与三个电阻R1、R2、R3构成电桥。当温度变化时,运算放大器的同相输入端的电位将发生变化,经过运算放大器放大后送到单片机中进行AD转换。由于单片机采用5V电压为参考电源,而在温度变化为0~100°C时,电桥电路的输出电压范围为0~0.7V,所以确定运算放大电路的放大倍数为7。运算放大电路的电阻可以由以下两个公式得到:71045iuuRR+456//RRR可取860,1,6645RkRkR。当输入电压为5V时,根据电桥平衡原理,有以下公式:)21(1023750ttRRRUNV(1)其中,U——电桥电源电压,N——ADC数据寄存器的值,0R——Pt1000在0°C时的电阻1000。)1(20tBtARRt(2)Rt——温度为t时Pt1000的电阻值;t——温度;0R——Pt1000在0°C时的电阻1000;A——分度常数,A=0.0038623139728;B——分度常数,B=-0.00000065314932626因此,根据以上公式(1)、(2)用VisualBasic.Net生成用N来查找温度t的程序表格(1024个值)部分如下:constfloatPt1000Tab[]={0.0,/*0*/0.1,/*1*/0.2,/*2*/0.2,……63.4,/*696*/63.5,/*697*/……99.3,/*1022*/99.4/*1023*/};2.2液晶模块显示本系统采用16×4的字符型液晶模块,这种类型的LCD应用广泛,由于字符型液晶显示模块的接口形式都是统一的,因此当一种型号的接口电路设计好后,只要在指令上稍加改动就可以使用各种类型的字符型液晶显示模块。程序编译器上我们使用CodeVisionAVRCCompiler,该编译器具有相关器件库函数,开发方便快捷[3]。CodeVisionAVR集成LCD的函数,可方便实现LCD的读写,下面是部分函数及功能简单介绍。函数原型:voidlcd_init(unsignedcharlcd_columns)功能:初始化LCD模块,清屏并把显示坐标设定在0列0行。LCD模块的列必须指定(例如:16)。这时不显示光标。在使用其它LCD函数前,必须先调用此函数。函数原型:voidlcd_clear(void)功能:清屏并把显示坐标设定在0列0行。函数原型:voidlcd_gotoxy(unsignedcharx,unsignedchary)功能:设定显示坐标在x列y行。列、行。函数原型:voidlcd_putchar(charc)功能:在当前坐标显示字符c。函数原型:voidlcd_puts(char*str)功能:在当前坐标显示SRAM中的字符串str。函数原型:voidlcd_putsf(charflash*str)功能:在当前坐标显示FLASH中的字符串str。在对LCD进行写入显示数据之前,需要对它进行初始化,设定显示参数。#includelcd.h/*使用PORTB连接LCD模块*/#asm.equ__lcd_port=0x18;PORTB#endasmvoidmain(void){//定义字符数组uchararr[5];//初始化,指定列数为16lcd_init(16);//设定显示坐标为(0,1)lcd_gotoxy(0,1);/*在(0,1)显示字符串,注意:此字符串存储在Flash只读存储器中*/lcd_putsf(RunMode:);/*调用“浮点数转换成字符串”函数,函数原型:voidftoa(floatn,unsignedchardecimals,char*str)data为浮点数*/ftoa(data,1,arr);//设定显示坐标为(0,2)lcd_gotoxy(0,2);//显示RAM中字符串数组arr的内容lcd_puts(arr);while(1);}2.3继电器控制Atmega16不能直接驱动继电器,所以必须加入较大功率的驱动器。本系统采用ULN2003芯片来驱动继电器。其内部结构如图2所示。图2ULN2003内部结构图采用达林顿阵列的ULN2003是专门用来驱动继电器的芯片,采用集电极开路输出,输出电流大,因此可以直接驱动继电器或固体继电器等器件,可以共驱动7路,成本较低,图3为其驱动原理图。图3驱动原理图2.4键盘输入本系统采用3×3矩阵式键盘。通过键盘可以控制空调系统的工作方式(关闭、送风、制冷)、风向步进电机(水平送风、倾斜送风、扫风)、温度设定等。键盘的行由PD0、PD1、PD2控制,而列则由PC3、PC4、PC5控制,如图4所示。采用程序扫描的方式识别键码,其过程如下:图43×3矩阵式键盘仿真图(1)首先判断键盘中有无键按下。代码如下:PORTC&=~0x20;if((PIND&0x07)!=0x07){//……}首先将PC5置为“0”,再判断PD0、PD1、PD2是否都是“1”。如果全是“1”,则表示第3列没有键按下,否则有键按下,再进入消除抖动程序;再将PC4置为“0”,判断PD0、PD1、PD2是否都是“1”。如果全是“1”,则表明第2列无键按下,否则有键按下,进入消除抖动程序;再将PC3置为“0”,再判断PD0、PD1、PD2是否都是“1”。如果全是“1”,则表明第1列无键按下,否则有键按下,进入消除抖动程序。(2)判断键码,即哪个按键按下。以下是识别按键为“Key2-3”(第2行第3列)的程序代码。if((PIND&0x07)==0x05){//Key2-3//ucharkey_num[]=K23;//等待按键释放while((PIND&0x07)==0x05);//判断换气风机是否在运行if(ventilator_state==1){ventilator_state=0;//关闭换气风机stop_ventilator();//在LCD上的(12,3)显示“OFF”lcd_gotoxy(12,3);lcd_putsf(OFF);}else{ventilator_state=1;//开启换气风机start_ventilator();//在LCD上的(12,3)显示“Run”lcd_gotoxy(12,3);lcd_putsf(Run);}return;//识别完毕,返回主程序}2.5风向步进电机控制Atmega16的定时器能够输出PWM,编程简单,精度高,因此通过编程让定时器2工作于相位可调模式,产生高精度的PWM波形输出,调节占空比,以达到控制步进电机不同转角的目的。初始化设置如下:ASSR=0x00;TCCR2=0x64;TCNT2=0x00;OCR2=0x00;TIMSK=0x80;3系统仿真实现Proteus仿真提供的可调电阻是“十级可调”而不是“无级可调”,所以本系统用两个可调电阻模拟Pt1000热电阻,以实现“粗调”、“中调”、“细调”,反映热电阻阻值的细微变化。图5为换气风机、压缩机、蒸发器风机处于工作状态下的仿真图。图6为LCD的显示结果。图5换气风机、压缩机、蒸发器风机处于工作状态下的仿真图图6LCD的显示结果4结束语本系统采用AVR单片机及Proteus仿真软件实现汽车空调的自动控制,设计的系统能满足一般精度要求的汽车空调的自动控制,具有电路简单、系统界面友好、操作简单等优点。参考文献1、何勇.基于Proteus的单片机应用系统设计.电脑知识与技术[J],2009,5(21):5880-58822、吴健,侯文,郑宾.基于STC89C52单片机的温度控制系统.电脑知识与技术:学术交流[J],2011,7(2):902-9033、李龙飘,王岚,万传松,等.基于AVR单片机的温度测量系统[J].国外电子元器件,2008,(8):40-42
本文标题:基于Proteus的汽车空调控制系统的设计与仿真
链接地址:https://www.777doc.com/doc-2571789 .html