野火开源平衡车官网板块
https://www.firebbs.cn/forum.php?mod=forumdisplay&fid=129&page=1
参考资料
暂无
参考视频(这个群主讲的不错)
https://www.bilibili.com/video/BV1j7411z7uX
硬件平台
开发平台
KEIL5, STM32F103X主控,程序用的SWD下载(啥下载器都行,能下载进去就好,用串口下载也是可以的)
开发(一) 这节把控制程序修改成标准的串级PID流程
图来源于B站那个视频的UP主
源代码
修改后
再加个因为避免动手力度过大,导致车车扑街,引起电机不停的转,加入扑街前电机停转
在motor.c那边添加下面函数
修改直立环为标志PID直立环
修改前
修改后(给用上med期望角度了)
同样的 修改速度环
修改前
同样的增加了机械中值
转向环不用修改
我昨天那边有个BUG,就是有一边电机不受控制的上电就转, 我怀疑有程序跑飞了(可能是OLED或者MPU6050的模拟IIC的锅),现在放狗来试试
移植狗来自野火的例程
在工程main.c那边添加
#include "bsp_wwdg.h"
以及在组(group)那边把bsp_wwdg.c添加进来
在stm32f10x_it.c中
添加狗跑飞中断 并点灯
灯这边我用PC1吧(低电平亮,高电平灭)
随便配置一下在串口那边 把灯给初始化了, 还是在野火那边放狗那边移植一个过来吧
在主函数那边 配置LED和放狗
死循环那边就喂狗就行
现在重新调参
先确定车车重心
把3个环注视掉再确定机械中值
全部填0,确定车车在什么时候有倒下的倾向
我这边大概是+5.5 前倒 和1后倒
确定机械中值为 6.5/2 = +3.25
确定之后 确定直立环
方向我之前确定了 直接调就行 , 先来个-250
-330的时候出现低频抖动了 现在引入kd
Vertical_Kd=-1.7; 出现了高频抖动 处理一下
Vertical_Kp=-330, *0.6 = -198
Vertical_Kd=-1.7; *0.6 = -1.02
开始搞速度环
速度环的确立 要让小车保持平衡的同时, 速度趋于0,而且回到原位(开机的位置)的效果好
效果不是很好 还是会来回跑 我又设置了0.6 推一下直接扑街了
最后选了0.38 比较不错,回弹力度没有0.4的晃(比较大力推会来回荡着回原点))
调转向环
Turn_Kp=-0.8 效果还可以
刚才放在地上测试的时候 发现来回拨动 小车还是会倒, 因此加大速度环
同时加大扑街的角度 让他别那么块就扑街
于是总的调试结果
最后效果还行, 但是车车还是不平衡, 应该是我这边放电池的位置不好,
还有 那个电机不受控制的BUG还是这个鸟样, 放狗都没用 看来不是程序跑飞的问题
问题应该出现在
MPU_Init(); // MPU6050初始化
mpu_dmp_init(); //MPU6050的DMP初始化(Digital Motion Processor数字运动处理器,硬件带的)
MPU6050_EXTI_Init();// MPU6050外部中断以及引脚配置
这个MPU6050的函数这里