STM32自平衡机器人设计(代码电路图)

Posted HQYJ_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32自平衡机器人设计(代码电路图)相关的知识,希望对你有一定的参考价值。

将机器人整体开源,同时总结一下机器人搭建过程中遇到的坑和未来的改进方向。在分享的文件里包含了结构设计、程序控制、电路设计以及其他模块相关资料供大家参考。

机器人原理分析
首先来看成品图:

如图所示,该机器人根据陀螺仪的位姿数据,通过三个全向轮驱动底部球体调整自己在球上的位置,保持动态平衡的同时实现全向移动。

保持动态平衡过程需要对机器人进行运动学分析,这里参考了平衡小车之家的运动学方程:
自平衡控制问题转化为三步:输入X、Y角度—控制器计算—输出A、B、C电机转速的控制模型。

控制器设计

首先考虑参考平衡车控制,球上自平衡机器人本质上依然是一个一阶倒立摆问题。

这里参考了飞思卡尔直立车的控制方法,采用串级PID控制器,外环PD角度环,内环速度PI环。相关文章:PID算法原理介绍。

由于我的驱动方案选择的是42步进电机,在速度闭环的时候有些问题。正常的直流电机+编码器的控制方案可以通过编码器将轮子的真实速度计算出来,从而和控制器的理想转速作差,实现速度控制。

而我这里的速度闭环是通过计算上一个时钟周期时给步进电机的控制量,通过运动学方程分解,得到机器人的虚拟速度,与理想转速作差控制。我认为这种速度闭环方式还是存在一定缺陷的,但是在网上查看论文的时候我发现有很多自平衡机器人都是用42步进电机来实现速度闭环的,不知道是什么方法。

这里还可以好好思考一下为什么角度环要用PD控制,速度环要PI控制,角度环的P部分和D部分对机器人控制有什么影响?在很多CSDN调试平衡车的博客中都有解释,这里就留给大家思考了。

硬件及结构设计

自平衡机器人的硬件清单有:

56mm全向轮 45元/个

42步进电机 25/个

42步进闭环模块 59.8元/个

LM2596S降压模块 20元

STM32F103C8T6-4飞控板 59.8元

GY-521六轴陀螺仪 25元

用到的模块大致如上所示,C8T6的价格随着最近芯片涨价直线上升,我白嫖了实验室的两块板子,现在买一块实在太贵,可以等芯片价格稳定一些再买。其余开关排针等常见元件不再赘述。

电路原理图如下所示:

机器人使用solidworks设计整体结构,底板可在某宝定制6050太空铝切割,蓝色件为正常3D打印件。

程序部分

在keil 5中开发STM32。

控制程序采用定时器0.5ms定时中断的方式进行计算,每触发两次中断计算对电机控制一次,这里还是推荐大家采用外部中断读取GY-521上的INT引脚的方式,控制计算周期。GY-521上的INT引脚每5ms触发一次跳变,采用外部中断的方式可以严格保证读取位姿数据与计算处理同步。




对于电机控制,由于采用的驱动方案是步进电机,调速的方式是改变驱动步进电机的脉冲频率。我这里选择了三个定时器,动态调节定时器的频率,具体方式是在初始化时设定好定时器的预分频系数psc的值,然后在程序里动态更改ARR寄存器的值,从而改变定时器的定时频率。

小车的运动学分解代码实现如下,参考了平衡小车之家的代码:

其余代码不全放出,具体可转到https://github.com/1812598631/graduate-design查看
总结与展望

球上自平衡机器人可以作为算法试验平台,输入输出固定,更换不同控制器,将数据导入MATLAB进行分析即可比较控制器性能。

个人认为结构有两个改进方向,一方面参考以下论文:余义. 单球驱动自平衡机器人位姿解算与控制系统研究[D].武汉科技大学,2019。论文中采用的四足式驱动结构更有利于机器人自平衡控制。

另一方面可以增加球体和机器人固定装置,利用机械结构将机器人与底部驱动球结合成一个整体防止机器人跳轮等问题。同时驱动球对于机器人平衡的影响较大,最好还是定制空心钢球,然后喷漆增大摩擦力,最有利于机器人自平衡控制。

控制部分的改进,首先是控制原理,本文是针对建立好的运动学方程进行分析,通过串级PID算法来实现自平衡运动。该机器人的控制问题本质上是一阶倒立摆问题,可以采用动力学建模的方式,通过动力学分析算出平衡需要的虚拟力矩,再对电机进行力矩控制。相关推荐:演示PID三个参数的控制作用。

其次是控制器,PID控制算法应用广泛但也有一定的缺点,可以考虑采用模糊PID,ADRC自抗扰控制器,强化学习等智能控制算法对机器人自平衡进行控制。
【文章福利】给大家分享一些项目实例资料,感兴趣的可以看下,加学习群领取项目源码、文档:769843038

基于STM32-WiFi智能小车机器人开发实战
http://www.makeru.com.cn/course/details/3008?s=10
智能小车设计
http://www.makeru.com.cn/live/3905_1418.html?s=10
智能小车 (一)
http://www.makeru.com.cn/live/4034_1973.html?s=10
智能小车 (二)
http://www.makeru.com.cn/live/4034_1973.html?s=10
(智能WiFi小车)
http://www.makeru.com.cn/video/2474.html?s=10
探索者号智能自平衡车
http://www.makeru.com.cn/course/details/2961?s=10
四轴飞行器开发
http://www.makeru.com.cn/course/details/2986?s=10
小米手环软硬件开发技术
http://www.makeru.com.cn/course/details/3019?s=10

以上是关于STM32自平衡机器人设计(代码电路图)的主要内容,如果未能解决你的问题,请参考以下文章

基于STM32开源项目:球上自平衡机器人

基于STM32闭环步进电机控制系统设计(仿真,程序,说明)

基于stm32的自平衡小车

基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)基于STM32闭环步进电机控制系统设计(仿真,程序,说明)-转发分享

基于STM32的SPWM逆变器设计

暑期答辩——基于STM32的自平衡小车