博客
关于我
平衡小车从原理到实践
阅读量:321 次
发布时间:2019-03-01

本文共 1625 字,大约阅读时间需要 5 分钟。

平衡小车从原理到实践


平衡小车是一种通过智能控制实现长期稳定平衡的小型移动机器人。它的核心控制原理结合了直立环和速度环,能够在复杂环境中保持平衡。以下从理论到实践详细解析平衡小车的设计与实现。

1. 平衡小车控制原理

平衡小车的核心在于通过闭环控制实现稳定性。其控制算法主要包含直立环和速度环两个部分,两者协同工作,使小车能够在动态环境中保持平衡。

1.1 直立环的引出

直立环的主要作用是通过控制小车的倾角来抵消惯性效应。理想情况下,控制电机的加速度与倾角成正比。然而,实际应用中,小车因机械惯性会在倾角为零时产生反向倾斜。因此,直立环需要通过PD控制算法来消除这种惯性效应。

1.2 速度环的引出

仅依靠直立环的小车往往只能短暂保持平衡,随后因速度累积而倒下。速度环的引入可以通过闭环控制限制小车的平移速度,从而实现长期稳定平衡。

2. 制作一个平衡小车

2.1 硬件准备

  • 主控板:如Arduino Uno、STM32等;
  • 驱动电机:如L298N驱动模块;
  • 传感器:MPU6050惯性测量单元;
  • 编码器:用于测量小车速度;
  • 电机驱动:直流电机及减速电机。

2.2 软件实现

  • 代码框架:包括直立环和速度环的控制逻辑,通常采用C语言编写;
  • 调试与测试:需要通过实验调整参数,确保系统稳定性。

3. 平衡小车-PD直立环

PD直立环是平衡小车的基础控制算法。其核心原理是通过负反馈机制,控制电机加速度以抵消倾角和角速度。代码实现如下:

int balance(float Angle, float Gyro) {    static float ZHONGZHI; // 机械中值,根据安装位置调整    float Balance_Kp = 700, Balance_Kd = 2.0;    float Bias = Angle - ZHONGZHI;    int result = Balance_Kp * Bias + Gyro * Balance_Kd;    return result;}

3.1 参数调试

  • Kp范围:根据电机最大占空比确定,通常为0-720;
  • Kd范围:根据转动惯量调整,通常为0-2.0。

4. 平衡小车-PI速度环

PI速度环通过正反馈控制平移速度,使小车在直立的基础上尽量保持静止。其代码实现如下:

int velocity(int encoder_left, int encoder_right) {    static float Encoder_Integral = 0;    static float Encoder_Least = (encoder_left + encoder_right) - 0;    float Encoder = Encoder_Least * 0.8 + Encoder_Least * 0.2;    Encoder += Encoder_Least * 0.2;    Encoder_Integral += Encoder;    Encoder_Integral = (Encoder_Integral > 10000) ? 10000 : (Encoder_Integral < -10000) ? -10000 : Encoder_Integral;    float Velocity = Encoder * Velocity_Kp + Encoder_Integral * Velocity_Ki;    return Velocity;}

4.1 参数调试

  • Kp范围:根据编码器最大变化量确定,通常为-180-185;
  • Ki范围:根据Kp调整,通常为-0.925。

5. 总结

通过以上理论和实践,能够实现一个基本的平衡小车。其核心控制算法结合了直立环和速度环,确保小车在动态环境中保持稳定。实际应用中,还需要引入转向环和遥控环,才能实现更复杂的功能。

转载地址:http://vzwl.baihongyu.com/

你可能感兴趣的文章
Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
查看>>
Objective-C实现DWT离散小波变换(附完整源码)
查看>>
Objective-C实现Edmonds-Karp算法(附完整源码)
查看>>
Objective-C实现EEMD算法(附完整源码)
查看>>
Objective-C实现elgamal 密钥生成器算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现entropy熵算法(附完整源码)
查看>>
Objective-C实现euclidean distance欧式距离算法(附完整源码)
查看>>
Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
查看>>
Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
查看>>
Objective-C实现euler method欧拉法算法(附完整源码)
查看>>
Objective-C实现euler modified变形欧拉法算法(附完整源码)
查看>>
Objective-C实现eulerianPath欧拉路径算法(附完整源码)
查看>>
Objective-C实现Eulers TotientFunction欧拉函数算法(附完整源码)
查看>>
Objective-C实现eulers totient欧拉方程算法(附完整源码)
查看>>
Objective-C实现EulersTotient欧拉方程算法(附完整源码)
查看>>
Objective-C实现eval函数功能(附完整源码)
查看>>
Objective-C实现even_tree偶数树算法(附完整源码)
查看>>
Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
查看>>