资源简介
在PID算法中,我们如果只是使用单个闭环PID控制会出现很多的不足。例如我们在单独使用位置环时,在电机未能达到预设位置时,电机的运行状态是100%PWM满偏运行的,这样在我们实际运用时,如果我们使用的电机功率很高就会造成速度过快的现象。所以在电机的控制过程中,最好是多环控制。
在设计过程中,我是不断地尝试得出的结果。最终得出将位置环和速度环的输出叠加的方法,在位置没有到达预设位置时虽然位置环的输出会是满偏,但满偏会让速度出现偏差,速度环就会输出负值反过来抑制总的输出,这样我们就可以在实现位置环的同时也有了速度环的控制。但注意的是在快达到预设位置时需要将速度环关闭。
代码片段和文件信息
#include “pid.h“
PID pid; //存放PID算法所需要的数据
PID1 pid1;
void PID_Init()
{
pid.Sv=03000; //用户设定值
pid.Pv=00.0; //检测值
pid.OUT0 =00; //PID常数
pid.Ek=0.0; //当前误差值
pid.Ek_1=0.0; //上一个误差值
pid.Ek_2=0.0; //上上一个误差值
pid.Kp=36; //比例常数
pid.Ki=0.25; //积分常数
pid.Kd=135; //微分常数
pid.uplimit=6000; //上限值
pid.lowlimit=-6000;//下限值
}
void PID1_Init()
{
pid1.Sv=1400.525; //用户设定值
pid1.Pv=00.0; //检测值
pid1.OUT0 =0; //PID常数
pid1.Ek=0.0; //当前误差值
pid1.Ek_1=0.0; //上一个误差值
pid1.Ek_2=0.0; //上上一个误差值
pid1.Kp=6.5; //比例常数
pid1.Ki=0.36; //积分常数
pid1.Kd=0.00005; //微分常数
pid1.uplimit=6000; //上限值
pid1.lowlimit=-6000;//下限值
pid1.PIDOUT=-6000;
}
float Set_Pwm(float moto1)
{
float OUT;
if(moto1>0) AIN2=0 AIN1=1;
else AIN2=1 AIN1=0;
OUT=myabs(moto1);
return OUT;
}
//绝对值函数
float myabs(float a)
{
int temp;
if(a<0) temp=-a;
else temp=a;
return temp;
}
int PID1_output ()
{
float PIDOUT;
pid1.Ek=pid1.Sv-pid1.Pv;
PIDOUT=pid1.Kp*(pid1.Ek-pid1.Ek_1)+pid1.Ki*pid1.Ek+pid1.Kd*(pid1.Ek_2*pid1.Ek_1+pid1.Ek_2)+pid1.OUT0;
pid1.Ek_2=pid1.Ek_1;
pid1.Ek_1=pid1.Ek;
pid1.PIDOUT+=PIDOUT;
pid1.PIDOUT=(pid1.PIDOUTpid1.uplimit) ? pid1.uplimit : pid1.PIDOUT;
return pid1.PIDOUT;
}
int PID_output ()
{
float PIDOUT;
pid.Ek=pid.Sv-pid.Pv;
PIDOUT=pid.Kp*pid.Ek+pid.Ki*(pid.Ek+pid.Ek_1+pid.Ek_2)+pid.Kd*(pid.Ek-pid.Ek_1)+pid.OUT0;
pid.Ek_2=pid.Ek_1;
pid.Ek_1=pid.Ek;
pid.PIDOUT=PIDOUT;
pid.PIDOUT=(pid.PIDOUTpid.uplimit) ? pid.uplimit : pid.PIDOUT;
return pid.PIDOUT;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-07-21 15:14 PID\
文件 1845 2019-07-21 15:14 PID\pid.c
文件 818 2019-07-21 14:28 PID\pid.h
- 上一篇:ALM12.5管理员手册
- 下一篇:电机伺服控制和PID算法
相关资源
- RapidIO 2.2 Specification
- RapidIO_Rev_2.2_Specification
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- BLDC电机PID算法
- 基于双闭环模糊PID控制器的开关电源
- pid 模拟测试软件
- 基于RBF神经网络在线辨识的永磁同步
-
Lipase-catalyzed synthesis and the lipid me
- 中微子双β衰变的CUPID-Mo实验:性能
- 智能车模糊控制
- LabVIEW实现Fuzzy_PID的补充资源
- 四轴飞控源码 PID参考apm 采用了dmp自带
- 平衡小车之家全套资料
- 基于ARM的高精度PID温度控制器_张军
- 基于STM32F07单片机风洞程序
- 基于51单片机的直流电机PID控制
- 基于STM32的智能服务型多功能多足机器
- 基于STM32PID电机控制
- STM32直流有刷电机PID控制
- STM32F407. 基于PID速度环的步进电机速度
- 基于stm32F103的两轮自平衡小车
- 模糊PID算法控制
- 倒立摆调试,使用步进电机,完全成
- STM32F103 模糊自整定位置式PID控制电机
- 基于模糊控制与神经网络的智能PID温
- USB的驱动vid—1f3a—pid—efe8驱动
- 西门子博途编的PID温度模拟量控制
- 基于PID控制方式的4A开关电源-multisi
- 无人机飞行PID控制及智能PID控制技术
评论
共有 条评论