毕设平衡车问题集锦

PID调节主要有直立环、速度环、转向环,调试时要直立环和速度环一起调

直立用的pd,速度用的pi,转向用的pd

滤波算法有卡尔曼滤波、二次滤波、一次滤波,定义:

都没有用,因为占用MPU运行资源,用的是MPU6050自带的DMP进行姿态解算,芯片内部解算出一组数据,直接读取即可

什么时候控制:5ms定时控制,定时总是不准,可能因为控制程序太费时,或者被别的中断打断,用的是MPU6050给的中断信号进行控制,设置MPU6050的数据刷新频率为10ms,然后设置中断引脚每5ms改变一次电平,下降沿采集数据,保证数据一直是最新的,控制一直是及时准确的

    CarAngle.Kp = 390;//800以内 390
    CarAngle.Kd = 1.0;//10以内 1
    CarSpeed.Kp = 100;//100
    CarSpeed.Ki = 0.5;//0.5 

先角度p(低频大幅抖动),再角度d(高频抖动);然后两个参数乘以0.6,然后速度p,速度d,一般这两个参数差200倍

I2C通信引脚要接上拉电阻,但是本设计没接,用的STM32的引脚的开漏输出

I2C地址的通信地址和MPU6050的某个引脚是否接地有关,默认0X68

速度要限幅,否则当变量超调的时候容易出现速度降不下来或者升不上去的情况

要先给主芯片供电,再给驱动芯片供电,否则供电主芯片初始化的时候容易出现轮子乱转的情况

MPU6050配置:量程2000,加速度传感器量程2g  关闭FIFO  关闭外接磁力传感器

MPU6050计算角度的方法有两种:利用a,z轴加速度算出来一个角度,和加速度大小有关;或者用角速度乘以时间得出角度

初始角度和MPU6050的安装角度即机械角度,这个要实际检测,尽量放平,放在小车正中心,稳定牢固

转向控制要根据旋转前的速度调整旋转的起始速度,增加小车的适应性,转向控制要结合Z轴陀螺仪进行PD控制

MPU6050倾角超出正负25度,即小车偏角较大时不进行控制,已经控制不住了

速度pi控制有一个低通滤波器,把高频干扰信号滤除,并且将积分限幅,控制小车前后就是在这个速度积分上进行差值的加减,每次电机关闭后要进行积分清零

串口接收不到数据就用DMA方式

外部中断优先级要放在第一位

电机高频大幅抖动时要关闭电源,防止烧坏电机

蜂鸣器不响就把上面的贴纸拿下去,转向灯不亮就把限流电阻改小

控制指示:每次有一次指令更新,蜂鸣器会响一下,前进时前面两个led灯点亮,后退后面两个led灯点亮,左转左面两个灯点亮,右转右面两个灯点亮,点一下蜂鸣器,点击一下停止按键,小车停止所有指示灯点亮当前指示灯状态全部反转,蜂鸣器开始长响,再次点击一次,蜂鸣器停止发出发出声音,当前所有指示灯状态再次反转

小车停止时也不是完全一动不动,而是稍微进行前后小幅度的移动,这是速度pd造成的,是正常现象,否则无法长时间保持直立

编码器测速用的是M法,即计算一定时间内编码器给的脉冲数,转过的角度;不是计算一个脉冲用的时间  正交解码

 

kp ki太小现象:平衡车还是直立一两秒向一个方向加速

kp ki太大现象:平衡车高频抖动这时候要关电机避免烧坏电机

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(DAY,TIME)