您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 光电式电动车速度里程表--答辩PPT
光电式电动车速度里程表设计指导老师:***学生:***学号:***1.课题任务•本次设计的内容是,采用光电式传感器作为传感元件设计一个光电式电动车速度里程表。•其中,本次设计的光电式电动车速度里程表具有一下功能是:•(1)基本功能是能够显示速度,单次里程,累计里程;•(2)增加一个显示时间的功能,还增加一个超速行驶时的报警功能。2.基本设计原理•测量速度的方法很多,数字脉冲测量法是其中最为常用的。数字脉冲测量法的原理是:将需要测速的转动物体的某个轴进行测量,然后根据该轴的机械比,以及转动物体的直径将其换算成转动物体的线速度,从而计算出里程。•在脉冲测速的方法中,最典型的方法有测频率法(M测法)和测周期法(T法)。•(1)测频率法是通过测量单位时间的脉冲数换算成频率.该方法适合测量较高速运转的物体,当速度比较低时,测量时间内脉冲数比较少,误差所占比例较大。•(2)测周期法则是测量两个脉冲之间的时间,并将其换算成周期,从而得到频率。在速度较高时,测量的周期会比较小,误差所占比例会比较大,因此测周期法比较适合在低速时使用。本设计采用频率测速法,设脉冲的总数为m,车轮的周长为C,车轮转动一周产生的脉冲数位n,车轮行驶时间为T0(设为1秒),因此,里程(S)和速度(v)可分别根据下列公式求得:v=(C*m/n)/T0(1)S=C*m/n(2)基于以上脉冲测速法,当前需要解决的就是如何将电动车的转动转化为脉冲。我们在电动车后轮轴出保持与轮子旋转切面平行的方向延伸出一个铝盘,并在这个铝盘的边沿挖出若干个圆形孔洞(本设计采用8个孔洞)。而且,还利用一个ST1101红外光电传感器的检测部分放在圆孔的空心处,如下图2.1所示。•当有物体在红外光电发光二极管和高灵敏度光电晶体管之间进行遮挡时,传感器就会输出一个低电平,而当红外光电发光二极管和高灵敏度光电晶体管之间无物体遮挡时,将会输出一个高电平,这样就形成了一个脉冲。所以每当铝盘跟随后轮旋转时,传感器就向外面输出脉冲。即,实现电动车的转动转换为脉冲。3.系统硬件设计•基于上面的基本设计原理易知,该系统中需要:•(1)一个采集信号模块---选用ST1101红外光电传感器•(2)一个处理数据的模块---选用单片机AT89C51来处理数据•(3)且光电式速度里程的功能是要显示速度,单次里程及累计里程的显示模块---LCD1602液晶显示器•(4)一个控制该系统的模块---几个按键控制设置功能•(5)报警模块---蜂鸣器进行报警•(6)因为不同速度产生的脉冲频率是不同的,所以由光电传感器检测出来的脉冲信号也不尽相同。而且一般的模拟信号都比较微弱,因此要把信号放大,此时就需要一个放大器。另外,单片机只能够识别处理TTL信号,则采集的信号需要经过整形变换后才可与单片机相连接---需要一个信号预处理电路。如下图所示系统硬件框图:系统原理图如下所示:由上原理图可知:(1)LCD1602的命令/数据接口与单片机的端口P0相连接;(2)单片机引脚P3.5(T1)接收传感器输入信号;(3)与单片机引脚P3.2(INT0)相连接的按键S5的功能是:控制进入时间设置;(4)与单片机引脚P2.0相连接的按键S1的功能是:进入车轮周长和最大速度设置界面;在时间设置的时候,分别对时分秒移位设置;(5)与单片机引脚P2.1相连接的按键S2的功能是:在设置时间,车轮周长和最大速度时,使数字加1;(6)与单片机引脚P2.2相连接的按键S3的功能是:在设置时间,车轮周长和最大速度时,使数字减1;显示单次里程时清零;(7)与单片机引脚P2.3相连接的按键的功能是:更设置完成确认退出;进入单次里程显示界面;(8)单片机引脚P2.4与报警相连接。4.系统软件设计由以上硬件设计的完成,随后与之相对应的设计软件部分。将所需要的功能设置需求以软件的形式表现出来。在软件设计这部分,采用的是模块结构设计的形式,将各个功能分成许多的小功能模块,然后根据各个模块来具体编写软件程序。模块结构设计的方法,简单具体的显示了各个部分的功能。所以,当某个功能出现问题时,就可以很快的有方向的寻找问题的根源,对于解决问题来说方便快捷。根据所要设计的速度里程表的功能,有以下软件设计流程图,如以下图5.1所示。由以上流程图可知,编程的基本思路为:由T0定时1秒,期间T1计算脉冲数,之后读取TH1和TL1的数值,算出圈数。因为车轮周长可知,又是1秒的时间,所以可以由圈数计算出速度,里程则由累加计算所得。然后就是将速度,里程,时间显示出来。可将这些编写成子程序的形式,在主程序中调用即可。其中,还有按键的控制,时间,车轮周长和最大速度设置,及报警等子程序编写。一、软件主程序的编写中主要是:(1)max=80;//初始超速值bikeside=100;//初始车轮的周(2)开中断,设置T0为计数模式,T1为计时模式;T1用于计算脉冲数,初值设置为0;T0设置50ms产生一次中断,初值设置为TH0=(65536-50000)/256;//定时器T0高8位赋初值TL0=(65536-50000)%256;//定时器T0低8位赋初值在中断中设置累计满20次,即满1秒后关闭T0和T1,读取圈数:freq=(TH1*256+TL1)/8.0;//读取圈数值并将T0的初值赋值回去返回;(3)计算速度:v=freq*(bikeside*36/1000);//计算速度,一圈的长度为“bikeside”单位为cm,并将其单位化为km/h;计算里程s=s+v*1/36;//计算总路程,36本来是3600,为演示效果,改为36,放大了100倍(4)其中还有显示子程序,按键控制的时间设置,最大速度设置,车轮周长设置等子程序的调用;二、特殊功能位的声明:sbitt=P2^0;//调时按键移位sbitjia=P2^1;//加一按键sbitjian=P2^2;//减一按键sbitm=P2^3;//退出调时按键sbitBEEP=P2^4;//蜂鸣器sbitE=P1^2;//1602使能引脚sbitRW=P1^1;//1602读写引脚sbitRS=P1^0;//1602数据/命令选择引脚三、LCD液晶显示命令函数,数据函数及初始化函数:(1)命令函数:voidwrite_instruction(ucharx){RS=0;RW=0;P0=x;E=1;delay(3);E=0;}(2)数据函数:voidwrite_data(ucharx){RS=1;RW=0;P0=x;E=1;delay(3);E=0;}(3)初始化函数:voidLCD1602_init(void){write_instruction(0x01);//数据指针清零write_instruction(0x38);//16x2显示,5x7点阵,8位数据接口write_instruction(0x06);//写一个字符后,指针加1write_instruction(0x0c);//开显示,不显示光标,光标不闪烁E=0;}四、显示函数:(1)速度显示函数:voiddisplay_v(uchary,uintx){uintb,s,g;b=x/100;//取百位s=(x%100)/10;//取十位g=x%10;//取个位//写显示地址,将在第1行第1列开始显示write_t(y,b);//将百位数字的字符常量写入LCDwrite_t(y+1,s);//将十位数字的字符常量写入LCDwrite_t(y+2,g);//将个位数字的字符常量写入LCD}(2)里程显示函数:voiddisplay_s(uintx){uintw,q,b,s,g;w=x/10000;//取万位q=(x%10000)/1000;//取千位b=((x%10000)%1000)/100;//取百位s=(((x%10000)%1000)%100)/10;//取十位g=(((x%10000)%1000)%100)%10;//取个位//写显示地址,将在第1行第1列开始显示write_t(0xc0,w);//将万位数字的字符常量写入LCDwrite_t(0xc1,q);//将千位数字的字符常量写入LCDwrite_t(0xc2,b);//将百位数字的字符常量写入LCDwrite_t(0xc3,s);//将十位数字的字符常量写入LCDwrite_t(0xc4,g);//将个位数字的字符常量写入LCD}由于程序太长就不一一列出,以上列出较为重要的程序。结束!谢谢观赏!
本文标题:光电式电动车速度里程表--答辩PPT
链接地址:https://www.777doc.com/doc-5791837 .html