1、飞思卡尔直立车经验总结1. 车模运动任务分解:车模平衡、车模速度、车模方向。其中,车模的平衡是通过电机的正反向运动实现的;车模的速度是通过控制电机的转速(实质是通过输出不同占空比的 PWM 波来实现的);车模的方向控制则是通过电机的转动差速来实现的。其中,车模的直立控制是关键,车模的速度控制在小车上表现为调节自身车模倾角达到以给定速度运行的目的。归根结底,车模的三种控制最终都要回归到通过调节 PWM 波分别控制两个电机的转速来实现。2. 陀螺仪和加速度计的安装问题:两传感器最好安装在车模中心或偏下位置,稍微偏上或偏一侧也可以,偏一侧的话会使方向陀螺仪在左右转向时输出有差异,造成不对称的输出,对
2、于车模的方向调节会有一定的影响。另外需要注意:陀螺仪输出的模拟电压值很小,一般需要放大 10 倍左右,而加速度计的输出相对陀螺仪而言较大,并且也符合 AD 转换的模拟电压的范围,无需再放大。由于购买的陀螺仪和加速度计模块都是厂家集成处理好的,外接的放大电路已经连接好了,故只需买现成的模块使用就行了,无需再自个搭建陀螺仪的外接放大电路了。3. 陀螺仪和加速度计的功能:陀螺仪是用来测量车模的角加速度的,其输出是与车模前倾或后仰的角速度成正比的模拟电压值。加速度计是用来测量车模倾角的,其输出是与车模倾斜角度成正比的模拟电压值。注意,两个传感器的输出的模拟电压值都是正值,如果使用 12 位的 AD 转
3、换精度,那么它们输出的电压值都在04095 之间,且都是整数。4. 车模的三种控制之间的关系:由于车模的直立控制是关键,因此,在控制其他两个量时,应尽量减少对车模直立控制的干扰。三种控制最终都是通过控制车模的两个电机来实现,故它们之间存在着一定的联系。在分析一种控制时,可以先假设另外两种控制都以达到平衡。从控制的角度看,车模作为一个控制对象,其控制输入量是两个电机的转动速度。5. 传感器极性问题:传感器安装在车模的前面或后面(在同一面正着按或反着按)时车模前倾或后仰对应的模拟电压值可能会相反,这就是传感器的极性问题。比如在车模的转向控制中使用的车模转向陀螺仪的 Z 轴朝上与朝下,对应的车模转向
4、角速度的极性恰相反,从而影响车模方向控制微分控制量与比例控制量之间的加减关系。测量车模倾角的陀螺仪应该水平安装(必须注意),而测量车模转向的陀螺仪则应该竖直安装。车模在转弯时既有平动又有转动,如果陀螺仪安装的不水平,就会在 Z 轴方向存在一个分量,该分量可能正也可能负,从而使车模控制仿佛感觉是在上下坡,引起车模的加减速运动。6. 电机控制的注意事项:对电机的控制要有一个过渡阶段,不能一下子使其电压从正变为负,否则输出电流变化太大对电机不利。另外也要注意电机的死区电压(在 0 的正负附近区域内)。电机控制中的 PWM 波的占空比值总是正的,最小为 0.7. 软件部分说明:由于牵涉到车模的直立控制
5、,算法的实现对时间要求较为苛刻,可用定时中断实现相应的控制,但应注意每一步的用时都不应超过定时周期的最小划分时间(如果是 1ms 定时,就不能超过 1ms)。为了达到平滑控制的目的,可以将速度控制划分在 20*5 的控制周期内来实现。算法的优化有时候也很重要,注意编程时的灵活性。8. 传感器采集信息的处理:模拟量的采集的处理方法是多次采集求均值作为最终有效值,有时还要舍去前面刚上电时的几个坏值。对采集回来的模拟电压值要做单位的统一,故需要经过一定的系数的乘除的转换才行。9. 直立控制中涉及到的几个待定参数:车模的角度补偿时间常数Tz(Tg)、陀螺仪比例系数 Rgyro、加速度计比例系数 Rz、
6、直立陀螺仪的零偏值 GyroZeroOffset_stand、方向陀螺仪的零偏值 GyroZeroOffset_direction、加速度计的零偏值AccZeroOffset、加速度计的最大值 ACC_MAX、最小值ACC_MIN、角度 PID 参数的 P 值和 D 值、速度 PID 参数的 P值和 I 值、方向 PID 参数的 P 值和 D 值以及电机的死区电压(也可以不管)等。建议以上各参数尽量都使用动态测量值,比如零偏值可以采用在当前环境下实时采集的值作为有效零偏值,这比预先在一种环境下采集好,到另一种环境下使用效果好,因为可以有效地抑制陀螺仪的温漂所带来的影响。10. 角度补偿时间常数
7、 Tz 的整定:该参数决定了抑制陀螺仪积分漂移的能力,也决定了车模速度控制中角度跟踪的速度,同时决定了抑制重力加速度中干扰信号的能力。该参数的调整会同时影响到角度和速度的控制,其中对角度的影响较为显著。一般取 Tz在 14 之间的某个数值(可以是小数),最好取得稍微大一点,开始时可以取 34 秒左右。如果陀螺仪零点漂移很小,可以适当增加该补偿时间常数;如果陀螺仪零点漂移大,那么可以逐步减小这个补偿时间常数。在减小时间补偿常数时,会发现车模会出现来回摆动的现象。这个现象和车模角度控制时,比例值过大时产生的车模摆动现象一致。故此时可以适当增加角度控制参数中微分参数 D 来抑制车模摆动的现象。其他参
8、数的整定见官方方案及视频。11. 程序中变量的管理:全局变量的定义形式为:g_fGyroscopeAngleSpeed(陀螺仪角速度变量),打头的 g表示 global,全局的意思;下划线后面的 f 表示 float,单精度浮点型数据,后面的即为要定义的变量,使用英文定义,简单、易读。其中 f 可以换成c:char,n:int ,lf:double,ln :long int。12. 关于滤波的研究:传感器采集回来的模拟电压值总会掺杂很多干扰信号,为了滤除这些干扰必须进行合理的滤波处理。滤波可以采用软件滤波和硬件滤波。两种滤波方法各有优劣,但我们一般采用软件滤波。软件滤波常用的有互补滤波和卡尔曼
9、滤波。互补滤波的效果不及卡尔曼滤波,但对于车模的直立控制已经足够,为取得更好地滤波效果可以对卡尔曼滤波进行研究。看懂理论不难,关键是如何用程序去实现,这才是关键。13. 角度和速度 PID 参数正定的说明:角度调节:先调 P 后调D,P 值过大,车模震荡,此时增加 D 值,D 过大,车模高频抖动,此时再增加 P 值。 P 参数相当于倒立摆的回复力,这个参数必须大于重力加速度 g 的等效数值时车模才能够保持直立。微分参数 D 相当于阻尼力,它会使车模尽快恢复稳定,保持静止。速度调节:先调 I 后调 P,I 参数可以加快调速速度,过大则会造成车模的震荡,车模来回摆动,此时增加 P 值,P 过大车模
10、前后震荡。P 参数的作用是抑制速度调节过程中的过冲,该参数过大会反过来削弱角度调节的 P 参数的作用。车模的各个参数分别整定完毕后,在车模进入赛道运行时有可能还要调节个别参数以使车模运行的效果更佳。14. 硬件部分介绍:硬件部分主要分为三个模块:电源模块、驱动模块、控制模块(主板部分)。设计电路时一定要考虑共地问题,设计的电路板必须要做到所有的元器件的参考地是同一个地。最好为每一个模块设计一个开关,并配上指示灯。电路结构尽量精巧紧凑,充分利用空间。尽量减少杜邦线的使用,避免车模连线的复杂性。 感悟:做一辆精致漂亮的小车是一门艺术,所以一开始就要为它的结构布局做好考虑,美的东西自己也 会喜欢,做工粗糙、瑕疵就会影响小车的整体美感,这无形中也影响到了自己对待所做小车的态度。车模的制作 过程喜悦与失落交替,但每个问题的解决都在证明着你的进步,你在收获。做自己喜欢的,喜欢自己做的。 奋斗吧,骚年!