07年电子设计竞赛电动车跷跷板(悬挂运动控制系统).doc
- 格式:doc
- 大小:414.00 KB
- 文档页数:22
第八届全国大学电子设计竞赛(2007年)电动车跷跷板摘要:本设计中的电动车跷跷板运动控制系统以AVR系列单片机为控制核心,带光电编码器的伺服电机作为受控执行机构,能够精确的控制速度,快速到达指定位置。
利用陀螺仪与SCA103T倾角传感器,能精确测量跷跷板的倾斜度。
采用红外对管检测地面及跷跷板上的引导线,确保电动车不偏离跷跷板。
同时还具有良好人机交互界面。
系统采用基于变速积分式PID控制理论的伺服电机控制算法。
本设计的算法简洁优化,电机控制稳定可靠,很好地完成了设计各项要求。
关键词:运动控制 AVR单片机伺服电机 PID算法倾角传感器Abstract:In this design electric car seesaw movement control system take the AVR series MPU as the control core,brings the increase type photoelectricity encoder the servo electricalmachinery achievement to receive controls the implementing agency, canthe precise control speed, fast arrive assigns the position. Using thegyroscope and the SCA103T inclination angle sensor, can the precisionmeasuring seesaw gradient. Uses infrared examines on the ground andthe seesaw to the tube . Simultaneously also has the goodman-machine interactive contact surface. The system uses based on thespeed change integral PID control theory servo electrical machinerycontrol algorithm. This design algorithm succinct optimization, theelectrical machinery control stable is reliable, completed well hasdesigned each request.Keywords: motion control ;AVR single chip; PID algorithm; servomotor ; algorithm inclination angle sensor(一)系统方案1.1 实现方法本设计以检测引导线的方式,使电动车不偏离跷跷板。
基于PID算法的电动车跷跷板系统设计聂晓凯中南大学信息科学与工程学院,长沙(410083)E-mail:kasaos@摘要:本系统采用P89V51RD2单片机作为控制系统的核心,采用步进电机作为电动车驱动电机,以L298为驱动芯片,配以舵机改变转向,使用角度传感器检测跷跷板的角度变化,在车的前后端设计了红外黑线检测模块保证电动车顺利驶上板以及在板上笔直行驶,红外光电码盘通过脉冲计数确定电动车在板上的位置,红外遥控键盘启动系统开始运行,液晶显示相关参数信息。
系统的平衡调节采用了数字PID控制算法,利用凑试法整定PID参数,通过角度传感器所测角度变化来控制步进电机的的转动实现跷跷板达到平衡状态。
关键词:P89V51RD2单片机,PID,角度传感器中图分类号:TP2712007年全国大学生电子设计竞赛的一道控制类的题目是电动车跷跷板问题,本系统设计要求电动车能够在规定时间内到达跷跷板的中心点C处,并保持平衡,随后电动车到达跷跷板的末端B处,停留之后返回始端A处。
另外,如果将跷跷板配重,则要求跷跷板在规定范围内驶上板,同时,也能实现平衡,如果再加一块重物之后跷跷板重新达到平衡。
本系统的设计在本文中采用了数字PID控制算法来实现。
1 系统方案设计、比较与论证1.1 总体方案设计论证本系统采用P89V51RD2单片机作为控制系统的主模块,实现系统控制与信号检测,如图1-1所示系统框图。
主要包括单片机模块,驱动电机模块,舵机模块,平衡检测模块,寻线模块,位置检测模块,液晶显示模块以及红外遥控模块。
图 1-1 系统框图系统通过平衡检测来判断电动车是否处于平衡状态,使电动车停留在C处附近,采用位置检测使电动车行驶至B处停止,采用寻黑线方法使电动车直线前行以及由末端B处能够直线后退到始端A处。
红外遥控启动系统,液晶显示各阶段用时以及温度时间。
在配重情况下通过黑线检测的方法使电动车在规定区域内的任意指定位置顺利驶上跷跷板。
2007年全国大学生电子设计竞赛F题电动车跷跷板设计报告摘要本系统是以单片机AT89S52为核心,利用红外光电传感器,角度传感器以及他们的外围电路组成的测控系统,实现对在跷跷板上行驶的小车的运动状态的实时跟踪监测,由单片机对电动小车的位姿状态做出及时正确的反应,并输出相应的控制指令,经过驱动模块后由执行模块完成小车的爬行、减速、找出平衡位置并保持等一系列要求完成的整套动作。
关键词:步进电机;电动小汽车;控制AbstractThe system is at the core MCU AT89S52, using infrared photoelectric sensor, angle sensors and their external circuit composed of measurement and control system, in the seesaw of a car traveling on the state of real-time campaign tracking, MCU right by the electric trolley in state funding to timely correct response output control and the corresponding instructions, the driver module after module completed by the Executive car crawling, slow down, find balance and maintain the position, and a series of actions required to complete the package.Keywords: step motor; electronic automobile; control一、系统方案论证本系统采用的是AT89S52实现电动小车的寻迹、爬行、找平衡、返回,并达到时间上的精确控制与显示。
电动车跷跷板摘要本系统以freescale公司提供的DG128芯片作为核心控制芯片,且通过在白色衬底上贴一条长2.5cm的黑线作为小车的引导线,让小车在跷跷板上能稳定的行驶。
为实现题目所要求的功能,用角度传感器作为跷跷板角度反馈量,通过一定的算法控制小车的速度使小车能够在跷跷板上找到平衡点。
小车的设计包括如下几个模块:摄像头采集,角度传感器安装与采集,驱动和转向的控制,速度检测,液晶显示模块等。
一、系统方案(一)方案的论证与比较根据大赛题目的设计要求,跷跷板的尺寸规格已经在题目中规定好,只需按照规定自制一个就可,所以此次设计的主要精力放在小车的设计上。
1、小车的引导由于可以在跷跷板上加引导措施,受2003年简易智能小车启发,在跷跷板表面铺白色衬底,在中间贴2.5cm的黑线,用传感器检测中间黑线的位置即可使小车在板上能稳定的行驶。
方案一:红外管,即用红外管检测黑线,通过黑白线之间的电压值的变化识别黑线,此方案电路较为简单,处理数据也较简单,但是红外管受环境光的影响比较大,及容易出现偏离轨道等错误。
方案二:摄像头,受环境光影响比红外管小很多,但在光照很强的情况下也会有很大的影响。
但是由于这是室内的比赛,所以光照很强的情况可以不用太多考虑。
另一方面是摄像头照射范围宽并且广,所以采集的信息比红外管多,对黑线的识别更为精确和有效。
选取方案二。
2、驱动电路的选择采用专门的小功率电机驱动芯片MC33886,可用单片机PWM端口给直接控制,但一片发热量比较大,所以采用4片33886并联驱动,首先驱动能力加强,而且在不加散热片反压时的发热量也很低。
4片也有一定的缺点:一是所占面积比较大,二是对电池电压的损耗比较大。
3、检测角度传感器的选择由于小车需要在加重的情况下在木板上保持平衡,需要采用木板所倾斜的角度作为回馈量,理想状态下当木板的倾斜角度为0时表示木板已经平衡。
方案一:电位器电阻值法,即在电位器上挂一个重物,重物由于重力总是垂直与水平面,当角度变化时则可以带动电位器的中心抽头变化,从而通过电阻值变化计算出角度的变化。
电动车跷跷板海军航空工程学院(青岛) 邵慧李文超孙庆洲摘要本设计为使电动车在跷跷板上按要求准确运行采用了单片机AT89C51最小系统作为电动车的检测和控制系统。
通过红外发射接收一体探头检测路面黑色寻迹线,使小车按预定轨道行驶,根据角度传感器检测跷跷板的平衡状态控制电动车使其在跷跷板上达到动态平衡。
再加上基于AT89C51单片机的键盘、液晶显示电路,构成了整个系统的硬件总电路。
最后通过软件设计,实现了按预定轨道行驶、保持平衡等功能。
关键词:角度传感器平衡寻迹线红外发射接收一体探头AbstractIn order to let the Electromotion Dolly run on the teeterboard exactly, our design adopts SCM-AT89C51 least system as dolly's measure and control system. through examining the black trace by Infrared Ray Electopult-receiver,to make the dolly run on the prearrange orbit.the other, bases on Angle Transducer,SCM examines the balance state of the teeterboard to control the Electromotion Dolly reach to balance on the teeterboard.We also introduced the keyboard based on AT89C51 SCM and fluiding crystal revealing electrocircuit,which constituents the chief hardware electrocircuit of the entire system .Finally,the function is realized including run on the orbit ,keep balance,etc,using software designment.Key word: Angle Transducer,balance, black trace,Infrared Ray Electopult-receiver 1.系统方案设计、比较与论证根据题目的基本要求,设计任务主要完成电动车在规定时间内按规定路径稳定行驶,并能具有保持平衡功能,同时对行程中的有关数据进行处理显示。
电动车跷跷板报告电动车跷跷板报告【摘要】本系统采用遥控电动小汽车改装而成,主要由89C52和模拟电路为核心器件,实现对智能电动车行驶的自动控制。
整车长23 厘米,宽5厘米,运行性能良好,符合设计要求。
电动车平衡检测使用倾角传感器。
电动智能小车电路由平衡检测电路、计时显示电路、电机驱动电路等组成,它不需要遥控就能按要求行走。
一、方案的选择与论证根据题目要求,系统可以以划分为几个基本模块,如图1.1所示键盘检测平衡检测单片机电机驱动显示电路图1.1 1、步进电机驱动调速模块方案一采用与步进电机相匹配的成品驱动装置。
使用该方法实现步进电机驱动,其优点是工作可靠,节约制作和调试的时间,但成本很高。
方案二采用集成电机驱动芯片LA298。
采用该方法实现电路驱动,简化了电路,控制比较简单,性能稳定,但成本较高。
方案三采用互补硅功率达林顿管ULN2003实现步进电机的驱动。
采用该方法实现步进电机的驱动,电路连接比较简单,工作也相对可靠,成本低廉,技术成熟。
基于上述理论分析,最终选择方案三。
2、平衡检测模块方案一采用精密的倾角传感器,这种传感器对应每个角度输出一个固定电流。
可以实现精确控制,但价格昂贵。
方案二采用简易的倾角传感器,它直接输出一个开关量。
当其与地面垂直时,两触点断开;若倾斜角度超出一定范围,两触点短接。
这种传感器价格低廉,使用方便。
基于上述分析,最终选择方案二。
3、显示模块方案一采用数码管显示。
数码管具有经济、低功耗、耐老化和精度比较高等优点,但它与单片机连接时,需要外接存储器进行数据锁存。
此外,数码管只能显示少数几个字符。
方案二采用LCD进行显示。
LCD具有功耗低、无辐射、显示稳定、抗干扰能力强等特点,而且可以显示汉字。
考虑到本次设计的人性化设计,综合考虑,决定采用方案二。
4、电源选择考虑到本次设计对电源的要求,我们采用四节1.5V的干电池作为供电电源。
二、系统的具体设计与实现系统的组成及原理框图如图所2.1示。
电动车翘翘板(F题)设计报告摘要此电动车是由玩具小车改装而成,核心处理芯片为ATMEG8和AT89C2051单片机,传感器件有红外发射接收传感器和角度传感器。
ATMEG8是主控制芯片,控制整个电路,通过对分别置于前、后端的红外发射接收头和角度传感器信息进行采集和分析,使翘翘板在平衡时小车能够停止并发出声光信号作为平衡显示。
AT89C2051则主要控制数码管的显示,使车在行驶过程中能够实时显示时间,它通过串口与ATMEG8相连。
电动车采用双电源供电,即电机驱动、传感电路和数据处理电路分别用不同的电源供电,并且电机控制端口和单片机通过光耦连接,这样就减小了电机对单片机的噪声影响。
关键字双电源、光耦、角度传感器、巡线、电机控制、平衡控制、噪声抑制1.方案设计与论证1.1独立模块方案设计 1.1.1平衡控制部分方案一:如图1.1作标记使车在到达此处时自动停止,从而达到使跷跷板平衡的目的。
这种方法虽然简单,但不确定因素很多,平衡位置不定。
方案二: 把角度传感器安装在半圆形轴上,角度测量部分与板相连,利用无线通信,把传感器测的角度实时反馈给单片机,使小车在平衡位置附近寻找平衡点,当角度信息处于平衡范围内且变化率符合平衡要求时,小车停止。
此方案保证了传感器的稳定性和测量精度,但无线通信易受外界信号干扰,且实时性难以实现。
方案三:角度传感器安装在车上,其它与方案二相同。
虽然角度传感器会受到车运动时振动的影响 ,但当车速很低时,扰动也会很低。
因此我们选择第三种方案。
1.1.2上板控制 方案一:采用摄像头进行图像的采集,并利用单片机进行图像分析来找到跷跷板,并通过电机的控制使小车顺利上板。
这种方法实现了电动车的自动导向,智能程度很高,但技术要求太高,所需器件价格昂贵且在短时间内很难实现。
方案二:通过在扇形区域内贴引导黑线,通过车前端的三个红外发射接收管给单片机输入信号,然后单片机控制前轮转向舵机调整方向,使小车能够沿黑线顺利上板。
电动车跷跷板的设计与制作摘要:本系统采用80C51单片机作为电动车行进系统、跷跷板平衡系统的监测和控制核心,通过机界面对电动车所作运动进行设定。
利用水银开关检测跷跷板两端位置实现对跷跷板平衡的测定;无线控制模块控制电动车行进,实现电动车行进系统与跷跷板平衡系统的协调一致;通过LCD实现显示电动车行进时间。
在符合题目要求基础上本系统还具有可自动寻迹实现稳定行进、语音提示等功能。
关键词:80C51单片机、水银开关、无线控制模块、LCD、自动寻迹、语音提示1.前言创新是科技发展的动力,我们认为一项成功的制作,必须在符合题目要求的基础上有所创新。
而“符合要求”主要是指在精度上。
要符合精度的要求,不一定要用昂贵的电子元件。
使用巧妙的方法用廉价的电子元件同样可以实现对精度的要求。
用更少的成本实现同样的功能,既是智慧的体现又能为使用将来适应市场经济打下基础。
所以我们的追求就是创新、精确与追求方法。
2.方案论证由:控制器模块、信息传输模块、电源模块、寻迹传感器模块、平衡测定模块、末端距离测定模块、电机驱动模块、计时模块、数据显示模块、语音提示模块构成。
本系统的结构图如图1所示:为最好的实现各模块的功能,满足设计要求。
我们分别设计了几种方案并分别进行了论证。
图1 系统结构图2.1控制器模块方案1:采用凌阳公司的16位单片机,它是16位控制器,当凌阳单片机应用语音处理和辨识时,由于其占用的CPU资源较多而使得凌阳单片机同时处理其它任务的速度和能力降低。
方案2:采用STC89C51单片机作为主控制器。
STC89C51是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有128 bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。
且该系列的51单片机可以不用烧写器而直接用串口或并口就可以向单片机中下载程序。
我们自己制作51最小系统板,体积很小,下载程序方便,放在车上不会占用太多的空间。
电子大赛二等奖悬挂运动控制系统部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑悬挂运动控制系统[2005年电子大赛二等奖]文章来源:凌阳科技教育推广中心作者:广西师范大学黄钦宁李树海莫琼华发布时间:2006-8-30 11:43:34摘要:本系统采用凌阳16位单片机SPCE061A作为控制中心,由直流步进电机、红外收发对管、4*4键盘及中文液晶显示屏构成的悬挂运动控制系统。
该系统能自由控制悬挂物体完成自行设定运动、画圆运动、沿黑线运动等,并能正确显示物体到达的坐标位置。
关键词:SPCE061A单片机中文液晶显示屏逼近画圆算法一、方案的选择与论证1、单片机选择方案一:采用传统的8位89C51单片机作为运动物体的控制中心。
51 单片机具有价格低廉,使用简单等特点,但其运算速度低,功能单一,RAM、ROM空间小等缺点。
本题目在确定圆周坐标值时,需要进行大量的浮点数运算,若采用89C51需要做RAM,ROM来扩展其内存空间,其硬件工作量必然大大增多。
方案二:采用16位单片机SPCE061A作为运动物体的控制中心。
SPCE061A具有丰富的资源:RAM,ROM空间大、指令周期短、运算速度快、低功耗、低电压、可编程音频处理,易于编写和调试等优点。
尤其在复杂的数学运算,其运算速度快,精度高,在控制步进电机时运行速度比一般51单片机快。
基于上述分析,拟选择方案二。
2、电动机选择方案一:用步进电机实现物体的精确定位和方向控制。
步进电机是一种脉冲控制电机,它是一种能将脉冲信号转换为角位移的数模转换器,可广泛用于无需反馈控制但要求有精确位置的场合。
方案二:采用带旋转编码器控制直流电机,电机运转平稳,精度可以得到保证。
但其驱动电路复杂,在短时间内难与实现。
在本题中因考虑到控制画笔画图准确性和电路的复杂性,拟选择选用方案一,并采用控制性能高的步进电机来控制运动物体。
3、控制物体运动算法方案一:直线插补法。
直线插补法是在绘图系统中常用的一种逐点比较算法。
2007年全国大学生电子设计竞赛题目A 音频信号分析仪(html文件,Doc文件)B 无线识别(htm文件,Doc文件)C 数字示波器(htm文件,Doc文件)D 程控滤波器(htm文件,Doc文件)E 开关稳压电源(htm文件,Doc文件)F 电动车跷跷板(htm文件,Doc文件)G 积分式直流数字电压表(htm文件,Doc文件)H 信号发生器(htm文件,Doc文件)I 可控放大器(htm文件,Doc文件)J 电动车跷跷板(htm文件,Doc文件)2007年全国大学生电子设计竞赛试题参赛注意事项(1)2007年9月3日8:00竞赛正式开始。
本科组参赛队只能A、B、C、D、E、F题目中任选一题;高职高专组参赛队原则上在G、H、I、J题中任选一题,也可以选择其他题目。
(2)参赛队认真填写《登记表》内容,填写好的《登记表》交赛场巡视员暂时保存。
(3)参赛者必须是有正式学籍的全日制在校本、专科学生,应出示能够证明参赛者学生身份的有效证件(如学生证)随时备查。
(4)每队严格限制3人,开赛后不得中途更换队员。
(5)竞赛期间,可使用各种图书资料和网络资源,但不得在学校指定竞赛场地外进行设计制作,不得以任何方式与他人交流,包括教师在内的非参赛队员必须迴避,对违纪参赛队取消评审资格。
(6)2007年9月6日20:00竞赛结束,上交设计报告、制作实物及《登记表》,由专人封存。
音频信号分析仪(A题)【本科组】一、任务设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。
二、要求1.基本要求(1)输入阻抗:50Ω(2)输入信号电压范围(峰-峰值):100mV~5V(3)输入信号包含的频率成分范围:200Hz~10kHz(4)频率分辨力:100Hz(可正确测量被测信号中,频差不小于100Hz的频率分量的功率值。
)(5)检测输入信号的总功率和各频率分量的频率和功率,检测出的各频率分量的功率之和不小于总功率值的95%;各频率分量功率测量的相对误差的绝对值小于10%,总功率测量的相对误差的绝对值小于5%。
电动车跷跷板 电动车跷跷板方案设计报告方案设计报告指导老师指导老师赵建队员队员周天(05级) 郭世忠 刘东林 王康学校院系学校院系西安电子科技大学 测控技术与仪器摘要摘要本作品以07年全国电子设计大赛中的题目“电动车跷跷板”为目标,完成其基本要求和发挥部分。
小车设计成以MSP430单片机作为主控芯片,结合外围传感器,使小车在跷跷板上完成寻找平衡点、往返等任务。
方案设计与论证方案设计与论证通过车载倾角传感器对跷跷板倾角的高精度测量,实时的向控制系统反馈倾斜状态,系统根据跷跷板状态做出前进或后退动作,使跷跷板保持平衡及实现所要求的其他功能。
为保证小车在板上平稳行使,以及从地面任意位置找到跷跷板起点,在小车的前后四角各安装了一对红外发射接收传感器,通过设定合适的光强和角度,可以探测板边界的位置,配合上软件分析引导小车行驶。
根据题目要求系统可分为五部分,分别为控制模块、光电检测模块、平衡检测模块、电机驱动模块、显示模块,如下图所示。
1、小车硬件小车硬件平台平台平台选择选择选择方案一:使用自制的PCB 板小车,后两轮双轴驱动,前轮使用万向轮,左右两轮差动控制,可原地转弯。
方案二:购买市场上的玩具合适的遥控车模进行改装,后轮驱动,前轮使用舵机,使其能精确控制转弯角度,或者使用坦克车,左右两轮差动控制。
考虑方案二省去了制作的麻烦,且稳定性和各种性能均优于自制小车,所以这里采用成品玩具四驱车,移动控制更为平滑,且前轮使用舵机可更精确的控制方向。
2、控制芯片选择芯片选择本小车采用MSP430F149低功耗单片机主控芯片,该单片机IO接口数量多,内部资源丰富,如包涵12位AD转换、16位定时器、PWM控制、USART接口等,处理能力强大,能够轻松胜任此任务。
3、驱动电机选择方案一:使用步进电机,控制精确且可测量行进距离。
方案二:使用减速电机。
考虑步进电机驱动复杂,体积大成本高,故使用减速电机外加普通直流电机驱动芯片,由MSP430产生PWM信号控制转速。
001.历届的“控制类赛题”在9届电子设计竞赛中,“控制类赛题”除了1994和1995年外,其它每届都有,共有9题:000①水温控制系统(1997年C题);000②自动往返电动小汽车(2001年C题);000③简易智能电动车(2003年E题);000④液体点滴速度监控装置(2003年F题);0000⑤悬挂运动控制系统(2005年E题);000⑥电动车跷跷板(2007年F题本科组);000⑦电动车跷跷板(2007年J题高职高专组);0000⑧声音引导系统(2009年B题);000⑨模拟路灯控制系统(2009年I题)。
000其中与电动小车有关的有6题。
0002. 从历届赛题可以看到:从历届的赛题来看,主攻“控制类”赛题方向的同学需要了解和掌握:(1)系统控制方案和算法设计(2)微控制器电路模块制作和编程:如:AT89S52、MSP430F1611、MSP430F2274、Atmega128、PIC16F628A、ADuC841、C8051F022、W78E51B、STM32F103VET6等等。
(3)微控制器外围电路模块制作和编程:如键盘及LED数码管显示器模块、RS-485总线通信模块、CAN总线通信模块、无线收发器电路模块、ADC模块、DAC模块等等。
(4)传感器电路模块制作和编程:如光电传感器模块、超声波发射与接收模块、温湿度传感器模块、倾角传感器模块、角度传感器模块、音频信号检测模块等等。
(5)电机控制电路模块制作和编程:如直流电机驱动模块(L298 N)、步进电机驱动模块(L297+L298N,TA8435H)、舵机控制模块、光电隔离模块等等。
(6)放大器电路模块制作:小信号放大器电路模块、滤波器电路模块、音频放大器(7)电源电路模块制作(8)电动小车制作0003. 建议:“控制类”赛题中所涉及到的一些知识点,特别是有关自动控制理论与算法方面,对有些专业的同学来讲,在专业课程中是没有的,需要自己去搞清楚。
目录摘要 (2)2 方法设计与论证 (2)2.1 总体方案描述 (2)2.2 控制器模块的比较和论证 (3)2.3 电机模块的比较和论证 (3)2.4 显示模块的比较和论证 (3)2.5 循迹模块的比较和论证 (3)2.6 倾角测量模块的比较和论证 (4)2.7蜂鸣器的比较和论证 (4)2.8上板方案的比较和论证 (4)3 系统硬件、软件的实现 (5)3.1 硬件实现 (5)3.1.1 单片机 (5)3.1.2 显示模块电路 (6)3.1.3 倾角测量模块电路 (6)3.1.4 循迹模块电路 (7)3.1.5 蜂鸣器电路 (7)3.2 软件实现 (8)3.2.1 程序流程图 (8)3.2.3算法 (10)4 系统测试 (10)4.1基本部分测试结果 (10)4.2 发挥部分测试结果 (10)5 总结 (10)参考文献 (12)附录 (13)附录1:原理图 (13)附录2:算法程序 (14)电动车跷跷板的设计与制作摘要为适应跷跷板的特殊情况,进而实现在有配重的情况下均能在规定的时间内达到平衡状态。
本设计以MSP430F149单片机为控制核心,通过舵机控制电动车行进与停止,通过红外光电传感器来确定行进路线,通过倾角传感器控制跷跷板平衡,通过LCD液晶显示来显示时间、角度等参数。
关键词:MSP430F149、倾角传感器、跷跷板1引言本设计较好地解决了电动车在翘翘板上的运行和平衡问题,通过红外光电检测、角度测量机电机驱动在跷跷板上实现了在不同情况下的自动寻找平衡点的功能。
2 方法设计与论证2.1 总体方案描述整个系统分为控制部分和信号检测部分。
控制部分包括显示模块、控制模块和电机驱动模块三个部分。
信号检测部分由循迹模块及倾角测量模块组成。
循迹模块用以检测黑线从而引导电动车在跷跷板上运动以及初步寻找到C点附近。
倾角测量模块用以测量跷跷板的倾角,将数据传输到控制模块(MSP430F149)来判断是否平衡进而对舵机发出指令来最终找到平衡点。
电动车跷跷板设计报告山东交通学院禹海岱刘晓君董立国摘要:为了满足电动车跷跷板的设计要求,进行了各单元电路方案的比较论证及确定,系统以凌阳16位单片机SPCE061A作为电动车的控制核心,选用了上海直川科技有限公司生产的ZCT245AL-TTL型倾角传感器测量跷跷板水平方向倾角,该传感器灵敏度高、重复性好且输出485信号便于与单片机接口;对于关键的小车动力部分,经过充分比较、论证,最终选用了控制精确的步近电机,其最小步进角0.9度,易于平衡点的寻找;通过红外对管TCRT5000寻迹,实现了小车走直线等功能;系统显示部分选用图形点阵式液晶显示器OCJM4*8C,串行接口,编程容易,美观大方。
采用单片机内部时钟实现精确计时。
最后的实验表明,系统完全达到了设计要求,不但完成了所有基本和发挥部分的要求,并增加了路程显示、全程时间显示和语音播报三个创新功能。
关键词:倾角传感器,红外对管,步进电机,SPCE061A1.系统方案1.1 实现方法本题要求设计并制作一辆电动小车,能实现在跷跷板上运动且在不同配重的情况下保持平衡等功能。
我们想利用电机控制小车运行,角度传感器测量跷跷板水平方向倾角来确定小车何时达到平衡,利用寻迹模块实现小车沿直线行走以及在A点外某处能自动驶上跷跷板,还有显示模块以及语音模块等做为人机界面,实现显示及语音提示等功能。
上述各模块的方案论证如下。
1.2 方案论证1.2.1 控制器模块方案一:采用ATMEL 公司的AT89C51。
51单片机价格便宜,应用广泛,但是功能单一,如果系统需要增加语音播报功能,还需外接语音芯片,实现较为复杂;另外51 单片机需要仿真器来实现软硬件调试,较为烦琐。
方案二:采用凌阳公司的SPCE061A 单片机作为控制器的方案。
该单片机I/O资源丰富,并集成了语音功能。
芯片内置JTAG电路,可在线仿真调试,大大简化了系统开发调试的复杂度。
根据本题的要求,我们选择第二种方案。
11号F题电动车跷跷板摘要:本设计以一片单片机STC12C5A60S2作为核心来控制电动车跷跷板,加以控制芯片L298N和单片机联合控制小车的前进与后退。
路面的黑带检测使用反射式红外传感器,通过STC12C5A60S2对输入的信号进行处理,使用LCD1602分阶段实时显示电动车行驶所用的时间。
以红外传感器对路面黑线检测用,行驶距离使用对射光电传感器加以码盘进行检测。
使用三轴数字倾斜角度模块,检测跷跷板是否水平。
关键词:STC12C5A60S2 光电传感器L298N控制电动机LCD1602 三轴数字倾斜角度模块Abstract:This system is mainly based on a chip called STC12C5A60S2. This intelligent car designed by us three can run automatically through black lines on the ground and so on.Key words: single-chip microcomputer control system L298nThe three axis digital tilt angle module LCD1602(一)引言:我们认为该题目可以很好的培养我们对于传感器,驱动模块,硬件结构,软件结构,控制模块的全新认识,并且能够使得我们更好的将这些部分融合成一个整体,进行良好的运用。
该设计模块以单片机作为控制中心,加以控制芯片L298N和单片机联合控制小车的前进与后退。
路面的黑带检测使用反射式红外传感器,通过STC12C5A60S2对输入的信号进行处理,使用LCD1602分阶段实时显示电动车行驶所用的时间。
以红外传感器对路面黑线检测用,行驶距离使用对射光电传感器加以码盘进行检测。
使用三轴数字倾斜角度模块,检测跷跷板是否水平。
该模块控制比较稳定,速度适中,是本题目的适合的解决方法。
电动车跷跷板(F题)【本科组】一、任务设计并制作一个电动车跷跷板,在跷跷板起始端A一侧装有可移动的配重。
配重的位置可以在从始端开始的200mm~600mm范围内调整,调整步长不大于50mm;配重可拆卸。
电动车从起始端A出发,可以自动在跷跷板上行驶。
电动车跷跷板起始状态和平衡状态示意图分别如图1和图2所示。
二、要求1.基本要求在不加配重的情况下,电动车完成以下运动:(1)电动车从起始端A出发,在30秒钟内行驶到中心点C附近;(2)60秒钟之内,电动车在中心点C附近使跷跷板处于平衡状态,保持平衡5秒钟,并给出明显的平衡指示;(3)电动车从(2)中的平衡点出发,30秒钟内行驶到跷跷板末端B处(车头距跷跷板末端B不大于50mm);(4)电动车在B点停止5秒后,1分钟内倒退回起始端A,完成整个行程;(5)在整个行驶过程中,电动车始终在跷跷板上,并分阶段实时显示电动车行驶所用的时间。
2.发挥部分将配重固定在可调整范围内任一指定位置,电动车完成以下运动:(1)将电动车放置在地面距离跷跷板起始端A点 300mm以外、90°扇形区域内某一指定位置(车头朝向跷跷板),电动车能够自动驶上跷跷板,如图3所示:(2)电动车在跷跷板上取得平衡,给出明显的平衡指示,保持平衡5秒钟以上;(3)将另一块质量为电动车质量10%~20%的块状配重放置在A至C间指定的位置,电动车能够重新取得平衡,给出明显的平衡指示,保持平衡5秒钟以上;(4)电动车在3分钟之内完成(1)~(3)全过程。
(5)其他。
三、说明(1)跷跷板长1600mm、宽300mm,为便于携带也可将跷跷板制成折叠形式。
(2)跷跷板中心固定在直径不大于50mm的半圆轴上,轴两端支撑在支架上,并保证与支架圆滑接触,能灵活转动。
(3)测试中,使用参赛队自制的跷跷板装置。
(4)允许在跷跷板和地面上采取引导措施,但不得影响跷跷板面和地面平整。
(5)电动车(含加在车体上的其它装置)外形尺寸规定为:长≤300mm,宽≤200mm。
/***************************************************** This program was produced by theCodeWizardAVR V2.03.4 StandardAutomatic Program Generator?Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.Project :Version :Date : 2009/7/25Author :Company :Comments:Chip type : ATmega16LProgram type : ApplicationClock frequency : 14.745600 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 256*****************************************************/ #include <mega16.h>#include <delay.h>// USART控制和状态寄存器的标志位定义#define RXC 7 // UCSRA位定义#define TXC 6#define UDRE 5#define FE 4#define DOR 3#define PE 2#define U2X 1#define MPCM 0#define RXCIE 7 // UCSRB位定义#define TXCIE 6#define UDRIE 5#define RXEN 4#define TXEN 3#define UCSZ2 2#define RXB8 1#define TXB8 0#define URSEL 7 // UCSRC位定义#define UMSEL 6#define UPM1 5#define UPM0 4#define USBS 3#define UCSZ1 2#define UCSZ0 1#define UCPOL 0#define FRAMING_ERROR (1<<FE)#define PARITY_ERROR (1<<PE)#define DATA_OVERRUN (1<<DOR)#define DATA_REGISTER_EMPTY (1<<UDRE)#define MOTOR_L1 PORTB.0 //电机#define MOTOR_L2 PORTB.1#define MOTOR_R1 PORTB.2#define MOTOR_R2 PORTB.3#define BW_LEFT PINA.0 //黑白线#define BW_RIGHT PINA.1#define BUZZER PORTA.3 //蜂鸣器#define NULL 0x00#define LEFT 0x01#define RIGHT 0x02#define BAL_START 0x03#define BAL 0x04#define BAL_OK 0x05#define GET_B 0x06#define B_OK 0x07#define A_OK 0x08#define MODE_B 0x09#define MODE_P 0x0A#define BAL_AGAIN 0x0B#define FULL 0xFFunsigned char tran = 5; //USART数据bit receive_ok = 0;bit dir = 0;bit mode2 = 0;unsigned char delay_dir = 0;interrupt [USART_RXC] void usart_rx_isr(void) // USART接收中断服务{unsigned char status,data;status = UCSRA;data = UDR;if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) {tran = data;receive_ok = 1;}}void USART_Transmit(unsigned char data){while (!(UCSRA & DATA_REGISTER_EMPTY)); // 等待发送寄存器空UDR = data; // 发送数据}void motor_direct(unsigned char direct) //电机换向{if(direct == 0){MOTOR_L1 = 0;MOTOR_L2 = 1;MOTOR_R1 = 0;MOTOR_R2 = 1;}if(direct == 1){MOTOR_L1 = 1;MOTOR_L2 = 0;MOTOR_R1 = 1;MOTOR_R2 = 0;}}void motor_start(void) //电机启动{if(dir == 0){MOTOR_L1 = 0;MOTOR_L2 = 1;MOTOR_R1 = 0;MOTOR_R2 = 1;if(dir == 1){MOTOR_L1 = 1;MOTOR_L2 = 0;MOTOR_R1 = 1;MOTOR_R2 = 0;}}void motor_stop(void) //电机停止{MOTOR_L1 = 1;MOTOR_L2 = 1;MOTOR_R1 = 1;MOTOR_R2 = 1;}void motor_jerk(unsigned int time ,unsigned char direct_stop){motor_direct(direct_stop);delay_ms(time);motor_stop();}void buzzer_voice(void){BUZZER = 1;delay_ms(500);BUZZER = 0;}void mode_pro(void){unsigned char cache = 0;bit once = 0,balance_again = 0;//buzzer_voice();motor_start(); //电机开启delay_ms(500);motor_stop();while(1)if(BW_RIGHT == 1 && BW_LEFT == 0) {OCR1AH=0xef;OCR1AL=0xFF;OCR1BH=0xaf;OCR1BL=0xFF;delay_ms(300);motor_jerk(150,0);OCR1BH=0xef;OCR1BL=0xFF;OCR1AH=0x00;OCR1AL=0xFF;delay_ms(300);motor_jerk(200,1);delay_dir = 1;}else if(BW_RIGHT == 0 && BW_LEFT == 1) {OCR1BH=0xef;OCR1BL=0xFF;OCR1AH=0xaf;OCR1AL=0xFF;delay_ms(300);motor_jerk(150,0);OCR1AH=0xef;OCR1AL=0xFF;OCR1BH=0x00;OCR1BL=0xFF;delay_ms(300);motor_jerk(200,1);delay_dir = 2;}else if(BW_RIGHT == 0 && BW_LEFT == 0) {OCR1AH=0xc0;OCR1AL=0xFF;OCR1BH=0xf0;OCR1BL=0xFF;motor_jerk(30,0);}else if(BW_RIGHT == 1 && BW_LEFT == 1) {/*if(delay_dir == 1){OCR1AH=0xef;OCR1AL=0xFF;OCR1BH=0xaf;OCR1BL=0xFF;delay_ms(300);motor_jerk(150,0);OCR1BH=0xef;OCR1BL=0xFF;OCR1AH=0x00;OCR1AL=0xFF;delay_ms(300);motor_jerk(200,1);}else if(delay_dir == 2){OCR1BH=0xef;OCR1BL=0xFF;OCR1AH=0xaf;OCR1AL=0xFF;delay_ms(300);motor_jerk(150,0);OCR1AH=0xef;OCR1AL=0xFF;OCR1BH=0x00;OCR1BL=0xFF;delay_ms(300);motor_jerk(200,1);}*/break;}delay_ms(400);};OCR1AH=0xef;OCR1AL=0xFF;OCR1BH=0xef;OCR1BL=0xFF;buzzer_voice();motor_start(); //电机开启delay_ms(1000);motor_stop();again:delay_ms(1000);USART_Transmit(BAL_START);USART_Transmit(BAL_START);USART_Transmit(BAL_START);USART_Transmit(BAL_START);USART_Transmit(BAL_START);while (1) //找平衡{cache = tran;if(receive_ok == 1 && cache == LEFT){motor_jerk(30,1);delay_ms(800);}else if(receive_ok == 1 && cache == RIGHT) {motor_jerk(30,0);delay_ms(800);}else{motor_stop();if(cache == BAL && once == 0){buzzer_voice();once = 1;}if(cache == BAL_OK){buzzer_voice();break;}}}if(balance_again == 0){while(1){if(tran == BAL_AGAIN)break;delay_ms(100);}balance_again = 1;once = 0;receive_ok = 0;goto again;}motor_jerk(150,0);while (1){if(BW_LEFT == 1 && BW_RIGHT == 1){USART_Transmit(GET_B);USART_Transmit(GET_B);USART_Transmit(GET_B);USART_Transmit(GET_B);USART_Transmit(GET_B);break;}else{motor_jerk(30,0);delay_ms(800);}}while (1){if(tran == B_OK)break;};motor_jerk(1200,1);while (1){if(BW_LEFT == 1 && BW_RIGHT == 1){motor_jerk(30,1);delay_ms(500);motor_jerk(30,1);delay_ms(500);motor_jerk(30,1);break;}else{motor_jerk(40,1);delay_ms(800);}};USART_Transmit(A_OK);USART_Transmit(A_OK);USART_Transmit(A_OK);USART_Transmit(A_OK);USART_Transmit(A_OK);while (1){};}void main(void){unsigned char cache = 0;bit once = 0;//unsigned char middle,balance,B,A;//unsigned char time_h[10] = {0},time_m[10] = {0},time_s[10] = {0};//unsigned char *mid = ""// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=0 State2=P State1=P State0=P PORTA=0x07;DDRA=0x08;// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 PORTB = 0x00;DDRB=0x0F;// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;DDRC=0x00;// Port D initialization// Func7=In Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=T State6=1 State5=0 State4=0 State3=T State2=T State1=T State0=T PORTD=0x40;DDRD=0x70;// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: 14.400 kHz// Mode: Normal top=FFh// OC0 output: DisconnectedTCCR0=0x00;TCNT0=0x00;OCR0=0x00;// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: 14745.600 kHz// Mode: Fast PWM top=ICR1// OC1A output: Non-Inv.// OC1B output: Non-Inv.// Noise Canceler: Off// Input Capture on Falling Edge// Timer 1 Overflow Interrupt: Off// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=0xA2;TCCR1B=0x19;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0xFF;ICR1L=0xFF;OCR1AH=0xef;OCR1AL=0xFF;OCR1BH=0xef;OCR1BL=0xFF;// Timer/Counter 2 initialization// Clock source: System Clock// Clock value: Timer 2 Stopped// Mode: Normal top=FFh// OC2 output: DisconnectedASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: On// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 19200UCSRA=0x00;UCSRB=0x98;UCSRC=0x86;UBRRH=0x00;UBRRL=0x2F;// External Interrupt(s) initialization// INT0: Off// INT1: Off// INT2: OffMCUCR=0x00;MCUCSR=0x00;// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x01;// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;SFIOR=0x00;// Global enable interrupts#asm("sei")if(BW_LEFT == 1 && BW_RIGHT == 1){mode2 = 1;USART_Transmit(MODE_P);USART_Transmit(MODE_P);delay_ms(400);USART_Transmit(MODE_P);USART_Transmit(MODE_P);delay_ms(400);USART_Transmit(MODE_P);mode_pro();}USART_Transmit(MODE_B);USART_Transmit(MODE_B);delay_ms(400);USART_Transmit(MODE_B);USART_Transmit(MODE_B);delay_ms(400);USART_Transmit(MODE_B);buzzer_voice();motor_start(); //电机开启delay_ms(1000);motor_stop();delay_ms(1000);USART_Transmit(BAL_START);USART_Transmit(BAL_START);USART_Transmit(BAL_START);USART_Transmit(BAL_START);USART_Transmit(BAL_START);while (1) //找平衡{cache = tran;if(receive_ok == 1 && cache == LEFT){motor_jerk(30,1);delay_ms(800);}else if(receive_ok == 1 && cache == RIGHT)motor_jerk(30,0);delay_ms(800);}else{motor_stop();if(cache == BAL && once == 0){buzzer_voice();once = 1;}if(cache == BAL_OK){buzzer_voice();break;}}}motor_jerk(200,0);while (1){if(BW_LEFT == 1 && BW_RIGHT == 1){USART_Transmit(GET_B);USART_Transmit(GET_B);USART_Transmit(GET_B);USART_Transmit(GET_B);USART_Transmit(GET_B);break;}else{motor_jerk(30,0);delay_ms(800);}}while (1){if(tran == B_OK)break;motor_jerk(1200,1);while (1){if(BW_LEFT == 1 && BW_RIGHT == 1){motor_jerk(30,1);delay_ms(500);motor_jerk(30,1);delay_ms(500);motor_jerk(30,1);break;}else{motor_jerk(40,1);delay_ms(800);}};USART_Transmit(A_OK);USART_Transmit(A_OK);USART_Transmit(A_OK);USART_Transmit(A_OK);USART_Transmit(A_OK);while (1){};}。
悬挂运动控制系统摘要:本系统采用STC89C54作为控制中心,由步进电机、红外收发对管、4*4键盘及中文液晶显示屏构成的悬挂运动控制系统。
该系统能自由控制悬挂物体完成自行设定运动、画圆运动、沿黑线运动等,并能正确显示物体到达的坐标位置。
关键词:控制核心;寻迹;步进电机;算法;定位1系统模块的方案比较与论证1.1 控制器模块根据题目要求,控制器模块主要用于各个传感器信号接收、控制物体运动、控制显示坐标及运动时间等。
对于控制器有以下二种方案。
方案一:采用FPGA为系统的控制器,FPGA可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能控制。
FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。
通过输入模块将参数输入给FPGA,FPGA通过程序设计控制步进电机运动,但是由于本设计对数据处理的时间要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:采用A T89S52单片机作为系统控制器。
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。
由于其功耗低、体积小、技术成熟和成本低等优点,各个领域应用广泛。
并且,由于芯片引脚少,在硬件很容易实现。
因此,在本设计中采用A T89S52处理输入的数据并控制电机运动。
综合上述两种方案,方案二较为简单,可以满足设计要求。
1.2电机的选择方案一:采用直流电机。
直流电机具有最优越的调速性能,主要表现在调速方便(可无级调速)、调速范围宽、低速性能好(起动转矩大、起动电流小)、运行平稳、噪音低、效率高等方面,但是控制复杂,定位精度差,积累误差大等缺点。
方案二:采用步进电机。
步进电机具有控制简单、定位精确、无积累误差等优点。
悬挂运动控制系统摘要:悬挂轨迹控制系统是一电机控制系统,控制物体在80cm×100cm 的范围内作直线、圆、寻迹等运动,并且在运动时能显示运动物体的坐标。
设计采用AT89S51单片机作为核心器件实现对物体运动轨迹的自动控制,通过多圈电位器实现对悬挂物位置的精确测量,并引入局部闭环反馈控制环节对误差进行修正。
以达到对物体的控制和对坐标点的准确定位。
采用脉冲宽度调制技术控制直流电机驱动芯片L298,以实现对电机的转速、转向、启停等多种工作状态进行快速而准确的控制。
采用红外光电传感器实现检测电机速度和画板上黑色曲线轨迹。
关键词:运动轨迹;多圈电位器;脉冲宽度调制;红外反射光电传感;直流电机驱动第1章引言悬挂轨迹控制系统是一电机控制系统。
为满足控制需要,本系统采用AT89S51单片机作为核心器件,多圈电位器为物体位置数据采集器件,以L298驱动的直流电机为执行设备,键盘和LED显示为人机接口的结构方式。
算法方面通过以微小直线为单位的策略,完成较为复杂的长直线、圆周和不确定曲线。
系统软件将物体运动的坐标转化成悬绳伸缩的距离,进而计算出多圈电位器需要转动到的位置,再算出两直流电机的脉冲宽度调制(PWM)值。
再通过A/D转换实现对悬挂物位置的精确测量,并引入局部闭环反馈控制环节对误差进行修正。
对于系统自定的确定线型(直线和圆周),通过调整两个直流电机不同的PWM值的搭配,可以控制物体的运动方向。
而对于不确定的曲线,由光电传感器得到路线信息,经过单片机的处理,给出物体运动方向的指令。
本设计的主要特点:1、优化的软件算法,智能化的自动控制,误差补偿。
2、使用双动滑轮,有效防止滑轮与拉绳之间打滑。
3、使用多圈电位器与动滑轮同步转动,引入反馈,实现物体精确定位。
4、LED显示模块提供一个人机对话界面,并实时显示坐标及物体的运动轨迹。
第2章系统功能及基本原理2.1设计任务1、控制系统能够通过键盘或其他方式任意设定坐标点参数;2、控制物体在80cm×100cm的范围内作自行设定的运动,运动轨迹长度不小于100cm,物体在运动时能够在板上画出运动轨迹,限300秒内完成;3、控制物体作圆心可任意设定、直径为50cm的圆周运动,限300秒内完成;4、物体从左下角坐标原点出发,在150秒内到达设定的一个坐标点(两点间直线距离不小于40cm);图2.1 悬挂控制示意图5、控制物体沿板上标出的任意曲线运动,如图 2.1所示,曲线在测试时现场标出,线宽1.5cm~1.8cm,总长度约50cm,颜色为黑色;曲线的前一部分是连续的,长约30cm;后一部分是两段总长约20cm的间断线段,间断距离不大于1cm;沿连续曲线运动限定在200秒内完成,沿间断曲线运动限定在300秒内完成;6、能够显示物体中画笔所在位置的坐标,运动轨迹与预期轨迹之间的偏差不得超过4cm。
2.2系统基本方案根据设计要求,需要实现勾画设定轨迹和对设定轨迹的搜寻功能,并能实时的显示物体中画笔所在位置坐标。
其系统方案框图如图2.2所示。
图中多圈电位器安装在两个动滑轮上,电机收放线长度就会通过多圈电位器转换成电压值,通过A/D转换后送入单片机;反射式光电传感器对黑线进行检测,以脉冲信号的形式送入单片机,同时按键信号送入单片机对物体进行设置校正以及轨迹参数设定,控制器对送来的信号进行分析、运算、处理,将控制信号输送到电机驱动模块,控制电动机的转速,使物体的运动轨迹得以控制。
第3章方案论证和比较根据题目要求可知,本系统所涉及的核心问题主要有:1、对电机的转速、转向、启停等多种工作状态进行快速而准确的控制,以保证悬挂物体按照预先设定或即时设定的运动轨迹运行。
2、为保证该控制系统的精度要求,必须对运动物体在画板上的具体位置(坐标点)进行实时的检测。
3、为保证该运动物体能在尽可能短的时间内按设定运动轨迹从起始点到达目标点,还需要相应的设定及显示电路。
我们分以下几个部分进行方案设计和比较论证。
3.1控制器模块根据题目要求,控制器主要用于控制电机,并对坐标参数进行处理,控制电机移动方向。
对于控制器的选择有以下两种方案。
方案一:采用FPGA为系统的控制器,FPGA可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能控制。
FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。
通过输入模块将参数输入给FPGA,FPGA通过程序设计控制步进电机运动,但是由于本设计对数据处理的时间要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:采用AT89c51作为系统控制的方案。
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。
由于其功耗低、体积小、技术成熟和成本低等优点,各个领域应用广泛。
并且,由于芯片引脚少,在硬件很容易实现。
因此,在本设计中采用AT89c51处理输入的数据并控制电机运动。
综合上述两种方案,方案二较为简单,可以满足设计要求。
3.2 电机的选择方案一:采用直流电机。
直流电机具有最优越的调速性能,主要表现在调速方便(可无级调速)、调速范围宽、低速性能好(起动转矩大、起动电流小)、运行平稳、噪音低、效率高等方面,但是控制复杂,定位精度差,积累误差大等缺点。
方案二:采用步进电机。
步进电机具有控制简单、定位精确、无积累误差等优点。
基于上述比较,为了方便地对电机进行无级调速,和需要电机带负载能力强的特点,这里我们采用步进电机。
3.3驱动及调速方案方案一:采用继电器对电动机的开和关进行控制,通过开关的切换对电机的速度进行调整。
这个方案的优点是电路较为简单,实现容易;缺点是继电器的响应速度慢、机械结构易损坏、寿命较短。
方案二:采用内集成有达林顿管组成的H型的功率变换桥电路的恒压恒流桥式2A驱动芯片。
用单片机输出PWM信号控制使之工作在占空比可调的开关状态,通过程序调节占空比精确调整电机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单实现转速和方向的控制;电子开关的速度很快,稳定性也极强,是一种广泛采用的PWM调速技术。
方案三:采用DSP芯片,配以电机控制所需要的外围功能电路,通过数控电压源调节电机运行速度,实现控制物体的运动轨迹。
该方案优点是体积小、结构紧凑、使用便捷、可靠性提高。
但系统软硬件复杂、成本高。
基于上述理论分析和实际情况,拟定选择方案二。
3.4速度采集方案方案一:采用霍尔集成片。
该器件内部由三片霍尔金属板组成,当磁铁正对金属板时,由于霍尔效应,金属板发生横向导通,因此可以在电机上安装磁片,而将霍尔集成片安装在固定轴上,通过对脉冲的计数进行电机速度的检测。
方案二:采用对射式光电传感器。
其检测方式为:发射器和接受器相互对射安装,发射器的光直接对准接受器,当测物挡住光束时,传感器输出产生变化以指示被测物被检测到。
通过脉冲计数,对速度进行测量。
由于电机的收线轮直径较小,将传感器安在电机上容易产生测量误差,将传感器安在滑轮上可以减少收线引起的误差。
方案三:采用多圈电位器式传感器间接测量方式。
通过杠杆机构将线位移转化为电阻值的变化,再根据电阻与速度之间的关系实现速度的检测。
以上三种方案都是比较可行的方案。
尤其是霍尔元件,应用得很广泛。
方案一和方案二的精度都会有一定的限制。
要达到本设计的要求会给制作带来难度;鉴于此情况选选择多圈电位器更好,远远满足本设计的精度要求。
3.5寻迹模块探测板上黑线的大致原理是:光线照射到板面并反射,由于黑线和白纸的反射系数不同,可根据接受到的反射光强弱判断是否偏离黑线。
方案一:采用热探测器。
由于温度变化是因为吸收热能辐射能量引起的,与吸收红外辐射的波长没有关系,即对红外辐射吸收没有波长的选择,因此受外界环境影响比较大。
方案二:使用发光二极管和光敏三极管组合。
这种方案的缺点在于其他环境的光源会对光敏二极管产生很大的干扰。
方案三:使用红外反射式一体化传感器进行检测。
通过对比,这次设计中由于是近距离探测,故采用方案三来完成数据采集。
由于红外光波长比可见光长,因此受可见光的影响较小。
同时红外线系统还具有以下优点:尺寸小、质量轻,便于安装。
反射式光电检测器就是其中的一种器件,它具有体积小、灵敏度高、线性好等特点,外围电路简单,安装起来方便,电源要求不高。
用它作为近距离传感器是最理想的,电路设计简单、性能稳定可靠。
第4章系统硬件设计4.1系统电路连接及硬件资源分配本系统电路连接及硬件资源分配见图4.1所示。
采用AT89S51单片机作为核心器件,多圈电位器为悬挂物体位置采集器件,通过ADC0832转换位数字信号送入单片机处理,L298作为直流电机的驱动模块,以MAX7219驱动的LED显示和4×4键盘作为人机接口。
4.2 寻轨迹控制策略根据题目的要求,悬挂物沿曲线运动的轨迹分为两段,连续段和间断段。
可采用4个光电一体化传感器TCRT5000作为检测元件,其放置方式如图4.2所示。
寻找黑线策略,采用模糊寻找的方式,首先物体从坐标(0,8)运行到坐标(80,8),检测这之间有无黑线,如无,则从坐标(80,16)运行到坐标(0,16),再检测这之间有无黑线,如有,则从坐标(0,12)运行到(80,12),检测,如果没有检测到黑线,再进一步缩小范围从(0,14)运行到(80,14);如果检测到黑线,再进一步缩小范围从(80,10)运行到(80,10),当检测到黑线时就停下,此处将是黑线起点;如果没有检测到黑线则返回从(80,12)运行到(0,12)检测到的黑线即为黑线起点。
以同样的运行检测方式即可寻找出黑线的起点。
在连续段寻迹时,通过判断四个传感器的16种组合状态,使电机作出相应的伸缩动作。
当轨迹为间断线时,电机拉动传感器在大角度方向内位移,直到在某一方向检测到新的黑线为止。
然后再调用连续段的寻迹程序。
4.3 系统各模块单元电路设计4.3.1 电源部分电路设计本系统中使用了直流12V电机,其额定工作电压为12V,而单片机额定工作电压为5V,所以电路中采用了7805和7812作为稳压模块,其最大输出电流为1.5A,满足系统电机驱动电流的要求,其电路如图4.3.1所示。
4.3.2 电机控制模块设计物体运动的轨迹由电机的转速和转向决定,电机的转速和转向的控制是通过多圈电位器对滑轮所转的圈速进行检测,同时通过另一个计数器对时间进行测量,结合两个计数器的值,由单片机计算出电机的速度,而物体运动的轨迹的里程由滑轮的周长和所转的圈数来计算。