野火开源平衡车官网板块

https://www.firebbs.cn/forum.php?mod=forumdisplay&fid=129&page=1

参考资料

暂无

参考视频(这个群主讲的不错)

https://www.bilibili.com/video/BV1j7411z7uX

硬件平台

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

开发平台

KEIL5, STM32F103X主控,程序用的SWD下载(啥下载器都行,能下载进去就好,用串口下载也是可以的)

开发(一)  这节把控制程序修改成标准的串级PID流程

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

图来源于B站那个视频的UP主

源代码

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

修改后

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

再加个因为避免动手力度过大,导致车车扑街,引起电机不停的转,加入扑街前电机停转

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

在motor.c那边添加下面函数 

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

 

修改直立环为标志PID直立环

修改前

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

修改后(给用上med期望角度了)

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

 

同样的 修改速度环

修改前

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

同样的增加了机械中值

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

 

转向环不用修改

 

 

我昨天那边有个BUG,就是有一边电机不受控制的上电就转, 我怀疑有程序跑飞了(可能是OLED或者MPU6050的模拟IIC的锅),现在放狗来试试

移植狗来自野火的例程

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

在工程main.c那边添加

#include "bsp_wwdg.h"
STM32野火开源平衡小车(七)之修改更适合工程的PID控制

以及在组(group)那边把bsp_wwdg.c添加进来

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

在stm32f10x_it.c中

添加狗跑飞中断 并点灯 

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

灯这边我用PC1吧(低电平亮,高电平灭)

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

 

随便配置一下在串口那边 把灯给初始化了, 还是在野火那边放狗那边移植一个过来吧

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

在主函数那边 配置LED和放狗

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

死循环那边就喂狗就行

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

现在重新调参

先确定车车重心

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

把3个环注视掉再确定机械中值

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

全部填0,确定车车在什么时候有倒下的倾向

我这边大概是+5.5 前倒 和1后倒

确定机械中值为 6.5/2 = +3.25 

确定之后  确定直立环

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

方向我之前确定了 直接调就行 , 先来个-250

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

-330的时候出现低频抖动了 现在引入kd

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

 

    Vertical_Kd=-1.7; 出现了高频抖动  处理一下

    Vertical_Kp=-330, *0.6 = -198
    Vertical_Kd=-1.7; *0.6 = -1.02


STM32野火开源平衡小车(七)之修改更适合工程的PID控制

开始搞速度环

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

速度环的确立 要让小车保持平衡的同时, 速度趋于0,而且回到原位(开机的位置)的效果好

 

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

效果不是很好 还是会来回跑 我又设置了0.6 推一下直接扑街了

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

最后选了0.38 比较不错,回弹力度没有0.4的晃(比较大力推会来回荡着回原点))

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

调转向环

 

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

Turn_Kp=-0.8 效果还可以

 

刚才放在地上测试的时候 发现来回拨动 小车还是会倒, 因此加大速度环

 

同时加大扑街的角度 让他别那么块就扑街STM32野火开源平衡小车(七)之修改更适合工程的PID控制

于是总的调试结果

STM32野火开源平衡小车(七)之修改更适合工程的PID控制

 

 

最后效果还行, 但是车车还是不平衡, 应该是我这边放电池的位置不好,

还有 那个电机不受控制的BUG还是这个鸟样, 放狗都没用 看来不是程序跑飞的问题

问题应该出现在

    MPU_Init(); // MPU6050初始化
    mpu_dmp_init(); //MPU6050的DMP初始化(Digital Motion Processor数字运动处理器,硬件带的)
    MPU6050_EXTI_Init();// MPU6050外部中断以及引脚配置
这个MPU6050的函数这里

相关文章: