基于单片机的两轮自平衡车控制系统设计_第1页
基于单片机的两轮自平衡车控制系统设计_第2页
基于单片机的两轮自平衡车控制系统设计_第3页
基于单片机的两轮自平衡车控制系统设计_第4页
基于单片机的两轮自平衡车控制系统设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的两轮自平衡车控制系统设计摘要两轮自平衡车是一种高度不稳定的两轮机器人,就像传统的倒立摆一样,本质不稳定是两轮小车的特性,必须施加有效的控制手段才能使其稳定。本文提出了一种两轮自平衡小车的设计方案,采用重力加速度陀螺仪传感器MPU-6050检测小车姿态,使用互补滤波完成陀螺仪数据与加速度计数据的数据融合。系统选用STC公司的8位单片机STC12C5A60S2为主控制器,根据从传感器中获取的数据,经过PID算法处理后,输出控制信号至电机驱动芯片TB6612FNG,以控制小车的两个电机,来使小车保持平衡状态。整个系统制作完成后,小车可以在无人干预的条件下实现自主平衡,并且在引入适量干扰的

2、情况下小车能够自主调整并迅速恢复至稳定状态。通过蓝牙,还可以控制小车前进,后退,左右转。关键词:两轮自平衡小车 加速度计 陀螺仪 数据融合 滤波 PID算法Design of Control System of Two-Wheel Self-Balance Vehicle based on MicrocontrollerAbstractTwo-wheel self-balance vehicle is a kind of highly unstable two-wheel robot. The characteristic of two-wheel vehicle is the nature

3、of the instability as traditional inverted pendulum, and effective control must be exerted if we need to make it stable. This paper presents a design scheme of two-wheel self-balance vehicle. We need using gravity accelerometer gyroscope sensor MPU6050 for the inclination angle of vehicle, and using

4、 complementary filter for the data fusion of gyroscope and accelerometer. We choose an 8-bit microcontroller named STC12C5A60S2 from STC Company as main controller of the control system. The main controller output control signal, which is based on the data from the sensors, to the motor drive chip n

5、amed TB6612FNG for controlling two motors of vehicle, and keeping the vehicle in balance. After the completion of the control system, the vehicle can achieve autonomous balance under the conditions of unmanned intervention, the vehicle can adjust automatically and restored to a stable state quickly

6、in the case of giving appropriate interference as well. In addition, we can control the vehicle forward, backward and turn around.Key words: Two-Wheel Self-Balance Vehicle; Accelerometer; Gyroscope; Data fusion; Complementary filter; PID algorithm1 绪论11.1 自平衡小车的研究背景11.2 自平衡小车研究意义11.3 论文的主要内容22 课题任务与

7、关键技术22.1 主要任务22.2关键技术22.2.1 系统设计22.2.2 数学建模22.2.3姿态检测32.2.4 控制算法33 系统原理分析33.1 控制系统任务分解33.2 控制原理43.3 数学模型54 系统硬件设计64.1 STC12C5A60S2单片机介绍74.2 电源管理模块84.3 车身姿态感应模块94.3.1 加速度计104.3.2 陀螺仪124.4 电机驱动模块144.5 速度检测模块165 系统软件设计165.1 软件系统总体结构175.2 单片机的硬件资源配置185.2.1定时/计数器设置185.2.2 PWM输出设置205.2.3 串行通信设置235.2.4 中断的

8、开放与禁止265.3 MPU6050资源配置275.3.1 普通IO口模拟IIC通讯285.3.2 MPU6050资源配置325.4 系统控制算法设计345.4.1 PID算法345.4.2 互补滤波算法355.4.3 角度控制与速度控制355.4.4 输出控制算法366 总结与展望376.1 总结376.2 展望37参考文献381 绪论1.1 自平衡小车的研究背景近几年来,随着电子技术的发展与进步,移动机器人的研究不断深入,成为目前机器人研究领域的一个重要组成部分,并且其应用领域日益广泛,其所需适应的环境和执行的任务也更复杂,这就对移动机器人提出了更高的要求。比如,户外移动机器人需要在凹凸不

9、平的地面上行走,有时机器人所需要运行的地方比较狭窄等。如何解决机器人在这些环境中运行的问题,已成为现实应用中所需要面对的一个问题。两轮自平衡小车就是在这些的需求下所产生的。这种机器人相对于其他移动机器人的最显著特点是:采用了两轮共轴、各自独立驱动的方式工作,车身重心位于车轮轴上方,通过车轮的前后滚动来保持车身的动态平衡,并可以在直立平衡状态下完成前进、后退、左右转等任务。正是由于其特殊的构造,两轮自平衡小车适应地形变化的能力较强,且运动灵活,可以胜任一些复杂环境中的工作。 两轮自平衡车自面世以来,一直受到世界各国机器人爱好者和研究者的关注,这不仅是因为两轮自平衡车具有独特的外形和结构,更重要的

10、是因为其自身的本质不稳定性和非线性使它成为很好的验证控制理论和控制方法的平台,具有很高的研究价值。早在1987年,日本电信大学教授山藤一雄就提出了两轮自平衡机器人的概念。这个基本的概念就是用数字处理器来侦测平衡的改变,然后以平行的双轮来保持机器的平稳。本世纪初。美国发明家狄恩卡门与他的DEKA公司研发出了可以用于载人的两轮自平衡车,并命名为赛格威,投入市场后,引发了自平衡车的流行。由于两轮自平衡车有着活动灵活,环境无害等优点,其被广泛应用于各类高规格社会活动中,目前该车已用于奥运会、世博会、机场、火车站等大型场合。1.2 自平衡小车研究意义由于两轮自平衡小车具有结构特殊、体积小、运动灵活、适应

11、地形变化能力强、能够方便的实现零半径回转、适合在拥挤和危险的空间内活动、可以胜任一些复杂环境里的工作。因此两轮自平衡车有着广泛的应用前景,其典型应用包括代步工具、通勤车、空间探索、危险品运输、高科技玩具、控制理论测试平台等方面。目前自平衡车的应用如自平衡的代步车正在流行开来。因此两轮自平衡车的研究很有意义。1.3 论文的主要内容本论文主要叙述了基于单片机的两轮自平衡车控制系统的设计与实现的整个过程。主要内容为两轮自平衡小车的平衡原理,直立控制,蓝牙控制。整个内容分为六章,包括绪论、课题任务与关键技术、系统原理概述、系统硬件设计、系统软件设计和系统的机械安装及调试。第一章主要讲解了课题的研究背景

12、及意义,国内外研究现状。第二章主要讲解了设计的主要任务与所需的关键技术。第三章主要讲解了两轮自平衡小车控制系统的直立控制原理,转向控制原理。第四章主要讲解了系统的硬件设计,介绍了自平衡小车控制系统的硬件构成,主控芯片STC12C5A60S2的结构及组成,以及稳压电源模块,倾角测量模块,直流电机驱动模块,蓝牙控制模块和两轮测速模块的设计。第五章主要讲解了软件设计的算法功能与框架,主要描述了控制系统的程序实现以及PID算法的使用。第六章主要讲解了系统的调试与参数整定。最后总结与展望,总结本设计的各个模块,并对两轮自平衡小车的优化方向进行简要的阐述。2 课题任务与关键技术2.1 主要任务本文研究并设

13、计了一种基于单片机的两轮自平衡小车控制系统,实现了两轮小车的自主直立控制与蓝牙控制功能。系统采用STC12C5A60S2单片机作为核心控制单元,通过增加各种传感器,设计相应电路并编写相应程序完成平衡控制与蓝牙控制。系统需要利用加速度计和陀螺仪获得车体的倾角和角速度,并对数据进行互补滤波融合。通过编码器获得两轮的速度信息。根据获得的数据信息对速度和倾角进行闭环控制。加入蓝牙通信控制,将所有输出数据进行叠加,输出至驱动芯片,实现对小车的控制。2.2关键技术2.2.1 系统设计两轮自平衡车的系统设计包括:车身机械结构设计,硬件系统设计和软件系统设计。在机械结构上必须保持小车重心的稳定性,才能避免控制

14、系统过于复杂;硬件系统必须包含自平衡车所需的所有电子系统与电气设备;软件系统则负责车身平衡控制与目标效果的实现。2.2.2 数学建模模型的建立有助于控制器的设计,以及控制系统各项参数的大概确定。模型的建立主要使用牛顿力学定律。2.2.3姿态检测 两轮自平衡车是一个本质不平衡的系统,控制系统对小车的精确控制依赖于姿态检测系统对车身姿态及运动状态的精确检测。目前,一般采用由陀螺仪和加速度计等惯性传感器组成的姿态检测系统对车身倾角进行实时、准确的检测。但是由于惯性传感器自身固有的特性,随着温度、震动等外界变化,会产生不同程度的噪声与漂移,因此必须采用一些滤波算法,对加速度计和陀螺仪所采集的数据进行融

15、合,使测量角度更加真实稳定。2.2.4 控制算法两轮自平衡车所实现的平衡是一种动态的平衡。在遇到外界干扰时,需要通过控制算法来快速将小车恢复至平衡状态。传统的PID算法在各类工业场合有着广泛的应用,完全可以满足本控制系统的要求,因此本控制系统设计采用PID控制算法。3 系统原理分析3.1 控制系统任务分解根据系统要求,小车必须能够在没有外界干预的情况下依靠两个同轴安装的车轮保持平衡,并完成前进,后退,左右转等动作。相对于四轮车,控制系统的任务更为复杂,为了能解决该问题,首先将复杂的问题分解成简单的几个问题进行讨论。对系统要求进行分析,可知维持小车直立,并在受到外界干扰后迅速恢复稳态,完全依赖于

16、一对直流电机对车轮的驱动。因此本控制系统的设计可以从对电机的控制着手,控制电机的转速以及转向来实现对小车的控制。小车的控制任务可以分解成以下三个基本任务:(1) 控制小车直立:通过控制两个电机的转向保持小车的直立状态。(2) 控制小车车速:通过控制两个电机的转速实现车速控制。(3) 控制小车转向:通过控制两个电机的转速差实现转向控制。以上三个任务都是通过控制小车两个车轮的驱动电机完成的。直流电机的控制最终取决于电机两端输入的电压大小,将电机近似认为处于线性状态,因此上述三个基本任务可以等效成三种不同控制目标的电压,将这三种电压进行叠加后,便可以得到最终所需的电压,并将其施加在电机上以达到所追求

17、的控制效果。在这三个任务中,保持小车平衡是关键,三个任务执行的优先级为:平衡控制速度控制转向控制。由于小车同时受到三种控制的影响,从平衡控制角度来看,其他两个控制就成为了它的干扰。因此对小车速度、方向的控制应该尽量保持平滑,以减少对平衡控制的干扰。上述三种控制各自独立进行,它们各自假设其他两个控制都已经达到稳定。比如控制小车加速和减速的时候,平衡控制一直在起作用,它会自动改变小车的倾角,使小车实现加速和减速。3.2 控制原理 生活中有很多直立控制的例子,例如一个正常人可以经过简单的练习,让一根直木棒在水平的掌心中保持直立。这需要两个条件:一是托着木棒的手掌可以移动;二是眼睛可以观察到木棒的倾斜

18、角和倾斜趋势(角加速度)。可以通过手掌的移动抵消木棒的倾斜角度和趋势,从而保持木棒的直立。这两个条件缺一不可,这就是控制中的负反馈机制。控制给定控制对象执行机构控制算法传感器大脑手掌眼睛木棒 图3.1 保持木棍直立的反馈控制系统小车的直立也是通过负反馈实现的,但相对于上面的例子来说相对简单,因为小车有两个车轮着地,因此车体只会在一个平面内发生倾斜。控制车轮转动便可抵消倾斜的趋势从而保持车体直立。 车体垂直,车轮保持静止车体向前倾斜,车轮向前加速行驶车体向后倾斜,车轮向后加速行驶图3.2 通过车轮控制车体平衡3.3 数学模型二轮自平衡小车在建模时可以将其简化为倒立摆,便于进行受力分析并建立其数学

19、模型,从而更好的设计控制系统。 图3.3 单摆模型与倒立摆模型通过对单摆模型的观察可知,当物体离开平衡位置后会受到重力与线的合作用力,驱使重物回复至平衡位置,并进行周期运动,由于空气阻力的存在,单摆最终会停在平衡位置。可以得出,单摆保持平衡的条件有两点:(1) 受到与位移方向相反的回复力作用;(2) 受到和运动速度相反的阻尼力作用。如果没有阻尼力的作用,单摆会在平衡位置左右晃动无法停止,如果阻尼力过小,单摆会在平衡位置震荡,如果阻尼力过大,则单摆的回复时间将变长,因此存在一个临界阻尼系数,使得单摆停止在平衡位置所需时间最短。图3.4 小车受力分析mgsin-macosmgm倒立摆在偏离平衡位置

20、时,受到的合力与位移方向相同,因此倒立摆不能像单摆一样稳定在垂直位置,并且会加速偏离平衡位置直至倒下。为了让倒立摆能像单摆一样平衡在稳定位置,只能通过增加额外受力使回复力与位移方向相反。控制车轮做加速运动,以小车作为参考系,重心受到一个额外的惯性力,与车轮加速度大小相同,方向相反。因此倒立摆所受到的回复力为 F=mgsin-macos (3-1)根据控制系统的特性,角需要控制在很小的范围内,并且假设控制车轮加速度与角成正比,比例系数为k1,因此上式可近似处理为 F=mg-mk1 (3-2)此时,只要k1g,回复力的方向便和位移方向相反,此时小车可以恢复到平衡位置。为使小车能在平衡位置尽快的稳定

21、下来,还需要有阻尼力,阻尼力与角速度方向相反,大小成正比。式(3-2)可变为 F=mg-mk1-mk2 (3-3)式中,k1,k2均为比例系数,为小车倾角,为角速度。只要满足k1g,k20,便可以将小车维持在直立状态。k2是小车回到垂直位置的阻尼系数,选取合适的阻尼系数可以保证小车可以尽快稳定在垂直位置。因此为了控制小车稳定,需要精确的测量小车倾角的大小和角速度的大小,并以此控制车轮的加速度。4 系统硬件设计本控制系统主要由以下几个模块组成:STC12C5A60S2单片机最小系统、电源管理模块、车身姿态感应模块、电机驱动模块、速度检测模块、蓝牙模块,各模块关系图如下所示:主控制器STC12C5

22、A60S2陀螺仪加速度计MPU6050编码器电机驱动芯片TB6612FNG直流电机蓝牙模块加速度角速度图4.1 硬件设计总体框图4.1 STC12C5A60S2单片机介绍本控制系统采用STC12C5A60S2单片机作为控制核心。该单片机是深圳宏晶科技有限公司的典型单片机产品,采用了增强型8051内核,片内集成了60KB程序Flash、1KB数据Flash(EEPROM)、1280字节RAM、2个16位定时/计数器、44根I/O口线、两个全双工异步串行口(UART)、高速同步通信端口(SPI)、8通道10位ADC、2通道PWM/可编程计数器阵列/捕获/比较单元(PWM/PCA/CCU)、MAX8

23、10专用复位电路和硬件看门狗等资源。STC12C5A60S2具有在系统可编程(ISP)功能和在系统调试(ISD)功能,可以省去价格较高的专门编程器,开发环境的搭建非常容易,并且该单片机所有指令和标准的8051内核完全兼容,具有良好的兼容性和很强的数据处理能力。STC12C5A60S2系列单片机的内部结构框图如下所示,该单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶体振荡电路等模块。STC12C5A60S2单片机几乎包含了数据采集和控制中所需的

24、所有单元模块,可称得上一个片上系统。图4.2 STC12C5A60S2系列内部结构框图 图4.3 单片机最小系统4.2 电源管理模块电源管理模块为整个硬件电路提供所需的电源,其稳定性是整个硬件电路可靠运行的基础。为了减少各个模块之间的相互干扰,电源模块由若干相互独立的稳压电路模块组成。整个系统由三节3.7V的18650锂电池串联供电。选择LM2596S作为稳压芯片,整个系统的供电模块如下图所示。锂电池LM2596S编码器MPU6050TB6612FNG蓝牙电机CH340D图4.4 系统供电模块示意图LM2596S开关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流,同时具有很好的

25、线性和负载调节特性。该器件内部集成频率补偿和固定频率发生器,开关频率为150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。该器件还有其他一些特点:在特定的输入电压和输出载荷的条件下,输出电压的误差可以保证在4%的范围内,振荡频率误差在15%的范围内;可以用仅80uA的待机电流;可实现外部断电;具有自我保护电路。该器件完全可以满足系统需要。稳压电路原理图如下图所示。图4.5 稳压电路原理图4.3 车身姿态感应模块在第三章原理分析中可知,为了控制小车稳定,需要精确的测量小车倾角的大小和角速度的大小,并以此控制车轮的加速度,以此消除小车的倾角。因此小车倾角以及倾角的角速度的测量成为了控

26、制小车直立的关键。测量小车倾角和角速度可以通过加速度传感器和陀螺仪实现。本控制系统的设计使用了整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时的轴间差的问题,减少了大量的封装空间。MPU6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量,和所有设备寄存器之间的通信采用400kHz的I2C接口。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪的可测范围为250,500,1000,2000/秒(dps),加速度计可测范围为2,4,8,16g。量程越大,测量精度越低。MPU6050实物及坐标轴示意图如下图所示。+Z+Y+

27、Z+X+Y+X图4.6 MPU6050实物图与对应坐标轴示意图4.3.1 加速度计MPU6050的加速度计部分可以测量出各轴方向上的加速度,并经过AD转换后可输出数字信号。加速度检测的基本原理如下图所示。图4.7 加速度检测的基本原理通过微机械加工技术在硅片上加工形成了一个机械悬臂。它与相邻的电极形成了两个电容。由于加速度使得机械悬臂与两个电极之间的距离发生了变化,从而改变了两个电容的参数。通过集成的开关电容放大电路测量电容参数的变化,形成了与加速度成正比的电压输出。 只需要测量出一个轴上的加速度,便可计算出小车的倾角。如下图所示,设小车前进方向是小车直立时MPU6050的Y轴正向。mgsin

28、mg图4.8 小车受力分析当小车前倾时,小车重心在Y轴上所受的力便是重力在Y轴上的分力,为mgsin,因此MPU6050在Y轴上所获得的加速度为 gsin。似乎只需要获得加速度数据就可以获得小车的倾角,但在实际小车的运行过程中,由于小车本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确的反映小车的倾角,如下图所示。图4.9 加速度计信号波动小车运动所产生的振动加速度使得输出电压在实际倾角电压附近波动,可以使用低通滤波将其过滤,但也会使得信号无法实时反映小车的倾角变化,从而影响对小车的控制,使得小车无法保持平衡。4.3.2 陀螺仪陀螺仪可以用来测量物体的旋转角

29、速度,它利用了旋转坐标系中的物体会受到克里利奥力的原理,在器件中利用压电陶瓷做成振动单元。当器件旋转时会改变振动频率从而反映出物体旋转的角速度。将MPU6050安装在小车上时,可以测量出小车倾斜的角速度,将角速度信号进行积分便可得到小车的倾角。如下图所示。测量积分tt图4.10 小车的角速度和角度由于陀螺仪输出的是车模的角速度,不会受到车体振动的影响,因此该信号中的噪声很小,小车的倾角数据又是由所测角速度积分得来,进一步使信号变得平滑,从而使得角度信号更加稳定。但是在实际情况中,测量所得的角速度信号存在微小的误差,经过积分运算之后,会形成累计误差,并会随着时间的延长逐步增加,最终导致电路饱和,

30、无法形成正确的角度信号。如下图所示。图4.11 角度积分漂移如上所述,加速度计对加速度很敏感,所获得的数据会由于小车的运动产生高频噪声。而陀螺仪所测得的数据受到车体振动影响很少,但是随着时间延长,容易存在积分漂移。因此可以使用互补滤波,使得这两个传感器正好能弥补相互的缺点。简而言之,互补滤波就是在短时间内采用陀螺仪得到的角度作为最优,定时对加速度转化而来的角度进行取平均值处理来校正陀螺仪所得到的角度。具体实现方法如下图所示。积分比例陀螺仪加速度计+ + + - 角速度角度gTg图4.12 互补滤波原理框图+ 利用加速度计所获得的角度信息g与陀螺仪积分后的角度进行比较,将比较的误差信号经过比例T

31、g放大之后与陀螺仪输出的角速度信号叠加之后再进行积分。从上图的框图可以看出,对于加速度计给定的角度g,经过比例、积分环节之后产生的角度必然最终等于g。由于加速度计获得的角度信息不会存在积累误差,所以最终将输出角度中的积累误差消除了。加速度计所产生的角度信息g中会叠加很强的噪声信号。为了避免该噪声信号对于角度的影响,比例系数Tg应该非常小。这样,加速度的噪声信号经过比例、积分后,在输出角度信息中就会变得很小。由于存在积分环节,所以无论Tg多小,最终输出角度必然与加速度计测量的角度g相等,但是这个调节过程会随着Tg的减小而延长。为了避免输出角度跟着g过长,可以采取以下两个方面的措施:(1) 仔细调

32、整陀螺仪的放大电路,使得它的零点偏置尽量接近于设定值,并且稳定。(2) 在控制电路和程序运行的开始,尽量保持小车处于直立状态,这样一开始就使得输出角度和g相等。此后,加速度计的输出只是消除积分的偏移,输出角度不会出现很大的偏差。4.4 电机驱动模块本控制系统采用了TB6612FNG作为直流电机驱动器件,该器件具有很高的集成度,同时能提供足够的输出能力,运行性能和能耗方面也具有优势,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。该器件每通道输

33、出最高1.2A的连续驱动电流,启动峰值电流达2A/3.2A(连续脉冲/单脉冲);4种电机控制模式:正转/反转/制动/停止;PWM支持频率高达100kHz;待机状态;片内低压检测电路与热停机保护电路;工作温度:-2085;SSOP24小型贴片封装。图4.13 TB6612FNG芯片功能示意图如上图所示,TB6612FNG的主要引脚功能:AIN1/AIN2、BIN1/BIN2、PWMA/PWMB为控制信号输入端;AO1/AO2、BO1/BO2为2路电机控制输出端;STBY为正常工作/待机状态控制引脚;VM(4.515V)和VCC(2.75.5V)分别为电机驱动电压输入和逻辑电平输入端。TB6612

34、FNG是基于MOSFET的H桥集成电路,其效率高于晶体管H桥驱动器,并且外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。对于PWM信号,它支持高达100kHz的频率。TB6612FNG在本控制系统中的电路连接如下图所示。图4.14 TB6612FNG电路连接示意图如上图所示,AIN1/AIN2,BIN1/BIN2以及STBY连接直单片机的普通I/O口,STBY控制器件的工作状态,AIN1/AIN2和BIN1/BIN2的输入决定电机的正反转。单片机的PCA模块产生PWM输出作为电机转速的控制手段,连接至TB6612FNG的PWMA/PWMB。电路采用耐压值25V的10uF

35、电解电容和0.1uF的电容进行电源滤波,使用功率MOSFET对VM和VCC提供电源反接保护。TB6612FNG的逻辑真值表如下图所示。 表1 TB6612FNG逻辑真值表输入输出IN1IN2PWMSTBYO1O2模式状态HHH/LHLL制动LHHHLH反转LHLHLL制动HLHHHL正转HLLHLL制动LLHHOFF停止H/LH/LH/LLOFF待机4.5 速度检测模块本系统采用安华高公司的L15D11型光电编码器作为车速检测元件,其精度达到车轮每旋转一周,旋转编码器产生448个脉冲,可满足控制精度的要求。图4.15 光电编码器由于光电管器件直接输出数字脉冲信号,因此可以直接将这些脉冲信号连接

36、到单片机的计数器或外部中断端口。编码器每个光电管输出两个脉冲信号,它们波形相同,相位相差90。如果电机正转,第二个脉冲落后90;如果电机反转,第二个脉冲超前90。可以通过这个关系判断电机是否正反转,但是在实际电路中,只检测一路脉冲信号,通过该信号得到电机转速,电机的转向是通过控制程序最后输出值的正负来判断的。5 系统软件设计设计好系统硬件之后,剩下的任务便是系统的软件设计和调试。小车能否正常运行,需要通过软件的编写和调试来完成。软件编写与调试的主要任务包括:(1) 建立软件工程,配置单片机资源,初步编写程序的主框架;(2) 建立软件编译、下载、调试的环境;(3) 编写实现各个模块,并测试各个模

37、块的功能;(4) 逐步完成各个待定参数的整定;(5) 综合测试。开发STC12C5A60S2单片机应用程序可以使用Keil集成开发环境。5.1 软件系统总体结构根据控制系统的要求,整个软件的功能模块包括:(1) 小车姿态信息采集;(2) 小车的直立控制、速度控制、方向控制;(3) 电机PWM输出;(4) 程序初始化、参数设定等;上述功能中,1-3需要在精确的时间周期内完成,因此可以在一个周期定时中断里完成。功能4的执行不需要精确的时间周期,因此可以放在程序的主程序中完成。这两类任务之间可以通过全局变量实现相互的通讯。关键程序流程图如下图所示。开始系统初始化等待定时中断10ms定时中断获取加速度

38、值、角速度值并进行角度控制获取小车速度值并进行速度控制电机PWM输出小车是否跌倒否是小车停止运行图5.1 程序流程图主程序是程序编译的入口,是程序运行的开始。如上图所示,单片机上电运行后,便运行初始化程序,该工作包括所应用到模块的初始化和应用程序的初始化两部分。前者是对单片机所应用到的各个模块进行初始化,这部分的代码由STC单片机烧录工具STC-ISP自动生成。后者是应用程序的初始化,是对控制程序中应用到的变量值进行初始化。初始化工作完成后,开启总中断,等待10ms定时器中断,中断产生后,进入中断服务子程序,该程序负责调用控制系统关键部分的函数,是整个程序流程的关键所在。在该子程序中,MCU通

39、过IIC与MPU6050进行通讯,获取小车的加速度值和角速度值;分别使用外部中断与单片机计数器对左右轮编码器产生的脉冲进行计数,从而获取小车行驶速度相关的数据。对从传感器所获得的数据使用PID算法进行分析与计算后,将速度控制、角度控制、转向控制的结果进行叠加,并将最后程序运算结果通过PWM与I/O口的高低电平输出至电机。实现对小车的闭环控制。程序在主循环中只运行蓝牙控制函数,实时通过串口获取上位机通过蓝牙发送的数据,并将此数据作为转向控制的依据。本控制系统程序共使用了三个中断:定时器溢出中断、计数器溢出中断、外部中断。定时器溢出中断负责采样周期的设定,在此中断子程序中完成控制程序的绝大部分功能

40、功能。计数器溢出中断负责右车轮编码器产生脉冲的计数。外部中断负责左车轮编码器产生脉冲的计数。5.2 单片机的硬件资源配置时钟频率设置:该控制系统中,将晶振频率设置为CPU工作频率,为20M。5.2.1定时/计数器设置定时/计数器的核心是一个加1计数器。加1计数器的脉冲有两个来源,一个是外部脉冲源,另一个是系统的时钟振荡器。计数器对这两个脉冲源之一进行输入计数,每输入一个脉冲,计数值加1。当计数器全为1时,再输入一个脉冲就使计数值回0,同时,从最高位溢出一个脉冲使特殊功能寄存器TCON的TF0或TF1置1,作为计数器的溢出中断标志。如果定时/计数器工作于定时状态,则表示定时时间到;若工作于计数状

41、态,则表示计数回0。所以,加1计数器的基本功能是对输入脉冲进行计数,至于其工作于定时还是计数状态,则取决于脉冲源。16位的加1计数器由两个8位的特殊功能寄存器THX(高8位)和TLX(低8位)组成(X=0、1)。TMOD、TCON和AUXR用来确定定时/计数器的工作方式并控制其功能。其中,TMOD用于控制定时/计数器的工作方式;TCON用于控制定时器T0、T1的启动和停止,并包含了定时器的状态;AUXR用于设置定时器的速度。TMOD寄存器的各位定义如下:位号D7D6D5D4D3D2D1D0定时器名定时器1定时器0位名称GATEC/M1M0GATEC/M1M0表5.1 定时/计数器的方式选择M1

42、和M0:方式选择控制位。定时器的方式选择如下表所示M1M0工作方式功能说明00013位定时/计数器01116位定时/计数器102可自动装入的8位计数器113定时器0:分成两个8位计数器定时器1:停止计数C/:功能选择位。1:计数器功能0:定时器功能GATE:门控位,用于选通控制。1:为高电平且TRX置位时,启动定时器工作。0:每当TRX置位时,就启动定时器工作。TCON寄存器的格式如下:位号D7D6D5D4D3D2D1D0位名称TF1TR1TF0TR0IE1IT1IE0IT0TF1:T1溢出标志位。T1启动计数后,T1从初值开始加1计数;最高位产生溢出时,TF1由硬件置1,并向CPU请求中断;

43、当CPU响应中断时,由硬件清零。TF1也可以由程序查询或清零。TR1:T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时启动T1开始计数,TR1=0时停止T1计数。当GATE(TMOD.7)=1,TR1=1且输入高电平时,才允许T1计数。TF0:定时/计数器0溢出标志位。含义和功能与TF1相似。TR0:定时器T0的运行控制位。含义和功能与TR1相似。由于定时/计数器是可编程的,所以在任何一个定时/计数器开始计数或定时之前,必须对其写入相应的控制字。把方式控制字写入TMOD,以选择定时器的工作方式;把初值写入THX、TLX控制计数长度,将TCON相应位(TRX)

44、置1或清零实现启动或停止计数。辅助寄存器AUXR各位定义如下:位号D7D6D5D4D3D2D1D0位名称T0x12T1x12UART_M0x6BRTRS2SMODBRTx12EXTRAMS1BRS与定时器速度相关的控制位有:T0x12:定时器0速度控制位。0:定时器0的速度是传统8051单片机定时器的速度,即12分频。1:定时器0的速度是传统8051单片机定时器速度的12倍,即不分频。T1x12:定时器1速度控制位,用法与T0x12相似。在本控制系统设计中,T0用作计数器,对右轮编码器产生的脉冲进行计数。因此T0初始化程序如下所示:Void Timer0Init() TMOD |= 0x05

45、; /定时器0用作计数器 ,16位计数器 TL0 = 0x00 ; TH0 = 0x00 ; /设置计数初值 TR0 = 1 ; /计数器T0开始计数 ET0 = 1 ; /允许计数器0中断,用于进位T1用作定时器,用来产生10ms定时器中断,决定了控制系统的采样频率。T1定时器初始化程序可由STC-ISP工具自动生成:void Timer1Init(void)/10毫秒20.000MHzAUXR &= 0xBF;/定时器时钟12T模式TMOD &= 0x0F;/设置定时器模式TMOD |= 0x10;/设置定时器模式TL1 = 0xE5; /设置定时初值TH1 = 0xBE; /设置定时初值

46、TF1 = 0; /清除TF1标志TR1 = 1; /定时器1开始计时 ET1 = 1; /允许定时器T1中断5.2.2 PWM输出设置在本控制系统设计中,PWM输出由可编程计数器阵列(PCA)模块产生。PCA模块含有一个特殊的16位定时器,有2个16位的捕获/比较模块与之相连,如下图所示。16位PCA定时/计数器模块0模块1P1.3/CEX0/PCA0/PWM0P1.4/CEX1/PCA1/PWM1图5.2 PCA模块结构其中,16位PCA定时/计数器是2个模块的公共时间基准。寄存器CH和CL的内容是自动递增计数的16位PCA定时器的值。PCA模块中,与PWM输出相关的寄存器有PCA工作模式

47、寄存器(CMOD)、PCA控制寄存器(CCON)、PCA比较/捕获寄存器CCAPMn以及PCA捕捉/比较寄存器CCAPnL和CCAPnH。CMOD各位的定义如下:位号D7D6D5D4D3D2D1D0位名称CIDLCPS2CPS1CPS0ECF其中,CIDL:空闲模式下是否停止PCA计数的控制位。CIDL=0时,空闲模式下PCA计数器继续计数;CIDL=1时,空闲模式下PCA计数器停止计数。CPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。PCA计数脉冲选择如下表所示。表5.2 PCA计数脉冲源选择CPS2CPS1CPS0PCA时钟源输入选择000系统时钟/12,Fsoc/12001系统

48、时钟/2,Fosc/2010定时器0溢出脉冲。011ECI/P1.2(或P4.1)脚输入的外部时钟100系统时钟,Fosc101系统时钟/4,Fosc/4110系统时钟/6,Fosc/6111系统时钟/8,Fosc/8ECF:PCA计数器溢出中断使能位。EFC=1时,允许寄存器CCON中CF位的中断。ECF=0时,禁止寄存器CCON中CF位的中断。PCA控制寄存器(CCON)各位的定义如下:位号D7D6D5D4D3D2D1D0位名称CFCRCCF1CCF0其中,CF:PCA计数器溢出标志位。当PCA计数器溢出时,CF位由硬件置拉。如果CMOD寄存器的ECF位置位,则CF标志可用来产生中断。CF

49、位可通过硬件或软件置位,但只能通过软件清零。CR:PCA计数器的运行控制位。置位CR位时,启动PCA计数器计数;清零CR位时,关闭PCA计数器。CCF1/CCF0:PCA模块的中断标志。当发生匹配或捕获时由硬件置拉。这些标志位必须通过软件清除。PCA比较/捕获寄存器CCAPMn各位的定义如下:位号D7D6D5D4D3D2D1D0位名称ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn其中,ECOMn:允许比较器功能控制位。置1时,允许比较器功能。CAPPn:正捕获控制位,置1时允许上升沿捕获。CAPNn:负捕获控制位,置1时允许下降沿捕获。MATn:匹配控制位。若该位置1,则PC

50、A计数值与模块的比较/捕获寄存器的值匹配时将置位CCON寄存器的中断标志位CCFn。TOGn:翻转控制位。若该位置1,则PCA工作于高速输出模式。PCA计数器的值与模块的比较/捕获寄存器的值匹配时,CEXn脚(CEX0/PCA0/PWM0/P1.3,CEX1/PCA1/PWM1/P1.4)翻转。PWMn:脉宽调制模式。该位置1时,CEXn脚用作脉宽调制输出。ECCFn:使能CCFn中断。PCA模块的工作模式设定如下表所示。表5.3 PCA模块的工作模式设定(部分)ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn模块功能10000108位PWM,无中断11000118位PWM,由

51、低变高可产生中断10100118位PWM,由高变低可产生中断11100118位PWM,由低变高或由高变低均可产生中断当PCA模块用于PWM模式时,PCA捕捉/比较寄存器(CCAPnL和CCAPnH)用来控制输出的占空比,占空比=(255-CCAPnL)/255*100%。PWM初始化程序如下所示:void PWMInit() CCON = 0x00 ; /关闭PCA计数器,禁止计数中断。 CL = 0 ; CH = 0 ; /自由递增计数的16位PCA定时器的值,初始化为0CMOD = 0x08 ; /系统时钟作为时钟源,PWM频率为 / 20M/256=78125Hz CCAP0H = CC

52、AP0L = 0xFF; /用于控制占空比,占空比初始化为0%。 CCAP1H = CCAP1L = 0xFF; /占空比=(255-CCAPnL)/255*100%, CCAPM0 = 0x42 ; /模块1设置为PWM模式:8位PWM输出,无中断。 CCAPM1 = 0x42 ; /模块1设置为PWM模式:8位PWM输出,无中断。 CR = 1 ; /PCA计数器阵列开始计数。5.2.3 串行通信设置计算机的CPU与外部设备之间,计算机和计算机之间的信息交换成为通信。通信分为并行通信和串行通信。在并行通信中,数据的各位同时进行传送;特点是传输速度快。在串行通信中,数据在一根数据信号线上一位一位的顺序传送,每一位数据都占据一个固定的时间长度。按照串行数据的同步方式,串行通信可以分为同步通信和异步通信两类。在异步通信方式中,接收器和发送器使用各自的时钟。它们的工作是非同步的。在异步传送中,每一个字符要用起始位和停止位作为字符开始和结束的标志,以字符为单位一个个的发送和接收。同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。串行通信中的数

温馨提示

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

评论

0/150

提交评论