基于卡尔曼滤波和PID调节的自平衡小车关于MPU6050以及视频更新


资源下载:

               源代码:  http://download.csdn.net/download/feng3121/10262828

               功能图与程序框图:  http://download.csdn.net/download/feng3121/10262796



更新 MPU6050 细节:
GY521MPU6050 I2C 元件,需要用 I2C 时序才能读写,关于 I2C 时序的话内容较多,楼主这里就不多介绍了,如果有需求的话楼主可以贴出来。这边提一下关键要点,

配置SCL SDA 引脚,需要单片机有此复用功的引脚,注意开漏输出
初始化时主要配置MPU6050 里面的这几个寄存器:  电源管理         陀螺仪采样率   低通滤波频率   陀螺仪自检及测量范围   加速计自检、测量范围及高通滤波频率   关于这几个寄存器地址及作用可参考MPU6050 手册(网上大把,大多为英文版)
在对MPU6050 / 写时,需要加入EV 事件检测,如:主机发送启始信号后,会产生事件“EV5 ”,并会对 SR1  寄存器的“SB ”位置 1 ,表示起始信号已经发送
更新编程心得:楼主从开始拿到F103 到现在,可以说到网上查了不少资料,发现大多关于F103 的程序前面都有
Stm32_Clock_Init(9); delay_init(72);
而且一些论坛或是其他的博客很多对这两个解释不是很具体,在这里用最简单的话来解释一二
Stm32_Clock_Init(9);// 系统时钟设置为外部晶振,9 9 倍频得到72MHz
        // 寄存器版的存在此函数,作用倍频时钟,而库函数版就没有(如f4 SystemInit
delay_init(72);// 系统SysTick 初始化,72 为当前为72MHz 环境
        // 在后面调用delay_ms(u32Nms);delay_us(u32 Nus); 就可以得到很准确的延时



这是小车一代的视频链接:

http://v.youku.com/v_show/id_XMzIxODEzMDY3Ng==.html?spm=a2hzp.8244740.0.0

一代用的是L298N电机驱动,效果不是很好



你可能感兴趣的:(MPU6050,平衡小车)