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

下载本文档

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

文档简介

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

2、况下小车能够自主调整并迅速恢复至稳定状态。通过蓝牙,还可以控制小车前进,后退,左右转。关键词:两轮自平衡小车加速度计陀螺仪数据融合滤波PID算法DesignofControlSystemofTwo-WheelSelf-BalanceVehiclebasedonMicrocontrollerAbstractTwo-wheelself-balancevehicleisakindofhighlyunstabletwo-wheelrobot.Thecharacteristicoftwo-wheelvehicleisthenatureoftheinstabilityastraditionalinvert

3、edpendulum,andeffectivecontrolmustbeexertedifweneedtomakeitstable.Thispaperpresentsadesignschemeoftwo-wheelself-balancevehicle.WeneedusinggravityaccelerometergyroscopesensorMPU6050fortheinclinationangleofvehicle,andusingcomplementaryfilterforthedatafusionofgyroscopeandaccelerometer.Wechoosean8-bitmi

4、crocontrollernamedSTC12C5A60S2fromSTCCompanyasmaincontrollerofthecontrolsystem.Themaincontrolleroutputcontrolsignal,whichisbasedonthedatafromthesensors,tothemotordrivechipnamedTB6612FNGforcontrollingtwomotorsofvehicle,andkeepingthevehicleinbalance.Afterthecompletionofthecontrolsystem,thevehiclecanac

5、hieveautonomousbalanceundertheconditionsofunmannedintervention,thevehiclecanadjustautomaticallyandrestoredtoastablestatequicklyinthecaseofgivingappropriateinterferenceaswell.Inaddition,wecancontrolthevehicleforward,backwardandturnaround.Keywords:Two-WheelSelf-BalanceVehicle;Accelerometer;Gyroscope;D

6、atafusion;Complementaryfilter;PIDalgorithm1绪论自平衡小车的研究背景近几年来,随着电子技术的发展与进步,移动机器人的研究不断深入,成为目前机器人研究领域的一个重要组成部分,并且其应用领域日益广泛,其所需适应的环境和执行的任务也更复杂,这就对移动机器人提出了更高的要求。比如,户外移动机器人需要在凹凸不平的地面上行走,有时机器人所需要运行的地方比较狭窄等。如何解决机器人在这些环境中运行的问题,已成为现实应用中所需要面对的一个问题。两轮自平衡小车就是在这些的需求下所产生的。这种机器人相对于其他移动机器人的最显着特点是:采用了两轮共轴、各自独立驱动的方式工作,

7、车身重心位于车轮轴上方,通过车轮的前后滚动来保持车身的动态平衡,并可以在直立平衡状态下完成前进、后退、左右转等任务。正是由于其特殊的构造,两轮自平衡小车适应地形变化的能力较强,且运动灵活,可以胜任一些复杂环境中的工作。两轮自平衡车自面世以来,一直受到世界各国机器人爱好者和研究者的关注,这不仅是因为两轮自平衡车具有独特的外形和结构,更重要的是因为其自身的本质不稳定性和非线性使它成为很好的验证控制理论和控制方法的平台,具有很高的研究价值。早在1987年,日本电信大学教授山藤一雄就提出了两轮自平衡机器人的概念。这个基本的概念就是用数字处理器来侦测平衡的改变,然后以平行的双轮来保持机器的平稳。本世纪初

8、。美国发明家狄恩卡门与他的DEKA公司研发出了可以用于载人的两轮自平衡车,并命名为赛格威,投入市场后,引发了自平衡车的流行。由于两轮自平衡车有着活动灵活,环境无害等优点,具被广泛应用于各类高规格社会活动中,目前该车已用于奥运会、世博会、机场、火车站等大型场合。自平衡小车研究意义由于两轮自平衡小车具有结构特殊、体积小、运动灵活、适应地形变化能力强、能够方便的实现零半径回转、适合在拥挤和危险的空间内活动、可以胜任一些复杂环境里的工作。因此两轮自平衡车有着广泛的应用前景,其典型应用包括代步工具、通勤车、空间探索、危险品运输、高科技玩具、控制理论测试平台等方面。目前自平衡车的应用如自平衡的代步车正在流

9、行开来。因此两轮自平衡车的研究很有意义。论文的主要内容本论文主要叙述了基于单片机的两轮自平衡车控制系统的设计与实现的整个过程。主要内容为两轮自平衡小车的平衡原理,直立控制,蓝牙控制。整个内容分为六章,包括绪论、课题任务与关键技术、系统原理概述、系统硬件设计、系统软件设计和系统的机械安装及调试。第一章主要讲解了课题的研究背景及意义,国内外研究现状。第二章主要讲解了设计的主要任务与所需的关键技术。第三章主要讲解了两轮自平衡小车控制系统的直立控制原理,转向控制原理。第四章主要讲解了系统的硬件设计,介绍了自平衡小车控制系统的硬件构成,主控芯片STC12C5A60S的结构及组成,以及稳压电源模块,倾角测

10、量模块,直流电机驱动模块,蓝牙控制模块和两轮测速模块的设计。第五章主要讲解了软件设计的算法功能与框架,主要描述了控制系统的程序实现以及PID算法的使用。第六章主要讲解了系统的调试与参数整定。最后总结与展望,总结本设计的各个模块,并对两轮自平衡小车的优化方向进行简要的阐述。2课题任务与关键技术主要任务本文研究并设计了一种基于单片机的两轮自平衡小车控制系统,实现了两轮小车的自主直立控制与蓝牙控制功能。系统采用STC12C5A60sM片机作为核心控制单元,通过增加各种传感器,设计相应电路并编写相应程序完成平衡控制与蓝牙控制。系统需要利用加速度计和陀螺仪获得车体的倾角和角速度,并对数据进行互补滤波融合

11、。通过编码器获得两轮的速度信息。根据获得的数据信息对速度和倾角进行闭环控制。加入蓝牙通信控制,将所有输出数据进行叠加,输出至驱动芯片,实现对小车的控制。关键技术系统设计两轮自平衡车的系统设计包括:车身机械结构设计,硬件系统设计和软件系统设计。在机械结构上必须保持小车重心的稳定性,才能避免控制系统过于复杂;硬件系统必须包含自平衡车所需的所有电子系统与电气设备;软件系统则负责车身平衡控制与目标效果的实现。数学建模模型的建立有助于控制器的设计,以及控制系统各项参数的大概确定。模型的建立主要使用牛顿力学定律。姿态检测两轮自平衡车是一个本质不平衡的系统,控制系统对小车的精确控制依赖于姿态检测系统对车身姿

12、态及运动状态的精确检测。目前,一般采用由陀螺仪和加速度计等惯性传感器组成的姿态检测系统对车身倾角进行实时、准确的检测。但是由于惯性传感器自身固有的特性,随着温度、震动等外界变化,会产生不同程度的噪声与漂移,因此必须采用一些滤波算法,对加速度计和陀螺仪所采集的数据进行融合,使测量角度更加真实稳定。控制算法两轮自平衡车所实现的平衡是一种动态的平衡。在遇到外界干扰时,需要通过控制算法来快速将小车恢复至平衡状态。传统的PID算法在各类工业场合有着广泛的应用,完全可以满足本控制系统的要求,因此本控制系统设计采用PID控制算法。3系统原理分析控制系统任务分解根据系统要求,小车必须能够在没有外界干预的情况下

13、依靠两个同轴安装的车轮保持平衡,并完成前进,后退,左右转等动作。相对于四轮车,控制系统的任务更为复杂,为了能解决该问题,首先将复杂的问题分解成简单的几个问题进行讨论。对系统要求进行分析,可知维持小车直立,并在受到外界干扰后迅速恢复稳态,完全依赖于一对直流电机对车轮的驱动。因此本控制系统的设计可以从对电机的控制着手,控制电机的转速以及转向来实现对小车的控制。小车的控制任务可以分解成以下三个基本任务:(1)控制小车直立:通过控制两个电机的转向保持小车的直立状态。(2)控制小车车速:通过控制两个电机的转速实现车速控制。(3)控制小车转向:通过控制两个电机的转速差实现转向控制。以上三个任务都是通过控制

14、小车两个车轮的驱动电机完成的。直流电机的控制最终取决于电机两端输入的电压大小,将电机近似认为处于线性状态,因此上述三个基本任务可以等效成三种不同控制目标的电压,将这三种电压进行叠加后,便可以得到最终所需的电压,并将其施加在电机上以达到所追求的控制效果。在这三个任务中,保持小车平衡是关键,三个任务执行的优先级为:平衡控制速度才$制转向控制。由于小车同时受到三种控制的影响,从平衡控制角度来看,其他两个控制就成为了它的干扰。因此对小车速度、方向的控制应该尽量保持平滑,以减少对平衡控制的干扰。上述三种控制各自独立进行,它们各自假设其他两个控制都已经达到稳定。比如控制小车加速和减速的时候,平衡控制一直在

15、起作用,它会自动改变小车的倾角,使小车实现加速和减速。控制原理生活中有很多直立控制的例子,例如一个正常人可以经过简单的练习,让一根直木棒在水平的掌心中保持直立。这需要两个条件:一是托着木棒的手掌可以移动;二是眼睛可以观察到木棒的倾斜角和倾斜趋势(角加速度)。可以通过手学的移动抵消木棒的倾斜角度和趋势,从而保持木棒的直立。这两个条件缺一不可,这就是控制中的负反馈机制图保持木棍直立的反馈笆蚂邈小车的直立也是通过负反馈实现的,但相对于上面的例子来说相对简单,因为小车有两个车轮着地,因此车体只会在一个平面内发生倾斜。控制车轮转动便可抵消倾斜的趋势从而保持车体直立。车体向前倾斜,车体垂直,车车体向后倾斜

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

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

18、反,此时小车可以恢复到平衡位置。为使小车能在平衡位置尽快的稳定下来,还需要有阻尼力,阻尼力与角速度方向相反,大小成正比。式(3-2)可变为F=mg0-mki0-m质0'(3-3)式中,ki,k2均为比例系数,8为小车倾角,8'为角速度。只要满足ki>g,k2>0,便可以将小车维持在直立状态。k2是小车回到垂直位置的阻尼系数,选取合适的阻尼系数可以保证小车可以尽快稳定在垂直位置。因此为了控制小车稳定,需要精确的测量小车倾角9的大小和角速度9'的大小,并以此控制车轮的加速度。4系统硬件设计本控制系统主要由以下几个模块组成:STCi2C5A60S常片机最小系统、电

19、源管理模块、车身姿态感应模块、电机驱动模块、速度检测模块、蓝牙模块,各模块关系图如下所示:图硬件设计总体框图STC12C5A60S常片机介绍本控制系统采用STC12C5A60S2片机作为控制核心。该单片机是深圳宏晶科技有限公司的典型单片机产品,采用了增强型8051内核,片内集成了60KB程序Flash、1KB数据Flash(EEPROM1280字节RAM2个16位定时/计数器、44根I/O口线、两个全双工异步用行口(UART、高速同步通信端口(SPI)、8通道10位ADC2通道PWMW编程计数器阵列/捕获/比较单元(PWM/PCA/CCUMAX810专用复位电路和硬件看门狗等资源。STC12C

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

21、歹U内部结构框图图单片机最小系统电源管理模块电源管理模块为整个硬件电路提供所需的电源,其稳定性是整个硬件电路可靠运行的基础。为了减少各个模块之间的相互干扰,电源模块由若干相互独立的稳压电路模块组成。整个系统由三节的18650锂电池串联供电。选择LM2596s作为稳压芯片,整个系统的供电模块如下图所示。LM2596SFF关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性。该器件内部集成频率补偿和固定频率发生器,开关频率为150KHz与低频开关调节器相比较,可以使用更小规格的滤波元件。该器件还有其他一些特点:在特定的输入电压和输出载荷的条件下,输出电

22、压的误差可以保证在土4%勺范围内,振荡频率误差在土15%勺范围内;可以用仅80uA的待机电流;可实现外部断电;具有自我保护电路。该器件完全可以满足系统需要。稳压电路原理图如下图所示。图稳压电路原理图车身姿态感应模块在第三章原理分析中可知,为了控制小车稳定,需要精确的测量小车倾角9的大小和角速度8'的大小,并以此控制车轮的加速度,以此消除小车的倾角。因此小车倾角以及倾角的角速度的测量成为了控制小车直立的关键。测量小车倾角和角速度可以通过加速度传感器和陀螺仪实现。本控制系统的设计使用了整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时的轴间差的问题,减少了大量的封装空间。

23、MPU6050对陀螺仪和加速度计分别用了三个16位的ADC将其测量的模拟量转化为可输出的数字量,和所有设备寄存器之间的通信采用400kHz的I2C接口。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪的可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为土2,±4,±8,±16g。量程越大,测量精度越低。MPU605位物及坐标轴示意图如下图所示。图MPU605似物图与对应坐标轴示意图加速度计MPU6050勺加速度计部分可以测量出各轴方向上的加速度,并经过AD转

24、换后可输出数字信号。加速度检测的基本原理如下图所示。图加速度检测的基本原理通过微机械加工技术在硅片上加工形成了一个机械悬臂。它与相邻的电极形成了两个电容。由于加速度使得机械悬臂与两个电极之间的距离发生了变化,从而改变了两个电容的参数。通过集成的开关电容放大电路测量电容参数的变化,形成了与加速度成正比的电压输出。只需要测量出一个轴上的加速度,便可计算出小车的倾角。如下图所示,设小车前进方向是小车直立时MPU6050勺Y轴正向。mgsin0图小车受力分析当小车前倾时,小车重心在Y轴上所受的力便是重力在Y轴上的分力,为mgsin8,因止匕MPU605/Y轴上所获得的加速度为gsinB。似乎只需要获得

25、加速度数据就可以获得小车的倾角,但在实际小车的运行过程中,由于小车本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确的反映小车的倾角,如下图所示。图加速度计信号波动小车运动所产生的振动加速度使得输出电压在实际倾角电压附近波动,可以使用低通滤波将其过滤,但也会使得信号无法实时反映小车的倾角变化,从而影响对小车的控制,使得小车无法保持平衡。陀螺仪陀螺仪可以用来测量物体的旋转角速度,它利用了旋转坐标系中的物体会受到克里利奥力的原理,在器件中利用压电陶瓷做成振动单元。当器件旋转时会改变振动频率从而反映出物体旋转的角速度。将MPU605酸装在小车上时,可以测量出小车倾

26、斜的角速度,将角速度信号进行积分便可得到小车的倾角如下图所示测图小车的角速度和角度由于陀螺仪输出的是车模的角速度,不会受到车体振动的影响,因此该信号中的噪声很小,小车的倾角数据又是由所测角速度积分得来,进一步使信号变得平滑,从而使得角度信号更加稳定。但是在实际情况中,测量所得的角速度信号存在微小的误差,经过积分运算之后,会形成累计误差,并会随着时间的延长逐步增加,最终导致电路饱和,无法形成正确的角度信号。如下图所示。图角度积分漂如上所述,加速度计对加速度很敏感,所获得的数据会由于小车的运动产生高频噪声。而陀螺仪所测得的数据受到车体振动影响很少,但是随着时间延长,容易存在积分漂移。因此可以使用互

27、补滤波,使得这两个传感器正好能弥补相互的缺点。简而言之,互补滤波就是在短时间内采用陀螺仪得到的角度作为最优,定时对加速度转化而来的角度进行取平均值处理来校正陀螺仪所得到的角度。具体实现方法如下图所示。陀螺图互补滤波原理框图利用加速度计所获得的角度信息9g与陀螺仪积分后的角度9进行比较,将比较的误差信号经过比例Tg放大之后与陀螺仪输出的角速度信号叠加之后再进行积分。从上图的框图可以看出,对于加速度计给定的角度8g,经过比例、积分环节之后产生的角度9必然最终等于9g。由于加速度计获得的角度信息不会存在积累误差,所以最终将输出角度8中的积累误差消除了。加速度计所产生的角度信息8g中会叠加很强的噪声信

28、号。为了避免该噪声信号对于角度8的影响,比例系数Tg应该非常小。这样,加速度的噪声信号经过比例、积分后,在输出角度信息中就会变得很小。由于存在积分环节,所以无论Tg多小,最终输出角度8必然与加速度计测量的角度8g相等,但是这个调节过程会随着Tg的减小而延长。为了避免输出角度8跟着8g过长,可以采取以下两个方面的措施:g(1) 仔细调整陀螺仪的放大电路,使得它的零点偏置尽量接近于设定值,并且稳定。(2) 在控制电路和程序运行的开始,尽量保持小车处于直立状态,这样一开始就使得输出角度9和9g相等。此后,加速度计的输出只是消除积分的偏移,输出角度不会出现很大的偏差。电机驱动模块本控制系统采用了TB6

29、612FN弊为直流电机驱动器件,该器件具有很高的集成度,同时能提供足够的输出能力,运行性能和能耗方面也具有优势,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。TB6612FN0东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-桥结构,双通道电路卒U出,可同时驱动2个电机。该器件每通道输出最高的连续驱动电流,启动峰值电流达2A/(连续脉冲/单脉冲);4种电机控制模式:正转/反转/制动/停止;PWMC持频率高达100kHz;待机状态;片内低压检测电路与热停机保护电路;工作温度:-2085C;SSOP24b型贴片封装。VM1PWMAAIN2AIN1YccSiB

30、YGWBIU1BIN2P甲MBVM3VM2AOIAOIP6ND1PGND14期A况502B02PGND2PGN02B01BOI图TB6612FNGE片功能示意图如上图所示,TB6612FNG勺主要弓|脚功能:AIN1/AIN2、BIN1/BIN2、PWMA/PWMB为控制信号输入端;AO1/AO2BO1/BO刻2路电机控制输出端;STBY%正常工作/待机状态控制引脚;VM15V)口VCC分别为电机驱动电压输入和逻辑电平输入端。TB6612FNO基于MOSFETH桥集成电路,具效率高于晶体管H桥驱动器,并且外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。对于PWMt号,它

31、支持高达100kHz的频率。TB6612FN。本控制系统中的电路连接如下图所示。图TB6612FNG6路连接示意图如上图所示,AIN1/AIN2,BIN1/BIN2以及STBY1接直单片机的普通I/O口,STBY空制器件的工作状态,AIN1/AIN2和BIN1/BIN2的输入决定电机的正反转。单片机的PCA模块产生PWMB出作为电机转速的才5制手段,连接至TB6612FNG的PWMA/PWMB路采用耐压值25V的10uF电解电容和的电容进行电源滤波,使用功率MOSFETVMff口VCO供电源反接保护。TB6612FNG勺逻辑真值表如下图所示表1TB6612FN哭辑真值表输入输出IN1IN2PW

32、MSTBYO1O2模式状态HHH/LHLL制动LHHHLH反转LHLHLL制动HLHHHL止转HLLHLL制动LLHHOFF停止H/LH/LH/LLOFF待机速度检测模块本系统采用安华高公司的L15D11型光电编码器作为车速检测元件,其精度达到车轮每旋转一周,旋转编码器产生448个脉冲,可满足控制精度的要求。图光电编码器由于光电管器件直接输出数字脉冲信号,因此可以直接将这些脉冲信号连接到单片机的计数器或外部中断端口。编码器每个光电管输出两个脉冲信号,它们波形相同,相位相差90°。如果电机正转,第二个脉冲落后90°如果电机反转,第二个脉冲超前90。可以通过这个关系判断电机是否

33、正反转,但是在实际电路中,只检测一路脉冲信号,通过该信号得到电机转速,电机的转向是通过控制程序最后输出值的正负来判断的。5系统软件设计设计好系统硬件之后,剩下的任务便是系统的软件设计和调试。小车能否正常运行,需要通过软件的编写和调试来完成。软件编写与调试的主要任务包括:(1)建立软件工程,配置单片机资源,初步编写程序的主框架;(2)建立软件编译、下载、调试的环境;(3)编写实现各个模块,并测试各个模块的功能;(4)逐步完成各个待定参数的整定;(5)综合测试。开发STC12C5A60S2片机应用程序可以使用Keil集成开发环境。软件系统总体结构根据控制系统的要求,整个软件的功能模块包括:(1)小

34、车姿态信息采集;(2)小车的直立控制、速度控制、方向控制;(3) 电机PWIMJ出;(4) 程序初始化、参数设定等;上述功能中,1-3需要在精确的时间周期内完成,因此可以在一个周期定时中断里完成。功能4的执行不需要精确的时间周期,因此可以放在程序的主程序中完成。这两类任务之间可以通过全局变量实现相互的通讯。关键程序流程图如下图所示,图程序流程图主程序是程序编译的入口,是程序运行的开始。如上图所示,单片机上电运行后,便运行初始化程序,该工作包括所应用到模块的初始化和应用程序的初始化两部分。前者是对单片机所应用到的各个模块进行初始化,这部分的代码由STM片机烧录工具STC-ISP自动生成。后者是应

35、用程序的初始化,是对控制程序中应用到的变量值进行初始化。初始化工作完成后,开启总中断,等待10ms定时器中断,中断产生后,进入中断服务子程序,该程序负责调用控制系统关键部分的函数,是整个程序流程的关键所在。在该子程序中,MCUS过IIC与MPU605城行通讯,获取小车的加速度值和角速度值;分别使用外部中断与单片机计数器对左右轮编码器产生的脉冲进行计数,从而获取小车行驶速度相关的数据。对从传感器所获得的数据使用PID算法进行分析与计算后,将速度控制、角度控制、转向控制的结果进行叠加,并将最后程序运算结果通过PWMI/O口的高低电平输出至电机。实现对小车的闭环控制。程序在主循环中只运行蓝牙控制函数

36、,实时通过审口获取上位机通过蓝牙发送的数据,并将此数据作为转向控制的依据。本控制系统程序共使用了三个中断:定时器溢出中断、计数器溢出中断、外部中断。定时器溢出中断负责采样周期的设定,在此中断子程序中完成控制程序的绝大部分功能功能。计数器溢出中断负责右车轮编码器产生脉冲的计数。外部中断负责左车轮编码器产生脉冲的计数。单片机的硬件资源配置时钟频率设置:该控制系统中,将晶振频率设置为CPUT作频率,为20ML定时/计数器设置定时/计数器的核心是一个加1计数器。加1计数器的脉冲有两个来源,一个是外部脉冲源,另一个是系统的时钟振荡器。计数器对这两个脉冲源之一进行输入计数,每输入一个脉冲,计数值加1。当计数器全为1时,再输入一个脉冲就使计数值回0,同时,从最高位溢出一个脉冲使特殊功能寄存器TCON勺TF0或TF1置1,作为计数器的溢出中断标志。如果定时/计数器工作于定时状态,则表示定时时间到;若工作于计数状态,则表示计数回00所以,加1计数器的基本功能是对输入脉冲进行计数,至于其工作于定时还是计数状态,则取决于脉冲源。16位的加1计数器由两个8位的特殊功能寄存器THX高8位)和TLX(低8位)组成(X=R1)。TMODTCO洞AUXFffl来确定定时/

温馨提示

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

评论

0/150

提交评论