暗网下载 毕业设计(论文)-两轮自平衡小车的设计(参考版)

文章缩略图

展望,鉴于时间以及个人能力方面的缘由,本设计所完成的两轮自平衡小车,仅仅是一种简单的模型。本设计最终达成了两轮自平衡小车的平衡控制以及运动控制。本设计的控制策略运用的是PID控制算法。在系统软件设计环节,对各类滤波器的优缺点展开了比较,结合本系统的硬件构架,设计了以卡尔曼滤波器为核心的数据融合算法。凭借相应硬件与软件的设计,达成了两轮自平衡小车的动态平衡与运动控制。最终,小车的动态性能获得了较大程度的提升。小车在未知的道路状况下,能够自行进行路径检测,然后沿着所测路径向前行进,情况如图58所示 。借助人为方式设置一些复杂度较高的道路情况,去观察小车在自动识别路径之后,达成前进、后退以及转弯等动作时,是否能够做到灵活且自如,以此对小车的动态性能展开改进 。所以,针对小车的动态性能,还需要开展调试工作 。最后,把Kp的数值加大一些,同时对Kd的数值进行细微调整,以便小车能够迅速且稳定地维持平衡状态 。首先,对Kp的大小予以调整,如果能让车站起来,小车在直立的进程当中会出现振荡现象 。加入D控制方式能够减小动态偏差,进而缩短控制过程所耗费的时间 。第一轮自平衡小车中的作用呈现于与图57对应的情形里,图56所呈现的输出波形具备较为理想的特质,其中表明1为加速度计输出,2为滤波器输出,并且在两轮自平衡车的平衡控制进程当中,采用的是PD控制器,图54呈现着卡尔曼滤波器输出波形,同样表明1为加速度计输出,2为滤波器输出,将滤波器输出波形进行放大之后,即为图55所示的情况,此情形下能够发现,当倾角状态有所改变时,滤波器存在一定的滞后现象,这种滞后现象会对小车的平衡控制产生影响,进而导致小车无法保持稳定,还能够发现的是,未经过滤波处理之前的波形,其噪声程度非常大,在某些地方尖峰噪声超出真实值的幅度甚多 。这时,让小车的后轮维持不动,对小车姿态的倾角进行人为地改变,借助上位机软件来显示波形,就如同图54那样。滤波器里需要进行整定的参数主要存在三个:陀螺仪权值Q_gyro、加速度计权值Q_angle以及卡尔曼增益R_angle。首先,对滤波器的相关参数展开设定。姿态倾角数据分滤波前与滤波后,由小车经串口通讯发送给PC机,借助上位机波形显示软件,把离散数据点描绘成动态波形,且在同一坐标系里显示,经对比能直观看出滤波器滤波效果,有助于调试。故而,卡尔曼滤波器的调试是姿态检测系统里的重点。附近有变化,要是长时间记录加速度计测量角度并求均值,就会发觉加速度计输出信号长时间较稳定,不过其受震动影响大,测量值在真实值上下波动 。能够发觉,陀螺仪积分所得的角度,会相伴着实际的推移,而被发觉出现变化,要是时间足够漫长,那么陀螺仪积分得出的角度,就会很不精准,这同样表明了,陀螺仪的输出数据,仅仅在短时间范围内才具备有效性。图53所展示的内容,是借助串口助手呈现出来的测量倾角,实际的倾角为90176。(此为与水平面的夹角),经由串口,把陀螺仪积分获得的角度以及加速度计换算得来的角度,在上位机上予以显示。、90176。首先,针对陀螺仪展开调试,查看它能不能正常运作,同时,对加速度计也进行调试,瞧瞧其能否正常工作;接着,针对陀螺仪方法电路的偏置电压作出调整,让整个电路的温漂处于最小状态,以此保障陀螺仪输出信号的准确性;假设上述的这些测试都能够正常通过,那就意味着系统硬件电路的工作是正常的;然后是速度采集模块测试,借助软件去采集编码器输入的脉冲并计数,再通过串口在上位机里进行显示;还要确定两个电极输出电压的极性;要是能够正常下载程序,那就观察LED是不是正常闪动,。特别要留意电源极性有无正确,在核验硬件电路连接不存在差错之后,接上电源运用BDM进行在线调试,瞧瞧能不能连接到MC9S12XS128最小系统。这里面涵盖集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C交叉编译器、汇编器、链接器以及调试器。IDE选用CodeWarriorIDE 。以下是调试所需用到的仪器仪表以及工具,分别是:一台计算机,一个在线调试器也就是 BDM,一个万用表,一根串口线,MC9S12XS128 的调试接口是 BDM 接口,本系统采用了模块化的设计思路,所以能够运用模块化的调试方式,并且给出了小车速度闭环控制的 PID 程序,本章对两轮自平衡车的软件设计予以了阐述,break,break,break,dir:left 左转。旨在降低系统复杂性,本系统所采用的转弯策略是这样的,当小车有左转需求时,便设定左轮转速为右轮转速的二分之一,同样的结果,当小车有右转需求时,就设定小车的右轮转速为左轮的二分之一。两轮自平衡车的转弯功能达成相对而言比较简单。当期望车速与实际车速之间的偏差不大的时候,把偏差设为零,依靠此种方式来维持系统的稳定性。如果(角度速度为 15),那么(角度速度等于 15。速度误差为(10)然后有情况是)(速度误差等于 0。要是(速度误差为 10 并且具有与情况)速度差值等于速度误差减去速度误差的上一次值。选择具备带特殊区域的比例积分微分算法是为了防止调控过于频繁进而致使系统产生振荡。)。系统平衡控制的周期是10ms,要在尽可能少干扰平衡控制的条件下,提高速度控制的力度,所以系统速度控制周期被设定成50ms,其输入是车速的偏差,输出则是倾角,借助平衡控制实现控制车速的目标。为能快速且稳定地控制小车速度,本系统增添了编码器作为速度反馈环节,进而形成了速度的闭环控制。此时小车在维持平衡的状况下达成了前进动作。图45是自平衡PD控制软件流程图,在小车维持平衡的基础之上添加了前进、后退、左右转等动作。电机死区补偿关系由图44予以显示,于两轮平衡车系统里,车身在重力方向的倾角作为输入量e (t)被输入PID控制器,输出u (t)担任电机控制量,而本系统运用的是直流电机,采纳的调速方法是调压调速,所以输出量u (t)就是PWM驱动占空比,这是因为小车轮胎跟地面存在静摩擦力,在控制占空比非常小的时候,纵然电机电枢得电,然而鉴于静摩擦力的存在,转子却并未发生相对转动 。最优估计值angle以及预测值偏差q_bias是通过卡尔曼增益计算得出的,这时能得到最优角度值以及角速度值。估计值angle_m与预测值angle之间的误差angle_err需要进行计算。这里面A是雅克比矩阵。按照Pdot = A*P + P*A39来进行相关计算。利用陀螺仪积分求出的angle等同于系统的估计值,进而得出系统的观测方程。加速度计检测的角度angle_m相当于系统中的测量值,从而得到系统状态方程。angle_dot等于gyro_mq_bias,angle加上K_0乘以angle_err,P等于K_1乘以t_0,P等于K_0乘以t_0,t_0等于PCt_0,K_0等于PCt_0除以E,PCt_1等于C_0乘以P,angle_err等于angle_m减去angle,P加上Pdot乘以dt,P加上Pdot乘以dt,Pdot等于P。“Pdot等于Q_angle 、 P 、 P”,静态浮点型变量有“q_bias”、“angle_err”、“PCt_0”、“PCt_1”、“E”、“K_0”、“K_1”、“t_0”、“t_1” ,静态浮点型变量“Pdot ”被赋值为“{0,0,0,0}” ,静态常量浮点型变量有“Q_angle”、“Q_gyro”、“R_angle” 、“dt” ,卡尔曼滤波器的工作流程如图43 。对于(式46),由卡尔曼滤波原理能够知道,卡尔曼滤波器是那样一种具备高效率的递归滤波器(也就是自回归滤波器)。依据式44去求出加速度计的输出角度,这里面,1672(其单位是mv)是角速度计于系统平衡点时的静态输出电压,而系数800是加速度计的灵敏度( sensitivity)(其单位是mv/reg)。 //把转换之后的数据送进卡尔曼滤波器} 在程序里,借助调用模数转换子函数ReadAD获取到陀螺仪以及加速度计的输出电压,它们分别是gyro和Acc_z。//凭借反三角函数求取的小车倾角度数,其单位是弧度,加速度等于加速度同乘这个值。//取得加速度计输出的电压数值,该单位是毫伏。而陀螺仪的输出值是除以这个值之后的结果。static AD_Cal的功能如下(void){陀螺仪的输出值等于从0通道读取的AD值。再透过凭借反三角函数算出和重力方向关联的倾角度数。陀螺仪输出的电压,关乎检测的角速度,其转换公式如下:(式44),当中:G指的是陀螺仪检测的角速度,Vout是陀螺仪输出的电压,Voffest是陀螺仪处于静止状态时的输出电压,Vsen为陀螺仪的灵敏度,K是放大电路的放大系数。图42是PWM模块初始化的流程,本系统所采用的惯性传感器属于模拟量输出式的,借助单片机自带的ATD模块来进行模数转换,进而检测出传感器输出的电压。使能、频率、输出 polarity(词性是不是应该是polarity,极性)以及对齐方式,在合成之后的 PWM 里,分别是由 PWMPWMPWMPWM7 的相应位寄存器去决定的。具体的计算公式像下面这样展示:(式 42)(式 43)PWM 输出信号的占空比,还有周期,分别是通过寄存器 PWMDTYx 和 PWMPERx 来设置的。在其中,PWM0、PWMPWMPWM5 是作为一组的,使用的是时钟 ClockA 或者 ClockSA;与此同时,另一组是 PWMPWMPWMPWM7,它使用的是时钟 ClockB 或者 ClockSB。对于使能PIT,PWM模块需要初始化,MC9S12XS128内部集成了8路8位相互独立的PWM通道,每一个通道都具备专门的计数器,并且PWM的输出极性以及对齐方式皆能够进行设置。Timer等于(PITMTLD0添加1)乘以(PITLD0添加1)再除以BusCLK。而PITLD0的值为640001。使用MTLD0,PITINTE的值设定为0x01。禁止PIT,PITCE的值为0x01。让中断被开启,TSCR1等于0x80。 把各个通道设置成输入捕捉,TCTL4等于0x19。 存在8路输入捕捉(IC)以及输出比较(OC)通道,能够借助设置TIOS寄存器挑选输入捕捉或者输出比较功能。 ECT当中断捕捉模块进行初始化设置时:MC9S12XS128的ECT内部具备16位的计数器,该计数器的时钟频率能够经由设置寄存器TSCR2从总线时钟分频而获得。 M法测速要求对脉冲开展过计数,伴随利用定时器去产生定时中断。于三种测速法子里头,M法适宜用于高速应用情形,T法适宜用于低速应用情形,然而M/T法适配于高速场合,编码器的反馈脉冲的数量跟小车所挪动的位置成正比例关系。//等候发送完毕SCI0DRL等于str。 //许可收发}SCI模块波特率的设定经由以下计算公式得以算出:(式41)SCI模块发送一个字节的程序如下:外部 void SCI_WriteByte(字节型str){当并非( SCI0SR1与运算)时 { }。//进行波特率9600的设置,SCI0CR1等于0。//将转换结果返回}(SCI)开展初始化设置,SCI模块着重对串口波特率、工作模式以及中断允许标志位加以设置,籍此达成与上位机的通信,助力系统调试。}AD等于((ad乘以3300)再除以12)。情况为3时:ad等于ATD0DR3。情况为2时:ad等于ATD0DR2。情况为1时:ad等于ATD0DR1。等待着模数转换达成完成状态,通过switch(ch)来挑选选择转换通道,在其中取出转换所得结果,当处于case 0的情况时,ad等于ATD0DR0,存在一个float类型的AD暗网下载,进行连续转换且起始通道为0,将ATD0DIEN设置为0x00,设置4个序列并且是右对齐,把ATD0CTL4设定为0xff,具备12位精度且采样前进行放电操作,将ATD0CTL2设置为0x40,对模数转换模块(ATD)进行设置,使其为12位精度,N通道连续采样,采样时间为4MHz,采用非中断触发方式。因为系统精度没办法比检测精度更高,所以对于模数转换单元存在着较高的要求, engage PLL to system,when pll is steady ,then use it,BUS CLOCK=64M _asm(nop), pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz,REFDV=0x80 | 0x01。把PLL与系统分离,将PLLCTL_PLLON设置为1。频率过高有可能致使单片机工作出现不稳定之时,鉴于本系统需求开展卡尔曼滤波工作,该递归过程非常耗费系统资源,所以,于本系统内把单片机工作频率规定为64MHz。本系统控制核心运用MC9S12XS128,此单片机标准总线工作频率是40MHz。系统软件流程如下图41所示。介绍两轮自平衡小车软件设计的这一章,软件设计在两轮自平衡小车设计里是关键。整个系统硬件电路平台完成了搭建。MAX232外部用5V供电,其引脚输出电平范围是0到5V,实现电平转换的电路如图314所示。芯片里有两组转换端口,能同时做两路电平转换。采用MAX232做电平转换。本设计把RS232串口通信用作调试方法。同时要实时监测数据融合波形以及控制算法,还得调整相关参数。DIR 是编码器 B 相输出部分,它连接到单片机 I/O 口,借助 A、B 相位差去开展软件鉴相工作,凭借这个来判断电机转动方向,信号输出端要接入一个上拉电阻,这样就能把信号提供给单片机来采集数据,此时的图 312 是编码器 A、B 相输出波形,本系统所使用的 OMRON 旋转编码器相关参数如下表 31 所示:编码器参数表中的一项参数是,项目为参数,电源电压是 DC 5V 到 12V,其中纹波的峰峰值要小于 5%,另外消耗电流在 30mA 以下。

关键词:

客户评论

我要评论