超详细!!双轮平衡小车原理分析,文末附STM32源码!

智芯Player 2021-03-28 00:00


双轮平衡小车
看到一篇很好的文章,图文并茂的讲述了,两轮平衡小车的原理,并且给出了详细的代码,这里拿来分享给大家。


 平衡原理

平衡小车是通过两个电机运动下实现小车不倒下直立行走的多功能智能小车,在外力的推拉下,小车依然保持不倒下。这么一说可能还没有很直观的了解 究竟什么是平衡小车,不过这个平衡小车实现的原理其实是在人们生活中的经验 得来的。如果通过简单的练习,一般人可以通过自己的手指把木棒直立而不倒的 放在指尖上,所以练习的时候,需要学会的两个条件:一是放在指尖上可以移动, 二是通过眼睛观察木棒的倾斜角度和倾斜趋势(角速度)。通过手指的移动去抵 消木棒倾斜的角度和趋势,使得木棒能直立不倒。这样的条件是不可以缺一的, 实际上加入这两个条件,控制过程中就是负反馈机制。

而世界上没有任何一个人可以蒙眼不看,就可以直立木棒的,因为没有眼睛的负反馈,就不知道笔的倾斜角度和趋势。

平衡小车也是这样的过程,通过负反馈实现平衡。与上面保持木棒直立比较则相对简单,因为小车有两个轮子着地,车体只会在轮子滚动的方向上发生 倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。


所以根据上述的原理,通过测量小车的倾角和倾角速度控制小车车轮的加速度来消除小车的倾角。因此,小车倾角以及倾角速度的测量成为控制小车直立 的关键。我们的亚博智能平衡小车使用了测量倾角和倾角速度的集成传感器陀螺仪-MPU6050。


角度(PD 算法)

控制平衡小车,使得它作加速运动。这样站在小车上(非惯性系,以车轮 作为坐标原点)分析倒立摆受力,它就会受到额外的惯性力,该力与车轮的加 速度方向相反,大小成正比。这样倒立摆(如图 2)所受到的回复力为:

                    公式 1:F = mg sin θ-ma cos θ≈mg θ-mk1θ

式1 中,由于θ很小,所以进行了线 性化。假设负反馈控制是车轮加速度 a 与偏角θ成正比,比例为 k1。如果比例k1>g,(g 是重力加速度)那么回复力的方向便于位移方向相反了。

而为了让倒立摆能够尽快回到垂直位置稳定下来,还需要增加阻尼力。增 加的阻尼力与偏角的速度成正比,方向相反,因此公式1可改为:F = mg θ-mk1 θ -mk2 θ` 按照上述倒立摆的模型,可得出控制小车车轮加速度的算法:

                     公式 2:a =k1θ+k2θ` 

式2中θ为小车角度,θ`为角速度。k1 k2都是比例系数 根据上述内容,建立速度的比例微分负反馈控制,根据基本控制理论讨论小车通过闭环控制保持稳定的条件(这里需要对控制理论有基本了解)。假设外力干扰引起车模产生角加速度x(t)。沿着垂直于车模地盘方向进行受力分析,可 以得到车模倾角与车轮运动加速度以及外力干扰加速度a(t)x(t)之间的运动方程。

在角度反馈控制中,与角度成比例的控制量是称为比例控制;与 角速度成比例的控制量称为微分控制(角速度是角度的微分)。因此 上面系数 k1,k2 分别称为比例和微分控制参数。其中微分参数相当于 阻尼力,可以有效抑制车模震荡。通过微分抑制控制震荡的思想在后 面的速度和方向控制中也同样适用。总结控制车模直立稳定的条件如下:

(1)能够精确测量车模倾角θ的大小和角速度θ'的大小;

(2)可以控制车轮的加速度。

上述控制实际结果是小车与地面不是严格垂直,而是存在一个对 应的倾角。在重力的作用下,小车会朝着一个方面加速前进。为了保 持小车的静止或者匀速运动需要消除这个安装误差。在实际小车制作 过程中需要进行机械调整和软件参数设置。另外需要通过软件中的速 度控制来实现速度的稳定性。在小车角度控制中出现的小车倾角偏 差,使得小车在倾斜的方向上产生加速。这个结果可以用来进行小车 的速度控制。下面将利用这个原理来调节小车的速度。

测速(模型和算法)

假设小车在上面直立控制调节下已经能够保持平衡了,但是由于安装误差,传感器实际测量的角度与车模角度有偏差,因此小车实际 不是保持与地面垂直,而是存在一个倾角。在重力的作用下,小车就 会朝倾斜的方向加速前进。控制速度只要通过控制小车的倾角就可以 实现了。具体实现需要解决三个问题:

(1)如何测量小车速度?

(2)如何通过小车直立控制实现小车倾角的改变?

(3)如何根据速度误差控制小车倾角?

第一个问题可以通过安装在电机输出轴上的光码盘来测量得到小车的车轮速度。如图所示。利用控制单片机的计数器测量在固定 时间间隔内速度脉冲信号的个数可以反映电机的转速。

第二个问题可以通过角度控制给定值来解决。给定小车直立控制 的设定值,在角度控制调节下,小车将会自动维持在一个角度。通过 前面小车直立控制算法可以知道,小车倾角最终是跟踪重力加速度Z 轴的角度。因此小车的倾角给定值与重力加速度Z轴角度相减,便可 以最终决定小车的倾角。

第三个问题分析起来相对比较困难,远比直观进行速度负反馈分 析复杂。首先对一个简单例子进行分析。假设小车开始保持静止,然 后增加给定速度,为此需要小车往前倾斜以便获得加速度。在小车直 立控制下,为了能够有一个往前的倾斜角度,车轮需要往后运动,这 样会引起车轮速度下降(因为车轮往负方向运动了)。由于负反馈, 使得小车往前倾角需要更大。如此循环,小车很快就会倾倒。原本利 用负反馈进行速度控制反而成了“正”反馈。

为了保证系统稳定,往往小车倾角控制时间常数Tz很大。这样便会引起系统产生两个共轭极点,而且极点的实部变得很小,使得系统的速度控制会产生的震荡现象。这个现象在实际参数整定的时候可以观察到。那么如何消除速度控制过程中的震荡呢?要解决控制震荡问题,在前面的小车角度控制中已经有了经验,那就是在控制反馈中增加速度微分控制。但由于车轮的速度反馈信号 中往往存在着噪声,对速度进行微分运算会进一步加大噪声的影响。为此需要对上面控制方法进行改进。原系统中倾角调整过程时间常数 往往很大,因此可以将该系统近似为一个积分环节。将原来的微分环 节和这个积分环节合并,形成一个比例控制环节。这样可以保持系统 控制传递函数不变,同时避免了微分计算。但在控制反馈中,只是使用反馈信号的比例和微分,没有误差积分,所以最终这个速度控制是有残差的控制。但是直接引入误差积 分控制环节,会增加系统的复杂度,为此就不再增加积分控制,而是 通过与角度控制相结合后在进行改进。

要求小车在原地停止,速度为0。但是由于采用的是比例控制, 如果此时陀螺仪有漂移,或者加速度传感器安装有误差,最终小车倾 角不会最终调整到0,小车会朝着倾斜的方向恒速运行下去。注意此 时车模不会像没有速度控制那样加速运行了,但是速度不会最终为0。为了消除这个误差,可以将小车倾角设定量直接积分补偿在角度控制 输出中,这样就会彻底消除速度控制误差。第二点,由于加入了速度 控制,它可以补偿陀螺仪和重力加速度的漂移和误差。所以此时重力 加速度传感器实际上没有必要了。所以此时重力 加速度传感器实际上没有必要了。此时小车在控制启动的时候,需要保持小车的垂直状态。此时陀螺仪的积分角度也初始化为0。当然如果电路中已经包括了重力加速度传感器,也可以保留这部分,从而提高小车的稳定性。在后面的 最终给定的控制方案中,保留了这部分的控制回路。


转向控制(算法)

通过左右电机速度差驱动小车转向消除小车距离道路中心的偏差。通过调整小车的方向,再加上车前行运动,可以逐步消除小车距 离中心线的距离差别。这个过程是一个积分过程,因此小车差动控制 一般只需要进行简单的比例控制就可以完成小车方向控制。但是由于 小车本身安装有电池等比较重的物体,具有很大的转动惯量,在调整 过程中会出现小车转向过冲现象,如果不加以抑制,会使得小车过度 转向而倒下。根据前面角度和速度控制的经验,为了消除小车方向控 制中的过冲,需要增加微分控制。


PID(算法)




控制相关的软件函数包括:

AngleCalculate:小车倾角计算函数。根据采集到的陀螺仪和重力加速度传感器的数值 计算小车角度和角速度。如果这部分的算法由外部一个运放实现,那么采集得到的直接是小车的角度和角速度,这部分算法可以省略。该函数是每 5 毫秒调用一次。

AngelControl:小车直立控制函数。根据小车角度和角速度计算小车电机的控制量。直立控制是 5 毫秒调用一次。

SpeedControl:小车速度控制函数。根据小车采集到的电机转速和速度设定值,计算电 机的控制量。该函数是 100 毫秒调用一次。

SpeedControlOutput:速度输出平滑函数。由于速度是每 100 毫秒进行一次计算。为 了使得速度控制更加平滑,该函数将速度输出变化量平均分配到 20步 5 毫秒的控制周期中。

DirectionControlOutput:方向控制函数输出平滑函数。将方向控制的输出变化量平 均分配到 2 步 5 毫秒的控制周期中。

MotorOutput:电机输出量汇集函数。根据前面的直立控制、速度控制和方向控制所得 到的控制量进行叠加,分别得到左右两个电极的输出电压控制量。对叠加后的输出量进行饱和处理。函数调用周期 5 毫秒。在此请大家注意速度控制量叠加的极性是负。

MotorSpeedOut:电机 PWM 输出计算函数。根据左右两个电极的输出控制量的正负 极性,叠加上一个小的死区数值,克服车模机械静态摩擦力。函数调用周期 5 毫秒。

SetMotorVoltage:PWM 输出函数:根据两个电机的输出量,计算出 PWM 控制寄存 器的数值,设置四个 PWM 控制寄存器的数值。函数调用周期 1 毫秒。以上 9 个函数都是在 1 毫秒中断服务中进行被相互调用的。下图显示了这些函数之间的调用与参数传递关系。在函数附近也表明了调用的周期。

Chaoshengbo:加入超声波壁障模块:根据前方障碍物的距离检测,一旦检测到后, 通过直接 PWM 值输出( g_fchaoshengbooutput),在障碍物反方上运动,无需算法实现。每30 毫秒调用一次。


整机方案


为了实现小车直立行走,需要采集如下信号:

(1)小车倾角速度陀螺仪信号,获得小车的倾角和角速度。

(2) 重力加速度信号(z轴信号),补偿陀螺仪的漂移。该信号可以省略,有速度控制替 代。

(3) 小车电机转速脉冲信号,获得小车运动速度,进行速度控制。

(4) 小车转动速度陀螺仪信号,获得小车转向角速度,进行方向控制。

在小车控制中的直立、速度和方向控制三个环节中,都使用了比例微分(PD)控制,这三种控制算法的输出量最终通过叠加通过电机 运动来完成:

(1)小车直立控制:使用小车倾角的PD(比例、微分)控制;

g_fAngleControlOut = g_fCarAngle * g_fCarAngle_P + gyro[0] * g_fCarAngle_D ;

(2)小车速度控制:使用PD(比例、微分)控制;

g_fSpeedControlOutNew = (CAR_SPEED_SET - g_fCarSpeed) * g_fCarSpeed_P +(CAR_POSITION_SET - g_fCarPosition) * g_fCarSpeed_I;

(3)小车方向控制:使用PD(比例、微分)控制。

speednow=-speedtarget*3.4 -gyro[2]*0.0015 ;

可通过单片机软件实现上述控制算法。在上面控制过程中,车模的角度控制和方向控制都是直接将输出电压 叠加后控制电机的转速实现的。而车模的速度控制本质上是通过调节 车模的倾角实现的,由于车模是一个非最小相位系统,因此该反馈控 制如果比例和速度过大,很容易形成正反馈,使得车模失控,造成系 统的不稳定性。因此速度的调节过程需要非常缓慢和平滑。


程序流程图



平衡车资料
关注公众号,后台回复以上内容免费获取




AD封装系列

铝电解系列封装(带3D)

USB Type-A座子系列(带3D)

TF(micro SD)卡座封装大全(带3D)

2.4G PCB天线(量产用)

RJ45座子(带3D)

DC3-2.54板端座子(带3D)

USB3.0板端座子(带3D)

LED发光二极管(带3D)

贴片插件电阻排阻(带3D)

插件压敏电阻(带3D)

继电器(带3D)

按键开关,拨码开关,拨动开关(带3D)

PH2.0座子插件贴片(带3D)

915MHz天线,GPS天线,GSM天线,433MHz天线,13.56Hz天线,LTE天线

FPC座子0.5mm间距1.0mm间距1.25间距(带3D)

贴片及插件二极管-整流桥(带3D)

插件电解电容,贴片电容,钽电容,独石电容(带3D)

VH3.96mm插件座子(带3D)

XH2.54mm座子插件贴片(带3D)

贴片插件晶振(带3D)

micro USB座子,Type C座子,USB-A公头(带3D)

三极管,MOS管,部分LDO(TO,SOT系列)(带3D)

贴片电感(带3D)

插件电感,变压器(带3D)

芯片IC封装-QFP,TQFP,LQFP(带3D)

DC电源接口、音频接口(带3D)

数码管,点阵,屏(带3D)

VGA视频座子,RJ11座子(带3D)

SD卡卡座(带3D)

不用开发板学习STM32系列

一般流水灯实验(文末获取代码及工程文件

7段数码管0~9定时显示(文末获取代码及工程文件

必看必读系列

【收藏】32个EMC标准电路!!

【收藏】你应该知道的拓扑结构-开关电源,都在这里!!

【收藏】开关电源你必须知道的专业名字(中英对照)!!

【收藏】优选4层板到12层板叠层经典设计方!!

【过瘾】电机原理动态图,停不下来!!

【过瘾】各种烙铁头正确使用姿势,你get到了吗?

【较真】细说LDO旁路电容如何选!!

【较真】0欧姆电阻的妙用!!

【必看】10分钟学会看MOSFET手册!!

电子元器件基础普及系列

电阻知识点总结!

电容分类知识点总结!

二极管知识点总结!

电感分类知识点总结!

变压器知识大盘点

必须知道的天线知识及天线图谱

美国线规AWG与公制对照表,拿走不谢~

经典图文,带你一文搞懂MOS管!

超级电容!为什么那么超级!

!!

智芯Player 电子创客DIY达人聚集地,发布有趣的DIY作品,实用的教程,板卡试用心得,发布实用的PC手机软件,最新行业动态,兼职外快信息,你想要的这里都有,打造一个可以玩,可以吐槽的工程师小圈子.
评论
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 1075浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 252浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 860浏览
  • 随着AI大模型训练和推理对计算能力的需求呈指数级增长,AI数据中心的网络带宽需求大幅提升,推动了高速光模块的发展。光模块作为数据中心和高性能计算系统中的关键器件,主要用于提供高速和大容量的数据传输服务。 光模块提升带宽的方法有两种:1)提高每个通道的比特速率,如直接提升波特率,或者保持波特率不变,使用复杂的调制解调方式(如PAM4);2)增加通道数,如提升并行光纤数量,或采用波分复用(CWDM、LWDM)。按照传输模式,光模块可分为并行和波分两种类型,其中并行方案主要应用在中短距传输场景中成本
    hycsystembella 2025-01-25 17:24 174浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 199浏览
  • 不让汽车专美于前,近年来哈雷(Harley-Davidson)和本田(Honda)等大型重型机车大厂的旗下车款皆已陆续配备车载娱乐系统与语音助理,在路上也有越来越多的普通机车车主开始使用安全帽麦克风,在骑车时透过蓝牙连线执行语音搜寻地点导航、音乐播放控制或免持拨打接听电话等各种「机车语音助理」功能。客户背景与面临的挑战以本次分享的客户个案为例,该客户是一个跨国车用语音软件供货商,过往是与车厂合作开发前装车机为主,且有着多年的「汽车语音助理」产品经验。由于客户这次是首度跨足「机车语音助理」产品,因
    百佳泰测试实验室 2025-01-24 17:00 113浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 190浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 337浏览
  • 项目展示①正面、反面②左侧、右侧项目源码:https://mbb.eet-china.com/download/316656.html前言为什么想到要做这个小玩意呢,作为一个死宅,懒得看手机,但又想要抬头就能看见时间和天气信息,于是就做个这么个小东西,放在示波器上面正好(示波器外壳有个小槽,刚好可以卡住)功能主要有,获取国家气象局的天气信息,还有实时的温湿度,主控采用ESP32,所以后续还可以开放更多奇奇怪怪的功能,比如油价信息、股票信息之类的,反正能联网可操作性就大多了原理图、PCB、面板设计
    小恶魔owo 2025-01-25 22:09 249浏览
  • 前篇文章中『服务器散热效能不佳有解吗?』提到气冷式的服务器其散热效能对于系统稳定度是非常重要的关键因素,同时也说明了百佳泰对于散热效能能提供的协助与服务。本篇将为您延伸说明我们如何进行评估,同时也会举例在测试过程中发现的问题及改善后的数据。AI服务器的散热架构三大重点:GPU导风罩:尝试不同的GPU导风罩架构,用以集中服务器进风量,加强对GPU的降温效果。GPU托盘:改动GPU托盘架构,验证出风面积大小对GPU散热的影想程度。CPU导风罩:尝试封闭CPU导风罩间隙,集中风流,验证CPU降温效果。
    百佳泰测试实验室 2025-01-24 16:58 81浏览
  • 书接上回:【2022年终总结】阳光总在风雨后,启航2023-面包板社区  https://mbb.eet-china.com/blog/468701-438244.html 总结2019,松山湖有个欧洲小镇-面包板社区  https://mbb.eet-china.com/blog/468701-413397.html        2025年该是总结下2024年的喜怒哀乐,有个好的开始,才能更好的面对2025年即将
    liweicheng 2025-01-24 23:18 180浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 198浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦