基于倒立摆模型的平衡小车

动力学模型建立

        平衡小车的运动过程类似于单摆,我们通过类比单摆模型来说明保持车体平衡的控制规律。重力场中使用细线悬挂着重物经过简化便形成理想化的单摆模型。直立着的小车可以看成放置在可以左右移动平台上的倒立着的单摆。

图1 - 小车简化成倒立的单摆

图2 - 普通单摆受力分析

        当物体离开垂直的平衡位置之后,便会受到重力与悬线的作用合力,驱动重物回复平衡位置。这个力称之为回复力,其大小为

F=-mgsinθ≈-mgθ

        在偏移角度很小的情况下,回复力与偏移的角度之间大小成正比,方向相反。 在此回复力作用下,单摆便进行周期运动。在空气中运动的单摆,由于受到空气的阻尼力, 单摆最终会停止在垂直平衡位置。空气的阻尼力与单摆运动速度成正比,方向相反。阻尼力越大,单摆越会尽快在垂直位置稳定下来。

图3 - 不同阻尼力下的单摆运动

        总结单摆能够稳定在垂直位置的条件有两个:

        a.受到与位移(角度)相反的恢复力。

        b.受到与运动速度(角速度)相反的阻尼力。

        如果没有阻尼力,单摆会在垂直位置左右摆动。阻尼力会使得单摆最

### STM32F407 平衡小车直立环控制 #### 实现概述 平衡小车的直立环控制系统旨在使车辆能够自动调整姿态,维持垂直位置。此过程涉及到多个学科的知识融合,包括但不限于电子学、机械设计以及自动化控制理论[^1]。 #### 关键技术要点 - **核心控制器**:采用STM32F407作为主控芯片,其具备高性能ARM Cortex-M4内核,适合处理复杂的实时计算任务。 - **传感器集成**:通常会配备陀螺仪和加速度计来感知车身倾斜角度变化;这些数据对于构建精确的姿态估计至关重要。 - **反馈机制建立**:基于获取到的角度信息,利用PID调节器形成闭环控制系统,从而动态修正电机驱动指令以稳定车身姿态。 #### PID 参数调优策略 为了获得良好的响应特性并减少稳态误差,在实际应用中往往需要反复试验不同的KP, KI 和 KD 值组合直至找到最优解集。特别是针对积分项KI 的设置尤为关键,因为这有助于消除静态偏差,确保即使是在负载发生变化的情况下也能保持较好的稳定性[^2]. ```c // 示例代码片段展示如何初始化PID控制器用于直立环路控制 void pid_init(float kp, float ki, float kd){ // 初始化比例系数Kp g_pid.kp = kp; // 初始化积分系数Ki g_pid.ki = ki; // 初始化微分系数Kd g_pid.kd = kd; // 清零累积误差变量 g_pid.integral_error = 0.0f; } float compute_pid_output(float setpoint, float process_variable){ static float last_process_variable = 0.0f; // 上一次的过程量 // 计算当前时刻的误差 float error = setpoint - process_variable; // 更新累计误差 (仅考虑正向偏移) if(error >= 0){ g_pid.integral_error += error * g_pid.ki; } // 微分部分不参与计算 return ( error * g_pid.kp + g_pid.integral_error - ((process_variable - last_process_variable) * g_pid.kd) ); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦瓜人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值