双轮自平衡小车系统设计与制作-硬件部分

摘 要

近几年来,随着汽车技术的快速发展,很多新兴技术涌现出来,其中就包括双轮自平衡小车技术。这项技术在很多方面都得到了体现,在交通方面施展了尤为强大的作用,其应用也逐渐深入到日常生活中,现在生活中常见的双轮自平衡电动车便是最常见的代表。本文侧重介绍以MC9S12XS128芯片为主控制器的双轮自平衡小车的设计方案。

智能车采用村田公司的陀螺仪ENC-03和飞思卡尔公司的加速度计7260来协调控制,达到精确检测角度的目的,检测出小车的倾角,反馈到单片机来控制小车直立的过程。同时本智能车控制系统用PWM 控制技术来驱动电机运行,控制小车直立,还采用PID 控制算法使小车达到最佳的运行状态。进行正确的软件编译,下载程序完成调试后,控制系统全部完成后,真正理想的效果是,各个模块相互协调并稳定工作,能通过系统控制自动达到直立的效果,如果有适当干扰量引入,小车还可以自主恢复直立状态。同时控制系统还能够控制小车实现前进,后退等根本行动。

关键词:双轮自平衡小车;MC9S12XS128芯片;PID 控制算法;PWM 控制

Abstract

In recent years, with the rapid development of automotive technology, many new technologies emerged, including the two wheeled self-balancing robot technology. This technology in many aspects have been reflected, in terms of transportation cast is particularly powerful role, its application has gradually penetrated into daily life, now common two wheeled self- balancing electric vehicle is the representative of the most common. This paper focuses on the design scheme of two wheeled self-balanced vehicle with MC9S12XS128 chip as the main controller.

Smart car uses Murata gyro ENC-03 and Freescale acceleration meter 7260 coordinated control, to achieve the goal of high precision angle and angle detecting car, feedback to the MCU to control the car upright. At the same time, the intelligent vehicle control system uses PWM control technology to drive the motor running, control the car upright, and the PID control algorithm to achieve the best running state of the car. To correct software compiler, Download finished debugging, control system completed, is really the ideal effect, coordination and stable work of each module, through the control system automatically to erect the effect, if the introduction of appropriate amount of interference, the car can also to independent recovery of upright. At the same time control system can control the car to achieve forward, back and other basic movements.

Key words: Two wheeled self-balancing vehicle; MC9S12XS128 chip; PID control algorithm; PWM control

目 录

1 绪论 .................................................................. 1

1.1 课题的选题背景与意义 ............................................. 1

1.2 双轮自平衡车国内外发展概况 ....................................... 1

1.3 课题研究的主要内容 ............................................... 2

2 智能车系统原理分析与设计 .............................................. 3

2.1 控制系统原理分析 ................................................. 3

2.2 控制系统总体设计方案 ............................................. 4

2.3 双轮自平衡车的姿态检测系统 ....................................... 5

2.3.1 加速度计 .................................................... 6

2.3.2 陀螺仪 ...................................................... 6

2.3.3 卡尔曼滤波 .................................................. 7

3 自平衡车系统硬件电路设计 .............................................. 9

3.1 MC9S12XS128单片机介绍 .......................................... 9

3.2 MC9S12XS128单片机最小系统电路设计 ............................. 10

3.3 电机驱动模块电路设计 ............................................ 13

3.3.1 驱动芯片介绍 ............................................... 13

3.3.2 驱动电路设计 ............................................... 13

3.4 电源管理模块电路设计 ............................................ 13

3.4.1 电源的分类 ................................................. 14

3.4.2 双轮自平衡车电源电路设计 ................................... 14

3.5 倾角传感器电路设计 .............................................. 15

3.5.1 加速度计电路设计 ........................................... 15

3.5.2 陀螺仪放大电路设计 ......................................... 15

3.6 速度测量模块设计 ................................................ 16

3.7 辅助调试电路设计 ................................................ 17

4 自平衡车系统软件设计 ................................................. 19

4.1 系统软件总体结构 ................................................ 19

4.2 基于PID 算法的实现 .............................................. 20

4.2.1 PID 分类 . ................................................... 20

4.2.2 比例积分微分各部分介绍 ..................................... 20

4.2.3 PID 参数的整定 . ............................................. 21

4.3 双轮自平衡车直立模块软件设计 .................................... 22

4.4 双轮自平衡车速度控制模块软件设计 ................................ 22

4.5 电机转速的控制 .................................................. 24

5 自平衡车系统的安装与调试 ............................................. 27

5.1 小车整体结构的安装 .............................................. 27

5.1.1 速度传感器的安装 ........................................... 28

5.1.2 倾角传感器和陀螺仪的安装 ................................... 28

5.2 系统的调试工具 .................................................. 29

5.3 自平衡车系统的硬件调试 .......................................... 30

5.3.1 加速度计和陀螺仪的调试 ..................................... 30

5.3.2 电机驱动模块的调试 ......................................... 31

5.3.3 速度编码器的调试 ........................................... 31

5.4 自平衡车系统的静态调试 .......................................... 31

5.5 自平衡车系统的动态调试 .......................................... 31

6 总结与展望 ........................................................... 33

6.1 总结 ............................................................ 33

6.2 展望 ............................................................ 33

致 谢 ................................................................... 34

参考文献 ................................................................ 35

1 绪论

1.1 课题的选题背景与意义

近些年来随着我国科学技术的飞速进步,自动化技术也随之越来越普及,深入到人们的生活中,双轮自平衡小车便是一种高新技术的集成体。双轮自平衡小车是一个归纳着电子技术、机械、计算机等多门技术部分的高新技术手段,随着各有关领域范畴的飞快进步,它不单单拥有理论科学上的研究意义,甚至是代表着一个国家的综合科学实力。现代的工业汽车虽然相对的给人们带来了便利,但是也带来了交通拥堵,与大气污染方面的环境问题。与此同时,双轮自平衡小车利用自身电能来运行,并且体积轻小,运行自由,如果将此项技术广泛应用到生活中,势必会极大的减轻交通负担,缓解人们的出行压力,同时也能起到保护环境,降低能源消耗的作用。双轮自平衡智能小车是可以进行行为控制、环境检测、执行任务的综合控制系统,应用范围也越来越广泛,随着技术的发展,机器人也会代替人类做一些不能代替的任务,在未来如果把双轮自平衡小车技术和传感器、GPS 导航等设备组合在一起,使各自功能相互协调工作,应该会具有更广泛的应用前景,为人们的生活带来便利。

1.2 双轮自平衡车国内外发展概况

双轮自平衡小车技术近几年得到了快速的发展,国内外的相关专家与技术人员均为之付出了巨大的努力,研究成果也为科学的发展做出了相应的贡献。国外方面科研成果主要有瑞士联邦工业大学电子实验室的Felix Grasser等人设计出利用DSP 控制方法,可以进行远程操控的双轮智能移动机器人Joe , 它超越了人类步行的速度,并能自主保持稳定。同时还有Segway LLC开发了赛格威两轮自平衡机器人,本身使用的工作原理的动态的稳定性,通过车辆本身的自动平衡能力,来达到平衡稳定与行走。这其中最为先进的是,由谷歌的工程师塞巴斯蒂安还有他的团队共同设计制作出的,谷歌版的无人驾驶车。此项新型智能车,通过自身装备的激光雷达、车载相机还有激光测距仪,借用这些技术来观察周围交通车辆的行驶状况,并根据自身带有的车载地图来完成汽车的行驶,为人们的交通出行提供了便利。该项技术最重要的研究成果,便是为未来无人驾驶的车辆研究做出了其重大的贡献,如何来提高运行质量以及降低事故发生率是要面对的棘手问题与挑战。

中国也已经在两轮自平衡车的发展上取得了巨大的成就。哈尔滨工业大学采用DSP 算法作为控制核心,利用PWM 技术控制电动机转速,从而研究出可以实现自主平衡控制的双轮机器人,自身可以实现平衡控制与数据交换功能。另一著名高校西安交通大学,制作了一个把伺服放大器ADS 当作控制器,同时选取自适应神经模糊控制器对小车进行控制,顺利完成能够直立的双轮自平衡小车。 随着智能车技术的不断发展,我国也越来越重视相关方面的发展与教育,飞思卡尔杯全国大学生智能车竞赛便是其中重要的项目之一。Freescale 杯智能汽车比赛, 韩国是它的起源地,飞思卡尔公司赞助了韩国的一些相关大学,从而顺利举行的大学生课外科技比赛。举办方会供应一个参考的汽车模型、以及直流电机和可充电的电池,参赛人员要求制作一个可能自主判别途径的智能车,在比赛专用计划的跑道上,能够自立辨认途径运动,最快跑完全程者而且没有发生失误的,综合技能报告评分较高的为获奖者。其涉及的内容涵盖了控制系统、汽车电子电路、虹膜识别、传感器原理、电气控制技术、计算机原理、机械制造设计、能源利用等许多方面技术的原理,并且对学生的实物技术与理论知识的结合,实践动手能力的培养,具有良好的推动与发展作用。此项赛事已经得到了越来越多高校的认可,近些年参赛高校与队伍日益增多,培养了大学生的创新意识与动手操作能力,为广大高校提供了一个教育培养学生的平台,使学生可以学到更多的智能车的相关知识,为学生日后的发展与学习打下了良好的基础。

1.3 课题研究的主要内容 本课题要求制作策划出一个可以实现自主平衡的,智能双轮自平衡小车,我们以

MC9S12XS128为主控制器,通过陀螺仪和加速度计测出角度,传感器将测得的角度值以数字信号传送到单片机上,同时利用PWM 控制驱动电机,控制小车的运行。研究的主要内容包括:第一、控制电路设计,包括主控单元的电路设计,电源模块电路设计,电机驱动电路的电路设计,以及相关其他控制电路的设计。第二、控制系统设计,包括电源模块,速度倾角测量模块,还有其余的各种串口模块的设计。第三、PID 控制算法,包含电机的速度闭环控制还有小车倾角的闭环控制。PID 控制尽管是一种非常老练的工业控制方式,但是在智能汽车领域,还需要克服相关参数对控制器产生的干扰,亦然本研究中重点和难点。第四、小车的运行流程控制,通过软件编程正确编译控制程序,进行相关调试达到自主平衡,并稳定运行的效果。

2 智能车系统原理分析与设计

2.1 控制系统原理分析

双轮自平衡小车的控制系统是经过负反馈原理达到既定目标的,基于车模本身机械机构的设置,小车依赖自身的车轮与外界接触,车轮与地面之间会产生相对转动,这样小车就会倾斜。与此同时,其上本身装有的姿态检测系统会相应的对小车的倾斜状态及时地检测与分析,经过控制器来控制车轮的转动,消除偏差与干扰,便可以使小车保持平衡的状态,原理如图2.1所示。

图2.1 小车保持平衡原理图

根据双轮自平衡小车控制系统的要求,小车本身是要可以在无外界干扰的情况下,依赖自身具有的一双平行的车轮来维持平衡,并且顺利完成前进,后退等基本动作。分析系统的要求我们可以知道,使小车保持直立和运动的就是该车的两个轮子,这是由两个直流电机驱动的。本次设计应用了模块化的设计理念,将复杂的整体,分解成较易实现的几个模块来进行研究。本设计中使用双轮自平衡车的两个后轮,为小车保持竖立以及运转提供足够的支持,并经过两个直流电机,来驱动车模的后轮转动。所以说,从小车控制的角度来思考,我们不妨将小车本身作为一个控制目标,整个系统总的来说,控制的输入量是两个车后轮的转动速率。小车的控制系统是一个完整的控制目标,整个控制系统又可以策略性地把它分为三个部分系统:

一、小车的平衡控制系统:把小车的倾角作为输入量,通过控制电机正反转,来保持小车平稳运行[3]。

[3]二、小车的速度控制系统:在保持平衡的前提下,通过对倾角的控制来转而实现对速度的控制,其本质是通过电机来控制小车的速度

[3]。 三、小车的方向控制系统:其实质是两个电机的转速不同,从而来控制小车的方向。

小车系统的直立和方向控制目标,全是经过直接控制车模自带的两个后轮驱动电机来完成的,而小车的速率控制则是通过调整小车的倾角来实现的。小车不同的倾角会导致车模的加速和减速,从而来达到对小车进行速度控制的目的。三个部分系统都是各自独立进行控制,由于最终结果都是对小车的电机进行控制,所以三个系统之间存在着耦合关系,为了方便我们理解分析,在分析其中之一的控制系统时,我们先假设其它控制系统都已经是稳定状态[3]。例如,在进行速度控制的时候,小车要求能够保持自主直立状态;在进行方向控制的时候,小车要求可以保持平衡状态和速度的恒定状态;在进行平衡控制的时候,也需要保证速度和方向这两个方面都已经达到平衡状态。这三个任务中最重要的是保持小车的平衡。由于双轮自平衡小车控制系统在同一时间有三种不同的控制效果,所以从小车保持平衡控制的角度来看,干扰量就是剩余两个控制系统。因此我们对小车进行速度控制、方向控制时应该尽量保持平稳,来减少对小车平衡控制的干扰。就以速度调节来说,我们要求经过改动小车平衡控制中,小车的倾角设定值,从而来改变小车实际的倾斜角度,进而来达到速度控制的要求。与此同时,为了避免对小车的平衡控制造成影响与干扰,小车的倾角需要慢慢变化。综合整个双轮自平衡小车控制系统来说,最根本的是小车的平衡控制,然后是速度控制,最后如果有条件完成的话就是转向控制,整个设计中完成小车的直立是根本,同时这也是整个控制系统的难处所在。

2.2 控制系统总体设计方案

双轮自平衡小车的设计思路,是通过陀螺仪加速度计的值来得到准确的角度值,通过MC9S12XS128单片机,采用PID 控制算法使双轮智能车保持直立。同时,通过PWM 控制驱动电机运转,使小车保持稳定的运行状态。双轮自平衡车共包括六大模块:其中有MC9S12XS128主控模块、传感器模块、电源管理模块、电机驱动模块、还有速度检测模块和辅助调试模块[1]。MC9S12XS128 单片机作为双轮自平衡车的控制中心,会将光电编码器测出的小车速度信息,以及陀螺仪加速度计测出的小车角度信息,根据控制

算法在内部进行相应计算,得出相应输出结果,让驱动直流电机来实现对双轮自平衡小车的控制。电源管理模块的作用是为整个控制系统提供合适并且稳定的电源。电机驱动模块的作用是驱动两个电机共同完成对自平衡小车的加速控制、减速控制还有方向控制。速度检测模块是用来检测反馈双轮自平衡小车车轮的转速,来进行速度的闭环控制,使双轮自平衡小车能够稳定运行。各个模块必须完成自己的工作任务,同时又相互协调,最终使小车达到稳定的状态。双轮自平衡小车的总体设计框图如图2.2所示。

图2.2 双轮自平衡小车总体设计框图

2.3 双轮自平衡车的姿态检测系统

双轮自平衡智能车本身是一种特殊的控制系统,它和普通的传统结构的直立车的区别是,其自身是一种本质极不稳定的非线性系统。小车本身必须不时地调整自己的角度,来实现动态平衡的状态。综上所述,小车需要实时检测自身的倾角,并且根据检测结果

进行相关合理的调整,从而顺利达到动态平衡的控制效果,因而姿态检测,便是控制小车自主直立平衡的关键所在。本设计中便是采用加速度计和陀螺仪,构成双轮自平衡小车的姿态检测系统。

2.3.1 加速度计

加速度计是一种衡量运输体线加速度的工具,加速度计由检测质料、支撑、电位器、阻尼器、和壳体组成。按用途分类可以分为线性加速度计、摆式加速度计、角加速度计等。本系统是采用飞思卡尔公司的三轴加速度计MMA7260,它是一种三轴低g 值的加速度计,具有小量程的线性加速度传感器,在不运动或不受重力作用的条件下,输出为

1.65V ,最大测量范围为0-6g ,可以同时输出三个方向上加速度模拟信号,各轴的输出信号灵敏度最高可到800MV/g[9]。MMA7260实物如图2.3所示。

图2.3 加速度计MMA7260

2.3.2 陀螺仪

陀螺仪本身是一种迅速自传的动量力矩敏壳体,就其本身来说,绕正交于自转轴运行的角运动监察工具,可以将其用来检测角速度。陀螺仪的种类很多,按用途可以分为传感陀螺仪和指示陀螺仪。本小车控制系统利用的陀螺仪,是日本村田公司根据新型技术生产的单轴陀螺仪ENC-03,图2.4是此次设计当中用到的陀螺仪。它的基础实质上是使用了物体在坐标系的运动当中,会受到外界科里奥利力的原理,在材料中利用压电陶瓷做成波动的单元。旋转器件时会改变自身原本的振动频率,从而反映出物体旋转的角速度。ENC-03体积小、响应快、功耗低、成本小,并且是采用模拟量输出,检测范围可到达±300deg/sec,灵敏度为0.67mv/deg/sec[9]。

图2.4 陀螺仪ENC-03

2.3.3 卡尔曼滤波

卡尔曼滤波是使用线性体系状态公式,经历系统输入输出观察数据,对系统状态进行最优估量的算法。因为观察数据中囊括体系中的噪声和滋扰的影响,最优估计也可看作是滤波进程。由于使用一个单一的传感器,陀螺仪和加速度计的设计,很难获得真正的姿态角度,为了获得更为精确的小车角度,所以本系统采用多传感器数据融合系统的信号,进而获得最佳姿态角度。 斯坦利·施密特初次完成并兑现了卡尔曼滤波器。当他在埃姆斯研究中心访问时,发现利用他的方法对于解决阿波罗计划的轨道预测很有用,

后来阿波罗飞船的导航电脑使用了这种滤波器。它具有很强的实际应用性价值,卡尔曼滤波器本身是一种高效率的递归滤波器,能够从一系列不完全以及包含噪声的测量中,估计动态系统的状态,卡尔曼滤波器不仅能估计信号的当前和过去的状态,甚至能估计信号将来的状态[6]。

1、卡尔曼滤波是一个算法,它适用于线性、离散和有限维系统。每一个有外部变量的自回归移动平均系统或可用有理传递函数表示的系统都可以转换成用状态空间表示的系统,从而能用卡尔曼滤波进行计算

[6][6]。 2、任何一组观测数据都无助于消除x(t)的确定性。增益K(t)也同样地与观测数据无关。

3、当观测数据和状态联合服从高斯分布时用卡尔曼递归公式计算得到的是高斯随机变量的条件均值和条件方差,从而卡尔曼滤波公式给出了计算状态的条件概率密度的更新过程线性最小方差估计,也就是最小方差估计[6]。

随着数字科学计算技术的进步,卡尔曼滤波器也得到了越来越广泛的应用,尤其是在自主导航领域。它与大多数滤波器的不同之处在于,本身是一种单纯的时域滤波器,不用像低通滤波器等频域滤波器,要求在频域计划再改变到时域实现。很多问题用卡尔曼滤波器来解决,都会收到很好的效果。卡尔曼滤波的一个典范性实例便是对物体地势

的,包蕴噪声的观察序列预测出物体的坐标上的相对位置还有速度. 在当今不少工程使用如雷达, 计算机视觉中都能够找到它的身影。同时,卡尔曼滤波器是一个重要的课题,在控制理论和控制系统工程中。在现代社会,卡尔曼滤波器的普遍使用已经有将近40年的时间,领域网络了有机器人控制、远程操作、传感器数据交融,乃至在军事方面的雷达探测系统和导弹循迹等领域。最近这些年也是被广泛被应用于计算机图像的处置,例如头脸判别,图像的拆分,图像边沿检测等日常生活所需的地方。随着科学技术日新月异的发展,它必将会被应用到越来越多的方面之中。

3 自平衡车系统硬件电路设计

3.1 MC9S12XS128单片机介绍

本双轮车系统,是用Freescale 旗下的MC9S12XS128单片机作为主控芯片。

MC9S12XS128是一个16位器件,由16位中央处理单元(CPU12X ),128KB 程序Flash , 8KB 数据Flash ,8KB RAM组成片内存储器,同时还包括2个异步串行通信接口(SCI ), 1个串行外设接口(SPI ), 1个8通道输入捕捉输出比较定时器模块(TIM ), 16通道12位A/D转换器和一个8通道脉冲宽度调制模块(PWM )。MC9S12XS128拥有91个单独的数字I/O口,当中的一些具有中断和唤醒功能。

MC9S12XS128的主要特征蕴含以下几个方面:

(1)16位CPU ,具有7级嵌套的中断,每个中断源的中断级别可以配置灵活,外部非屏蔽高优先级中断

[2][2][2]; (2)系统具有完整性,上电复位,时钟监视功能,COP 看门狗,非法地址检测复位;

[1](3)128KB 的程序存储器,8KB RAM,8KB 数据存储器

[2]; (4)8位/12位分辨率可选,具有左对齐还有右对齐数据转换功能,16个模拟输入通道,引脚能用于数字I/O口;

[2](5)8通道16位输入捕捉和输出比较功能,16位计数器,1个16位脉冲累加器

(6)4通道24位模数递减计数器,可产生超时中断,可用超时触发外设

[1][2]; ; (7)提供8通道8位或4通道16位的脉冲宽度调制器,每个通道可以单独编程设置周期和占空比,可设置输出信号中央对齐或者左对齐

[2]; (8)可配置8位或者16位数据长度,全双工或单线双向模式,串行时钟相位和极性可选,双缓冲的发送和接收功能

[2]; (9)2个全双工或单线工作方式,13位波特率选择,可编程的字符长度,边沿有效接收唤醒;

[2](10)最多91个通用I/O口引脚和2个专用输入口引脚,可配置输入引脚上拉或下拉电阻,可配置输出引脚驱动能力。

S12X 系列的单片机的中央处理器CPU 是通过以下三个方面来构成:算术逻辑单位ALU 、系统控制单元和寄存器组。正常情况下单片机外部选用8MHz 或16MHz 的石英晶体振荡器,它可通过其里面的锁相环,使片内总线速率提升到最大值120MHz ,其寻

址方法总共有16种。单片机内部寄存器组中的寄存器、堆栈指针以及变址寄存器都是16位的。CPU12X 具有一个16位的累加器D ,虽如此仍可分别看成两个8位累加器A 和B ,分为高位和低位。cpu12x 寄存器组,囊括以下5个部分。

(1)16位的累加器D 或者是8位累加器A 和B ;

(2)16位的变址寄存器X 和Y ,处理地址是它们的首要任务,可分别用在源地址和目的地址指针型变量的运算;

(3)16位堆栈指针寄存器SP ;

(4)16位流程计数器PC ,运行的时候指向的是下一条指令的地址;

(5)16位条件码寄存器CCR ,在这一点上和cpu12有区别,要尤其注重。

MC9S12XS128所具有的加强型输入捕捉定时器的特征主要有以下几点:

(1)16位的自由运行时钟,8位的分数因子;

(2)8个16位输入捕捉或输出比较;

(3)1个16位的脉冲累加器。

MC9S12XS128单片机的脉宽调制模块(PWM )可设置成8通道8位或者4通道16位,占空比能够编程,脉冲波形可以中心对齐或边缘对齐。它有两个异步串行接口SCI ,可选用通俗的非归零码或IrDA1.4归零码并且支持LIN 总线协议,另外有一个同步串行的外设接口SPI 。MC9S12XS128的J 、H 和P 口当有输入信号跳变沿会产生中断、使用CPU 的功能,根据封装方式,至多可有20个带位中断的引脚。MC9S12XS128时钟发生器,可以使用范围2~16MHz的外部晶振频率,通过锁相环频率合成器,产生更高单片机内部总线周期,当外部时钟缺失时,内部提供自时钟方式,直到外部时钟恢复为止

[1]。

MC9S12XSl28支持在线编程,这种工作方式就是在线写入、擦除、在线下载程序。所谓的在线编程的基本原理是,单片机芯片内的CPU 有能力对片内Flash 进行写入、擦除等操作,我们需要采取办法,将数据传送给单片机。单片机的编程接口除了实现Flash 的写入、擦除功能外,还可被用来应用程序的调试,乃至在应用程序中运行的同时,能够动态地获取CPU 寄存器的值,以及存储器等的瞬态信息,这就是所谓的

BDM(Background Debug Mode)调试方式。这种调试方式我们将在之后详细介绍。

3.2 MC9S12XS128单片机最小系统电路设计

本设计采用MC9S12XS128为主控制器,主要包括单片机供电、复位电路、时钟电路以及BDM 接口电路。由于芯片本身里面集成了PIM 、TIM 、PWM 、SPI 、SCI 、ECT 、CAN 、AD 、PIT 许多模块,因此使用方便。MC9S12XS128拥有3种封装形式,它们是64引脚封装,80引脚封装和112引脚封装。本设计中采用是80引脚的封装系列,其最小系统原理图如图3.1所示。

图3.1 MC9S12XS128单片机最小系统原理图

时钟电路可以使用的,外部晶振频率范围是2~16MHz,当然还可利用MCU 内部具有的5位可编程分频因子,做2~64分频,使之产生频率更加稳定的时钟信号。经过控制器内的锁相环电路(PLL )进行倍频的话,其压控振荡器(VCO )的频率最高可达80MHz ,由于S12XS 芯片系列,允许使用的最高总线频率为40MHz [4]。本计划中选用的是外部的晶振为16MHz ,外部时钟的起振电容是电容C11还有C12。电路的组成部分包含了电阻、电容还有石英体振荡器。由于系统稳定性较差,所以,我们需要添加外部晶振来

提高电路的稳定性。理论上如果单片机的工作速率较快的话,我们越需利用单片机内部

自发产生的高频振荡来作为系统的时钟,但它还是需要外部的支持来达到理想的运行状态。

当单片机运行到睡眠模式的时候,时钟振荡电路的输入端,被其内部带有的200欧姆的下拉电阻拉低,这时候振荡电路会停振,既而会达到省电的目标。图3.2所示为单片机最小系统时钟电路原理图。

图3.2 时钟电路原理图

单片机的外部复位电路,能够利用按钮和电容构成,当然还能使用特制的复位芯片组成。由于投入的经纪有限,本计划中采用的是由电阻和电容构成的简单复位电路,如图3.3所示。加电后,由于电容器的充电时间存在,复位仍然较低,并且单片机会复位;过了一会以后,电容的电量充满,RESET 端输出高电平,这时单片机将工作。手动复位时,按下手动复位按钮,RESET 端会保持低电平,单片机复位;松开手动复位按钮之后,RESET 端会输出高电平,单片机工作。BDM 接口是S12系列单片机用来衔接BDM 调试器的接口,BDM 接头基本设计为6针的双排插头,当中的4个引脚分别为VDD 、RESET 、GND 和BKGD ,另外2个针脚则为空。

图3.3 复位及BDM 接口电路

3.3 电机驱动模块电路设计

电机驱动模块是为整个系统提供动力的装置,也是双轮自平衡智能车系统中必不可少的一个部分。所以设计一个好的驱动电路是整个系统的基础,它不仅会提高整个系统的流畅度,并且能有效提高车模运行的速度。所以我们应当对电机驱动模块尤为重视。

3.3.1 驱动芯片介绍

BTS7960是Infineon 公司设计的一个,用来电机驱动应用的,完整集成的大电流的半桥芯片,它是一种半桥的驱动芯片,电流值最高43A ,功能相对其他芯片略有优势,同时该芯片具备完美的过流、过压、欠压、过温、短路保护等功能,里面MOSFET 导通电阻为12毫欧,拥有最大电流值43A 的连续工作电流,而且拥有抗电磁干扰能力我们使用集成芯片的电路设计比较简单,可靠性也是相对较高的。

3.3.2 驱动电路设计

本双轮自平衡小车设计采用四片BTS7960的电机驱动芯片,构成双H 桥电路,我们通过四个电路的运行,可以有效的平稳的控制两个电机进行正反转,电路如图3.4所示。 [5]。

图3.4 电机驱动原理图

3.4 电源管理模块电路设计

电源模块对于一个控制系统来说是极其重要的组成部分,它的作用影响到整个系统是否能够正常的进行工作,因此在设计控制系统时,首先应选好合适的电源模块。双轮自平衡车使用的是7.2V 2000mAh Ni-Cd 电池供电,单片机系统、测速光电编码器等都是要用5V 电源工作,伺服电机的工作电压范围是4V 到6V ,另外7.2V 2000mAh 镉镍氢电池可以用于直流电机直接供电。

3.4.1 电源的分类

电源可分为开关电源和线性电源两类,其中线性电源内部的电压反馈电路,在线性状态下运行,而开关电源则是,被用于电压协调的管子工作在饱和、截止区即开关形态的。线性电源是将输出的电压进行采集,再与参考电压共同送入比较电压放大器,把它的输出,当作电压调整管的输入量,用来掌控调整管,使其电压随输入量的变化而变化,进而调整其自身输出电压,但是开关电源的工作原理,是经过改动调整管的张和闭的时间,即是运用占空比来改变输出电压的。总的来说,线性电源技术相对成熟,生产成本相对较低,可以实现更高的稳定性,波动比较小,而且没有开关电源没有干扰与噪音。开关电源虽然效率高、消耗小、既可以降低电压也可以升高电压,但是交流纹波还是大一些。

常见的电源有两种,分别是串联型线性稳压电源,例如LM2940、79L24等,以及开关型稳压电源,例如LM2576、LM1575等两大类。前者相对来说拥有纹波小、电路结构较为单一的优点,缺点是工作效率较低,功耗比较大;后者功耗相对较小,效率比前者高,但是电路比前者复杂,并且电路的文波比前者大。就单片机而言,系统需求供给稳定工作的5V 电源,因为TPS7350线性度较好,所以我们采用TPS7350来独自对其进行供电。而体系内的其余模块却需要通过较大的电流来工作,综上所述利用TPS7350和LM2940-5 对控制系统供电,可以有效防止各器件之间发生干扰的情况,解决了电流不足的问题,使得系统得以达到稳定的工作状态。

3.4.2 双轮自平衡车电源电路设计

一个可靠的电源设计方案,是全部硬件电路、体系稳定工作的基础,也是动力的来源,其中5V 的电源模块用来为单片机系统、还有各个传感器模块还有其他模块来供电,

7.2V 的电源模块则用来给电机驱动模块供电。电源模块电路图如下图所示。

图3.5 电源模块电路原理图

3.5 倾角传感器电路设计

3.5.1 加速度计电路设计

此次设计系统所选用的加速度计,是飞思卡尔公司生产制作的三轴加速度计

MMA7260。该加速度传感器本身是一种低g 值的传感器,本身输出信号很大,不需要外界再次进行放大信号。我们使用GSEL1和GSEL2脚来设置灵敏度,我们这个设计中将其灵敏度设置为800mv/g。本次设计中采用的加速度计电路图如图3.6所示。

图3.6 加速度计接口电路图

3.5.2 陀螺仪放大电路设计

本双轮自平衡车系统采用的陀螺仪为,村田公司设计的ENC-03,它是一个成本较低的压电式陀螺仪,其输出是0.67mv/deg/sec

,适合本系统。本设计中主控单片机

MC9S12XS128的ATD 模块,最高的采集精度大约是12bit ,AD 的基准电压为3.3V ,经过估算得到的最小辨别电压仅是为0.8mv ,所以对陀螺仪的输出信号不能直接进行相关的采集,需要放大器电路的相关设计。系统采用LM358设计负反馈的放大电路。同时,由于陀螺仪的输出会随温度的变化而产生变化,这将会影响系统倾角检测的精度,所以我们为了有效地控制陀螺仪,使其自身不要产生温漂,我们必须在其放大电路中采取对应措施,应该添加设计一个零点偏置电压,来调整相关的电路。本系统中利用的是LM358构成电压跟随器,输出电压则会经过电位器来进行调节,将零点的偏置电压始终维持在陀螺仪工作电压的一半,即1.65V ,这样可以会有效抑制陀螺仪的温漂。陀螺仪的放大电路如图3.7所示。

图3.7 陀螺仪ENC-03放大电路原理图

3.6 速度测量模块设计

两轮自平衡小车的工作原理是使用车轮的摩擦面,抵消汽车的重力,为了使小车更稳定的达到自主直立的运行效果,还有完成一些简单的加速、减速运行状态,双轮自平衡车设计采用了速度闭环控制。本设计中速度检测装置,是采用了欧姆龙的150线光电编码器。它本身具有较好的稳定性,构造也相对简单,并且具备极强的机械寿命,抗干扰能力比较强,可靠性相比其它工件来说也是比较优秀的,所以我们采用欧姆龙的150线光电编码器。

表3.1 编码器相关参数表

项目

电源电压

消耗电流

分辨率

输出相

输出状态

最高输出响应

输出上升或下降时间

起动转矩

允许最高转速 参数 DC 5V~12V,纹波的峰峰值小于5% 30mA 以下 500 脉冲/转 A 、B 、Z 三相 集电极开路输出 42kHz 1us 以下 1mN·m以下 5000r/min

自平衡车本身由于是双电机控制,所以本设计中采用两个编码器来分别进行测速。编码器的内部结构为一个光电编码器的中心轴,它的上面有光电发射和接收器件读取。由于编码器采用的是集电极开路输出,其输出波形为矩形波,因此编码器外围电路相对较为简单。在信号的输出端,接入一个上拉电阻,就可以将信号提供给单片机,来采集数据。如图3.8所示,PULSE 引脚是编码器的A 相,单片机的脉冲计数口与它连接,我们通过单片机的PACNT 模块,对输入脉冲采取计数来获取电机转速。DIR 为编码器B 相输出,接的是单片机I/O口,通过A 、B 的相位差来进行相应的计算,就可以判断电机转动方向。

图3.8 测速编码器接口电路

3.7 辅助调试电路设计

本设计中涉及到多种传感器的应用,为了使系统能够工作稳定,顺利完成设计要求,需要检测各个传感器的工作状态。与此同时,还要对数据融合波形,以及控制算法进行相关实时监测,并且对相关参数进行对应调整。为此,本双轮自平衡车设计需要设计辅助调试模块。常用的辅助调试模块有,RS232串口通信模块,蓝牙模块,LCD 模块以及SD 卡模块等。本次设计采用的是RS232串口通信作为调试方法。

图3.9 MAX232串口电平转换电路

计算机与MC9S12XS128单片机之间使用的是RS232进行数据传输,采用MAX232进行电平转换。MAX232是MAXIM 公司出产制作的一款电平转换的芯片,它的使用非常广泛,单片机与PC 机之间的通信,通常都会用到该芯片。有两个转换接口芯片,可以同时惊醒两路电平的转换。MAX232内部本身集成了两个电源电路,分别完成+5V →+10V 和+10V →-10V 的电压转换,目的是为通信提供电源。MAX232外部采用5V 供电,其引脚输出的电平范围也是0~5V,实现电平转换电路如上图3.9所示。

完成上述所有的电路设计后,整个系统的硬件电路平台就基本完成了。

4 自平衡车系统软件设计

4.1 系统软件总体结构

双轮自平衡车系统的软件编写,是基于飞思卡尔MC9S12XS128单片来完成的,其中主要用到MC9S12XS128芯片中的PWM 模块,TIM 模块、I/O模块还有SCI 模块等模块化设计。其中PWM 主要是用来控制正向和反向的运动,TIM 模块主要是为测速模块和数据收集工作,以及捕捉中断并且计算瞬时速度,I/O模块主要是用来拨码开关的设定,SCI 模块的功能则体现在无线串口的调试模块。根据系统要求,系统需要完成的总体软件设计为:单片机初始化,倾角信息的采集,卡尔曼滤波,速率检测,PID 控制原理设计等。图4.1为系统总体软件流程图。

图4.1 系统总体软件流程图

4.2 基于PID 算法的实现

在现实工程中,被使用最多的调节器控制规律,那就是闭环系统误差的比例、积分、微分控制,简称PID 控制。PID 控制器布局单一、稳定安全性较高、运行具备可靠性、参数调整相对方便。当被控目标的构造、参数不能完整掌握时,不能得到完美的数学模型,并且控制理论的其他方面技能较难应用,系统控制器的结构和参数,就得依赖经验还有现场情况做决定,这时应用PID 控制技术最为方便。由于该软件的灵活性与变通性,PID 算法可以得到更改和完整,所以数字PID 具有很强的灵活性和适用性。

4.2.1 PID分类

PID 算法又包括位置式PID 算法和增量式PID 算法,位置式PID 算法公式:

T d T k

u (k ) =K p {e (k ) +∑e (j ) +[e (k ) -e (k -1)]} (4.1) T i j =0T

上式计算u (k ) 不单要求本次与上次的偏差的采样值e (k ) 和e (k -1) ,而且还需要用到e (0) 和e (k ) 的全部值。当k 值很大的时候,要占用很大的内存,并且耗费单片机很多的时间去计算。增量式PID 仅需用到最近三次的误差更加实用,公式如下:

T d T ∆u (k ) =K p [e (k ) -e (k -1)]+K p T e (k ) +K p T [e (k ) -2e (k -1) +e (k -2)] (4.2) i

4.2.2 比例积分微分各部分介绍

比例部分的数学意义是:K p *e (k ) 在模仿PID 的控制系统中,比例环节需要及时对偏差瞬间做出反应。偏差万一要生成了,控制器就会当即进行相关工作,使控制量向偏差消减的方向转变。比例系数K p 决定控制效果的好坏。如果比例系数K p 越大,则控制

作用就会越强,过度过程就越迅速,从而控制过程的静态偏差也就越小;但是如果K p 越大,发生振荡频率就越高,从而破坏系统的稳定性。综上所述,比例系数K p 的选择务必合适,才能使过渡时间少,静差很小并且稳定。

我们从积分部分的数学表达式能够看出,系统只要存在一点偏差,则它的控制作用就会随时间积累,只有在偏差e (k ) =0时,它的积分效果才能够为一个常数,控制作用才是一个不会增加的常数。可见,积分部分能够y 有效去除体系的偏差。

积分环节的调节作用虽然能够去除静态偏差,但同时也会下降体系的响应速度,并且增加系统的超调量。积分常数T i 越大,那么积分的积累作用就越弱,然而系统在过渡

时,不会发生振荡;积分常数T i 越小则表示积分的累积作用越强,但是体系在过渡时却还可以产生振荡。总的来说,我们必须根据具体的要求来确定T i 的大小。

在现实的应用中,我们除了想要消除系统的静态误差外,还需要加快调整的进程。当出现偏差时,或者在偏差产生变化的刹那间,不仅要迅速对偏差量做出立刻响应,而且要依据偏差的变化趋向,有预见性的做出恰当的改正。为了完成作用,我们可在PI 控制器本身之上,再加入微分环节,从而形成PID 控制器。

微分环节的功效是抑制偏差的转变,它是按照偏差的变化趋向来工作的。偏差变化速率越快,则微分控制器的输出就会越高,并且要在偏差值变大之前及时进行修正。给系统加上微分作用,能够有效的降低系统的超调量,避免振荡影响,使系统达到稳定的状态。

微分部分的功效,由微分时间常数T d 决定。当T d 越大时,能更有效的抑制偏差变化e (k ) ;T d 越小时,它反抗偏差变化的作用就越弱。从上可见,微分部分对整个体系稳定有很大的作用,适应地选择微分常数T d 的大小,我们就可以使微分部分的功效达到最好的状态。

4.2.3 PID参数的整定

试凑法是经过闭环实验,来观察系统的响应曲线,按照给定控制条件,对系统响应的大致影响,进行频繁地试凑相关参数,以获取最好的响应结果,最后确定PID 控制参数。试凑绝不是出于盲目的,而是在相关控制理论学科知识的领导下来完成的。试凑法的详细实行过程可分为以下几个部分:

1、整定比例控制部分,将比例系数从小至大进行变化,并查看对应的系统响应,最后获得超调小、反应快的响应曲线。加入系统的静差小,到许可局限内,则响应曲线符合要求,那么只需要比例控制便可,由此可以得到比例系数。

2、如果系统的静差在比例环节的控制下,不能达到设计的要求,则需要加入积分环节。整定时,最初置积分时间为很大值,并将通过第一步整定后,得到的比例系数适当缩小,然后再减小积分时间,使得在保持系统良好动态的情况下,静差能够得到消除。在这过程当中,可按照响应曲线的好坏,不断地来改变比例系数和积分时间,借此来达到满意的控制效果,得到合适的系统整定参数。

3、如果利用比例积分控制后,去除了静差,但动态过程经重复改变,还是不能达到满意的效果,那么增加微分环节,使三者组成比例、积分、微分控制器。在调整的时

候,先设置微分时间为零,在第二步整定的基础上增大,按照同样的方法来操作余下的过程,分改变比例系数和微分时间,进行逐步试凑,来获得满意的调节效果和控制参数。

4.3 双轮自平衡车直立模块软件设计

首先,通过均值滤波法,来得到稳定的陀螺仪值以及加速度计值,然后陀螺仪值减去,车模静止时陀螺仪的值,再乘以一个比例系数,把它当做积分的输入量,再用加速度计的值,减去车模直立时的值,再乘以比例系数,将车模前后角度归一,化为正负九十度,通过加速度计对陀螺仪的补偿作用,可以有效地抑制陀螺仪产生温漂,进而得到准确的角度值,最后通过PD 控制,车模就可以达到稳定理想的直立的效果。

程序部分代码如下所示:

void AngleCalculate()

{

ANGLE_speed =k_gyo*(TLY-TLY_CENTER);

ANGLE1=(Angle_Z-ANGLE)/kTg;

ANGLE+=(ANGLE_speed+ANGLE1)/k_Inter;

}

void AngleControl()

{

float KP1,KD1,KP2,KD2;

if(TLY_FLG == 1)

{

Speed_Set=(int)(KP*ANGLE)+(int)(KD*ANGLE_speed);

}

}

4.4 双轮自平衡车速度控制模块软件设计

为了减小速度控制对小车本身直立产生的影响,使速度控制周期为100ms ,并且对100ms 内,用编码器对采集回来的脉冲数进行累加,左右轮的平均脉冲数作为速度。程序流程如图4.2所示。

图4.2 小车速度控制模块流程图

部分程序代码如下所示:

void SpeedControl(void)

{

int Car_Speed_Set_last=0;

if(TLY_FLG == 1)

{

Speed_Get = (g_Speed_Get_R + g_Speed_Get_L)>>1;

fCar_Speed = fCar_ Speed_ Constant*Speed_Get; //速度控制

if(Drec_error>-5&&Drec_error

else Car_Speed_Set_last=Car_Speed_Set-1;

if(Car_Speed

Speed_Flag_New = 1;

else if(Car_Speed > 0)

Speed_Flag_New = 0;

if((Speed_Flag_Old==1)&&(Speed_Flag_New==0)) fSpeed_Control_Integral=0; fSpeed_Control_Integral+=fI;

if(fSpeed_Control_Integral>3000) fSpeed_Control_Integral =3000;//100

if(fSpeed_Control_Integral

fSpeed_Control_Out_Old = fSpeed_Control_Out_New;

fSpeed_Control_Out_New = fP+fSpeed_Control_Integral;

}

4.5 电机转速的控制

在已经获得了车模直立控制,速度控制两者的输出量之后,我们采取对应措施将他们叠加得到了PWM 所需的占空比,PWM 的占空比决定了电机运行的情况,然后通过相应的寄存器,设置由单片机产生所需占空比的PWM 信号,进而控制电机的正反转还有它的转速快慢。我们在占空比的设定中,由于小车本身具有的传动机构,存在一定的静态摩擦力,所以我们要特意增加了死区补偿。为了保证PWM 的输出,并且不会超过PWM 的满量程范围,需要进行饱和处理。流程框图如图4.3所示。

图4.3 电机控制模块流程图

部分程序代码如下所示:

void MotorOutput()

{

float fLeft, fRight;

if(TLY_FLG == 1)

{

fRight = Speed_Set-fSpeed_Control_Out-g_fDirectionControlOut; //1.2

fLeft = Speed_Set-fSpeed_Control_Out+g_fDirectionControlOut; //1.2

if(fLeft > 0)

{

if(fLeft>300) fLeft = 300;

PWM22_SetDutyUS(0);

PWM00_SetDutyUS(deadline+ fLeft);

}

else

{

if(fLeft

PWM22_SetDutyUS(deadline-fLeft);

PWM00_SetDutyUS(0);

}

if(fRight > 0)

{

if(fRight > 300) fRight = 300;

PWM33_SetDutyUS(deadline + fRight); //车模前走

PWM11_SetDutyUS(0);

}

else

{

if(fRight

PWM33_SetDutyUS(0);

PWM11_SetDutyUS(deadline-fRight);

}

g_fLeft Motor Out = fLeft;

g_fRight Motor Out = fRight;

}

本次的设计主要就是使小车能够在无外界的干扰的情况下,能够自主完成直立的过程,而且能够保持相对稳定的状态,在直立的基础上再去完成剩下的前进等基本动作。综上所述,完成之前所述的双轮自平衡车的各个模块的设计,小车就会具备自主达到直立状态的效果,并保持相对稳定运行的状态。

5 自平衡车系统的安装与调试

5.1 小车整体结构的安装

自平衡车的机械部分,是整辆小车的根基,它不仅代表着小车硬件构造的稳定性,更是影响小车运行的效果,它是全部小车部分当中最为要紧的,一旦对其进行改动,这势必影响未来的设计与调试,所以在刚开始的时候,组装一个良好、稳定的机械架构,就会避免很多不必要的问题。因此,在本次设计中,车模的机械性能、机械结构的安装,是机械设计中最应首先考虑的问题。为了使汽车运行更稳定,我们必须降低汽车的重心,自平衡车模是两轮接触地面,小车的质量基本来自电池和PCB 板,所以将电池放在车模最底下。因为小车的重心越低,对于小车的平衡性越好,因为重心低的话,比较利于平衡的直立。相反如果重心比较高的话,则是比较利于小车的速度性能及运行过程。然而本次设计的重心是在小车的自主直立方面,所以我们应该尽量保持小车的平稳性能。所以综合考虑之后,我们将PCB 板放在车模中间位置。小车的整体效果图如图5.1所示。

图5.1 小车整体机械结构安装效果图

5.1.1 速度传感器的安装

本自平衡车系统设计采用的是,由欧姆龙公司设计生产的150线编码器,它的优点是测量速度准确稳定,缺点是体积相对较大。考虑到小车的整体结构,降低小车的重心,且使速度保持稳定,于是将速度编码器安装于车轮上方,因为将其安装在车轮上方,最能有效降低小车的整体重心,有利于帮助小车整体保持稳定。安装如图5.2所示。

图5.2 速度传感器的安装

5.1.2 倾角传感器和陀螺仪的安装

角度测量的准确与否,直接决定了车模直立效果的好坏,本次设计中,为了综合性能以及考虑到设计的难易程度,我们用到的陀螺仪和加速度计都采用了现成的模块。由于小车在运行的过程中会发生猛烈的晃动,若是安置的过高,将会对角度传感器还有陀螺仪产生比较大的干扰作用,不利于车模整体保持相对稳定的状态,所以在本次设计中,我们采取将它安放在车模的中间位置,因为这样做的话,小车整体产生的振动小,敏感度也比较高。倾角传感器和陀螺仪的安装如图5.3所示。

图5.3 倾角传感器和陀螺仪的安装

5.2 系统的调试工具

两轮自平衡车的硬件设计与软件编程,为自平衡车的稳定运转打下了根基,是不是能运行的稳定,则要求经过尽心的调试才能达成。本双轮自平衡车系统采用了模块化的设计思想,因此可以采用模块化的调试方法。将系统分为几个部分独立进行调试。

MC9S12XS128的调试接口采用BDM 接口。选用开源开发调试工件TBDML 对其运行在线调试、仿真。IDE 采用CodeWarriorIDE V5.0。CodeWarrior 软件运行的开发条件(IDE ,Integrated Development Environment)是由Metrowerks 公司提供的,专为飞思卡尔所有的单片机嵌入式应用,所开发的软件工具。这当中囊括集成开发环境IDE 、处理器、全芯片的仿真、可视化的参数展示条件、项目工程统治设计、C 交叉编译器、汇编器、连接器还有调试器。

图5.4 BDM调试界面

后台调试模式(Background Debug Mode)是现在单片机广泛选用的调试方法之一,在BDM 模式下,主要能达成下列三个方面的功效:首先便是应用程序的下载与在线更新。在BDM 模式下,我们可以对Flash 进行写入和擦除操作,所以我们可以在产品未使用前,即可以将应用程序下载到产品里。BDM 模式的另一功能,是进行单片机内部资源的配置与修复,程序的加密处理等等。少许MCU 的内部寄存器只能在BDM 形式下运行,尤其是一些单片机其内部配置的寄存器。BDM 的第三个作用是做应用程序的动态调试,S12 系列的单片机的BDM 调试模式有这类功能,S12系列单片机CPU 内部使用的是4级流水线结构,这种结构会使得CPU 的读取指令、解释指令、执行指令等操作看起来好像是同时进行的,提高了工作效率。

5.3 自平衡车系统的硬件调试

硬件调试是在小车在硬件平台搭建实现后,最初应当举行的工作,它是确保体系的安全性的重要条件。首先应该用万用表,仔细检查电路的连接是否正确,是否存在短路、虚焊等情况,各电子元件是否能正常工作,尤其应该要注意电源极性是否正确。当全部检查完毕,在确认硬件电路连接没有错误后,上电使用BDM 在线调试,看是否能成功连接到MC9S12XS128最小系统。当检测正常后,向单片机下载测试程序,如果能够正常下载程序,然后观察LED 是否正常闪动。电机驱动电路的测试,通过软件控制电机转速,来验证驱动电路的正确性。确定两个电极输出电压的极性,保证当输出PWM 正电压时,电机正向运转,PWM 输出负电压时,电机反向运转,确保小车硬件系统运行良好。

5.3.1 加速度计和陀螺仪的调试

当车模晃动下时突然保持静止,观察此时的陀螺仪的值。当车模始终保持静止,观测陀螺仪的值。当电池电压增大或减小的时候,观察陀螺仪的采集值。均衡各种情况得到陀螺仪静止时的值,作为陀螺仪的中间值。

车模保持直立的情况下,观察加速度计的采集值,当左右倾斜车模,我们可以看出加速度计采集值的变化,向前加速度计值会增大,向后加速度计值会减小,车模与水平地面垂直时,加速度计得值作为中间值。

5.3.2 电机驱动模块的调试

首先将直流电机连接到电路,然后将小车悬空,前后倾斜小车本身,这个时候我们用示波器来查看电机两头的PWM 信号,看其究竟会不会按要求转变。在不改变其余的所有机械参数的条件下,我们不断地改变系统占空比,观察车轮转速的变化。最后,还要看车模前后倾斜的时候,电机是否会按照之前设计的要求来改变转向。

5.3.3 速度编码器的调试

由于双轮自平衡车采用了双编码器,其中的一路是用单片机自带的脉冲累加器来进行计数的,而另一路则是用用外部中断进行计数的。在线调试的情况下,我们先用手转动轮胎,然后观察两路编码器是否采回了相关数据。将车轮转动一周之后,我们观察编码器采集回多少个脉冲,再将其作为软件设计中,速度转换的一个参数。

5.4 自平衡车系统的静态调试

由于自平衡车系统本身包含有较多的控制参数,直立又是自平衡车的重中之重,所以为了较好的直立效果,应该先从角度的整定开始,我们应该调节k_gyo和k_Inter, 再通过上位机来观察最终输出的角度图像,才能较好的跟踪加速度计测得的角度图像,然后我们会发现加速度计测得的角度图像有一定的毛刺,经过整定以后的图像会变得非常平滑。此时首先增大KP ,小车看起来会进行直立,逐渐加大KP ,小车会直立向一个方向行走,此刻调节KD ,小车运动的速度会越来越慢,由于车模本身角度有少许的误差,小车便不能完全静止一于点。加入速度闭环控制,当加入fSpeed_ Control_P一个较小值时,小车已经可以直立于一点,当我们继续加大它的值的时候,小车便会产生剧烈的颤抖,然后当我们稍微减小fSpeed_Control_P并逐渐增大fSpeed_I,小车将更加稳定的直立,当用手推动它对它产生干扰时,小车也能自主保持直立。

5.5 自平衡车系统的动态调试

设计最终的目的是让小车进行简单的行走运动,所以在小车行走的情况下,参数相比之前,将会有较大的变化。首先,应该调节转向模块,再然后左右转动小车,在线观测小车的误差,是否按照要求变化。当系统符合要求时,可以给小车较低的速度让其行走,这时会发现走一段小车便会停止运动,这是因为速度闭环对直立闭环造成了干扰,解决的办法可以是加大速度控制周期,与此同时调节速度闭环PI 参数,可以看出,当P

较大D 较小的情况下,系统越稳定。经过多次测试,速度控制周期100ms ,速度闭环P 参数为15,D 参数为0.005。速度和刚开始调试时相比将会有提高,如果想要进一步控制小车的转弯等,还需进行相关参数的设定。

通过此次的调试过程,才发现原来软件的正确编译仅仅是整个系统正常运行的一个必备条件,必须要使软件与硬件相互配合,进行努力的调试,才能达到我们想要的预期效果。

6 总结与展望

6.1 总结

本文详细的介绍了,基于MC9S12XS128单片机的双轮自平衡车系统的设计,其中包括软件与硬件两个部分,主要介绍的是硬件部分。系统硬件结构以飞思卡尔公司的16位单片机MC9S12XS128为控制核心,通过陀螺仪加速度计测得角度信号,采用PID 控制保持直立,通过H 桥电机驱动,以及速度编码器测速,实现了直流电机的闭环调速,实现了小车的平衡控制。系统软件设计上综合了各类滤波器长处与短处,再联系本系统的硬件构架设计了以卡尔曼滤波器为中心的数据融合算法。经过卡尔曼滤波器,将陀螺仪与加速度计的输出融合为精确的倾角与角速度输出,为体系的控制提供了有效地保证。本设计最终实现了双轮自平衡小车的平衡控制及简单的运动控制,小车在保持两轮平衡的基础上,可以实现前进、后退、等动作。当然,本次设计中由于个人能力、学识方面的欠缺,还有很多未能完成的地方,比如未能使小车达到自主识别道路,寻迹行走的功能,系统的抗干扰性能还有待加强。

6.2 展望

通过本次毕业设计,加强了我对单片机的了解,尤其是接触到了之前没有学习过的飞思卡尔的单片机,它的性能很多并且也很实用,仅仅几个月的时间还不至于将它完全了解,还需要更进一步的学习来掌握。双轮自平衡车是一个平衡控制系统,它涉及到很多控制算法与理论,与之前学过的很多科目之间都有很大的联系,可以真正的达到学以致用的目的,是一个很好的综合性题目。

双轮平衡智能车的研究已经越来越深入,其应用已经普遍到日常生活中,它的出现为人们提供了新的交通方式的选择,给人们的生活创造了方便。将来随着研究的深入,必将会出现更多更先进的功能,来服务于人们的生活,发挥出它更大的价值。

致 谢

光阴似箭,转眼之间,四年的大学生活也已经走到尾声,此刻的我不知内心是一种怎样的感觉,马上就要走出校园步入社会,充满了迷茫与未知,尽管如此,还是应该勇敢的接受挑战。

能顺利的完成本次毕业设计的任务,首先需要感谢我的导师王玲老师。王老师学问渊博,精益求精,在本次设计中,给予了我很大的帮助。王老师长年带学生参加全国智能车的比赛,在智能车方面造诣很深,我从中自然学到了很多的东西,感觉受益匪浅。王老师能够在繁忙的教学工作中,抽出时间指导我完成毕设,帮助我克服了不少难关,帮我斟酌论文的编写与排版,在这里真的感谢老师对我的帮助。

感谢陪伴了我四年的同学们,尤其是寝室的哥们,这四年从你们身上学到了很多,学习、生活上大家都是互相照顾帮助,很幸运也很感激能与你们在同一个屋檐下一起生活了四年,因为你们让我觉得大学的生活很充实,真的很感谢。

最后尤为要感谢的是我的父母,他们辛辛苦苦养育了我这么多年,如今我也要走出校园了,到了该回报的时候了,我会努力不辜负您们对我的期望。

参考文献

[1] 孙同景 陈桂友 Freescale 9S12十六位单片机原理及嵌入式开发技术. 机械工业出版

社. 2010

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

[3] 蔡述庭 “飞思卡尔”杯智能汽车竞赛设计与实践—基于S12XS 和KinetisK10. 北京

航空航天大学出版社. 2010

[4] 梅晓榕 自动控制元件及线路. 哈尔滨工业大学出版社. 2004

[5] 张琛 直流无刷电机原理及应用. 机械工业出版社. 2009

[6] 刘金琨 智能控制. 电子工业出版社. 2005

[7] 尔桂花 运动控制系统. 清华大学出版社. 2002

[8] 陈伯时 电力拖动自动控系统:运动控制系统(第四版). 机械工业出版社. 2009

[9] 陈万忠 MC9S12单片机原理嵌入式应用开发技术. 机械工业出版社. 2012

[10] 薛涛 单片机与嵌入式系统开发方法. 清华大学出版社. 2009

[11] 王兆安 刘进军 电力电子技术. 机械工业出版社. 2009

[12] Baber.J, Kolodko.J,Noel.T,Cooperative autonomous Driving:Intelligent Vhicles

Sharing City roads. IEEE Robotics&Automation Magazine. 2005

[13] 康波 李云霞 计算机控制系统. 电子工业出版社. 2011

[14] 杨素行 模拟电子技术. 高等教育出版社. 2006

[15] HUANGB SHAHSL.Performance Assessment of ControlLoops: Theory and

Applications . London: Springer2 Verlag. 1999

[16] 安鹏 S12单片机模块应用及程序调试. 电子产品世界. 2006

摘 要

近几年来,随着汽车技术的快速发展,很多新兴技术涌现出来,其中就包括双轮自平衡小车技术。这项技术在很多方面都得到了体现,在交通方面施展了尤为强大的作用,其应用也逐渐深入到日常生活中,现在生活中常见的双轮自平衡电动车便是最常见的代表。本文侧重介绍以MC9S12XS128芯片为主控制器的双轮自平衡小车的设计方案。

智能车采用村田公司的陀螺仪ENC-03和飞思卡尔公司的加速度计7260来协调控制,达到精确检测角度的目的,检测出小车的倾角,反馈到单片机来控制小车直立的过程。同时本智能车控制系统用PWM 控制技术来驱动电机运行,控制小车直立,还采用PID 控制算法使小车达到最佳的运行状态。进行正确的软件编译,下载程序完成调试后,控制系统全部完成后,真正理想的效果是,各个模块相互协调并稳定工作,能通过系统控制自动达到直立的效果,如果有适当干扰量引入,小车还可以自主恢复直立状态。同时控制系统还能够控制小车实现前进,后退等根本行动。

关键词:双轮自平衡小车;MC9S12XS128芯片;PID 控制算法;PWM 控制

Abstract

In recent years, with the rapid development of automotive technology, many new technologies emerged, including the two wheeled self-balancing robot technology. This technology in many aspects have been reflected, in terms of transportation cast is particularly powerful role, its application has gradually penetrated into daily life, now common two wheeled self- balancing electric vehicle is the representative of the most common. This paper focuses on the design scheme of two wheeled self-balanced vehicle with MC9S12XS128 chip as the main controller.

Smart car uses Murata gyro ENC-03 and Freescale acceleration meter 7260 coordinated control, to achieve the goal of high precision angle and angle detecting car, feedback to the MCU to control the car upright. At the same time, the intelligent vehicle control system uses PWM control technology to drive the motor running, control the car upright, and the PID control algorithm to achieve the best running state of the car. To correct software compiler, Download finished debugging, control system completed, is really the ideal effect, coordination and stable work of each module, through the control system automatically to erect the effect, if the introduction of appropriate amount of interference, the car can also to independent recovery of upright. At the same time control system can control the car to achieve forward, back and other basic movements.

Key words: Two wheeled self-balancing vehicle; MC9S12XS128 chip; PID control algorithm; PWM control

目 录

1 绪论 .................................................................. 1

1.1 课题的选题背景与意义 ............................................. 1

1.2 双轮自平衡车国内外发展概况 ....................................... 1

1.3 课题研究的主要内容 ............................................... 2

2 智能车系统原理分析与设计 .............................................. 3

2.1 控制系统原理分析 ................................................. 3

2.2 控制系统总体设计方案 ............................................. 4

2.3 双轮自平衡车的姿态检测系统 ....................................... 5

2.3.1 加速度计 .................................................... 6

2.3.2 陀螺仪 ...................................................... 6

2.3.3 卡尔曼滤波 .................................................. 7

3 自平衡车系统硬件电路设计 .............................................. 9

3.1 MC9S12XS128单片机介绍 .......................................... 9

3.2 MC9S12XS128单片机最小系统电路设计 ............................. 10

3.3 电机驱动模块电路设计 ............................................ 13

3.3.1 驱动芯片介绍 ............................................... 13

3.3.2 驱动电路设计 ............................................... 13

3.4 电源管理模块电路设计 ............................................ 13

3.4.1 电源的分类 ................................................. 14

3.4.2 双轮自平衡车电源电路设计 ................................... 14

3.5 倾角传感器电路设计 .............................................. 15

3.5.1 加速度计电路设计 ........................................... 15

3.5.2 陀螺仪放大电路设计 ......................................... 15

3.6 速度测量模块设计 ................................................ 16

3.7 辅助调试电路设计 ................................................ 17

4 自平衡车系统软件设计 ................................................. 19

4.1 系统软件总体结构 ................................................ 19

4.2 基于PID 算法的实现 .............................................. 20

4.2.1 PID 分类 . ................................................... 20

4.2.2 比例积分微分各部分介绍 ..................................... 20

4.2.3 PID 参数的整定 . ............................................. 21

4.3 双轮自平衡车直立模块软件设计 .................................... 22

4.4 双轮自平衡车速度控制模块软件设计 ................................ 22

4.5 电机转速的控制 .................................................. 24

5 自平衡车系统的安装与调试 ............................................. 27

5.1 小车整体结构的安装 .............................................. 27

5.1.1 速度传感器的安装 ........................................... 28

5.1.2 倾角传感器和陀螺仪的安装 ................................... 28

5.2 系统的调试工具 .................................................. 29

5.3 自平衡车系统的硬件调试 .......................................... 30

5.3.1 加速度计和陀螺仪的调试 ..................................... 30

5.3.2 电机驱动模块的调试 ......................................... 31

5.3.3 速度编码器的调试 ........................................... 31

5.4 自平衡车系统的静态调试 .......................................... 31

5.5 自平衡车系统的动态调试 .......................................... 31

6 总结与展望 ........................................................... 33

6.1 总结 ............................................................ 33

6.2 展望 ............................................................ 33

致 谢 ................................................................... 34

参考文献 ................................................................ 35

1 绪论

1.1 课题的选题背景与意义

近些年来随着我国科学技术的飞速进步,自动化技术也随之越来越普及,深入到人们的生活中,双轮自平衡小车便是一种高新技术的集成体。双轮自平衡小车是一个归纳着电子技术、机械、计算机等多门技术部分的高新技术手段,随着各有关领域范畴的飞快进步,它不单单拥有理论科学上的研究意义,甚至是代表着一个国家的综合科学实力。现代的工业汽车虽然相对的给人们带来了便利,但是也带来了交通拥堵,与大气污染方面的环境问题。与此同时,双轮自平衡小车利用自身电能来运行,并且体积轻小,运行自由,如果将此项技术广泛应用到生活中,势必会极大的减轻交通负担,缓解人们的出行压力,同时也能起到保护环境,降低能源消耗的作用。双轮自平衡智能小车是可以进行行为控制、环境检测、执行任务的综合控制系统,应用范围也越来越广泛,随着技术的发展,机器人也会代替人类做一些不能代替的任务,在未来如果把双轮自平衡小车技术和传感器、GPS 导航等设备组合在一起,使各自功能相互协调工作,应该会具有更广泛的应用前景,为人们的生活带来便利。

1.2 双轮自平衡车国内外发展概况

双轮自平衡小车技术近几年得到了快速的发展,国内外的相关专家与技术人员均为之付出了巨大的努力,研究成果也为科学的发展做出了相应的贡献。国外方面科研成果主要有瑞士联邦工业大学电子实验室的Felix Grasser等人设计出利用DSP 控制方法,可以进行远程操控的双轮智能移动机器人Joe , 它超越了人类步行的速度,并能自主保持稳定。同时还有Segway LLC开发了赛格威两轮自平衡机器人,本身使用的工作原理的动态的稳定性,通过车辆本身的自动平衡能力,来达到平衡稳定与行走。这其中最为先进的是,由谷歌的工程师塞巴斯蒂安还有他的团队共同设计制作出的,谷歌版的无人驾驶车。此项新型智能车,通过自身装备的激光雷达、车载相机还有激光测距仪,借用这些技术来观察周围交通车辆的行驶状况,并根据自身带有的车载地图来完成汽车的行驶,为人们的交通出行提供了便利。该项技术最重要的研究成果,便是为未来无人驾驶的车辆研究做出了其重大的贡献,如何来提高运行质量以及降低事故发生率是要面对的棘手问题与挑战。

中国也已经在两轮自平衡车的发展上取得了巨大的成就。哈尔滨工业大学采用DSP 算法作为控制核心,利用PWM 技术控制电动机转速,从而研究出可以实现自主平衡控制的双轮机器人,自身可以实现平衡控制与数据交换功能。另一著名高校西安交通大学,制作了一个把伺服放大器ADS 当作控制器,同时选取自适应神经模糊控制器对小车进行控制,顺利完成能够直立的双轮自平衡小车。 随着智能车技术的不断发展,我国也越来越重视相关方面的发展与教育,飞思卡尔杯全国大学生智能车竞赛便是其中重要的项目之一。Freescale 杯智能汽车比赛, 韩国是它的起源地,飞思卡尔公司赞助了韩国的一些相关大学,从而顺利举行的大学生课外科技比赛。举办方会供应一个参考的汽车模型、以及直流电机和可充电的电池,参赛人员要求制作一个可能自主判别途径的智能车,在比赛专用计划的跑道上,能够自立辨认途径运动,最快跑完全程者而且没有发生失误的,综合技能报告评分较高的为获奖者。其涉及的内容涵盖了控制系统、汽车电子电路、虹膜识别、传感器原理、电气控制技术、计算机原理、机械制造设计、能源利用等许多方面技术的原理,并且对学生的实物技术与理论知识的结合,实践动手能力的培养,具有良好的推动与发展作用。此项赛事已经得到了越来越多高校的认可,近些年参赛高校与队伍日益增多,培养了大学生的创新意识与动手操作能力,为广大高校提供了一个教育培养学生的平台,使学生可以学到更多的智能车的相关知识,为学生日后的发展与学习打下了良好的基础。

1.3 课题研究的主要内容 本课题要求制作策划出一个可以实现自主平衡的,智能双轮自平衡小车,我们以

MC9S12XS128为主控制器,通过陀螺仪和加速度计测出角度,传感器将测得的角度值以数字信号传送到单片机上,同时利用PWM 控制驱动电机,控制小车的运行。研究的主要内容包括:第一、控制电路设计,包括主控单元的电路设计,电源模块电路设计,电机驱动电路的电路设计,以及相关其他控制电路的设计。第二、控制系统设计,包括电源模块,速度倾角测量模块,还有其余的各种串口模块的设计。第三、PID 控制算法,包含电机的速度闭环控制还有小车倾角的闭环控制。PID 控制尽管是一种非常老练的工业控制方式,但是在智能汽车领域,还需要克服相关参数对控制器产生的干扰,亦然本研究中重点和难点。第四、小车的运行流程控制,通过软件编程正确编译控制程序,进行相关调试达到自主平衡,并稳定运行的效果。

2 智能车系统原理分析与设计

2.1 控制系统原理分析

双轮自平衡小车的控制系统是经过负反馈原理达到既定目标的,基于车模本身机械机构的设置,小车依赖自身的车轮与外界接触,车轮与地面之间会产生相对转动,这样小车就会倾斜。与此同时,其上本身装有的姿态检测系统会相应的对小车的倾斜状态及时地检测与分析,经过控制器来控制车轮的转动,消除偏差与干扰,便可以使小车保持平衡的状态,原理如图2.1所示。

图2.1 小车保持平衡原理图

根据双轮自平衡小车控制系统的要求,小车本身是要可以在无外界干扰的情况下,依赖自身具有的一双平行的车轮来维持平衡,并且顺利完成前进,后退等基本动作。分析系统的要求我们可以知道,使小车保持直立和运动的就是该车的两个轮子,这是由两个直流电机驱动的。本次设计应用了模块化的设计理念,将复杂的整体,分解成较易实现的几个模块来进行研究。本设计中使用双轮自平衡车的两个后轮,为小车保持竖立以及运转提供足够的支持,并经过两个直流电机,来驱动车模的后轮转动。所以说,从小车控制的角度来思考,我们不妨将小车本身作为一个控制目标,整个系统总的来说,控制的输入量是两个车后轮的转动速率。小车的控制系统是一个完整的控制目标,整个控制系统又可以策略性地把它分为三个部分系统:

一、小车的平衡控制系统:把小车的倾角作为输入量,通过控制电机正反转,来保持小车平稳运行[3]。

[3]二、小车的速度控制系统:在保持平衡的前提下,通过对倾角的控制来转而实现对速度的控制,其本质是通过电机来控制小车的速度

[3]。 三、小车的方向控制系统:其实质是两个电机的转速不同,从而来控制小车的方向。

小车系统的直立和方向控制目标,全是经过直接控制车模自带的两个后轮驱动电机来完成的,而小车的速率控制则是通过调整小车的倾角来实现的。小车不同的倾角会导致车模的加速和减速,从而来达到对小车进行速度控制的目的。三个部分系统都是各自独立进行控制,由于最终结果都是对小车的电机进行控制,所以三个系统之间存在着耦合关系,为了方便我们理解分析,在分析其中之一的控制系统时,我们先假设其它控制系统都已经是稳定状态[3]。例如,在进行速度控制的时候,小车要求能够保持自主直立状态;在进行方向控制的时候,小车要求可以保持平衡状态和速度的恒定状态;在进行平衡控制的时候,也需要保证速度和方向这两个方面都已经达到平衡状态。这三个任务中最重要的是保持小车的平衡。由于双轮自平衡小车控制系统在同一时间有三种不同的控制效果,所以从小车保持平衡控制的角度来看,干扰量就是剩余两个控制系统。因此我们对小车进行速度控制、方向控制时应该尽量保持平稳,来减少对小车平衡控制的干扰。就以速度调节来说,我们要求经过改动小车平衡控制中,小车的倾角设定值,从而来改变小车实际的倾斜角度,进而来达到速度控制的要求。与此同时,为了避免对小车的平衡控制造成影响与干扰,小车的倾角需要慢慢变化。综合整个双轮自平衡小车控制系统来说,最根本的是小车的平衡控制,然后是速度控制,最后如果有条件完成的话就是转向控制,整个设计中完成小车的直立是根本,同时这也是整个控制系统的难处所在。

2.2 控制系统总体设计方案

双轮自平衡小车的设计思路,是通过陀螺仪加速度计的值来得到准确的角度值,通过MC9S12XS128单片机,采用PID 控制算法使双轮智能车保持直立。同时,通过PWM 控制驱动电机运转,使小车保持稳定的运行状态。双轮自平衡车共包括六大模块:其中有MC9S12XS128主控模块、传感器模块、电源管理模块、电机驱动模块、还有速度检测模块和辅助调试模块[1]。MC9S12XS128 单片机作为双轮自平衡车的控制中心,会将光电编码器测出的小车速度信息,以及陀螺仪加速度计测出的小车角度信息,根据控制

算法在内部进行相应计算,得出相应输出结果,让驱动直流电机来实现对双轮自平衡小车的控制。电源管理模块的作用是为整个控制系统提供合适并且稳定的电源。电机驱动模块的作用是驱动两个电机共同完成对自平衡小车的加速控制、减速控制还有方向控制。速度检测模块是用来检测反馈双轮自平衡小车车轮的转速,来进行速度的闭环控制,使双轮自平衡小车能够稳定运行。各个模块必须完成自己的工作任务,同时又相互协调,最终使小车达到稳定的状态。双轮自平衡小车的总体设计框图如图2.2所示。

图2.2 双轮自平衡小车总体设计框图

2.3 双轮自平衡车的姿态检测系统

双轮自平衡智能车本身是一种特殊的控制系统,它和普通的传统结构的直立车的区别是,其自身是一种本质极不稳定的非线性系统。小车本身必须不时地调整自己的角度,来实现动态平衡的状态。综上所述,小车需要实时检测自身的倾角,并且根据检测结果

进行相关合理的调整,从而顺利达到动态平衡的控制效果,因而姿态检测,便是控制小车自主直立平衡的关键所在。本设计中便是采用加速度计和陀螺仪,构成双轮自平衡小车的姿态检测系统。

2.3.1 加速度计

加速度计是一种衡量运输体线加速度的工具,加速度计由检测质料、支撑、电位器、阻尼器、和壳体组成。按用途分类可以分为线性加速度计、摆式加速度计、角加速度计等。本系统是采用飞思卡尔公司的三轴加速度计MMA7260,它是一种三轴低g 值的加速度计,具有小量程的线性加速度传感器,在不运动或不受重力作用的条件下,输出为

1.65V ,最大测量范围为0-6g ,可以同时输出三个方向上加速度模拟信号,各轴的输出信号灵敏度最高可到800MV/g[9]。MMA7260实物如图2.3所示。

图2.3 加速度计MMA7260

2.3.2 陀螺仪

陀螺仪本身是一种迅速自传的动量力矩敏壳体,就其本身来说,绕正交于自转轴运行的角运动监察工具,可以将其用来检测角速度。陀螺仪的种类很多,按用途可以分为传感陀螺仪和指示陀螺仪。本小车控制系统利用的陀螺仪,是日本村田公司根据新型技术生产的单轴陀螺仪ENC-03,图2.4是此次设计当中用到的陀螺仪。它的基础实质上是使用了物体在坐标系的运动当中,会受到外界科里奥利力的原理,在材料中利用压电陶瓷做成波动的单元。旋转器件时会改变自身原本的振动频率,从而反映出物体旋转的角速度。ENC-03体积小、响应快、功耗低、成本小,并且是采用模拟量输出,检测范围可到达±300deg/sec,灵敏度为0.67mv/deg/sec[9]。

图2.4 陀螺仪ENC-03

2.3.3 卡尔曼滤波

卡尔曼滤波是使用线性体系状态公式,经历系统输入输出观察数据,对系统状态进行最优估量的算法。因为观察数据中囊括体系中的噪声和滋扰的影响,最优估计也可看作是滤波进程。由于使用一个单一的传感器,陀螺仪和加速度计的设计,很难获得真正的姿态角度,为了获得更为精确的小车角度,所以本系统采用多传感器数据融合系统的信号,进而获得最佳姿态角度。 斯坦利·施密特初次完成并兑现了卡尔曼滤波器。当他在埃姆斯研究中心访问时,发现利用他的方法对于解决阿波罗计划的轨道预测很有用,

后来阿波罗飞船的导航电脑使用了这种滤波器。它具有很强的实际应用性价值,卡尔曼滤波器本身是一种高效率的递归滤波器,能够从一系列不完全以及包含噪声的测量中,估计动态系统的状态,卡尔曼滤波器不仅能估计信号的当前和过去的状态,甚至能估计信号将来的状态[6]。

1、卡尔曼滤波是一个算法,它适用于线性、离散和有限维系统。每一个有外部变量的自回归移动平均系统或可用有理传递函数表示的系统都可以转换成用状态空间表示的系统,从而能用卡尔曼滤波进行计算

[6][6]。 2、任何一组观测数据都无助于消除x(t)的确定性。增益K(t)也同样地与观测数据无关。

3、当观测数据和状态联合服从高斯分布时用卡尔曼递归公式计算得到的是高斯随机变量的条件均值和条件方差,从而卡尔曼滤波公式给出了计算状态的条件概率密度的更新过程线性最小方差估计,也就是最小方差估计[6]。

随着数字科学计算技术的进步,卡尔曼滤波器也得到了越来越广泛的应用,尤其是在自主导航领域。它与大多数滤波器的不同之处在于,本身是一种单纯的时域滤波器,不用像低通滤波器等频域滤波器,要求在频域计划再改变到时域实现。很多问题用卡尔曼滤波器来解决,都会收到很好的效果。卡尔曼滤波的一个典范性实例便是对物体地势

的,包蕴噪声的观察序列预测出物体的坐标上的相对位置还有速度. 在当今不少工程使用如雷达, 计算机视觉中都能够找到它的身影。同时,卡尔曼滤波器是一个重要的课题,在控制理论和控制系统工程中。在现代社会,卡尔曼滤波器的普遍使用已经有将近40年的时间,领域网络了有机器人控制、远程操作、传感器数据交融,乃至在军事方面的雷达探测系统和导弹循迹等领域。最近这些年也是被广泛被应用于计算机图像的处置,例如头脸判别,图像的拆分,图像边沿检测等日常生活所需的地方。随着科学技术日新月异的发展,它必将会被应用到越来越多的方面之中。

3 自平衡车系统硬件电路设计

3.1 MC9S12XS128单片机介绍

本双轮车系统,是用Freescale 旗下的MC9S12XS128单片机作为主控芯片。

MC9S12XS128是一个16位器件,由16位中央处理单元(CPU12X ),128KB 程序Flash , 8KB 数据Flash ,8KB RAM组成片内存储器,同时还包括2个异步串行通信接口(SCI ), 1个串行外设接口(SPI ), 1个8通道输入捕捉输出比较定时器模块(TIM ), 16通道12位A/D转换器和一个8通道脉冲宽度调制模块(PWM )。MC9S12XS128拥有91个单独的数字I/O口,当中的一些具有中断和唤醒功能。

MC9S12XS128的主要特征蕴含以下几个方面:

(1)16位CPU ,具有7级嵌套的中断,每个中断源的中断级别可以配置灵活,外部非屏蔽高优先级中断

[2][2][2]; (2)系统具有完整性,上电复位,时钟监视功能,COP 看门狗,非法地址检测复位;

[1](3)128KB 的程序存储器,8KB RAM,8KB 数据存储器

[2]; (4)8位/12位分辨率可选,具有左对齐还有右对齐数据转换功能,16个模拟输入通道,引脚能用于数字I/O口;

[2](5)8通道16位输入捕捉和输出比较功能,16位计数器,1个16位脉冲累加器

(6)4通道24位模数递减计数器,可产生超时中断,可用超时触发外设

[1][2]; ; (7)提供8通道8位或4通道16位的脉冲宽度调制器,每个通道可以单独编程设置周期和占空比,可设置输出信号中央对齐或者左对齐

[2]; (8)可配置8位或者16位数据长度,全双工或单线双向模式,串行时钟相位和极性可选,双缓冲的发送和接收功能

[2]; (9)2个全双工或单线工作方式,13位波特率选择,可编程的字符长度,边沿有效接收唤醒;

[2](10)最多91个通用I/O口引脚和2个专用输入口引脚,可配置输入引脚上拉或下拉电阻,可配置输出引脚驱动能力。

S12X 系列的单片机的中央处理器CPU 是通过以下三个方面来构成:算术逻辑单位ALU 、系统控制单元和寄存器组。正常情况下单片机外部选用8MHz 或16MHz 的石英晶体振荡器,它可通过其里面的锁相环,使片内总线速率提升到最大值120MHz ,其寻

址方法总共有16种。单片机内部寄存器组中的寄存器、堆栈指针以及变址寄存器都是16位的。CPU12X 具有一个16位的累加器D ,虽如此仍可分别看成两个8位累加器A 和B ,分为高位和低位。cpu12x 寄存器组,囊括以下5个部分。

(1)16位的累加器D 或者是8位累加器A 和B ;

(2)16位的变址寄存器X 和Y ,处理地址是它们的首要任务,可分别用在源地址和目的地址指针型变量的运算;

(3)16位堆栈指针寄存器SP ;

(4)16位流程计数器PC ,运行的时候指向的是下一条指令的地址;

(5)16位条件码寄存器CCR ,在这一点上和cpu12有区别,要尤其注重。

MC9S12XS128所具有的加强型输入捕捉定时器的特征主要有以下几点:

(1)16位的自由运行时钟,8位的分数因子;

(2)8个16位输入捕捉或输出比较;

(3)1个16位的脉冲累加器。

MC9S12XS128单片机的脉宽调制模块(PWM )可设置成8通道8位或者4通道16位,占空比能够编程,脉冲波形可以中心对齐或边缘对齐。它有两个异步串行接口SCI ,可选用通俗的非归零码或IrDA1.4归零码并且支持LIN 总线协议,另外有一个同步串行的外设接口SPI 。MC9S12XS128的J 、H 和P 口当有输入信号跳变沿会产生中断、使用CPU 的功能,根据封装方式,至多可有20个带位中断的引脚。MC9S12XS128时钟发生器,可以使用范围2~16MHz的外部晶振频率,通过锁相环频率合成器,产生更高单片机内部总线周期,当外部时钟缺失时,内部提供自时钟方式,直到外部时钟恢复为止

[1]。

MC9S12XSl28支持在线编程,这种工作方式就是在线写入、擦除、在线下载程序。所谓的在线编程的基本原理是,单片机芯片内的CPU 有能力对片内Flash 进行写入、擦除等操作,我们需要采取办法,将数据传送给单片机。单片机的编程接口除了实现Flash 的写入、擦除功能外,还可被用来应用程序的调试,乃至在应用程序中运行的同时,能够动态地获取CPU 寄存器的值,以及存储器等的瞬态信息,这就是所谓的

BDM(Background Debug Mode)调试方式。这种调试方式我们将在之后详细介绍。

3.2 MC9S12XS128单片机最小系统电路设计

本设计采用MC9S12XS128为主控制器,主要包括单片机供电、复位电路、时钟电路以及BDM 接口电路。由于芯片本身里面集成了PIM 、TIM 、PWM 、SPI 、SCI 、ECT 、CAN 、AD 、PIT 许多模块,因此使用方便。MC9S12XS128拥有3种封装形式,它们是64引脚封装,80引脚封装和112引脚封装。本设计中采用是80引脚的封装系列,其最小系统原理图如图3.1所示。

图3.1 MC9S12XS128单片机最小系统原理图

时钟电路可以使用的,外部晶振频率范围是2~16MHz,当然还可利用MCU 内部具有的5位可编程分频因子,做2~64分频,使之产生频率更加稳定的时钟信号。经过控制器内的锁相环电路(PLL )进行倍频的话,其压控振荡器(VCO )的频率最高可达80MHz ,由于S12XS 芯片系列,允许使用的最高总线频率为40MHz [4]。本计划中选用的是外部的晶振为16MHz ,外部时钟的起振电容是电容C11还有C12。电路的组成部分包含了电阻、电容还有石英体振荡器。由于系统稳定性较差,所以,我们需要添加外部晶振来

提高电路的稳定性。理论上如果单片机的工作速率较快的话,我们越需利用单片机内部

自发产生的高频振荡来作为系统的时钟,但它还是需要外部的支持来达到理想的运行状态。

当单片机运行到睡眠模式的时候,时钟振荡电路的输入端,被其内部带有的200欧姆的下拉电阻拉低,这时候振荡电路会停振,既而会达到省电的目标。图3.2所示为单片机最小系统时钟电路原理图。

图3.2 时钟电路原理图

单片机的外部复位电路,能够利用按钮和电容构成,当然还能使用特制的复位芯片组成。由于投入的经纪有限,本计划中采用的是由电阻和电容构成的简单复位电路,如图3.3所示。加电后,由于电容器的充电时间存在,复位仍然较低,并且单片机会复位;过了一会以后,电容的电量充满,RESET 端输出高电平,这时单片机将工作。手动复位时,按下手动复位按钮,RESET 端会保持低电平,单片机复位;松开手动复位按钮之后,RESET 端会输出高电平,单片机工作。BDM 接口是S12系列单片机用来衔接BDM 调试器的接口,BDM 接头基本设计为6针的双排插头,当中的4个引脚分别为VDD 、RESET 、GND 和BKGD ,另外2个针脚则为空。

图3.3 复位及BDM 接口电路

3.3 电机驱动模块电路设计

电机驱动模块是为整个系统提供动力的装置,也是双轮自平衡智能车系统中必不可少的一个部分。所以设计一个好的驱动电路是整个系统的基础,它不仅会提高整个系统的流畅度,并且能有效提高车模运行的速度。所以我们应当对电机驱动模块尤为重视。

3.3.1 驱动芯片介绍

BTS7960是Infineon 公司设计的一个,用来电机驱动应用的,完整集成的大电流的半桥芯片,它是一种半桥的驱动芯片,电流值最高43A ,功能相对其他芯片略有优势,同时该芯片具备完美的过流、过压、欠压、过温、短路保护等功能,里面MOSFET 导通电阻为12毫欧,拥有最大电流值43A 的连续工作电流,而且拥有抗电磁干扰能力我们使用集成芯片的电路设计比较简单,可靠性也是相对较高的。

3.3.2 驱动电路设计

本双轮自平衡小车设计采用四片BTS7960的电机驱动芯片,构成双H 桥电路,我们通过四个电路的运行,可以有效的平稳的控制两个电机进行正反转,电路如图3.4所示。 [5]。

图3.4 电机驱动原理图

3.4 电源管理模块电路设计

电源模块对于一个控制系统来说是极其重要的组成部分,它的作用影响到整个系统是否能够正常的进行工作,因此在设计控制系统时,首先应选好合适的电源模块。双轮自平衡车使用的是7.2V 2000mAh Ni-Cd 电池供电,单片机系统、测速光电编码器等都是要用5V 电源工作,伺服电机的工作电压范围是4V 到6V ,另外7.2V 2000mAh 镉镍氢电池可以用于直流电机直接供电。

3.4.1 电源的分类

电源可分为开关电源和线性电源两类,其中线性电源内部的电压反馈电路,在线性状态下运行,而开关电源则是,被用于电压协调的管子工作在饱和、截止区即开关形态的。线性电源是将输出的电压进行采集,再与参考电压共同送入比较电压放大器,把它的输出,当作电压调整管的输入量,用来掌控调整管,使其电压随输入量的变化而变化,进而调整其自身输出电压,但是开关电源的工作原理,是经过改动调整管的张和闭的时间,即是运用占空比来改变输出电压的。总的来说,线性电源技术相对成熟,生产成本相对较低,可以实现更高的稳定性,波动比较小,而且没有开关电源没有干扰与噪音。开关电源虽然效率高、消耗小、既可以降低电压也可以升高电压,但是交流纹波还是大一些。

常见的电源有两种,分别是串联型线性稳压电源,例如LM2940、79L24等,以及开关型稳压电源,例如LM2576、LM1575等两大类。前者相对来说拥有纹波小、电路结构较为单一的优点,缺点是工作效率较低,功耗比较大;后者功耗相对较小,效率比前者高,但是电路比前者复杂,并且电路的文波比前者大。就单片机而言,系统需求供给稳定工作的5V 电源,因为TPS7350线性度较好,所以我们采用TPS7350来独自对其进行供电。而体系内的其余模块却需要通过较大的电流来工作,综上所述利用TPS7350和LM2940-5 对控制系统供电,可以有效防止各器件之间发生干扰的情况,解决了电流不足的问题,使得系统得以达到稳定的工作状态。

3.4.2 双轮自平衡车电源电路设计

一个可靠的电源设计方案,是全部硬件电路、体系稳定工作的基础,也是动力的来源,其中5V 的电源模块用来为单片机系统、还有各个传感器模块还有其他模块来供电,

7.2V 的电源模块则用来给电机驱动模块供电。电源模块电路图如下图所示。

图3.5 电源模块电路原理图

3.5 倾角传感器电路设计

3.5.1 加速度计电路设计

此次设计系统所选用的加速度计,是飞思卡尔公司生产制作的三轴加速度计

MMA7260。该加速度传感器本身是一种低g 值的传感器,本身输出信号很大,不需要外界再次进行放大信号。我们使用GSEL1和GSEL2脚来设置灵敏度,我们这个设计中将其灵敏度设置为800mv/g。本次设计中采用的加速度计电路图如图3.6所示。

图3.6 加速度计接口电路图

3.5.2 陀螺仪放大电路设计

本双轮自平衡车系统采用的陀螺仪为,村田公司设计的ENC-03,它是一个成本较低的压电式陀螺仪,其输出是0.67mv/deg/sec

,适合本系统。本设计中主控单片机

MC9S12XS128的ATD 模块,最高的采集精度大约是12bit ,AD 的基准电压为3.3V ,经过估算得到的最小辨别电压仅是为0.8mv ,所以对陀螺仪的输出信号不能直接进行相关的采集,需要放大器电路的相关设计。系统采用LM358设计负反馈的放大电路。同时,由于陀螺仪的输出会随温度的变化而产生变化,这将会影响系统倾角检测的精度,所以我们为了有效地控制陀螺仪,使其自身不要产生温漂,我们必须在其放大电路中采取对应措施,应该添加设计一个零点偏置电压,来调整相关的电路。本系统中利用的是LM358构成电压跟随器,输出电压则会经过电位器来进行调节,将零点的偏置电压始终维持在陀螺仪工作电压的一半,即1.65V ,这样可以会有效抑制陀螺仪的温漂。陀螺仪的放大电路如图3.7所示。

图3.7 陀螺仪ENC-03放大电路原理图

3.6 速度测量模块设计

两轮自平衡小车的工作原理是使用车轮的摩擦面,抵消汽车的重力,为了使小车更稳定的达到自主直立的运行效果,还有完成一些简单的加速、减速运行状态,双轮自平衡车设计采用了速度闭环控制。本设计中速度检测装置,是采用了欧姆龙的150线光电编码器。它本身具有较好的稳定性,构造也相对简单,并且具备极强的机械寿命,抗干扰能力比较强,可靠性相比其它工件来说也是比较优秀的,所以我们采用欧姆龙的150线光电编码器。

表3.1 编码器相关参数表

项目

电源电压

消耗电流

分辨率

输出相

输出状态

最高输出响应

输出上升或下降时间

起动转矩

允许最高转速 参数 DC 5V~12V,纹波的峰峰值小于5% 30mA 以下 500 脉冲/转 A 、B 、Z 三相 集电极开路输出 42kHz 1us 以下 1mN·m以下 5000r/min

自平衡车本身由于是双电机控制,所以本设计中采用两个编码器来分别进行测速。编码器的内部结构为一个光电编码器的中心轴,它的上面有光电发射和接收器件读取。由于编码器采用的是集电极开路输出,其输出波形为矩形波,因此编码器外围电路相对较为简单。在信号的输出端,接入一个上拉电阻,就可以将信号提供给单片机,来采集数据。如图3.8所示,PULSE 引脚是编码器的A 相,单片机的脉冲计数口与它连接,我们通过单片机的PACNT 模块,对输入脉冲采取计数来获取电机转速。DIR 为编码器B 相输出,接的是单片机I/O口,通过A 、B 的相位差来进行相应的计算,就可以判断电机转动方向。

图3.8 测速编码器接口电路

3.7 辅助调试电路设计

本设计中涉及到多种传感器的应用,为了使系统能够工作稳定,顺利完成设计要求,需要检测各个传感器的工作状态。与此同时,还要对数据融合波形,以及控制算法进行相关实时监测,并且对相关参数进行对应调整。为此,本双轮自平衡车设计需要设计辅助调试模块。常用的辅助调试模块有,RS232串口通信模块,蓝牙模块,LCD 模块以及SD 卡模块等。本次设计采用的是RS232串口通信作为调试方法。

图3.9 MAX232串口电平转换电路

计算机与MC9S12XS128单片机之间使用的是RS232进行数据传输,采用MAX232进行电平转换。MAX232是MAXIM 公司出产制作的一款电平转换的芯片,它的使用非常广泛,单片机与PC 机之间的通信,通常都会用到该芯片。有两个转换接口芯片,可以同时惊醒两路电平的转换。MAX232内部本身集成了两个电源电路,分别完成+5V →+10V 和+10V →-10V 的电压转换,目的是为通信提供电源。MAX232外部采用5V 供电,其引脚输出的电平范围也是0~5V,实现电平转换电路如上图3.9所示。

完成上述所有的电路设计后,整个系统的硬件电路平台就基本完成了。

4 自平衡车系统软件设计

4.1 系统软件总体结构

双轮自平衡车系统的软件编写,是基于飞思卡尔MC9S12XS128单片来完成的,其中主要用到MC9S12XS128芯片中的PWM 模块,TIM 模块、I/O模块还有SCI 模块等模块化设计。其中PWM 主要是用来控制正向和反向的运动,TIM 模块主要是为测速模块和数据收集工作,以及捕捉中断并且计算瞬时速度,I/O模块主要是用来拨码开关的设定,SCI 模块的功能则体现在无线串口的调试模块。根据系统要求,系统需要完成的总体软件设计为:单片机初始化,倾角信息的采集,卡尔曼滤波,速率检测,PID 控制原理设计等。图4.1为系统总体软件流程图。

图4.1 系统总体软件流程图

4.2 基于PID 算法的实现

在现实工程中,被使用最多的调节器控制规律,那就是闭环系统误差的比例、积分、微分控制,简称PID 控制。PID 控制器布局单一、稳定安全性较高、运行具备可靠性、参数调整相对方便。当被控目标的构造、参数不能完整掌握时,不能得到完美的数学模型,并且控制理论的其他方面技能较难应用,系统控制器的结构和参数,就得依赖经验还有现场情况做决定,这时应用PID 控制技术最为方便。由于该软件的灵活性与变通性,PID 算法可以得到更改和完整,所以数字PID 具有很强的灵活性和适用性。

4.2.1 PID分类

PID 算法又包括位置式PID 算法和增量式PID 算法,位置式PID 算法公式:

T d T k

u (k ) =K p {e (k ) +∑e (j ) +[e (k ) -e (k -1)]} (4.1) T i j =0T

上式计算u (k ) 不单要求本次与上次的偏差的采样值e (k ) 和e (k -1) ,而且还需要用到e (0) 和e (k ) 的全部值。当k 值很大的时候,要占用很大的内存,并且耗费单片机很多的时间去计算。增量式PID 仅需用到最近三次的误差更加实用,公式如下:

T d T ∆u (k ) =K p [e (k ) -e (k -1)]+K p T e (k ) +K p T [e (k ) -2e (k -1) +e (k -2)] (4.2) i

4.2.2 比例积分微分各部分介绍

比例部分的数学意义是:K p *e (k ) 在模仿PID 的控制系统中,比例环节需要及时对偏差瞬间做出反应。偏差万一要生成了,控制器就会当即进行相关工作,使控制量向偏差消减的方向转变。比例系数K p 决定控制效果的好坏。如果比例系数K p 越大,则控制

作用就会越强,过度过程就越迅速,从而控制过程的静态偏差也就越小;但是如果K p 越大,发生振荡频率就越高,从而破坏系统的稳定性。综上所述,比例系数K p 的选择务必合适,才能使过渡时间少,静差很小并且稳定。

我们从积分部分的数学表达式能够看出,系统只要存在一点偏差,则它的控制作用就会随时间积累,只有在偏差e (k ) =0时,它的积分效果才能够为一个常数,控制作用才是一个不会增加的常数。可见,积分部分能够y 有效去除体系的偏差。

积分环节的调节作用虽然能够去除静态偏差,但同时也会下降体系的响应速度,并且增加系统的超调量。积分常数T i 越大,那么积分的积累作用就越弱,然而系统在过渡

时,不会发生振荡;积分常数T i 越小则表示积分的累积作用越强,但是体系在过渡时却还可以产生振荡。总的来说,我们必须根据具体的要求来确定T i 的大小。

在现实的应用中,我们除了想要消除系统的静态误差外,还需要加快调整的进程。当出现偏差时,或者在偏差产生变化的刹那间,不仅要迅速对偏差量做出立刻响应,而且要依据偏差的变化趋向,有预见性的做出恰当的改正。为了完成作用,我们可在PI 控制器本身之上,再加入微分环节,从而形成PID 控制器。

微分环节的功效是抑制偏差的转变,它是按照偏差的变化趋向来工作的。偏差变化速率越快,则微分控制器的输出就会越高,并且要在偏差值变大之前及时进行修正。给系统加上微分作用,能够有效的降低系统的超调量,避免振荡影响,使系统达到稳定的状态。

微分部分的功效,由微分时间常数T d 决定。当T d 越大时,能更有效的抑制偏差变化e (k ) ;T d 越小时,它反抗偏差变化的作用就越弱。从上可见,微分部分对整个体系稳定有很大的作用,适应地选择微分常数T d 的大小,我们就可以使微分部分的功效达到最好的状态。

4.2.3 PID参数的整定

试凑法是经过闭环实验,来观察系统的响应曲线,按照给定控制条件,对系统响应的大致影响,进行频繁地试凑相关参数,以获取最好的响应结果,最后确定PID 控制参数。试凑绝不是出于盲目的,而是在相关控制理论学科知识的领导下来完成的。试凑法的详细实行过程可分为以下几个部分:

1、整定比例控制部分,将比例系数从小至大进行变化,并查看对应的系统响应,最后获得超调小、反应快的响应曲线。加入系统的静差小,到许可局限内,则响应曲线符合要求,那么只需要比例控制便可,由此可以得到比例系数。

2、如果系统的静差在比例环节的控制下,不能达到设计的要求,则需要加入积分环节。整定时,最初置积分时间为很大值,并将通过第一步整定后,得到的比例系数适当缩小,然后再减小积分时间,使得在保持系统良好动态的情况下,静差能够得到消除。在这过程当中,可按照响应曲线的好坏,不断地来改变比例系数和积分时间,借此来达到满意的控制效果,得到合适的系统整定参数。

3、如果利用比例积分控制后,去除了静差,但动态过程经重复改变,还是不能达到满意的效果,那么增加微分环节,使三者组成比例、积分、微分控制器。在调整的时

候,先设置微分时间为零,在第二步整定的基础上增大,按照同样的方法来操作余下的过程,分改变比例系数和微分时间,进行逐步试凑,来获得满意的调节效果和控制参数。

4.3 双轮自平衡车直立模块软件设计

首先,通过均值滤波法,来得到稳定的陀螺仪值以及加速度计值,然后陀螺仪值减去,车模静止时陀螺仪的值,再乘以一个比例系数,把它当做积分的输入量,再用加速度计的值,减去车模直立时的值,再乘以比例系数,将车模前后角度归一,化为正负九十度,通过加速度计对陀螺仪的补偿作用,可以有效地抑制陀螺仪产生温漂,进而得到准确的角度值,最后通过PD 控制,车模就可以达到稳定理想的直立的效果。

程序部分代码如下所示:

void AngleCalculate()

{

ANGLE_speed =k_gyo*(TLY-TLY_CENTER);

ANGLE1=(Angle_Z-ANGLE)/kTg;

ANGLE+=(ANGLE_speed+ANGLE1)/k_Inter;

}

void AngleControl()

{

float KP1,KD1,KP2,KD2;

if(TLY_FLG == 1)

{

Speed_Set=(int)(KP*ANGLE)+(int)(KD*ANGLE_speed);

}

}

4.4 双轮自平衡车速度控制模块软件设计

为了减小速度控制对小车本身直立产生的影响,使速度控制周期为100ms ,并且对100ms 内,用编码器对采集回来的脉冲数进行累加,左右轮的平均脉冲数作为速度。程序流程如图4.2所示。

图4.2 小车速度控制模块流程图

部分程序代码如下所示:

void SpeedControl(void)

{

int Car_Speed_Set_last=0;

if(TLY_FLG == 1)

{

Speed_Get = (g_Speed_Get_R + g_Speed_Get_L)>>1;

fCar_Speed = fCar_ Speed_ Constant*Speed_Get; //速度控制

if(Drec_error>-5&&Drec_error

else Car_Speed_Set_last=Car_Speed_Set-1;

if(Car_Speed

Speed_Flag_New = 1;

else if(Car_Speed > 0)

Speed_Flag_New = 0;

if((Speed_Flag_Old==1)&&(Speed_Flag_New==0)) fSpeed_Control_Integral=0; fSpeed_Control_Integral+=fI;

if(fSpeed_Control_Integral>3000) fSpeed_Control_Integral =3000;//100

if(fSpeed_Control_Integral

fSpeed_Control_Out_Old = fSpeed_Control_Out_New;

fSpeed_Control_Out_New = fP+fSpeed_Control_Integral;

}

4.5 电机转速的控制

在已经获得了车模直立控制,速度控制两者的输出量之后,我们采取对应措施将他们叠加得到了PWM 所需的占空比,PWM 的占空比决定了电机运行的情况,然后通过相应的寄存器,设置由单片机产生所需占空比的PWM 信号,进而控制电机的正反转还有它的转速快慢。我们在占空比的设定中,由于小车本身具有的传动机构,存在一定的静态摩擦力,所以我们要特意增加了死区补偿。为了保证PWM 的输出,并且不会超过PWM 的满量程范围,需要进行饱和处理。流程框图如图4.3所示。

图4.3 电机控制模块流程图

部分程序代码如下所示:

void MotorOutput()

{

float fLeft, fRight;

if(TLY_FLG == 1)

{

fRight = Speed_Set-fSpeed_Control_Out-g_fDirectionControlOut; //1.2

fLeft = Speed_Set-fSpeed_Control_Out+g_fDirectionControlOut; //1.2

if(fLeft > 0)

{

if(fLeft>300) fLeft = 300;

PWM22_SetDutyUS(0);

PWM00_SetDutyUS(deadline+ fLeft);

}

else

{

if(fLeft

PWM22_SetDutyUS(deadline-fLeft);

PWM00_SetDutyUS(0);

}

if(fRight > 0)

{

if(fRight > 300) fRight = 300;

PWM33_SetDutyUS(deadline + fRight); //车模前走

PWM11_SetDutyUS(0);

}

else

{

if(fRight

PWM33_SetDutyUS(0);

PWM11_SetDutyUS(deadline-fRight);

}

g_fLeft Motor Out = fLeft;

g_fRight Motor Out = fRight;

}

本次的设计主要就是使小车能够在无外界的干扰的情况下,能够自主完成直立的过程,而且能够保持相对稳定的状态,在直立的基础上再去完成剩下的前进等基本动作。综上所述,完成之前所述的双轮自平衡车的各个模块的设计,小车就会具备自主达到直立状态的效果,并保持相对稳定运行的状态。

5 自平衡车系统的安装与调试

5.1 小车整体结构的安装

自平衡车的机械部分,是整辆小车的根基,它不仅代表着小车硬件构造的稳定性,更是影响小车运行的效果,它是全部小车部分当中最为要紧的,一旦对其进行改动,这势必影响未来的设计与调试,所以在刚开始的时候,组装一个良好、稳定的机械架构,就会避免很多不必要的问题。因此,在本次设计中,车模的机械性能、机械结构的安装,是机械设计中最应首先考虑的问题。为了使汽车运行更稳定,我们必须降低汽车的重心,自平衡车模是两轮接触地面,小车的质量基本来自电池和PCB 板,所以将电池放在车模最底下。因为小车的重心越低,对于小车的平衡性越好,因为重心低的话,比较利于平衡的直立。相反如果重心比较高的话,则是比较利于小车的速度性能及运行过程。然而本次设计的重心是在小车的自主直立方面,所以我们应该尽量保持小车的平稳性能。所以综合考虑之后,我们将PCB 板放在车模中间位置。小车的整体效果图如图5.1所示。

图5.1 小车整体机械结构安装效果图

5.1.1 速度传感器的安装

本自平衡车系统设计采用的是,由欧姆龙公司设计生产的150线编码器,它的优点是测量速度准确稳定,缺点是体积相对较大。考虑到小车的整体结构,降低小车的重心,且使速度保持稳定,于是将速度编码器安装于车轮上方,因为将其安装在车轮上方,最能有效降低小车的整体重心,有利于帮助小车整体保持稳定。安装如图5.2所示。

图5.2 速度传感器的安装

5.1.2 倾角传感器和陀螺仪的安装

角度测量的准确与否,直接决定了车模直立效果的好坏,本次设计中,为了综合性能以及考虑到设计的难易程度,我们用到的陀螺仪和加速度计都采用了现成的模块。由于小车在运行的过程中会发生猛烈的晃动,若是安置的过高,将会对角度传感器还有陀螺仪产生比较大的干扰作用,不利于车模整体保持相对稳定的状态,所以在本次设计中,我们采取将它安放在车模的中间位置,因为这样做的话,小车整体产生的振动小,敏感度也比较高。倾角传感器和陀螺仪的安装如图5.3所示。

图5.3 倾角传感器和陀螺仪的安装

5.2 系统的调试工具

两轮自平衡车的硬件设计与软件编程,为自平衡车的稳定运转打下了根基,是不是能运行的稳定,则要求经过尽心的调试才能达成。本双轮自平衡车系统采用了模块化的设计思想,因此可以采用模块化的调试方法。将系统分为几个部分独立进行调试。

MC9S12XS128的调试接口采用BDM 接口。选用开源开发调试工件TBDML 对其运行在线调试、仿真。IDE 采用CodeWarriorIDE V5.0。CodeWarrior 软件运行的开发条件(IDE ,Integrated Development Environment)是由Metrowerks 公司提供的,专为飞思卡尔所有的单片机嵌入式应用,所开发的软件工具。这当中囊括集成开发环境IDE 、处理器、全芯片的仿真、可视化的参数展示条件、项目工程统治设计、C 交叉编译器、汇编器、连接器还有调试器。

图5.4 BDM调试界面

后台调试模式(Background Debug Mode)是现在单片机广泛选用的调试方法之一,在BDM 模式下,主要能达成下列三个方面的功效:首先便是应用程序的下载与在线更新。在BDM 模式下,我们可以对Flash 进行写入和擦除操作,所以我们可以在产品未使用前,即可以将应用程序下载到产品里。BDM 模式的另一功能,是进行单片机内部资源的配置与修复,程序的加密处理等等。少许MCU 的内部寄存器只能在BDM 形式下运行,尤其是一些单片机其内部配置的寄存器。BDM 的第三个作用是做应用程序的动态调试,S12 系列的单片机的BDM 调试模式有这类功能,S12系列单片机CPU 内部使用的是4级流水线结构,这种结构会使得CPU 的读取指令、解释指令、执行指令等操作看起来好像是同时进行的,提高了工作效率。

5.3 自平衡车系统的硬件调试

硬件调试是在小车在硬件平台搭建实现后,最初应当举行的工作,它是确保体系的安全性的重要条件。首先应该用万用表,仔细检查电路的连接是否正确,是否存在短路、虚焊等情况,各电子元件是否能正常工作,尤其应该要注意电源极性是否正确。当全部检查完毕,在确认硬件电路连接没有错误后,上电使用BDM 在线调试,看是否能成功连接到MC9S12XS128最小系统。当检测正常后,向单片机下载测试程序,如果能够正常下载程序,然后观察LED 是否正常闪动。电机驱动电路的测试,通过软件控制电机转速,来验证驱动电路的正确性。确定两个电极输出电压的极性,保证当输出PWM 正电压时,电机正向运转,PWM 输出负电压时,电机反向运转,确保小车硬件系统运行良好。

5.3.1 加速度计和陀螺仪的调试

当车模晃动下时突然保持静止,观察此时的陀螺仪的值。当车模始终保持静止,观测陀螺仪的值。当电池电压增大或减小的时候,观察陀螺仪的采集值。均衡各种情况得到陀螺仪静止时的值,作为陀螺仪的中间值。

车模保持直立的情况下,观察加速度计的采集值,当左右倾斜车模,我们可以看出加速度计采集值的变化,向前加速度计值会增大,向后加速度计值会减小,车模与水平地面垂直时,加速度计得值作为中间值。

5.3.2 电机驱动模块的调试

首先将直流电机连接到电路,然后将小车悬空,前后倾斜小车本身,这个时候我们用示波器来查看电机两头的PWM 信号,看其究竟会不会按要求转变。在不改变其余的所有机械参数的条件下,我们不断地改变系统占空比,观察车轮转速的变化。最后,还要看车模前后倾斜的时候,电机是否会按照之前设计的要求来改变转向。

5.3.3 速度编码器的调试

由于双轮自平衡车采用了双编码器,其中的一路是用单片机自带的脉冲累加器来进行计数的,而另一路则是用用外部中断进行计数的。在线调试的情况下,我们先用手转动轮胎,然后观察两路编码器是否采回了相关数据。将车轮转动一周之后,我们观察编码器采集回多少个脉冲,再将其作为软件设计中,速度转换的一个参数。

5.4 自平衡车系统的静态调试

由于自平衡车系统本身包含有较多的控制参数,直立又是自平衡车的重中之重,所以为了较好的直立效果,应该先从角度的整定开始,我们应该调节k_gyo和k_Inter, 再通过上位机来观察最终输出的角度图像,才能较好的跟踪加速度计测得的角度图像,然后我们会发现加速度计测得的角度图像有一定的毛刺,经过整定以后的图像会变得非常平滑。此时首先增大KP ,小车看起来会进行直立,逐渐加大KP ,小车会直立向一个方向行走,此刻调节KD ,小车运动的速度会越来越慢,由于车模本身角度有少许的误差,小车便不能完全静止一于点。加入速度闭环控制,当加入fSpeed_ Control_P一个较小值时,小车已经可以直立于一点,当我们继续加大它的值的时候,小车便会产生剧烈的颤抖,然后当我们稍微减小fSpeed_Control_P并逐渐增大fSpeed_I,小车将更加稳定的直立,当用手推动它对它产生干扰时,小车也能自主保持直立。

5.5 自平衡车系统的动态调试

设计最终的目的是让小车进行简单的行走运动,所以在小车行走的情况下,参数相比之前,将会有较大的变化。首先,应该调节转向模块,再然后左右转动小车,在线观测小车的误差,是否按照要求变化。当系统符合要求时,可以给小车较低的速度让其行走,这时会发现走一段小车便会停止运动,这是因为速度闭环对直立闭环造成了干扰,解决的办法可以是加大速度控制周期,与此同时调节速度闭环PI 参数,可以看出,当P

较大D 较小的情况下,系统越稳定。经过多次测试,速度控制周期100ms ,速度闭环P 参数为15,D 参数为0.005。速度和刚开始调试时相比将会有提高,如果想要进一步控制小车的转弯等,还需进行相关参数的设定。

通过此次的调试过程,才发现原来软件的正确编译仅仅是整个系统正常运行的一个必备条件,必须要使软件与硬件相互配合,进行努力的调试,才能达到我们想要的预期效果。

6 总结与展望

6.1 总结

本文详细的介绍了,基于MC9S12XS128单片机的双轮自平衡车系统的设计,其中包括软件与硬件两个部分,主要介绍的是硬件部分。系统硬件结构以飞思卡尔公司的16位单片机MC9S12XS128为控制核心,通过陀螺仪加速度计测得角度信号,采用PID 控制保持直立,通过H 桥电机驱动,以及速度编码器测速,实现了直流电机的闭环调速,实现了小车的平衡控制。系统软件设计上综合了各类滤波器长处与短处,再联系本系统的硬件构架设计了以卡尔曼滤波器为中心的数据融合算法。经过卡尔曼滤波器,将陀螺仪与加速度计的输出融合为精确的倾角与角速度输出,为体系的控制提供了有效地保证。本设计最终实现了双轮自平衡小车的平衡控制及简单的运动控制,小车在保持两轮平衡的基础上,可以实现前进、后退、等动作。当然,本次设计中由于个人能力、学识方面的欠缺,还有很多未能完成的地方,比如未能使小车达到自主识别道路,寻迹行走的功能,系统的抗干扰性能还有待加强。

6.2 展望

通过本次毕业设计,加强了我对单片机的了解,尤其是接触到了之前没有学习过的飞思卡尔的单片机,它的性能很多并且也很实用,仅仅几个月的时间还不至于将它完全了解,还需要更进一步的学习来掌握。双轮自平衡车是一个平衡控制系统,它涉及到很多控制算法与理论,与之前学过的很多科目之间都有很大的联系,可以真正的达到学以致用的目的,是一个很好的综合性题目。

双轮平衡智能车的研究已经越来越深入,其应用已经普遍到日常生活中,它的出现为人们提供了新的交通方式的选择,给人们的生活创造了方便。将来随着研究的深入,必将会出现更多更先进的功能,来服务于人们的生活,发挥出它更大的价值。

致 谢

光阴似箭,转眼之间,四年的大学生活也已经走到尾声,此刻的我不知内心是一种怎样的感觉,马上就要走出校园步入社会,充满了迷茫与未知,尽管如此,还是应该勇敢的接受挑战。

能顺利的完成本次毕业设计的任务,首先需要感谢我的导师王玲老师。王老师学问渊博,精益求精,在本次设计中,给予了我很大的帮助。王老师长年带学生参加全国智能车的比赛,在智能车方面造诣很深,我从中自然学到了很多的东西,感觉受益匪浅。王老师能够在繁忙的教学工作中,抽出时间指导我完成毕设,帮助我克服了不少难关,帮我斟酌论文的编写与排版,在这里真的感谢老师对我的帮助。

感谢陪伴了我四年的同学们,尤其是寝室的哥们,这四年从你们身上学到了很多,学习、生活上大家都是互相照顾帮助,很幸运也很感激能与你们在同一个屋檐下一起生活了四年,因为你们让我觉得大学的生活很充实,真的很感谢。

最后尤为要感谢的是我的父母,他们辛辛苦苦养育了我这么多年,如今我也要走出校园了,到了该回报的时候了,我会努力不辜负您们对我的期望。

参考文献

[1] 孙同景 陈桂友 Freescale 9S12十六位单片机原理及嵌入式开发技术. 机械工业出版

社. 2010

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

[3] 蔡述庭 “飞思卡尔”杯智能汽车竞赛设计与实践—基于S12XS 和KinetisK10. 北京

航空航天大学出版社. 2010

[4] 梅晓榕 自动控制元件及线路. 哈尔滨工业大学出版社. 2004

[5] 张琛 直流无刷电机原理及应用. 机械工业出版社. 2009

[6] 刘金琨 智能控制. 电子工业出版社. 2005

[7] 尔桂花 运动控制系统. 清华大学出版社. 2002

[8] 陈伯时 电力拖动自动控系统:运动控制系统(第四版). 机械工业出版社. 2009

[9] 陈万忠 MC9S12单片机原理嵌入式应用开发技术. 机械工业出版社. 2012

[10] 薛涛 单片机与嵌入式系统开发方法. 清华大学出版社. 2009

[11] 王兆安 刘进军 电力电子技术. 机械工业出版社. 2009

[12] Baber.J, Kolodko.J,Noel.T,Cooperative autonomous Driving:Intelligent Vhicles

Sharing City roads. IEEE Robotics&Automation Magazine. 2005

[13] 康波 李云霞 计算机控制系统. 电子工业出版社. 2011

[14] 杨素行 模拟电子技术. 高等教育出版社. 2006

[15] HUANGB SHAHSL.Performance Assessment of ControlLoops: Theory and

Applications . London: Springer2 Verlag. 1999

[16] 安鹏 S12单片机模块应用及程序调试. 电子产品世界. 2006


相关文章

  • 摄像头式避障小车设计
  • 成绩评定表 课程设计任务书 目录 第一章引言 ................................................................................................. ...查看


  • 港口起重机械(B)
  • 第七章 起升机构 第一节 起升机构的基本组成及典型布置 一. 起升机构的作用 ※ 用以实现物品的升降运动: ※ 是起重机械不可缺少的部分,是最基本的重要工作机构. 一.主要设计参数 设计参数有:起重量.取物装置重量.起升高度.起升速度.机构 ...查看


  • 电子设计大赛设计报告
  • 2012年福建省大学生电子设计竞赛 指导教师:林惠君 吴建宁 连桂仁 自平衡小车系统 摘要 我们采用模块化设计的方法,设计了一款基于STC12C5A60S2单片机的自平衡小车系统,实现了题目中的基本要求和发挥部分的全部内容. 本系统基于ST ...查看


  • 智能循迹小车___设计报告
  • 竞速智能循迹小车设 计报告 参赛队伍-- 参赛人--胡沁玫,万超 目录 摘要:„„„„„„„„„„„„„„„„„„ 引言:„„„„„„„„„„„„„„„„„„ 设计方案:„„„„„„„„„„„„„„„„ 报告内容安排:„„„„„„„„„„„ ...查看


  • 蓝宙电子智能创新实验室
  • 智能创新实验室建设方案 芜湖蓝宙电子科技有限公司 -飞思卡尔大学计划官方合作伙伴 版 本:Version 2.0 所 有 者:蓝宙电子 日 期:2014.03.12 目录 一. 二. 实验室介绍 . .................... ...查看


  • 智能循迹小车设计.调试报告
  • 2010年湖南省第三期中职教师资培训 -电子技术应用专业 专业方向选修模块 <智能寻迹小车设计与调试报告> 学 员: 杜正国.周伟.凌畅 小 组 号: 第四组 湖南省应用电子技术专业教师水平认证 岳阳职业技术学院培训基地 201 ...查看


  • 机械智能小车毕业论文doc
  • 智能循迹小汽车控制系统设计 摘要: 关键词:智能车控制系统 目录: 总述: 第一部分:智能车控制系统概述 设计方案模块组成:控制器模块 速度检测模块 电源电压检测模块 路径识别模块 数据显示模块 电动机驱动模块 每个模块都由硬件,软件两部分 ...查看


  • 基于51单片机循迹小车的设计
  • 基于51单片机寻迹小车的设计 摘要:本寻迹小车采用铝合金为车架,STC89C52单片机为控制核心,加以直流电机.光电传感器和电源电路以及其他电路的设计思路.系统由STC89C52通过I/O口控制小车的前进后退以及转向.寻迹由ST188型光电 ...查看


  • 两轮自平衡小车的研究与创新
  • ·68· 科技论坛 两轮自平衡小车的研究与创新 黎晓敏 (广东东软学院信息技术与商务管理系,广东佛山528225) 摘要:本文提出了一种两轮自平衡车的设计方案.以姿态传感器(陀螺仪.加速度计) 来监测车身所处的俯仰状态和状态变化率,使 用卡 ...查看


热门内容