關于PID算法!
我一直在聽說什么PID算法在PWM控制中的應用,可是一直對這個不是很了解,不知道哪位dx知道它的原理或者是這方面的資料,我在網上查過,只有一些很復雜的應用!所以想知道它的基本原理啊!謝謝
全部回復(39)
正序查看
倒序查看
@jamsdbx
在學校曾跟導師做過單片機控制的電源驅動系統,我主要負責PID控制算法,感覺程序比較簡單,但調試比較煩,主要是P,I,D三個參數比較難調.
這位仁兄,我是大四的學生,正在做有關于PID算法的畢業設計,名字叫《全數字伺服系統》,用單片機控制直流步進電機的轉角,正轉反轉.采用閉環控制,也就是用到PID算法.現在問題是,我對那算法一點頭緒都沒有,因為是第一次接觸這東西,能夠幫我個忙不?教我怎么著手編這程序,電路圖如下,謝謝各位啊
500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}" onmousewheel="return imgzoom(this);">

0
回復
@jjok809
這位仁兄,我是大四的學生,正在做有關于PID算法的畢業設計,名字叫《全數字伺服系統》,用單片機控制直流步進電機的轉角,正轉反轉.采用閉環控制,也就是用到PID算法.現在問題是,我對那算法一點頭緒都沒有,因為是第一次接觸這東西,能夠幫我個忙不?教我怎么著手編這程序,電路圖如下,謝謝各位啊[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
我這有一個用單片機c寫的pid算法,用的是歸一化整定pid參數.控制兩個電機,可以供大家參考,程序是測試,電機用的,不是太成熟.
系統也是8051內核的單片,用的i/o接口是8155就是了,驅動器是自己做的,是電磁式的,所以頻率不高,因而控制作用不明顯.
還有一個問題是8051的單片,也就12mhz的頻率,8位的匯編沒有固化的乘法,作起乘法就是四十個周期,這是不是算法效果不明顯的另一個原因.
我也希望得到高手的指點,看看作用不明顯的原因
1112954814.c
系統也是8051內核的單片,用的i/o接口是8155就是了,驅動器是自己做的,是電磁式的,所以頻率不高,因而控制作用不明顯.
還有一個問題是8051的單片,也就12mhz的頻率,8位的匯編沒有固化的乘法,作起乘法就是四十個周期,這是不是算法效果不明顯的另一個原因.
我也希望得到高手的指點,看看作用不明顯的原因
1112954814.c
0
回復
@jjok809
這位仁兄,我是大四的學生,正在做有關于PID算法的畢業設計,名字叫《全數字伺服系統》,用單片機控制直流步進電機的轉角,正轉反轉.采用閉環控制,也就是用到PID算法.現在問題是,我對那算法一點頭緒都沒有,因為是第一次接觸這東西,能夠幫我個忙不?教我怎么著手編這程序,電路圖如下,謝謝各位啊[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
哥們,你們導師給你的題目吧?
你確定用單片能勝任嗎?
你確定用單片能勝任嗎?
0
回復
@jjok809
這位仁兄,我是大四的學生,正在做有關于PID算法的畢業設計,名字叫《全數字伺服系統》,用單片機控制直流步進電機的轉角,正轉反轉.采用閉環控制,也就是用到PID算法.現在問題是,我對那算法一點頭緒都沒有,因為是第一次接觸這東西,能夠幫我個忙不?教我怎么著手編這程序,電路圖如下,謝謝各位啊[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
算法就是你解決一個問題的方法,是程序編寫的依據.PID算法是一種過程控制算法,就是對誤差信號(采樣信號與給定信號的差)通過比例,積分,微分的運算后的結果作為輸出控制信號,來控制所要控制的對象.PID算法有個標準公式,已經很成熟了,不用你再研究,你只要把那個公式變為程序就行.你這個課題很典型,貼片機(如松下,三洋)上都是使用伺服馬達,架構類似.伺服馬達與步進馬達不同,伺服馬達要求在某一時刻能轉到某一具體位置,控制精度很高,步進馬達則不要求達到具體位置,如控制汽缸活塞就使用步進馬達,它只要控制活塞的上和下.所以伺服馬達才使用PID控制算法.PID控制算法有位置式和增量式兩種,你是通過正負脈沖的數量作為輸出控制,不存在誤差的積累,可以采用位置式.我以前做的是溫度控制,也是采用PID算法,你可以參考1113012047.rar
0
回復
@jamsdbx
算法就是你解決一個問題的方法,是程序編寫的依據.PID算法是一種過程控制算法,就是對誤差信號(采樣信號與給定信號的差)通過比例,積分,微分的運算后的結果作為輸出控制信號,來控制所要控制的對象.PID算法有個標準公式,已經很成熟了,不用你再研究,你只要把那個公式變為程序就行.你這個課題很典型,貼片機(如松下,三洋)上都是使用伺服馬達,架構類似.伺服馬達與步進馬達不同,伺服馬達要求在某一時刻能轉到某一具體位置,控制精度很高,步進馬達則不要求達到具體位置,如控制汽缸活塞就使用步進馬達,它只要控制活塞的上和下.所以伺服馬達才使用PID控制算法.PID控制算法有位置式和增量式兩種,你是通過正負脈沖的數量作為輸出控制,不存在誤差的積累,可以采用位置式.我以前做的是溫度控制,也是采用PID算法,你可以參考1113012047.rar
請問一下PID公式當中的參數應該怎么確定,如果僅僅是這么一個公式,編一個程序當然并不困難
0
回復
@rpower
匯編10多行搞定,那就需要極高的本事了,這個東西沒有這么簡單的!
新手求助:
本人大四,剛剛接觸微機控制的PID算法,用的教材是清華大學于海生的《微機控制技術》.
今天在寫第四章作業習題4.4時,卡住了……
500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282273.gif');}" onmousewheel="return imgzoom(this);">
因為書上前面有這樣的介紹
500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282400.gif');}" onmousewheel="return imgzoom(this);">
這下子我就胡涂了,為什么習題4.4的傳遞函數D(s)的分母還有常數項1?我該怎樣求解Kp、Ti、Td??
書上沒有相應例題……還望前輩高人點撥一下小弟,這道題該怎么解?謝謝^_^QQ:85508001
本人大四,剛剛接觸微機控制的PID算法,用的教材是清華大學于海生的《微機控制技術》.
今天在寫第四章作業習題4.4時,卡住了……

因為書上前面有這樣的介紹

這下子我就胡涂了,為什么習題4.4的傳遞函數D(s)的分母還有常數項1?我該怎樣求解Kp、Ti、Td??
書上沒有相應例題……還望前輩高人點撥一下小弟,這道題該怎么解?謝謝^_^QQ:85508001
0
回復