余世干 苗 清 张廉洁 周红志
两轮自平衡智能车寻迹系统设计与实现
余世干 苗 清 张廉洁 周红志
(阜阳师范学院信息工程学院,安徽阜阳 236037)
文章设计和实现了基于单片机的两轮自平衡自动循迹的智能车.系统采用飞思卡尔公司的mc9s12xs128的单片机芯片和两轮的智能小车模型;软件设计采用CodeWarrior作为开发平台,C语音作为开发工具.最后通过系统测试,智能小车能够较好的在预定轨道上自动寻迹而且速度较快,各项性能稳定.
智能车;自平衡;模块;PD算法
智能车技术是一种综合的新技术,由于可控制性和方便性的特点,其在未来生活中将发挥广泛应用.在教育部创办的智能车竞赛的背景下,本文的智能车自动导航系统能在45 cm宽的规定白板,两边各有2.5 cm宽黑线为引导线的道路上,在无人操作下通过识别路况信息实现自动导航、控制车体速度和方向.本系统是以飞思卡尔公司的MC9S12XS128单片机为主控制器,设计出的智能车系统能自动采集、处理路面信息,在无人操作的情况下实现自动循迹导航的功能.本文主要是设计与实现两轮自平衡车自动循迹的过程[1].
1 系统实现的理论基础
1.1 车体直立的原理
两轮直立车体,顶端相对于底端为相对静止,顶端相对于底端总会有向前或者向后的运动速度,若想保持直立,则需要使得底端和顶端的运动速度方向、大小一致.而车体底端的电机,通过轴承驱动轮子,则可以保证车体底端和顶端的运动速度方向、大小的一致,从而保持车体直立[1-2].
1.2 车体运动时保持直立的原理
将车体看作一个整体,车体直立时,整体相对于地面来说相对静止.若车体开始倾斜,车体顶端相对于地面来说有了一定的速度大小和方向,想要保持车体倾斜的角度不再加剧,车体底端需要在车体倾斜的过程中,达到与顶端有着相同方向大小的速度.这样才能保证车体倾斜的角度不再会变化,但是整体对于地面来说,是从静止到匀速运动的过程、是从直立静止到保持一定的倾斜角度匀速运动的过程.
1.3 道路识别原理
实际道路的情况极其复杂,为了实现这一功能,此设计在有限的条件下进行到道路模拟.采用的是以白色KT板为道路主体,以黑色线条为道路边界,具体实物如图1所示.使用简单的模型来模拟实际道路,分析道路情况可得知,道路分为直道,弯道,十字路口.只要能够获得黑线的走向,即可获得道路情况,使得小车在黑色线条围成的封闭“道路”中运动.
图1 智能车运行道路实物图
2系统硬件结构
本系统以MC9S12XS128单片机为核心,外围扩展了速度检测、道路信息检测、电源、直流电机驱动、陀螺仪以及电机差速转向控制等模块,具体系统结构[3]37-78如图2所示,系统组成实物如图3.
图2 系统硬件结构图
图3 系统组成实物图
2.1 陀螺仪模块与加速度传感器
此设计选定了村田公司出产的ENC-03陀螺仪作为角速度传感器,飞思卡尔公司的MMA7361加速度传感器.使用两个陀螺仪来分别采集车体与地面的角度,车体与“道路”边界的角度.这两种芯片都是模拟信号输出,便于采集.加速度传感器能够检测由地球引力作用或者物体运动所产生的加速度.MMA7361加速度传感器是一种模拟量输出的三轴加速度传感器,测量其中一个方向上的加速度值,经过受力分析就可以计算出车模倾角.例如车模直立时,将加速度传感器的Z轴固定在水平方向上,此时输出信号是零偏电压信号.当车模不平衡时,重力加速度G则会在 Z 轴方向产生加速度分量,从而引起Z轴输出电压变化.陀螺仪、加速度传感器模块实物如图4所示.
图4 陀螺仪与加速度传感器模块
2.2 直流电机驱动模块
车模采用的是直流电机,改变电流的流向即可改变电机旋转的方向.此类对电机的驱动电路大多数采用H桥电路,其原理为:用四个NMOS管构成可控制电流流向的电路从而驱动电机.在构建电机驱动电路时,要注意电机最大电流值,测量电机最大电流值,可将电机转子固定,然后根据电机可工作电压范围,选择最大电压,进行测量电流,图5为系统设计的电机驱动电路原理图.
2.3 速度检测模块
速度检测模块采用编码器来完成,通过侦测车轮运动的速度、角度、距离、位置以及计数,再把相关信息反馈给主程序以便主程序更好的控制.MC9s12xs128芯片内部集成了一个PCA模块,可用于捕获外部脉冲并且计数.关于两个电机转速的采集,使用一个外部计数器和内部PCA模块,分别采集两个电机的转速.外部计数器原理图如图6所示.
2.4 电源模块
本次方案使用的单片机芯片,传感器为5 V供电电压,其中比较特殊的就是陀螺仪和加速度模块,此模块采用3.3 V供电电压.针对这两种供电要求,此设计选取了LM2940作为5 V稳压芯片,LM1117-3.3作为3.3 V稳压芯片.这两种芯片的性价比较高,而且可以满足此系统地供电要求.同时考虑到整体系统需要电流的大小此设计采用将最小系统供电电源与传感器供电分别用两个5 V电源来进行供电,保证系统的正常工作[4].图7,图8分别为5 V稳压电路、3.3 V稳压电路原理图.
2.5 其他模块
键盘模块是用来调整软件程序的输入参数和其他辅助信息以实现在更好的调试智能车运行状态.
道路信息检测模块是这个系统中重要的一环,在本系统中采用TSL1401线性CCD传感器,其内部具有128个光电二极管,每个光电二极管通过积分电路所感知的光强以电压的形式输出,其电压与光照强度强度和积分时间成正比.同时,该芯片的采集时间,也是此设计在编写底层驱动程序是需要考虑的,TSL1401芯片最小的采集时间为12 ms,在此方案中,采用的采集频率为50 HZ.
核心控制器MC9S12XS128是智能车的“大脑”,它是飞思卡尔公司的一种16位单片机,其片上资源包含有时钟和复位发生器,128K FLASH,8K ROM,2K EEPROM,8位/16位脉冲累加计数器;128KB程序Flash,8 KB RAM、8 KB数据Flash等功能资源,非常丰富,足以满足此方案中各种功能需求.在此单片机芯片上再辅助设计电源电路,振荡器电路,复位电路,BDM下载硬件电路等电路组成最小系统,从而实现对智能小车的整体综合控制.
系统硬件电路的设计的工具采用Altium Designer 09,它整合了原理图、PCB图,包含很多芯片厂家的原理图库,使得开发电子线路变得十分方便,同时也拥有者DRC检测机制等功能.
3 系统软件设计
系统软件算法[1]设计是建立与硬件之上,决定着智能小车在实际道路的自动运行以及实际运行的效果,是智能小车设计的不可缺少的重要一环.系统设计需要先进行对于程序框架的设计.通过分析系统功能可知,首先需要完成单片机的初始化,使得单片机能够正常的进行工作.对于传感器数据的采集,此设计需要使用中断服务程序(ISR),这样设计才能够精确的按照单位时间来采集需要的数据,采集数据完毕之后,需要对数据进行处理,因为直立控制的精度要求较高,因此需要控制信号处理时间,这需要放在中断服务程序中来进行.对于算法需要进行优化,否则在中断中容易锁死.CCD传感器的采集时间较长,因此不能放在中断服务程序中.然后需要考虑到在调试过程中的便捷性,由于每次烧写程序会消耗大量时间,此设计采用按键来设置核心参数的方法,这样就可以直接在源程序上进行修改,而不需要再一次在IDE中进行修改和烧写[6-7].
在采集到CCD信号时,需要通过陀螺仪与加速度传感器完成对车体的整体平衡的控制,然后完成对CCD信息的处理以及对电机的控制,在电机控制过程中,采用了比较典型的PD算法,其原理源自于PID算法,是过程控制中一种模糊自适应算法,用过去,和现在的状态来预算未来的状态.用陀螺仪反馈出的角度来对电机状态来进行比例控制,用陀螺仪反馈角速度对电机状态来进行微分控制.比例控制代表着直接控制电机输出得到的结果,微分控制代表着直接控制电机输出得到的车体整体效果,其物理意义对应为电机速度和加速度,而电机的加速度影响着车体回复直立的速度,则可以用角度来代替.
在直立的前提下,对电机进行速度控制和方向控制,速度控制是利用光电编码器的负反馈系统.其中Pspeed为上一次脉冲计数和此时脉冲数的差值,对电机进行比例控制,Dspeed为上一次差值与这一次差值之差对对采样时间进行微分运算,从而对电机进行控制.方向控制使用的是另一个陀螺仪的负反馈,算法过程与直立控制过程相同.按照上述设计出控制车体的控制程序,车体能直立沿着路面自动循迹.程序框架如图9所示.
图9 程序框架图
4 系统测试与实现
系统的测试主要是完成对系统的整体结构检查是否实现预期功能,系统设计最后一环,在本系统测试中主要包括系统中的稳压电路测试,最小系统电路测试,光电编码器测试,陀螺仪、加速度模块测试,车体单片机与PC机通信电路测试,电机驱动电路测试,线性CCD模块测试,通过对各模块的测试发现,各模块功能均正常,能够完成预定目标[8-9].
综上所述,本文针对两轮智能车完成了自动循迹系统的设计,实现了智能车在规定的直行、S型、十字交叉路口、斜坡、自动避障等赛道上自助循迹行使,速度能达到1.8 m/s的速度.另外基于本文所设计的智能车的控制系统的方法,也可以在其他自动控制领域发挥作用.
[1] 卓晴,黄开胜,邵贝贝,等.学做智能车—挑战“飞思卡尔”杯[M].北京:北京航空航天大学出版,2007.
[2] 吴怀宇.大学生智能汽车设计基础与实践[M].北京:电子工业出版社,2008.
[3] 王威.HCS12微控制器原理及应用[M].北京:北京航空航天大学出版社,2007.
[4] 马福良.智能车规划与控制系统的设计与实现[D].吉林:吉林大学,2012.
(责任编辑:涂正文)
Design and Implementation of Two Wheels Self-Balancing Intelligent Car Tracing System
YU Shigan MIAO Qing ZHANG Lianjie ZHOU Hongzhi
In this paper, the two wheels and self-balancing intelligent car, which can automatic tracking on the road, is designed and realized based on single chip microcomputer. In this system, the single chip microcomputer MC9S12XS128 of Free scale and the model of two wheels intelligent car are adopted. The software is developed based on CodeWarrior with using C language tool as development environment. Finally after testing system, intelligent car can track the scheduled track with high speed and has stable performance.
intelligent car; self-balancing; module; PD algorithm
TP242.6
A
1009-8135(2016)03-0043-04
2016-02-15
余世干(1982-),男,安徽定远人,阜阳师范学院讲师,主要研究嵌入式系统开发,数字图像.
安徽省教育厅自然科学研究项目(编号:2015FXTZK01);安徽省质量工程项目(编号:2014sxzx049,2013jyxm555);安徽省大学生创新创业训练项目(AH201413619001);阜阳师范学院自然科学研究项目(编号:2013FSKJ15)阶段性成果