浴室偷拍美女洗澡456在线_欧洲美女亚洲激情_人妻少妇精品久久_亚洲欧美在线精品_337p粉嫩大胆噜噜噜鲁_日本中文字幕在线不卡_国产视频在线视频_成年人视频大全_黄色www网站_中文字幕丰满乱码

當前位置: 首頁 > 資訊中心

關于單片機PID的算法實現

發布時間:2024-01-25  瀏覽量:1525

       用整型變量來實現PID算法,由于是用整型數來做的,所以也不是很精確,但是對于很多的使用場合,這個精度也夠了,關于系數和采樣電壓全部是放大10倍處理的.所以精度不是很高. 但是也不是那么低,大部分的場合都夠了. 實在覺得精度不夠, 可以再放大10倍或者100倍處理,但是要注意不超出整個數據類型的范圍就可以了.本程序包括PID計算和輸出兩部分.當偏差>10度全速加熱,偏差在10度以內為PID計算輸出.  

 具體的參考代碼參見下面:

*/
//================================================================
// pid.H
// Operation about PID algorithm procedure
// C51編譯器  Keil 7.08
//================================================================
// 作者:zhoufeng
// Date :2007-08-06
// All rights reserved.
//================================================================

#include
#include
typedef   unsigned   char        uint8;      
typedef   unsigned   int         uint16; 
typedef   unsigned   long int    uint32;
/**********函數聲明************/
void     PIDOutput ();
void     PIDOperation ();
/*****************************/
typedef struct PIDValue
{
uint32      Ek_Uint32[3];                  //差值保存,給定和反饋的差值
uint8       EkFlag_Uint8[3];              //符號,1則對應的為負數,0為對應的為正數    
uint8       KP_Uint8;
uint8       KI_Uint8;
uint8       KD_Uint8;
uint16      Uk_Uint16;                 //上一時刻的控制電壓
uint16      RK_Uint16;                //設定值
uint16      CK_Uint16;               //實際值
}PIDValueStr;
PIDValueStr  PID;
uint8        out ;                 // 加熱輸出
uint8        count;               // 輸出時間單位計數器
/*********************************
PID = Uk   KP*[E(k)-E(k-1)] KI*E(k) KD*[E(k)-2E(k-1) E(k-2)];(增量型PID算式)
函數入口: RK(設定值),CK(實際值),KP,KI,KD
函數出口: U(K)
//PID運算函數
********************************/
void     PIDOperation (void) 
{
uint32       Temp[3];                                        //中間臨時變量
uint32       PostSum;                                       //正數和
uint32       NegSum;                                       //負數和
Temp[0] = 0;
Temp[1] = 0;
Temp[2] = 0;
PostSum = 0;
NegSum  = 0;
if( PID.RK_Uint16 > PID.RK_Uint16 )                    //設定值大于實際值否?
{
  if( PID.RK_Uint16 - PID.RK_Uint16 >10 )            //偏差大于10否?
  {
   PID.Uk_Uint16 = 100;    }                        //偏差大于10為上限幅值輸出(全速加熱)
  else
  {
   Temp[0] = PID.RK_Uint16 - PID.CK_Uint16;       //偏差<=10,計算E(k)
   PID.EkFlag_Uint8[1]=0;                        //E(k)為正數
   //數值移位
      PID.Ek_Uint32[2] = PID.Ek_Uint32[1];
      PID.Ek_Uint32[1] = PID.Ek_Uint32[0];
      PID.Ek_Uint32[0] = Temp[0];
/****************************************/
      if( PID.Ek_Uint32[0] >PID.Ek_Uint32[1] )                            //E(k)>E(k-1)否?
      {
  Temp[0]=PID.Ek_Uint32[0] - PID.Ek_Uint32[1];           //E(k)>E(k-1)
        PID.EkFlag_Uint8[0]=0;  }                                       //E(k)-E(k-1)為正數
   else
{
  Temp[0]=PID.Ek_Uint32[0] - PID.Ek_Uint32[1];        //E(k)<E(k-1)
        PID.EkFlag_Uint8[0]=1;  }                                               //E(k)-E(k-1)為負數
/****************************************/
      Temp[2]=PID.Ek_Uint32[1]*2 ;                                             // 2E(k-1)
if( (PID.Ek_Uint32[0]  PID.Ek_Uint32[2])>Temp[2] )            //E(k-2) E(k)>2E(k-1)否?
      {
  Temp[2]=(PID.Ek_Uint32[0]  PID.Ek_Uint32[2])-Temp[2];     //E(k-2) E(k)>2E(k-1)
        PID.EkFlag_Uint8[2]=0;  }                                          //E(k-2) E(k)-2E(k-1)為正數
   else
{
  Temp[2]=Temp[2]-(PID.Ek_Uint32[0]  PID.Ek_Uint32[2]);  //E(k-2) E(k)<2E(k-1)
        PID.EkFlag_Uint8[2]=1;  }                                       //E(k-2) E(k)-2E(k-1)為負數
/****************************************/      
      Temp[0] = (uint32)PID.KP_Uint8 * Temp[0];                        // KP*[E(k)-E(k-1)]
      Temp[1] = (uint32)PID.KI_Uint8 * PID.Ek_Uint32[0];              // KI*E(k)
      Temp[2] = (uint32)PID.KD_Uint8 * Temp[2];                      // KD*[E(k-2) E(k)-2E(k-1)]

/*以下部分代碼是講所有的正數項疊加,負數項疊加*/    
/**********KP*[E(k)-E(k-1)]**********/
if(PID.EkFlag_Uint8[0]==0)
  PostSum  = Temp[0];                                    //正數和
else                                             
  NegSum  = Temp[0];                                    //負數和
/********* KI*E(k)****************/
if(PID.EkFlag_Uint8[1]==0)     
  PostSum  = Temp[1];                                 //正數和
else
   ;                                                 //空操作,E(K)>0
/****KD*[E(k-2) E(k)-2E(k-1)]****/                          
if(PID.EkFlag_Uint8[2]==0)
PostSum  = Temp[2];                               //正數和
else
  NegSum  = Temp[2];                             //負數和
/***************U(K)***************/                            
PostSum  = (uint32)PID.Uk_Uint16;   
       
if(PostSum > NegSum )                         // 是否控制量為正數
{ Temp[0] = PostSum - NegSum;
if( Temp[0] < 100 )                         //小于上限幅值則為計算值輸出
PID.Uk_Uint16 = (uint16)Temp[0];
else
  PID.Uk_Uint16 = 100;                     //否則為上限幅值輸出
}
else                                     //控制量輸出為負數,則輸出0(下限幅值輸出)
   PID.Uk_Uint16 = 0;
}
}
else
{ PID.Uk_Uint16 = 0;  }

}

/*********************************
函數入口: U(K)
函數出口: out(加熱輸出)
//PID運算植輸出函數
********************************/
void     PIDOutput (void) 
{
static  int i;
i=PID.Uk_Uint16;
if(i==0)
  out=1;
else out=0;
if((count  )==5)//如定時中斷為40MS,40MS*5=0.2S(輸出時間單位),加熱周期20S(100等份)
{              //每20S PID運算一次
  count=0;
  i--;
}
}


免責聲明:本站部分圖片和文字來源于網絡收集整理,僅供學習交流,版權歸原作者所有,并不代表我站觀點。本站將不承擔任何法律責任,如果有侵犯到您的權利,請及時聯系我們刪除。

浴室偷拍美女洗澡456在线_欧洲美女亚洲激情_人妻少妇精品久久_亚洲欧美在线精品_337p粉嫩大胆噜噜噜鲁_日本中文字幕在线不卡_国产视频在线视频_成年人视频大全_黄色www网站_中文字幕丰满乱码
久久精品一区二| 中文字幕色呦呦| 国产精品免费看久久久无码| 欧美在线a视频| 少妇久久久久久被弄到高潮| 污污视频网站免费观看| 青青在线视频免费| 亚洲色图38p| 日本阿v视频在线观看| 久久精品无码中文字幕| 孩娇小videos精品| 911福利视频| 午夜啪啪福利视频| av免费看网址| 国产免费成人在线| 中文字幕国内自拍| 欧美一级特黄aaa| 免费裸体美女网站| 黄色一级视频在线播放| 日韩手机在线观看视频| 国产va亚洲va在线va| 中文字幕第66页| 污网站免费在线| av免费在线播放网站| 欧美视频免费看欧美视频| 成人免费看片视频在线观看| 亚洲免费在线播放视频| 污污网站免费看| 日本爱爱免费视频| 超碰影院在线观看| 日本熟妇人妻xxxxx| 国产精品久久久久久久乖乖| 无码人妻精品一区二区三区99v| 女人高潮一级片| 五月婷婷丁香色| 亚洲老女人av| 亚洲欧美另类动漫| 日韩毛片在线免费看| av观看免费在线| 天天摸天天碰天天添| 国模吧无码一区二区三区| 91网址在线观看精品| 九九九九九伊人| 成年人三级黄色片| 可以看毛片的网址| 欧美精品久久久久久久自慰| 真实国产乱子伦对白视频| 日本高清久久久| 伊人网在线综合| 国产精品久久久久久9999| 97超碰人人爽| 欧美在线a视频| 男人的天堂成人| 亚洲色婷婷久久精品av蜜桃| 日韩中文字幕在线不卡| 国产玉足脚交久久欧美| 日韩少妇内射免费播放| 欧美xxxxx在线视频| 中文久久久久久| 免费一区二区三区在线观看| 精品久久久99| 国产日韩第一页| 免费视频爱爱太爽了| 免费在线观看亚洲视频| 红桃一区二区三区| 欧美人成在线观看| 欧美成人黑人猛交| 97超碰成人在线| 91制片厂免费观看| 国产 日韩 欧美在线| 欧美牲交a欧美牲交aⅴ免费真| 三级a在线观看| 国产免费中文字幕| 欧美狂野激情性xxxx在线观| 国产免费观看高清视频| 午夜精品在线免费观看| www.污网站| 久久香蕉视频网站| 国产精品-区区久久久狼| 亚洲综合婷婷久久| 国产免费裸体视频| 欧美视频免费播放| 亚洲第一精品区| 久久久久久久久久一区| 亚洲精品天堂成人片av在线播放| 奇米影视亚洲色图| 91高清国产视频| 男人添女荫道口女人有什么感觉| 久久人妻精品白浆国产| 亚洲国产精品影视| 日韩精品 欧美| www.com黄色片| 99在线免费视频观看| 在线免费av播放| 黄色a级片免费看| 男操女免费网站| 日韩欧美精品免费| www.超碰97.com| 国产精品国产亚洲精品看不卡| jizz18女人| 999在线观看视频| 三级黄色片免费看| 欧美视频第一区| 欧美日韩一级在线 | 男女无套免费视频网站动漫| 吴梦梦av在线| 日本999视频| 成人午夜视频免费观看| 一区二区三区免费播放| 天天夜碰日日摸日日澡性色av| 视频在线观看免费高清| 国产精品无码人妻一区二区在线| 在线视频一二区| 国产日韩一区二区在线观看| 影音先锋成人资源网站| 少妇网站在线观看| 一女被多男玩喷潮视频| 日本a在线天堂| 黄色片免费网址| 日本美女高潮视频| 欧美一级在线看| 国产日韩欧美大片| 亚洲精品第三页| 久久人妻精品白浆国产| 日韩xxxx视频| 香蕉视频免费版| 欧美午夜精品理论片| 欧美午夜性生活| 色综合久久久久无码专区| 日韩精品免费一区| www.偷拍.com| 中文字幕久久av| 精品少妇无遮挡毛片| 国产91美女视频| 少妇人妻无码专区视频| 精品人妻人人做人人爽| 日本xxx免费| 香蕉视频色在线观看| 亚洲欧美日韩精品一区| 另类小说色综合| 男人舔女人下面高潮视频| 国产69精品久久久久久久| 免费网站在线观看视频| 国产一二三四五| 欧美与动交zoz0z| 7777在线视频| 亚洲欧美一二三| 大地资源第二页在线观看高清版| www.污污视频| 国产三级精品三级在线| www.cao超碰| 一级做a爱视频| 亚洲高清av一区二区三区| 日日干日日操日日射| 极品粉嫩美女露脸啪啪| 天天爽夜夜爽一区二区三区| 蜜臀av免费观看| 福利片一区二区三区| 激情图片中文字幕| 婷婷中文字幕在线观看| 亚洲涩涩在线观看| 偷拍盗摄高潮叫床对白清晰| 最近中文字幕免费mv| 青草全福视在线| 影音先锋男人的网站| 强开小嫩苞一区二区三区网站 | www.av中文字幕| 自拍日韩亚洲一区在线| 凹凸国产熟女精品视频| 亚洲精品乱码久久久久久自慰 | 日本免费a视频| 成年人午夜视频在线观看| 日本少妇高潮喷水视频| 日本熟妇人妻xxxxx| 亚洲一级片网站| 日韩精品aaa| av日韩在线看| 久久美女福利视频| 亚洲 激情 在线| 青青草原国产免费| 久久99久久99精品| 精品视频一区二区在线| 欧美特级aaa| 成年在线观看视频| 97国产精东麻豆人妻电影 | 热这里只有精品| 真实国产乱子伦对白视频| 成年人观看网站| 2025韩国理伦片在线观看| 欧美 另类 交| 日韩伦理在线免费观看| 成人免费毛片播放| 大地资源第二页在线观看高清版| 久艹视频在线免费观看| 欧美性猛交xxx乱久交| 99热都是精品| 乱子伦视频在线看| 国产欧美综合一区| 国产在线观看福利| 国产精品中文久久久久久|