當前位置:首頁 > 公眾號精選 > 大魚機器人
[導讀]1 ?SPWM波調(diào)制技術(shù) ??逆變電路的控制方式主要是采用SPWM(正弦脈寬調(diào)制技術(shù)),IR2104控制開關(guān)管的通斷來實現(xiàn)正弦調(diào)制,SPWM的基本思路是將一個正弦波按等寬間距分成N等份,對于每一個波形以一個等面積的脈沖來對應,使脈沖的中點與相應正弦波部分的中點重合,

1  SPWM波調(diào)制技術(shù)

??逆變電路的控制方式主要是采用SPWM(正弦脈寬調(diào)制技術(shù)),IR2104控制開關(guān)管的通斷來實現(xiàn)正弦調(diào)制,SPWM的基本思路是將一個正弦波按等寬間距分成N等份,對于每一個波形以一個等面積的脈沖來對應,使脈沖的中點與相應正弦波部分的中點重合,如下圖所示,由于此脈沖序列的面積分布滿足正弦規(guī)率,根據(jù)面積等效原理,將這個脈沖序列輸出至負載時,將使負載得到相當接近正弦的輸出電壓和電流。

SPWM示意圖

??由于采用該方式輸出的電壓波形很接近正弦波,所以電壓中的諧波成分較少,同時也可以提高功率因數(shù)。通過改變SPWM脈沖的寬度可以改變輸出電壓的幅值,調(diào)節(jié)電路的調(diào)制周期則可以改變輸出電壓的頻率,方便對負載進行控制。

1.1  單極性正弦脈寬調(diào)制

??單極性正弦脈寬調(diào)制是以一個寬度正弦規(guī)律變化的正弦脈沖序列對應交流輸出波形的正半周,再以一個寬度按正弦規(guī)率變換的負脈沖序列對應交流輸出波形的負半周,這兩個脈沖序列交替作用,控制開關(guān)器件產(chǎn)生近似于正弦波的輸出電壓波形。
??正弦脈寬調(diào)制的基本方法是將正弦波性的調(diào)制波與三角波形的載波進行比較,通過比較正弦波形各點的瞬時值確定該點對應的脈沖寬度。單極性正弦脈寬調(diào)制使用的三角波是單極性的,在正弦調(diào)制波為正半周時三角載波是正極性的;在正弦波為負半周時三角波載波為負極性。如下圖所示。

單相橋式逆變電路

單相橋式逆變電路

1.2  雙極性正弦脈寬調(diào)制

??雙極性正弦脈寬調(diào)制是以一個寬度按正弦規(guī)率變化的正負雙向脈沖序列對應交流輸出波形的整個周期,通過正向脈沖與負向脈沖寬度的差產(chǎn)生出按正弦規(guī)率變換的正半周波和負半周波。
??雙極性正弦脈寬調(diào)制使用的三角波是雙極性的,其波形的形式如下圖,通過正弦調(diào)制波與三角波比較,當正弦調(diào)制波值大于三角波時,輸出正脈沖;而當正弦調(diào)制波的值小于三角載波時,輸出負脈沖。如此得到的脈沖序列是正負交替的雙向脈沖序列。

雙極性正弦脈寬調(diào)制

1.3  三相正弦脈寬調(diào)制

??三相正弦脈寬調(diào)制可以使用三個相角彼此相差120°的單相調(diào)制電路來合成,但是這樣會使調(diào)制電路結(jié)構(gòu)比較復雜。較簡單的方法是采用一個雙極性的三角載波對三相正弦調(diào)制波進行調(diào)制,其調(diào)制的波形如下圖。
??調(diào)制過程中,雙極性三角載波為三個正弦調(diào)制波共用,分別進行比較后獲取脈寬調(diào)制信號,方式與雙極性正弦脈寬調(diào)制方法相同。從而得到三個雙向的脈沖序列,分別對應A、B、C三相,使用此三個脈沖序列控制逆變電路的A、B、C三相開關(guān)元件,可以將直流電壓逆變?yōu)檎也ǖ娜嘟涣鬏敵鲭妷骸?br>

三相正弦脈寬調(diào)制電路

三相正弦脈寬調(diào)制信號的產(chǎn)生

?? 三相脈寬調(diào)制波的三角載波只能是雙極性的,因為單極性三角載波需要根據(jù)正弦調(diào)制波的正、負半周更換載波的極性。采用雙極性正弦脈寬調(diào)制,H橋上同一相的上、下兩個橋臂導通與截止都是互補的,為防止上下兩個橋臂直通而造成的短路,需要在給一個橋臂施加關(guān)斷信號后延遲一段時間,從而在波形中引入了死區(qū)時間,死區(qū)將會給輸出的SPWM波形帶來高次諧波。

1.4  SPWM控制信號的生成

??早期的SPWM采用模擬控制方式來實現(xiàn),通過信號發(fā)生器產(chǎn)生所需的信號,由比較器進行信號之間的比較,隨著數(shù)字技術(shù)和微處理器在SPWM逆變技術(shù)中的應用,采用一定算法產(chǎn)生SPWM的數(shù)字控制方式越來越廣泛。

1.4.1  模擬控制方式

??波形比較法,其基本的方法是由正弦信號發(fā)生器件產(chǎn)生正弦調(diào)制波,由三角波信號發(fā)發(fā)生器產(chǎn)生的三角載波,將正弦調(diào)制波與三角載波比較,通過比較器的判斷而產(chǎn)生出對應的脈沖信號序列,對逆變電路進行控制從而得到所需的交流電壓。

1.4.2  數(shù)字控制方式

(1)等效面積法
??其原理就是按面積等效原理構(gòu)成與正弦波等效的一系列等幅但寬度按正弦規(guī)律變化的矩形脈沖。等效面積法適用于單極性控制,算法中計算的是正弦波形到橫軸間的面積,這與模擬控制方式中的單極性正弦脈沖調(diào)制的方式一致。
(2)自然采樣法與規(guī)則采樣法
??自然采樣法在算法上仿真模擬控制方式的雙極性正弦脈沖調(diào)制,通過計算正弦調(diào)制波與三角載波的交點位置,確定調(diào)制的脈沖寬度。而規(guī)則采樣法是對自然采樣法的簡化,其幾何關(guān)系如下圖。


??規(guī)則采樣法適用于雙極性控制,因為算法中采用的三角載波是雙極性。等效面積法和規(guī)則采樣法都是數(shù)字控制的算法,可以由微處理器實時計算SPWM脈沖的寬度和位置,實現(xiàn)對逆變電路的控制,也可以事先計算好每個脈沖中心位置和脈沖寬度存入微處理器中,以查表的方式實現(xiàn)對逆變電路的控制。
??此外除了使用微處理器生成SPWM以外, 目前還有專門產(chǎn)生SPWM波形的大規(guī)模集成芯片,有些微處理器也繼承有SPWM波形發(fā)生器,如STM32微處理器,其內(nèi)部有三相互補SPWM波形發(fā)生器,可以直接輸出6路SPWM波形信號。

1.5.SPWM軟件生成

利用單片機輸出PWM波,然后讓占空比正弦規(guī)律變化。
實現(xiàn)步驟可以簡單分為三步,以stm32為例:
(1)生成載波。比如要生成一個10KHZ的三角波,將計數(shù)器設(shè)置加減計數(shù)、周期設(shè)為1/10K就ok啦。這樣生成的三角波的幅值是多少呀,3.3V?其實在單片機里面都是數(shù)字信號,三角波最高點的時候可以用一個計數(shù)值來表示,比如8400,最低點是0。不用管他的電壓是多少。
(2)生成正弦波。這一步用軟件生成一個正弦表即可。比如將正弦波取200個點,即將一個正弦分割成200份,每個點代表一個幅值。用離散的數(shù)字量表達正弦模擬量。
(3)將正弦波和三角波進行比較。
a.什么時候進行比較。設(shè)置計數(shù)值達到比較值產(chǎn)生動作。
b.比較完之后,需要改變比較值,用于下一個周期進行比較(比較值可以理解為占空比),比較值查正弦表獲得,這樣就生成了占空比正弦規(guī)律變化的SPWM
C.調(diào)制度m。m=正弦表最大值/三角波最大計數(shù)值。如正弦表最大值4200,三角波最大計數(shù)值8400,m=4200/8400=0.5,此時spwm最大占空比為50%,設(shè)置m=1,spwm最大占空比為100%。

    例如我們要生成一個開環(huán)的三相spwm。單相逆變需生成兩組相差180度的spwm,三相即生成三組兩兩相差120度的spwm,且每組的spwm都是互補的。將生成的三組spwm分別加到1、2、3組橋臂,每組spwm互補防止了同一橋臂上下管同時導通會引起短路。

int const talab[250]=
{
 100 , 102 , 108 , 116 , 126 , 140 , 154 , 172 , 194 , 216 ,
 242 , 270 , 300 , 334 , 370 , 408 , 448 , 490 , 536 , 582 ,
 632 , 684 , 738 , 794 , 854 , 914 , 976 ,1040 ,1108 ,1176 ,
1246 ,1320 ,1394 ,1470 ,1548 ,1626 ,1708 ,1790 ,1874 ,1960 ,
2046 ,2136 ,2224 ,2316 ,2408 ,2502 ,2596 ,2690 ,2786 ,2884 ,
2982 ,3080 ,3180 ,3280 ,3382 ,3482 ,3584 ,3686 ,3788 ,3892 ,
3994 ,4096 ,4200 ,4304 ,4406 ,4508 ,4612 ,4714 ,4816 ,4918 ,
5018 ,5120 ,5220 ,5320 ,5418 ,5516 ,5614 ,5710 ,5804 ,5898 ,
5992 ,6084 ,6176 ,6264 ,6354 ,6440 ,6526 ,6610 ,6692 ,6774 ,
6852 ,6930 ,7006 ,7080 ,7154 ,7224 ,7292 ,7360 ,7424 ,7486 ,
7546 ,7606 ,7662 ,7716 ,7768 ,7818 ,7864 ,7910 ,7952 ,7992 ,
8030 ,8066 ,8100 ,8130 ,8158 ,8184 ,8206 ,8228 ,8246 ,8260 ,
8274 ,8284 ,8292 ,8298 ,8300 ,8300 ,8298 ,8292 ,8284 ,8274 ,
8260 ,8246 ,8228 ,8206 ,8184 ,8158 ,8130 ,8100 ,8066 ,8030 ,
7992 ,7952 ,7910 ,7864 ,7818 ,7768 ,7716 ,7662 ,7606 ,7546 ,
7486 ,7424 ,7360 ,7292 ,7224 ,7154 ,7080 ,7006 ,6930 ,6852 ,
6774 ,6692 ,6610 ,6526 ,6440 ,6354 ,6264 ,6176 ,6084 ,5992 ,
5898 ,5804 ,5710 ,5614 ,5516 ,5418 ,5320 ,5220 ,5120 ,5018 ,
4918 ,4816 ,4714 ,4612 ,4508 ,4406 ,4304 ,4200 ,4096 ,3994 ,
3892 ,3788 ,3686 ,3584 ,3482 ,3382 ,3280 ,3180 ,3080 ,2982 ,
2884 ,2786 ,2690 ,2596 ,2502 ,2408 ,2316 ,2224 ,2136 ,2046 ,
1960 ,1874 ,1790 ,1708 ,1626 ,1548 ,1470 ,1394 ,1320 ,1246 ,
1176 ,1108 ,1040 , 976 , 914 , 854 , 794 , 738 , 684 , 632 ,
 582 , 536 , 490 , 448 , 408 , 370 , 334 , 300 , 270 , 242 ,
 216 , 194 , 172 , 154 , 140 , 126 , 116 , 108 , 102 , 100 
};    

uint16_t Counter_sine1 = 0//A相
uint16_t Counter_sine2 = 83//滯后A相120度
uint16_t Counter_sine3 = 166;//超前A相120度
/*TIM1GPIO初始化  
CH1--A8   CH2--A9   CH3--A10
CH1N-B13  CH2N-B14  CH3N-B15 
*/

void TIM1_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8 | GPIO_Pin_9| GPIO_Pin_10;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       //復用推挽輸出              
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13| GPIO_Pin_14 | GPIO_Pin_15;  
  GPIO_Init(GPIOB, &GPIO_InitStructure);                                                  
}
#define CKTIM       ((u32)72000000uL)  //主頻
#define PWM_PRSC    ((u8)0)            //TIM1分頻系數(shù)
#define PWM_FREQ    ((u16) 10000)      //PWM頻率(Hz)
#define PWM_PERIOD  ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))))
#define MODULAT     (float)0.7           //調(diào)制度
void TIM1_Mode_Config(void)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;
    TIM_BDTRInitTypeDef TIM1_BDTRInitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    TIM_TimeBaseStructure.TIM_Period = PWM_PERIOD; //計數(shù)周期
    TIM_TimeBaseStructure.TIM_Prescaler = PWM_PRSC;//分頻系數(shù)
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2;       
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1; 
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //配置為PWM模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  //使能CHx的PWM輸出
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;//互補輸出使能,使能CHxN的PWM輸出
    TIM_OCInitStructure.TIM_Pulse = 0;                          
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;   
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;  
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set; 
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);//配置CH1
TIM_OCInitStructure.TIM_Pulse = 0;                         
    TIM_OC2Init(TIM1, &TIM_OCInitStructure); //配置CH2
    TIM_OCInitStructure.TIM_Pulse = 0;                         
    TIM_OC3Init(TIM1, &TIM_OCInitStructure);//配置CH3

    //死區(qū)時間
    TIM1_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; 
    TIM1_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
    TIM1_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;   
    TIM1_BDTRInitStructure.TIM_DeadTime = 360//設(shè)置死區(qū)時間
    TIM1_BDTRInitStructure.TIM_Break = TIM_Break_Disable;        
    TIM1_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;         
    TIM1_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Disable;  
    TIM_BDTRConfig(TIM1, &TIM1_BDTRInitStructure);

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //4個搶先級、4個子優(yōu)先級    
    NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    TIM_ITConfig(TIM1,TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3,ENABLE);  //使能中斷

    TIM_CtrlPWMOutputs(TIM1, ENABLE);  //PWM輸出使能    
    TIM_Cmd(TIM1, ENABLE); //使能TIM1
}
void TIM1_PWM_Init(void)
{
    TIM1_GPIO_Config();
    TIM1_Mode_Config();
}

//定時器1中斷服務函數(shù)
void TIM1_CC_IRQHandler(void) 
{    
    if(Counter_sine1>=250)  { Counter_sine1 = 0; }
    if(Counter_sine2>=250)  { Counter_sine2 = 0; }
    if(Counter_sine3>=250)  { Counter_sine3 = 0; }
    if (TIM_GetITStatus(TIM1, TIM_IT_CC1)!=RESET)
    {
        TIM_SetCompare1(TIM1,(uint32_t)(talab[Counter_sine1])*MODULAT); //A相    
        Counter_sine1++;
        TIM_ClearITPendingBit(TIM1 , TIM_IT_CC1);
     }
    if (TIM_GetITStatus(TIM1, TIM_IT_CC2) !=RESET)
    {
        TIM_SetCompare2(TIM1,((uint32_t)talab[Counter_sine2])*MODULAT); //B相
        Counter_sine2++;
        TIM_ClearITPendingBit(TIM1 , TIM_IT_CC2);   
    }
    if (TIM_GetITStatus(TIM1, TIM_IT_CC3) !=RESET)
    {
        TIM_SetCompare3(TIM1,(uint32_t)(talab[Counter_sine3])*MODULAT); //C相
        Counter_sine3++;
        TIM_ClearITPendingBit(TIM1 , TIM_IT_CC3);   
    }
}

        TIM1設(shè)置為中央計數(shù)模式,開啟互補通道,設(shè)置死區(qū)時間,死區(qū)時間是多少個時鐘計數(shù)周期,比如TIM1計數(shù)周期是72M,設(shè)置為72就是1000ns。spwm頻率設(shè)置為10k,然后TIM1每個通道的比較值達到時更新比較值。調(diào)制度m范圍為0~1,設(shè)為0.7。正弦調(diào)制波的頻率是自己設(shè)置的,方法是f=載波頻率/表中點數(shù),這里設(shè)置的是載波頻率10K,取250個點得到的正弦頻率就是40HZ,改變載波頻率為50*250就得到了50hz的正弦波輸出。正弦表可以用取點工具。

2  PID算法

??在連續(xù)時間控制系統(tǒng)中,PID控制器應用非常廣泛,其設(shè)計技術(shù)成熟,長期以來形成了典型的結(jié)構(gòu),參數(shù)整定方便,結(jié)構(gòu)更改靈活。由于計算機程序的靈活性,數(shù)字PID控制比連續(xù)PID控制更為優(yōu)越。

2.1  PID控制系統(tǒng)簡介

??連續(xù)時間PID控制系統(tǒng)如下圖所示,D(s)完成PID控制規(guī)律,稱為PID控制器。PID控制器是一種線性控制器,用輸出量y(t)和給定量r(t)之間的誤差的時間函數(shù)e(t)=r(t)-y(t)的比例、積分和微分的線性組合構(gòu)成控制量u(t),稱為比例、積分、微分控制,簡稱PID控制。

連續(xù)時間PID控制系統(tǒng)

??PID控制組合了比例控制、積分控制和微分控制這三種基本控制規(guī)律,通過改變調(diào)節(jié)器參數(shù)來實現(xiàn)控制,其基本輸入輸出關(guān)系為:

2.2  PID參數(shù)控制效果分析

??PID控制的三基本參數(shù)為KP、KI、KD,分別對應比例,積分,微分三個模,經(jīng)實驗測試,可總結(jié)出這三項參數(shù)的實際控制作用為:
??比例調(diào)節(jié)參數(shù)(KP):按比例反映系統(tǒng)的偏差,系統(tǒng)一旦出現(xiàn)偏差,比例調(diào)節(jié)立即進行。比例調(diào)節(jié)是主要的控制部分,但過大的比例會使系統(tǒng)的穩(wěn)定性下降。增大KP,系統(tǒng)的反應變靈敏、速度加快、穩(wěn)態(tài)誤差減小,但振蕩次數(shù)也會加多、調(diào)節(jié)時間加長。
??積分調(diào)節(jié)參數(shù)(KI):消除系統(tǒng)靜態(tài)(穩(wěn)態(tài))誤差 ,提高系統(tǒng)的控制精度。積分調(diào)節(jié)會使系統(tǒng)的穩(wěn)定性下降,動態(tài)響應變慢,超調(diào)加大。積分控制一般不單獨作用,而是與P或者PD結(jié)合作用。
??微分調(diào)節(jié)參數(shù)(KD):反映系統(tǒng)偏差信號的變化率,可以預見偏差的變化趨勢,產(chǎn)生超前控制作用,使偏差在未形成前已被消除。因此,微分控制可以提高系統(tǒng)的動態(tài)跟蹤性能,減小超調(diào)量,但對噪聲干擾有放大作用,過強的微分調(diào)節(jié)會使系統(tǒng)劇烈震蕩,對抗干擾不利。
??常規(guī)的PID控制系統(tǒng)中,減少超調(diào)和提高控制精度難以兩全其美。主要是積分作用有缺陷造成的。如果減少積分作用,靜差不易消除,有擾動時,消除誤差速度變慢;而加強積分作用時又難以避免超調(diào),這也是常規(guī)PID控制中經(jīng)常遇到的難題。

PID

2.3 通俗易懂的理解PID

??P就是比例的意思。它的作用最明顯,原理也最簡單。
??需要控制的量,比如水溫,有它現(xiàn)在的『當前值』,也有我們期望的『目標值』。當兩者差距不大時,就讓加熱器“輕輕地”加熱一下。要是因為某些原因,溫度降低了很多,就讓加熱器“稍稍用力”加熱一下。要是當前溫度比目標溫度低得多,就讓加熱器“開足馬力”加熱,盡快讓水溫到達目標附近。
??這就是P的作用,跟開關(guān)控制方法相比,是不是“溫文爾雅”了很多.實際寫程序時,就讓偏差(目標減去當前)與調(diào)節(jié)裝置的“調(diào)節(jié)力度”,建立一個一次函數(shù)的關(guān)系,就可以實現(xiàn)最基本的“比例”控制了~
??KP越大,調(diào)節(jié)作用越激進,KP調(diào)小會讓調(diào)節(jié)作用更保守。
??要是你正在制作一個平衡車,有了KP的作用,你會發(fā)現(xiàn),平衡車在平衡角度附近來回“狂抖”,比較難穩(wěn)住。如果已經(jīng)到了這一步——恭喜你!離成功只差一小步了~

??D的作用更好理解一些,所以先說說D,最后說i。
??剛才我們有了P的作用。你不難發(fā)現(xiàn),只有P好像不能讓平衡車站起來,水溫也控制得晃晃悠悠,好像整個系統(tǒng)不是特別穩(wěn)定,總是在“抖動”。


??你心里設(shè)想一個彈簧:現(xiàn)在在平衡位置上。拉它一下,然后松手。這時它會震蕩起來。因為阻力很小,它可能會震蕩很長時間,才會重新停在平衡位置。
??請想象一下:要是把上圖所示的系統(tǒng)浸沒在水里,同樣拉它一下 :這種情況下,重新停在平衡位置的時間就短得多。我們需要一個控制作用,讓被控制的物理量的“變化速度”趨于0,即類似于“阻尼”的作用。
??因為,當比較接近目標時,P的控制作用就比較小了。越接近目標,P的作用越溫柔。有很多內(nèi)在的或者外部的因素,使控制量發(fā)生小范圍的擺動。D的作用就是讓物理量的速度趨于0,只要什么時候,這個量具有了速度,D就向相反的方向用力,盡力剎住這個變化。kD參數(shù)越大,向速度相反方向剎車的力道就越強。
??如果是平衡小車,加上P和D兩種控制作用,如果參數(shù)調(diào)節(jié)合適,它應該可以站起來了~歡呼吧
??等等,PID三兄弟好想還有一位??雌饋鞵D就可以讓物理量保持穩(wěn)定,那還要I干嘛?

??因為我們忽視了一種重要的情況:
??還是以熱水為例。假如有個人把我們的加熱裝置帶到了非常冷的地方,開始燒水了。需要燒到50℃。
??在P的作用下,水溫慢慢升高。直到升高到45℃時,他發(fā)現(xiàn)了一個不好的事情:天氣太冷,水散熱的速度,和P控制的加熱的速度相等了。這可怎么辦?
??P兄這樣想:我和目標已經(jīng)很近了,只需要輕輕加熱就可以了。
??D兄這樣想:加熱和散熱相等,溫度沒有波動,我好像不用調(diào)整什么。
??于是,水溫永遠地停留在45℃,永遠到不了50℃。
??作為一個人,根據(jù)常識,我們知道,應該進一步增加加熱的功率??墒窃黾佣嗌僭撊绾斡嬎隳??
??前輩科學家們想到的方法是真的巧妙。設(shè)置一個積分量。只要偏差存在,就不斷地對偏差進行積分(累加),并反應在調(diào)節(jié)力度上。這樣一來,即使45℃和50℃相差不太大,但是隨著時間的推移,只要沒達到目標溫度,這個積分量就不斷增加。
??系統(tǒng)就會慢慢意識到:還沒有到達目標溫度,該增加功率啦!到了目標溫度后,假設(shè)溫度沒有波動,積分值就不會再變動。這時,加熱功率仍然等于散熱功率。但是,溫度是穩(wěn)穩(wěn)的50℃。
??Ki的值越大,積分時乘的系數(shù)就越大,積分效果越明顯。所以,I的作用就是,減小靜態(tài)情況下的誤差,讓受控物理量盡可能接近目標值。
??I在使用時還有個問題:需要設(shè)定積分限制。防止在剛開始加熱時,就把積分量積得太大,難以控制。

2.4  數(shù)字PID控制的實現(xiàn)

??數(shù)字PID控制是通過算法程序?qū)崿F(xiàn)PID控制的。數(shù)字控制系統(tǒng)大多數(shù)是采樣數(shù)據(jù)控制系統(tǒng),進入系統(tǒng)的連續(xù)時間信號必須經(jīng)過采樣和量化后轉(zhuǎn)換為數(shù)字量,方能進行相應的計算和處理,不論是積分還是微分,只能用數(shù)值計算去逼近。當采樣周期相當短時,用求和代替積分,用差商代替微商,將描述連續(xù)時間PID算法的微分方程變?yōu)槊枋鲭x散時間PID算法的差分方程。數(shù)字PID控制通常有以下兩種實現(xiàn):

2.4.1  位置式PID控制算法


??此式是數(shù)字PID算法的非遞推形式,稱全量算法,其中uo為控制量基值(n=0時的控制量);un為第n個采樣時刻的控制量;Ts為采樣周期。算法中為實現(xiàn)求和,必須存儲系統(tǒng)偏差的全部值ei,得出的全量輸出un是控制量的絕對數(shù)值,這種控制量確定了執(zhí)行機構(gòu)在控制系統(tǒng)中的位置(如閥門控制中,輸出對應閥門的位置),因此將這種算法稱為“位置算法”。
位置式PID控制算法實現(xiàn)框圖

2.4.2  增量式PID控制算法

??當執(zhí)行機構(gòu)需要的不是控制量的絕對值,而是控制量的增量(例如驅(qū)動步進電動機)時,需要用PID的“增量算法”,其簡化示意圖如下圖所示。

增量式PID控制算法簡化示意圖

??增量式PID算法的差分方程為

??此時已看不出P、I、D作用的直接關(guān)系,只能體現(xiàn)各次誤差量對控制作用的影響,但處理時只需要貯存最近的三個誤差采樣值en en-1 en-2 。


-END-

關(guān)于比賽的帖子,之前寫過很多篇:

「第一彈」電子設(shè)計大賽應該準備什么?

「第一篇」大學生電子設(shè)計競賽,等你來提問。

「第二篇」全國一等獎,經(jīng)驗帖。

「第三篇」電賽,這些你必須知道的比賽細節(jié),文末附上近十年電賽題目下載

「第四篇」電賽控制題可以準備一些什么?

「第五篇」全國電子設(shè)計競賽-電源題設(shè)計方案總結(jié)

「第六篇」對于電賽,我們應該看重什么?

電子設(shè)計競賽電源題(1)-電源題簡介

電子設(shè)計競賽電源題(2)-檢波與采樣

也有一些大神的經(jīng)驗貼,其實不乏國獎獲得者:

全國一等獎,他的學習之路。

從0開始,三個月,獲全國一等獎。

獎狀是怎么煉成的—我的電賽狂魔之旅

全國一等獎的獲得者,如今去當了人民教師。


也有一些關(guān)于比賽項目的文章:
參加智能車大賽還是電賽?在做電磁炮中我找到了答案
2019年電賽綜合測評題詳解
「權(quán)威發(fā)布」2019年電賽最全各類題目細節(jié)問題解答匯總
獎狀是怎么煉成的—我的電賽狂魔之旅

【大學生電子設(shè)計競賽分享經(jīng)驗貼】風力循跡小車


去年還做過幾期猜題的文章,貌似有點接近了,今年還可以繼續(xù)給大家猜猜。
「猜題第一篇」2019年大學生電子設(shè)計競賽

「重磅猜題之第二篇」2019年大學生電子設(shè)計競賽

     
           

 最 后  
 

若覺得文章不錯,轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等
在公眾號內(nèi)回復「 更多資源 」,即可免費獲取,期待你的關(guān)注~
長按識別圖中二維碼關(guān)注

免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉