标题: 数控稳压电源 PID闭环控制 带仿真 源码 51单片机制作 [打印本页]

作者: lessen_li    时间: 2017-5-16 15:30
标题: 数控稳压电源 PID闭环控制 带仿真 源码 51单片机制作
带有PID闭环控制,存在问题是调整率低,51单片机制作


单片机源程序如下:

  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. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
BUCK_adj.zip (156.28 KB, 下载次数: 168)



作者: uaeng    时间: 2017-5-16 21:23
千呼万唤始出来,谢谢楼主!
作者: 鹏博士PBs    时间: 2019-7-12 08:57
厉害了 感谢分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1