平衡车软件系统设计.docx

上传人:b****7 文档编号:23536571 上传时间:2023-05-18 格式:DOCX 页数:35 大小:1.34MB
下载 相关 举报
平衡车软件系统设计.docx_第1页
第1页 / 共35页
平衡车软件系统设计.docx_第2页
第2页 / 共35页
平衡车软件系统设计.docx_第3页
第3页 / 共35页
平衡车软件系统设计.docx_第4页
第4页 / 共35页
平衡车软件系统设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

平衡车软件系统设计.docx

《平衡车软件系统设计.docx》由会员分享,可在线阅读,更多相关《平衡车软件系统设计.docx(35页珍藏版)》请在冰豆网上搜索。

平衡车软件系统设计.docx

平衡车软件系统设计

基于KEA128的电磁感应平衡车软件系统设计

基于KEA128的电磁感应平衡车软件系统设计

摘要

近十年来,一种特殊的运动工具逐渐得到重视和多领域的应用,即两轮自平衡车。

两轮平衡车以电能为动力,结构轻盈小巧,能耗低效率高,能够代替传统的汽油运输工具,减小环境污染。

同时,相较于普通汽车,两轮平衡车无刹车系统和特殊的转向结构,平衡车只需改变系统的重心和两轮速度差就能实现刹车和转向功能。

两轮平衡车系统有着非线性,强耦合不稳定的特点,众多国内外研究人员都以此模型来研究控制策略。

通过近几年的研究,已经出现了各种性能优秀的控制算法;本文设计了一种基于KEA128芯片的两轮平衡车系统,所需的外设包括了MMA7361CL加速度计,ENC-3MB+LPR550陀螺仪,10mH电磁线圈和欧姆龙两相编码器;编码器用于获取小车车速以实现小车电机的闭环控制,加速度计和陀螺仪用于融合小车姿态角,利用电磁线圈检测道路磁场变化信息。

本设计在直立平衡控制用到了清华的滤波方案融合小车实时的姿态角,同时在小车直立,调速和巡线的控制上使用了PID控制算法,以完善小车的动态性能

关键词:

KEA128;两轮平衡;软件设计;磁场检测;加速度计;陀螺仪;姿态角融合;

DesignofelectromagneticinductionbalancingvehiclesoftwaresystembasedonKEA128

Abstract

Inthepastdecade,aspecialautohasbeenpaidmoreandmoreattentionandappliedinmanyfields,two-wheeledself-balancingvehicle.Thetwo-wheeledself-balancingvehicleispoweredbyelectricenergy,withlightandcompactmechanicalstructureandhighenergyconsumptionefficiency.Itcandecreaseenvironmentalpollutionandtaketheplaceofthetraditionalgasolineautomations.Meanwhile,comparedwithordinaryautomations,thetwo-wheeledself-balancingvehiclehasnobrakesystemandspecialsteeringmechanism.Thetwo-wheeledself-balancingvehicleonlyneedstochangethecenterofgravityofthesystemandthedifferenceofthespeedbetweenthetwowheelstoachievethebrakeandsteeringfunctions.

Thetwo-wheeledbalancingvehiclesystemistypicalofnonlinearityandstrongcouplinginstability.Manyresearchersusethismodeltodevelopthecontrolstrategy.Throughtheresearchtheresearchofmanyscholarsinrecentyears,therehavebeenvariousexcellentcontrolalgorithmsinrelatedfields.thispaperdesignsatwo-wheeledbalancingvehiclesystembasedonachipcalledKEA128,therequiredperipheralsincludeaccelerometers,gyroscopes,electromagneticcoilsandencoders.Accelerometersandgyroscopesareusedtofigureoutthemechanicalangleofthevehicle,theelectromagneticcoilsdetecttheroadinformation,andtheencodersareusedtoobtainthevehiclespeedinordertocompletetheclosed-loopcontrolofthetrolleymotor.ThefilterschemeofTsinghuaUniversityisusedintheverticalbalancecontroltointegratethereal-timeangleofthevertical,andPIDcontrolalgorithmisusedinthevertical,speedregulationandlinepatrolcontrolofthecarinordertoimprovethedynamicperformanceofthesystem.

Keywords:

KEA128;two-wheeledofbalance;softwaredesign;Magneticfielddetection;Accelerometer;gyroscope;

 

第1章绪论

两轮平衡车作为一种特殊车型的移动机器,在近几年的发展中应用已愈加广泛。

特别是在地形复杂的地形中,两轮平衡车能够凭借其独特的灵活性和自适应性等优点,能够代替传统四轮车完成作业任务。

本文阐述了如何通过动力学受力分析,并在硬件基础上设计出一套基本的软件系统,由此建立可对两轮平衡车实现平衡,控速,转向等控制的稳定系统。

1.1本设计的目的、意义及应达到的技术要求

两轮平衡车衍生于单级倒立摆系统模型,而比起传统的倒立摆型性能更加优越,能够轻易适应各种复杂地形,例如泥泞道路,路面凹陷不平整等特殊地形。

并且两轮平衡车以电能为动力,结构轻盈小巧,能耗低效率高,能够代替传统的汽油运输工具,减小环境污染。

同时,两轮平衡车操作简单灵活,相较于普通汽车,两轮平衡车无刹车系统和特殊的转向结构,平衡车只需改变系统的重心和两轮速度差就能实现刹车和转向功能。

由于上述优点,因此两轮平衡车适用场景十分广泛。

本设计用KEA128系列单片机作为为控制核心,辅以加速度计、陀螺仪、编码器以及工型电感等传感器车模姿态的测量以及道路信息的识别;根据采集信息,结合清华滤波算法以及直立环、速度、方向等负反馈PID闭环控制,以使电磁平衡车保持稳定直立状态和自主循迹。

1.2本设计在国内外的发展概况及存在的问题

日本电机工程与通信大学的Kazuo教授在1986年提出了一种平行双轮车并为此申请了专利,但是由于当时传感器技术和计算机技术技术不够发达,虽然这种小车在两轮中间设置了一个小杠杆,并利用这个小杠杆与地面的接触可以推算出整个车身的倾斜角度,但这种平行双轮车平衡效果仍然差强人意,所以导致这种自平衡技术并没有受到广泛的关注。

但到了2002年,一种名为“Joe”两轮平衡电动车被瑞士联邦工业大学的Grasser教授研制出来,这种平衡电动车此时已经利用了陀螺仪和倾角计来计算车身倾角,此次两轮平衡车研制的成功让人们开始对自平衡技术产生兴趣并开始重视这方面的研究。

同样的,在2002年,美国的SegwayLLC公司设计开发了世界上第一部二轮自平衡车,一款名叫“SegwayHT”诞生了。

从机械结构上来看,SegwayHT主要由一个脚踏板,两个车轮和一竖直车杆组成,是现如今市面上常见的平衡代步车的原型。

SegwayHT在运动中通过倾角检测模块实时检测车体倾斜角,并将车体倾斜角数据交由控制器处理,控制器由此通过控制算法输出一个合适的电机转矩信号,将这个转矩信号输入给电机,可以使电机产生一定的转矩,从而控制两个车轮实现前进,转弯和后退等功能。

至今,许多平衡车还沿用着SegwayHT的许多设计。

在SegwayHT面世后,国内两轮平衡车的研究也十分热门,很多科研机构也早在2003年就开始投入到了两轮平衡车的研究当中,并取得了一定的研究成果。

2003年,一款名为“FreeMover”的二轮自平衡电动车由中国科学技术大学研制出来,而FreeMover在结构上也是由一个连接在车身的连杆和两个车轮组成,车体的前进转弯等操作可以由驾驶者通过改变重心来控制。

而在此之后,哈尔滨工程大学,西安电子科技大学,清华大学等多所国内高校也相继开始两轮平衡车的研究,其中,清华大学的宋宇宁等研发的Cheway在结构上虽然与SegwayHT类似,但是Cheway能在下坡时将能量进行转化,为电池充电,使得Cheway续航能力得到了提高,同时,Cheway的成本也远远低于SegwayHT。

目前已经有许多商用的两轮平衡代步车已经进入了市场,成为人们解决日常通勤最后一公里的代步工具。

两轮平衡车不管在工业用途还是在商用方面都有着宽阔的应用前景和市场。

1.3本设计应解决的主要问题

目前,影响两轮平衡车性能的因素主要有三个:

a、针对两轮自平衡小车,用牛顿经典力学的分析方法进行了建立数学模型;车身的机械零点,重心以及电磁感应前瞻的长度以及安装位置都在小车平衡控制中尤为重要,因此需要根据实际情况设计机械机构,并在此基础上建立数学模型。

b、两轮平衡车的自平衡控制是需要通过加速度计,陀螺仪等传感器实时检测车身姿态以及运动状态,因此稳定且精准的检测车身倾角是实现稳定控制的关键。

c、对已经建立的两轮平衡车系统模型进行分析,采用自动控制原理中高阶系统的动态性能分析法设计PID闭环控制器,以达到对系统的动态控制。

d、两轮自平衡系统本身属于不稳定系统,因此控制这种自平衡要用上动态控制。

在动态控制中PID控制应用十分广泛,有着极强的稳定性和动态特性,适用于两轮平衡车系统的控制要求。

系统中用到的PID控制器的参数调试整定,以使系统具有优秀的稳定性和动态特性。

e、用由10mh工字型电感组成的电磁感应线圈,感应周围电磁场以此确定道路的走向和两轮车相对于道路的位置。

1.4总设计方案

图1.1总设计方案

(1)在掌握两轮平衡车的结构特点和工作原理的基础上,利用牛顿经典力学分析法建立系统的受力模型。

(2)本设计采用KEA128RM单片机作为主控进行系统的运动控制,KEA128RM接收系统各个外设模块的数据,包括MMA7361CL加速度传感器获取的系统Z轴加速度值,ENC03MBLPR550型号陀螺仪传感器获取的系统X轴,Z轴加速度值,两个欧姆龙双相编码器返回的车轮转速以及电磁感应前瞻电磁感值。

用C语言编程处理平衡车系统的各个模块的原始数据,并利用这些数据算出车模实时姿态,车速和电磁线的走势,进而控制系统平衡和电磁循迹功能,整个系统的关键是单片机控制的电机扭矩和传感器数据的处理。

无论是两轮车的平衡还是两轮车的循迹功能都是通过控制驱动电机实现的,两个驱动电机在空间位置上同轴相连。

这两个电机需要完成两轮车的平衡和循迹前进两个任务,但实际控制中,这两个控制是同时发生的,主控将外设传来的数据处理成一个控制平衡的控制信号,一个控制速度的控制信号以及一个控制方向的控制信号,将这三个信号叠加在一起加载到驱动电机上,驱动电机只负责根据这个最终的控制信号输出相应的力矩使两轮车处于线性状态就可以同时实现上述的两个任务。

(3)需要注意的是,改变车身倾角可以实现两轮车的速度改变,车身倾角的方向决定了两轮车的运动方向,即前进或者后退;车身倾角的大小决定了两轮车的运动速度,往前倾斜的角度越大两轮车的前进速度会越快,但超过临界角度时,系统会因此超调而失控;此处的临界角度与系统整体的机械零点和重心有关。

(4)磁场模型及磁场检测,根据麦克斯韦电磁场理论,通电导线周围充满了交变的空间电磁场,在这个空间电磁场中放入一个电感线圈,此时的电磁线圈感应到电磁场而在线圈中生成交变的电流。

在通电导线位置和通电导线中电流固定的前提下,电感线圈中的感应电流就是和车身空间位置相关的函数,因此就可以用电感线圈感知两轮车的位置并作为两轮车转向的输入信号。

交流电流频率为20kHz时,通电导线周围产生甚低频(VLF)电磁波,波长大概为100km~10km,频率范围在3kHz~30kHz之间。

如下图所示:

根据毕奥-萨伐尔定律,当长度为L的直导线通以稳恒电流I后,会在直导线附近产生磁场,且距离导线距离d处m点的磁感应强度为:

(式1.1)

图1.2直线电流的磁场

第2章两轮平衡车受力分析及平衡条件

两轮平衡车的受力分析有利于分析整个系统的平衡条件,方便确定系统控制器的设计方案。

通过简单的受力分析即可知道两轮平衡车的平衡原理。

2.1入门两轮平衡车之倒立摆模型

2.1.1倒立摆经典模型原理

两轮平衡车系统衍生于倒立摆系统,要想理解透两轮平衡车的平衡原理,就必须先引入倒立摆模型。

图2.1倒立摆模型图2.2倒立摆倾倒模型

不同于单摆模型,倒立摆受到的“恢复力”即重力与位移方向相同,这就导致了倒立摆会由于重力而加速偏离垂直位置,直到倒下。

因此必须增加额外力使得回复力与位移方向相反,从而达到倒立摆能够稳定在垂直位置的目的——控制倒立摆底部车轮,使车轮往一个方向做加速运动,这样他就会受到一个额外的惯性力,方向与车轮加速度方向相反,大小呈正比;因此,倒立摆所受到的回复力为:

(式1.2)

式子中,因为实际系统中θ值会很小,所以可以对式子进行线性化,只要比例k1>g(重力加速度),则可以使这个回复力方向与位移方向相反,使倒立摆能够稳定到垂直平衡位置。

由此则可通过倒立摆模型类比出两轮平衡车模型。

2.2两轮平衡车模型

2.2.1两轮车平衡车平衡条件及受力分析

下图为简化的两轮平衡车的受力分析,在上图的整个系统中还包括了底盘,车轮,电池,底盘以及驱动电机;组装两轮平衡车的时候应该注意小车应该具备机械零位(小车在不受系统外力的情况下自身能够保持平衡的姿态即为机械零位),当小车的合力矩是垂直于地面的支点线时又超过了车轴,小车车身会绕着车轴或前倾或后仰的旋转。

图2.3两轮车受力情况

当两轮车在外界干扰下,偏离机械零位从而车身失去平衡开始倒下,此时若不加入电机的反馈则小车会完全倒下。

电机的反馈是根据主控计算出来的转矩,转矩除以旋转半径就是力,转矩产生的力的方向平行于与电机齿轮啮合的传动齿轮啮合处的切线;由于电机旋转方向的不同,转矩力的方向也不同。

总结上述,我们要做的就是在小车偏离机械零点时由电机产生一个与干扰外力相反的力使小车回复到机械零点,简单的说:

当直立的小车往前倾的时候,电机迅速产生一个后拉小车的力;

相反的,当小车往后仰时,电机则应该产生一个往前拉的力;于是,小车在失去平衡时可以因为这两种力而迅速回到机械零点。

应该注意的是,根据力的相互作用原理和摩擦力原理,我们可以知道,想要产生方向正确的回复力,电机的旋转的方向应该与小车倾斜旋转的方向相同,此时电机产生的转矩方向才是与干扰外力相反,即当小车顺时针倾倒时,车轮也应该顺时针旋转,反之亦然。

2.2.2两轮平衡车的调速及转向原理

由上一节我们知道,电机产生的回复力可以使小车一直平衡在机械零点的位置,然而两轮车只能在原地保持平衡状态。

两轮平衡车的前进和转向必须以平衡为优先,在保持平衡的前提下使平衡车前进,而平衡车的原理也是利用了直立环的控制来实现:

MCU控制直流电机转动产生力矩破坏当前的平衡状态使车身前半部分的弯矩大于后半部分的弯矩,直立环控制为了不让车身不向前旋转倾倒,将控制直流电机旋转产生对底盘的力矩,而产生的这个力矩会平衡掉小车向前的合力矩,在此过程中可以使小车向前运动。

为了小车能够优先保持直立平衡,两轮车的速度控制是通过改变直立环控制的目标值来实现的,因此小车运行的速度与小车的倾角相关——增加两轮车车身向前的倾斜角g_fCarAngle可以将两轮车向前行驶的速度提高。

加大两轮车向前倾斜的角度之后,通过直立环的控制,车身需要向前运动以保持小车平衡,速度因此增大;若要将两轮车向前运动的速度降低,则只需要减小两轮车向前的倾斜角度g_fCarAngle,由于直立环的控制,两轮车会向后运动保持两轮车平衡,速度因此减小。

图2.4系统简易控制模型

两个轮子转速不同可实现两轮车的差速转向,小车的转向偏移量由转向环控制。

小车的电磁感应前瞻感应电磁磁场变化,经由主控处理输出一个偏移量,叠加到电机的输出信号,电机根据这个信号输出相应的转矩。

第3章两轮车平衡车各部件准备

(a)

图3.1小车整体外围硬件电路设计

(b)(c)

图3.1小车整体外围硬件电路设计

3.1主控设计

本设计以KEA128RM单片机作为主控,KEA128RM基于ARMCortexM0内核,是一种高功效的MCU,工作频率有48MHz,,提供128KB的嵌入式内存,该芯片支持5V电源供电。

KEA128支持最多16个外部模拟输入,外部引脚输入和5个内部模拟输入;KEA128的模数转换器采用是线性逐次逼近算法,支持8位,10位或者12位分辨率的数模转换。

利用KEA128的ADC可以读取加速度,陀螺仪和电磁前瞻各电感线圈的值:

表3.1ADC读取通道

数模转换器通道

对应引脚

数据

数模转换器通道

对应引脚

数据

ADC0_SE12

PTF4

电感1

ADC0_SE6

PTB2

GROY_X

ADC0_SE13

PTF5

电感2

ADC0_SE5

PTB1

GROY_Y

ADC0_SE14

PTF6

电感3

ADC0_SE4

PTB0

ACCLE_X

ADC0_SE15

PTF7

电感4

ADC0_SE3

PTA7

ACCLE_Y

ADC0_SE7

PTF8

电感5

ADC0_SE2

PTA6

ACCLE_Z

KEA128芯片带有FlexTimer模块(FTM),该模块是一种带有两到八通道的定时器,并以一个16位计数器为时间基准,计时器工作模式包括向上计数和向上-向下计数,FTM定时器时钟可选,可用于生成控制电机的PWM信号;FTM定时器还具备输入捕获模式,可捕捉上升沿,下降沿或者两个边沿同时发生,可用于读取编码器的读值,作为两轮车的车速反馈值。

KEA128具有周期性中断定时器PIT;PIT模块是一组定时器,可生成中断和触发脉冲。

本设计使用两个PIT中断定时器,分别用于直立环的中断处理以及速度环中断处理,PIT0中断用于直立环,PIT1中断用于速度环,各为2ms中断一次处理。

除上述功能外,本设计也需要KEA128的GPIO和UART等功能;为了方便调试和优化两轮车的性能本设计用了四个GPIO口做按键输入,分别为PTH7,PTH5,PTH2和PTH4,配置为上拉电阻模式;串口用于输出调试信息。

voidGpio_init(void)

{

gpio_init(PTH7,GPI,0);//key_1choice

port_pull(PTH7,PULLUP_ENBLE);//按键上拉按下为低电平

gpio_init(PTH5,GPI,0);//key_2+

port_pull(PTH5,PULLUP_ENBLE);

gpio_init(PTH6,GPI,0);//key_3-

port_pull(PTH6,PULLUP_ENBLE);

gpio_init(PTE4,GPI,0);//key_4staut

port_pull(PTE4,PULLUP_ENBLE);

}

3.2角度测量系统

使用MMA7361CL加速度传感器模块,可实时获取车模在Z轴上的加速度值,用于计算融合同一时刻车模倾角。

同时采用ENC-3MB+LPR550型号陀螺仪传感器实时测量X轴、Z轴上的角速度值。

MMA7361CL是一种电压式的三轴加速度传感器,它可以测量由于重力引起的加速度;ENC-3MB+LPR550陀螺仪传感器可以输出一个与角速度成正比的模拟电压值,我们可以通过主控的12位模数转换器从外部读取加速度计和陀螺仪输出的模拟电压值。

用ADC0的通道5(ADC0_SE5)读取陀螺仪X轴上的值,并将其定义为车模X轴上的角速度G_X;通道6(ADC0_SE6)读取陀螺仪Z轴上的值,并将其定义为车模Z轴上的角速度的G_Z;通道(ADC0_SE2)读取加速度传感器Z轴上的模拟值,并将其定义为车模Z轴上的瞬时加速度值A_Z;

读取数模转换器的值可用库函数adc_once读取一次,或者ad_ave读取十次去平均值:

voidRd_Ad_Value(void)//ad采集值

{

G_X=adc_once(ADC0_SE5,ADC_10bit);

G_Z=ad_ave(ADC0_SE6,ADC_10bit,10);

A_Z=adc_once(ADC0_SE2,ADC_10bit);

}

3.3电感反馈系统

本设计选用10mH工字型电感作为电磁感应线圈识别道路的通电导线的走势,在电感两边并联6.8nF电容构成检波放大电路,经过放大电路可用ADC通道读取该电感实时检测的电感值。

本设计将每个电感值存放于一个两维数组ad_valu[5][5],每个电感采集5次:

for(j=0;j<5;j++)

{

ad_valu[0][j]=adc_once(ADC0_SE7,ADC_10bit);

ad_valu[1][j]=adc_once(ADC0_SE12,ADC_10bit);

ad_valu[2][j]=adc_once(ADC0_SE13,ADC_10bit);

ad_valu[3][j]=adc_once(ADC0_SE14,ADC_10bit);

ad_valu[4][j]=adc_once(ADC0_SE15,ADC_10bit);

}

经过排序后,舍去两边极端的值,取中间三项的值求平均,同时进行一阶互补滤波:

for(i=0;i<5;i++)

{

ad_sum[i]=ad_valu[i][1]+ad_valu[i][2]+ad_valu[i][3];

AD_valu[i]=ad_sum[i]/3;

AD_valu[i]=(int16)(0.3*AD_valu_old[i]+0.7*AD_valu[i]);//一阶互补滤波

AD_valu_old[i]=AD_valu[i];

}

最终经过滤波后得到的五个电感值存放在AD_valu_old的数组中,数组中的第0元素为最左边的竖直电感0的值,并

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1