APP下载

一种光电平衡智能车设计

2019-10-24陈木桂张谦黄睿马泽龙欧周

教育教学论坛 2019年39期
关键词:车模陀螺仪加速度计

陈木桂 张谦 黄睿 马泽龙 欧周

摘要:设计的光电平衡智能车方案以MC9S12XS128微控制器为核心控制器,采用TSL1401系列线性CCD作为采集跑道数据信息的传感器,用以对采集到的数据信息进行处理、计算分析后得出小车的行驶路径。在小车的直立、速度、方向控制上,硬件选择的是飞思卡爾公司的加速度传感器MMA7260、村田公司的陀螺仪ENC-03,软件控制采用PID控制算法,根据跑道的不同要求设计不同的控制策略。由于小车是直立两轮行走,需要对小车的机械结构方面进行设定,提高小车直立地在跑道上行走的稳定性。在调试方面,通过使用串口、LED状态指示灯等调试工具进行大量的硬件与软件测试,以此得出最终的设计方案。经实际结果测试,该智能车设计制作方案确实可行。

关键词:智能车;MC9S12XS128单片机;直立控制;线性CCD;PID

中图分类号:G642.0     文献标志码:A     文章编号:1674-9324(2019)39-0076-05

随着技术的发展,机械的智能化已经被广大群众所需要,而智能车辆则是其中的一个研究方向。智能车不需要经过人为操控就能按照设定,自动行驶在道路上,能自行智能判断处理前方出现的各种道路情况。智能小车是在发展现代智能汽车的背景下兴起的一个设计项目。如现在的全国大学生智能车竞赛[1],就是这类项目。竞赛要求不同组别的赛车在使用每组不同设定的汽车模型的基础上,在一系列单片机中选择适合的作为汽车核心控制模块,再加上如电机驱动电路等其他电路,另外还有重要的用来识别道路的传感器,配合程序的编写,制作一个能够辨认给定的路线,并在行驶过程中智能地作出反应,无须人为操控的模型汽车。

本系统设计采用的是光电平衡组的方案,采用TSL1401CL线阵CCD传感器作为路径检测采集模块、16位微控制器MC9S12XS128作为控制核心、陀螺仪和重力加速度计用来进行倾角计算、编码器采集计算车体速度、电机驱动电路运行电机等作为小车的主要硬件组成部分,配合适当的控制算法作为小车的软件系统,其中穿插各种不同参数的调试,最终得到一个可以直立稳定行驶的智能车。

一、总体设计

智能车是在规定的车模框架上,搭建设计好的硬件结构,再通过各类传感器收集到的信息传输到核心控制单元进行分析计算处理,传输适当的指令到电机,使其能适应各类跑道信息元素,完成循迹任务。本文采用了光电平衡组的方案,光电平衡组要求小车使用两个轮子,车身稳定直立地在跑道上循迹行进。因此,平衡小车的控制系统主要包括直立控制、速度控制、方向控制。

1.直立控制。平衡小车选用的模型由两个电机来控制,车模所需要的直立控制在这里是由负反馈进行平衡调节的[2]。直立小车与日常常见的车模不同,只有两个轮子接触地面,并只通过两个轮子行驶,所以小车在每一时刻只会在车轮前进或者后退这两个方向上倾斜。因而要控制小车的平衡,只需要控制轮子的前后加速(电机正反运动),抵消在一个维度上小车前后倾斜的趋势就能达到预期的效果。

要达到车体不同时刻的平衡需求,就需要知道此刻车体的倾斜角度。本设计选用重力加速度传感器MMA7260来测量车模倾角。MMA7260是一款三轴加速度计,可以测量三个方向上的加速度模拟信号,用于计算三维加速度。因为车子在行驶时抖动较大,会使得通过加速度计计算出的加速度与实际数值产生偏差,以致无法根据输出信号准确得出车模的倾角。所以,在加速度计的基础上,再增加陀螺仪ENC-03,ENC-03利用了旋转坐标系中的物体会受到科里奥利力的原理,在器件中利用压电陶瓷做成振动单元,当旋转器件时会改变振动频率从而反映出物体旋转的角速度。对陀螺仪的角加速度进行积分,使之跟随重力加速度计的测量值,可获取一个平滑的倾角值,利用该倾角值进行PD计算并控制电机正反转以维持小车直立。

2.平衡小车的速度控制。平衡小车的速度控制是通过正反馈来实现的,如果在小车处于平衡的状态下,给小车一个前进速度,车模就需要往行驶的正方向上倾斜,以得到加速度。但从直立控制方面来说,前倾角需要车轮在反方向上运动得到,车轮会向后运动。如此循环往复,小车很快就会倒下。如果初始化时先给定小车一个向前的倾角,直立控制调节为保持车体直立状态,会加速前进,这就达到前进的目的。而车模小于前倾角可以进行车模减速,同样的比前面倾角要小的角度会带来车模的减速,所以车体的倾角可以用来控制速度。

3.平衡小车的方向控制。本系统在设计时,使用线性CCD作为小车的循迹模块,它可以采集跑道的变化信息,并将采集到的信息反馈给单片机,使得单片机能根据当前的跑道信息进行判断,并做出对应的控制指令。跑道是由白色的行走区域和两边的黑边(边界)组成,由于白色和黑色的色值相差很大,在CCD采集到的数值中,对于跑道的边缘会有明显的突变。可以利用这突变来判断路径边界。利用采集到的突变计算出跑道的中点,与设定的中点进行差值,再进行PID控制,使输出叠加到左右两轮(一加一减),两轮就会产生速度差,从而达到转向的目的。

二、系统硬件电路设计

硬件电路是智能车系统中重要的一部分,是软件系统的基础,也是系统运行的基础[3]。在此设计中,小车的硬件系统是采用模块化的方式来设计的。整个智能车系统包括7个模块:单片机XS128微控制器、电源模块、电机驱动模块、上位机调试模块、陀螺仪与加速度计模块(计算倾角模块)、编码器测速模块、线性CCD模块。控制电路整体框图如图1所示。

1.单片机XS128微控制器。MC9S12XS128微控制单元是整个智能车系统的核心部分。MC9S12XS128是MC9S12系列的16位单片机,由16位中央处理单元(CPU12X)、128 KB程序Flash(P-Flash)、8 KB RAM、8 KB数据Flash(D-Flash)组成片内存储器,同时还包括2个异步串行通信接口(SCI)、1个串行外设接口(SPI)、1个8通道输入捕捉/输出比较(IC/OC)定时器模块(TIM)、16通道12位A/D转换器(ADC)、一个8通道脉冲宽度调制模块(PWM)以及独立的输入/输出数字I/O口。通过电源模块进行供电,并处理各种传感器采集传送来的数据(如CCD采集的跑道信息、编码器采集的速度信息、陀螺仪与加速度计采集的倾角信息等),并对这些数据进行处理,形成适合当前路径的控制信息传送至电机,驱动电机完成循迹任务[4]。

2.电源模块。电源模块是整个智能车系统中最关键、最基础的一部分,各个模块要求的工作电压也有所不同,所以还需要采用稳压芯片来对电池输出电压进行调整,电机模块所需电压为7.2V;设计中选择了7805对7.2V的电压进行稳压至5V,供线性CCD传感器与编码器使用;另外选择了两片1117将输入电压稳压至3.3V,供给单片机以及陀螺仪、加速度计等使用。

3.电机驱动模块。电机驱动模块的性能好坏直接影响智能车的加速情况,由于直立平衡小车的车模使用两个电机,并且要求能有足够大的驱动电流,较小的驱动芯片内阻、开关的频率高等特点,经过筛选,最终使用BTS7960作为驱动电机的芯片,每两片7960驱动一个电机。电机模块由单片机的PWM信号进行驱动,此模块所需电压为7.2V,由电池直接供电。

4.陀螺仪与加速度计模块。由于平衡小车是直立行走,需要对小车的倾角数据进行采集,所以在硬件设计上采用了三轴加速度传感器MMA7260和村田公司生产的ENC-03陀螺仪。计算倾角模块电路使用的加速度传感器采用的是低g值的传感器MMA7260,输出的信号足够大,所以此电路主要是将陀螺仪信号进行放大滤波。在此设计中,车模的倾角与角加速度的计算都是使用单片机进行数据计算得来的,这属于软件设计部分,因而需要另外使用计算方法。

5.编码器测速模块。使用双线编码器作为测速模块,由编码器得到的信号传送给单片机进行速度计算。实际检测出的速度与想要设定的目标速度进行比较,就可以使用合适的算法将实际速度变化为目标速度,已达到加减速的效果。

由于XS128单片机只有PT7通道可以进行脉冲计数,而平衡小车需要对左右两轮分别进行脉冲技术,在其中一个编码器连接到单片机的PT7上后,还需要对另外一路编码器进行脉冲计数,通过添加外部计数器CD4520的方法来实现第二路的测速。

6.线性CCD模块。TSL1401CL线性传感器由128×1列的光电二极管组成,当线性CCD连接单片机的一个AD通道时就可以读取一行的128像素点的信息。而跑道信息的采集就依靠此传感器不断收集并传送给单片机,该模块是小车循迹行走极为重要的模块。

三、车模机械结构设计

除了硬件电路需要设计小巧,车模的机械结构方面也需要注意重量。小车在直立行驶的情况下,受惯性影响较大,在不影响元器件的摆放与布线的情况下,尽可能地减少所需空间,这样固定电路板也更为方便,整车如图2所示。

1.车模底盘固定。未经过改装的车模后轮的支架与底盘之间是活动连接的,这样可以降低后轮震动对整体车模的影响[5]。但是,要保证车模在直立情况下车体的稳定性,需要将原有车模活动的后轮支架与底盘固定在一起。因此,使用了一块接近矩形的废置电路板(硬度足够)对支架与底盘进行加固,增强车体的稳定性,防止底盘的抖动给传感器带来不必要的影响。固定底盘如图3所示。

2.编码器安装。小车运行时需要对其速度进行检测,就需要为小车增加两个编码器,用于测量左右轮的速度。为了便于安装,这里使用了小块的PCB板对编码器和支架进行连接。连接好后,就需要对齿轮的咬合度进行调整。考虑到如果咬合过紧会增大摩擦,增加电机的负担,而咬合过松容易损坏齿轮。在大致调整了咬合度后,用手旋转俩轮子,根据转动感受再进行微调,尽量使其咬合适当紧密,增大测速的精准性。编码器的安装效果如图4所示。

3.电池位置选定。选用的车模对电池位置没有要求,因此,可以根据重心以及美观等各种因素选定电池固定的位置。在设计方案中,是根据低重心的前提来选定电池的位置,这样的选择会让车子在运行过程中(尤其在转弯处)更加稳定。此方案将电池安放在小车前进方向的正面。电池安装位置的正面与侧面如图5所示。

4.主电路板安装。此设计在一块电路板上集合了电源电路、电机驱动模块、陀螺仪和重力加速度计模块等。第二路测速电路则另外加在一小板上(安装于主电路板的下方),使用杜邦线连接主电路板。主电路板安装在小车前进方向的背面,电机的上方。由于主电路板中含有陀螺仪和重力加速度计的测倾角模块,所以主电路板的安裝一定要尽量保持水平,减少测量倾角产生的误差。电路板的安装如图6所示。

5.线性CCD安装。小车转弯需要提前知道前方道路信息,所以线性CCD要有一定前瞻,因此需要架高线性CCD。由于小车设定的速度值并不算太高,所以只将CCD架至一定高度,能达到提前判断的效果即可。而侧方位的CCD是为了检测直角的拐弯,小车只使用一个CCD作为判断的传感器就显得有点力不从心,所以增加了一个辅助CCD,用于帮助小车进行直角左拐的判断。主CCD与辅助CCD安装与固定位置如图7所示。

四、系统软件设计与实现

小车是否能够在跑道上正常地行走,除了稳定的硬件系统之外,还需要软件系统的设计。这里主要有四个部分:直立控制、方向控制、速度控制以及单片机的初始化。

1.软件系统程序的整体控制。软件系统中的控制程序主要使用XS128单片机的PWN模块、AD模块、SCI模块、TIM模块、PIT模块等。PWM模块用于控制电机的运转;AD模块用于读取线性CCD采集的跑道数据、加速度计和陀螺仪采集到的倾角数据等信息[6];SCI模块主要用于串口调试;TIM模块主要用于编码器数据的采集;PIT模块主要用于设置程序的定时中断。

整个软件系统程序采用的是PIT定时中断和PID算法控制。主程序框图如图8所示。

2.直立控制。智能车的直立控制部分是整个软件设计中最基础也是最困难的一步,直立平衡组的小车最基本的要求就是小车直立。小车只有直立起来,才算做好了小车能够运行的第一步。

要计算小车当前的倾角,需要知道小车在直立状态下陀螺仪和加速度计的数值。在小车保持直立静止时,连接单片机AD通道读取的数值就是相应的零偏值。但是每次开机运行时,零偏值都会有所变化,所以在设计中选择了每次开机都自动读取零偏值的方法。

车模角度和角速度的计算的调试可以在设置好陀螺仪与加速度计各自的比例系数后,得到一个归一化的数值,这个数值在-90到90之间,对陀螺仪读出来的数值与重力加速度计读出来的数值进行跟踪,当这两个比例系数设置相适宜的时候,加速度计Z轴输出的变化量可以看到与陀螺仪角度的变化量是基本相同的,当改变车模倾角的时候,两个归一化的数值能进行相同的变化,并且变化基本相同。

另外,将加速度计归一化得到的车模角度与陀螺仪归一化得到的角速度乘以各自的系数可以算出当前车模的直立控制输出量,由于每个加速度计与陀螺仪都不会相同,所以不同的加速度计与陀螺仪的使用的系数都无法作为参考,只能慢慢地采用不同的数据进行测试。通过不断地修改测试,得出最适合的直立控制系数。

3.速度控制。小车在保持直立静止状态下得出的零偏值存在一定的偏差,由于这个偏差的存在,小车没办法一直保持直立平衡静止状态,会有一个加速运动。速度控制可以消除这一运动趋势。小车的速度控制是进一步稳定车模的直立状态的控制[7]。

由于直立车的速度控制实际是改变车模倾角,因此速度控制对于直立控制是一种扰动,速度控制周期不能过大,控制量要平滑输出。设计中选择速度控制的周期为100毫秒。

4.方向控制。线性CCD的成像区域基本可以认为是一条状区域,CCD每采集一次数据,就能得到一行128个像素点的值。对于跑道来说,两边边缘是黑色,而中央为白色,所以同样亮度的情况下,一行采集到的点,中间的点的数值会比边缘的值大。利用这个方法可以找到跑道的边缘黑线,从而得以提取跑道中线,通过得出的中线值用以计算车模的电机差值驱动电压。在车子拐弯的时候,例如在左拐弯的时候,采集到的就不是如同直线的效果,这时候CCD采集到的128个像素点左边的黑色点就变成了白色,拐弯弧度大的时候有可能左边变为全白,右边的黑色像素点增多。

五、调试过程

在小车系统的设计制作和调试的过程中,无论是硬件电路的仿真、电路板的制作还是软件系统的开发,都需要使用电脑作为辅助设计的工具。在设计电路板方面,设计中使用的辅助开发工具是Altium Designer。软件开发方面选择的是CodeWarrior软件开发环境作为软件开发与调试的工具,此开发环境有专门为MC9S12XS128单片机提供的全套开发工具,使用的是C语言进行编写。

虚拟示波器Visual Scope软件对重力加速度计和陀螺仪计算所得倾角进行追踪,趋向车模实际倾角的数值(通过互补滤波来融合重力加速度计和陀螺仪值得到)与加速度计所得倾角的追踪情况来比较,以此为基础修改相应参数。角度融合情况对于小车的直立控制而言非常关键。图9所示为虚拟示波器Visual Scope输出的GravityAngle加速度计计算倾角、CarAngle陀螺仪加速度计融合后计算倾角两者跟踪正常的情况。

加速度计归一化成角度信号的比例值可以通过测量加速度计Z轴+90度与-90度采集到的最大最小值的简单计算得到:180/(MAX-MIN)。这样就选定了加速度计的比例系数[8]。之后需要选定陀螺仪的比例系数,这个系数的大与小会影响到计算得到的陀螺仪角度与加速度所得倾角的追踪效果。如果这个系数过小,倾角改变的时候,陀螺仪角度计算数据无法在短时间内跟上快速变化的角度;而过大,这时候会出现过冲的现象,角度突然改变,陀螺仪数据会突然增大。这些都是陀螺仪比例系数设置不正确的情况,系数基本适宜的情况下,陀螺仪与加速度计在车体有角度变化的时候,计算得到的角度变化基本是一致的。图10是陀螺仪比例系数过大或者过小的输出显示。

在控制方面,PID控制算法在车模直立、速度、方向上都有使用。在直立控制上,这里选用比例P与微分D来进行控制,车身的倾角是通过加速度计和陀螺仪进行角度互补融合获取的,而控制电机的驱动电压,则是由计算得到的车身倾角与陀螺仪的角速度进行PD控制得来。加上比例参数P,相当于在车身倾斜的时候给车模一个回复力,帮助车子回到原来静止直立的状态,这个值在一定范围内,越大越容易在短时间内恢复到原来的直立状态。但是在这个值过大的情况下,车身由于快速回复车体位置,车模会来回摆动。这时微分参数D起到一个平缓的作用,能有效地减少车模摆动。

速度控制参数,是通过P和I(积分)来调整的,积分控制能使速度最终稳定在给定速度,比例控制能实现速度的快速调节。

方向控制参数,则是通过P和D来调整的。把安装好CCD传感器的小车放在黑白跑道上,此时的速度应该设置静止的0速,当左右摆动车身,随着小车渐渐增大比例参数,能明显看到车模被摆在偏移跑道方向后,回到原来跑道正方向的速度逐渐加快。微分参数用来控制P值过大时产生的左右摆动,达到能迅速回到原方向上的结果。

六、结语

本文设计的光电平衡智能车完成小车的直立、速度、方向控制,系统包括单片机XS128微控制器、电源模块、电机驱动模块、上位机调试模块、陀螺仪与加速度计模块(计算倾角模块)、編码器测速模块、线性CCD模块,根据赛道的不同要求设计出不同的PID控制策略。测试结果表明,该智能车设计制作方案确实可行。

参考文献:

[1]卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大学出版社,2007.

[2]张阳,吴晔,滕勤.MC9S12XS单片机原理及嵌入式系统开发[M].北京:电子工业出版社,2011.

[3]Freescale半导体公司.MC9S12XS128中文版[Z].2009.

[4]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.

[5]杨亭.电子CAD职业技能鉴定教程(proteI DXP 2004 SP2)[M].广东:广东人民出版社,2014.

[6]競赛秘书处.电磁组直立行车参考设计方案(版本2.0)[Z].2012.

[7]飞思卡尔半导体大学计划部.Freescale智能车入门手册(V0.6)[Z].2010.

[8]焦作,华润,白志刚.由入门到精通—吃透PID2.0版[Z].2014.

Design of A Photoelectric Balance Smart Car

CHEN Mu-gui,ZHANG Qian,HUANG Rui,MA Ze-long,OU Zhou

(Department of Computer Science,Guangdong University of Education,Guangzhou,Guangdong 510303,China)

Abstract:The photoelectric balance smart car scheme designed in this paper uses the MC9S12XS128 microcontroller as the core controller and the TSL1401 series linear CCD as the sensor for collecting runway data information.Used to process the collected data information,calculate and analyze the travel path of the car.In the upright,speed and direction control of the car,the hardware selection is Freescale's acceleration sensor MMA7260,Murata's gyroscope ENC-03,software control uses PID control algorithm,and different control strategies are designed according to the different requirements of the runway.Since the trolley is an upright two-wheeled walk,it is necessary to set the mechanical structure of the trolley to improve the stability of the trolley walking upright on the runway.In debugging,a large number of hardware and software tests are performed by using debugging tools such as serial port and LED status indicator to obtain the final design.After the test,the smart car design and production plan is indeed feasible.

Key words:Smart car;MC9S12XS128 MCU;Upright control;Linear CCD;PID

猜你喜欢

车模陀螺仪加速度计
基于加速度计的起重机制动下滑量测量
基于EMD的MEMS陀螺仪随机漂移分析方法
潮玩车模精准吸引“Z世代”
我国著名陀螺仪专家——林士谔
车展,没有车模看什么
基于遗传算法的加速度计免转台标定方法
微机械陀螺仪概述和发展
常温下硅微谐振加速度计零偏稳定性的提高
MEMS三轴陀螺仪中不匹配干扰抑制方法
四加速度计组合的测试方法研究