ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA s3LElœa
“
BÁO CÁO THỰC HÀNH MATLAB
GVAD: Tran Phước Duy
Để tài: Xác định công của hệ trong các quá trình cân bằng từ giản đồ (p, V) Nhóm sinh viên thực hiện: Tên thành viên Mã số sinh viên Lê Trọng Nghĩa 41302522 Nguyễn Trọng Nhân 41302722 Phạm Chí Kha 41301717 Trương Ngọc Trác 41304256
Nguyễn Duy Khoa 41301854
Trang 2`
Loi not dau
Đề tài: Xác định công của hệ trong các quá trình cân bằng từ giản đồ (p,V)
1 Yêu cầu:
Bài tập này yêu câu sinh viên sử dụng Matlab đề biểu diễn giãn đồ (p, V) của các quá trình cần băng trên từ các giá trị p, V cho trước và từ các giá trị đó tính tốn tơng cơng của các quá trình đã được biêu diễn
2 Điểu kiện:
e Sinh vién can có kiên thức về lập trinh co ban trong MATLAB e Tim hiéu cac lénh Matlab liên quan symbolic va do hoa
3 Nhiém vu:
Xây dựng chương trình Matlab:
e Nhập dữ liệu về số mol n, áp suất ban đầu D, thé tich ban dau V
e Tao nut nhan chon qua trinh nao (dang tich, dang 4p, dang nhiét hoặc thoát ra) và nhập dữ liệu áp suất mới p hoặc thê tích mới V cho quá trình đó
e Vẽ đồ thị biểu diễn các quá trình trên trên giãn đô (P,V)
e Dùng các phép toán hình thức (symbolic) dé tính tông công của các quá trình trên
Chú ý: Sinh viên có thể dùng các cách tiếp cận khác không dùng
symbolic
4.Tai liéu tham khao:
A L Garcia and C Penland, MATLAB Projects for Scientists and
Engineers, Prentice Hall, Upper Saddle River, NJ, 1996
Trang 3A.CO SO LY THUYET
DNguyên lý 1 nhiệt động lực học:
e Nội năng gồm:
— Động năng (tịnh tiễn, quay, dao động) của các phân tử — Thế năng tương tác trong các phân tử
— Thế năng tương tác giữa các phân tử
e Nhiệt lượng mà khí nhận bằng tổng độ biến thiên nội năng và
công mà hệ sinh ra O =AU +W Với: Vy W = | pảV : Công mà khí sinh ra yy AU =nC,AT : Độ biến thiên nội năng Q : nhiệt lượng mà khí nhận Quy ước: W>0(W<0): hệ sinh(nhận) công Q > 0(Q<0): hệ nhận(tỏa) nhiệt ID Ap dụng nguyên lý I cho các đăng quả trình: * Quá trình đẳng áp: Ở biến đôi này áp suất của hệ là không đôi P = const Đối với khí lý tưởng, ta có: V —=const T Công trong quá trình đẳng áp: Vy W =| pdV = pAV = p(V,-V,) h Nhiệt trong quá trình đẳng áp Q=AU+W =nC, AT + pAV => Q=nC, AT+nRAT =nC,AT Với:
C,= = : nhiệt dung mol đăng tích C,=C,+R : nhiét dung mol dang ap
Trang 4+ Quá trình đăng tích: Ở biến đôi này thể tích không thay đôi V=const Đối với hệ một khi lý tưởng, ta co: P —=const T Céng trong qua trinh dang tich: W =| pdv =0 Nhiét trong qua trinh dang tich: O=AU=nCAT=nC(L—T) * Quá trình đẳng nhiệt:
Ở biến đối này nhiệt độ là không đổi T = const Đối với khí lý tưởng, định luật Boyle-Mariotte cho ta: PV = consf Công trong quá trình đắng nhiệt: 4 4 dV L4 W = | pÄV =nRT | —=nRTIn~2 i P V V, Nhiệt trong quá trình đẳng nhiệt: AU =0 1 => Q=W =nRTIn V,
s% Quá trình đoan nhiệt:
Ở biên đôi này áp suât p và thê tích V có môi liên hệ: pV’ =const
re Cp 2 A "A
VớI7 = Cc! chỉ sô đoạn nhiệt
Trong quá trình này hệ không trao đổi nhiệt với bên ngoài nên Q = 0 Do đó công của hệ trong quá trình này là:
W =—-AU =-nC, AT =nC (TF, — 1,)
R nRT, V
Với C, =1 6h _ AKA _ Pi ;nC T, — pV,
y-1 y-l y-l
Công thức tính công sinh ra sẽ là:
W = PV — PV,
Trang 5B.CHƯƠNG TRÌNH : CONG CUA HE TRONG CAC QUA TRINH CAN BANG | OK
—Cac thong so trang thei khi Tong Cong va Nhiet Luong(kJ) V
So mol n 1 \ Wtong= -0.57505 Qtong = —
Ap suat P(kPa) 800 100 Wquatrinh = 0 Qquatrinh = -0.75 R | 800 The tich VỊL) 1 1 700 Nhiet do T(K) 72.1631 12.0272 ai ! ; 500 L - | Qua trinh dang tich N vị ị Loai khi % 400 | a ® Don nguyen tu R ©;Luong nghe tu | 300 200 Reset all ¬Y 100 _ -Ä : Start Next Clase | 0 l | | | l | l l 0 1 2 3 4 5 8 8 9 10 VỊL 6 7 8 9 Chu thich:
1.Gidi han do cho 2 truc p va V 2.Các thông số của khí lúc đầu
3.Các thông số của khí lúc sau
4.Công và nhiệt của quá trình đang thực hiện
5.Tổng công và nhiệt của hệ trong tất cả các quá trình đã vẽ
6.Các nút điều khiển
— Nút Start: Chạy, vẽ đồ thị, tính công và nhiệt sau khi nhập dữ liệu — Nút Next: chuyển sang quá trình tiếp theo
— Nút Close: đóng chương trình
— Nut Reset all: dat lai cac gia tri
7.Loại khí lý tưởng (đơn nguyên tử, lưỡng nguyên tử)
8.Quá trình biến đổi(đẳng áp, đăng tích, đăng nhiệt, đoạn nhiệt)
Trang 6CODE CHẠY CHƯƠNG TRÌNH
function varargout = Nhiethoc 2(varargin)
gui Singleton = 1;
gui State = struct('gui Name', mfilename,
"gui Singleton', gui Singleton,
'gui OpeningFcn', @Nhiethoc 2 OpeningFcn,
‘gui OutputFcn', @Nhiethoc 2 OutputFcn,
"gui_LayoutFcn', [] ,
"gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_ Callback = str2func(varargin{1}); end if nargout [varargout{l:nargout}] = gui_mainfcn(gui State, varargin{:}); else gui_mainfcn(gui_ State, varargin{:}); end function Nhiethoc 2 OpeningFcn (hObject, eventdata, handles, varargin) handles.output = hObject; guidata (hObject, handles);
function varargout = Nhiethoc 2 OutputFcn (hObject, eventdata,
handles)
varargout{l} = handles.output;
h = msgbox('HELLO! Welcome to my applet :)','HELLO');
function start Callback (hObject, eventdata, handles) op = str2num(get (handles.GHDP, 'string'));
ov = str2num(get (handles.GHDV, 'string'));
if isempty(op) & isempty (ov) op = 1000;
ov = 10; end
n = str2num(get(handles.somol, 'string'));
pl = str2num(get (handles.apsuatl, 'string'))
vl = str2num(get (handles.thetichl, 'string') p2 = str2num(get (handles.apsuat2,'string')) v2 = str2num(get (handles.thetich2,'string'));
w = str2num(get (handles.congtoanphan, 'string"'));
Trang 7Cv2 = R/(g2-1);
if (n < 0) | (pl < 0) | (vi < 0) | (p2< 0) | (v2 < 0)
msgbox('Du lieu sai','Warning', 'warn') else
contents = tí handles.quatrinh, 'String');
quat rinhvalue = contents{get (handles.quatrinh, 'Value')}; loaikhil = get (handles.donnguyentu, 'Value');
loaikhi2 = get (handles luongnguyentu, ‘Value’);
if loaikhil == get (handles.donnguyentu, 'Max') Switch quatrinhvalue case 'Qua trinh dang ap' if isempty (v2) msgbox('Vui long nhap the tich V2', 'Warning', 'warn'); elseif v2 == vl msgbox('"Vui long nhap lai V2 <> V1l', 'Warning', 'warn') else t1 (p1*v1)/(n*R); t2 = (pl*v2)/(n*R); Ql = n*(Cv1l + R)*(t2 - t1)/1000;
set (handles.nhietguatrinh, 'string',Q1);
Trang 8t1 = (p1*v1)/(n*R);
t2 = (p2*v1l)/(n*R);
Q1 = n*Cv1*(t2 - t1) /1000;
set (handles.nh1etquatrinh, 'string',Q1);
set (handles.nhiettoanphan, 'string',Q1+Q); set (handles.nhietdol, 'string',tl);
set (handles.nhietdo2, 'string',t2);
set (handles.thetich2, 'string',vl);
set (handles.congquatrinh, 'string',wl); set (handles.congtoanphan, 'string',wl+tw) ; axes (handles.axes1l); x = vl*ones(2,1); y = linspace(pl,p2, length (x)); plot (x,y, 'linewidth',4,'color','r'); axis([0 ov 0 op]); grid on; xlabel ('V(L)'); viabel('P(kPa) ' end case 'Qua trinh dang nhiet' syms x t1 = (pi*vil)/(n*R);
set (handles.nhietdol, 'string',tl);
set (handles.nhietdo2, 'string',tl); A isempty (p2) ; B isempty (v2); if (A==1 & B==0 & v2~=vl1) | (A==0 & B==1 & p2~=pl1) if (A==1) & (B==0) p2 = (pl*vl)/v2;
set (handles.apsuat2, 'string',p2); else (A==0) & (B==1)
v2 = (pl*vl1)/p2;
set (handles.thetich2, 'string',v2);
end
wi = n*R*t1*log(v2/v1) /1000;
set (handles.nhietquatrinh, 'string',wl); set (handles.nhiettoanphan, 'string',wl+Q); ( ( )7 et et
Trang 9elseif (A==l) & (B==0) & (v2==v]l) msgbox('"Vui long nhap lai V2 <> V1l', 'Warning','warn');
elseif (A==0) & (B==1) & (P2==pl)
msgbox('"Vui long nhap lai P2 <> Pl', 'Warning', 'warn');
elseif (A==1) & (B==1)
msgbox ('Error', 'Warning', ‘error'); else msgbox('Chi nhap mot trong hai thong so P2 hoac V2', 'Warning', 'warn'); end case 'Qua trinh doan nhiet' syms x tl = (pi*v1)/(n*R); Ql = 0;
set (handles.nhietquatrinh, 'string',Q1);
set (handles.nhiettoanphan, 'string',Q1+Q);
set (handles.nhietdol, 'string',tl); A 1sempty (p2) ; B 1semEty (v2); if (A==l & B==0 & v2~x=vi) | (A==0 & B==l & P2~x=pl) if (A==1) & (B==0) P2 = pl* (vl/v2)%g1; set (handles.apsuat2,'string',p2); et et et t2 = (p2*v2)/(n*R); set (handles.nhietdo2,'string',t2); else (A==0) & (B==1) v2 = ((pl*v1^g1)/p2)^(1/gl); set (handles.thetich2, 'string',v2); t2 = (p2*v2)/(n*R); set (handles.nhietdo2, 'string',t2); end wl = (pl*vl - p2*v2)/(1000* (gl - 1));
set (handles.congquatrinh, 'string',wl); set (handles.congtoanphan, 'string',wltw) ; axes (handles.axes1) ; x = linspace(vl,v2,100); yY = p2*(v2./x) *g1; plot (x,y, 'linewidth',4,'color','r'); axis([0 ov 0 op]); grid on; xlabel ('V(L)'); ylabel('P(kPa)');
elseif (A==1) & (B==0) & (v2==v1)
Trang 10elseif (A==0) & (B==l) & (P2==pl) msgbox('"Vui long nhap lai P2 <> P1','Warning', 'warn'); elseif (A==1) & (B==1) msgbox('Error', 'Warning','error'); else msgbox('Chi nhap mot trong hai thong so P2 hoac V2', 'Warning', 'warn'); end end elseif loaikhi2 == get (handles.luongnguyentu, 'Max') Switch quatrinhvalue case 'Qua trinh dang ap' if isempty (v2) msgbox('Vui long nhap the tich V2', 'Warning', 'warn'); elseif v2 == vl msgbox('"Vui long nhap lai V2 <> V1', 'Warning', 'warn') else t1 (p1*v1)/(n*R); t2 = (pl*v2)/(n*R); Ql = n*(Cv2 + R)*(t2 - t1)/1000;
set (handles.nhietquatrinh, 'string',Q1); set (handles.nhiettoanphan, 'string',Q1+Q); set (handles.apsuat2,'string',pl); set (handles.nhietdol, 'string',t1); ( ( ( set (handles.nhietdo2,'string',t2); wl b1* (v2-v1) /1000;
Trang 11else wl = QO; t1 = (p1*v1l)/(n*R); t2 = (p2*v1)/(n*R); Ql n*Cv2* (t2 - t1)/1000;
set (handles.nhietguatrinh, 'string',Q1); set (handles.nhiettoanphan, 'string',Q1+Q); set (handles.nhietdo2,'string',t2);
set (handles.thetich2, 'string',vl); set (handles.congquatrinh, 'string',wl); set (handles.congtoanphan, 'string',wl+tw) ; axes (handles.axes1); x = vl*ones(2,1); y = linspace(pl,p2, length (x)); plot (x,y, 'linewidth',4,'color','r'); axis([0 ov 0 op]); grid on; xlabel('V(L)'); ylabel ('P(kPa) ' ( ( set (handles.nhietdol, 'string',tl1); ( ( ( )7 end case 'Qua trinh dang nhiet' syms x tl = (pl*v1)/(n*R);
set (handles.nhietdol, 'string',tl);
set (handles.nhietdo2, 'string',tl); A = isempty (p2); B = isempty(v2); if (A==1 & B==0 & v2~=vl1) | (A==0 & B==1 & p2~=pl1) if (A==1) & (B==0) p2 = (pl*vl)/v2; set (handles.apsuat2, 'string',p2); elseif (A ) & (B==1) v2 = (p1*v1) /p2} t(handles.thetich2, 'string',v2)j; else msgbox('Chi nhap mot trong hai thong so P2 hoac V2', 'Warning', 'warn'); end wl n*R*t1*1og (v2/v1)/1000;
Trang 12plot(x,y, 'linewidth',4,'color','r'); axis([0 ov 0 op]); grid on; xlabel ('V(L)'); ylabel('P(kPa)');
elseif (A==1) & (B==0) &§ (v2==vl)
msgbox('"Vui long nhap lai V2 <> V1', 'Warning', 'warn');
elseif (A==0) & (B==1) & (P2==pl) msgbox('Vui long nhap lai P2 <> P1', 'Warning', 'warn');
elseif (A==1) & (B==1)
msgbox('Error', 'Warning', 'error'); else msgbox('Chi nhap mot trong hai thong so P2 hoac V2', 'Warning', 'warn'); end case 'Qua trinh doan nhiet' syms x t1 = (p1*v1)/(n*R); = 0;
set (handles.nhietquatrinh, 'string',Q1);
set (handles nhiettoanphan, | string',Q1+Q); et (handles.nhietdol, 'string',tl); = isempty(p2); = isempty(v2); if (A==1 & B==0 & v2~=vl1) | (A==0 & B==1 & p2~=pl1) if (A==1) & (B==0) p2 = P1*(v1/v2)^g2; set (handles.apsuat2, 'string',p2); t2 = (p2*v2)/(n*R);
set (handles.nhietdo2, 'string',t2);
else (A==0) & (B==1) v2 = ((pl*v1%g2)/p2)* (1/g2); set (handles.thetich2, 'string',v2); t2 = (p2*v2)/(n*R); t(handles.nhietdo2, 'string',t2); end wl = (pl*vl - p2*v2)/(1000* (g2 - 1));
Trang 13xlabel('V(T) '); ylabel('P(kPa)');
elseif (A==1) & (B==0) & (v2==v1) msgbox('"Vui long nhap lai V2 <> V1', 'Warning', 'warn');
elseif (A==0) & (B==1) & (p2==pl1) msgbox('Vuil long nhap lai P2 <> P1l', 'Warning', 'warn');
elseif (A==1) & (B==1)
msgbox('Error', 'Warning', ‘error'); else msgbox('Chi nhap mot trong hai thong so P2 hoac V2', 'Warning','warn'); end end else end hold on; end
function next Callback (hObject, eventdata, handles) n = str2num(get (handles.somol, 'string')); p2 = str2num(get (handles.apsuat2,'string')); v2 = str2num(get (handles.thetich2,'string')); R = 8.3145; ta (p2*v2) / (n*R); set(handles.apsuatl, 'String',; p2); set (handles.apsuat2, 'String', '' )7
set (handles.thetich2, 'String', '');
set (handles.nhietdol, 'String', t2); nợ) set (handles.nhietdo2, 'String", ( ) ( ) set (handles.thetichli, 'String', v2 ( M ( ( ;
function close Callback(hObject, eventdata, handles)
button = questdlg('Do you want to continue?', ‘Continue
Operation', 'Yes','No', 'No'); if stremp (button, 'Yes")
close;
elseif strcmp (button, 'No') end
function reset Callback (hObject, eventdata, handles) resetbutton = questdlg('Are you sure ?!', 'Continue
Operation','Yes','No', 'No');
if strcmp (resetbutton, 'Yes')
set (handles.somol, 'String', '');
Trang 14set (handles.apsuat2, 'String', '')
set (handles.thetichl, 'String', ''
set (handles.thetich2, 'String', '' ( ( ( set (handles.nhietdol, 'String', }'); ( ( ( ( e “ese — ~—" “ee `
set (handles.nhietdo2, 'String', ''); set (handles.congtoanphan, 'String',0); set (handles.congquatrinh, 'string',g0); set (handles.nhiettoanphan, 'String',Q);
set (handles.nhietgquatrinh, 'string',0O); axes (handles.axes1) ; cla reset; axis([0 10 0 1000]); grid on; xlabel('V(L)'); ylabel('P(kPa)'); elseif strcmp (resetbutton, 'No') end
function ok Callback(hObject, eventdata, handles) op = str2num(get (handles.GHDP, 'string'));
ov = str2num(get (handles.GHDV, 'string')); xlabel ('V(L)'); vlabel ('P(kPa) ') if 1sempty(op) = axis([0 ov 0 end & isempty(ov) == 0 )
function somol Callback (hObject, eventdata, handles) function somol CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'), get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor','white'); end
function apsuatl Callback(hObject, eventdata, handles)
function apsuatl CreateFcn (hObject, eventdata, handles) if ispc && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor', 'white');
end
function apsuat2 Callback (hObject, eventdata, handles)
function apsuat2 CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'), get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor', 'white');
end
function nhietdo2 Callback (hObject, eventdata, handles)
Trang 15if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor','white');
end
function nhietdol Callback (hObject, eventdata, handles) function nhietdol CreateFcn (hObject, eventdata, handles) if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor','white'); end
function thetich2 Callback (hObject, eventdata, handles)
function thetich2 CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor','white');
end
function thetichl Callback (hObject, eventdata, handles) function thetichl CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'), get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor','white');
end
function congtoanphan Callback (hObject, eventdata, handles) function congtoanphan CreateFcn (hObject, eventdata, handles) if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor')) set (hObject, 'BackgroundColor','white');
end
function quatrinh Callback (hObject, eventdata, handles) function quatrinh CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor', 'white');
end
function congquatrinh Callback (hObject, eventdata, handles) function congquatrinh CreateFcn (hObject, eventdata, handles) if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor','white'); end
function editl0 Callback (hObject, eventdata, handles)
Trang 16function loaikhi CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'), get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor', 'white');
end
function loaikhil Callback (hObject, eventdata, handles) function loaikhi2 Callback (hObject, eventdata, handles)
function GHDP Callback(hObject, eventdata, handles)
function GHDP CreateFcn (hObject, eventdata, handles) if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor', 'white');
end
function GHDV Callback (hObject, eventdata, handles) function GHDV CreateFcn (hObject, eventdata, handles)
if 1SPpC && isequal (get (hObject, 'BackgroundColor'), get (0, 'defaultUicontrolBackgroundColor'))
set (hObject, 'BackgroundColor', 'white');