基于Proteus的汽车空调控制系统的设计与仿真

发布时间 : 星期一 文章基于Proteus的汽车空调控制系统的设计与仿真更新完毕开始阅读

基于Proteus的汽车空调控制系统的设计与仿真

聂茹

(华南理工大学广州学院电子信息工程学院,广州510800)

摘要本文介绍的是利用Atmega16单片机、Proteus仿真软件开发的汽车空调自动控制系统。该系统具有电路结构简单、分立元件少、系统界面友好、操作简单等优点,能满足一般要求的汽车空调的自动控制。

关键字Proteus仿真;AVR单片机;空调控制

Design and Simulation of AutomobileAir-conditioning Control System Based on Proteus

NIE Ru

(College of Electronic information engineering, Guangzhou College of South China

University of Technology, Guangzhou 510800)

[Abstract]This paper introducesautomobile air-conditioning automatic control system which is developed by Atmega16 SCM, Proteus simulation software. This system has the advantages such as simple circuit structure, less division element, friendly system interface, simple operation and so on, can satisfy the general requirements of theautomobile air-conditioning automatic control. [Keywords] Proteus simulation;AVR singlechip;air-conditioning control 1 引言

汽车空调作为一种舒适性空调,不仅是人民生活水平提高的标志,也是提高汽车市场竞争能力的重要手段,同时,人们对汽车空调的温度控制性能也提出了更高的要求。本文介绍的就是利用Atmega16单片机、Proteus仿真软件开发的汽车空调自动控制系统,能满足一般要求的汽车空调的自动控制。

Atmega16是8位的单片机,具有Flash存储器,利用AVR单片机进行系统开发只需很少的外部器件就可以实现强大的功能,因此,在各种场合得到广泛应用,取代其它的8位单片机。而Proteus软件则是目前最好的模拟单片机及外围器件的仿真软件,可以仿真51系列、AVR,等,也可以仿真单片机的外围电路如键盘、LED、LCD、AD/DA、74系列、COMS 4000系列芯片等,应用Proteus提供的仿真模型和虚拟仪器可以高效地完成系统的软硬件设计和调试工作[1],因此利用Proteus不仅可以大大提高开发效率,而且可以降低投资。 2 系统设计

本设计的系统包含以下五部分:热电阻温度采集、液晶模块显示、继电器控制、键盘输入、风向步进电机的控制。 2.1 热电阻温度采集

在大型的中央空调中,热电阻温度传感器因其温度特性稳定、测量精度高等特点,得到了广泛的应用。本系统就是用Pt1000型铂电阻进行温度采集,铂电阻最常应用于中低温区,精度高,稳定性好,具有一定的非线性,温度越高电阻变化率越小,测量范围一般为一200~850℃。目前应用最广泛的是Ptl00[2]。

图1 Pt1000热电阻温度测量电路

图1为Pt1000热电阻温度传感器的测量电路。在电路中,热电阻RT与三个电阻R1、R2、R3构成电桥。当温度变化时,运算放大器的同相输入端的电位将发生变化,经过运算放大器放大后送到单片机中进行AD转换。由于单片机采用5V电压为参考电源,而在温度变化为0~100°C时,电桥电路的输出电压范围为0~0.7V,所以确定运算放大电路的放大倍数为7。 运算放大电路的电阻可以由以下两个公式得到:

1+R5u0??7 R4uiR6?R5//R4

可取R5?6k,R4?1k,R6?860?。

当输入电压为5V时,根据电桥平衡原理,有以下公式:

Rt5VN1??U?(?)(1) 71023R0?Rt2R0——Pt1000在0°C时的电阻1000其中,U——电桥电源电压,N——ADC数据寄存器的值,

?。

Rt?R0(1?A?t?B?t2)(2)

Rt——温度为t时Pt1000的电阻值;t——温度;R0——Pt1000在0°C时的电阻1000; A——分度常数,A=0.0038623139728 ;B——分度常数,B=-0.00000065314932626 因此,根据以上公式(1)、(2)用Visual Basic.Net生成用N来查找温度t的程序表格(1024个值)部分如下:

const float Pt1000Tab[]={

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应用广泛,由于字符型液晶显示模块的接口形式都是统一的,因此当一种型号的接口电路设计好后,只要在指令上稍加改动

就可以使用各种类型的字符型液晶显示模块。程序编译器上我们使用CodeVisionAVR C Compiler,该编译器具有相关器件库函数,开发方便快捷[3]。CodeVisionAVR集成LCD的函数,可方便实现LCD的读写,下面是部分函数及功能简单介绍。

函数原型:voidlcd_init(unsigned char lcd_columns)

功能:初始化LCD模块,清屏并把显示坐标设定在0列0行。LCD模块的列必须指定(例如:16)。这时不显

示光标。在使用其它LCD函数前,必须先调用此函数。 函数原型:voidlcd_clear(void)

功能:清屏并把显示坐标设定在0 列0行。 函数原型:voidlcd_gotoxy(unsigned char x, unsigned char y) 功能:设定显示坐标在x 列y行。列、行。 函数原型:voidlcd_putchar(char c) 功能:在当前坐标显示字符c 。 函数原型:voidlcd_puts(char *str)

功能:在当前坐标显示SRAM 中的字符串str。 函数原型:voidlcd_putsf(char flash *str)

功能:在当前坐标显示FLASH 中的字符串str。

在对LCD进行写入显示数据之前,需要对它进行初始化,设定显示参数。

#include

/*使用PORTB连接LCD模块*/ #asm

.equ __lcd_port=0x18 ;PORTB #endasm void main(void){ //定义字符数组 uchararr[5];

//初始化,指定列数为16 lcd_init(16);

//设定显示坐标为(0,1) lcd_gotoxy(0,1);

/*在(0,1)显示字符串,注意:此字符串存储在Flash只读存储器中*/ lcd_putsf(\ Mode:\

/*调用“浮点数转换成字符串”函数,

函数原型:voidftoa(float n, unsigned char decimals, 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所示。

图2 ULN2003内部结构图

采用达林顿阵列的ULN2003是专门用来驱动继电器的芯片,采用集电极开路输出,输出电流大,因此可以直接驱动继电器或固体继电器等器件,可以共驱动7路,成本较低,图3为其驱动原理图。

图3 驱动原理图

2.4 键盘输入

本系统采用3×3矩阵式键盘。通过键盘可以控制空调系统的工作方式(关闭、送风、制冷)、风向步进电机(水平送风、倾斜送风、扫风)、温度设定等。

键盘的行由PD0、PD1、PD2控制,而列则由PC3、PC4、PC5控制,如图4所示。采用程序扫描的方式识别键码,其过程如下:

图4 3×3矩阵式键盘仿真图

(1)首先判断键盘中有无键按下。代码如下:

PORTC&=~0x20;

if((PIND&0x07)!=0x07) {//??}

首先将PC5置为“0”,再判断PD0、PD1、PD2是否都是“1”。如果全是“1”,则表示第3列没有键按下,否则有键按下,再进入消除抖动程序;再将PC4置为“0”,判断PD0、PD1、PD2是否都是“1”。如果全是“1”,则表明第2列无键按下,否则有键按下,进入消除

联系合同范文客服:xxxxx#qq.com(#替换为@)