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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6012|回復: 7
打印 上一主題 下一主題
收起左側

關于pid控制pwm輸出的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:405033 發(fā)表于 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控制系數(shù)
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()這個函數(shù)去接收pid_t->pwm的話,要怎么去寫,一開始是
TIM_SetCompare1(TIM1,pidStructure->pwm)這樣直接去寫的,但是沒有成效,所以不知道是哪里有問題(想法很簡單,就把pid這個輸出量傳給TIM_SetComparex去控制pwm的輸出)是這個想法一開始就不成立嗎,懇求大佬指點指點(也省略了很多代碼沒貼出,主要是吧pid_t->pwm作為pwm的操控量)。

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

使用道具 舉報

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

使用道具 舉報

板凳
ID:405033 發(fā)表于 2018-10-25 20:34 | 只看該作者
cjm82 發(fā)表于 2018-10-18 16:13
沒看懂positionpid_t是什么類型,是另外聲明的結構體還是什么?懷疑是樓主在主程序里聲明的結構體變量名,可能 ...

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

使用道具 舉報

地板
ID:405033 發(fā)表于 2018-10-30 18:31 | 只看該作者
不用了,已經(jīng)解決了,謝謝
回復

使用道具 舉報

5#
ID:438112 發(fā)表于 2018-12-3 20:08 | 只看該作者
請問樓主最后這個setcompare實現(xiàn)了嗎?我是想利用PWM的輸出結果去調(diào)整PWM的占空比,可以分享下代碼嗎?萬分感激!郵箱journey1022@163.com
回復

使用道具 舉報

6#
ID:405033 發(fā)表于 2018-12-3 20:39 | 只看該作者
journey1022 發(fā)表于 2018-12-3 20:08
請問樓主最后這個setcompare實現(xiàn)了嗎?我是想利用PWM的輸出結果去調(diào)整PWM的占空比,可以分享下代碼嗎?萬分 ...

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

使用道具 舉報

7#
ID:438762 發(fā)表于 2018-12-3 21:23 | 只看該作者
嗯嗯,看到了這個錯誤,謝謝你啦
回復

使用道具 舉報

8#
ID:438112 發(fā)表于 2018-12-4 08:18 | 只看該作者
瘋子本人 發(fā)表于 2018-12-3 20:39
你好,其實你先在這個函數(shù)直接傳固定值進去,看一下電壓有沒有變化就可以驗證了,還有,參考原子的pwm輸 ...

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91亚洲国产成人久久精品网站 | 碰碰视频 | 亚洲区一 | 免费小视频在线观看 | 在线男人天堂 | 黄色网址在线免费观看 | 荷兰欧美一级毛片 | 国产伦精品一区二区三区四区视频 | 国产成人精品一区二 | 日韩欧美三区 | 亚洲精品欧美 | 欧美三级久久久 | 亚洲三级免费看 | 欧美午夜一区二区三区免费大片 | 免费黄色日本 | 涩在线| 国产成人精品一区二区三区网站观看 | 羞羞视频在线观看 | 久久一二区| 91国产视频在线观看 | 久久99精品久久久久久琪琪 | 国产69精品久久久久777 | 国产特级毛片 | 久久成人亚洲 | 天天拍天天操 | 日韩三级在线观看 | 一区二区三区四区在线播放 | 日韩精品一区二区三区中文在线 | 91精品国产99| 中文字幕一区二区三区在线观看 | 黄a在线播放 | 国产精品毛片一区二区在线看 | 国产福利资源 | 国产精品污www一区二区三区 | 草比av| 亚洲一二三区在线观看 | 久久久久一区二区三区 | 婷婷色国产偷v国产偷v小说 | 日韩精品免费视频 | 亚洲欧美一区二区三区视频 | 人人干人人超 |