Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 90 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
90
Dung lượng
1,23 MB
Nội dung
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ MỤC LỤC Phần LÝ THUYẾT Chương Các khối điềukhiểnnhiệtđộ Chương Nhiệtđộ – Các loại cảm biến nhiệtđộ .11 Nhiệt độvà thang đonhiệtđộ 12 Các loại cảm biết nhiệtđộ 13 2.1 Thermocouple 13 2.2 RTD 13 2.3 Thermistor .14 2.4 IC cảm biến 14 Thermocouple hiệu ứng Seebeck .15 3.1 Hiệu ứng Seebeck 15 3.2 Quá trình dẫn điện Thermocouple .15 3.3 Cách đo hiệu điện 17 3.4 Bù nhiệt môi trường 19 3.5 Các loại Thermocouple 20 3.4 Một sốnhiệtđộ chuẩn 21 Chương Các phương pháp biến đổi AD Card PCL-818 Advantech 22 Sơ lược phương pháp biến đổi AD .22 1.1 Biến đổi AD dùng biến đổi DA 22 1.2 Bộ biến đổi Flash-AD .26 1.3 Bộ biến đổi AD theo hàm dốc dạng lên xuống 27 1.4 Bộ biến đổi AD dùng chuyển đổi áp sang tần số 27 1.5 Bộ biến đổi AD theo tích phân độ dốc 28 Card AD - PCL818 hãng Advantech 29 2.1 Các ghi Card 29 2.2 Chuyển đổi A/D , D/A , D/I , D/O .41 Chương Các phương pháp điềukhiển Phương pháp PIDsố 44 Các phương pháp điềukhiển 44 1.1 Điềukhiển On - Of 44 1.2 Điềukhiển khâu tỷ lệ 45 1.3 Điềukhiển khâu vi phân tỷ lệ PD 46 1.2 Điềukhiển khâu vi tích phân tỷ lệ PID 47 Phương pháp điềukhiểnPIDsố 49 Thiết kế PIDsố .51 ĐiềukhiểnPID hệ thống điềukhiểnnhiệtđộ .52 Chương Các Loại Mạch Kích Và Solid State Relay ( SSR ) 56 Đóng ngắt OpTo - Triac 56 Contactor Quang – Solid State Relay 58 Chương Các loại IC khác 60 IC Khác 60 OP07 61 Phần Phần Cứng .62 Khối cảm biến mạch gia công 63 Phần Lưu đồ giải thuật chương trình 67 1.Lưu đồ giải thuật 68 2.Chương trình điềukhiển ngơn ngữ Delphi .71 Biểu đồ khảo sát hệ thống nhiệt 99 Tài liệu tham khảo 102 LỜI NÓI ĐẦU Như biết, nhiệtđộ thành phần vật lý quan trọng Việc thay đổi nhiệtđộ vật chất ảnh hưởng nhiều đến cấu tạo, tính chất, đại lượng vật lý khác vật chất Ví dụ, thay đổi nhiệtđộ chất khí làm thay đổi thể tích, áp suất chất khí bình Vì vậy, nghiên cứu khoa học, công nghiệp đời sống sinh hoạt, thu thập thông sốđiềukhiểnnhiệtđộđiều cần thiết Trong lò nhiệt, máy điều hồ, máy lạnh hay lò viba, điềukhiểnnhiệtđộ tính chất định cho sản phảm Trong ngành luyện kim, cần phải đạt đến nhiệtđộ để kim loại nóng chảy, cần đạt nhiệtđộ để ủ kim loại nhằm đạt tốt đặc tính học độ bền, độ dẻo, độ chống gỉ sét, … Trong ngành thực phẩm, cần trì nhiệtđộ để nướng bánh, để nấu, để bảo quản, … Việc thay đổi thất thường nhiệt độ, không gây hư hại đến thiết bị hoạt động, ảnh hưởng đến q trình sản xuất, sản phẩm Có nhiều phương pháp để điềukhiển lò nhiệtđộ Mỗi phương pháp mang đến kết khác thông qua phương pháp điềukhiển khác Trong nội dung luận văn này, cho ta phương pháp điềukhiển On-Of , PI điềukhiểnPID thông qua Card AD giao tiếp với máy tính PCL818 Mọi liệu q trình điềukhiển hiển thị lên máy tính dựa ngơn ngữ lập trình Delphi CÁC KHỐI CƠ BẢN TRONG HỆ THỐNG ĐIỀUKHIỂNNHIỆTĐỘ Hệ thống điềukhiểnnhiệtđộ thông dụng công nghiệp bao gồm : Cảm biến mạch gia cơng Mạch kích lò nhiệt Card AD/DA PCL818L Màn hình hiển thị Máy tính Chương trình điềukhiển Như mạch có khối sau : Khối cảm biết gia công : sử dụng cảm biến nhiệtđộ Thermocouple, lấy tín hiệu thông qua Op-Amp OP-07, đưa nhiệtđộ cần xử lý ngõ vào Analog biến đổi AD Bộ biến đổi AD : mạch lấy tín hiệu AD để xử lý thông qua Card AD PCL-818 hãng Advantech Thơng qua đó, Card AD đưa giá trị nhiệtđộ thông số khác cho máy tính xử lý Ngồi PCL-818 Card DA với nhiệm vụ điềukhiển mạch kích cho mạch nhiệtđộ Mạch công suất : mạch bị tác động trực tiếp bới PCL-818, với nhiệm vụ kích ngắt lò q trình điềukhiển Linh kiện sử dụng mạch Solid State Relay(SSR) Khối xử lý :có thể xem máy tính khối xử lý Với ngơn ngữ lập trình Delphi, máy tính điềukhiển q trình đóng, ngắt lò Màn hình hiển thị : hình giao diện Delphi Các giá trị, nhu thông số, tác động kỹ thuật tác động trực tiếp hình Các hãng kỹ thuật ngày tích hợp thành phần thành sản phẩm chuyên dùng bán thị trường Có chương trình giao diện ( Visual Basic ) có nút điều khiển, thuận lợi cho người sử dụng Có thể chọn khâu khuếch đại P, PI, PD hay PID hãng Contronautics, Incorporated Simpson Electric Company… Trở lại mơ hình điềukhiển nhiệt, sơđồ khối mơ hình hố q trình điềukhiển lò nhiệt Để tìm hiểu rõ chi tiết khác phương pháp thiết bị kỹ thuật sử dụng, xem xét thông chương NHIỆTĐỘ CÁC LOẠI CẢM BIẾN NHIỆTĐỘ THÔNG DỤNG Nhiệtđộ thành phần chủ yếu hệ thống thu thập liệu Do vậy, chọn lựa thiết bị đo lường nhiệtđộ xác ta tiệt kiệm chi phí lượng, tăng độ an toàn giảm thời gian kiểm tra… thiết bị đo lường nhiệtđộ thường dùng cảm biến nhiệtđộ Cặp nhiệt điện, điện trở nhiệt, thermistors and infrared thermometers loại cảm biến nhiệtđộ thông thường Việc chọn lựa thiết bị để hoạt động xác tuỳ thuộc vào nhiệtđộ tối đa, tối thiểu cần đo, độ xác điều kiện mơi trường Trước hết, tìm hiểu khái niệm nhiệtđộNHIỆTĐỘ VÀ CÁC THANG ĐONHIỆTĐỘ Galileo cho người phát minh thiết bị đonhiệt độ, vào khoảng năm 1592 Ơng ta làm thí nghiệm sau : bồn hở chứa đầy cồn, ông cho treo ống thủy tinh dài có cổ hẹp, đầu có bầu hình cầu chứa đầy khơng khí Khi gia tăng nhiệt, khơng khí bầu nở sơi sùng sục cồn Còn lạnh khơng khí co lại cồn dâng lên lòng ống thủy tinh Do đó, thay đổi nhiệt bầu biết cách quan sát vị trí cồn lòng ống thủy tinh Tuy nhiên, người ta biết thay đổi nhiệtđộ khơng biết chưa có tầm đo cho nhiệtđộ Đầu năm 1700, Gabriel Fahrenheit, nhà chế tạo thiết bị đo người Hà Lan, tạo thiết bị đo xác cho phép lặp lại nhiều lần Đầu thiết bị gán độ, đánh dấu vị trí nhiệt nước đá trộn với muối (hay ammonium chloride) nhiệtđộ thấp thời Đầu thiết bị gán 96 độ, đánh dấu nhiệtđộ máu người Tại 96 độ mà 100 độ? Câu trả lời người ta chia tỷ lệ theo 12 phần tỷ lệ khác thời Khoảng năm 1742, Anders Celsius đề xuất ý kiến lấy điểm tan nước đá gán độ điểm sôi nước gán 100 độ, chia làm 100 phần Đầu năm 1800, William Thomson (Lord Kelvin) phát triển tầm đo phổ quát dựa hệ số giãn nở khí lý tưởng Kelvin thiết lập khái niệm độ tuyệt đối tầm đo chọn tiêu chuẩn cho đonhiệt đại Thang Kelvin : đơn vị K Trong thang Kelvin này, người ta gán cho nhiệtđộ cho điểm cân ba trạng thái: nước – nước đá – mp65t giá trị số 273.15K Từ thang nhiệtđộnhiệt động học tuyệt đối( Thang Kelvin), người ta xác định thang thang Celsius thang Fahrenheit( cách dịch chuyển giá trị nhiệt độ) Thang Celsius : Trong thang đo này, đơn vị nhiệtđộ (C ), độ Celsius độ Kelvin Quan hệ nhiệtđộ Celsius nhiệtđộ Kelvin xác định biểu thức : T(C) = T(K) - 273,15 Thang Fahrenheit : T(C) =5/9 {T(F) – 32} T(F) =9/5 T(C) + 32 CÁC LOẠI CẢM BIẾN HIỆN TẠI Tùy theo lĩnh vực đođiều kiện thực tế mà chọn bốn loại cảm biến : thermocouple, RTD, thermistor, IC bán dẫn Mỗi loại có ưu điểm khuyết điểm riêng 2.1 Thermocouple Ưu điểm Là thành phần tích cực, tự cung cấp cơng suất Đơn giản Rẻ tiền Tầm thay đổi rộng Tầm đonhiệt rộng Khuyết điểm Phi tuyến Điện áp cung cấp thấp Đòi hỏi điện áp tham chiếu Kém ổn định Kém nhạy 2.2 RTD (resistance temperature detector) Ưu điểm Ổn định Chính xác Tuyến tính thermocouple Khuyết điểm Mắc tiền Cần phải cung cấp nguồn dòng Lượng thay đổi R nhỏ Điện trở tuyệt đối thấp Tự gia tăng nhiệt 2.3 Thermistor Ưu điểm Ngõ có giá trị lớn Nhanh Đo hai dây Khuyết điểm Phi tuyến Giới hạn tầm đonhiệt Dễ vỡ 10 { } {31} procedure TFormthongso.ButtonhoatdongClick(Sender: TObject); var ess,essmau:real; begin analog_out($0FFF); Tmau:=StrtoInt(Edit9.Text)*1000; y[1]:=0; i:=1; essmau:=0.000001; formthongso.Timer1.Interval := Tmau; formthongso.Timer1.Enabled := True; If (y[i]>y[i-1])then ymax:=y[i] else ymax:=y[i-1]; If (Read_AD>=4095) then break; messagedlg(' Chuong trinh da tim duoc thong so cua lo- Hay nhan Button ket qua de xem thong so',mtInformation,[mbOK],0); end; { -} {32} procedure TFormthongso.ButtondungClick(Sender: TObject); begin analog_out($0000); messagedlg(' Thank you for using My Program',mtInformation,[mbOK],0); Application.Terminate ; end; { -} {33}procedure TFormthongso.FormPaint(Sender: TObject); begin Canvas.Pen.Style:=psInsideFrame; Canvas.Brush.Color :=clwhite; Canvas.FillRect(Rect(10,200,330,460)); Canvas.MoveTo(80,250); { ve truc tung} Canvas.LineTo(80,430); Canvas.MoveTo(80,430); { ve truc hoanh } Canvas.LineTo(300,430); Canvas.Pen.Style:=psDash; Canvas.MoveTo(80,280); 76 Canvas.LineTo(280,280); Canvas.MoveTo(80,330); Canvas.LineTo(280,330); Canvas.MoveTo(80,380); Canvas.LineTo(280,380); Canvas.MoveTo(130,280); Canvas.LineTo(130,430); Canvas.MoveTo(180,280); Canvas.LineTo(180,430); Canvas.MoveTo(230,280); Canvas.LineTo(230,430); Canvas.MoveTo(280,280); Canvas.LineTo(280,430); Canvas.Pen.Style:= psSolid; Canvas.Textout(72,435,'0'); Canvas.Textout(122,435,'50'); Canvas.Textout(172,435,'100'); Canvas.Textout(222,435,'150'); Canvas.Textout(272,435,'200'); Canvas.Textout(58,377,'50'); Canvas.Textout(58,327,'100'); Canvas.Textout(58,277,'150'); Canvas.Textout(310,424,'i'); Canvas.Textout(60,240,'Nhiet do'); Canvas.Textout(80,210,'Qua trinh dieukhiennhiet cua lo nhiet'); end; { -} {34} procedure TFormthongso.Button2Click(Sender: TObject); begin analog_out($0000); end; end 77 CHƯƠNG TRÌNH ĐỌC HIỆU CHỈNH NHIỆTĐỘ THEO PHƯƠNGPHÁP ON-OFF , PI & PID Phương pháp On – Of Phương pháp PID unit Unitdieukhien; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart, Buttons; type TFormdieukhien = class(TForm) RadioGroup1: TRadioGroup; Buttonhoatdong: TButton; Timer1: TTimer; GroupBox2: TGroupBox; Label5: TLabel; 78 Label6: TLabel; Label7: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; GroupBox3: TGroupBox; Label8: TLabel; Label9: TLabel; Edit7: TEdit; Edit8: TEdit; Buttondung: TButton; GroupBox4: TGroupBox; Editgtrisaisohtai: TEdit; Editgtrinhietdohtai: TEdit; Label10: TLabel; Label11: TLabel; Label12: TLabel; Edit9: TEdit; Label13: TLabel; Edit10: TEdit; Timer2: TTimer; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Memo1: TMemo; Timer3: TTimer; Edit1: TEdit; Timer4: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure dkonof; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure ButtondungClick(Sender: TObject); procedure ButtonhoatdongClick(Sender: TObject); procedure Timer3Timer(Sender: TObject); procedure Timer4Timer(Sender: TObject); procedure FormPaint(Sender: TObject); procedure BitBtn3Click(Sender: TObject); 79 private { Private declarations } public { Public declarations } end; Const base=$300; reg0= base + 0; reg1= base + 1; reg2= base + 2; reg3= base + 3; reg4= base + 4; reg5= base + 5; reg6= base + 6; reg7= base + 7; reg8= base + 8; reg9= base + 9; reg10= base + 10; reg11= base + 11; reg12= base + 12; reg13= base + 13; reg14= base + 14; reg15= base + 15; var Formdieukhien: TFormdieukhien; nhietdohtai,nhietdodat:real; Udk, U0, Ukt:real; Ekt, Ekt1,Ekt2:real; nhietdomax:real; sv,pv:real; Tmau:integer; dqc,chao:string[200]; ess:real; i:integer; pot:real; Kp,Ki,Kd:real; implementation 80 uses Unitthongso; {$R *.DFM} {1} Function inport(address:word):byte; var data:byte; begin asm mov dx,address in al,dx mov data,al end; inport:=data; end; { } {2} procedure outport(address:word;data:byte); Begin asm mov dx,address mov al,data out dx,al end; end; { -} {3} Function INT:byte; begin INT:=(inport(reg8) and $10) shr 4; end; { } {4} Function EOC:byte; begin EOC:=(inport(reg8)and $80)shr 7; end; { } {5} Procedure set_rangeAD(range:byte); { dat tam dien ap ngo } var rang:byte; begin rang:=range and $03; outport(reg1,rang); end; { } 81 {6} Procedure set_trigsource(trs:byte); var i:byte; begin i:=inport(reg9) and $FC; outport(reg9,i or trs); end; { } {7} Procedure analog_out(data:word); begin outport(reg4,(data and $000F)shl 4); outport(reg5,(data and $0FF0)shr 4); end; { -} {8} Procedure Trig_AD; { kich mem bo AD} begin outport(reg0,$FF); end; { -} {9} Procedure set_channelAD(start,stop:byte); begin outport(reg2,(stop shl 4) or start); end; { } {10} procedure delay(ms:longint); var counterms:longint; begin counterms:=ms+gettickcount; while counterms>=gettickcount do; end; { } {11} procedure Clear_Int; begin outport(reg8,$f); end; { } {12} Function Read_AD:integer; { doc du lieu tu bo AD} var dlow, dhigh:byte; begin dlow:=inport(reg0); dhigh:=inport(reg1); dlow:=(dlow and $F0) shr 4; read_AD:=dlow+16*dhigh; 82 end; { } {13} Function PID(data:real):real; var Kp, Ki, Kd, K , T1, T2, T:real; a0,a1,a2,Ukt,U0,Ekt,Ekt1,Ekt2:real; begin T:=Tmau/1000; { dat thoi gian lay mau la Tmau } Kp:=strtofloat(Formdieukhien.Edit4.text); Ki:=strtofloat(Formdieukhien.Edit5.text); Kd:=strtofloat(Formdieukhien.Edit6.text); { dieukhien PI } If Formdieukhien.RadioGroup1.ItemIndex= then begin a0:= Kp + Ki*T; a1:=-Kp + Ki*T; a2:= Kd/T; end; { dieukhienPID } If Formdieukhien.RadioGroup1.ItemIndex= then begin a0:= Kp + Kd/T + Ki*T; a1:=-Kp + Ki*T -2*Kd/T; a2:= Kd/T; end; Ukt:=a0*Ekt+a1*Ekt1+a2*Ekt2+U0; PID:=Ukt; end; { -} {14} procedure TFormdieukhien.dkonof; { chuong trinh dieukhien On-Of } var kess:real; begin kess:=2; if nhietdohtai>=nhietdodat+kess then Analog_out($0000); if nhietdohtai=2048) then nhietdohtai:=(Read_AD2048)*409.5/2047; 85 Editgtrinhietdohtai.Text:=FloattoStr(nhietdohtai); Memo1.Lines.add(FloattoStr(nhietdohtai)); { ve duong dac tuyen } Canvas.MoveTo(80+i,430-trunc(nhietdohtai)); pot:=(nhietdohtai-nhietdodat)*100{/nhietdodat}; Edit9.Text:=floattostr(pot); ess:=(nhietdodat-nhietdohtai)*100{/nhietdodat}; editgtrisaisohtai.text:=floattostr(ess); i:=i+1; dkonof; end; { -} {21} procedure TFormdieukhien.ButtondungClick(Sender: TObject); begin analog_out($0000); messagedlg(' Thank you for using My Program',mtInformation,[mbOK],0); Application.Terminate ; end; { -} {22} procedure TFormdieukhien.ButtonhoatdongClick(Sender: TObject); var t:integer; pot:real; essmau:real; begin essmau:=strtofloat(Edit7.Text); Canvas.MoveTo(80,430-trunc(nhietdodat)); { repeat} case radiogroup1.itemindex of 0:begin Groupbox2.Enabled:=False; Timer2.Interval:=1000*strtoint(Edit10.Text); Timer2.Enabled := true; end; 1,2:begin Timer3.Interval :=Tmau; Timer3.Enabled :=True; 86 end; { editgtrisaisohtai.text:=floattostr(ess); until (ess =2048) then nhietdohtai :=(Read_AD2048)*409.5/2047; Editgtrinhietdohtai.Text:=FloattoStr(nhietdohtai); Canvas.MoveTo(80+i,430-trunc(nhietdohtai)); Memo1.Lines.add(FloattoStr(nhietdohtai)); { ve duong dac tuyen } pot:=(nhietdohtainhietdodat)/nhietdodat*100; Edit9.Text:=floattostr(pot); ess:=(nhietdodatnhietdohtai)*100/nhietdodat; editgtrisaisohtai.text:=floattostr(ess); dkPID; {dieu khienpid } t:=trunc(U0); Timer1.Interval:=t; Timer1.Enabled := true; Memo1.Lines.add(FloattoStr(Kp)); i:=i+1; end; { -} {24} procedure TFormdieukhien.Timer4Timer(Sender: TObject); var a:integer; 87 q:string[1]; begin a:=length(chao); q:=chao[1]; delete(chao,1,1); insert(q,chao,a); dqc:=chao; Formdieukhien.Edit1.Text:=dqc; end; { -} {25}procedure TFormdieukhien.FormPaint(Sender: TObject); begin Canvas.Pen.Style:=psInsideFrame; Canvas.Brush.Color :=clwhite; Canvas.FillRect(Rect(10,210,340,460)); Canvas.MoveTo(80,250); { ve truc tung} Canvas.LineTo(80,430); Canvas.MoveTo(80,430); { ve truc hoanh } Canvas.LineTo(300,430); Canvas.Pen.Style:=psDash; Canvas.MoveTo(80,280); Canvas.LineTo(280,280); Canvas.MoveTo(80,330); Canvas.LineTo(280,330); Canvas.MoveTo(80,380); Canvas.LineTo(280,380); Canvas.MoveTo(130,280); Canvas.LineTo(130,430); Canvas.MoveTo(180,280); Canvas.LineTo(180,430); Canvas.MoveTo(230,280); Canvas.LineTo(230,430); Canvas.MoveTo(280,280); Canvas.LineTo(280,430); Canvas.Pen.Style:= psSolid; Canvas.Textout(72,435,'0'); Canvas.Textout(122,435,'50'); Canvas.Textout(172,435,'100'); Canvas.Textout(222,435,'150'); Canvas.Textout(272,435,'200'); 88 Canvas.Textout(58,377,'50'); Canvas.Textout(58,327,'100'); Canvas.Textout(58,277,'150'); Canvas.Textout(310,424,'i'); Canvas.Textout(60,240,'Nhiet do'); Canvas.Textout(80,220,'Qua trinh dap ung cua lo nhiet'); end; end Tài liệu tham khảo 89 Hướng dẫn thí nghiệm ĐKTĐ PC-LadCard Hãng Advantech Sách Điềukhiển tự động I Nguyễn Phương Hà www.advantech.com Và tài liệu luận văn khoá trước địa Internet khác 90 ... D5 D4 D3 D2 D1 D0 Valu e DO7 DO6 DO5 DO4 DO3 DO2 DO1 DO0 BASE+11 Bit D7 Valu DO1 e ( Viết port ) –Byte cao Digital Output D6 DO1 D5 DO1 D4 D3 D2 O12 O11 DO1 D1 D0 DO9 DO8 30 2.1.4 Thanh ghi xuất... xem xét đến CARD AD – PCL 818 CỦA HÃNG ADVANTECH 24 Một vài hình ảnh Card AD PCL- 818 phần cứng hổ trợ(PCLD-8115) thị trường PCL_ 818L card gắn vào rảnh ISA máy tính PCL_ 818L có nhiều chức dùng... vi tích phân tỷ lệ PID 47 Phương pháp điều khiển PID số 49 Thiết kế PID số .51 Điều khiển PID hệ thống điều khiển nhiệt độ .52 Chương Các Loại Mạch Kích Và Solid State Relay (