⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pid1.c

📁 用于单片机的PID调节子程序,经过多次改进,非常实用简单,已经用于多个产品上,非常稳定可靠
💻 C
字号:
//****************************************************************************
//文件名:PID.c
//描述: 有关温度控制的子函数
//版本:1.1 2006-10-23
//****************************************************************************

//头文件引用区
#include "math.h"
//****************************************************************************
//模块名:PID
//编写者:lk
//描述:  PID调节子程序。
//版本:  1.1
//修改:  2006年10月24日
//入口:  16位温度偏差
//出口:  16位功率调节输出
//根据实际对象需要调节的是f0Kp、f0I、f0D三个参数
//****************************************************************************
int PID(int Ek0)
  {
    static idata float f0Ek1;                  // 上次偏差
    static idata float f0Ek2;                  // 上上次偏差
    static idata float f0Kp = 2800.0;          // 比例系数
    static idata float f0I  = 0.0005;          // 积分系数
    static idata float f0D  = 0.05;            // 微分系数
    static idata float f0Uk;                   // 调整输出
    static idata float f0D1Ek;                 // 偏差一阶
    static idata float f0D2Ek;                 // 偏差二阶
    static idata float f0DUk;                  // 输出增量

    float f0Ek;                                // 当前偏差
    float fq0;
    unsigned int iOut;

    f0Ek = Ek0/100;
    f0D1Ek  = f0Ek-f0Ek1;                      // 计算一阶偏差        
    f0D2Ek = f0Ek-2*f0Ek1+f0Ek2;               // 计算二阶偏差
    f0DUk  = f0D1Ek+ f0D*f0D2Ek;               // 计算增量PID输出(比例和微分)
    if(f0Ek<=2) f0DUk += f0I*f0Ek;             // 计算增量PID输出(积分)
    f0DUk  *= f0Kp;                            // 计算增量PID输出(比例系数)
    f0Uk  += f0DUk;                            // 计算调整输出值(位置)
    if(f0Uk < -10 ) f0Uk = -10;
    f0Ek2  = f0Ek1;                            // 保存上次偏差
    f0Ek1  = f0Ek;                             // 保存当前偏差
    if(f0Uk>0) fq0 = sqrt(f0Uk);
    else fq0 = 0;
    if(fq0 > 65536 )fq0 = 65535;
    if(fq0 >0) iOut = f0Uk;
    else iOut = 0;
    return(iOut);
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -