Vi điều khiển AVR do hãng Atmel sản xuất đƣợc giới thiệu lần đầu năm 1996. 
AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (nhƣ ATtiny13, 
ATtiny22 ) có kích thƣớc bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR 
(chẳng hạn AT90S8535, AT90S8515, ) có kích thƣớc bộ nhớ vào loại trung bình 
và mạnh hơn là dòng Mega (nhƣ ATmega32, ATmega128, ) với bộ nhớ có kích 
thƣớc vài Kbyte đến vài trăm Kb cùng với các bộ ngoại vi đa dạng đƣợc tích hợp 
trên chip, cũng có dòng tích hợp cả bộ LCD trên chip (dòng LCD AVR). AVR là họ
vi điều khiển 8 bit theo công nghệ mới, với những tính năng rất mạnh đƣợc tích hợp 
trong chip theo công nghệ RISC, nó mạnh ngang hàng với các họ vi điều khiển 8 bit 
khác nhƣ PIC, PSOC. Do ra đời muộn hơn nên họ vi điều khiển AVR có nhiều tính 
năng mới đáp ứng tối đa nhu cầu của ngƣời sử dụng, so với họ 8051 ,89xx sẽ có độ
ổn định, khả năng tích hợp, sự mềm dẻo trong việc lập trình và rất tiện lợi. Tốc độ
của dòng Mega cũng cao hơn so với các dòng khác. Sự khác nhau cơ bản giữa các 
dòng chính là cấu trúc ngoại vi, còn nhân thì vẫn nhƣ nhau. Gần nhƣ chúng ta 
không cần mắc thêm bất kỳ linh kiện phụ nào khi sử dụng AVR ,thậm chí không 
cần nguồn tạo xung clock cho chíp (thƣờng là khối thạch anh)
                
              
                                            
                                
            
 
            
                 94 trang
94 trang | 
Chia sẻ: lvcdongnoi | Lượt xem: 3075 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế và thi công robot dọn rác bề mặt sông, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
I DUNG 
I. XÂY DỰNG MÔ HÌNH ROBOT 
 Yêu cầu thực tế ban đầu: 
- Khối lƣợng rác Robot vớt đƣợc trong một giờ: 50 (𝑚3  ) 
- Thể tích lồng chƣa rác: 𝑉 = 0.045 (𝑚3) 
1.1 Sơ đồ khối ý tƣởng. 
LỒNG CHỨA RÁC
PHAO
ĐỘNG 
CƠ
PHAO
BỘ ĐIỀU 
KHIỂN
Hình 1.13: Sơ đồ khối ý tƣởng thiết kế 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 24 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Robot gồm hai trục phao chính đặt cố định hai bên, điều khiển Robot duy chuyển 
vớt rác bằng một động cơ chính giữa và cơ cấu bể lái. Lồng chứa rác đặt chính giữa 
lệch phía trên để vớt rác và giữ rác 
1.2 Các phƣơng án thiết kế. 
 Phƣơng án thứ nhất: 
Phƣơng án thứ nhất Robot đƣợc thiết kế theo sơ đồ khối ý tƣởng ban đầu nêu 
ra. Kế cấu khung gồm hai phao chính đặt lệch phía dƣới lồng chứa rác. Toàn bộ 
Robot đƣợc điều khiển để vớt rác bởi một động cơ chính với cơ cấu bánh lái đặt 
chính giữa. 
 Khuyết điểm: 
- Phao chính đặt hơi lệch phía sau lồng chứa rác làm mất ổn định về kết cấu 
khung Robot khi trên bờ, cũng nhƣ hoạt động dƣới nƣớc. 
- Robot duy chuyển bằng cơ cấu bánh lái thông qua lực đẩy của chân vịt 
không linh hoạt khi vớt rác. 
- Việc thiết kế, thi công cơ cấu bánh lái mất thời gian, giá thành mua vật liệu 
cao nên không phù hợp và không cần thiết. 
- Một động cơ chính đòi hỏi công suất, tốc độ lớn nên khó tìm đƣợc động cơ 
thích hợp… 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 25 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Phƣơng án thứ hai: 
Sơ đồ khối phƣơng án thứ hai: 
LỒNG CHỨA 
RÁC
PHAOPHAO
ĐỘNG 
CƠ
BỘ ĐIỀU 
KHIỂN
ĐỘNG 
CƠ
Hình 1.14: Sơ đồ khối phƣơng án thiết kế lần thứ hai 
Phƣơng án hai thiết kế hiệu quả hơn và mang tính linh hoạt khi điều khiển Robot 
vớt rác. 
 Ƣu điểm: 
- Hai động cơ bố trí rộng về hai bên làm nhiệm vụ bẻ lái trực tiếp giúp việc 
điều khiển Robot dễ dàng. 
- Hai trục phao chính đƣợc đƣa lên phía trƣớc tạo đƣờng ray trƣợt kết nối với 
lồng chứa rác. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 26 
Võ Thành Luận 
Trƣơng Hữu Toàn 
- Toàn bộ Robot thiết kế với những sản phẩm ống nhựa PVC bán sẵn trên thị 
trƣờng nên việc thi công ít mất thời gian gia công. 
- Bảo đảm đƣợc tính chống nƣớc, nhằm tạo lực nổi phù hợp cho Robot khi 
làm việc dƣới nƣớc. 
 Nhƣ vậy dựa vào kết quả phân tích về các ƣu điểm cũng nhƣ thuận lợi, 
hiệu quả thì phƣơng án thứ hai đƣợc chọn để thi công Robot. 
Hình 1.15: Mô hình 3D Robot thiết kế theo phƣơng án thứ hai 
1.3 Nguyên lý hoạt động của Robot. 
Robot hoạt động dựa trên việc điều khiển trực tiếp bằng tay bấm, thông qua việc 
truyền nhận tín hiệu bằng module thu - phát sóng RF theo chuẩn truyền thông 
UART phạm vi hoạt động 200m. Sau khi nhận tín hiệu từ bộ phát trên tay bấm thì 
board mạch trung tâm sẽ xử lý tín hiệu và xuất kết quả để điều khiển cơ cấu chấp 
hành, gồm hai động cơ chính cùng với thiết bị đẩy là chân vịt đƣợc liên kết với nhau 
nhờ hai khớp nối trục đàn hồi. Cơ cấu chấp hành giúp cho Robot duy chuyển Up – 
Down – Left – Right thông qua chân vịt tạo lực đẩy để Robot thực hiện công việc 
vớt rác. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 27 
Võ Thành Luận 
Trƣơng Hữu Toàn 
II. Tính toán cho Robot. 
2.1 Tính toán đánh giá về độ nổi của Robot. 
Áp dụng theo nguyên lý về lực đẩy Acsimet trong trƣờng hợp để một vật có 
thể nổi trong môi trƣờng nƣớc thì phải thỏa nãm điều kiện là: Trọng lƣợng của 
vật phải nhỏ hơn lực đẩy Acsimet 
Ta có biểu thức: 𝐹𝐴 > 𝑃 
 ⟺ 𝑑 × 𝑉 > 𝑚 × 𝑔 (*) 
 Với m =21 (Kg): Tổng khổi lƣợng của Robot 
 g = 9.81 (𝑚 𝑠2) : Gia tốc trọng trƣờng 
 d: Trọng lƣợng riêng của nƣớc 
 V: Thể tích phần chất lỏng bị chiếm chỗ 
 Thế vào phƣơng trình (*) ta đƣợc : 
 𝑉 >
𝑚×𝑔
𝑑
=
21 ×9.81
9810
= 0.021 (𝑚3) 
Nhƣ vậy thể tích Robot sau khi thiết kế phải lớn hơn 0.21 (𝑚3) thì mới đảm 
bảo độ nổi của Robot. 
 Tính tổng thể tích thực của Robot: 
Tổng thể tích của Robot đƣợc tính tay gần đúng bằng cách cộng tất cả các khối trụ 
ống lại. 
Ta có: 𝑉𝑅𝑜𝑏𝑜𝑡 = 2.𝑉1 + 2.𝑉2 + 3.𝑉3 + 𝑉4 + 2.𝑉5 
Với: 𝑉1: Thể tích phao chính của Robot 
𝑉2: Thể tích phần ống chƣa động cơ 
 𝑉3: Thể tích phần ống nối ngang kết cấu khung 
𝑉4 : Thể tích phần lồng chƣa rác 
𝑉5 : Thể tích bình Acquy 
 Trong đó: 
𝑉1 = 2.𝜋. 57
2 . 800 
𝑉2 = 2.𝜋. 57
2 . 348 
𝑉3 = 3.𝜋. 20
2 . 370 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 28 
Võ Thành Luận 
Trƣơng Hữu Toàn 
𝑉4 = 600 × 25 × 30 − 595 × 24.5 × 33.5 = 38346 (𝑚𝑚
3) 
𝑉5 = 151 × 65 × 101 = 991315 (𝑚𝑚
3) 
⟹ 𝑉𝑅𝑜𝑏𝑜𝑡 = 2.𝜋. 57
2 800 + 348 + 3.𝜋. 202. 370 + 38346 + 991315
= 0.03 (𝑚3) 
Vậy 𝑉𝑅𝑜𝑏𝑜𝑡 > 𝑉 = 0.02 Thể tích chiếm nƣớc của Robot. Nhƣ vậy Robot 
đảm bảo đủ điều kiện nổi so với thiết kế. 
2.2 Tính toán vận tốc làm việc của Robot, số vòng quay chân vịt và chọn 
công suát động cơ. 
 Các thông số đầu vào: 
 Yêu cầu đặt ra của Robot: Vớt đƣợc 50 (𝑚3 ) 
 Thể tích thực của lồng chứa rác 𝑉 = 𝑎 × 𝑏 ×  = 0.045 ( 𝑚3) 
 Vận tốc làm việc của Robot: 
Ta có: 
 𝑄 = 𝑆 × 𝑣 
Với 𝑄: Lƣu lƣợng rác vớt đƣợc 
S: Diện tích mặt cắt ngang của lồng chứa rác 
𝑣 : Vận tốc làm việc của Robot 
𝑆 = 𝑎 × 𝑏 = 0.25 × 0.3 = 0.075 (𝑚2) 
𝑄 = 50 𝑚3 𝑠 
⟹ Vận tốc làm việc 𝑣 =
𝑄
𝑆
=
50
0.075
≈ 700 𝑚  
Vì tính chất mật độ phân bố rác ở các tuyến sông dày trên mặt sông, 
nƣớc nên hệ số rỗng diện tích mặt phân bố ta dựa vào thực tế khảo sát là: 
𝑒 = 0.1 
⟹ Vận tốc làm việc Robot khi vớt rác 𝑣 =
700
0.1
= 7000 𝑚  
 = 7 𝑘  
 Số vòng quay chân vịt và công suất động cơ: 
Nhƣ đã biết, tàu thuỷ là một công trình kỹ thuật phức tạp làm việc trong 
điều kiện khắc nghiệt,bao gồm ba bộ phận chính là động cơ, vỏ tàu và chân 
vịt, thƣờng đƣợc gọi tên chung là liên hợp tàu, trong đó chân vịt là bộ phận 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 29 
Võ Thành Luận 
Trƣơng Hữu Toàn 
trung gian quan trọng có nhiệm vụ tiếp nhận công suất động cơ phát ra,tạo 
thành lực đẩy P, khắc phục sức cản môi trƣờng R để đẩy tàu chuyển động 
với tốc độ xác định V. Về mặt lý thuyết, quá trình làm việc độc lập của chân 
vịt tàu trong nƣớc tự do sẽ đƣợc thể hiện trên,đƣờng đặc tính hoạt động 
𝐾𝑇 ,𝐾𝑄 , 𝜂𝑝 = 𝑓 𝐽 , tức là đồ thị thể hiện quan hệ giữa các thông số kỹ thuật 
của chân vịt nhƣ hệ số lực đẩy 𝐾𝑇, hệ số mômen 𝐾𝑄, hiệu suất 𝜂𝑝 và hệ số 
tiến J của chân vịt (hình 1.13), với các thông số nói trên đƣợc xác định theo 
các công thức đã biết trong các tài liệu lý thuyết tàu. 
( Tham khảo tài liệu TS Trần Gia Thái – Khoa Kỹ thuật tàu thủy - Đại 
học Thuỷ sản, Nghiên Cứu Xác Định Đường Đặt Tính Chân Vịt Trong Điều 
Kiện Khai Thác Thực Tế ). 
Hình 1.16: Hệ số lực đẩy, Mômem quay của chân vịt 
Ta có: 
 𝐽 =
𝑉𝑝
𝑛 .𝐷
Với: 𝐽: Hệ số tiến 
𝑉𝑝 : Vận tốc tiến của tàu ( Vận tốc làm việc của Robot ) (𝑚 𝑠 ) 
𝑛 : Số vòng quay của chân vịt (𝑠−1) 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 30 
Võ Thành Luận 
Trƣơng Hữu Toàn 
𝐷 : Đƣờng kính chân vịt (𝑚) 
( Theo đường đặt tín chân vịt hình H1.11 trang 141 sách Động Lực Học Tàu 
Thủy, Trần Công Nghị ) 
Trong phạm vi 0 < 𝐽 < 𝐽1 chận vịt tàu làm nhiệm vụ cảu máy đẩy tàu, tạo 
lực đẩy lớn hơn 0, đƣa tàu về phía trƣớc. Khi vƣợt qua 𝐽2 chân vịt tàu sẽ làm 
nhiệm vụ nhƣ tua bin tạo momen quay. 
 Ta chọn giá trị: 𝐽=0.5 
 𝐾𝑄 = 0.6 
 ⟹ 𝑛 =
𝑉𝑝
𝐽 .𝐷
=
2
0.5×0.1
= 40 ( 𝑣ò𝑛𝑔 𝑔𝑖â𝑦 ) 
 = 2400 ( 𝑣ò𝑛𝑔 𝑝ú𝑡 ) 
Với: 𝑉𝑝 = 𝑉 = 7000 𝑚  ≈ 2 (𝑚 𝑠 ) 
 𝐷 = 10 (𝑚) 
 Công suất cần thiết để đẩy chân vịt: 
𝑃 =
2.𝜋
75
.𝐾𝑄 .𝜌.𝑛
3.𝐷5 
=
2.𝜋
75
× 0.6 × 1000 × 403 × 0.15 = 32 ( 𝑊 ) 
Do thiết kế Robot hoạt động với hai động cơ đặt hai bên phao chính, nên chọn 
mỗi động cơ là 16 ( 𝑊 ). 
 Thời gian công suất bình Acquy đáp ứng tối đa khi Robot làm việc 
Ta có: Công suất của hai bình Acquy : 𝑃1 = 2 × 12 × 7.3 ≈ 173 ( 𝑊 ) 
Công suất của động cơ 𝑃2 = 32 ( 𝑊 ) 
Thời gian 𝑡 =
173
32
= 5.4 () 
Nhƣ vậy thời gian Robot có thể hoạt động đƣợc là khoảng 5 () 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 31 
Võ Thành Luận 
Trƣơng Hữu Toàn 
2.3 Tính chọn trục chân vịt và kiểm tra bền. 
Hình 1.17:Trục chân vịt trong thiết kế và lắp ráp 
Robot vớt rác làm việc với vận tốc không lớn và dƣới môi trƣờng nƣớc sẽ khử 
đƣợc những rung động do lực chân vịt và động cơ gây ra. Đồng thời hai gối đỡ là 
vòng bi với phớt loại nhỏ. Nên để đơn giản hóa ta sẽ không xét vào khi tính toán. 
Nhƣ vậy chỉ giải quyết bài toán thanh chịu xoắn thuần túy, và mô hình hóa lại trục 
nối chân vịt ta có: 
Hình 1.18: Mô hình hóa trục nối chân vịt 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 32 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Tính đƣờng kính d của truc: 
Dựa vào vật liệu thƣờng xuyên đƣợc chọn để làm trục phục vụ cho nghành tàu thủy 
nên ta sử dụng trục inox SUS 201 – ASTMA666. 
Có các thông số sau: 𝜍𝑏 = 260 𝑁 𝑚𝑚
2 
 𝜍𝑐 = 𝜍 = 655 (𝑁 𝑚𝑚
2 ) 
Độ cứng HB 217 
 𝜏 =
 𝜍 
2
= 327.5 (𝑁.𝑚𝑚) 
Theo điều kiện bền 𝜏𝑚𝑎𝑥 =
𝑀𝑧
𝑊𝜌
≤ 𝜏 (∗) 
Với : Momen chống xoắn 𝑊𝜌 = 0.2 × 𝑑
3 
 Momem xoắn lớn nhất 9.55 × 106.
𝑃
𝑛
= 61 (𝑁.𝑚𝑚) 
Tiết diện là trụ, tròn đặt…Nên 
Hình 1.19: Biểu đồ Momen xoắn trục nối chân 
vịt 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 33 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 ∗ ⟺ 
𝑀𝑧
0.2× 𝑑3
≤ 𝜏 
⟺ 𝑑 ≥ 
61. 103
0.2 × 327.5
= 9.75 𝑚𝑚 
3
 Vậy chọn trục động cơ có đƣờng kính d=10 (mm). 
III. THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 
3.1 Sơ đồ khối tổng quát của hệ thống điều khiển. 
Joysticks
Vi điều 
khiển
Pin 9V
ẮC QUY
Vi điều 
khiển
ĐỘNG CƠ
Phát RF Thu RF
: Đƣờng năng lƣợng
: Đƣờng tín hiệu
MẠCH CẦU H
Hình 1.20: Sơ đồ khối tổng quát của hệ thống Robot 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 34 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hệ thống nhìn chung sẽ có hai khối thành phần chính: 
- Khối điều khiển: Gồm các thành phần nhƣ pin 9 Volt cung cấp năng lƣợng, 
các tay joystick điều khiển 4 kênh Up - Down - Left - Right, vi điều khiển và bộ 
phát tín hiệu bằng sóng RF. 
- Khối mô hình Robot vớt rác với bộ thu RF, vi điều khiển ATMega8, Module 
mạch cầu H và động cơ DC, và bình ắc quy 12v-7.2 Ah làm nguồn nuôi chung. 
I. Tay bấm điều khiển. 
Hình 1.21: Sơ đồ khối tay bấm điều khiển 
Nhiệm vụ của tay điều khiển là phát tín hiệu điều khiển trên 4 kênh chính yếu 
là Up - Down - Left – Right đến board trung tâm để điều khiển Robot làm việc theo 
ý muốn. 
Về vấn đề chuẩn giao tiếp, nhóm đã chọn truyền thông UART thay vì sử dụng 
kỹ thuật vô tuyến trải phổ (Spread Spectrum) tần số FM 2.4GHz vốn thông dụng 
trong lĩnh vực mô hình điêu khiển này vì những lý do về kinh phí, kinh nghiệm sử 
dụng, khả năng ứng dụng, mở rộng và phát triển sau này của đề tài. Nhóm đã xây 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 35 
Võ Thành Luận 
Trƣơng Hữu Toàn 
dựng mã điều khiển dựa trên truyền thông UART, số kênh điều khiển và tín hiệu 
điều khiển sẽ dễ dàng thay đổi mà không cần can thiệp nhiều vào phần cứng cũng 
nhƣ phần mềm. 
3.2 Mạch điều khiển trung tâm. 
Mạch điều khiển trung tâm dùng vi điều khiển AT mega8 và hai module công 
suất mạch cầu H dùng IC kích FET chuyên dụng IR2184. 
 Các nhiệm vụ của mạch trung tâm: 
- Nhận tín hiệu sóng RF của tay bấm điều khiển. 
- Chƣơng trình thực thi xử lý tín hiệu sau đó xuất tín hiệu điều khiển tƣơng 
ứng ra cơ cấu chấp hành là 2 động cơ chính. 
- Đồng thời trả lại tín hiệu về bộ tay bấm điều khiển sau khi xử lý mà có sự cố 
nhƣ: Hết bình ác quy làm cho điện áp không đủ, chân vịt bị kẹt dẫn đến quá 
dòng có thể cháy động cơ hoặc board. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 36 
Võ Thành Luận 
Trƣơng Hữu Toàn 
H
ìn
h
 1
.1
9
: 
 S
ơ
 đ
ồ
 n
g
u
y
ên
 l
ý
 m
ạ
ch
 t
ru
n
g
 t
â
m
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 37 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.22: Sơ đồ mạch in board trung tâm đƣợc thiết 
kế trên phần mềm Orcad 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 38 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.23: Board điều khiển trung tâm thực tế trên Robot 
 Board công suất cầuH điều khiển động cơ DC 
Module cầu H dùng IC kích FET chuyên dụng IR2184, FET sử dụng IRF3205 
nên cho dòng cao. Module này đƣợc thiết kế dành cho các ứng dụng điều khiển tốc 
độ và vị trí dùng DC Motor (motion control). 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 39 
Võ Thành Luận 
Trƣơng Hữu Toàn 
H
ìn
h
 1
.2
4
: 
 S
ơ
 đ
ồ
 n
g
u
y
ên
 l
ý
 b
o
a
rd
 c
ô
n
g
su
ấ
t 
c
ầ
u
H
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 40 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.25: Board cầuH dùng IC kích FET chuyên dụng IR2184 
 Đặt tính kỹ thuật cảu board: 
- Dòng liên tục 10A. 
- Dòng đỉnh 30A (200 ms). 
- Điện áp cấp từ +24V. 
- Có Led báo nguồn cho mạch. 
- Có Led báo chiều động cơ. 
- Bảo vệ ngắn mạch. 
- Board đƣợc thiết kế nhỏ gọn. 
- Dùng ic kích FET chuyên dụng IR2184. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 41 
Võ Thành Luận 
Trƣơng Hữu Toàn 
3.3 Module sóng RF. 
 Module thu phát RF tần số 915MHz, dùng truyền thông UART 8-bit, tốc độ 
truyền lên đến 19200bps, có khả năng liên lạc tốt trong phạm vi 200m. 
Hình 1.26: Module RF sử dụngtruyền thông UART 
 Bản mô tả các chân kết nối của module RF 
3.4 Động cơ DC và thiết bị đẩy ( chân vịt ) 
Trên thị trƣờng có rất nhiều loại động cơ DC với công suất và số vòng quay 
khác nhau. Dựa vào kết quả tính toán sơ bộ và điều kiện sản xuất thực tế ngoài tjị 
trƣờng, ở đây sử dụng động cơ của máy khoan DC cầm tay dùng pin của hãng 
RYOBI, với công suất và Momem xoắn khởi động lớn nhằm đáp ứng đƣợc vận tốc 
cần thiết của Robot thông qua thiết bị đẩy là bộ chân vịt. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 42 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.27: Bản thông số động cơ máy khoa DC đƣợc sử dụng chế lại 
Hình 1.28: Chân vịt AS-6717-3 của cano mô hình 
 Thông số: 
- Mã AS-6717-3 loại ba cánh quạt 
- Chất liệu: Nhôm hợp kim, bề mặt đƣợc đánh bóng. 
- Đƣờng kính D=100 mm 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 43 
Võ Thành Luận 
Trƣơng Hữu Toàn 
- Đƣờng kính trục chân vịt d=5 mm 
 Bình Acquy đƣợc sử dụng trong Robot. 
3.5 Xây dựng toàn bộ giải thuật điều khiển hệ thống. 
 Chƣơng trình điều khiển: 
Giới thiệu: 
- Phần điều khiển chính dùng vi điều khiển Atmega 8 của Atmel. Code đƣợc 
viết trên nền tảng là ngôn ngữ C++. Và công cụ hổ trợ viết software là 
Codevision 2.05. 
- Phần lập trình điều khiển đƣợc chia làm 2 phần: phần trên remote điều khiển 
và một phần thuộc robot. 
- Tín hiệu đƣợc truyền không dây và điều khiển bằng tín hiệu 
analog(Joysticks) nên việc truyền dữ liệu đòi hỏi phải ở tốc độ cao và dữ liệu 
truyền đi luôn là một gói dữ liệu. 
- Truyền nhận dữ liệu không dây theo chuẩn RS232 nên dữ liệu truyền dƣới 
dạng song công. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 44 
Võ Thành Luận 
Trƣơng Hữu Toàn 
+ Trên tay bấm điều khiển: Có nhiệm vụ đọc tín hiệu từ Joysticks điều khiển 
sau đó xử lý dữ liệu và phát ra sóng RF đồng thời nhận các tín hiệu phản hồi từ 
robot nhƣ quá dòng hay pin yếu… 
+ Trên robot: Nhận tín hiệu từ remote, phân tích dữ liệu, xuất tín hiệu điều 
khiển robot. Đồng thời đọc các tín hiệu nhƣ quá công suất hay pin yếu để phát 
tín hiệu cảnh báo về cho remote cho ngƣời điều khiển kịp thời xử lý. 
 Lƣu đồ giải thuật điều khiển từ phần: 
 Lƣu đồ giải thuật đọc tín hiệu từ Joystick sao đó chuyển hóa dữ 
liệu thành dạng chuỗi và chuyền dữ liệu UART. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 45 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Bắt đầu
Khởi tạo các tính năng 
(I/O,UART,ADC)
Đọc ADC
Kiểm tra sự thay 
đổi giá trị ADC
Không thay đổi
Phím nào đƣợc 
nhấn
Thay đổi
Kết thúc
Truyền gói dữ liệu 
dạng axxxbyyyc
Xxx : giá trị adc joysticks 
Yyy: giá trị adc joysticks
Hình 1.29: Sơ đồ khối giải thuật đọc tín hiệu từ Joystick. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 46 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Lƣu đồ giải thuật kiểm tra bình ác quy yếu trên Robot. 
Khi nhận đƣợc ký tự “y” từ robot truyền về chứng tỏ Robot hiện tại đang yếu pin 
và led 1 sáng lên báo hiệu pin trên robot. 
Nhận data
Nhận đƣợc chử 
“y”
Không đúng
Báo đèn đỏ 1
Đúng chử “y”
Kết thúc
Hình 1.30: Sơ đồ khối giải thuật kiểm tra yếu bình ác quy trên Robot 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 47 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Lƣu đồ giải thuật kiểm tra pin yếu trên Remote. 
Tín hiệu điện áp của Pin trên tay bấm sẽ đƣợc đọc liên tục nếu Pin đạt ngƣỡng thấp 
chứng tỏ Pin đã yếu và đèn Led đỏ 2 sáng lên báo hiệu Pin yếu. 
Kiểm tra pin
Đọc ADC
Pin tốt
Báo đèn đỏ 2
Pin yếu
Kết thúc
Hình 1.31: Sơ đồ khối giải thuật kiểm tra yếu pin trên remote 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 48 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Lƣu đồ giải thuật kiểm tra pin yếu trên Board trung tâm. 
Kiểm tra pin
Kiểm tra pin
(ADC)
Truyền chử “y”
Pin yếu
Pin tốt
Kết thúc
Delay 5s
Hình 1.32: Sơ đồ khối giải thuật kiểm tra yếu pin trên Board trung tâm 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 49 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Lƣu đồ giải thuật kiểm tra và xử lý khi Robot bị mất sóng RF. 
Khi tín hiệu đƣợc nhận chứng tỏ sóng vẫn còn. Nhƣng nếu trong 3s liên tiếp mà tín 
hiệu không đƣợc nhận từ tay bấm thì lập tức robot sẽ dừng lại. 
Khi bị mất sóng RF
Kiểm tra liên tục 
UART
Kiểm tra dữ liệu
Kiểm tra trong 3s 
liên tiếp
Xử lý dataCó data
Cho dừng robot
Không có data (mất sóng)
Kết thúc
Hình 1.33: Sơ đồ khối giải thuật kiểm tra và xử lý khi Robot bị mất sóng 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 50 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Lƣu đồ giải thuật xử lý dữ liệu và điều khiển Robot. 
Bắt đầu
Khởi tạo các tính 
năng (I/O, UART, 
pwm)
Kiểm tra UART
Nhận dữ liệu Không có dữ liệu
Kiểm tra dữ liệu dạng chuổi
(axxxbyyyc)
Kết thúc
Tắt động cơ
Phân tích dử liệu
Xuất tín hiệu pwm 
điều khiển(xxx tốc 
độ DC trái,yyy tốc 
độ DC phải)
Hình 1.34: Sơ đồ khối giải thuật xử lý dữ liệu để điều khiển Robot 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 51 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Chƣơng IV: CHẾ TẠO MÔ HÌNH ROBOT 
Mô hình Robot đƣợc thiết kế bằng phần mềm ProEngineer Wildfire 5.0 theo 
phƣơng án tối ƣu thứ hai đã phân tích ở trên. Sử dụng đa phần là sản phẩm ống 
nhựa PVC nên việc thi công dễ đang thuận tiện nhƣng vẫn đảm bảo độ bền kết cấu 
khung Robot. 
Những phụ kiện đƣợc sử dụng trong thiết kế và thi công Robot: 
I. Ống nhựa PVC Bình Minh. 
Thông tin chung về ống nhựa PVC: 
- Lĩnh vực áp dụng: 
Thích hợp dùng cho hệ thống dẫn nƣớc trong các ứng dụng: 
 Phân phối nƣớc uống. 
 Hệ thống tƣới tiêu và dẫn nƣớc trong công nghiệp. 
 Hệ thống cấp thoát nƣớc thải, thoát nƣớc mƣa. 
- Tính chất vật lý: 
Tỷ trong 1.4 𝑔 𝑐𝑚3 
Độ bền kéo đứt tối thiều 50 Mpa 
Hệ số giãn nở nhiệt 0.08 𝑚𝑚 𝑚.𝐶𝑜 
Điện trở suất bề mặt 1013 Ω 
Nhiệt độ làm việc cho phép 0 ÷ 45 𝐶𝑜 
- Tính chất hóa học: 
Chịu đƣợc các loại dung dịch axit, dụng dịch kiềm. 
Không chịu đƣợc các axit đậm đặc có tính oxy hóa 
Các loại dung môi hợp chất thơm 
- Áp suất làm việc: 
Áp suất làm việc là áp suất tồi đa cho phép, đối với nhiệt độ của nƣớc lên tới 
450.𝐶 đƣợc tính theo công thức. 𝑃𝑙𝑣 = 𝐾.𝑃𝑁 
Với 𝑃𝑙𝑣 Áp suất làm việc 
K: Hệ số giảm áp đồi với nhiệt độ của nƣớc, K đƣợc xách định theo 
bảng dƣới. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 52 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 .𝑃𝑁 Áp suất dạnh nghĩa 
Bảng 1a: K đối với ống PVC cứng. 
 Khởi thủy dán: 
Hình 1.35: Thông số kỹ thuật khởi thủy dán 
Khởi thủy dán giúp tạo khớp nối rẽ nhánh vuông góc. Đảm bảo sự cứng vững và 
liên kết chặt chẽ khi Robot làm việc. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 53 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Co 900 : 
Tên sản 
phẩm 
Kích 
thƣớc 
danh 
nghĩa 
Các kích thƣớc 
Dmin Zmin Hmin 
21D - Inch 16 27 11 41 
27D - Inch 20 33 14 49 
34D - Inch 25 40 17 57 
Hình 1.36: Thông số kỹ thuật khớp co 𝟗𝟎𝟎 
 Nắp khóa bích: 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 54 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Tên sản phẩm Kích 
thƣớc 
danh 
nghĩa 
Các kích thƣớc 
Dmin Zmin Lmin 
21D - Inch 16 27 2 35 
27D - Inch 20 33 3 41 
34D - Inch 25 40 4 47 
42D - Inch 32 49 5 52 
49D - Inch 40 56 5 64 
60D - Inch 50 69 7 74 
90D - Inch 0 - - - 
114D - Inch 100 127 7 100 
Hình 1.37: Thông số kỹ thuật nắp khóa bích 
 Co 450 
Tên sản phẩm Kích 
thƣớc 
danh 
nghĩa 
Các kích thƣớc 
Dmin Zmin Hmin 
21D - Inch 16 27 5 35 
27D - Inch 20 33 6 41 
34D - Inch 25 40 7 47 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 55 
Võ Thành Luận 
Trƣơng Hữu Toàn 
42D - Inch 32 49 9 53 
49D - Inch 40 56 10 65 
60D - Inch 50 69 13 76 
60M - Inch 50 66 13 38 
75TC - Mét 75 81 38 81 
90D - Inch 80 103 19 83 
90M - Inch 80 96 19 59 
110D - Mét 110 121 23 107 
110M - Mét 110 121 23 107 
114D - Inch 100 127 24 108 
114M - Inch 100 123 24 74 
140D - Mét 140 155 29 133 
140M - Inch 100 - - - 
160D - Mét 160 177 33 165 
160M - Mét 160 175 34 114 
168TC - Inch 150 187 35 167 
Hình 1.38: Thông số kỹ thuật co 𝟒𝟓𝟎 
 Co 3 nhánh 900 : 
Tên sản phẩm Kích Các kích thƣớc 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 56 
Võ Thành Luận 
Trƣơng Hữu Toàn 
thƣớc 
danh 
nghĩa 
Dmin Zmin Hmin 
21D - Inch 16 27 11 41 
27D - Inch 20 33 14 49 
34D - Inch 25 40 17 57 
Hình 1.39: Thông số kỹ thuật co 3 nhánh 𝟗𝟎𝟎 
 Ống nhựa uPVC hệ mét – Tiêu chuẩn ISO 4422:1990 / TCVN 
6151:1996 
Ống có khớp nối dán keo 
Ống có khớp nối gioăng cao su 
Hình 1.40: Thông số ống nhựa uPVC 
II. Các chi tiết cơ khí. 
 Khớp mềm đàn hồi nối trục ( shaft couplings ) 
Sử dụng khớp nối trục đàn hồi giữa trục động cơ và trục chân vịt một phần 
tạo truyền động đến chân vịt, một phần để khắc phục sự lệch tâm giữa hai trục. 
Vì là khớp mềm đàn hồi nên sự sai số lệch tâm nhỏ sẽ không ảnh hƣởng đến quá 
trình truyền động, không ảnh hƣởng đến vận tốc truyền. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 57 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.41: Thông số khớp nối trục đàn hồi 
 Phốt chặn: 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 58 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.42: Thông số phốt chặn của hãng SKF 
Sử dụng phốt chặn tại đầu trục chân vịt vào động cơ nhằm cách ly nƣớc với hộp 
chứa động cơ, đồng thời vẫn đảm bảo đƣợc tốc độ quay của trục chân vịt giảm rất ít 
so với ban đầu. 
Mô hình 3D Robot thiết kế hoàn thiện trên phần mềm. 
Việc chế tạo thi công mô hình một phần để minh họa cho phần thiết kế, mặt khác 
mang ý nghĩa thực tiễn rất cao đối với một sinh viên học nghành kỹ thuật: 
 Có khả năng thực hành làm việc từ ý tƣởng đến sản phẩm thực tế. 
 Nâng cao khả năng nghiên cứu học hỏi để hoàn thiện ý tƣởng trọn vẹn. 
 Giúp sinh viên thực tế từ cách thiết kế, tính toán đến việc chọn mua vật liệu, 
linh kiện…Tất cả đều tự sinh viên trải nghiệm thực tế. 
 Làm cơ sở để có thể những nhóm thực hiện đề tài sau này nghiên cứu phát 
triền hoàn thiện ý tƣởng một cách hiệu quả nhất. 
 Đặt biệt là cho ra thực tế một sản phẩn hoạt động đúng mục đích yêu cẩu của 
ý tƣởng. Một sản phẩm có tính thực tiễn rất cao với yêu cầu và hƣớng giải 
quyết hiện tại về vấn đề ô nhiễm môi trƣờng nƣớc do rác thải sinh hoạt. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 59 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.43: Mô hình 3D của bản thiết kế Robot vớt rác 
Robot thi công hoàn thiện trên thực tế. 
Hình 1.44: Robot vớt rác thi công hoàn thiện 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 60 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình 1.45: Robot vớt rác khi thực tế dƣới nƣớc 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 61 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Chƣơng V: KẾT LUẬN 
I. NHỮNG KẾT QUẢ ĐẠT ĐƢỢC 
Với các mục tiêu đề tài đã đặt ra, qua quá trình thực hiện, nhóm thực hiện đề tài đã 
đạt đƣợc những kết quả nhƣ sau: 
5.1 Về nghiên cứu lý thuyết: 
Đã có tìm hiểu và lên kế hoạch ý tƣởng cho việc thiết kế Robot, tìm hiểu 
nguyên lý điều khiển, lý thuyết tổng quan về các phần tử của hệ động lực tàu giúp 
cho việc thiết kế phần phao và tính toán lực đẩy chọn động cơ chính. 
II. 5.2 Về thiết kế kết cấu khung Robot: 
- Thiết kế hoàn chỉnh mô hình 3D của Robot bằng phần mềm ProEngineer 
Wildfire 5.0 
- Tìm hiểu và tận dụng những vật liệu có bán sẵn trong thị trƣờng trong phần 
thiết kế để tiện trong việc thi công Robot. 
- Tính toán sức cản nƣớc của Robot và chọn động cơ cũng nhƣ thiết bị đẩy 
(chân vịt) phù hợp từ đó có đƣợc vận tốc tối ƣu nhất để Robot làm việc đƣợc. 
- Kết cấu Robot đơn giản để giảm thiểu khối lƣợng nhằm hoạt động linh hoạt, 
mà vẫn đảm bảo đƣợc độ bền, kết cấu cứng vững và mang tính thẩm mỹ. 
5.3 Về thiết kế điều khiển: 
- Mạch điều khiển đƣợc thiết kế và mô phỏng trên phần mềm chuyên dụng 
Orcad và Protues. 
- Chƣơng trình điều khiển đƣợc lập trình trên phần mềm Code VisionAVR với 
gải thuật hợp lý, linh hoạt, dễ sử dụng thông qua tay bấm điều khiển. Robot 
có thể duy chuyển theo hƣớng : Up – Down – Left – Right. Đồng thời tín 
hiệu điều khiển có nhận biết đƣợc khi Robot hết bình, quá tải, mất sóng RF 
để ngƣời điều khiển có biện pháp khắc phục tức thời. 
- Bộ điều khiển từ xa dùng truyền thông theo chuẩn UART với mã điều khiển 
mở, dễ thay đổi, có khả năng mở rộng và phát triển tốt lên các ứng dụng điều 
khiển – giám sát có yêu cầu cao hơn. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 62 
Võ Thành Luận 
Trƣơng Hữu Toàn 
II. NHỮNG KẾT QUẢ CHƢA ĐẠT ĐƢỢC VÀ BIỆN PHÁP KHẮC 
PHỤC 
 Bên cạnh những kết quả đạt đƣợc, đề tài vẫn còn những thiếu sót, hạn chế 
cần phải khắc phục: 
- Tổng khối lƣợng Robot 21Kg nhìn chung vẫn còn khá nặng, cần đƣợc giảm 
xuống từ 1 ÷ 2.5 Kg để giản bớt sức cản của Robot khi làm việc dƣới nƣớc 
và hoạt động linh hoạt hơn trong khi vớt rác. Có thể tối ƣu hóa kích cỡ phần 
phao bằng ống có đƣờng kính nhỏ hơn mà vẫn đảm bảo độ nổi an toàn. 
- Cải thiện việc thiết kế và gia côgn phần gá đặt động cơ với trục chân vịt 
nhằm giảm độ lệch tâm. Giúp chân vịt đạt đƣợc vận tốc tối đa, hạn chế rung 
động của trục chân vịt dẫn đến làm hƣ phốt chặn ngoài từ đó nƣớc sẽ vào 
hộp chứa động cơ gây cháy. 
- Phạm vi thu nhận tín hiệu RF còn hạn chế trong phạm vi 200m nên để đáp 
ứng tốt các ứng dụng cải tiến sau này cần thay thế Module có tần số đáp ứng 
, phạm vi hoạt động xa hơn. 
- Lồng chƣa rác chƣa thực sự đạt hểu quả cao trong việc giữ rác khi Rbot làm 
việc. Cần cải tiến cơ cấu giữ rác trong lồng chứa nhƣng vẫn đảm bảo không 
ảnh hƣởng đến sự linh hoạt của Robot lúc làm việc. 
III. HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 
- Tích hợp thêm bộ phận la bàn điện tử để việc điều khiển Robot vớt rác đƣợc 
thuận tiện và hƣớng duy chuyển chính xác hơn. 
- Do tính chất làm việc Robot là ở ngoài trƣời nên việc ứng dụng nguồn năng 
lƣợng pin mặt trời hết sức cần thiết. 
- Có thể lắp camera ứng dụng công nghệ sử lý ảnh. Để Robot tự nhận biết địa 
điểm có rác ô nhiễm mà thực hiện vớt rác một cách tự động. 
Hiện nay vấn đề ô nhiễm do rác thải sinh hoạt rất đáng lo ngại ở nƣớc ta. Đặt biệt là 
ở các thành phố lớn nhƣ Hồ Chí Minh, Hà Nội, Đà Nẵng...Thì việc nghiên cứu và 
phát triển thêm và cho ra đời những sản phẩm Robot vớt rác là hết sức thực tiễn và 
cần thiết. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 63 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 TÀI LIỆU THAM KHẢO 
Danh mục tài liệu sách: 
[1] Trần Công Nghị, Lý thuyết tàu – Động lực học tàu thủy, TP Hồ Chí Minh, 
1/2004, Đại học Giao thông vận tải TP Hồ Chí Minh. 
[2] Trần Công Nghị, Hướng dẫn thiết kế tàu vận tải biển, NXB Đại học Quốc 
gia TP Hồ Chí Minh. 
[3] PGS.TS. Lê Hồng Bang (Chủ biên), KS. Nguyễ Tiến Lai, Thiết bị đẩy tàu 
thủy, NXB Giao thông vận tải. 
[4] Lê Thanh Phong, Sức Bền Vật Liệu, Đại học Sƣ phạm Kỹ thuật TP Hồ Chí 
Minh 2007 
[5] Thomson, Embedded C Programming and the Atmel AVR 
Danh mục tài liệu Web: 
[1] 
nam.html (20/11/2011) 
[2]  (25/11/2011) 
[3] 
gom-rac-tren-song.aspx (27/11/2011) 
[4]  (10/12/2012) 
[5]  (12/12/2012) 
[6]  (20/12/2012) 
[7]  (20/12/2012) 
[8]  (25/12/2012) 
ewlink=4_1_11 (25/10/2012) 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 64 
Võ Thành Luận 
Trƣơng Hữu Toàn 
PHỤ LỤC 
Phần A: VI ĐIỀU KHIỂN 
I. Tổng quan về họ vi điều khiển AVR 
Vi điều khiển AVR do hãng Atmel sản xuất đƣợc giới thiệu lần đầu năm 1996. 
AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (nhƣ ATtiny13, 
ATtiny22…) có kích thƣớc bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR 
(chẳng hạn AT90S8535, AT90S8515,…) có kích thƣớc bộ nhớ vào loại trung bình 
và mạnh hơn là dòng Mega (nhƣ ATmega32, ATmega128,…) với bộ nhớ có kích 
thƣớc vài Kbyte đến vài trăm Kb cùng với các bộ ngoại vi đa dạng đƣợc tích hợp 
trên chip, cũng có dòng tích hợp cả bộ LCD trên chip (dòng LCD AVR). AVR là họ 
vi điều khiển 8 bit theo công nghệ mới, với những tính năng rất mạnh đƣợc tích hợp 
trong chip theo công nghệ RISC, nó mạnh ngang hàng với các họ vi điều khiển 8 bit 
khác nhƣ PIC, PSOC. Do ra đời muộn hơn nên họ vi điều khiển AVR có nhiều tính 
năng mới đáp ứng tối đa nhu cầu của ngƣời sử dụng, so với họ 8051 ,89xx sẽ có độ 
ổn định, khả năng tích hợp, sự mềm dẻo trong việc lập trình và rất tiện lợi. Tốc độ 
của dòng Mega cũng cao hơn so với các dòng khác. Sự khác nhau cơ bản giữa các 
dòng chính là cấu trúc ngoại vi, còn nhân thì vẫn nhƣ nhau. Gần nhƣ chúng ta 
không cần mắc thêm bất kỳ linh kiện phụ nào khi sử dụng AVR ,thậm chí không 
cần nguồn tạo xung clock cho chíp (thƣờng là khối thạch anh) . Thiết bị lập trình 
(mạch nạp) cho AVR rất đơn giản ,có loại mạch nạp chỉ cần vài điện trở là có thể 
làm đƣợc ,một số AVR còn hỗ trợ lập trình On-Chip bằng bootloader không cần 
mạch nạp…Bên cạnh lập trình bằng ASM ,cấu trúc AVR đƣợc thiết kế tƣơng thích 
với C . 
 Các tính năng mới của họ AVR : 
- Giao diện SPI đồng bộ ,giao tiếp I2C ,USART 
- Có thể sử dụng xung clock lên đến 16MHz ,hoặc sử dụng xung clock nội lên 
đến 8MHz 
- Bộ nhớ flash có thể lập trình lại rất nhiều lần và dung lƣợng lớn ,có 
SRAM(Ram tĩnh)lớn và đặc biệt có bộ nhớ lƣu trữ đƣợc EEPROM . 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 65 
Võ Thành Luận 
Trƣơng Hữu Toàn 
- Nhiều ngõ vào ra (I/O PORT) 2 hƣớng (bi-directional) .8 bits và 16 bits 
Timer/Counter tích hợp PWM . 
- Chức năng Analog comparator 
- Các bộ chuyển đổi Analog- Digital phân giải 10 bits nhiều kênh . 
Hình A.1:Sơ đồ chân của ATMega8 
ATMega8 là một con Vi Điều Khiển thuộc dòng Mega AVR của hãng ATMEL. 
Dòng Vi Điều Khiển này có tính năng nổi trội nhƣ: 
 Rất tiết kiệm năng lƣợng, hiệu suất cao 
CPU có kiến trúc RISC, có 130 lệnh, hầu hết chúng thực hiện chỉ trong một 
chu kỳ xung clock. 
 32 thanh ghi đa dụng 
 Tốc độ tối đa lên đến 16MIPS với thạch anh 16MHz 
 Bộ nhớ phân đoạn, có độ bền cao không dễ bay hơi 
 Có 8KB bộ nhớ Flash lập trình ISP 
 512Bytes EEPROM 
 1KB SRAM 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 66 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Chu kỳ ghi/xóa 10.000 lần cho bộ nhớ Flash ROM, và 100.000 cho 
EEPROM 
 Dữ liệu không bị mất sau 20 năm (ở 850C) và 100 năm (ở 250C) 
 Có tính năng bảo mật 
 Tính năng ngoại vi 
 2 bộ Timer/Counter 8 bit, 1 bộ so sánh 
 1 bộ Timer/Counter 16 bit 
 Bộ đếm Thời gian thực với dao động riêng 
 3 kênh PWM 
 6 kênh ADC 10 bits cho kiểu vỏ PDIP, và 8 kênh ADC 10 bít cho kiểu vỏ 
TQFP 
 Giao tiếp nối tiếp TWI 
 Lập trình nối tiếp USART, giao tiếp nối tiếp SPI master/slave 
 Bộ so sánh Analog on-chip 
 Tính năng đặc biệt của ATMega8 
 Hiệu chuẩn bộ dao động RC nội 
 Bộ nguồn ngắt bên ngoài và bên trong 
 Năm chế độ Sleep: Idle, giảm nhiễu ADC, tiết kiệm năng lƣợng, Power-
down, và chế độ chờ (stand by) 
 Đóng gói & I/O 
 23 ngõ vào/ra khả trình 
 Đƣợc đóng gói trong 28 chân kiểu vỏ PDIP 
 Điện áp hoạt động 
2,7 - 5.5V (ATmega8L) 
4.5 - 5.5V (ATmega8) 
 Tần số hoạt động – 0 - 8 MHz (ATmega8L) 
– 0 - 16 MHz (ATmega8) 
II. Cấu truc Port xuất nhập. 
Hình A.2: Cấu trúc chân của AVR 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 67 
Võ Thành Luận 
Trƣơng Hữu Toàn 
ATMega8 có 3 Port xuất nhập: PortB (có 8 bits), PortC (7 bits), PortD (có 8 Bits). 
Mỗi một cổng của Vi điều khiển đƣợc liên kết với 3 thanh ghi: PORTx, DDRx, 
PINx. 3 thanh ghi này sẽ phối hợp với nhau để điều khiển hoạt động của cổng thành 
lối vào sử dụng Pull-up… 
Cấu trúc chân của AVR có thể phân biệt rõ chức năng (vào/ra), trạng thái (0/1) từ 
đó ta có 4 kiểu vào ra cho một chân của AVR. Khác với 89xx là chỉ có 2 trạng thái 
duy nhất (0 1) . Đặc biệt nguồn từ chân của AVR đủ khoẻ để điều khiển Led trực 
tiếp (dòng khoảng hàng chục mA) còn 89xx chỉ là vài uA . 
Để điều khiển các chân này chúng ta có 2 thanh ghi: 
PORTx :giá trị tại từng chân (0 – 1) có thể truy cập tới từng bit PORTx.n 
DDRx : thanh ghi chỉ trạng thái của từng chân , vào hoặc là ra . 
 Thanh ghi DDRx 
Đây là thanh ghi 8 bits (có thể đọc ghi) có chứ năng điều khiển hƣớng của cổng 
(là lối vào hay lối ra). Khi một bit của thanh ghi này đƣợc set lên 1 thì chân tƣơng 
ứng với nó đƣợc cấu hình thành ngõ ra. Ngƣợc lại nếu của thanh ghi DDRx là 0 thì 
chân tƣơng ứng của nó đƣợc thiết lập thành ngõ vào. Lấy ví dụ: Khi ta set tất cả 8 
bit của thanh ghi DDRD đều là 1, thì 8 chân tƣơng ứng của PORTD là PORTD.0, 
PORTD.1, …, PORTD.7 đƣợc thiết lập là ngõ ra. 
Hình A.3: Thanh ghi DDRD 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 68 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Thanh ghi Protx 
 PORTx là thanh ghi 8 bit có thể đọc ghi. Đây là thanh ghi dữ liệu của PORTx. 
Nếu thânh ghi DDRx thiết lập cổng là lối ra, khi đó giá trị của thanh ghi PORTx 
cũng là giá trị của các chân tƣơng ứng của PORTx, nói cách khác, khi ta ghi một giá 
trị logic lên bit 1 của thanh ghi này thì chân tƣơng ứng của bit đó cũng có cùng mức 
logic. Khi thanh ghi DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng 
vai trò nhƣ một thanh ghi điều khiển cổng. Cụ thể, nếu một bit của thanh ghi này 
đƣợc ghi thành 1 thì điện trở treo (pull-up resistor) ở chân tƣơng ứng với nó sẽ đƣợc 
kích hoạt, ngƣợc lại nếu bit đƣợc ghi thành 0 thì điện trở treo ở chân tƣơng ứng sẽ 
không đƣợc kích hoạt, cổng ở trạng thái tổng trở cao. 
Hình A.4: Thanh ghi PORTD 
Hình A.5: Cấu hình chân của ATMega8 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 69 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Hình A.6: Cấu trúc bên trong của một cổng vào ra cơ bản 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 70 
Võ Thành Luận 
Trƣơng Hữu Toàn 
PhầnB: MỘT SỐ CODE CHÍNH CỦA CHƢƠNG 
TRÌNH 
CODE ĐIỀU KHIỂN TRÊN ROBOT 
 Phần định nghĩa: 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 Phần code khởi tạo biến 
// Bit Flag task Timer 
static bit Flag_10ms,Flag_100ms,Flag_1s; 
// Bien dem ngat timer 
static unsigned int Count_10ms,Count_100ms,Count_1s; 
unsigned char temp_L,temp_H,temp_H_L,temp_H_R; 
char Str_L[5]="128",Str_R[5]="128"; 
unsigned char over_time; 
int Pwm_Temp_L,Pwm_Temp_R; 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 71 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 Khởi tạo ADC: 
#define FIRST_ADC_INPUT 0 
#define LAST_ADC_INPUT 2 
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; 
#define ADC_VREF_TYPE 0x00 
// ADC interrupt service routine 
// with auto input scanning 
interrupt [ADC_INT] void adc_isr(void) 
{ 
static unsigned char input_index=0; 
// Read the AD conversion result 
adc_data[input_index]=ADCW; 
// Select next ADC input 
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) 
 input_index=0; 
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 
0xff))+input_index; 
// Delay needed for the stabilization of the ADC input voltage 
delay_us(10); 
// Start the AD conversion 
ADCSRA|=0x40; 
} 
 Phần khởi tạo chip 
// Declare your local variables here 
// Input/Output Ports initialization 
// Port B initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out 
Func0=In 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 72 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 
State0=T 
PORTB=0x01; 
DDRB=0x0F; 
// Port C initialization 
// Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In 
// State6=T State5=1 State4=T State3=T State2=T State1=T State0=T 
PORTC=0x20; 
DDRC=0x20; 
// Port D initialization 
// Func7=Out Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In 
Func0=In 
// State7=0 State6=0 State5=T State4=T State3=T State2=T State1=T 
State0=T 
PORTD=0x00; 
DDRD=0xF0; 
// Timer/Counter 0 initialization 
// Clock source: System Clock 
// Clock value: Timer 0 Stopped 
TCCR0=0x02; 
TCNT0=0x00; 
// Timer/Counter 1 initialization 
// Clock source: System Clock 
// Clock value: 1000.000 kHz 
// Mode: Ph. correct PWM top=0x00FF 
// OC1A output: Non-Inv. 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 73 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// OC1B output: Non-Inv. 
// Noise Canceler: Off 
// Input Capture on Falling Edge 
// Timer1 Overflow Interrupt: Off 
// Input Capture Interrupt: Off 
// Compare A Match Interrupt: Off 
// Compare B Match Interrupt: Off 
TCCR1A=0xA1; 
TCCR1B=0x02; 
TCNT1H=0x00; 
TCNT1L=0x00; 
ICR1H=0x00; 
ICR1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00; 
OCR1BL=0x00; 
// Timer/Counter 2 initialization 
// Clock source: System Clock 
// Clock value: Timer2 Stopped 
// Mode: Normal top=0xFF 
// OC2 output: Disconnected 
ASSR=0x00; 
TCCR2=0x00; 
TCNT2=0x00; 
OCR2=0x00; 
// External Interrupt(s) initialization 
// INT0: Off 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 74 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// INT1: Off 
MCUCR=0x00; 
// Timer(s)/Counter(s) Interrupt(s) initialization 
TIMSK=0x01; 
// USART initialization 
// Communication Parameters: 8 Data, 1 Stop, No Parity 
// USART Receiver: On 
// USART Transmitter: On 
// USART Mode: Asynchronous 
// USART Baud Rate: 9600 
UCSRA=0x00; 
UCSRB=0xD8; 
UCSRC=0x86; 
UBRRH=0x00; 
UBRRL=0x33; 
// Analog Comparator initialization 
// Analog Comparator: Off 
// Analog Comparator Input Capture by Timer/Counter 1: Off 
ACSR=0x80; 
SFIOR=0x00; 
// ADC initialization 
// ADC Clock frequency: 125.000 kHz 
// ADC Voltage Reference: Int., cap. on AREF 
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff); 
ADCSRA=0xCE; 
// SPI initialization 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 75 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// SPI disabled 
SPCR=0x00; 
// TWI initialization 
// TWI disabled 
TWCR=0x00; 
// Global enable interrupts 
#asm("sei") 
Code chƣơng trình chính. 
void main(void) 
{ 
init(); 
#asm("sei") 
delay_ms(500); 
//------------------------------------------------------------ 
while (1) 
 { 
 if(Flag_10ms==En) {Flag_10ms=Dis;Task_10ms();} 
 if(Flag_100ms==En){Flag_100ms=Dis;Task_100ms();} 
 if(Flag_1s==En) {Flag_1s=Dis;Task_1s();} 
 } 
} 
Code tạo các sự kiện báp cờ 10ms,100ms,1s 
interrupt [TIM0_OVF] void timer0_ovf_isr(void) 
{ 
 TCNT0=200; // ok 160 
 Count_10ms++; 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 76 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 // Set Flag Task 10ms 
 if(Count_10ms==100){Flag_10ms=En;Count_10ms=0;Count_100ms++;} 
// Set Flag Task 100ms 
 if(Count_100ms==10){Flag_100ms=En;Count_100ms=0;Count_1s++;} 
// Set Flag Task 1s 
 if(Count_1s==10) {Flag_1s=En;Count_1s=0; } 
} 
 Phần code nhận dữ liệu: 
// USART Receiver buffer 
#define RX_BUFFER_SIZE 8 
char rx_buffer[RX_BUFFER_SIZE]; 
#if RX_BUFFER_SIZE <= 256 
unsigned char rx_wr_index,rx_rd_index,rx_counter; 
#else 
unsigned int rx_wr_index,rx_rd_index,rx_counter; 
#endif 
// This flag is set on USART Receiver buffer overflow 
// USART Receiver interrupt service routine 
interrupt [USART_RXC] void usart_rx_isr(void) 
{ 
char status,data; 
status=UCSRA; 
data=UDR; 
if ((status & (FRAMING_ERROR | PARITY_ERROR | 
DATA_OVERRUN))==0) 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 77 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 { 
 switch (data) 
 { 
 case 'a': 
 strcpyf(rx_buffer,"\0"); 
 rx_wr_index=0; 
 over_time=0; 
 break; 
 case 'b': 
 strlcpy(Str_R,rx_buffer,rx_wr_index); 
 strcpyf(rx_buffer,"\0"); 
 rx_wr_index=0; 
 break; 
 case 'c': 
 strlcpy(Str_L,rx_buffer,rx_wr_index); 
 strcpyf(rx_buffer,"\0"); 
 rx_wr_index=0; 
 break; 
 default: 
 rx_buffer[rx_wr_index]=data; 
 rx_wr_index++; 
 break; 
 } 
 } 
} 
#ifndef _DEBUG_TERMINAL_IO_ 
// Get a character from the USART Receiver buffer 
#define _ALTERNATE_GETCHAR_ 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 78 
Võ Thành Luận 
Trƣơng Hữu Toàn 
#pragma used+ 
char getchar(void) 
{ 
char data; 
while (rx_counter==0); 
data=rx_buffer[rx_rd_index++]; 
#if RX_BUFFER_SIZE != 256 
if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; 
#endif 
#asm("cli") 
--rx_counter; 
#asm("sei") 
return data; 
} 
#pragma used- 
#endif 
// USART Transmitter buffer 
#define TX_BUFFER_SIZE 8 
char tx_buffer[TX_BUFFER_SIZE]; 
#if TX_BUFFER_SIZE <= 256 
unsigned char tx_wr_index,tx_rd_index,tx_counter; 
#else 
unsigned int tx_wr_index,tx_rd_index,tx_counter; 
#endif 
// USART Transmitter interrupt service routine 
interrupt [USART_TXC] void usart_tx_isr(void) 
{ 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 79 
Võ Thành Luận 
Trƣơng Hữu Toàn 
if (tx_counter) 
 { 
 --tx_counter; 
 UDR=tx_buffer[tx_rd_index++]; 
#if TX_BUFFER_SIZE != 256 
 if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; 
#endif 
 } 
} 
#ifndef _DEBUG_TERMINAL_IO_ 
// Write a character to the USART Transmitter buffer 
#define _ALTERNATE_PUTCHAR_ 
#pragma used+ 
void putchar(char c) 
{ 
while (tx_counter == TX_BUFFER_SIZE); 
#asm("cli") 
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) 
 { 
 tx_buffer[tx_wr_index++]=c; 
#if TX_BUFFER_SIZE != 256 
 if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; 
#endif 
 ++tx_counter; 
 } 
else 
 UDR=c; 
#asm("sei") 
} 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 80 
Võ Thành Luận 
Trƣơng Hữu Toàn 
#pragma used- 
#endif 
// Standard Input/Output functions 
#include 
Task 10ms: 
void Task_10ms(void) 
{ 
 temp_L=atoi(Str_L); 
 temp_H=atoi(Str_R); 
 if(temp_H>125) {temp_H_L=temp_H-125;temp_H_R=0;} 
 else {temp_H_R=126-temp_H;temp_H_L=0;} 
 if (temp_L<126) {Dir_L=0;Dir_R=0;temp_L=126-temp_L;} 
 else {Dir_L=1;Dir_R=1;temp_L=temp_L-125;} 
 if (temp_L>127)temp_L=127; 
 Pwm_Temp_L=(2*(temp_L-1))-temp_H_L; 
 Pwm_Temp_R=(2*(temp_L-1))-temp_H_R; 
 if(Pwm_Temp_L<0)Pwm_Temp_L=0; 
 if(Pwm_Temp_R<0)Pwm_Temp_R=0; 
 Pwm_L =(unsigned char)(Pwm_Temp_L); 
 Pwm_R =(unsigned char)(Pwm_Temp_R); 
} 
Task 100ms: 
void Task_100ms(void) 
{ 
 over_time++; 
 if(over_time==10) 
{strcpyf(Str_L,"128");strcpyf(Str_R,"128");over_time=15;} 
} 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 81 
Võ Thành Luận 
Trƣơng Hữu Toàn 
Task 1s: 
void Task_1s(void) 
{ 
 if(Adc_Batt<820) putchar('y'); 
} 
PHẦN CODE LẬP TRINH CHO TAY BẤM ĐIỀU KHIỂN 
 Phần định nghĩa 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 Phần code khởi tạo biến 
// Bit Over_Load 
static bit Batt_Low=0; 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 82 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// Bit Flag task Timer 
static bit Flag_10ms,Flag_100ms,Flag_1s; 
// Bien dem ngat timer 
static unsigned int Count_10ms,Count_100ms,Count_1s; 
static unsigned char Pwm_L,Pwm_R; 
char str[5],strput[15]; 
 Khởi tạo ADC: 
#define FIRST_ADC_INPUT 0 
#define LAST_ADC_INPUT 2 
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; 
#define ADC_VREF_TYPE 0x00 
// ADC interrupt service routine 
// with auto input scanning 
interrupt [ADC_INT] void adc_isr(void) 
{ 
static unsigned char input_index=0; 
// Read the AD conversion result 
adc_data[input_index]=ADCW; 
// Select next ADC input 
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) 
 input_index=0; 
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 
0xff))+input_index; 
// Delay needed for the stabilization of the ADC input voltage 
delay_us(10); 
// Start the AD conversion 
ADCSRA|=0x40; 
} 
 Phần khởi tạo chip 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 83 
Võ Thành Luận 
Trƣơng Hữu Toàn 
void init(void) 
{ 
// Declare your local variables here 
// Input/Output Ports initialization 
// Port B initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out 
Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 
State0=T 
PORTB=0x01; 
DDRB=0x0F; 
// Port C initialization 
// Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In 
// State6=T State5=1 State4=T State3=T State2=T State1=T State0=T 
PORTC=0x20; 
DDRC=0x20; 
// Port D initialization 
// Func7=Out Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In 
Func0=In 
// State7=0 State6=0 State5=T State4=T State3=T State2=T State1=T 
State0=T 
PORTD=0x00; 
DDRD=0xF0; 
// Timer/Counter 0 initialization 
// Clock source: System Clock 
// Clock value: Timer 0 Stopped 
TCCR0=0x02; 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 84 
Võ Thành Luận 
Trƣơng Hữu Toàn 
TCNT0=0x00; 
// Timer/Counter 1 initialization 
// Clock source: System Clock 
// Clock value: 1000.000 kHz 
// Mode: Ph. correct PWM top=0x00FF 
// OC1A output: Non-Inv. 
// OC1B output: Non-Inv. 
// Noise Canceler: Off 
// Input Capture on Falling Edge 
// Timer1 Overflow Interrupt: Off 
// Input Capture Interrupt: Off 
// Compare A Match Interrupt: Off 
// Compare B Match Interrupt: Off 
TCCR1A=0xA1; 
TCCR1B=0x02; 
TCNT1H=0x00; 
TCNT1L=0x00; 
ICR1H=0x00; 
ICR1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00; 
OCR1BL=0x00; 
// Timer/Counter 2 initialization 
// Clock source: System Clock 
// Clock value: Timer2 Stopped 
// Mode: Normal top=0xFF 
// OC2 output: Disconnected 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 85 
Võ Thành Luận 
Trƣơng Hữu Toàn 
ASSR=0x00; 
TCCR2=0x00; 
TCNT2=0x00; 
OCR2=0x00; 
// External Interrupt(s) initialization 
// INT0: Off 
// INT1: Off 
MCUCR=0x00; 
// Timer(s)/Counter(s) Interrupt(s) initialization 
TIMSK=0x01; 
// USART initialization 
// Communication Parameters: 8 Data, 1 Stop, No Parity 
// USART Receiver: On 
// USART Transmitter: On 
// USART Mode: Asynchronous 
// USART Baud Rate: 9600 
UCSRA=0x00; 
UCSRB=0xD8; 
UCSRC=0x86; 
UBRRH=0x00; 
UBRRL=0x33; 
// Analog Comparator initialization 
// Analog Comparator: Off 
// Analog Comparator Input Capture by Timer/Counter 1: Off 
ACSR=0x80; 
SFIOR=0x00; 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 86 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// ADC initialization 
// ADC Clock frequency: 125.000 kHz 
// ADC Voltage Reference: Int., cap. on AREF 
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff); 
ADCSRA=0xCE; 
// SPI initialization 
// SPI disabled 
SPCR=0x00; 
// TWI initialization 
// TWI disabled 
TWCR=0x00; 
// Global enable interrupts 
#asm("sei") 
// Global enable interrupts 
}; 
 Phần code nhận dữ liệu: 
// USART Receiver buffer 
#define RX_BUFFER_SIZE 8 
char rx_buffer[RX_BUFFER_SIZE]; 
#if RX_BUFFER_SIZE <= 256 
unsigned char rx_rd_index,rx_counter; 
#else 
unsigned int rx_wr_index,rx_rd_index,rx_counter; 
#endif 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 87 
Võ Thành Luận 
Trƣơng Hữu Toàn 
// This flag is set on USART Receiver buffer overflow 
// USART Receiver interrupt service routine 
interrupt [USART_RXC] void usart_rx_isr(void) 
{ 
char status,data; 
status=UCSRA; 
data=UDR; 
if ((status & (FRAMING_ERROR | PARITY_ERROR | 
DATA_OVERRUN))==0) 
 { 
 switch (data) 
 { 
 case 'y': 
 Led_R2=1; 
 break; 
 } 
 } 
} 
Task 100ms: 
void Task_100ms(void) 
{ 
 // Place your code here 
 Pwm_L=Adc_L/4; 
 Pwm_R=Adc_R/4; 
ĐỒ ÁN TỐT NGHIỆP GVHD: Th.S Nguyễn Văn Đoàn 
Bùi Thị Ánh Quốc Trang 88 
Võ Thành Luận 
Trƣơng Hữu Toàn 
 strcpyf(strput,"a"); 
 itoa(Pwm_L,str); 
 strcat(strput,str); 
 strcatf(strput,"b"); 
 strcpyf(str,"\0"); 
 itoa(Pwm_R,str); 
 strcat(strput,str); 
 strcatf(strput,"c"); 
 puts(strput); 
 putchar('\n\r'); 
 strcpyf(str,"\0"); 
 strcpyf(strput,"\0"); 
} 
Task 1s: 
void Task_1s(void) 
{ 
 if(Adc_Batt<820) ; cho led chop tat 
} 
            Các file đính kèm theo tài liệu này:
 file_thuyet_minh_5805.pdf file_thuyet_minh_5805.pdf