-
發給我,謝謝。
-
首先,弄清楚PID是一種控制演算法!
1、“如果微控制器的恆溫能使溫度達到預定值停止加熱,低加熱,用溫度感測器反饋,這是自動控制嗎”你是乙個控制系統,但是效果會很差,特別是對於這種大慣量系統的溫度控制,要達到預定值就停止加熱, 但是由於慣性,溫度肯定會繼續上公升,當電爐燒開水時,水被燒開,斷電後水會沸騰一段時間(煮沸非常耗能,可以看出如果加熱,溫公升比較嚴重,也可以用溫度計自己試試);這與“在低時加熱”是一樣的。 如果系統對控制精度有要求,你肯定達不到要求。 PID是一種控制演算法,與其他控制演算法相比,它是最簡單的。
PID可以在溫度即將達到設定值時降低加熱功率,使溫公升速度較慢,最終穩定在設定值。 如果您使用直接控制,溫度將在設定點上下振盪,並且永遠不會在設定點停止。
2、一般控制系統需要增加反饋,形成閉環控制系統,也有開環控制系統。 例如,開環控制系統就是在加熱時提前計算出大約需要的熱量,然後考慮環境影響,計算加熱時間,然後根據自己的時間控制加熱系統。 你認為這樣的系統會穩定工作嗎?
環境略有變化! 開環控制系統容易受到環境影響; 閉環控制系統更加穩定,可以使用1L水,2L水,500W電能,也可以使用1000W電爐,這就是閉環的優勢。
因此,大多數控制系統都是閉環的,很少單獨使用開環,即使使用時也存在閉環。 開環其實是有優點的,開環在控制系統中叫做前饋(對應反饋),比如你系統中的電源電壓公升高,加熱速度肯定會變快,如果你對電源電壓進行取樣,將取樣結果輸入到閉環中,對閉環做輕微的修正, 控制精度會更好,這是開環的優勢,它先進,可以預測結果(根據地源電壓的增加,可以知道需要降低輸出功率)。
綜上所述,您應該了解反饋是必需的(前饋也是必需的,但不是必需的),並且 PID 不能被替換(除非您使用其他更複雜的控制演算法)。
-
AT89C51是乙個微控制器,它的硬體設計不支援PWM,但你可以通過軟體輸出對PWM驅動脈衝進行程式設計。
如果想在樓上實現PWM,不妨使用專業的DSP晶元,比如TI的TMS320
f2812。
它可以驅動兩個PWM橋,並為電壓型PWM輸出控制脈衝。
如果真想用AT89C51,可以參考張崇偉的書,看看控制脈衝是怎麼產生的,這本書叫《PWM整流器及其控制》,32開,寫得更詳細。
-
功能說明。
AT89S52是一款具有 8K 的低功耗、高效能 CMOS 8 位微控制器
系統中的可程式設計快閃記憶體
儲存器。 使用 atmel
該公司生產高密度非易失性儲存器技術,採用工業 80C51
產品指令和引腳完全相容。 片上快閃記憶體允許程式儲存器在系統中進行程式設計,也適用於傳統程式設計器。
在單個晶元上,它有乙個靈巧的 8
位 CPU 和系統上可程式設計快閃記憶體使該AT89S52成為適用於各種嵌入式控制應用的高度靈活和超高效的解決方案。
AT89S52具有以下標準功能:
8K 位元組快閃記憶體、256 位元組 RAM、32
位 IO 埠線,看門狗定時器,2
資料指標,三個 16
位定時器計數器,6向量2級中斷結構,全雙工序列埠,片上晶體振盪器和時鐘電路。
另外,AT89S52
可降低至0Hz
靜態邏輯操作,支援2種軟體可選省電模式。 在空閒模式下,CPU 停止工作,允許 RAM、定時器計數器、序列埠和中斷繼續工作。 在掉電保護模式下,RAM內容被儲存,振盪器被凍結,微控制器的所有工作都停止,直到下一次中斷或硬體復位。
8 位微控制器 8K
位元組在系統中是可程式設計的。
-
基於 MCS-51 系列。
BAI微控制器DU實現了直流電機調速系統的研究與設計,可實現電機在不同按鈕作用下的啟動、停止、正轉、反轉、加減速控制。 可實現直流電機PWM的調速設計。 增加占空比,提高轉速,降低占空比,降低轉速。
通過按鈕的輸入,命令控制器,輸出啟動/停止、正反轉、電機加減速、LED顯示。
-
前進和後退不是。
可以聯絡到我。
首先,弄清楚PID是一種控制演算法!
1、“如果微控制器的恆溫能使溫度達到預定值停止加熱,低加熱,用溫度感測器反饋,這是自動控制嗎”你是乙個控制系統,但是效果會很差,特別是對於這種大慣量系統的溫度控制,要達到預定值就停止加熱, 但是由於慣性,溫度肯定會繼續上公升,當電爐燒開水時,水被燒開,斷電後水會沸騰一段時間(煮沸非常耗能,可以看出如果加熱,溫公升比較嚴重,也可以用溫度計自己試試);這與“在低時加熱”是一樣的。 如果系統對控制精度有要求,你肯定達不到要求。 PID是一種控制演算法,與其他控制演算法相比,它是最簡單的。 >>>More
你的計時器中斷有問題,你這樣寫,無論你是否輸入,每 10 秒的 DJ 輸出乙個高或低變化。 您應該在定時器中斷功能中設定乙個標誌。 首先,定義乙個無符號變數標誌(作為標誌位),當 sr=0 時,讓 flag=1;然後在執行您編寫的內容之前中斷 if(flage==1)。 >>>More