算法设计论文-PID算法实例
PID算法程序范文

PID算法程序范文PID控制器是一种常用的反馈控制算法,用于实时地调整控制系统的输出,以使得被控对象的输出尽可能接近设定值。
PID控制器由比例项(P)、积分项(I)和微分项(D)组成,通过对这三个项的调节,可以实现对被控对象的精确控制。
下面是一个简单的PID算法程序的示例,使用C语言编写:```c#include <stdio.h>//定义PID参数#define KP 0.5 // 比例增益#define KI 0.2 // 积分增益#define KD 0.1 // 微分增益//定义全局变量int error = 0; // 当前误差int last_error = 0; // 上一次误差int integral = 0; // 积分项int derivative = 0; // 微分项int output = 0; // 控制器输出//定义被控对象模拟函数int simulate_plant(int control_input)static int actual_output = 0; // 被控对象的输出actual_output += control_input; // 模拟被控对象的响应return actual_output;//PID算法函数int pid_algorithm(int setpoint, int actual_output)error = setpoint - actual_output; // 计算当前误差//计算比例项int proportional = KP * error;//计算积分项integral = integral + error;int integral_term = KI * integral;//计算微分项derivative = error - last_error;int derivative_term = KD * derivative;//计算PID控制器的输出output = proportional + integral_term + derivative_term; //更新上一次误差供下一次计算使用last_error = error;return output;int mai//设置目标值和初始被控对象输出值int setpoint = 50;int actual_output = 0;//模拟实时控制过程,循环100次for (int i = 0; i < 100; ++i)//调用PID算法计算控制器输出int control_input = pid_algorithm(setpoint, actual_output);//更新被控对象的输出actual_output = simulate_plant(control_input);//输出当前相关变量值供调试printf("Error: %d, Control Input: %d, Actual Output: %d\n", error, control_input, actual_output);}return 0;```上述代码中,`KP`、`KI`和`KD`分别表示比例增益、积分增益和微分增益,根据实际控制系统的需求进行调节。
PID算法实例

signed int uk1; //对u[k]四舍五入取整
signed int adjust; //调节器输出调整量
//变量初始化
Kp=4;
Ti=0.005;
T=0.001;
// Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数
ek=0;
ek1=0;
ek2=0;
uk=0;
uk1=0;
adjust=0;
intpiadjust(float ek) //PI调节算法
{
if( gabs(ek)<0.1 )
adjust=0;
else
{
uk=Kp*(ek-ek1)+Ki*ek; //计算控制增量
ek1=ek;
uk1=(signed int)uk;
{
EvaRegs.CMPR3=EvaRegs.CMPR3+piadjust(ek);//误差较小PID调节稳住
if(EvaRegs.CMPR3>=890)
{
EvaRegs.CMPR3=890; //限制PWM占空比
}
}
PID 算法应用实例
一、PID算法:
比例、积分、微分控制,简称PID控制,又称PID调节;
二、应用环境:
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定;
三、PID算法应用实例
四、参数调整
PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。但是,对于PID控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得到较为满意的控制效果。依据经验,一般PID参数确定的步骤如下:
PID控制原理的应用论文

PID控制原理的应用论文引言在控制系统中,PID控制算法是一种常用且广泛应用的控制算法。
PID控制器主要由比例、积分和微分三个部分组成,它通过不断调整控制器输出信号,使得控制对象的输出与期望值尽可能接近。
本篇论文主要探讨PID控制原理的应用,并结合实际案例来说明其有效性和优势。
PID控制原理比例控制比例控制基于系统的偏差来调整控制器的输出。
它通过将偏差乘以比例系数来产生输出信号,该输出信号的大小与输入偏差成正比。
比例控制适用于一些偏差较大、但变化较慢的系统。
积分控制积分控制用于补偿系统的累积误差。
它通过将偏差的累积值乘以积分系数,并对其进行积分来产生输出信号。
积分控制可以快速减小系统误差,并且可用于补偿系统的静态误差。
微分控制微分控制用于预测系统未来的行为。
它通过将偏差的变化率乘以微分系数,来产生输出信号。
微分控制可以使系统更加稳定,并且适用于一些快速变化的系统。
PID控制器PID控制器将比例、积分和微分控制结合起来,使得控制器能够更好地适应不同的系统需求。
PID控制器的数学表达式为:u(t) = Kp * e(t) + Ki * ∫e(t) dt + Kd * de(t)/dt其中,u(t)为PID控制器的输出,e(t)为输入偏差,Kp、Ki、Kd分别为比例、积分和微分系数。
实际应用案例为了说明PID控制原理的应用,以温度控制系统为例进行分析。
温度控制系统简介温度控制系统是一个常见的工业控制系统。
在一个温度控制系统中,温度传感器测量当前环境温度,并将数据传递给PID控制器。
PID控制器根据实际温度与期望温度的差异来调整附加设备(如加热器或冷却器)的输出,以使得温度保持在期望值附近。
PID控制器在温度控制系统中的应用在温度控制系统中,PID控制器可以根据温度偏差来控制附加设备的输出。
通过不断调整控制器的输出信号,温度可以稳定在期望值附近。
具体的控制过程包括以下几个步骤:1.温度传感器测量当前温度。
PID控制算法实例_电机_温度

实验十七 直流电机控制实验一、 实验目的1. 学习数字控制器的模拟化设计方法;2. 学习数字PID 控制器的设计方法;3. 学习PWM 控制理论;4. 学习数字PID 控制器在DSP 上的实现方法。
二、实验设备 计算机,CCS 2.0版软件,实验箱、DSP 仿真器、导线。
三、基础理论 PID 控制器(按闭环系统误差的比例、积分和微分进行控制的调节器)自30年代末图1 模拟PID 控制期出现以来,在工业控制领域得到了很大的发展和广泛的应用。
它的结构简单,参数易于调整,在长期应用中已积累了丰富的经验。
特别是在工业过程控制中,由于被控制对象的精确的数学模型难以建立,系统的参数经常发生变化,运用控制理论分析综合不仅要耗费很大代价,而且难以得到预期的控制效果。
在应用计算机实现控制的系统中,PID 很容易通过编制计算机语言实现。
由于软件系统的灵活性,PID 算法可以得到修正和完善,从而使数字PID 具有很大的灵活性和适用性。
实现PID 控制的计算机控制系统如图1所示,其中数字PID 控制器是由软件编程在计算机内部实现的。
1、PID 控制规律的离散化PID 控制器是一种线性调节器,这种调节器是将系统的给定值r 与实际输出值y 构成的控制偏差y r c -=的比例(P )、积分(I )、微分(D ),通过线性组合构成控制量,所以简称PID 控制器。
连续控制系统中的模拟PID 控制规律为:])()(1)([)(0dtt de T dt t e T t e K t u D t I p ++=⎰ (式1)式中)(t u 是控制器的输出,)(t e 是系统给定量与输出量的偏差,P K 是比例系数,I T 是积分时间常数,D T 是微分时间常数。
其相应传递函数为:)11()(s T sT K s G D I p ++= (式2) 比例调节器、积分调节器和微分调节器的作用:(1)比例调节器:比例调节器对偏差是即时反应的,偏差一旦出现,调节器立即产生控制作用,使输出量朝着减小偏差的方向变化,控制作用的强弱取决于比例系数P K 。
pid位置控制算法例题

pid位置控制算法例题PID(比例-积分-微分)控制是一种常用的控制算法,用于控制系统以使其输出接近预期值。
PID控制算法广泛应用于工业自动化、机械系统、电子设备等领域。
本文将为您提供一个关于PID位置控制算法的例题,并详细讨论实现过程。
1. 问题描述假设有一个电动机控制系统,包括电动机和位置传感器。
控制系统的目标是控制电机的位置,使其达到预定的目标位置。
系统的输入是电机的控制信号,输出是电机的位置。
控制器根据目标位置和当前位置之间的误差来调整控制信号,使得误差收敛到0。
现在,我们需要设计一个PID位置控制算法,实现电机位置的精确控制。
2. 算法设计2.1 比例控制比例控制是PID控制算法的核心部分之一。
它根据误差的大小来产生控制信号。
比例控制的计算公式为:\[P = K_p \cdot e(t)\]其中,P是比例控制的输出,Kp称为比例增益,e(t)是目标位置与当前位置之间的误差。
比例增益决定了调节幅度,增大比例增益可加快调节速度,但也可能引入振荡和不稳定性。
2.2 积分控制积分控制用于消除比例控制的静差。
它将误差的累积值乘以积分增益,并将结果添加到控制信号中。
积分控制的计算公式为:\[I = K_i \cdot \int e(t)dt\]其中,I是积分控制的输出,Ki称为积分增益。
积分增益决定了调节的准确性,增大积分增益可减小调节静差,但可能引入过调和不稳定等问题。
2.3 微分控制微分控制用于改善系统的动态响应。
它测量误差的变化率,并将其乘以微分增益,然后将结果与控制信号相加。
微分控制的计算公式为:\[D = K_d \cdot \frac{de(t)}{dt}\]其中,D是微分控制的输出,Kd称为微分增益。
微分增益决定了调节的稳定性,增大微分增益可抑制系统的振荡和不稳定,但也可能降低调节速度。
2.4 PID控制PID控制将比例、积分和微分控制结合起来,形成最终的控制信号。
PID控制的计算公式为:\[u(t) = P + I + D\]其中,u(t)是PID控制的输出,P是比例控制输出,I是积分控制输出,D是微分控制输出。
毕业设计论文——基于模糊PID算法的小型四旋翼无人飞行器控制系统设计

摘要四旋翼飞行器是一种四螺旋桨驱动的、可垂直起降的飞行器,这种结构被广泛用于微小型无人飞行器的设计,可以应用到航拍、考古、边境巡逻、反恐侦查等多个领域,具有重要的军用和民用价值。
四旋翼飞行器同时也具有欠驱动、多变量、强耦合、非线性和不确定等复杂特性,对其建模和控制是当今控制领域的难点和热点话题。
本次设计对小型四旋翼无人直升机的研究现状进行了细致、广泛的调研,综述了其主要分类、研究领域、关键技术和应用前景,然后针对圆点博士的四旋翼飞行器实际对象,对其建模方法和控制方案进行了初步的研究。
首先,针对四旋翼飞行器的动力学特性,根据欧拉定理以及牛顿定律建立四旋翼无人直升机的动力学模型,并且考虑了空气阻力、转动力矩对于桨叶的影响,建立了四旋翼飞行器的物理模型;根据实验数据和反复推算,建立系统的仿真状态方程;在Matlab环境下搭建了四旋翼飞行器的非线性模型。
选取四旋翼飞行器的姿态角作为控制对象,借助Matlab模糊工具箱设计了模糊PID控制器并依据专家经验编辑了相应的模糊规则;通过仿真和实时控制验证了控制方案的有效性,并在此控制方案下采集到了输入输出数据;利用单片机编写模糊PID算法控制程序,实现对圆点博士四旋翼飞行器实物的姿态控制。
本设计同时进行了Matlab仿真和实物控制设计,利用模糊PID算法,稳定有效的对四旋翼飞行器的姿态进行了控制。
关键词:四旋翼飞行器;模糊PID;姿态控制ⅠAbstractQuadrotor UA V is a four propeller driven, vertical take-off and landing aircraft, this structure is widely used in micro mini unmanned aerial vehicle design and can be applied to multiple areas of aerial, archaeology, border patrol, anti-terrorism investigation, has important military and civil value.Quadrotor UA V is a complicated characteristic of the complicated characteristics such as the less drive, the multi variable, the strong coupling, the nonlinear and the uncertainty, and the difficulty and the hot topic in the control field.Research status of the design of small quadrotor UA V were detailed and extensive research, summarized the main classification, research areas, key technology and application prospect of and according to Dr. dot quadrotor actual object, the modeling method and control scheme were preliminary study.First, for the dynamic characteristics of quadrotor UA V, dynamic model of quadrotor UA V is established according to the theorem of Euler and Newton's laws, and consider the air resistance and rotation torque for the effects of blade, the establishment of the physical model of the quadrotor UA V; root according to experimental data and repeated calculation, the establishment of system simulation equation of state; under the MATLAB environment built the nonlinear model of the quadrotor UA V Select the attitude of the quadrotor angle as the control object, with the help of matlab fuzzy toolbox to design the fuzzy PID controller and according to experience of experts to edit the corresponding fuzzy rules; through the simulation and real-time control verify the effectiveness of the control scheme, and this control scheme under the collection to the data input and output; written by SCM fuzzy PID control algorithm, dots, Quad rotor UA V real attitude control. The design of the Matlab simulation and the physical control design, the use of fuzzy PID algorithm, the stability of the four rotor aircraft attitude control.Keywords:Quadrotor UA V;F uzzy PID;Attitude controlⅡ目录摘要(中文) (Ⅰ)摘要(英文) (Ⅱ)第一章概述 (1)1.1 课题背景及意义 (1)1.2 四旋翼飞行器的研究现状 (2)1.3 四旋翼飞行器的关键技术 (5)1.3.1 数学模型 (6)1.3.2 控制算法 (6)1.3.3 电子技术 (6)1.3.4 动力与能源问题 (6)1.4 本文主要内容 (6)1.5本章小结 (7)第二章四旋翼飞行器的运动原理及数学模型 (7)2.1四旋翼飞行器简介 (7)2.2 四旋翼飞行器的运动原理 (8)2.2.1 四旋翼飞行器高度控制 (8)2.2.2 四旋翼飞行器俯仰角控制 (9)2.2.3 四旋翼飞行器横滚角控制 (9)2.2.4 四旋翼飞行器偏航角控制 (10)2.3四旋翼飞行器的数学模型 (11)2.3.1坐标系建立 (11)2.3.2基于牛顿-欧拉公式的四旋翼飞行器动力学模型 (12)2.4 本章小结 (15)第三章四旋翼飞行器姿态控制算法研究 (15)3.1模糊PID控制原理 (15)3.2 姿态稳定回路的模糊PID控制器设计 (16)3.2.1 构建模糊PID控制器步骤 (17)3.2.2 基于Matlab的姿态角控制算法的仿真 (22)3.3 本章小结 (25)第四章四旋翼飞行器飞行控制系统软件设计 (25)4.1 模糊PID控制算法流程图 (25)4.2 系统实验及结果分析 (26)4.3 本章小结 (27)第五章总结与展望 (28)5.1 总结 (28)5.2 展望 (28)参考文献 (28)第一章概述有史以来,人类一直有一个梦想,那就是可以像蓝天上自由翱翔的鸟儿一样。
PID控制算法实例_电机_温度

PID控制算法实例_电机_温度1.电机控制在电机控制中,PID控制算法通常用于控制电机的转速或位置。
PID控制器由比例项(P)、积分项(I)和微分项(D)组成。
具体实现时,可以按照以下步骤进行:第一步,计算误差:将期望的转速或位置信号与实际测量的转速或位置信号做差,得到误差值。
第二步,计算控制量:根据误差值计算控制量,控制量是指控制电机的输出信号。
-比例项:比例项与误差成比例,用于根据误差的大小调节控制量。
大的误差会得到更大的控制量,小的误差会得到更小的控制量。
比例项的作用是尽快将误差减小到零,但可能会引起振荡和超调现象。
-积分项:积分项与误差的累积成正比,用于消除系统静态误差和减小系统的稳态误差。
积分项的作用是逐渐消除误差,但可能会引起超调或者过度响应。
-微分项:微分项与误差的变化率成比例,用于预测误差的变化趋势,减小系统的反应速度和稳定系统。
微分项的作用是减小系统的超调和振荡,但可能会引起系统的抖动。
第三步,更新控制量:将计算得到的控制量应用于电机,调节电机的输出信号。
第四步,循环迭代:重复以上步骤,直到达到期望的转速或位置。
2.温度控制在温度控制中,PID控制算法通常用于控制加热元件或制冷机的输出功率,以维持设定的温度值。
具体实现步骤如下:第一步,测量温度:使用温度传感器或温度计测量当前温度值。
第二步,计算误差:将期望的温度值与实际测量的温度值做差,得到误差值。
第三步,计算控制量:根据误差值计算控制量,控制量是指调节加热元件或制冷机输出功率的信号。
-比例项:比例项与误差成比例,用于根据误差的大小调节控制量。
大的误差会得到更大的控制量,小的误差会得到更小的控制量。
-积分项:积分项与误差的累积成正比,用于消除系统静态误差和减小系统的稳态误差。
-微分项:微分项与误差的变化率成比例,用于预测误差的变化趋势。
第四步,更新控制量:将计算得到的控制量应用于加热元件或制冷机,调节输出功率。
第五步,循环迭代:重复以上步骤,直到达到设定的温度值。
PID算法范文

PID算法范文PID(Proportional-Integral-Derivative)是一种经典的控制算法,广泛应用于工业自动化、过程控制等领域。
PID算法通过调整控制器的输出信号,使被控对象的输出值尽可能接近期望值,从而实现对系统的精确控制。
在PID算法中,比例部分(P部分)根据当前误差计算出一个比例调节量,调节量与误差成正比。
如果误差较大,比例调节量也会较大,从而加快系统响应速度。
但是由于比例调节量只与当前误差有关,无法处理误差累积导致的稳态误差。
为了解决稳态误差的问题,PID算法中引入了积分部分(I部分),该部分根据误差累积值计算出一个积分调节量,调节量与误差累积值成正比。
积分调节量可以消除系统的稳态误差,并且随着误差累积值的增加而增加,从而更好地适应系统变化。
PID算法通过综合比例、积分和微分三部分的调节量来调整控制量,使系统的输出值尽可能接近期望值。
调节量乘以一个系数Kp、Ki和Kd,称为PID的增益。
增益的选择对PID算法的性能影响很大,合理的增益选择可以提高系统的控制性能。
在实际应用中,PID算法还会根据具体需求和系统特性进行调参。
比如通过增大比例增益可以提高系统的响应速度,但同时也容易引发系统的震荡和超调;通过增大积分增益可以减小系统的稳态误差,但过大的积分增益会导致系统的反应迟钝;通过增大微分增益可以提高系统的稳定性,但过大的微分增益会导致系统的抖动。
除了调参外,PID算法还可以进行进一步的改进和优化。
比如基于模型的PID算法(Model-based PID)可以根据系统模型对PID参数进行在线更新,进一步提高系统的控制性能;自适应PID算法(Adaptive PID)可以根据系统的动态特性和工作环境实时调整PID参数,适应系统的变化。
综上所述,PID算法是一种经典的控制算法,具有简单、实用、稳定等特点。
PID算法通过比例、积分和微分三部分的调节来控制系统,实现系统的精确控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 算法分析与设计结业论文Algorithm analysis and design论文题目PID算法实例分析设计课程名称算法分析与设计上课地点清水河立人楼B106学生姓名范昊洋学号2015170201032年月日PID算法实例分析与设计一,摘要在对机械器件(如电机,电热水器等)进行电子控制的实现时,经常会由于被控制器件的被控制量的变化以及反馈存在一定的机械延迟导致控制的效果不理想,精度不高。
尤其是在控制对于实时系统的控制要求极高的设备,如小车,四轴飞行器,3D打印机等对电机的控制要求非常高,就要求有合适的算法对这些器件进行控制。
PID算法应运而生。
在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。
它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。
PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、…)。
控制点包含三种比较简单的PID控制算法,分别是:增量式算法,位置式算法,微分先行。
这三种PID算法虽然简单,但各有特点,基本上能满足一般控制的大多数要求。
本文将以一个具体的用于控制两轮平衡小车的PID算法c语言实例对PID算法进行分析与设计。
本实验中使用的处理器是ST公司的STM32f103C8T6芯片,硬件方面,使用市场上广泛使用的陀螺仪mpu6050作为加速度传感器和方位传感器,使用tb6612芯片制作点击驱动部分,直流减速电机作为小车的电机。
编译器是keil公司的mdk for arm(keil5)。
关键词:PID算法,stm32,平衡小车,mpu6050二,实验设计1.PID算法的初步设计准备在进行实际算法设计之前,首先要进行一些准备工作,确保后续的PID算法设计能够顺利进行。
在此之前首先深入了解PID算法设计思路。
第一要明确设计目的,设计目标是制作一个能够保持平衡的两轮平衡小车,那么首先要保持平衡,其次要能够正常直线行走,再次能实现转向,一个小车就完成了。
所以为了完成这些功能的设计,首先要有一个功能足够的PID体系。
比例(P)控制比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
积分(I)控制在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。
为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
微分(D)控制微分调节就是偏差值的变化率。
例如,如果输入偏差值线性变化,则在调节器输出侧叠加一个恒定的调节量。
大部分控制系统不需要调节微分时间。
因为只有时间滞后的系统才需要附加这个参数。
如果画蛇添足加上这个参数反而会使系统的控制受到影响。
首先看PID的增量型公式:PID=Uk+KP*【E(k)-E(k-1)】+KI*E(k)+KD*【E(k)-2E(k-1)+E(k-2)】由公式可以看出,要实现PID算法的编程,所需的PID变量至少有,KP,KI,KD三个系数。
实验过程中,这三个变量的值就是许多工程师在实际调试过程中要调整的值。
了解这点之后就开始进行实际编码。
2.直立PID的设计两轮平衡小车不同于四轮的小车,开机之后就必须时刻保持直立,否则就会摔倒而无法进行任何操作,所以小车要完成的第一步就是保持直立。
首先解释一下小车保持直立的原理。
小车是一个直立的个体,那么当它要倒下之前,要首先倾斜,但这时如果小车提前预知了这个趋势,并且控制小车的轮子向倾斜的方向运动小段距离,就能保持平衡。
小车只要时刻都保持着这个运动,就可以实现一直保持直立。
考虑到这个过程对于高响应速度的要求以及其依赖于对小车状态趋势的分析,这个过程使用P(比例)D(微分)驱动而不使用I(积分)。
代码如下:int balance(float Angle,float Gyro){floatBias,kp=575,kd=2.7;int balance;Bias=Angle-ZHONGZHI; //求出平衡的角度中值,和机械相关balance=kp*Bias+Gyro*kd; //计算平衡控制的电机PWMreturn balance;}这个函数有两个形参,这两个形参分别是平衡倾角和平衡角速度,由单片机控制的陀螺仪mpu6050实时传回的数据经过卡尔曼滤波计算得出。
关于陀螺仪和卡尔曼滤波的算法与此处的PID算法无关不再叙述。
上面的balance函数是计算PWM值的一个函数,在另一中断函数中,使用该函数为电机PWM赋值。
Balance_Pwm =balance(Angle_Balance,Gyro_Balance);简要说明,PWM在此处指的是单片机通过IO口传出的频率,占空比都可控的方波信号,单片机通过这些方波信号来控制电机的转动与转速,根据电机种类的不同而控制方式也不同。
此处可简要理解为pwm的变量值越大,电机的转速越快。
那么我们来看balance函数的具体内容,函数中的kp为比例系数,kd为微分系数,该值为已经调试好的取值。
输出一个值balance=kp*Bias+kd*Gyro,Angle为平衡倾角,而Bias=Angle-ZHONGZHI 的意思就是求出平衡方向的倾角与实际要控制的值之间的差值,既是被控制量与被控制的值的差值,这个差值与kp的乘积就是比例系数的变量。
然后再看另一个,另一个是平衡倾角角加速度,由加速度传感器直接经过计算而得,也就是现成的平衡倾角(被控制量)的微分变化,与kd的乘积就是微分系数的变量。
两者相加就完成了直立PID的计算。
3.速度PID的设计解决了直立的问题,下一步就要让小车能够自由前行。
既是实现速度PID控制。
int velocity(intencoder_left,intencoder_right){static float Velocity,Encoder_Least,Encoder,Movement;static float Encoder_Integral,Target_Velocity;floatkp=210,ki=1.05;if(1==Flag_Qian) Movement=Target_Velocity/Flag_sudu;else if(1==Flag_Hou) M ovement=-Target_Velocity/Flag_sudu;else Movement=0;Encoder_Least=(encoder_left+encoder_right)-0;Encoder *= 0.8;Encoder += Encoder_Least*0.2;Encoder_Integral +=Encoder;Encoder_Integral=Encoder_Integral-Movement;if(Encoder_Integral>10000) Encoder_Integral=10000;if(Encoder_Integral<-10000) Encoder_Integral=-10000;Velocity=Encoder*kp+Encoder_Integral*ki;return Velocity;}这个函数就是速度PID控制的函数,由于小车本身速度不快(使用直流减速电机),不需要对于很快的动作有过于明显的反应所以舍弃微分D而只使用P和I两个变量进行控制。
Flag_Qian和Flag_Hou两个变量是标志位,若变量为0表示不行进,Flag_Hou=1表示向后走,Flag_Qian=1表示往前走。
函数的两个形参分别是编码器返回值的左轮速度和右轮速度(编码器是用来检测转动圈数的,返回值是单位时间内的转动圈数,也就是速度)。
此处需要说明的是如下语句:Encoder_Least=(encoder_left+encoder_right)-0;Encoder *= 0.8;Encoder += Encoder_Least*0.2;Encoder_Least是当前速度值(两轮速度和),得到当前速度之后,并没有直接把它作为比例量与比例系数相乘,也没有把它的值作为一个时刻的积分量累加,而是让Encoder量自乘0.8,再与Encoder_Least乘0.2的结果相加。
这个处理过程其实是一个低通滤波过程。
由于编码器传回的数据也是直接从机械装置之中检测到的值,偶然事件对该值的影响可能会比较明显,但是这样就会偏离真实的转动量,所以对转动量(速度)这个值进行低通滤波之后再作为变量使用,这样做是为了让小车更加平稳,速度的PID效果更稳定高效。
Encoder_Integral这个变量则是转动量(速度)的积分变量。
积分量每次都加上一个当前变量值,减去该次的速度的目标值,表示速度与目标速度的差值的积分。
其中如下语句:if(Encoder_Integral>10000) E ncoder_Integral=10000;if(Encoder_Integral<-10000) Encoder_Integral=-10000;则是为了防止积分变量过大,当系统处于特殊情况时积分变量不断增大可能会对系统的调整造成很大影响,于是在每次积分变量计算结束之后都对积分变量进行一个上限判断(正值上限与负值上限),如果积分变量超过10000则把它的值限定在10000,这样做增加了系统的稳定性,同时在开发过程中这样的语句也有很大的意义。
最后把积分变量和比例变量相加赋给电机pwm:Velocity=Encoder*kp+Encoder_Integral*ki;这样就能把每一次的计算结果传递给电机,让电机按照指定的计算结果转动,保证电机已给定的控制量方式转动。
4.转向环PID的设计两个电机都赋予了速度之后,小车就能被控制直走了,但是还需要一个转向的指令,这样小车才能够实现正常的功能。
如下为转向PID函数。