久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6097|回復: 7
收起左側

關于pid控制pwm輸出的問題

[復制鏈接]
ID:405033 發表于 2018-10-17 20:47 | 顯示全部樓層 |閱讀模式
incrementalpid_t *pidStructure;


typedef struct{
float Target;      //設定目標值
float Measured;     //測量值
float err;        //本次偏差值
float err_last;     //上一次偏差
float err_beforeLast;  //上上次偏差
float Kp, Ki, Kd;    //Kp, Ki, Kd控制系數
float pwm;        //pwm輸出
float zancun;
}incrementalpid_t;


int Position_PID(positionpid_t *pid_t, int target, int measured)

{
pid_t->Target = (float)target;
pid_t->Measured = (float)measured;

pid_t->err = pid_t->Target - pid_t->Measured;      //誤差(目標值-測量值)
pid_t->integral_err += pid_t->err;           //誤差積分

pid_t->pwm = pid_t->Kp*pid_t->err    //增量pid
      + pid_t->Ki*pid_t->integral_err
      + pid_t->Kd*(pid_t->err - pid_t->err_last);

pid_t->err_last = pid_t->err;

    if(pid_t->pwm < -PositionPID_Amplitude) pid_t->pwm = -PositionPID_Amplitude;
if(pid_t->pwm > PositionPID_Amplitude)  pid_t->pwm = PositionPID_Amplitude;

return (int)pid_t->pwm;
}

新人一枚,想問一下如果想用TIM_SetComparex()這個函數去接收pid_t->pwm的話,要怎么去寫,一開始是
TIM_SetCompare1(TIM1,pidStructure->pwm)這樣直接去寫的,但是沒有成效,所以不知道是哪里有問題(想法很簡單,就把pid這個輸出量傳給TIM_SetComparex去控制pwm的輸出)是這個想法一開始就不成立嗎,懇求大佬指點指點(也省略了很多代碼沒貼出,主要是吧pid_t->pwm作為pwm的操控量)。

回復

使用道具 舉報

ID:388197 發表于 2018-10-18 16:13 | 顯示全部樓層
沒看懂positionpid_t是什么類型,是另外聲明的結構體還是什么?懷疑是樓主在主程序里聲明的結構體變量名,可能樓主把結構體變量名寫成了函數聲明時的形參.
如果函數調用的是上邊聲明的結構體變量,應該聲明成這樣才對.
int Position_PID(incrementalpid_t *pid_t int target, int measured)
主程序調用時則寫成
Positon_PID(&pid_t,p1,p2);(假設pid_t已經聲明為incrementalpid_t類型結構體,p1和p2已經聲明為int類型變量)
回復

使用道具 舉報

ID:405033 發表于 2018-10-25 20:34 | 顯示全部樓層
cjm82 發表于 2018-10-18 16:13
沒看懂positionpid_t是什么類型,是另外聲明的結構體還是什么?懷疑是樓主在主程序里聲明的結構體變量名,可能 ...

嗯嗯,看到了這個錯誤,謝謝你啦,還有我想問一下,這個最后return回來的值能夠直接傳給TIM_SetCompare1()這個函數嗎,類似于TIM-SetCompare1(TIM1,pid_t->pwm),假設pid_t已經聲明為incrementalpid_t類型結構體。
回復

使用道具 舉報

ID:405033 發表于 2018-10-30 18:31 | 顯示全部樓層
不用了,已經解決了,謝謝
回復

使用道具 舉報

ID:438112 發表于 2018-12-3 20:08 | 顯示全部樓層
請問樓主最后這個setcompare實現了嗎?我是想利用PWM的輸出結果去調整PWM的占空比,可以分享下代碼嗎?萬分感激!郵箱journey1022@163.com
回復

使用道具 舉報

ID:405033 發表于 2018-12-3 20:39 | 顯示全部樓層
journey1022 發表于 2018-12-3 20:08
請問樓主最后這個setcompare實現了嗎?我是想利用PWM的輸出結果去調整PWM的占空比,可以分享下代碼嗎?萬分 ...

你好,其實你先在這個函數直接傳固定值進去,看一下電壓有沒有變化就可以驗證了,還有,參考原子的pwm輸出程序庫函數版本的,就可以看到這個函數的具體用處了,而且照你的說法,你有用到pid還是什么。。。。。。
回復

使用道具 舉報

ID:438762 發表于 2018-12-3 21:23 | 顯示全部樓層
嗯嗯,看到了這個錯誤,謝謝你啦
回復

使用道具 舉報

ID:438112 發表于 2018-12-4 08:18 | 顯示全部樓層
瘋子本人 發表于 2018-12-3 20:39
你好,其實你先在這個函數直接傳固定值進去,看一下電壓有沒有變化就可以驗證了,還有,參考原子的pwm輸 ...

好的,我先看看原子的例程,我是用PID,謝謝你啦。不懂的可能還要麻煩你
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区 | 亚洲精品自在在线观看 | 国产高清性xxxxxxxx | 国产我和子的乱视频网站 | 伊人网在线看 | 夜夜草| 亚洲天堂日韩精品 | 国产精品一区久久久 | 国产精品久久久久久久久久久久冷 | 一级毛片免费完整视频 | 久久综合av | 久久国产精品免费视频 | 国产一区二区不卡 | a级免费视频 | www.av在线| 亚洲精品久久久一区二区三区 | 狠狠操天天操 | 一区二区三区四区av | av一二三区 | 一区精品在线观看 | 福利av在线 | 亚洲一区二区av | 毛片综合 | 国产成人精品一区二区三区 | 狠狠色综合网站久久久久久久 | 国产成人99久久亚洲综合精品 | 欧美人成在线视频 | 日韩av电影院 | 蜜桃在线视频 | 伊人网综合在线观看 | 91在线成人 | 成人在线视频网 | 国产成人综合在线 | 欧美日韩精品久久久免费观看 | 男人的天堂在线视频 | 美女福利视频 | 人人色视频 | h小视频 | 一区二区三区精品在线 | 在线视频一区二区三区 | 在线一区 |