首页 > 其他分享 >平衡车相关理论基础

平衡车相关理论基础

时间:2024-11-20 21:46:09浏览次数:1  
标签:控制 倾斜角 小车 理论 反馈 微分 Kp 相关 平衡

第一步思考:想让平衡小车站立起来首先要知道的是平衡的原理是什么?
实验立棍:平衡的原理就比如在你手掌上立辊,棍子要倒的时候,你的手掌应该要向倾斜的方向移动。你立的久了你就会发现倒的速度是因为重力的作用,倾斜角度越大,你的手应该要移动的越快,而棍子在中心的时候会出现小幅度的移动,需要你的手微调就可以了。
好了,我们在做上面的小实验之后是不是发现了我们的手的移动可以让小木棍保持平衡,我们知道这个原理之后引入一个概念叫“反馈控制”,我们看到了木棍要倒(反馈),然后经过大脑反应去对手操作(控制)。而在控制领域的算法适用于平衡小车项目的是PID 控制(比例-积分-微分控制),知道了有PID这个控制算法前,是不是应该要知道“反馈”,后面的问题我会提及反馈作为一个问题
但是现在我们应该先知道反馈到来时,我们对手的控制是怎么样的是吧。而我们对手的控制会发现,在倾斜角度很大时向反方向移动就很块,快要立起来平衡的时候手就移动的慢一些,如图

第一次反馈的时候反馈倾斜角很大,如何控制手向倾斜方向的速度也很大。
第二次反馈的时候反馈倾斜角比上次的小,所以控制手向倾斜方向的速度就比上一次的小。
所以在连续的手移动的动作当中,我们是不是应该把他模拟成以倾斜角为Y轴(误差),对于手的速度变化这段时间内手移动的距离为X轴。

在这里我们是不是对一段时间内误差的计算e(t),还有对误差的累积∫e(t)dt。而我们把累积的过程称为积分Integral(PID中的I),这里积分的目的是为了什么呢,是为了小车直立平衡(也就是倾斜角度为零)。
在倾斜调度比较大的时候是不是由于PID的P=Kp×e(t)比例控制来调整的反应的剧烈程度,然后我们把累积的误差加上,那么我们先看结论公式:
Out = P + I 输出是比例积分控制之和
下面公式为加入增益常数K和单位时间t
Out(t)=Kp×e(t)+Ki×∫e(t)dt
解释:Out(t),单位时间t内Out(t)该输出的值
Kp×e(t),Kp比例控制反应的剧烈程度
Kp×∫e(t)dt累积该时间内误差
解释一下Kp,Kp的作用,这是比例常数,也就是他们在out=P+I+D当中的对out的增益效果,
增大Kp增加系统的响应速度,过大的话由于小车的自身重量的惯性,就很可能导致过冲或震荡。
增大Ki可以消除稳态误差,如果它的增益太大,就会影响到整体的输出了,就会可能会引起系统不稳定,太小又不精确。
所以对小车来说仅仅以PI来调节控制而言,在倾斜角为零的直立状态来说时,没有对倾斜角的速度进行控制,PI调节会让小车过冲和震荡,极容易导致小车立不起来,即使调好P和I的增益参数让他不倒,那在直立点也会经过一段时间震荡,而且震荡的幅度比较大。为了解决这个问题所以才在PI调节中加入Derivative微分控制。
完整的PID公式就是PID三个参数之和,所以加入微分控制的目的就是控制小车不过冲和震荡剧烈的情况,通过控制速度使其直立,所以PD控制也称为直立环,而上面的PI控制称为速度环。
那解释了那么多我们要来了解一下微分是什么,他为什么能控制速度使其小车直立的。
那我们先去除对I积分的调节可以吧,这样可以更好的分析PD调节的原理。
微分作用:微分部分是根据“误差变化的速度”来调整输出。它预测系统的未来行为,并试图减少系统的震荡或过度响应。微分作用对于提高系统的稳定性和响应速度非常重要。当然他也有增益的常数Kd。
D = Kd × (d/dt) × e(t)
其中,(d/dt) 是误差的变化率,Kd是微分增益常数。
微分的优点:微分控制能够减少系统的过冲和振荡,帮助控制系统更平稳地接近目标。
微分控制是怎么实现的呢,根据公式看是不太容易的,通俗的理解就是在过冲前获取的速度,而这个速度是需要传感器(霍尔编码返回的计数值)反馈计算的,速度来经过一段时间D的减速或者叫阻尼后,速度变化率趋近于零,这样就可以平稳在某一倾斜角,为什么是某一倾斜角呢,因为没加入I积分的误差控制,而倾斜角的数据是由MPU6050反馈的。
微分的缺点:是对信号震荡很敏感,因为速度的计算是上一个周期时间开始到周期时间结束走过的路程除以周期时间,所以在数据信号采集时震荡导致的误差在时间周期越短时对小车当前速度计算就会出现很大的偏差。
怎么解决:解决采集的数据信号震荡导致的误差就要进行滤波,常见的是采用卡尔曼滤波算法,或者用MPU6050自带的DMP(运动数据处理器),要对这些数据处理是因为PID算法调节是建立在理想的线性模型。跑题:而卡尔曼滤波和DMP这两个数学模型都可以适用于平衡小车上面,在6050模块中已经提供了DMP的代码,实际项目中也运用了,但是还是要提及一下卡尔曼滤波,他是线性最小方差估计法,是线性动态系统模型,自回归滤波器,处理对数字信号过程噪声和测量噪声。有兴趣可以去了解。
好!!!你现在已经会使用PID调节控制算法了,小车已经可以立起来了!

第二步思考:我已经熟悉了小车平衡的理论,那么我该怎么实践他呢?
那么我们应该想实现直立的功能,以小车直立为目的来做项目。

  1. 选择元器件(直流电机),小车的电机是需要减速的直流电机,要减速电机的原因是扭矩大,功率高。试想一下用普通的马达,直接连接到轮子上,一点点的电流就可以让小车姿态不稳定,所以需要减速电机。推荐JBG37-520。
    (买带编码器的),六针脚。!!!买带两层亚克力板和底座一起的!!!

  2. MPU6050,这是最关键的核心的元器件,小车能不能立起来就是通过这个元器件测量反馈的数据通过DMP转换给芯片计算。

  3. STM32F103c8t6,主芯片,没有浮点运算单元,计算能力差,对于需要浮点运算单元的平衡小车来说性能不够用。当作为项目开发的合适度来说该芯片是目前最好的选择没有之一。

  4. TB6612驱动模块,由于电机功率较大,所以对电源要求较高,电机需要12v的电压,其他模块用3.3v。而且JBG37电机带编码器(带编码器的)上的A和B(3和4针脚)的针脚发送编码信息(关于速度)给芯片,而引脚(1和6针脚)两端的两个引脚是用来对电机输出电流的,而控制该电流的是TB6612上连接芯片控制的PWMx和xIN1、xIN2。TB6612上有锂电池组输入进来12V的VM接口,还有内部逻辑供电5V的VCC来对其他模块供电。

  5. 降压模块:对继电器5V的电压降压为3.3V进行供电

  6. 锂电池组:12V的,优点是电压稳定,比用5号电池合适,5号用不一会电池的电压电流衰减严重,即不能充电,要以12V供电需要把块5号电池串联,并且体积重量太大。密集的锂电池组可以解决这些问题。

  7. PCB板子:直接展示

  8. 其他拓展模块:SSD1306(4针脚0.96寸OLED)、超声波HC-SR04、蓝牙4.0(HC-05)
    ||然后主要复杂的接线如下
    根据平衡车PCB:
    驱动模块tb6612模块与两个电机JB37-520接线
    电机1: M2 - AO1
    M1 - AO2
    A - PA1//与单片机连接
    B - PA0
    G - VCC
    电机2: M2 - BO2
    M1 - BO1
    A - PB7
    B - PB6
    G - VCC
    驱动模块tb6612模块与F103c8t6
    PWMA - PA11
    PWMB - PA8
    AIN2 - PB12
    AIN1 - PB13
    BIN2 - PB14
    BIN1 - PB15

标签:控制,倾斜角,小车,理论,反馈,微分,Kp,相关,平衡
From: https://www.cnblogs.com/ikunkunkun/p/18559410

相关文章

  • 信步漫谈之SpringBoot配置相关注释
    目录目标@ConfigurationProperties@EnableConfigurationProperties@Configuration示例代码参考资料(感谢)目标@EnableConfigurationProperties、@ConfigurationProperties、@Configuration区别和用法@ConfigurationProperties将我们项目中的yaml文件或者properties文件......
  • Lora里面说大模型参数是over-parametrized(过参数的),什么是over-parametrized?(另附相关概
    诸神缄默不语-个人CSDN博文目录本文会介绍over-parametrized(过参数化)、doubledescent、bias-variancetrade-off概念。主要是我在看Lora论文的过程中看到了“over-parametrized”这个概念,所以写一篇关于这个概念的博文。文章目录1.over-parametrized2.doubledesce......
  • 软件测试笔记|Python自动化测试|常见的列表相关函数有哪些?
    VX公众Hao:阳哥整理软件测试笔记正文:以下是一些常见的Python列表相关函数:增删操作相关函数•list.append():在列表末尾添加一个元素。例如,my_list=[1,2];my_list.append(3),此时my_list变为[1,2,3]。•list.extend():用于将一个可迭代对象(如列表、元组等)中的元素逐个......
  • 软件测试笔记|Python自动化测试|常见的字典相关函数有哪些?
    VX公众Hao:阳哥整理软件测试笔记正文:以下是一些常见的Python字典相关函数:增删改操作相关函数•dict.update():用于将一个字典的键值对更新到另一个字典中。如果键已存在,就更新对应的值;如果键不存在,就添加新的键值对。•dict.pop():通过指定键来删除字典中的键值对,并返回被......
  • 软件测试之理论知识_1.3
    软件测试知识:1、为什么要测试?(1)代码是人写的,难免会出错(2)软件本身就会存在问题,非正常运行也会问题(3)环境会影响软件出现问题(4)软件测试活动是保证软件测试质量之一2、测试的定义什么?(重点)制造业定义:以检验产品是否满足需求为目标软件行业定义:a、验证软件的正确性b、发现软件......
  • C语言分支和循环相关游戏
    文章目录猜数字游戏1随机数生成1.1rand1.2srand1.3time1.4设置随机数的范围2.猜数字游戏实现猜数字游戏游戏要求:电脑自动生成1~100的随机数玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束1随机数生成如何产生随机数,一......
  • java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,
    @目录一、记录文件相关操作方法二、代码1.读取路径返回List<File>2.读取路径返回List<String>3.删除文件夹4.删除文件一、记录文件相关操作方法二、代码1.读取路径返回List<File>importorg.slf4j.LoggerFactory;importorg.slf4j.Logger;importjava.io.File;importjav......
  • 不得不说物联网相关app只有设计简洁了,用户用着才舒服。
    一、简洁设计的必要性简洁的物联网APP界面设计意味着去除多余元素,专注于核心功能和信息。这种设计理念不仅使APP看起来更加美观,而且提高了用户的使用效率。在快节奏的生活中,用户更倾向于那些能够快速理解并有效使用的应用程序。二、用户体验的提升简洁的界面设计直接影响用......
  • 汽车触控屏的高颜值和高体验,背后隐藏了哪些HMI设计理论
    一、汽车触控屏在现代汽车中的重要地位是什么?在当今的汽车领域,触控屏已经成为了不可或缺的一部分。它不仅为汽车内饰增添了科技感和现代感,还极大地提升了用户的操作便利性和驾驶体验。首先,汽车触控屏作为信息交互的核心界面,承担着车辆各种功能的控制和信息展示的重任。从导......
  • 几个最大公约数相关数论常见定理
    今天才知道这几个定理,网上没搜到证明方式,别人不会证那我就证明一下。定理1:\[\gcd(a^m-1,a^n-1)=a^{\gcd(m,n)}-1\]证明:根据\(\gcd\)具有\(\gcd(a,b)=\gcd(a-b,b)\)的性质,不妨设\(m\gen\),作差有:\[\begin{aligned}\gcd(a^m-1,a^n-1)&=\gcd(a......