汽车雨刮器仿真设计自动化专业综合设计.docx

上传人:b****3 文档编号:4646631 上传时间:2022-12-07 格式:DOCX 页数:15 大小:163.10KB
下载 相关 举报
汽车雨刮器仿真设计自动化专业综合设计.docx_第1页
第1页 / 共15页
汽车雨刮器仿真设计自动化专业综合设计.docx_第2页
第2页 / 共15页
汽车雨刮器仿真设计自动化专业综合设计.docx_第3页
第3页 / 共15页
汽车雨刮器仿真设计自动化专业综合设计.docx_第4页
第4页 / 共15页
汽车雨刮器仿真设计自动化专业综合设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

汽车雨刮器仿真设计自动化专业综合设计.docx

《汽车雨刮器仿真设计自动化专业综合设计.docx》由会员分享,可在线阅读,更多相关《汽车雨刮器仿真设计自动化专业综合设计.docx(15页珍藏版)》请在冰豆网上搜索。

汽车雨刮器仿真设计自动化专业综合设计.docx

汽车雨刮器仿真设计自动化专业综合设计

 

一、设计题目汽车雨刮器控制

要求:

①雨量检测

②利用单片机检测雨刷故障(检测电流等);

③喷水电机、雨刮器电机转速PWM控制(实现间歇、快速1、快速2、点动等控制);

④通过检测雨量构成自适应控制

(一)摘要

此课程设计主要采用protel(altiumdesigner)、proteus软件进行以单片机为基础的汽车雨刮器控制电路原理图设计与仿真设计,并通过keil软件编程实现汽车雨刮器PWM控制(间歇、快速1、快速2、点动等控制),并且通过雨量检测构成自适应控制系统。

(二)关键词

单片机雨刮雨量检测PWM自适应控制

 

二设计报告正文

1原理图设计

根据要求,雨刮控制电路设计可分为几个模块:

故障检测电路、雨量检测电路、电机驱动电路、雨刮工作模式显示电路以及电路设计中的复位电路和时钟电路两个基本模块。

下面,具体介绍各模块电路的设计原理。

1.1复位电路设计

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。

单片机系统的复位方式有:

手动按钮复位和上电复位。

本设计中复位电路采用手动按钮复位方式。

手动按钮复位需要人为在复位输入端RST上加入高电平(图一)。

一般采用的办法是在RST端和正电源Vcc之间接一个按钮。

当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。

手动按钮复位的电路如所示。

由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

图一单片机复位电路

1.2雨刷故障检测电路

在雨刷工作状态中,最常见的故障便是雨刷电机堵转。

当电机出现堵转现象时,流过电机线圈电流会急剧上升,如果堵转现象不能得到及时解决,可能会导致电机线圈烧毁。

具体解决方法如下:

在电机与接地之间连接一个小电阻,将比较器的正端给定略大于电机正常运行时小电阻两端的电压值,而比较器负端则接在小电阻的高电位上。

电机正常运行情况下,电阻的端电压较小,比较器正端电压会大于或等于负端电压;而当电机堵转时,由于电流急剧上升,所接小电阻端电压急剧变大,从而导致比较器正端电压小于负端电压的现象出现。

我们利用比较器的特性,通过比较器的正负端电压来判断电机是否出现堵转故障:

若在一定时间内,比较器正端电压与负端电压相差不大,则表明电机正常运转;若在一定时间内,比较器正端电压低于负端电压,则表明电机堵转。

雨刷故障检测电路见图二

图二雨刷故障检测电路

1.3雨量检测电路

在自动雨刷系统中,控制器通过雨量检测装置检测降雨量大小,进而控制雨刷器摆动速度。

此次设计采用红外式雨量检测装置。

1.3.1红外雨量监测装置工作原理

雨量检测装置由玻璃棱镜、红外线光源发射器和红外线光源接收器等部件组成。

红外线光源发射器将红外光以固定角度投射到挡风玻璃上,经由挡风玻璃、棱镜反射回到红外线接收器;在挡风玻璃清晰的情况下,红外接收器收到的红外线总量与红外线发射器发出的红外线总量基本相等。

当有雨滴落在挡风玻璃上时,部分红外线会因雨滴的折射而分散到外部,导致红外接收器接收到的红外线总量小于发射器发出的红外线总量。

通过对红外线总量的检测,判断雨量的大小,进而发出刮水请求到雨刷控制器,完成不同档位的刮水行为。

原理图见

图三雨量检测原理图

1.3.2红外发送电路

雨量检测的发送装置采用的是红外发射二极管(TSAL6200),它将周期的电信号转变成一定频率的红外信号。

如果给红外发射端提供频率为38KHZ的方波信号,那么发射端就会发射出相应频率的红外信号。

1.3.3红外接收电路

HS0038B是一种能够接收红外信号的小型接收器件,不需要加红外过滤装置。

当HS0038B在没有接收到红外光时,输出端处于高电平;当接收端有红外光输入时,输出端为低电平。

实际应用中,由于雨量大小的不同,玻璃的反射率就会有所不同,红外光的反射数量也就不同,红外光接收器输出地脉冲频率也会有相应的变化。

通过单片机的P2.6管脚的捕捉功能,连续捕捉脉冲的两个上升沿,算出脉冲频率值,通过处理就能得到雨量大小变化。

1.4电机驱动电路

电机驱动电路中,由单片机输出一定频率的脉冲,通过三极管驱动继电器工作,当继电器闭合时,直流电机两端承受正向电压,电机启动。

为了保护继电器,我们在继电器两端并联一个反向二极管,起到续流的作用。

电路图如下

图四电机驱动电路

1.5雨刮工作模式显示

雨刮工作模式显示由单片机和数码管共同完成,雨刮工作时,单片机将判断雨刮出于何种工作模式,并有由单片机P0口各引脚和P1口的低四位输出对应的高低电平,控制数码管显示。

电路连接如下:

图五工作模式显示

1.6雨刮控制电路原理图

图六雨刮控制电路原理图

2仿真图设计

仿真图如图七:

图七雨刮控制仿真图

3控制程序编写

3.1程序流程图

图八程序流程图

3.2雨刮控制参考程序源代码

源代码:

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitFl=P1^0;//喷水电机控制位

sbitOff=P1^1;//停止电机控制位

sbitInt=P1^5;//间歇转

sbitHi1=P1^3;//电机高速1

sbitHi2=P1^4;//电机高速2

sbitdiankong=P1^2;

sbitHi_motor=P3^0;//雨刷电机

sbitFl_motor=P3^1;//喷水电机

sbitWE1=P3^4;

sbitWE2=P3^5;

sbitWE3=P3^6;

sbitWE4=P3^7;//数码管位选

sbitled=P3^3;

uintnum=0,k=0,delta=5,time=0,temp;

uintk1,k2,k3,k4;

uintflag=0;

ucharcodedtable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc8};//共阳数码管码表

ucharcodelable[]={0xbf,0xc0,0x8e,0xf9,0xab,0x87,0xc7,0x89,0xa4};//"-OFIntLH"字符编码

voiddelay(uintz)

{

uintx,y;

for(x=15;x>0;x--)

for(y=z;y>0;y--);

}

/**********电机、IO口函数************/

voidinit(void)

{

Hi_motor=0;

Fl_motor=0;

P1=0xef;

WE1=0;

WE2=0;

WE3=0;

WE4=0;

P0=0x00;

}

/**********定时器0初始化函数************/

voidInit_timer0()

{

TMOD=0x01;//工作模式1

TH0=(65536-100)/256;

TL0=(65536-100)%256;//定时器0赋初值0.1ms

EA=1;//开

ET0=1;//打开定时器0中断

TR0=1;//启动定时器0

}

/**********外部中断0初始化函数********/

voidX0_init()

{

EX0=1;//允许外部中断0中断

IT0=1;//跳沿式触

}

/**********数码管函数************/

voiddisplay1(uintk1,uintk2,uintk3)

{

WE1=1;

P0=lable[k1];

delay

(1);

WE1=0;

WE2=1;

P0=lable[k2];

delay

(1);

WE2=0;

WE4=1;

P0=dtable[k3%10];

delay

(1);

WE4=0;

WE3=1;

P0=dtable[k3/10];

delay

(1);

WE3=0;

}

/**********雨量检测函数************/

uintcheck_date()//雨量检测

{

uintk;

temp=P2;

temp=temp&0x0f;

switch(temp)

{

case0x00:

returnk=0;break;

case0x01:

returnk=1;break;

case0x02:

returnk=2;break;

case0x03:

returnk=3;break;

case0x04:

returnk=4;break;

case0x05:

returnk=5;break;

case0x06:

returnk=6;break;

case0x07:

returnk=7;break;

case0x08:

returnk=8;break;

case0x09:

returnk=9;break;

case0x0a:

returnk=10;break;

case0x0b:

returnk=11;break;

case0x0c:

returnk=12;break;

case0x0d:

returnk=13;break;

case0x0e:

returnk=14;break;

case0x0f:

returnk=15;break;

default:

break;

}

}

/**********main函数************/

voidmain()

{

init();//电机初始化

X0_init();//外部中断0初始化

Init_timer0();//定时器0初始化

while

(1)

{

/*if(flag)

display1(0,0,check_date());

elseif(!

Fl)

{

display1(2,6,check_date());

Fl_motor=1;

}

else

Fl_motor=0;

}*/

if(!

Fl)

{

display1(2,6,check_date());

Fl_motor=1;

}

else

Fl_motor=0;

}

}

/**********定时器0中断函数************/

voidtimer0_IRQ()interrupt1//控制电机各种转动

{

TH0=(65536-100)/256;

TL0=(65536-100)%256;//定时器0赋初值0.1ms

if(!

Off)//判断是否按下“Off”键

{

while(!

Off)

{

display1(1,2,check_date());

Hi_motor=0;//电机停止

if(Off)

break;//退出循环

}

}

elseif(!

Int)//判断是否按下“Int”键

{

num++;//计数值增加

while(!

Int)

{display1(3,4,check_date());

if(num<250)

{

led=1;

Hi_motor=1;//电机转2.5s

}

if(num>=2500&&num<5000)

{

led=0;

Hi_motor=0;//电机停2.5s

}

if(num>=5000)

num=0;

if(Int)

num=0;//计数值清0,防止干扰

break;//退出循环

}

}

elseif(!

diankong)//判断是否按下“Int”键

{

num++;//计数值增加

while(!

diankong)

{display1(0,0,check_date());

if(num<2000)

{

led=1;

Hi_motor=1;//电机转2.5s

}

if(num>=2000)

{

led=0;

Hi_motor=0;//电机停2.5s

num=2000;

}

if(diankong)

num=0;//计数值清0,防止干扰

break;//退出循环

}

}

else//PWM控制电机的转速

{

if(!

Hi1)//高速1

{

display1(7,3,check_date());

delta=50;

}

elseif(!

Hi2)//高速2

{

display1(7,8,check_date());

delta=0;

}

else

delta=0;//高速1

num++;//计数值增加

time=20+check_date()*5;//电机运行的时间

if(num

{

led=1;

Hi_motor=1;//电机转动

}

if(num>=time&&num<(100+delta))

{

led=0;

Hi_motor=0;//电机停止

}

if(num>=(100+delta))

num=0;

}

}

/**********外部中断0中断函数************/

voidX0_IRQ()interrupt0

{TR0=0;//关闭定时器0

Fl_motor=1;

delay(10000);

Fl_motor=0;

TR0=1;//打开定时器0

}

三设计总结

课程设计中用到了protel(altiumdesigner)和proteus软件来分别设计原理图和仿真图,同时也用到了keil软件来编写运行控制程序。

在解决设计过程中所遇到的各种问题的过程中,在一定程度上加深了对以上软件的认识与理解,也加强了对这些软件的运用和掌握。

此次课程设计中运用到了模拟电子技术、单片机技术、自动控制原理等专业基础课程中的内容,是对我们在大学里面所学习的知识的一个考察与检测,同时,也是在为即将参加工作的同学们提供一次整体知识回顾与运用的机会。

综合设计题目来源于生活,让我们在大学期间学习的理论知识显得并不是那么空洞,得到了很好的实践,也使得对自己的发展方向更加明确。

 

四参考文献

【1】鲍迪,贾文超,柏丹.车用雨量检测装置设计研究【J】.吉林:

长春工业大学电气与电子工程学院

【2】张毅刚,彭喜元.单片机原理及应用【M】.北京:

高等教育出版社

【3】杨素行.模拟电子技术基础简明教程【M】.北京:

清华大学电子学教研组出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1