Đề tài Thiết kế và thi công robot dọn rác bề mặt sông

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)

pdf94 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2722 | Lượt tải: 0download
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:

  • pdffile_thuyet_minh_5805.pdf