Câu 2: Cho dòng điện ??? của một MOSFET kênh N được cho như sau:Vẽ đặc tính của MOSFET với các thông số nhập từ giao diện: Cho ??? có giá trị từ 0 đến 5 bước là 0.1.. Câu 3: *Dành cho Ap
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Họ và tên: Đỗ Minh Nhật
MSSV:22200115
Lớp:22DTV2
THỰC HÀNH PHƯƠNG PHÁP TÍNH VÀ MATLAB
GVPT: Nguyễn Mai Minh Kha
BÁO CÁO THỰC HÀNH TUẦN 8 Câu 1:
Câu 1:
Cho mạch điện R, L, C mắc nối tiếp với tổng trở tương đương Z như sau
Z(𝑗𝜔) = 𝑅+𝑗𝜔𝐿+ jωC1
R, L, C được nhập vào từ giao diện
Vẽ giá trị độ lớn của tổng trở |𝑍(𝑗𝜔)| theo tần số góc 𝜔 (𝜔 có giá trị từ 0 đến 2𝜋) với các giá trị R, L, C
Biết R (Ω), L (𝐻), C (𝜇𝐹)
Trang 2- Giao diện Design:
- Giao diện Code:
2
Trang 3- Code: Nút nhấn Button
c = app.CEditField.Value; %Khai báo giá trị nhập vào C (𝜇𝐹)
l = app.LEditField.Value; %Khai báo giá trị nhập vào L (𝐻)
r = app.REditField.Value; %Khai báo giá trị nhập vào R (Ω)
omega=0:0.1:2*pi; %khai báo khoảng giá trị omega từ 0 đến 2pi với
bước nhảy là 0.1
z = r + 1i*omega*l + 1./(1i*omega*c); %Công thức tính tổng trở
DoLonZ = abs(z); %Độ lớn tổng trở
plot(app.UIAxes, omega, DoLonZ) %Vẽ đồ thị độ lớn tổng trở
Trang 4- Kết quả:
4
Trang 5Câu 2: Cho dòng điện 𝐼𝐷𝑆 của một MOSFET kênh N được cho như sau:
Vẽ đặc tính của MOSFET với các thông số nhập từ giao diện:
Cho 𝑉𝐷𝑆 có giá trị từ 0 đến 5 bước là 0.1
Vẽ đặc tuyến của MOSFET trên cùng biểu đồ với 𝑉𝐺𝑆 lần lượt là 𝑉𝐺𝑆1 = 0.5,𝑉𝐺𝑆2 = 2, 𝑉𝐺𝑆3 = 3.5,𝑉𝐺𝑆4 = 4.5
Sinh viên tự chọn loại đối tượng để thay đổi các giá trị tham số trong bảng trên
Đồ thị mẫu
Trang 6- Giao diện Design:
- Giao diện Code:
6
Trang 7- Code:
VT=app.VtEditField.Value; %Khai báo Vt
Lamda=app.LamdaEditField.Value; %Khai báo Lamda
W=app.WEditField.Value; %Khai báo W
L=app.LamdaEditField.Value; %Khai báo L
VGS = [0.5, 2, 3.5, 4.5] %Mảng gồm các giá trị Vgs
VDS = 0:0.1:5; %Mảng các giá trị của Vds từ 0 đến 5 với bước nhảy 0.1
IDS = zeros(length(VGS), length(VDS)); %Tạo mảng gồm các phần tử 0 chứa kết quả Ids với cùng kích cỡ với Vgs và Vds
for i = 1:length(VGS) %Lặp từ 1 đến giới hạn kích cỡ của mãng Vgs
for j = 1:length(VDS) % Lặp từ 1 đến giới hạn kích cỡ của mãng Vds
if VGS(i) <= VT %Điều kiện vùng ngưng dẫn
IDS(i, j) = 0; %Giá trị dòng =0 ở vùng ngưng dẫn
elseif VGS(i) > VT && VDS(j) <= (VGS(i) - VT) %Điều kiện vùng tuyến tính IDS(i,j) = 200*(W/L)*((VGS(i) -
VT)*VDS(j)-((VDS(j))^2)/2)*(1+Lamda*VDS(j)); %Công thứ dòng ở vùng tuyến tính
else VGS(i)>VT && VDS(j)>(VGS(i) - VT) %Điều kiện vùng bão hòa
IDS(i, j) = 200 * (W /(2*L)) * ((VGS(i) - VT)^2) * (1 + Lamda * VDS(j));
%Công thức dòng ở vùng bão hòa
end
end
end
plot(app.UIAxes, VDS, IDS(1, :), VDS, IDS(2, :), VDS, IDS(3, :), VDS, IDS(4, :));
%Vẽ biểu đồ các biểu đồ các vùng chồng nhau
grid(app.UIAxes, "minor");
legend(app.UIAxes, 'VGS = 0.5V', 'VGS = 2V', 'VGS = 3.5V', 'VGS = 4.5V');
Trang 8- Kết quả:
8
Trang 9Câu 3: (*Dành cho App Designer) Thiết kế ứng dụng máy tạo dạng sóng có giao diện như sau
- Giao diện design:
- Giao diện Code:
Trang 10- Code: hàm tính
- Code: callback các khối:
calculate_a_draw(app); %Gọi function hàm tính vô khối
10
methods (Access = private)
function calculate_a_draw(app)
value = app.DngsngKnob.Value;
A = app.BinVKnob.Value; %Biên độ
f = app.TnsKnob.Value; %Tần số
t =app.tsKnob.Value; %Thời gian
tanso = app.XSwitch.Value; %Chuyển đổi tần số
switch tanso
case 'KHz'
f = f*1000; %Trường hợp Khz là tần số * 1000
case 'Hz'
f=f*1;
end
[x ,n] = Drawave(value,t,f,A);
plot(app.UIAxes,n,x);
grid(app.UIAxes,"on");
end
end
Trang 11
- Code: Drawave.m
function [x , n] = Drawave(wave,t,f,A)
fs = 10*f;
n =0:1/(100*fs):t;
switch wave
case 'Sine'
x = A*sin(2*pi*f*n);
case 'Square'
x = A *square(2*pi*f*n);
case 'Ramp'
x = A* sawtooth(2*pi*f*n);
case 'Triangle'
x = A* sawtooth(2*pi*f*n,1/2);
end
end
Trang 12- Kết quả:
12