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 |
Chia sẻ: lvcdongnoi | Lượt xem: 2737 | 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