` 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á
Trang 1
ĐẠ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:
TP Hồ Chí Minh - 2014
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 toá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
http://www.algarcia.org/fishbane/fishbane.html
Dién dan Mathworks: http://www.mathworks.com
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
¡ : số bậc tự do(i=3:khí đơn nguyên tử,i=5:khí lưỡng nguyên tử)
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:
W = | pÄV =nRT | —=nRTIn~2
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
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,)
y-1 y-l y-l
Công thức tính công sinh ra sẽ là:
W = PV — PV,
y-l
Trang 5
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 = —
R | 800 The tich VỊL) 1 1
700 Nhiet do T(K) 72.1631 12.0272 ai !
; 500 L - |
a
® Don nguyen tu R ©;Luong nghe tu | 300
200
Reset all
¬Y 100 _ -Ä :
| 0 l | | | l | l l
0 1 2 3 4 5 8 8 9 10
VỊL
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)
9.Gian dé (p,V).
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 OutputFcn', @Nhiethoc 2 OutputFcn,
"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
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'));
R = 8.3145;
g1 = 5/3;
g2 = 7/5;
Cvl = R/(g1-1);
)7
r
Trang 7Cv2 = R/(g2-1);
if (n < 0) | (pl < 0) | (vi < 0) | (p2< 0) | (v2 < 0)
msgbox('Du lieu sai','Warning', 'warn')
else
quat rinhvalue = contents{get (handles.quatrinh, 'Value')}; loaikhil = get (handles.donnguyentu, 'Value');
loaikhi2 = get (handles luongnguyentu, ‘Value’);
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
t2 = (pl*v2)/(n*R);
set (handles.nhietguatrinh, 'string',Q1);
set (handles.nhiettoanphan, 'string',Q1+Q);
set (handles.apsuat2,'string',pl);
set (handles.nhietdol, 'string',tl);
( ( (
set (handles.nhietdo2, 'string',t2);
t (handles.congquatrinh, 'string',wl);
set (handles.congtoanphan, 'string',wltw);
x = linspace(vl,v2,100);
y = pl † 0*x;
axes (handles.axes1);
plot (x,y, 'linewidth',4,'color','r');
axis([0 ov 0 op]);
grid on;
xlabel ('V(L) ')
end case 'Qua trinh dang tich'
if isempty (p2) msgbox('Vui long nhap ap suat P2', 'Warning', 'warn')j;
elseif p2 == pl msgbox('Vui long nhap lai P2 <>
Pl', 'Warning', 'warn')
else
wl = 0;
)7
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);
plot (x,y, 'linewidth',4,'color','r');
axis([0 ov 0 op]);
grid on;
xlabel ('V(L)');
end
case 'Qua trinh dang nhiet'
syms x
t1 = (pi*vil)/(n*R);
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
set (handles.congquatrinh, 'string',wl);
set (handles.congtoanphan, 'string',wltw);
axes (handles.axesl1);
x = linspace(vl,v2,100);
y = (pl*vl)./x;
plot(x,y,'linewidth',4,'color','r');
axis([0 ov O op]);
grid on;
xlabel('V(L)');
ylabel('P(kPa)');
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;
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
set (handles.congquatrinh, 'string',wl);
set (handles.congtoanphan, 'string',wltw) ;
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)
msgbox('Vui long nhap lai V2 <>
V1', 'Warning', 'warn');
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
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
t2 = (pl*v2)/(n*R);
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);
set (handles.congquatrinh, 'string',wl);
set (handles.congtoanphan, 'string',wl+tw) ;
x = Llinspace(vl,v2,100);
y = pl + O*x;
axes (handles.axes1);
plot (x,y, 'linewidth',4,'color','r');
axis([0 ov 0 op]);
grid on;
xlabel('V(L)');
ylabel('P(kPa)');
end case 'Qua trinh dang tich'
if isempty (p2) msgbox('Vui long nhap ap suat
P2', 'Warning', 'warn');
elseif p2 == pl msgbox('Vui long nhap lai P2 <>
Pl', 'Warning', 'warn')
Trang 11else
wl = QO;
t1 = (p1*v1l)/(n*R);
t2 = (p2*v1)/(n*R);
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);
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) p2 = (pl*vl)/v2;
set (handles.apsuat2, 'string',p2);
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
set (handles.nhietguatrinh, 'string',wl);
set (handles.congquatrinh, 'string',wl);
set (handles.congtoanphan, 'string',wltw) ;
x = linspace (vi,v2,100);
Vy = (pl*vi)./x;
(
set (handles.nh1ettoanphan, 'string';w1+Q);
( (
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) 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
set (handles.congquatrinh, 'string',wl);
set (handles.congtoanphan, 'string',wltw);
x = linspace(vl,v2,100);
Y = Pp2*(v2./x).^g2;
plot (x,y, 'linewidth',4,'color','r');
axis([0 ov 0 op]);
grid on;
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;
set(handles.apsuatl, 'String',; p2);
set (handles.apsuat2, 'String', ''
)7
nợ)
( )
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
set (handles.apsuati, 'String', '');
Trang 14set (handles.apsuat2, 'String', '')
(
(
(
set (handles.nhietdol, 'String', }');
(
(
(
(
~—"
set (handles.nhietdo2, 'String', '');
set (handles.congtoanphan, 'String',0);
set (handles.congquatrinh, 'string',g0);
set (handles.nhiettoanphan, 'String',Q);
set (handles.nhietgquatrinh, 'string',0O);
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'))
end
function apsuat2 Callback (hObject, eventdata, handles)
function apsuat2 CreateFcn (hObject, eventdata, handles)
if ispe && isequal (get (hObject, 'BackgroundColor'),
get (0, 'defaultUicontrolBackgroundColor'))
end
function nhietdo2 Callback (hObject, eventdata, handles)
function nhietdo2 CreateFcn (hObject, eventdata, handles)