K60平台下的两轮平衡车

一、总体设计

此系统用到的功能模块都是集成好的,这里只设计了一个底板来连接各个硬件模块(硬件模块可以自己做也可以网上买);资料见附录。
图1:总体思维导图
在这里插入图片描述

二、电路设计篇

框图中调试下载接口是采用SWD方式;OLED(128*64)模块,驱动IC为SSD1306,使用IIC通信方式;蓝牙模块(HC-06)使用K60的串口0;电源部分(MP1584模块)将锂电池的12V电压转化5V和3.3V为整个系统供电;编码器传感器有电机自带,只需要设计接口就可;MPU6050模块也是IIC通信方式。
图2:硬件设计框图
在这里插入图片描述
底板用于连接各个模块,下面是底板原理图和PCB图,底板的PCB采用2层Layout。硬件设计使用Aitium Designer,可以同时进行原理图和PCB设计。
图3:底板原理图
在这里插入图片描述
图:4:底板PCB
在这里插入图片描述

三、软件设计

开发环境使用Keil5 MDK
1、软件主要分为以下几个模块:
(1)MPU6050的DMP算法及驱动库移植,用于姿态解算求出欧拉角。
(2)编码器模块程序设计,对电机的转速测量。
(3)串级PID控制器设计,控制的核心算法。
(4)蓝牙模块程序设计,用来接收上位机发来的指令。
(5)OLED模块程序设计,实时显示小车的状态信息。
2、PID控制器参数:
(1)比例环节P:成比例地反映控制系统的偏差信号,只要有偏差,控制器就会产生控制量。
(2)积分环节I:主要用于消除稳态误差使小车速度尽可能接近零,起到一种延迟控制的作用,提高系统的无差度(车轮速度反映)。
(3)微分环节D:反映偏差信号的变化趋势(角速度反映),并能在偏差变得太大之前,在系统中引入一个提前控制的信号,从而抑制超调量。
3、在中断程序中,需要调用PID控制器来计算输出值,三个控制器直立环、速度环、转向环分别负责小车的直立速度和转向,是本项目的核心所在。
设计PID控制器需要进行离散化处理,对于传感器检测到的数据只需要读取某个时刻的数据,在中断控制函数中每间隔10ms(Δt)进行一次数据读取和运算,用累加代替积分,用离散的差分方程代替连续的微分方程。

四、实物测试

由于PID调参以及一些其他因素,车身能够直立,但是系统比较不稳定,通过手机蓝牙串口助手可以发送指令控制前进后退转弯。
注意事项:1、有时候刚开机时车轮会一直加速(还得改进)。
2、开机后静待几秒当OLED能够显示角度是就可以放开手。
图5:实物测试
在这里插入图片描述

五、改进和展望

1、通过优化算法能够达到一定的载重,而且在前进转向时保持车身稳定。
2、对于两轮自平衡车的起摆算法,可以参考倒立摆系统的研究方法建立一阶倒立摆动力学方程,建立微分方程,之后由拉式变换求出倒立摆系统传递函数。通过分析原系统的根轨迹显然是个不稳定系统,通过要求的参数求出PID控制传递函数并且用simulink进行设计。

六、附录

由于实物并不完美,内容仅供参考。
演示视频在以下链接中。
链接:https://pan.baidu.com/s/1_8ey5boJv6GEpkjvt1l1Tw
提取码:8888

图6:编码器示意图
在这里插入图片描述
图7:实物图1
在这里插入图片描述
图8:实物图2在这里插入图片描述
图9:实物图3
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值