资讯详情

莱罗三角形平衡系统

莱罗三角平衡系统

  • 前言
  • 一、mpu6050使用dmp得到姿态角
  • 二、使用pid算法控制
  • 三、pid调参
    • 1.首先,确定角度环P,先去掉速度环
    • 2.然后确定角度环D
    • 最后,加入速度环


前言

莱罗三角形,又称鲁洛克斯三角形,是这样得到的:先画正三角形ABC,然后是正三角形ABC三个顶点是圆心,边长是半径画弧得到的图形,如下图所示 在这里插入图片描述 我用cad用激光切割机切割亚克力板,用铜柱连接两个中间留有电机位的莱罗三角形,电机安装动量轮,mpu6050水平放置在两根铜柱之间,获得初始机械结构 在这里插入图片描述 他的平衡原理就是角动量守恒,当整体有向左边倒的时候,动量轮逆时针加速,根据角动量守恒,电机应该连着整个系统顺时针加速从而抵消向左边倒的趋势,向右边倒时原理相同,然后先看看我做出来的效果,我把代码上传csdn,想做这个项目的朋友可以下载参考 在这里插入图片描述

一、mpu6050使用dmp得到姿态角

dmp是mpu6050年,一个可扩展的数字运动处理器可以以四元的形式输出欧拉角,因此我们不需要整合和过滤陀螺仪和加速度传感器收集的原始数据。在这一步中,我使用了正点原子的代码。让我们谈谈如何移植我们自己的板。

首先,在工程中添加这些文件在这里插入图片描述

修改inv_mpu.c文件,把i2c读写函数改为自己的,delay_ms函数也改为自己写的(注意不要使用)hal由于使用系统定时器优先级过低,库给出的延迟函数会导致程序卡死) 在这里插入图片描述

修改inv_mpu.h数据输出频率与系统控制周期对应,但不超过200hz这是硬件限制。 在这里插入图片描述

二、使用pid算法控制

直接上代码在这里插入图片描述 角度控制应将动态误差控制到很小(否则,如果倾斜角度过大,回调所需的功率超过电机极限系统,则会崩溃)PD控制效果很大,后面的调参主要是这两个参数,I可有可无 在这里插入图片描述 为什么需要速度控制?回到前面分析的原理,我们系统的平衡利用电机加速来提供角动量。如果电机速度达到极限,系统不会崩溃吗?因此,这是一种静态误差控制(要求电机速度为0)PI可以控制控制器。

在这里插入图片描述 最后我把两个pid输出差后的值作为pwm波占空比用于驱动电机。在这里,我们不需要纠结于数学原理。我们只需要了解测量角度和目标角度之间的差异作为角度控制输入。电机编码器10ms读取的值(相当于电机转速)作为速度控制输入,使我们得到两个输出,一个与系统倾斜角度有关,一个与电机速度有关,它们共同决定了电机转速,我们只需要把它放在后面pid参数调好就能让角度和电机速度对pwm适当的权重使系统稳定。

三、pid调参

调整前测量系统平衡mpu输出6050的角度,将此作为角度目标值写入代码

1.首先,确定角度环P,先去掉速度环

:向左倒时动量轮应逆时针加速,向右倒时动量轮应顺时针加速,否则极性反转 :逐步增加平衡位置的系统P值直到有明显的回复现象,可以来回震荡几次

2.然后确定角度环D

:与P相同 :在原本P逐渐增加大小D,直到震荡幅度可以收敛

最后,加入速度环

:如果动量轮转速越来越快,就会反转,PI极性一样 :逐步加大P、I两个值几乎相同。在获得良好的控制效果后,尝试分别微调两个值

标签: 电机动平衡传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司