標(biāo)題: 數(shù)控穩(wěn)壓電源 PID閉環(huán)控制 帶仿真 源碼 51單片機(jī)制作 [打印本頁(yè)]

作者: lessen_li    時(shí)間: 2017-5-16 15:30
標(biāo)題: 數(shù)控穩(wěn)壓電源 PID閉環(huán)控制 帶仿真 源碼 51單片機(jī)制作
帶有PID閉環(huán)控制,存在問(wèn)題是調(diào)整率低,51單片機(jī)制作


單片機(jī)源程序如下:

  1. void    PWMProcess(void)
  2. {
  3.     uint16 idata temp;
  4.     uint16 idata UKTemp;
  5.           temp = 0;
  6.     UKTemp = 0;
  7.    
  8.     if( Pwm.ChangeFlag_Uint8 != 0 )   //???????????
  9.                 {                  //????????????????????
  10.                         Pwm.ChangeFlag_Uint8 = 0;
  11.         
  12.                         UKTemp = PID.Uk_Uint16 + SwIn.AddValue_Uint16;//??UK???
  13.                         //????????????????,????????????????????????????
  14.                         if(UKTemp>999)
  15.                         {
  16.                                 UKTemp = 999;
  17.                         } //??????999?????1024???????PWM??????12V???
  18.                         while(1)//????????????? Delta,????????,???????
  19.                         {
  20.                                 ADChPro(UPWMADCH);          //??????
  21.                                 if( ADPool.Value_Uint16[UPWMADCH] == UKTemp)
  22.                                 {
  23.                                         return;
  24.                                 }
  25.                                 if( ADPool.Value_Uint16[UPWMADCH] > UKTemp)   //????????????,?????
  26.                                 {
  27.                                         if( ( ADPool.Value_Uint16[UPWMADCH] - UKTemp ) > UDELTA )
  28.                                         {
  29.                                                 temp = ADPool.Value_Uint16[UPWMADCH] - UKTemp;  //
  30.                                                 temp = temp / 2;       //????????,????????  -----/*PWM????UK/4*/
  31.                                                 if( Pwm.DutyCycle_Uint8 > temp )
  32.                                                 {
  33.                      Pwm.DutyCycle_Uint8 = Pwm.DutyCycle_Uint8 - temp;
  34.                                                 }
  35.                                                 else
  36.                                                 {
  37.                     Pwm.DutyCycle_Uint8 = 0;
  38.                                                 }
  39.                                         }
  40.                                         else
  41.                                         {
  42.                   return;
  43.                                         }
  44.                                 }
  45.                                 else           //????????????
  46.                                 {
  47.                                         if( ( UKTemp - ADPool.Value_Uint16[UPWMADCH] ) > UDELTA )
  48.                                         {
  49.                                                 temp = UKTemp - ADPool.Value_Uint16[UPWMADCH];
  50.                                                 temp = temp / 4;  //????????,?????+??
  51.                                                 if( (255-Pwm.DutyCycle_Uint8) > temp )
  52.                                                 {
  53.                     Pwm.DutyCycle_Uint8 += (temp/2);
  54.                                                 }
  55.                                                 else
  56.                                                 {
  57.                     Pwm.DutyCycle_Uint8 = 255;
  58.                                                 }
  59.                                         }
  60.                                         else
  61. ……………………

  62. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
BUCK_adj.zip (156.28 KB, 下載次數(shù): 168)



作者: uaeng    時(shí)間: 2017-5-16 21:23
千呼萬(wàn)喚始出來(lái),謝謝樓主!
作者: 鵬博士PBs    時(shí)間: 2019-7-12 08:57
厲害了 感謝分享




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1