欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于pid控制pwm輸出的問題 [打印本頁]

作者: 瘋子本人    時間: 2018-10-17 20:47
標題: 關于pid控制pwm輸出的問題
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的操控量)。


作者: cjm82    時間: 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類型變量)

作者: 瘋子本人    時間: 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類型結構體。
作者: 瘋子本人    時間: 2018-10-30 18:31
不用了,已經解決了,謝謝
作者: journey1022    時間: 2018-12-3 20:08
請問樓主最后這個setcompare實現了嗎?我是想利用PWM的輸出結果去調整PWM的占空比,可以分享下代碼嗎?萬分感激!郵箱journey1022@163.com
作者: 瘋子本人    時間: 2018-12-3 20:39
journey1022 發表于 2018-12-3 20:08
請問樓主最后這個setcompare實現了嗎?我是想利用PWM的輸出結果去調整PWM的占空比,可以分享下代碼嗎?萬分 ...

你好,其實你先在這個函數直接傳固定值進去,看一下電壓有沒有變化就可以驗證了,還有,參考原子的pwm輸出程序庫函數版本的,就可以看到這個函數的具體用處了,而且照你的說法,你有用到pid還是什么。。。。。。
作者: cychao123    時間: 2018-12-3 21:23
嗯嗯,看到了這個錯誤,謝謝你啦
作者: journey1022    時間: 2018-12-4 08:18
瘋子本人 發表于 2018-12-3 20:39
你好,其實你先在這個函數直接傳固定值進去,看一下電壓有沒有變化就可以驗證了,還有,參考原子的pwm輸 ...

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




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