智能小车速度测量控制系统设计_第1页
智能小车速度测量控制系统设计_第2页
智能小车速度测量控制系统设计_第3页
智能小车速度测量控制系统设计_第4页
智能小车速度测量控制系统设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 毕业教学环节成果(2012 届)题 目 智能小车速度测量控制系统设计学 院 信息工程学院 专 业 电气自动化技术 班 级 学 号 姓 名 指导教师 2012年5月17日目 录摘要1英文摘要1引言21方案设计与论证31.1 主控系统31.2 电机驱动模块31.3 测速模块41.4 显示模块42 系统的硬件电路42.1 总体设计42.2 单片机控制系统设计52.3 电机驱动电路设计62.4 LCD显示电路设计72.5 键盘电路设计82.6 测速电路设计82.7 电源电路设计83 系统软件设计93.1 测速程序103.2 显示程序104 调试12结论与谢辞13参考文献14附件1程序清单15附件2整

2、体原理图23智能小车速度测量控制系统设计信息工程学院电气自动化专业 摘要: 智能小车以STC12C5410AD单片机为控制核心,L298芯片作为双电机驱动模块,由单片机输出PWM控制电机转速,通过光电编码器检测脉冲并将信号送入单片机来测量电机的转速与距离,通过1602液晶来显示小车的速度。本文介绍了该小车的的主控、电机驱动、电源、显示模块等硬件模块和小车的运动控制速度测量与显示的软件设计。关键词:STC12C5410AD 1602LCD PWM 光电编码器Intelligent Vehicle Speed Measurement Control System DesignAbstract: C

3、ar STC12C5410AD single chip microcomputer intelligent to as control core, L298 chip as double motor driver module, output by single-chip microcomputer control PWM motor speed, through the photoelectric encoder and will signal detection pulse to single chip microcomputer to measure motor speed and di

4、stance, through 1602 LCD to display the speed of the car. This paper introduces the main control of the car, motor drive, power supply, display module and other hardware module and a car movement control speed measurement and display software design.Keywords: STC12C5410AD 1602LCD PWM Photoelectric e

5、ncoder引言近年来,随着我国经济建设的高速发展,机动车辆拥有量也在急剧增长,交通事故也日益增多,车辆超速成为了越来越严重的问题。而我国生产的汽车、摩托车电机转速测量系统大多使用动圈式模拟测速。这种测量系统存在精度差、过载能力弱等缺点。本系统是以STC12C5410AD单片机为控制核心,通过L298芯片控制电机转速,用光电编码器来检测脉冲再将信号送入单片机来测量电机的转速并使用1602液晶来显示小车的速度。1 方案设计与论证根据要求,确定如下方案:整个小车系统主要由三轮结构小车、供电电源电路、测速电路、电机驱动电路以及显示电路组成。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠

6、,精度高,可满足对系统的各项要求。1.1 主控系统根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。据此,拟定了以下两种方案并进行了综合的比较论证,具体如下:方案一:选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在控制上较单片机有较大的劣势。同时,CPLD的处理速度非常快,而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU就已经可以胜任了。若采用该方案,必将在控制上遇到许许多多不必要增加的难题。为此,我们不采

7、用该种方案,进而提出了第二种设想。方案二:采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的运动控制,而在这一点上,单片机就显现出来它的优势控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。针对本设计特点多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用STC12C5410AD单片机,充分利用单片机的资源。1.2 电机驱动模块方案一:采用继电器对电动

8、机的开或关进行控制,通过开关的切换对小车的速度进行调整,此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。方案二:采用由集成了双极性管组成的H桥电路芯片L298N。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H桥电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也很高,是一种广泛采用的调速技术。综合两种方案的优缺点,决定选择方案二。1.3 测速模块在电机测速中,考虑了两种方案:一种是使用光电码盘,即透射式光电传感器(凹槽型,类似老式鼠标),另一种是霍尔传感器(适合较高

9、速度)。两种方案的主要区别如表1-1:表1-1 速度检测系统方案对比霍尔传感器关电码盘抗干扰性较强强实时性较好好易用性需和磁钢配对使用,较麻烦较简单由上表可以看出光电码盘在各方面都具有一定的优势,因此本设计采用关电码盘测速。1.4 显示模块系统采用1602液晶显示,它可以显示2*16个字符,同时只用11个I/O端口,它不仅节省了单片机的资源,相比较数码管液晶显示更加直观、节能,同时在硬件上面液晶的驱动电路比数码管简单的多,故采用LCD显示。图1-2 1602字符型液晶显示2 系统的硬件电路2.1 总体设计小车本体用有机玻璃制作,有两部分组成,长方体长20cm,宽17cm,半圆为直径为17cm,

10、车架用于支撑控制板、供电电源等。车体总结构有3个轮子组成,前面两个带有电机驱动,电机的型号为PITTMAN直流测速电机0585,具体参数为电压:4-150V 功率:4-200w,电机减速比为1:74,减速后电机的转速为100r/min;后面一个为万向轮,在底板的正中间安装各块电路板(有主板、电机驱动以及显示板)。搭建小车自行本体,采用左右两轮分别驱动,即左右两轮分别采用两个转速和力矩基本相同的减速进行驱动,车子的后面安装一个万向轮。图2-1 主板设计框图2.2 单片机控制系统设计采用STC12C5410AD单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。图2-2 STC

11、12C5410AD单片机STC12C5410AD是通过串口连接到PC机进行在线程序编译的。由于电脑串口RS232电平是+10v、-10v,而一般的单片机应用系统的信号电压是TTL电平0、+5v,MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平MAX232,用来进行电平转换。本设计MAX232芯片及其功能电路,如图2-3所示:图2-3 单片机MAX232芯片及接口电路通过串口与计算机相连,使用STC-ISP软件实行在线程序烧写。电路连接部分如图所示。 MAX232芯片通过两管脚与单片机RXD

12、、TXD端相连,以实现向单片机内部传递程序。基本工作过程:发送时MCU的TXD(TTL电平)经过MAX232的11(T1IN)送到MAX232内部,在内部TTL电平被提升为232电平,通过14(T1OUT)发送出去,接收时外部232电平经过MAX232的13(R1IN)进入到MAX232的内部,在内部232电平被降低为TTL电平,经过12(R1OUT)送到MCU的RXD,进入MCU内部。2.3 电机驱动电路设计系统采用两个直流电机,实现正反转、加减速功能,所以需要使用四个功率元器件的H桥电路,L298是SGS公司的产品,内部包含4通道逻辑驱动电路,即内含二个H桥的高电压大电流双向桥式驱动器,接

13、收标准TTL逻辑电平信号,可驱动46V、2A以下的电机,所以根据实际需要选择了L298N芯片。 驱动电路的设计如图2-4所示:图2-4 L298N驱动电路L298N的IN1、IN2、1IN3、IN4四个引脚接到单片机上,通过对单片机的编程就可以实现两个直流电机的PWM调速以及正反转等功能。电机转动状态编码如表2-5所示:表2-5 电机转动状态编码左电机右电机左电机右电机电动车运行状态1IN11IN22IN12IN21010正转正转前行1001正转反转左转1000正转停以左电机为中心原地左转0110反转正转右转0010停正转以右电机为中心原地右转0101反转反转后退1111杀停杀停立刻停止2.4

14、 LCD显示电路设计液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点得到广泛的利用,本模块将RS、RW、E分别接到单片机14、15、16引脚,RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器;RW为读写信号线,高电平为读操作,低电平为写操作;E端为使能端,由高电平跳为低电平时液晶执行命令。714号脚即D0D7为8位双向数据线;1脚接地电源,2脚接+5v电源;3脚为液晶显示器对比度调整。在其右边加一个上拉排阻。如图2-6所示:图2-6 1602液晶显示模块2.5 键盘电路设计系统用到的是独立按键,连接后将其接到单片机STC12C5410 I/O端口P1.0P1.3口

15、,S1为总控制按钮即启动按钮,S2为停止,可将小车停止运行;S3为加速功能,可改变占空比来提升电机的转速;S4为减速功能,可减小占空比起到减速作用。如图2-7所示:图2-7 独立按键2.6 测速电路设计系统为了达到小车速的精确测量,采用的是光电码盘设计的方法,基本的原理:当发射管光照射到接收管时,接收管导通,反之关断。为此,将制作好的码盘安装在转轴上,当码盘上扇叶经过时便会产生脉冲信号,测速电路原理图如图2-8所示,编码盘如图2-9所示。 图2-8 光电传感器开关原理图 图2-9 测速编码盘2.7 电源电路设计系统采用12伏转5伏的电源电路,将+5V电源供给单片机;另外因直流电机的驱动电压是1

16、2V,所以使用12伏的直流电源电池供给电机。电路的设计如图2-10所示:图2-10 电源电路3 系统软件设计根据课题任务的主要内容,整个系统软件由初始化程序、转速控制及显示小车转速测量构成。程序基本结构图如图3-1所示。转速控制程序:通过独立按键来调节占空比从而实现加速、减速、启动及停止功能。显示子程序:采用红外对管RP220检测小车速度。用LCD1602液晶的读写显示小车的当前转速。实现小车显示转速测量功能。转速测量程序:用定时中断计脉冲数,然后再经过数据处理,计算出速度与距离,实现测速测距功能。图3-1 程序基本结构图3.1 测速程序转速测量程序:测速是否为高电平,如果是就置标志位为1,不

17、是则判断标志位是否为高电平,如果是,标志位清零,脉冲数加1,不是则返回。定时1S储存脉冲数,脉冲数清零,速度计算处理。速度处理程序流程图如图3-2所示,脉冲检测及计数程序流程图如图3-3所示。智能小车两轮同轴上装有一个12个齿的机械齿轮。车轮的周长L可以测得,因为一周有12个齿产生12个脉冲,所以可算得接收到一个脉冲车轮实际走的长度L1=L/12。如果1秒后单片机接收到脉冲的个数为N,就可以计算智能小车行驶了的距离S=N*L1。因为是1秒走过的距离,所以S的值也就等于速度V的值,实现小车转速测量,即:V=S/T=N*L1=N*L/12=N*2r/12=N*2*3.14*0.03/12=0.01

18、57Nm/s=0.05652Nkm/h; 图3-2速度处理程序流程图 图3-3脉冲检测及计数程序流程图3.2 显示程序 小车转速测量及里程显示程序:采用红外对管RP220检测小车速度。用LCD1602液晶的读写显示小车的当前转速和里程,显示内容如图3-4所示: 图3-4 显示内容实现小车显示转速测量及里程功能。显示程序的流程图如表3-5所示:表3-5 显示存储单元分配表显示地址显示内容存储单元80HS-81HP-82HE-83HE-84HD-85H:-86H速度个位36H87H小数点37H88H速度小数点后百位38H89H速度小数点后十位39H8AH速度小数点后个位3AH8BHM-8CH/-8

19、DHS-0C0HT-0C1HR-0C2HA-0C3HV-0C4HE-0C5HL-0C6H:-0C7H距离百位47H0C8H距离十位48H0C9H距离个位49H0CAH小数点4AH0CBH距离小数点后百位4BH0CCH距离小数点后十位4CH0CDH距离小数点后个位4DH0CEHM4EH显示程序的存储单元地址分配如图3-6所示:图3-6 显示程序的流程图4 调试能在小车行驶的时候显示运行速度,能基本正确的按照按键指令进行启动、左转、右转、停止,在调试时发现通过烧坏单片机,通过排查发现是编程问题,通过不断调试可以基本达到课题要求。结论与谢辞时间总是过得很快,在不经意间,大学三年的学习和生活也即将随着

20、毕业设计的完成而画上一个句号,而这也将成为日后的一段美好的回忆。模拟电路和数字电路知识,涉及到了单片机、AD转换器、显示器等多种器件。是对大学期间所学知识的一次综合的应用,是一个知识融会贯通的过程。此外,由于课题要求制作实物,在考察所掌握专业知识的同时也对自身的动手能力提出了挑战。本系统的设计过程并非一帆风顺,刚开始接触这个课题时,心中并没有一个清晰的框架,通过翻看手册与查阅相关资料后,我渐渐有了设计的思路,对于系统所要用到的元器件类型也有了一定程度的了解。本设计能够顺利完成,还承蒙老师以及身边的很多同学的指导和帮助。在设计过程中,老师给予了悉心的指导,最重要的是给了我解决问题的思路和方法,并

21、且在设计环境和器材方面给予了大力的帮助和支持,在此,我对马老师表示最真挚的感谢!同时感谢所有帮助过我的同学!参考文献1 何小艇.电子系统设计M.浙江大学出版社,2005,2:1721.2 郭健华.数字电子技术与实训教程M.人民邮电出版社,2007,11:7679.3 杜小平,契桂花,雷道振. 单片机初级教程单片机基础M.北京航空航天大学出版社, 2006,5:1115.4 楼然苗,李光飞. 51系列单片机设计实例M.北京航空航天大学出版社, 2008,6:12175 范立南,谢子殿.单片机原理及应用教程M.北京大学出版社,2006,3:6568.6 胡健.单片机原理及接口技术实践教程M.机械工

22、业出版社,2004,4:3335.7 黄惠媛,李润国.单片机原理与接口技术M.海洋出版社,2006,7:4346.附件1程序清单#include#include/*/变量的定义/*sbit RS=P26; sbit RW=P25; sbit E=P27; sbit BF=P07; unsigned char code digit=; /定义字符数组显示数字unsigned int v; /储存电机转速unsigned char count; /储存定时器T0中断次数bit flag; /计满1秒钟标志 unsigned int k=4000, /定时变量 定时:250us*kunsigned

23、char datapacket,count=0;sbit remotein=P32;unsigned char decode_counter=0x00;char n_1=0,n_2=0,n_3=0,n_4=0;/用于显示字符的选择sbit P2_0=P20;sbit P2_1=P21;sbit P2_2=P22;sbit P2_3=P23;sbit spk=P24; /spk 为蜂鸣器使能void delay1ms()/函数功能:延时1msunsigned char i,j;for(i=0;i10;i+)for(j=0;j33;j+) ; /*/void delay(unsigned char

24、 n)/延时若干毫秒unsigned char i;for(i=0;in;i+)delay1ms();/*/unsigned char BusyTest(void)/判断液晶模块的忙碌状态bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1; /E=1,才允许读写_nop_(); /空操作_nop_();_nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间result=BF; /将忙碌标志电平赋给resultE=0; /将E恢复低电平return result; /*/void WriteInstruction (unsig

25、ned char dictate)/将模式设置指令或显示地址写入液晶模块 while(BusyTest()=1); /如果忙就等待RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0_nop_();_nop_(); /空操作两个机器周期,给硬件反应时间P0=dictate; /将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=1; /E置高电平_nop_();_nop_();_

26、nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*/void WriteAddress(unsigned char x)/指定字符显示的实际地址WriteInstruction(x|0x80); /显示位置的确定方法规定为80H+地址码x/*/void WriteData(unsigned char y)/将数据(字符的标准ASCII码)写入液晶模块while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据RW=0;E=0; /E置低电平(根据表8-6,写指令时,E为高脉

27、冲, / 就是让E从0到1发生正跳变,所以应先置0P0=y; /将数据送入P0口,即将数据写入液晶模块_nop_();_nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间E=1; /E置高电平_nop_();_nop_();_nop_();_nop_(); /空操作四个机器周期,给硬件反应时间E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*/void LcdInitiate(void)/对LCD的显示模式进行初始化设置delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38

28、); /显示模式设置:162显示,57点阵,8位数据接口delay(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x38);delay(5);WriteInstruction(0x38); /连续三次,确保初始化成功delay(5);WriteInstruction(0x0c); /显示模式设置:显示开,无光标,光标不闪烁delay(5);WriteInstruction(0x06); /显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除delay(5);/*/void displ

29、ay_sym(void)/显示速度提示符WriteAddress(0x00); /写显示地址,将在第1行第1列开始显示WriteData(v); /将字符常量v写入LCDWriteData(=); /将字符常量=写入LCD /*/void display_val(unsigned int x)/显示速度数值 unsigned char i,j,k,l; /j,k,l分别储存温度的百位、十位和个位i=x/1000; /取千位j=(x%1000)/100; /取百位 k=(x%100)/10; /取十位 l=x%10; /取个位 WriteAddress(0x02); /写显示地址,将在第1行第3

30、列开始显示WriteData(digiti); /将千位数字的字符常量写入LCDWriteData(digitj); /将百位数字的字符常量写入LCDWriteData(digitk); /将十位数字的字符常量写入LCDWriteData(digitl); /将个位数字的字符常量写入LCD /*/void display_unit(void)/显示速度单位“r/min” WriteAddress(0x06); /写显示地址,将在第2行第7列开始显示WriteData(r); /将字符常量r写入LCDWriteData(/); /将字符常量/写入LCDWriteData(m); /将字符常量m写

31、入LCDWriteData(i); /将字符常量i写入LCDWriteData(n); /将字符常量n写入LCD void Time0(void ) interrupt 1 using 1 /定时器T0的中断编号为1,使用第1组工作寄存器count+; /T0每中断1次,count加1if(count=20) /若累计满20次,即计满1秒钟 flag=1; /计满1秒钟标志位置1 count=0; /清0,重新统计中断次数 TH0=(65536-10)/256; /定时器T0高8位重新赋初值TL0=(65536-10)%256; /定时器T0低8位重新赋初值 void run_key();void delay_small(unsigned int n)while(n)n-;void ahead(unsigned int n) /(min)n=300 P1_4=0;P1_6=0;P1_5=1;P1_7=1;P1_4=1;P1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论