基于單片機變頻恒壓供水課程設計報告_第1頁
基于單片機變頻恒壓供水課程設計報告_第2頁
基于單片機變頻恒壓供水課程設計報告_第3頁
基于單片機變頻恒壓供水課程設計報告_第4頁
基于單片機變頻恒壓供水課程設計報告_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.PAGE.目錄課題簡介3關鍵詞3課題描述3實驗任務3實驗設備3設備工作原理簡介4西門子MM440變頻器工作原理4變頻器參數復位5壓力變送器工作原理5PID工作原理6課題實施方案7硬件設計7電路原理圖7軟件設計8結果分析13個人總結14參考文獻15課題簡介傳統控制水位的方法是人為頻繁的進行觀察并以此為依據進行補水或放水的,而這些工作相當費時費力。如果運用自動控制的思想來處理這個問題則會方便很多。本實驗課題便是針對這個問題進行設計。實驗擬設計一套PID水塔液位控制系統,采用51單片機為主控制器,對其進行編程后,通過控制變頻器,使得變頻器支配的電機能夠根據頻率而得到相應的運轉,從而使水位達到并保持預期的要求;變頻器為執行器。水塔水位信號的來源是由位于水塔下方的壓力傳感器感知水面高度,并將水面高度轉換為相應的電流信號反饋回控制回路,而后根據測定人為的建立它們之間的函數關系,進行信號的校對從而實現水塔水位信號的輸入。整個系統能夠很好的跟蹤給定液位,有較好的快速性和穩定性,能夠滿足一般化生產過程中對液位控制的要求。關鍵詞:液位控制系統單片機PID課題描述實驗任務●會使用單片機C語言,能用它進行編程;●在單片機中完成PID算法的編程實現;●構建一個閉環系統完成對PID實驗裝置的水位高度的穩定調節;●完成系統框圖的設計及各組成的功能描述;●完成西門子MM440變頻器的參數化設置;●完成在增加輸出擾動后控制系統快速調節;實驗設備IA7000實驗臺一臺51單片機試驗箱西門子MM440變頻器三相水泵:AB-12,380V,40W,流量12升/分,揚程3米壓力變送器:DC24,4~20mA裝有實驗軟件的計算機一臺PC-PPI通訊電纜一根導線若干設備工作原理簡介1、西門子MM440變頻器工作原理MM440變頻器具有多個繼電器輸出、多個模擬量輸出。原理圖如下MM440的接線原理圖MM440的每個端子都有一個對應的參數用來設定該端子的功能〔如下表表1MM440六個數字開關量輸入端子功能數字輸入端子編號參數編號出廠設置DIN15P07011DIN26P070212DIN37P07039DIN48P070415DIN516P070515DIN617P070615功能說明=1接通正轉/斷開停車=2接通反轉/斷開停車=3斷開按慣性自由停車=9故障復位=10正向點動=11反向點動=12反轉〔與正轉命令配合使用=13電動電位計升速=14電動電位計降速=15固定頻率直接選擇=16固定頻率選擇+ON命令=17固定頻率編碼選擇+ON命令2、變頻器參數復位:參數復位是將變頻器的參數恢復到出廠時的參數默認值。在變頻器初次調試,或者參數設置混亂時,需要執行該操作,以便于將變頻器的參數值恢復到一個確定的默認狀態。MM440包含六個數字開關量輸入端子,每個端子都有一個對應的參數用來設定該端子的功能。恢復變頻器缺省值,按下"P"健,變頻器開始復位到工廠缺省值。表2.由BOP操作時的工廠缺省設置值參數號出廠值設置值說明P0010030工廠的設定值P097001參數復位壓力變送器工作原理壓力變送器的主要作用把壓力信號傳到電子設備,進而在計算機顯示壓力。其原理大致是:將水壓這種壓力的力學信號轉變成電流〔4-20mA這樣的電子信號。壓力和電壓或電流大小成線性關系,一般是正比關系。所以,變送器輸出的電壓或電流隨壓力增大而增大,由此得出一個壓力和電壓或電流的關系式。壓力變送器的被測介質的兩種壓力通入高、低兩壓力室,低壓室壓力采用大氣壓或真空,作用在δ元〔即敏感元件的兩側隔離膜片上,通過隔離片和元件內的填充液傳送到測量膜片兩側。壓力變送器是由測量膜片與兩側絕緣片上的電極各組成一個電容器。當兩側壓力不一致時,致使測量膜片產生位移,其位移量和壓力差成正比,故兩側電容量就不等。主要優點〔1>壓力變送器具有工作可靠、性能穩定等特點;〔2>高準確度,高穩定性;〔3>4-20mADC二線制信號傳送,抗干擾能力強,傳輸距離遠;〔4>鋁合金壓鑄外殼,三端隔離,靜電噴塑保護層,堅固耐用;〔5>專用V/I集成電路,外圍器件少,可靠性高,維護簡單/體積小、重量輕,安裝方便。PID工作原理PID是比例<P>、積分<I>、微分<D>控制算法。但并不是必須同時具備這三種算法,也可以是PD,PI,甚至只有P算法控制。我以前對于閉環控制的一個最樸素的想法就只有P控制,將當前結果反饋回來,再與目標相減,為正的話,就減速,為負的話就加速。現在知道這只是最簡單的閉環控制算法。比例<P>、積分<I>、微分<D>控制算法各有作用: 比例:反應系統的基本〔當前偏差e<t>,系數大,可以加快調節,減小誤差,但過大的比例使系統穩定性下降,甚至造成系統不穩定;積分:反應系統的累計偏差,使系統消除穩態誤差,提高無差度,因為有誤差,積分調節就進行,直至無誤差; 微分:反映系統偏差信號的變化率e<t>-e<t-1>,具有預見性,能預見偏差變化的趨勢,產生超前的控制作用,在偏差還沒有形成之前,已被微分調節作用消除,因此可以改善系統的動態性能。但是微分對噪聲干擾有放大作用,加強微分對系統抗干擾不利。積分和微分都不能單獨起作用,必須與比例控制配合。增量式PID:是指數字控制器的輸出只是控制量的增量Δu<k>。采用增量式算法時,計算機輸出的控制量Δu<k>對應的是本次執行機構位置的增量,而不是對應執行機構的實際位置。增量型PID算式:PID=Uk+KP*[E<k>-E<k-1>]+KI*E<k>+KD*[E<k>-2E<k-1>+E<k-2>];增量式算法優點:算式中不需要累加。控制增量Δu<k>的確定僅與最近3次的采樣值有關,容易通過加權處理獲得比較好的控制效果;計算機每次只輸出控制增量,即對應執行機構位置的變化量,故機器發生故障時影響范圍小、不會嚴重影響生產過程;手動—自動切換時沖擊小。當控制從手動向自動切換時,可以作到無擾動切換。課題實施方案1、硬件設計在本方案中,由51單片機試驗箱、變頻器MM440、壓力變送器組成。1>、51單片機試驗箱完成對模擬量輸入輸出EM235模塊數字輸入信號的讀取,并且負責PID輸入輸出的計算,并將結果化為數字量放入模擬量輸入輸出EM235模塊。2>、變頻器MM440主要是用來完成對水泵的控制,當頻率為0HZ時水泵不抽水,液位維持不變;當頻率為50HZ時,水泵最大功率輸出,提高液位。3>、壓力變送器主要任務是將水缸中的水的壓力信號轉換成4-20mA的電流信號并且輸入模擬量輸入輸出EM235模塊從而達到監視系統水位的目的。4>、模擬量輸入輸出EM235模塊負責將模擬量轉化為數字量以方便單片機讀取,并且將PLC-200的輸出數字量轉化成模擬量以便控制變頻器MM440。電路原理圖2.軟件設計PID算法部分:/*PID=Uk+KP*[E<k>-E<k-1>]+KI*E<k>+KD*[E<k>-2E<k-1>+E<k-2>];<增量型PID算式>函數入口:RK<設定值>,CK<實際值>,KP,KI,KD函數出口:U<K>*///pid.c/*PID=PID->UK_REAL+PID->KP*[E<k>-E<k-1>]+PID->KI*E<k>+PID->KD*[E<k>-2E<k-1>+E<k-2>];<增量型PID算式>函數入口:PID->RK<設定值>,PID->CK<實際值>,PID->KP,PID->KI,PID->KD函數出口:U<K>*///#include"defines.h"#include"pid.h"#defineMAXOUT0xff//#defineMAXGAP100voidpid_exe<pid_str*PID> //指針指向PID結構體{PID->EK[2]=PID->EK[1]; //Double上差量->上次差量PID->EK[1]=PID->EK[0]; //上次差量->當前差量PID->EK[0]=PID->RK-PID->CK; //當前差量=水位設定值-水位實際值 if<PID->EK[0]<=10&&PID->EK[0]>=-10> PID->EK[0]=0;PID->UK_REAL=PID->UK_REAL+PID->KP*<PID->EK[0]-PID->EK[1]>//微分一次后積分即原數+<float>PID->KI*PID->EK[0]//直接積分+<float>PID->KD*<PID->EK[0]-2*PID->EK[1]+PID->EK[2]>;//二階微分后積分即一階微分if<<PID->UK_REAL>>PID->BITMOV>>=MAXOUT> //AD輸出量>上限值{PID->UK=MAXOUT; //AD輸出量=上限值}elseif<PID->UK_REAL>>PID->BITMOV<=0>//AD輸出量{PID->UK=0;}else{PID->UK=PID->UK_REAL>>PID->BITMOV;//實際輸出量}}PID頭文件:主函數部分:/********************************************************************************* 普中科技*實驗名 :AD顯示試驗*實驗說明:使用LCD1602顯示AD讀取到的各個數值*連接方式:見連接圖*注意 :*******************************************************************************/#include<reg51.h>#include"i2c.h"#include"lcd.h"#include"pid.h"http://--定義PCF8591的讀寫地址--//#defineWRITEADDR0x90 //寫地址#defineREADADDR0x91 //讀地址pid_str swkz;voidDelay<unsignedinti>{while<i-->;}voidset_pid_para<void>{swkz.KP=3;swkz.KI=0.5;swkz.KD=0;swkz.RK=450;swkz.EK[2]=0; swkz.EK[1]=0; swkz.EK[0]=0;swkz.BITMOV=1;swkz.UK_REAL=0; }/********************************************************************************函數名:Pcf8591SendByte*函數功能 :寫入一個控制命令*輸入:channel〔轉換通道*輸出:無*******************************************************************************/voidPcf8591SendByte<unsignedcharchannel>{ I2C_Start<>; I2C_SendByte<WRITEADDR,1>;//發送寫器件地址 I2C_SendByte<0x40|channel,0>;//發送控制寄存器 I2C_Stop<>;}/********************************************************************************函數名:Pcf8591ReadByte*函數功能 :讀取一個轉換值*輸入:無*輸出:dat*******************************************************************************/unsignedcharPcf8591ReadByte<>{ unsignedchardat; I2C_Start<>; I2C_SendByte<READADDR,1>;//發送讀器件地址 dat=I2C_ReadByte<>;//讀取數據 I2C_Stop<>;//結束總線returndat;}/********************************************************************************函數名:Pcf8591DaConversion*函數功能 :PCF8591的輸出端輸出模擬量*輸入:value〔轉換的數值*輸出:無*******************************************************************************/voidPcf8591DaConversion<unsignedcharvalue>{ I2C_Start<>; I2C_SendByte<WRITEADDR,1>;//發送寫器件地址 I2C_SendByte<0x40,1>;//開啟DA寫到控制寄存器 I2C_SendByte<value,0>;//發送轉換數值 I2C_Stop<>; }voidDis_Play<unsignedintdata1>{ LcdWriteData<'0'+data1/1000>; //發送顯示數據 LcdWriteData<'0'+data1%1000/100>; LcdWriteData<'0'+data1%100/10>; LcdWriteData<'0'+data1%10>;}/********************************************************************************函數名:main*函數功能 :主函數*輸入:無*輸出:無*******************************************************************************/voidmain<>{ unsignedintAD_Read=0; // AD_Read->信號輸入量 LcdInit<>; //1602液晶初始化 set_pid_para<>; //給 PID賦初值 while<1> { AD_Read=Pcf8591ReadByte<>*2;//ADC讀取外部輸入電壓先空讀一次 swkz.CK=AD_Read; //把讀入的AD值付給PID.CK write_str<1,0,"AD:">; Dis_Play<AD_Read>; //顯示當前讀入AD電壓值 0-510->水位的高度 Pcf8591SendByte<3>;//發送電位器轉換命令 AD_Read=Pcf8591ReadByte<>*2; //再度讀一次,讀出當前數據 AD_Read->信號輸入量0-510->水位的高度 //--PIDDA輸出--// pid_exe<&swkz>; //PID計算出AD輸出量 write_str<0,0,"OUTPUT:">; Dis_Play<swkz.UK>; Pcf8591DaConversion<swkz.UK>; //AD輸出量給控制 //Del

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論