智能化壓力控制系統(tǒng)設計_第1頁
智能化壓力控制系統(tǒng)設計_第2頁
智能化壓力控制系統(tǒng)設計_第3頁
智能化壓力控制系統(tǒng)設計_第4頁
智能化壓力控制系統(tǒng)設計_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 過程控制系統(tǒng)課程設計智能化壓力控制系統(tǒng)設計院 別 專業(yè)名稱班級學號學生姓名指導教師2014.7.8-2014.7.191、 前言 在科技飛速發(fā)展的今天,智能化已經(jīng)成為這個時代的主旋律,大到工業(yè)生產(chǎn),小到手機、家具。其中,壓力是不可或缺的一個重要參數(shù)。為實現(xiàn)鍋爐氣壓的準確地自動檢測與控制,我們基于51單片機,設計了氣壓自動控制系統(tǒng)。它通過實時采集氣壓傳感器電壓進行PID運算,輸出PWM,從而控制固態(tài)繼電器對鍋爐進行加熱,使鍋爐氣壓快速準確的達到設定值。與其它同類系統(tǒng)相比,本系統(tǒng)具有經(jīng)濟、方便等特點,適合小型控制。關(guān)鍵詞:鍋爐氣壓、51單片機、自動控制、PID2、 任務書1、系統(tǒng)構(gòu)成: 系統(tǒng)主要

2、由壓力傳感器,單片機控制系統(tǒng)、對象、執(zhí)行器(查找資料自行選擇)等組成。壓力傳感器、控制器、對象、執(zhí)行器可查找資料自行選擇,控制器選擇單片機為控制器。單片機型號自選。2、寫出壓力測量與控制過程,繪制壓力控制系統(tǒng)組成框圖。3、(1)系統(tǒng)硬件電路設計自選。 (2)編制壓力測量控制程序:軟件采用模塊化程序結(jié)構(gòu)設計,由壓力采集程序、壓力校準程序、壓力控制程序等部分組成。3、 選型1、傳感器:HL-DQ1氣壓傳感器HL-DQ1氣壓傳感器采用進口高精度壓力芯片,測量精度高、穩(wěn)定性好。精密信號處理電路可根據(jù)用戶的不同需求將大氣壓力轉(zhuǎn)換為電壓或電流等其它輸出信號。具有體積小巧,性能可靠,精度高,負載能力強,傳輸

3、距離長,抗干擾能力強等特點??蓮V泛用于氣象、海洋、環(huán)境、機場、港口、實驗室、工農(nóng)業(yè)及交通等領(lǐng)域。 產(chǎn)品特點:連接簡便、體積小巧 、性價比高,專業(yè)級大氣壓力 應用范圍各類自動氣象站的大氣壓力專業(yè)測量 測量范圍:5001060hPa 輸出:頻率/電壓/智能 分辨率:0.1hPa 2、控制器:51單片機外接串行AD轉(zhuǎn)化芯片ADC0832將傳感器電壓轉(zhuǎn)換成數(shù)字量,通過1602顯示屏顯示實時數(shù)據(jù),使用定時器模擬一路PWM控制執(zhí)行器。3、被控對象:普通鍋爐4、執(zhí)行器:固態(tài)繼電器4、 主體設計1、 系統(tǒng)框圖給定值氣壓 51單片機 鍋爐 固態(tài)繼電器 ADC0832 壓力傳感器說明:本系統(tǒng)根據(jù)單閉環(huán)自動控制系統(tǒng)

4、的特點,以89C51單片機作為調(diào)節(jié)器,通過對傳感器輸出的電壓信號進行AD轉(zhuǎn)換,與給定值進行作差比較,單片機程序中進行相應的PID運算,在1602顯示屏上顯示采集到的電壓值,轉(zhuǎn)化后的氣壓值,輸出相應占空比的PWM信號控制固態(tài)繼電器加熱,使鍋爐氣壓快速準確到達并穩(wěn)定在設定值。2、 系統(tǒng)操作說明 啟動系統(tǒng)之后,顯示屏顯示默認的PID參數(shù)和設定值,通過按鍵ADD,SUB,NEXT,OK可實現(xiàn)參數(shù)加減修改,參數(shù)選擇,參數(shù)確認操作,之后系統(tǒng)進行自動運行,無需人干預,當壓力值高于設定值110%的時候能夠自動報警。3、 硬件電路設計proteus仿真電路圖說明:按鍵:ADD、SUB、NEXT、OK按鍵依次接單

5、片機P2.1、P2.2、P2.3、P2.4引腳,低電平觸發(fā)。ADC0832:DI、DO接單片機P3.4引腳,CS接P3.5,CLK接P3.3顯示屛1602:RS接P2.6,RW 接P2.5,LCDEN接P2.7,數(shù)據(jù)口D0D7接P0口,為提高穩(wěn)定性和引腳驅(qū)動能力,P0口接上拉電阻。4、 程序設計顯示屏顯示字符代碼 init_lcd1602();/液晶1602顯示初始化 write_cmd(0x81); write_date(K); write_date(p); write_date(:); write_cmd(0x89); write_date(K); write_date(i); write

6、_date(:); write_cmd(0xc1); write_date(K); write_date(d); write_date(:); write_cmd(0xc9); write_date(A); write_date(i); write_date(m); write_date(:); 參數(shù)修改代碼 while(1) if(add=0) delay(10); if(add=0) while(add=0);switch(choose) case 1:kp+=0.1;break; case 2:ki+=0.1;break; case 3:kd+=0.1;break; case 4:aim

7、+=0.1;break; if(sub=0) delay(10); if(sub=0) while(sub=0);switch(choose) case 1:kp-=0.1;break; case 2:ki-=0.1;break; case 3:kd-=0.1;break; case 4:aim-=0.1;break; if(next=0) delay(10); if(next=0) while(next=0); choose+;if(choose=5)choose=1; if(ok=0) delay(10); if(ok=0) break; pidshow(); pidshow子程序void

8、 pidshow()int dt,dt1,dt2,dt3;dt=kp*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0x84);/write_date(dt1);write_date(dt2);write_date(.);write_date(dt3);dt=ki*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0x8c);/write_date(dt1);write_date(dt2);write_date(.);write_date(

9、dt3); dt=kd*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0xc4);/write_date(dt1);write_date(dt2);write_date(.);write_date(dt3);dt=aim*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0xcd);/write_date(dt1);write_date(dt2);write_date(.);write_date(dt3);switch(choose) ca

10、se 1: write_cmd(0x80); write_date(0x7e); write_cmd(0x88); write_date(0x20); write_cmd(0xc0); write_date(0x20); write_cmd(0xc8); write_date(0x20); break; case 2: write_cmd(0x80); write_date(0x20); write_cmd(0x88); write_date(0x7e); write_cmd(0xc0); write_date(0x20); write_cmd(0xc8); write_date(0x20);

11、 break; case 3: write_cmd(0x80); write_date(0x20); write_cmd(0x88); write_date(0x20); write_cmd(0xc0); write_date(0x7e); write_cmd(0xc8); write_date(0x20); break; case 4: write_cmd(0x80); write_date(0x20); write_cmd(0x88); write_date(0x20); write_cmd(0xc0); write_date(0x20); write_cmd(0xc8); write_d

12、ate(0x7e); break; 、串行ADC0832轉(zhuǎn)換程序uchar ADC0832(uchar CH) uchar dis0,dis1; Clk=0; /拉低時鐘 DI=1; /初始化 _nop_();CS=0; /芯片選定 _nop_(); Clk=1; /拉高時鐘 _nop_();if(CH=0) /通道選擇 Clk=0; /第一次拉低時鐘 DI=1; /通道0的第一位 _nop_(); Clk=1; /拉高時鐘 _nop_(); Clk=0; /第二次拉低時鐘,ADC0832 DI接受數(shù)據(jù) DI=0; /通道0的第二位 _nop_(); Clk=1; _nop_(); else

13、Clk=0; DI=1; /通道1的第一位 _nop_(); Clk=1; _nop_(); Clk=0; DI=1; /通道1的第二位 _nop_(); Clk=1; _nop_(); Clk=0; /第三次拉低時鐘,此前DI兩次賦值決定通道 DI=1; /DI開始失效,拉高電平,便于DO數(shù)據(jù)傳輸 for(i= 0;i8;i+) /讀取前8位的值 _nop_(); dis0= 1; Clk=1; _nop_(); Clk=0; if (DO) dis0|=0x01; else dis0|=0x00; for (i=0;i= 1; if (DO) dis1|= 0x80; else dis1|

14、= 0x00; _nop_(); Clk=1; _nop_(); Clk=0; if(dis0=dis1) /兩次結(jié)束數(shù)據(jù)比較,若相等 date=dis0; /則賦值給dat _nop_(); CS=1; /釋放ADC0832 DO=1; /拉高輸出端,方便下次通道選擇DI端有效 Clk=1; /拉高時鐘 return date;5、 參考文獻1邵裕森、戴先中.過程控制工程.北京:機械工業(yè)出版社,2000.52蕭德云譯過程控制系統(tǒng)應用、設計與整定(第3版)清華大學出版社,2004.53金以慧過程控制清華大學出版社,2002.36、 結(jié)束語 在本次課設過程中,我主要工作是運用Proteus軟件進

15、行連接電路圖和仿真。通過這次課設,我對Proteus軟件的使用更加熟悉。這次課設是大學最后一個課設了,所以團隊成員分工合作、共同討論疑難點時也都非常積極主動,同時也不乏一些快樂。七、附錄1、仿真結(jié)果2、完整程序代碼#include #include #define uint unsigned int#define uchar unsigned charsbit lcdrs=P26;sbit lcdrw=P25;sbit lcden=P27; /1602控制端口sbit DI=P34;sbit DO=P34; /DI和DO與單片機共接口sbit Clk=P33;sbit CS=P35;/ADC0

16、832控制端口sbit pwm=P20;sbit add=P21;sbit sub=P22;sbit next=P23;sbit ok=P24;sbit beep=P10;uchar dis3=0x00,0x00,0x00; /顯示緩沖區(qū)電壓值uchar dis13=0x00,0x00,0x00; /顯示緩沖區(qū)壓強值uchar dis23=0x00,0x00,0x00; /顯示緩沖區(qū)輸出占空比uchar date=0; /AD值int press=0;/壓力值int out=50;int choose=1;uchar i;uchar CH; /ADC0832通道值uchar timer1; f

17、loat kp=6;float ki=0.1;float kd=0.2;float aim=5;void system_Ini() TMOD|= 0x11;/PWM TH0 = 0xff; /11.0592TL0 = 0x9a;TR0 = 1; IE =0x8A;/*AD0832轉(zhuǎn)換程序*/uchar ADC0832(uchar CH) uchar dis0,dis1; Clk=0; /拉低時鐘 DI=1; /初始化 _nop_();CS=0; /芯片選定 _nop_(); Clk=1; /拉高時鐘 _nop_();if(CH=0) /通道選擇 Clk=0; /第一次拉低時鐘 DI=1; /通

18、道0的第一位 _nop_(); Clk=1; /拉高時鐘 _nop_(); Clk=0; /第二次拉低時鐘,ADC0832 DI接受數(shù)據(jù) DI=0; /通道0的第二位 _nop_(); Clk=1; _nop_(); else Clk=0; DI=1; /通道1的第一位 _nop_(); Clk=1; _nop_(); Clk=0; DI=1; /通道1的第二位 _nop_(); Clk=1; _nop_(); Clk=0; /第三次拉低時鐘,此前DI兩次賦值決定通道 DI=1; /DI開始失效,拉高電平,便于DO數(shù)據(jù)傳輸 for(i= 0;i8;i+) /讀取前8位的值 _nop_(); d

19、is0= 1; Clk=1; _nop_(); Clk=0; if (DO) dis0|=0x01; else dis0|=0x00; for (i=0;i= 1; if (DO) dis1|= 0x80; else dis1|= 0x00; _nop_(); Clk=1; _nop_(); Clk=0; if(dis0=dis1) /兩次結(jié)束數(shù)據(jù)比較,若相等 date=dis0; /則賦值給dat _nop_(); CS=1; /釋放ADC0832 DO=1; /拉高輸出端,方便下次通道選擇DI端有效 Clk=1; /拉高時鐘 return date;/*數(shù)據(jù)轉(zhuǎn)換程序功能:將0-255級換算

20、成0.00-5.00的電壓數(shù)*/void convert(uchar a) uint temp; /特別注意這里需定義int型(余數(shù)將大于255)dis0=a/51; /取個位temp=a%51;temp=temp*10;dis1=temp/51; /取小數(shù)點后第一位temp=temp%51;temp=temp*10;dis2=temp/51; /取小數(shù)點后第二位press=(dis0+dis1*0.1+dis0*0.01)*1000/4;dis10=press/100;dis11=press%100/10;dis12=press%10;dis20=out/100;dis21=out%100/

21、10;dis22=out%10;/*LCD1602驅(qū)動程序*/void delay(uchar z)uint x,y;for(x=z;x0;x-)for(y=122;y0;y-);void write_cmd(uchar cmd)/lcd1602寫命令函數(shù)lcdrs=0;lcdrw=0; /選擇指令寄存器lcden=1;P0=cmd; /寫數(shù)據(jù)delay(5);lcden=0; /使能拉低lcden=1;void write_date(uchar date)/lcd1602寫數(shù)據(jù)函數(shù)lcdrs=1;lcdrw=0; /選擇數(shù)據(jù)寄存器lcden=1;P0=date; /寫數(shù)據(jù)delay(5);lcden=0; /使能拉低lcden=1;void init_lcd1602()/lcd1602初始化write_cmd(0x01); /清屏write_cmd(0x38); /功能設置write_cmd(0x0c); /顯示設置write_cm

溫馨提示

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

評論

0/150

提交評論