Tải bản đầy đủ (.docx) (23 trang)

Tiểu Luận xe tránh vật cản

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.13 MB, 23 trang )

LỜI CẢM ƠN
Lời cảm ơn đến giảng viên Nguyễn Đức Nhật Quang trong quá trình học tập đã hỗ trợ
giảng dạy cho tôi hiểu biết cách hoạt động nguyên lý của từng chip vi xử lý, vi điều
khiển nhiều loại và cách hoạt động của từng mỗi chip.
Trong quá trình học 30 tiết thì tơi đã hiểu hầu như các nguyên lý hoạt động của các giao
tiếp uart, giao tiếp ngoại vi mà lâu nay tôi chưa được đề cập đến.
Rất chân thành cảm ơn giảng viên Nguyễn Đức Nhật Quang đã hỗ trợ giảng dạy online
cho tôi.

1


MỤC LỤC
Trang

TÀI LIỆU THAM
KHẢO................................................................................................22

DANH SÁCH CÁC HÌNH VẼ
Trang

2


DANH SÁCH CÁC BẢNG
Trang

3


LỜI MỞ ĐẦU


Trong quá trình học tập tìm hiểu về môn học vi xử lý và vi điều khiển trong đo lường tự
động thì tơi đã hiểu được về vi xử lý và vi điều khiển cách hoạt động của từng mỗi chip.
Nhưng sau khi học xong hồn thành khóa học thì tơi đã có ý tưởng viết về xe tránh vật
cản sử dụng vi điều khiển để giao tiếp các cảm biến để điều khiển đo lường.
Trong quá trình học lý thuyết lẫn cả mơ phỏng thì tơi đã tự thiết kế chiếc xe tránh vật cản
như suy nghĩ ý muốn và hoạt động rất ổn định.
Mặc dù đã dành thời gian thích đáng nhưng khơng tránh khỏi một số lỗi vấn đề có thể
cịn sót lại trong bài tiểu luận này. Rất mong giám thị chấm bài hướng dẫn chỉ lỗi sai và
góp ý về mail để khắc phục sửa lỗi những bài sau.

4


CHƯƠNG I: GIỚI THIỆU Ý TƯỞNG MƠ HÌNH TRÁNH VẬT CẢN
1. GIỚI THIỆU Ý TƯỞNG MƠ HÌNH
-

Mơ hình xe tránh vật cản là một sản phẩm mang nhu cầu người sử dụng để giải trí

-

sau những giờ học, giờ làm việc để giảm stress.
Mơ hình cải tiến nhiều hơn thì sẽ trở thành thiết bị hút bụi để ứng dụng cho người

-

dùng.
Mơ hình này thì được ghép nối giao tiếp với cảm biến siêu âm HC – SR04 để
nhận dạng vật thể khoảng cách và giao tiếp với các động cơ DC để di chuyển theo
hướng và thông qua mạch điều khiển LM298N, để điều hướng theo xe di chuyển


-

thì cịn phụ thuộc vào lập trình viết code để nạp cho vi điều khiển.
Khi xe đi hướng tới gặp vật cản khoảng cách lập trình nhận biết là 30cm thì xe sẽ
dừng lại và động cơ servo quay với góc 180 để nhận diện xem xung quanh 180 độ
có bị vật cản gì khơng nếu bên trái và phía trước vật cản thì cảm biến siêu âm sẽ
phát tín hiệu về vi điều khiển và khi đó vi điều khiển sẽ truyền tín hiệu 0101 cho
LM298N để điều hướng bên phải thốt khỏi vật cản, tương tự như vậy thì góc bên

-

kia cũng hoạt động như vậy.
Trong tương lai sẽ cải tiến thêm cảm biến hồng ngoại để dò line và lắp đặt nhiều
cảm biến hơn nữa làm cho xe hoạt động với tỉ lệ chính xác nhất lên đến khoảng

-

99%.
Xe tránh vật cản hiện tại chỉ sử dụng 1 cảm biến siêu âm cho nên việc tiếp nhận
tín hiệu chỉ khoảng với mức ngưỡng trung bình chính xác tầm 84%, do phụ thuộc
nhiều yếu tố khác bên ngoài.

5


Hình 1: Minh Họa Hình Hài Chiếc Xe Tránh Vật Cản
CHƯƠNG II: NHỮNG LINH KIỆN CẦN THIẾT & PHÂN TÍCH LINH KIỆN
1 VI ĐIỀU KHIỂN ARDUINO NANO 328P.


Hình 2: Mơ Hình Ngồi Của Arduino Nano
6


-

Arduino Nano là một bảng vi điều khiển thân thiện, nhỏ gọn, đầy đủ. Arduino

-

Nano nặng khoảng 7g với kích thước từ 1,8cm - 4,5cm.
Nano được tích hợp vi điều khiển ATmega328P, giống như Arduino UNO. Sự
khác biệt chính giữa chúng là bảng UNO có dạng PDIP (Plastic Dual-In-line
Package) với 30 chân cịn Nano có sẵn trong PQFP (plastic quad flat pack) với 32

-

chân.
Ngoài các chức năng đầu vào và đầu ra số, các chân này cũng có một số chức
năng bổ sung. [1]
o Chân 1, 2: Chân nối tiếp
 Hai chân nhận RX và truyền TX này được sử dụng để truyền dữ liệu
nối tiếp TTL. Các chân RX và TX được kết nối với các chân tương
ứng của chip nối tiếp USB tới TTL.
o Chân 6, 8, 9, 12, 13 và 14: Chân PWM
 Mỗi chân số này cung cấp tín hiệu điều chế độ rộng xung 8 bit. Tín
hiệu PWM có thể được tạo ra bằng cách sử dụng hàm analogWrite
().
o Chân 5, 6: Ngắt



Khi chúng ta cần cung cấp một ngắt ngoài cho bộ xử lý hoặc bộ
điều khiển khác, chúng ta có thể sử dụng các chân này. Các chân
này có thể được sử dụng để cho phép ngắt INT0 và INT1 tương ứng
bằng cách sử dụng hàm attachInterrupt ().

o Chân 13, 14, 15 và 16: Giao tiếp SPI


Khi bạn không muốn dữ liệu được truyền đi khơng đồng bộ, bạn có
thể sử dụng các chân ngoại vi nối tiếp này. Các chân này hỗ trợ giao
tiếp đồng bộ với SCK.

o Chân 16: Led


Khi sử dụng chân 16, đèn led trên bo mạch sẽ sáng.
7


o Chân 18, 19, 20, 21, 22, 23, 24, 25 và 26 : Ngõ vào/ra tương tự


Như đã đề cập trước đó UNO có 6 chân đầu vào tương tự nhưng
Arduino Nano có 8 đầu vào tương tự (19 đến 26), được đánh dấu A0
đến A7. Điều này có nghĩa là bạn có thể kết nối 8 kênh đầu vào
tương tự để xử lý. Mỗi chân tương tự này có một ADC có độ phân
giải 1024 bit (do đó nó sẽ cho giá trị 1024).

o Chân 23, 24 như A4 và A5: chuẩn giao tiếp I2C



Khi giao tiếp SPI cũng có những nhược điểm của nó như cần 4 chân
và giới hạn trong một thiết bị. Đối với truyền thông đường dài, cần
sử dụng giao thức I2C. I2C hỗ trợ chỉ với hai dây. Một cho xung
(SCL) và một cho dữ liệu (SDA).

o Chân 18: AREF


Điện áp tham chiếu cho đầu vào dùng cho việc chuyển đổi ADC.

o Chân 28 : RESET


Đây là chân reset mạch khi chúng ta nhấn nút trên bo. Thường được
sử dụng để được kết nối với thiết bị chuyển mạch để sử dụng làm
nút reset.

-

ICSP là viết tắt của In Circuit Serial Programming , đại diện cho một trong những
phương pháp có sẵn để lập trình bảng Arduino. Thơng thường, một chương trình
bộ nạp khởi động Arduino được sử dụng để lập trình một bảng Arduino, nhưng
nếu bộ nạp khởi động bị thiếu hoặc bị hỏng, ICSP có thể được sử dụng thay thế.
ICSP có thể được sử dụng để khôi phục bộ nạp khởi động bị thiếu hoặc bị hỏng.

-

Mỗi chân ICSP thường được kết nối với một chân Arduino khác có cùng tên hoặc

chức năng. Ví dụ: MISO của Nano nối với MISO / D12 (Pin 15).
8


-

Lưu ý khi các chân MISO, MOSI và SCK được ghép lại với nhau tạo nên giao
diện ISP.

Bảng 1: Arduino Nạp Bằng Mạch Nạp ICSP Thay Thế Chip CH340
Arduino ISP

ATMega328p nano

VCC/5V

VCC

GND

GND

MOSI/ D11

D11

MISO/ D12

D12


SCK/ D13

D13

D10

RESET

2. CẢM BIẾN SIÊU ÂM SR – 04.

Hình 3: Sensor HC-SR04
9


-

Điện áp hoạt động là 5V và dòng tối đa 15mA, tần số hoạt động 40kHZ, khoảng
cách đo tầm 4m và phạm vi tối thiểu là 2cm, độ chính xác lên đến 3mm, đo với
góc độ

15°

và tín hiệu đầu vào để kích hoạt

10 µ S

xung TTL, có kích thước nhỏ

gọn 45 x 20 x 15mm. [2]
-


Chân VCC (chân số 1) là nơi nguồn cung cấp cho cảm biến siêu khoảng cách
siêu âm HC-SR04 mà chúng ta kết nối chân 5V trên Arduino.

-

Chân Trig (chân số 2) là chân được sử dụng để kích hoạt các xung âm thanh siêu
âm.

-

Chân Echo (chân số 3) là chân tạo ra một xung khi nhận được tín hiệu phản xạ,
độ dài của xung tỉ lệ với thời gian tín hiệu đã truyền được phát hiện.

-

Chân GND (chân số 4) là chân được kết nối với GND của Arduino.

Hình 4: Mơ Phỏng Hoạt Động Của Cảm Biến
-

Tất cả bắt đầu, khi một xung có thời lượng ít nhất 10 µS (10 micro giây) được áp

-

dụng cho chân kích hoạt.
Để đáp ứng điều đó, cảm biến truyền một loạt âm thanh gồm tám xung ở 40 KHz.
10



-

Tám xung siêu âm di chuyển trong khơng khí ra khỏi máy phát. Trong khi đó
chân Echo đi cao để bắt đầu hình thành điểm bắt đầu của tín hiệu dội ngược trở

-

lại.
Nếu những xung đó khơng được phản xạ trở lại thì tín hiệu Echo sẽ hết thời gian

-

chờ sau 38 ms (38 mili giây) và trở lại mức thấp.
Do đó, xung 38 ms cho thấy khơng có vật cản nào trong phạm vi của cảm biến.
Nếu những xung đó bị phản xạ trở lại, chân Echo sẽ xuống thấp ngay khi nhận
được tín hiệu. Điều này tạo ra một xung có độ rộng thay đổi từ 150 µS đến 25 ms,
tùy thuộc vào thời gian nhận tín hiệu.
Cơng thức tính như sau :

Khoảng Cách = Tốc Độ * Thời Gian

3. ĐỘNG CƠ SERVO.

Hình 5: Động Cơ Servo
-

Chân GND (chân số 1 dây nâu) là chân nối đất cho cả động cơ và Arduino.
Chân 5V (chân số 2 dây đỏ) là điện áp dương cấp nguồn cho Servo.
Chân Control (chân số 3 dây cam) là nơi cấp xung vào cho hệ thống điều khiển.
Servo là một thuật ngữ chung cho một hệ thống điều khiển vịng kín .

Động cơ servo RC hoạt động trên cùng một nguyên tắc. Nó chứa một động cơ DC
nhỏ được kết nối với trục đầu ra thông qua các bánh răng.
11


-

Có thể điều khiển động cơ servo bằng cách gửi một loạt xung tới đường tín
hiệu. Một động cơ servo tương tự thông thường dự kiến nhận được một xung
khoảng 20 mili giây một lần (tức là tín hiệu phải là 50Hz).

Hình 6: Chương trình xung hoạt động của servo
-

-

Độ dài của xung xác định vị trí của động cơ servo như sau:
o Nếu xung cao trong 1ms, thì góc servo sẽ ở vị trí 0 độ.
o Nếu xung cao trong 1,5ms, thì servo sẽ ở vị trí trung tâm của nó.
o Nếu xung cao trong 2ms, thì servo sẽ ở 180 độ.
Nếu các xung này dao động từ 1ms đến 2ms sẽ di chuyển trục servo qua toàn bộ
hành trình 180 độ của nó.

4. MODULE ĐIỀU KHIỂN ĐỘNG CƠ L298N.

12


Hình 7: Module điều khiển L298N
-


Chân VCC (chân số 1) là chân cấp nguồn cho động cơ, hoạt động điện áp

-

khoảng từ 5V đến 35V.
Chân GND (chân số 2) là chân nối đất chung với Arduino.
Chân 5V (chân số 3) là chân đóng vai trị như một đầu ra và có thể được sử dụng

-

để cấp nguồn cho Arduino.
Chân ENA (chân số 4) chân được sử dụng để điều khiển tốc độ của động cơ A,

-

chân đó mức Cao thì động cơ A quay cịn mức Thấp thì động cơ dừng lại.
Chân IN1 & IN2 (chân số 5) là chân được sử dụng để điều khiển hướng quay
của động cơ A, nếu 1 trong 2 chân đó có mức Cao Thấp khác nhau thì động cơ

-

Quay cịn nếu cả 2 đầu vào mà Cao hoặc Thấp thì động cơ sẽ dừng.
Chân IN3 & IN4 (chân số 6) chân này để điều khiển động cơ B, cũng như tương

-

tự như chân số 5.
Chân ENB (chân số 7) là chân được sử dụng điều khiển tốc độ động cơ B, hoạt


-

động tương tự như chân ENA.
Chân OUT1 & OUT2 (chân số 8) chân đầu ra điều khiển động cơ A.
Chân OUT3 & OUT4 (chân số 9) chân đầu ra điều khiển động cơ B.
Các chiều quay của động cơ được điều khiển bằng cách áp dụng các mức Logic
Cao (5V) hoặc Thấp (0V) cho các đầu vào, bảng trạng thái có như sau: [3]

13


Bảng 2: Bảng trạng thái hoạt động
Động Cơ A
0
1
0
1

Động Cơ B
0
0
1
1

Hướng Quay
Tắt
Phía Trước
Phía Sau
Tắt


5. NGUỒN PIN 18650 CUNG CẤP CHO XE HOẠT ĐỘNG.
-

Dung lượng của loại pin này dao động từ 1800 – 3500mAh, công suất 3.7volt.
Pin này sử dụng dòng rất mạnh và phù hợp nhất cấp nguồn cho xe.
Khi pin hết thì sẽ sạc lại và sử dụng lại, giúp phần bảo vệ mơi trường.

Hình 8: Pin 18650 hãng Samsung
CHƯƠNG III: MƠ PHỎNG VÀ MÃ CHƯƠNG TRÌNH
1 MƠ PHỎNG NHỮNG LINH KIỆN NỐI LẠI VỚI NHAU.

14


Hình 9: Mơ Phỏng Trên Phần Mềm Proteus
-

Những linh kiện trên được mô phỏng bằng phần mềm proteus, phần mềm rất

-

thông dụng dành cho các bạn sinh viên đều được sử dụng.
Những linh kiện trên cần phải tải thư viện trên Google, chứ khơng có sẵn trong

-

phần mềm.
Cấu tạo của chiếc xe gồm những thành phần chính nêu trên:
o Mạch Arduino Nano
o Module L298N

o 4 Motor DC
o Cảm biến HC-SR04
o Động cơ Servo
o Nguồn pin 18650, 2 viên.

2 MÃ CHƯƠNG TRÌNH CỦA THIẾT BỊ.
#include <Servo.h>
#include <NewPing.h>
// DC trái
#define ENA A5
#define IN1 A4
#define IN2 A3
// DC phải
#define IN3 A2
#define IN4 A1
#define ENB A0
//HC-SR04
#define trig 2
#define echo 3
15


#define max_khoang_cach 300
// servo
Servo myServo;
boolean di_thang = false;
int khoang_cach = 300;
NewPing sonar(trig, echo, max_khoang_cach);
boolean startA = false;
int batdau;

int disangphai;
int disangtrai;
int quayphai(){
myServo.write(20);delay(500);
int khoang_cach = readPing();
delay(100);
myServo.write(100);
return khoang_cach;
}
int quaytrai(){
myServo.write(180);delay(500);
int khoang_cach = readPing();
delay(100);
myServo.write(100);
return khoang_cach;
delay(100);
}
int readPing(){
delay(70);
int cm = sonar.ping_cm();
if (cm==0){
cm=300;
}
return cm;
}
void setup() {
myServo.attach(9);
myServo.write(100);delay(500);
khoang_cach = readPing();delay(100);
khoang_cach = readPing();delay(100);

khoang_cach = readPing();delay(100);
khoang_cach = readPing();delay(100);
pinMode(ENA, OUTPUT);pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);pinMode(IN4, OUTPUT);
delay(10);
}
void tien(){// di thẳng
if(!di_thang){
di_thang = true;
analogWrite(IN1, 128);analogWrite(IN2, 0);
analogWrite(IN3, 128);analogWrite(IN4, 0);
analogWrite(ENA, 128);analogWrite(ENB, 128);
}
}
16


void lui(){// lùi lại
di_thang = false;
analogWrite(IN1, 0);analogWrite(IN2, 128);
analogWrite(IN3, 0);analogWrite(IN4, 128);
analogWrite(ENA, 128);analogWrite(ENB, 128);
}
void sangphai(){ // đi sang phải
analogWrite(IN1, 128);analogWrite(IN2, 0);
analogWrite(IN3, 0);analogWrite(IN4, 128);
analogWrite(ENA, 128);analogWrite(ENB, 128);
}
void sangtrai(){// đi sang trái

analogWrite(IN1, 0);analogWrite(IN2, 128);
analogWrite(IN3, 128);analogWrite(IN4, 0);
analogWrite(ENA, 128);analogWrite(ENB, 128);
}
void luiphai(){ // lùi phải
analogWrite(IN1, 0);analogWrite(IN2, 128);
analogWrite(IN3, 0);analogWrite(IN4, 128);
analogWrite(ENA, 128);analogWrite(ENB, 128);
}
void luitrai(){ // lùi trái
analogWrite(IN1, 0);analogWrite(IN2, 128);
analogWrite(IN3, 0);analogWrite(IN4, 128);
analogWrite(ENA, 128);analogWrite(ENB, 128);
}
void dunglai(){ // dừng lại
digitalWrite(IN1, LOW);digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);digitalWrite(IN4, LOW);
analogWrite(ENA, 0);analogWrite(ENB, 0);
}
void loop() {
if (!startA){
startA = true;
batdau = random(1,2);
goirandombatdau(batdau);delay(50);
}
int khoangcachphai = 0;
int khoangcachtrai = 0;
delay(50);
if (khoang_cach <= 30){
dunglai();delay(100);

lui();delay(random(200,500));
dunglai();delay(50);
khoangcachphai = quayphai();delay(300);
khoangcachtrai = quaytrai();delay(300);
if (khoang_cach >= khoangcachtrai){
disangphai = random(1,2);
goirandomphai(disangphai);
dunglai();
}else{
disangtrai = random(1,2);
goirandomtrai(disangtrai);
17


dunglai();
}
}else{
tien();
}
khoang_cach = readPing();
}
void goirandomtrai(int disangtrai){
if (disangtrai == 1){
luitrai();delay(random(300,600));
sangtrai();delay(random(300,600));
}
if (disangtrai == 2){
sangtrai();delay(random(300,600));
luitrai();delay(random(300,600));
}

}
void goirandomphai(int disangphai){
if (disangphai == 1){
luiphai();delay(random(300,600));
sangphai();delay(random(300,600));
}
if (disangtrai == 2){
sangphai();delay(random(300,600));
luiphai();delay(random(300,600));
}
}
void goirandombatdau(int batdau){
if (batdau == 1){
sangphai();delay(500);
sangtrai();delay(500);
tien();
}
if (batdau == 2){
luitrai();delay(500);
luiphai();delay(500);
tien();
}
}

18


Hình 10: Địa chỉ file HEX để mơ phỏng trên phần mềm
-


Đầu tiên là khai báo thư viện Servo và thư viện NewPing, để cho động cơ servo
hoạt động với tần số xung ổn định còn thư viện NewPing dành cho cảm biến siêu

-

âm.
Khai báo các chân linh kiện cần nối với vi điều khiển bằng lệnh #define.
Khai báo các hàm cần thiết, như là biến Boolean, int để gán các tên giá trị cần sử

-

dụng.
Khai báo hàm int quaytrai và quayphai cho động cơ servo quay để tìm khoảng

-

cách của vật cản.
Hàm SETUP dùng để khai báo chân INPUT OUTPUT để cho các linh kiện hoạt

-

động.
Hàm chương trình Tiến, Lùi, Sang Phải, Sang Trái, Lùi Trái, Lùi Phải, Dừng,
đó có nghĩa các hàm cài đặt sẵn để khi đưa vào các chương trình chính để khai

-

báo rằng đi theo hướng.
Hàm LOOP là chương trình chính để điều khiển, có các hàm if else các tốn tử


-

tính tốn điều hướng cho bộ xử lý.
Nguyên tắc hoạt động của chiếc xe rằng là khi gặp vật cản vị trí xe cách vật cản
mà dưới 30cm thì động cơ servo sẽ quay trái và phải để tìm ra hướng tốt để tìm ra
đường mà không bị cản cũng như thay thế khi nâng cấp lên là làm robot lau nhà
tự động gắn thêm nhiều cảm biến như là cảm biến hồng ngoại, còn nếu xử lý tốt

19


hơn thì sử dụng camera để tránh vật cản, muốn điều chỉnh vật cản khoảng cách thì
-

sửa lại ở trong chương trình code.
Do thời gian có hạn ngắn với tình hình dịch bệnh nên chưa nâng cấp xe lên nhiều
cảm biến hơn, nếu có thời gian thì em sẽ làm xe nhiều cảm biến hồng ngoại để có
độ chính xác tuyệt đối hơn.
CHƯƠNG IV: ỨNG DỤNG VÀ KẾT LUẬN

1 ỨNG DỤNG VỀ THIẾT BỊ XE TRÁNH VẬT CẢN.
-

Khi thiết bị này nâng cấp lên thì có rất nhiều tính răng mới hơn như là điều khiển

-

bằng sóng WIFI hoặc sóng RF...
Hiện tại thiết bị chỉ mới hoạt động theo chương trình được viết nạp để bộ vi xử lý


-

hoạt động.
Với thiết bị tên đề tài trên thì xe này hoạt động rất chi là tiện lợi và hoạt động rất
chi nhiều lĩnh vực ứng dụng trong đời sống như là làm robot lau nhà tự động,
hoặc như làm chiếc xe giải trí sau những buổi làm việc căng thẳng và đặc biệt như
trong thời gian dịch bệnh vừa qua chúng ta ở nhà rất nhiều dẫn đến sự chán nản
sau những buổi học online, chỉ cần có chiếc xe này nhìn hoạt động giải trí rất hiệu
quả thích thú.

20


Hình 11: Xe Hồn Thành Và Ứng Dụng Có Hiệu Nghiệm
6. KẾT LUẬN BÀI LÀM VỀ XE TRÁNH VẬT CẢN.
-

Lên ý tưởng bài làm và tìm hiểu hoạt động và những linh kiện cần thiết đưa vào

-

hoạt động.
Đọc các tài liệu tham khảo để hiểu biết datasheet của các linh kiện.
Viết chương trình bằng phần mềm Arduino.
Ứng dụng thử nghiệm và hoạt động rất ổn định như ý tưởng suy nghĩ.
Link đường dẫn video:

TÀI LIỆU THAM KHẢO

[1] Arduino, Cộng đồng mạng Arduino Việt Nam, Điện Tử, 2014.

[2] Lidinco, Danh sách cảm biến cần dùng, Hà Nội: Điện Tử, 2009.
[3] Components, L298N Motor Driver Module,
21


2021.

TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA ĐIỆN, ĐIỆN TỬ VÀ
CÔNG NGHỆ VẬT LIỆU

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

PHIẾU ĐÁNH GIÁ TIỂU LUẬN
HỌC KỲ: I NĂM HỌC: 2021 - 2022
Cán bộ chấm thi 1

Cán bộ chấm thi 2

22


Nhận xét: ...............................................

Nhận xét:............................................

.................................................................. .............................................................
.................................................................. .............................................................

.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
.................................................................. .............................................................
Điểm đánh giá của CBChT1:

Điểm đánh giá của CBChT2:

Bằng số:........................................................

Bằng số:..................................................

Bằng chữ:......................................................

Bằng chữ:................................................

Điểm kết luận: Bằng số.................................Bằng chữ:..............................................
CBChT1

Thừa Thiên Huế, ngày …… tháng …… năm 2022
CBChT2

(Ký và ghi rõ họ tên)

(Ký và ghi rõ họ tên)


23



×