找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1736|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

個人寫的關(guān)于PID的代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:345662 發(fā)表于 2018-7-2 20:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "pid.h"
#include "stdio.h"
#include "stdlib.h"
#include "stm32f10x.h"

struct _pid
{
  int set_x,set_y;  //設(shè)定值
        int now_x,now_y;  //現(xiàn)在值

        int last_x,last_y; //上一次的值
        int prve_x,prve_y; //上兩次的值
        double sum_x,sum_y; //誤差積累
       
        float err_x,err_y;          //誤差值
        float last_err_x,last_err_y;       //上一次誤差值
        float prve_err_x,prve_err_y;       //上兩次誤差值
  float Kp,Ki,Kd;
       
}pid;

void PID_init()  //初始化函數(shù)
{
         pid.err_x=0.0;
         pid.err_y=0.0;
       
         pid.Kd=0.2;
         pid.Ki=0.015;
         pid.Kp=0.2;
       
   pid.set_x=0;
         pid.set_y=0; //初始化設(shè)定值
       
         pid.now_x=0;
         pid.now_y=0;  //初始化實際值
       
         pid.last_x=0;
         pid.last_y=0; //初始化上次的值
       
         pid.prve_x=0;
         pid.prve_y=0; //初始化上兩次的值
       
         pid.last_err_x=0.0;
         pid.last_err_y=0.0;
         
         pid.prve_err_x=0.0;
         pid.prve_err_y=0.0;
       
         pid.sum_x=0;
         pid.sum_y=0;  //初始化積累值
       
}

float PID_GET(float x,float y)
{
        float sumx,sumy;
       
        pid.now_x=x;
        pid.now_y=y;
       
        pid.err_x=pid.set_x-pid.now_x;
        pid.err_y=pid.set_y-pid.now_y;
       
   pid.sum_x=pid.Kp*(pid.err_x-pid.last_err_x)+ pid.Ki*pid.err_x +pid.Kd*(pid.err_x-2*pid.last_err_x+pid.prve_err_x);
         pid.sum_y=pid.Kp*(pid.err_y-pid.last_err_y)+ pid.Ki*pid.err_y +pid.Kd*(pid.err_y-2*pid.last_err_y+pid.prve_err_y);
         
         sumx=pid.sum_x;
         sumy=pid.sum_y;
         pid.prve_err_x=pid.last_err_x;
         pid.prve_err_y=pid.last_err_y;
         pid.last_err_x=pid.err_x;
         pid.last_err_y=pid.err_y;
       
        return sumx,sumy;
       
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表