电动车跷跷板报告.docx_第1页
电动车跷跷板报告.docx_第2页
电动车跷跷板报告.docx_第3页
电动车跷跷板报告.docx_第4页
电动车跷跷板报告.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

电动车跷跷板报告【摘要】:本系统采用遥控电动小汽车改装而成,主要由89C52和模拟电路为核心器件,实现对智能电动车行驶的自动控制。整车长23 厘米,宽5厘米,运行性能良好,符合设计要求。电动车平衡检测使用倾角传感器。电动智能小车电路由平衡检测电路、计时显示电路、电机驱动电路等组成,它不需要遥控就能按要求行走。一、方案的选择与论证 根据题目要求,系统可以以划分为几个基本模块,如图1.1所示键盘检测平衡检测单片机电机驱动显示电路图1.11、步进电机驱动调速模块方案一:采用与步进电机相匹配的成品驱动装置。使用该方法实现步进电机驱动,其优点是工作可靠,节约制作和调试的时间,但成本很高。方案二:采用集成电机驱动芯片LA298。采用该方法实现电路驱动,简化了电路,控制比较简单,性能稳定,但成本较高。方案三:采用互补硅功率达林顿管ULN2003实现步进电机的驱动。采用该方法实现步进电机的驱动,电路连接比较简单,工作也相对可靠,成本低廉,技术成熟。基于上述理论分析,最终选择方案三。2、平衡检测模块方案一:采用精密的倾角传感器,这种传感器对应每个角度输出一个固定电流。可以实现精确控制,但价格昂贵。方案二:采用简易的倾角传感器,它直接输出一个开关量。当其与地面垂直时,两触点断开;若倾斜角度超出一定范围,两触点短接。这种传感器价格低廉,使用方便。基于上述分析,最终选择方案二。3、显示模块方案一:采用数码管显示。数码管具有经济、低功耗、耐老化和精度比较高等优点,但它与单片机连接时,需要外接存储器进行数据锁存。此外,数码管只能显示少数几个字符。方案二:采用LCD进行显示。LCD具有功耗低、无辐射、显示稳定、抗干扰能力强等特点,而且可以显示汉字。考虑到本次设计的人性化设计,综合考虑,决定采用方案二。4、电源选择考虑到本次设计对电源的要求,我们采用四节1.5V的干电池作为供电电源。二、系统的具体设计与实现系统的组成及原理框图如图所2.1示。以下分为硬件和软件两个方面进行具体分析。89C52液晶显示电机驱动平衡检测键盘检测图2.1系统框图1、 系统的硬件设计 (1) 步进电机驱动模块的电路设计与实现具体电路如图2.2图2.2步进电机驱动电路步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)(2) 平衡检测电路的设计平衡检测采用简易式倾角传感器,输出为开关量,可直接与单片机端口连接。(3) 显示电路的设计显示电路采用液晶显示。显示占用端口少,程序简单,稳定可靠。2、系统的软件设计单片机控制电路由一片89C52组成,作为整个控制部分的核心,它负责平衡检测、电机驱动、数据显示等功能。(1) 步进电机驱动程序程序见附录(2) 平衡检测程序由于采用简易的倾角传感器,单片机端口得到的是开关量。首先第一阶段让小车走到中点C,第二阶段小车先检测是向前倾还是向后倾,如果小车检测到向前倾,则小车继续向前走一段距离S,如果小车检测到向后倾,则小车向后走S/2的距离,一直这样知道找到平衡位置。由于在前进状态时,在达到平衡状态时需要停止5S,而在退回状态则不必停车。因此,在判断小车达到平衡状态后,还需要判断小车状态,以决定是否停车。平衡检测流程图(3) 显示程序显示程序比较成熟,可移植性好。这里就不再介绍它的流程图三、总结由于小车是在玩具小车的基础上进行改装的,机械结构改造困难,不容易实现精确定位安装,影响传动效果。小车改装以后,由于车身强度和车轮的原因,承载电池组等重物时,爬坡,转向困难。由于平衡检测装置过于灵敏、小车的惯性、程序控制等缺陷,小车很难在平衡位置准确停止。四、主要程序附录uchar code F_Rotation=0xc9,0xc1,0xc3,0xc2,0xc6,0xc4,0xcc,0xc8;/正转表格,前灯亮uchar code B_Rotation=0x38,0x3c,0x34,0x36,0x32,0x33,0x31,0x39;/反转表格,后灯亮void RunXCircle(uchar drec,uint num)/轮子跑num圈,drec为0向前,为1向后 uchar i; uint j; while(num-) j=OneCircle; while(j-) for(i=0;i8;i+) /4相 if(!drec) P1=F_Rotationi; /输出对应的相,可以自行换成反转表格 else P1=B_Rotationi; Delay(speed,110); /改变这个参数可以调整电机转速 P1=0xf0;/停止行走,灯熄灭void RunNCircle(uchar drec,uint num)/轮子转num个最小单位,drec为1向前,为0向后 uchar i; while(num-) for(i=0;iUpAngle) result=0;/小车向前翘起,需要向前走 else if(angleDownAngle) result=1;/小车向后翘起,需要向后走 else result=2;/小车平衡 return result;小车前进后退的驱动程序,可以准确地向前或者向后跑固定距离:void RunFwodBak(uchar drec,uchar jour)/drec为方向,0向前,1向后,jour为路程,单位是cm RunXCircle(drec,jour/LCircle);/先跑完整圈 RunNCircle(drec,(jour%LCircle)*OneCircle/LCircle);/再跑半圈void RunFind() uchar delt=0,flag=0; uint jour=FirstJour; TR1=1;/开时钟让AD工作 for(delt=DeltFind();delt=DeltFind() if(delt=2) Delay(SAOMIAO,110); delt=DeltFind(); if(delt=2) WriteCommond(0x86); WriteString( balanced!); Delay(5000,110); break; if(delt!=flag) jour/=2; if(!jour) WriteCommond(0x86); WriteString( Failed!); Delay(3000,110); break; RunNCircle(delt,jour); flag=delt; Delay(SAOMIAO,110); TR1=0;/关时钟小车跑动时界面显示和小车流程程序:void MenuRun() WriteCommond(0x0c);/不显示光标也不闪烁 WindowRun(); count0=0; count1=0; count2=0; count3=0; TR0=1;/开定时器 DispTimeS(count0+count1+count2+count3,0xc3); for(;step4;step+) timecount=0; WriteCommond(0x81); WriteData(step+1+0); WriteCommond(0x86); WriteString(Running.); DispTimeS(countstep,0xcc); switch(protypestep) case 0:RunFwodBak(0,journeys

温馨提示

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

评论

0/150

提交评论