微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 麻烦帮忙看下51做的PID调节,为什么反馈回来的有问题

麻烦帮忙看下51做的PID调节,为什么反馈回来的有问题

时间:10-02 整理:3721RD 点击:

#include <REG51.H>

#include <intrins.h>

int uk=50;

int ck=0;

int r=300;

int ek=0;

int ek1=0;

int ek2=0;

int uk1=0;

int kp=1;//0.125

int ki=2;//0.25

int kd=3;//0.375

int duk=0;

int contr_PID(void)

{

         int uk_tmp=0;

         ek=r-ck;

if (0<=uk<=100)

{                           

         duk=kp*(ek-ek1)>>3+ki*ek>>3+ kd*(ek-2*ek1+ek2)>>3;

         uk_tmp=uk1+duk;

         ek2=ek1;

         uk1=uk_tmp;

         ek1=ek;

         

                            if(0<=uk_tmp<=100)

                                                        {

                                                        uk=uk_tmp;

                  

                                                                 }

                  

                                    

                                     }

         else{

                   if(uk>100){uk=100;}

                   if(uk<0){uk=0;}

                   }

         

                           

                   return(uk);

}

这里的反馈uk应该在0到100之间为什么会乱跳或者减除负值归零,如何调整麻烦指导下,谢谢了。

我这里没有加入反馈环节,所以只要能发出矩形波就行了,但用了示波器看没有波形,麻烦指导一下,才开始学习,感谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top