电子-自平衡小车自平衡小车的原理硬件设计和源代码.zip,单片机/嵌入式STM32-F0/F1/F2
2022-02-10 18:45:10 60KB 单片机/嵌入式STM32-F0/F1/F2专区
1
有一段时间没有更新博客了,最近一段时间都在忙毕业和实习,闲暇的时候也在学习怎么写公众号推文,实在惭愧。毕业设计做的是平衡小车,这几天某宝买的器件还不知所踪,新的PCB电路板又不想画,所以在想要不把做过的过程回顾一次,以后好写论文。该项目会分“模块选型篇”、“原理篇”、“硬件篇”和“软件调试篇”(立好flag,希望自己能好好完成)。由于博主水平有限,都是自己网上找资料找代码学习的,如果有地方描述不清晰,请各位大佬指正或者与我一同讨论。想获取源码吗?去我的简介找“于此生”吧,我把一切都放在那里了。 这里先列出平衡小车的模块组成。平衡小车的模块组成比较简单,主要包含以下模块: 主控模块 电机驱动模块
2022-02-10 18:37:31 489KB m32 st stm32
1
分析平衡车特性,建立状态空间模型,并设计反馈控制实现平衡车功能并优化其特性,包括系统控制目标、建模与参数选取、控制方法分析与验证(仿真或实验)、项目所需器件选取、预算分析等。
2022-02-07 09:04:59 260KB
基于STM32f1的双轮自平衡小车BalanceCar(完整代码,自测试完全通过,包含完整工程Keil5) 代码简介说明文档查看:https://michaelbeechan.blog.csdn.net/article/details/112759369
2022-01-30 02:07:54 8.27MB STM32 平衡小车 MPU6050 卡尔曼滤波器
详解了两轮自平衡小车的控制,代码经实际上车调试,绝对保证性能,做两轮自平衡实验的可以看看
2022-01-20 21:48:10 409KB 自平衡控制
1
老外开发的,part2不需要分。有兴趣可以看看。
2021-12-31 14:04:03 1.91MB 双轮自平衡
1
该工程采用MDK4编写,MCU是STM32F103,软件实现了速度,方向,和平衡等功能。主要采用MPU6050和编码器。内有详细注释。
2021-12-30 19:39:36 9.15MB stm32 平衡小车 MPU6050 速度PI控制
1
针对传统LQR最优控制器权重矩阵确定困难以及由此导致的响应速度慢等问题,以具有多变量、强耦合、非线性特点的两轮自平衡小车为被控对象,提出了一种通过遗传算法实现LQR控制器参数寻优的方法。选择线性二次型性能指标为目标函数,利用遗传算法的全局优化搜索能力,获取权阵Q的最优解,从而设计状态反馈控制率K,搭建系统动力学模型进行仿真实验。实验结果表明:该方法设计的最优控制器相对于传统的极点配置和LQR方法具有更好的控制效果,系统响应速度更快,超调更小。
2021-12-14 18:46:03 694KB 行业研究
1
平衡小车制作软硬件技术资料,AD设计的原理图+PCB,STM32源码,蓝牙,app CAD图及3D加工图.zip MCU源代码 原理图和PCB及BOM表格 安卓蓝牙遥控器APK及源码.zip 小车实物图.jpg 电路板3d图.png 电路板实物图.jpg 01 - 运动控制MCU源代码(STM32F103RCT6) 02 - 姿态解算MCU源代码(STM32F103C8T6) AHRS.SchDoc BlueTooth.SchDoc Camera.SchDoc FrameWork.SchDoc MicroController_AHRS.SchDoc MicroController_Main.SchDoc MotorDriver.SchDoc Power.SchDoc Socket&Hole.SchDoc WIFI2UART.SchDoc 自平衡小车主控板.PcbDoc 自平衡小车主控板.PrjPcb
一、平衡小车原理: 自平衡小车是利用车模自身动力使小车保持相对的平衡,是一个动态平衡的过程。维持车模平衡的动力来自车轮的运动,由两个直流电机驱动。对车模的控制可以分解为三个控制任务: 1、控制小车平衡:通过控制小车车轮正反转使小车保持直立平衡。 2、控制小车速度:通过控制小车的倾角实现小车前后运动和速度的控制,其实最终的仍是通过控制电机的转速实现。 3、控制小车方向:通过控制小车两个电机之间的转速差来实现转向控制。 分解为三个控制任务显得相对简单一点,但是在最终的控制过程中都归结为对一个控制量的控制,这样三个任务之间就会存在耦合,会相互干扰。三个任务中控制平衡是关键,所以对小车的速度和方向控制应该尽量的平滑。 二、硬件方案设计 小车的硬件分为三个部分,分别是主控部分、小车姿态获取部分以及电机驱动部分。主控板采用目前常用的arduino UNO,同时也可以使用其他arduino通用控制板做主控。 小车姿态获取可以有很多方案,使用最多的就是通过加速度计和陀螺仪获取小车姿态。理论上只需要两轴加速度计(垂直方向Z轴和沿小车运动方向X轴)和一个单轴陀螺仪(沿小车车轮轴方向,获取绕小车轮轴的角速度)。陀螺仪通过角度积分可以获得小车角度,但是经过积分会产生累计误差,并且会越来越大,X轴与Z轴加速度计的值也可以算出小车的倾角,但是加速度计的瞬时误差较大,所以结合陀螺仪和加速度计两者获得的角度做数据融合可得真实角度。我们使用一个集成了三轴加速度计和三轴陀螺仪的集成芯片MPU6050,这样极大的简化了我们的传感器电路。 小车通过两个直流电机驱动车轮运动来获得动力,直流电机的驱动电路设计关系到整个系统的稳定性,因为电机反转时会产生反向电动势会干扰到电源系统内其他设备的运行。我们选用L298P做电机驱动器,它内部包含4通道逻辑驱动电路,可同时驱动两个直流电机,输出电流可达2.5A。 三、软件设计之小车姿态获取---卡尔曼滤波 在开始之前应该对MPU6050进行设置,主要设置角速度以及加速度的量程,加速度量程有±2g、±4g±8g与±16g,角速度量程分别为±250、±500、±1000与±2000°/sec (dps),可准确的追踪快速动作与慢速动作。在使用之前先设置好量程以便后面的换算。我们小车轮轴与传感器Y轴平行,即绕Y轴旋转则有: 那竖直方向弧度计算公式为: angle = atan2(x, z) //结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi) 如果要换算成具体角度: angle = atan2(x, z) *(180/3.14) 陀螺仪获取角速度积分得到角度公式为:anglen = anglen-1 + gyronn*dt ,式中anglen 为第N次采样的角度值,anglen-1 为第N-1次的角度值,gyronn为两次采样值之间的角速度值,dt为两次采样之间的时间。然后将换算后的两个角度数据进行卡尔曼滤波融合,可获得小车真实角度,也可以采用更简单的互补滤波算法。 注意加速度计所得角度与陀螺仪积分角度的方向。 四、软件设计之小车姿态调整---PID参数整定 小车的姿态获取最终结果是一个角度,就是小车偏离平衡位置的倾角。通过以小车的这个倾角为变量进行PID控制,输出用于控制车轮转速的PWM值,那么相当于小车只有一个角度反馈环路,虽然能使小车平衡,但是增加了控制难度,所以通常会使用带测速的电机,再加入一个小车速度反馈环路,这样使得小车更容易控制。关于PID的有下面一个简单易懂的描述: 假设我们想把一个小球稳定在一个光滑的坡顶,这显然是一个不平衡的系统,稍有扰动小球就会滚下来。假设恰好平衡的位置坐标是L,我们可以测量到小球的位置是x,那么怎么给小球施加f(x)的力反馈,让它能够平衡呢? 最直观的想法就是f(x) =Kp*(L-x),简单的说就是你在左边我就向右推,你在右边我就向左推,这就是比例因子P; 现在考虑两种情况,同样是在x位置,小球静止和小球具有速度V这两种情况。很明显,如果V>0,我们只需要施加更小的力,因为小球自身的惯性会让它运动向平衡位置。所以可以修正f(x) = Kp*(L-x) – Kd*V。因为速度一般不容易测量,我们常常用位置的变化Δx除以测量的时间差Δt来计算速度,所以这就是微分因子D; 情况继续发生变化,上面考虑的是斜坡静止的情况,如果这个变态的斜坡是移动的怎么办呢?(例如两轮平衡机器人实际上是可以运动的,对于静止的磁悬浮来说,不需要考虑这个参数)这时候我们需要不断的累加并平均x值,来计算平衡位置的L,这个就是积分因子I; 当PID用在我们自平衡小车中时,我们使用角度PD环与速度PI环进行控制。 pwm=angle*k1+angle_dot*k2+range*k3+wheel
2021-12-06 17:43:59 257KB 自平衡小车 原理硬件设计 源代码
1