一、位式控制算法

传统的控制算法采用位式控制算法:

特点

  1. 位式控制算法输出信号只有H\L两种状态
  2. 算法输出信号OUT的依据:
二位式:
Pv < Sv -->H
pV >=Sv -->L
  1. 只考察控制对象当前的状态值

位式控制算法算法的缺点在于只考察控制对象当前传感器传回来的值与目标值之间有无偏差,并且只有两种状态导致无法精确控制在目标值上。

二、 PID控制算法

因为位式控制算法的缺陷,产生了在其之上改良的PID算法:

算法分析

1. 开机以来,传感器采样点的数据序列

X1,X2,X3 ······ ,Xk-2,Xk-1,Xk

2. 分析采样点的数据序列:可以挖掘3方面的信息

2.1 比例控制

基本思想: 只关心现在有无偏差

 Ek = Sv - Xk
EK>0; 当前控制未达标
Ek=0; 当前控制达标
Ek<0; 当前控制超标POUT = Kp * Ek --------- 比例控制(输出信号大小与目前的误差值成比例)

比例控制有缺陷,当Ek=0时,便不控制,但周围环境会使系统有变化,控制不会很精准,可以加上一个常数 POUT=kp*Ek+OUT1

2.2 积分控制

基本思想: 根据历史状态来输出信号

把每一个采样点与目标值进行比较,得到历史偏差序列:
E1,E2,E3 ······ Ek-2,Ek-1,Ek
Sk = E1+E2+E3+······Ek-2+Ek-1+Ek(每一项都可正可负,不会无限大)
Sk>0; 所有偏差之和为正,控制总体偏低,未达标 (输出信号应该加强)
Sk=0;
Sk<0; 所有偏差之和为负,控制总体偏高,超标 (输出信号减弱)IOUT = Ki * Sk ---------  积分控制

积分控制,当历史数据为0,认为现在没有问题,不控制,陷入失控,可以加上一个常数 IOUT = Ki*Sk+OUT2

2.3 微分控制

基本思想: 只关心偏差有没有变化趋势

最近两次的偏差相减
Dk = Ek -Ek-1 (得到两次变化的偏差之差)
Dk>0; 这一次的偏差值大于上一次,越来越偏离我们的目标,偏差有增大趋势
Dk=0; 前一次采样和后一次采样之间的变化没有产生变化
Dk<0;DOUT = Kd * Dk ----------微分控制

同理,等于0时前一次采样和后一次采样之间的变化没有产生变化,为了在变化率没有改变的情况下系统不至于失控 DOUT = Kd*Dk+OUT3

三、倒立摆角度环与位置环

1. 角度环

1.1 算法设计

通过STM32用adc采集角位移传感器(WDD35D-4导电塑料电位器)的值,由之前学到的PID控制算法理论可以得出,通过控制电机的转动与PWM的值来使倒立摆达到我们所希望的角度。

根据所需要的系统要求,只需要让其达到所期望的角度,历史的差值对其影响并不大,所以只需要PD调节即可完成所需。

算法代码如下:

int balance(float Angle)//倾角PD控制
{float Bias;//倾角偏差static float Last_Bias,D_Bias;//PID相关变量int balance;//PWM返回值Bias=Angle-ZHONGZHI;//求出平衡的角度中值,ZHONGZHI即数直起来的ad值D_Bias=Bias-Last_Bias;//求出偏差的微分balance=KP*Bias-D_Bias*KD;//计算倾角PD控制的电机PWMLast_Bias=Bias;//保持上一次偏差return balance;
}

1.2 参数整定

KP:逐渐增大KP的值,直到出现反向或者低频抖动的情况

KD:微分控制,控制偏差的变化趋势,实际中便是用来抑制转动惯量(即转动过猛)

2. 位置环

单纯进行角度环的控制,会稳定一段时间,但是最终会朝一个方向运动下去,因此还必须加上位置环的控制

位置环就是尽可能的让转动的轴不要移动,同样采用PD控制,代码如下:

int Position(int Encoder)
{  static float Position_PWM,Last_Position,Position_Bias,Position_Differential;static float Position_Least;Position_Least =Encoder-Position_Zero;             //===Position_Bias *=0.8;           Position_Bias += Position_Least*0.2;                 //===一阶低通滤波器  Position_Differential=Position_Bias-Last_Position;Last_Position=Position_Bias;Position_PWM=Position_Bias*Position_KP+Position_Differential*Position_KD; //===速度控制 return Position_PWM;
}

低通滤波的作用是降低位置控制对角度控制的影响,毕竟角度控制是主要的,而位置控制是会对角度控制造成影响,尽可能消除这一影响

PID控制算法+倒立摆控制应用相关推荐

  1. matlab穆尔,基于matlab(矩阵实验室)的倒立摆控制系统仿真(34页)-原创力文档

    基于MATLAB的倒立摆控制系统仿真 摘 要 自动控制原理(包括经典部分和现代部分)是电气信息工程学院学生的一门必修专业基础课,课程中的一些概念相对比较抽象,如系统的稳定性.可控性.收敛速度和抗干扰能 ...

  2. 单级倒立摆matlab仿真程序,单级倒立摆控制系统设计及MATLAB中的仿真..doc

    单级倒立摆控制系统设计及MATLAB中的仿真. 单级倒立摆控制及仿真单级倒立摆系统是一种广泛应用的物理模型.控制单级倒立摆载体的运动是保证倒立摆稳定 完成了对倒立摆载体的角度制导运动微分方程 Matl ...

  3. 【基于Simulink+UG NX MCD 一级倒立摆控制系统仿真】建模和分析(一)

    前言 倒立摆是比较典型的系统,可以看出火箭发射的简化模型,国内外学者常常通过在倒立摆上开发和测试控制算法. 对倒立摆的控制分为两大任务: 起摆 稳摆 所以本文想通过此项目对自动控制原理进行一个复习与学 ...

  4. 什么是pid控制算法_飞行控制PID算法——无人机飞控

    PID控制应该算是应用非常广泛的控制算法了.小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制.这里我们从原理上来理解PID控制. PID(proportion in ...

  5. 直线一级倒立摆控制(自起摆和稳态控制)

    1.控制设计对象结构示意图 图1  倒立摆模型示意图 图2 摆杆向左起摆过程示意图(左)及摆杆相对小车的受力分析图(右) 2.控制对象特征参数 M 小车质量 1.096 Kg              ...

  6. 基于LQR的倒立摆控制——python代码——dlqr步骤推导

    推荐一个自动控制小车开源项目:本文结合老王自动驾驶控制算法第五讲的离散LQR进行学习复盘 Inverted Pendulum Control - PythonRobotics documentatio ...

  7. 基于STM32的HAL库的倒立摆控制(一)PWM输出

    一 TIM初始化 首先初始化PWM引脚,在这里使用的是TIM4的ch3,设置PD14为复用输出,并连接到TIM4 GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitS ...

  8. 倒立摆C语言双闭环控制程序,基于双闭环PID控制的一阶倒立摆控制系统的设计(最终版)...

    <基于双闭环PID控制的一阶倒立摆控制系统的设计.doc>由会员分享,可在线阅读全文,更多相关<基于双闭环PID控制的一阶倒立摆控制系统的设计(最终版)>请在www.woc88 ...

  9. 倒立摆的数学模型,matlab程序,simulink,c语言控制,一级倒立摆的控制设计

    本论文主要研究内容 倒立摆装置被公认为自动控制理论中的典型试验设备,也是控制理论教学和科研中不可多得的典型物理模型.本论文的研究旨在完成这样一系列工作: 介绍倒立摆系统控制的研究发展过程和现状:研究单 ...

  10. OpenAI Gym 经典控制环境介绍——CartPole(倒立摆)

    摘要:OpenAI Gym是一款用于研发和比较强化学习算法的工具包,本文主要介绍Gym仿真环境的功能和工具包的使用方法,并详细介绍其中的经典控制问题中的倒立摆(CartPole-v0/1)问题.最后针 ...

最新文章

  1. vue实用组件——页面公共头部
  2. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
  3. RT-Thread优化智能车设计
  4. JSON字符串key缺少双引号的解决方法
  5. 《Photoshop修饰与合成专业技法》—第1章利用图层样式改进抠像
  6. rabbitmq的启动命令和springboot整合使用rabbitmq
  7. OpenGL之gluPerspective浅析
  8. 容器化Spring Data Cassandra应用程序
  9. 在WinCE中实现Screen Rotation(屏幕旋转)
  10. 51单片机——UART
  11. 动态规划——矩阵连乘(算法设计课题)
  12. [转]基于Storm的实时数据处理方案
  13. SQL Server-流程控制 2,If...Else 语句
  14. 《Android进阶之光》— Android 书籍
  15. 转:数据包经由路由转发时源、目的IP地址及MAC地址变化情况
  16. postsql获取表字段信息SQL
  17. fanuc换刀宏程序详解_FANUC宏程序使用举例
  18. O2O营销模式的核心是什么 O2O模式下便利店有哪些特点?
  19. MongoDB分组查询数据库sql
  20. OpenCV python 彩色图片的三通道

热门文章

  1. alisql mysql_alisql安装步骤
  2. 每日一练蓝桥杯C语言:2020年真题题集(B组)
  3. jQuery入门基础
  4. 极光IM简单代码(代码比较清晰)
  5. 一个简单的JavaWeb项目
  6. JavaWeb项目开发步骤
  7. 奥迪坚受邀参加银联数据2016年度客服云平台专题研讨会
  8. 数字系统设计与制作报告——双向流水灯控制电路
  9. 《Linux启动过程分析》内核挂载根文件系统
  10. MySQL 驱动的下载方法