Đồ án Điều khiển robot dò đường

Mô hình Robot dò đường thiết kế chạy ổn định, bám vạch chính xác, chạy đúng thuật toán yêu cầu và hoàn thành nhiệm vụ. Thể hiện được khả năng hoàn toàn tự động của mô hình, hoạt động theo chương trình đã lập trình.Đây là bước ngoặc quan trong mở để Robot tiến xa hơn nữa trong quá trình tự động hóa. Trong tương lai không xa, Robot sẽ thay thế con người làm tất cả công việc nặng nhọc nâng cao hiệu suất lao động và giảm thiểu tối đa sức lực con người.

pdf47 trang | Chia sẻ: lylyngoc | Lượt xem: 8712 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Điều khiển robot dò đường, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 1 LỜI NÓI ĐẦU Ngày nay điều khiển tự động đã trở thành một nhu cầu không thể thiếu đƣợc của con ngƣời, dƣới sự xuất hiện của các học thuyết và các ứng dụng cụ thể trong đời sống hằng ngày, có thể nói điều khiển tự động đang chi phối dần cuộc sống của chúng ta. con ngƣời đang cố gắng sáng tạo ra các con robot có khả năng làm việc thay cho con ngƣời, chúng ta thƣờng bắt gặp các con robot trong các dây chuyền công nghiệp sản xuất tự động hay robot giúp việc trong gia đình. Để tìm ra các ý tƣởng sáng tạo hay hàng năm đề diễn ra cuộc thi robocon châu á thái bình dƣơng đó là tiền đề để tạo ra những con robot có khả năng áp dụng vào thực tế. Cũng chính vì mục đích đó mà chúng em thực hiện đồ án điều khiển robot dò đƣờng, nó lại là bƣớc khởi đầu trong lập trình robot để robot có thể thực hiện các công việc tiếp theo. Đây chỉ là một công việc nhỏ của lập trình điều khiển robot nhƣng qua quá trình thiết kế và thi công đề tài chúng em đã rút ra đƣợc rất nhiều kinh nghiệm thực tiễn quý báu. Mục đích của đề tài hƣớng đến là tạo ra bƣớc đầu cho sinh viên thử nghiệm những ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến. Mặc dù đã cố gắng hết sức mình để hoàn thành xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nhƣng cũng không tránh khỏi những thiếu sót. Do vậy, chúng em rất mong đƣợc sự góp ý quý báu của thầy cô và các bạn để đề tài có thể hoàn thiện ở mức cao nhất. Nhân đây cho chúng em xin gữi lời cám ơn chân thành đến Thầy Phạm Duy Dƣởng và các Thầy bộ môn đã tận tình hƣớng dẫn để chúng em hoàn thành tốt đề tài của mình! Nhóm sinh viên thực hiện : Bùi Xuân Dũng Trần Văn Thọ Bùi Phúc Hát ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 2 CHƢƠNG I TỔNG QUAN VỀ VI ĐIỀU KHIỂN 8051 1. Tổng quan 1.1. Giới thiệu chung MCS-51 là họ vi điều khiển của hãng Intel. Vi mạch tổng quát của họ MCS-51 là chip 8051. Chip 8051 có một số đặc trƣng cơ bản sau: – Bộ nhớ chƣơng trình bên trong: 4 KB (ROM). – Bộ nhớ dữ liệu bên trong: 128 byte (RAM). – Bộ nhớ chƣơng trình bên ngoài: 64 KB (ROM). – Bộ nhớ dữ liệu bên ngoài: 64 KB (RAM). – 4 port xuất nhập (I/O port) 8 bit. – 2 bộ định thời 16 bit. – Mạch giao tiếp nối tiếp. – Bộ xử lý bit (thao tác trên các bit riêng lẻ). – 210 vị trí nhớ đƣợc định địa chỉ, mỗi vị trí 1 bit. – Nhân / Chia trong 4 µs. Ngoài ra, trong họ MCS-51 còn có một số chip vi điều khiển khác có cấu trúc tƣơng đƣơng nhƣ: Bảng 1 Bảng 1: Cấu trúc tương ứng của họ 8051 1.2. Các phiên bản của chip vi điều khiển 8051 1.2.1. Bộ vi điều khiển 8052 8052 là một phiên bản của họ 8051. 8052 có tất cả các thông số kỹ thuật của 8051, ngoài ra còn có thêm 128 byte RAM, 4KB ROM và một bộ định thời nữa. Nhƣ vậy, 8052 có tổng cộng 256 byte RAM, 8KB ROM và ba bộ định thời. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 3 Bảng 2 Đặc tính kỹ thuật 8031 8051 8052 ROM trên chip(KB) 0 4 8 RAM trên chip(byte) 128 128 256 Bộ định thời 2 2 3 Chân vào/ra 32 32 32 Cổng nối tiếp 1 1 1 Nguồn ngắt 5 5 6 Bảng 2:Các phiên bản của 8051 Nhƣ bảng thông số trên ta thấy 8051 là một trƣờng hợp riêng của 8052. Mọi chƣơng trình viết cho 8051 đều có thể chạy đƣợc trên 8052 nhƣng điều nguợc lại có thể là không đúng. 1.2.2. Bộ vi điều khiển AT8951 của Atmel Corporation AT8951 là phiên bản 8051 có ROM trên chip là bộ nhớ Flash. Phiên bản này rất thích hợp cho các ứng dụng nhanh vì bộ nhớ Flash có thể đƣợc xóa trong vài giây. Dĩ nhiên là để dùng AT8951 cần phải có thiết bị lập trình PROM hỗ trợ bộ nhớ Flash nhƣng không cần đến thiết bị xóa ROM vì bộ nhớ Flash đƣợc xóa bằng thiết bị lập trình PROM. Để tiện sử dụng, hiện nay hãng Atmel đang nghiên cứu một phiên bản của AT8951 có thể đƣợc lập trình qua cổng COM của máy tính PC và Nhƣ vậy sẽ không cần đến thiết bị lập trình PROM. Bảng 3 Ký hiệu ROM RAM I/O Timer Ngắt Vcc Số chân IC AT89C51 4KB 128 32 2 5 5V 40 AT89LV51 4KB 128 32 2 5 3V 40 AT89C1051 1KB 64 15 1 3 3V 20 AT89C2051 2KB 128 15 2 5 3V 20 AT89C52 8KB 256 32 3 6 5V 40 AT89LV52 8KB 256 32 3 6 3V 40 Bảng 3: Cấu trúc bộ vi điều khiển 8051 1.2.3. Bộ vi điều khiển DS5000 của Dallas Semiconductor Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng Dallas Semiconductor. Bộ nhớ ROM trên chip của DS5000 là NV-RAM. DS5000 có khả năng nạp chƣơng trình vào ROM trên chip trong khi nó vẫn ở trong hệ thống mà không cần phải lấy ra. Cách thực hiện là dùng qua cổng COM của máy tính PC. Đây là điểm mạnh đƣợc ƣa chuộng,Ngoài ra NV-RAM còn có nhiều ƣu việt là cho phép thay đỏi nội dung RAM theo từng byte mà không phải xóa hết trƣớc khi lập trình nhƣ bộ nhớ EPROM. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 4 Bảng 4 Ký hiệu ROM RAM I/O Timer Ngắt Vcc Số chân IC DS5000-8 8KB 128 32 2 6 5V 40 DS5000-32 32KB 128 32 2 6 5V 40 DS5000T-8 8KB 128 32 2 6 5V 40 DS5000T-32 32KB 128 32 2 6 5V 40 Đây là một phiên bản cải tiến sử dụng CPU là bộ vi điều khiển 80C51 với nhiều tính năng vuợt trội: dung lƣợng ROM/RAM trên chip rất lớn, 3 Timer 16 bit + 1 Watch-dog Timer, 2 thanh ghi DPTR, 8 nguồn ngắt, PWM (Pulse Width Modulator), SPI (Serial Peripheral Interface) và đặc biệt là bộ nhớ chƣơng trình trên chip có tính năng ISP (In-System Programming) và IAP (In-Application Programming),… 2. Các chân của chip 8051 2.1 . Sơ đồ khối và chức năng các khối của chip 8051 Hình 1: Sơ đồ khối của chíp 8051 Chức năng các khối: – CPU (Central Processing Unit): Đơn vị xử lý trung tâm tính toán và điều khiển quá trình hoạt động của hệ thống. – OSC (Oscillator): Mạch dao động tạo tín hiệu xung clock cung cấp cho các khối trong chip hoạt động. – Interrupt control: Điều khiển ngắt nhận tín hiệu ngắt từ bên ngoài (INT0\, INT1\), từ bộ định thời (Timer 0, Timer 1) và từ cổng nối tiếp (Serial port), lần luợt đua các tín hiệu ngắt này đến CPU để xử lý. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 5 – Other registers: Các thanh ghi khác Lƣu trữ dữ liệu của các port xuất/nhập, trạng thái làm việc của các khối trong chip trong suốt quá trình hoạt động của hệ thống. – RAM (Random Access Memory): Bộ nhớ dữ liệu trong chip lƣu trữ các dữ liệu. – ROM (Read Only Memory): Bộ nhớ chƣơng trình trong chip lƣu trữ chƣơng trình hoạt động của chip. – I/O ports (In/Out ports): Các port xuất/nhập điều khiển việc xuất nhập dữ liệu duới dạng song song giữa trong và ngoài chip thông qua các port P0, P1, P2, P3. – Serial port: Port nối tiếp điều khiển việc xuất nhập dữ liệu duới dạng nối tiếp giữa trong và ngoài chip thông qua các chân TxD, RxD. – Timer 0, Timer 1: Bộ định thời 0, 1 dùng để định thời gian hoặc đếm sự kiện (đếm xung) thông qua các chân T0, T1. – Bus control: Điều khiển bus điều khiển hoạt động của hệ thống bus và việc di chuyển thông tin trên hệ thống bus. – Bus system: Hệ thống bus liên kết các khối trong chip lại với nhau. 2.2 . Sơ đồ chân và chức năng các chân của chip 8051 Hình 2: Sơ đồ chân chíp 8051 ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 6 2.2.1. Port 0 Port 0 (P0.0 – P0.7) có số chân từ 32 – 39. Port 0 có hai chức năng: – Port xuất nhập dữ liệu (P0.0 - P0.7) không sử dụng bộ nhớ ngoài. – Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) có sử dụng bộ nhớ ngoài. Lƣu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các điện trở kéo lên bên ngoài. Ở chế độ mặc định (khi reset) thì các chân Port 0 (P0.0 - P0.7) đƣợc cấu hình là port xuất dữ liệu. Muốn các chân Port 0 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập dữ liệu từ port (vấn đề này đƣợc trình bày ở phần kế tiếp). Khi lập trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ vào của dữ liệu (D0-D7). 2.2.2. Port 1 Port 1 (P1.0 – P1.7) có số chân từ 1 – 8. Port 1 có một chức năng: – Port xuất nhập dữ liệu (P1.0 – P1.7) sử dụng hoặc không sử dụng bộ nhớ ngoài. – Ở chế độ mặc định (khi reset) thì các chân Port 1 (P1.0 – P1.7) đƣợc cấu hình là port xuất dữ liệu. Muốn các chân Port 1 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập dữ liệu từ port (vấn đề này đƣợc trình bày ở phần kế tiếp). Khi lập trình cho ROM trong chip thì Port 1 đóng vai trò là ngõ vào của địa chỉ byte thấp (A0 – A7). 2.2.3. Port 2 Port 2 (P2.0 – P2.7) có số chân từ 21 – 28. Port 2 có hai chức năng: – Port xuất nhập dữ liệu (P2.0 – P2.7)không sử dụng bộ nhớ ngoài. – Bus địa chỉ byte cao (A8 – A15) có sử dụng bộ nhớ ngoài. Ở chế độ mặc định (khi reset) thì các chân Port 2 (P2.0 – P2.7) đƣợc cấu hình là port xuất dữ liệu. Muốn các chân Port 2 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập dữ liệu từ port (vấn đề này đƣợc trình bày ở phần kế tiếp). Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào của địa chỉ byte cao (A8 – A11) và các tín hiệu điều khiển. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 7 2.2.4. Port 3 Port 3 (P3.0 – P3.7) có số chân từ 10 – 17. Port 3 có hai chức năng: – Port xuất nhập dữ liệu (P3.0 – P3.7) không sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt. – Các tín hiệu điều khiển có sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt. Ở chế độ mặc định (khi reset) thì các chân Port 3 (P3.0 – P3.7) đƣợc cấu hình là port xuất dữ liệu. Muốn các chân Port 3 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập dữ liệu từ port (vấn đề này đƣợc trình bày ở phần kế tiếp). Khi lập trình cho ROM trong chip thì Port 3 đóng vai trò là ngõ vào của các tín hiệu điều khiển (xem sách “Họ vi điều khiển 8051” trang 333-352). Chức năng của các chân Port 3: Bảng 5 Bit Tên Địa chỉ bit Chức năng P3.0 RxD B0H Chân nhận dữ liệu của port nối tiếp. P3.1 TxD B1H Chân phát dữ liệu của port nối tiếp. P3.2 INT0\ B2H Ngõ vào ngắt ngoài 0. P3.3 INT1\ B3H Ngõ vào ngắt ngoài 1. P3.4 T0 B4H Ngõ vào của bộ định thời/đếm 0. P3.5 T1 B5H Ngõ vào của bộ định thời/đếm 1. P3.6 WR\ B6H Điều khiển ghi vào RAM ngoài. P3.7 RD\ B7H Điều khiển ñọc từ RAM ngoài. Bảng 5: Chức năng của các chân Port 3 2.2.5Chân PSEN\ PSEN (Program Store Enable): cho phép bộ nhớ chƣơng trình, chân số 29. Chức năng: – Là tín hiệu cho phép truy xuất (đọc) bộ nhớ chƣơng trình (ROM) ngoài. – Là tín hiệu xuất, tích cực mức thấp. PSEN\ = 0 trong thời gian CPU tìm - nạp lệnh từ ROM ngoài. PSEN\ = 1 CPU sử dụng ROM trong (không sử dụng ROM ngoài). Khi sử dụng bộ nhớ chƣơng trình bên ngoài, chân PSEN\ thƣờng đƣợc nối với chân OE\ của ROM ngoài để cho phép CPU đọc mã lệnh từ ROM ngoài. 2.2.6. Chân ALE ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30. Chức năng: – Là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7). – Là tín hiệu xuất, tích cực mức cao. ALE = 0 trong thời gian bus AD0 - AD7 đóng vai trò là bus D0 - D7. ALE = 1 trong thời gian bus AD0 - AD7 đóng vai trò là bus A0 - A7. Khi lập trình cho ROM trong chip thì chân ALE đóng vai trò là ngõ vào của xung lập trình (PGM\). ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 8 Lƣu ý: fALE = fOSC/6 có thể dùng làm xung clock cho các mạch khác. (MHz): tần số xung tại chân ALE. f (MHz): tần số dao động trên chip (tần số thạch anh). Khi lệnh lấy dữ liệu từ RAM ngoài (MOVX) đƣợc thực hiện thì một xung ALE bị bỏ qua. 2.2.7. Chân EA\ EA (External Access): truy xuất ngoài, chân số 31. Chức năng: – Là tín hiệu cho phép truy xuất (sử dụng) bộ nhớ chƣơng trình (ROM) ngoài. – Là tín hiệu nhập, tích cực mức thấp. EA\ = 0 Chip 8051 sử dụng chƣơng trình của ROM ngoài. EA\ = 1 Chip 8051 sử dụng chƣơng trình của ROM trong. Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào của điện áp lập trình(Vpp = 12V – 12,5V cho họ 89xx; 21V cho họ 80xx, 87xx). Lƣu ý: Chân EA\ phải đƣợc nối lên Vcc (nếu sử dụng chƣơng trình của ROM trong) hoặc nối xuống GND (nếu sử dụng chƣơng trình của ROM ngoài), không bao giờ đƣợc phép bỏ trống chân này. 2.2.8. Chân XTAL1, XTAL2 XTAL (Crystal): tinh thể thạch anh, chân số 18-19. Chức năng: – Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài, cung cấp tín hiệu xung clock cho chip hoạt động. – XTAL1 ngõ vào mạch tạo xung clock trong chip. – XTAL2 ngõ ra mạch tạo xung clock trong chip Lƣu ý: fTYP = 12MHz fTYP (MHz): tần số danh định. 2.2.9. Chân RST RST (Reset): thiết lập lại, chân số 9. Chức năng: – Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống. – Là tín hiệu nhập, tích cực mức cao. RST = 0 Chip 8051 hoạt động bình thƣờng. RST = 1 Chip 8051 đƣợc thiết lặp lại trạng thái ban đầu. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 9 Lƣu ý: tReset ≥ 2 × TMachine TMachine = 12/fOSC. tReset(µs): thời gian reset. fOSC = (MHz): tần số thạch anh. TMACHINE(µs): chu kỳ máy. Hình 3: Sơ đồ nguyên lý chân Reset 2.2.10. Chân Vcc, GND Vcc, GND: nguồn cấp điện, chân số 40 và 20. Chức năng: – Cung cấp nguồn điện cho chip 8051 hoạt động. – Vcc = +5V, 10% và GND = 0V 3. Tổ chức bộ nhớ của chip 8051 Bộ vi xử lý có không gian bộ nhớ chung cho dữ liệu và chƣơng trình. 3.1. Bộ nhớ chƣơng trình (ROM) Dùng để lƣu trữ chƣơng trình điều khiển cho chip 8051 hoạt động. Chip 8051 có 4 KB ROM trong, địa chỉ truy xuất: 000H – FFFH. 3.2. Bộ nhớ dữ liệu (RAM) Dùng để lƣu trữ các dữ liệu và tham số. Chip 8051 có 128 byte RAM trong, địa chỉ truy xuất: 00H – 7FH. RAM trong của chip 8051 đƣợc chia ra: – RAM đa chức năng: ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 10 – RAM định địa chỉ bit: Cho phép xử lý từng bit dữ liệu riêng lẻ mà không ảnh hƣởng đến các bit khác trong cả byte. 3.3. Thanh ghi chức năng đặc biệt 3.3.1. Thanh ghi A 3.3.2. Thanh ghi B Phép nhân 2 số 8 bit không dấu -> kết quả là số 16 bit. – Byte cao -> chứa vào thanh ghi B. – Byte thấp -> chứa vào thanh ghi A. – Phép chia 2 số 8 bit -> thƣơng số và số dƣ là số 8 bit. – Thƣơng số -> chứa vào thanh ghi A. – Số dƣ -> chứa vào thanh ghi B. 3.3.3.Thanh ghi ngăn xếp (Stack Pointer) Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến satck bao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack. Việc cất vào stack làm tăng SP trƣớc khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm SP. Vùng stack của 8051 đƣợc giữ trong RAM nội và đƣợc giới hạn đến các địa chỉ truy xuất đƣợc bởi kiểu định địa chỉ gián tiếp. Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chƣơng trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của bộ đếm chƣơng trình PC (Program counter). 3.3.4. Con trỏ dữ liệu DPTR Con trỏ dữ liệu DPTR (data pointer) đƣợc dùng để truy xuất bộ nhớ chƣơng trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là một thanh ghi 16 bit có địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao). ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 11 3.3.5. Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer) Bộ đệm truyền thông đƣợc chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ đệm nhận dữ liệu. Khi dữ liệu đƣợc chuyển vào thanh ghi SBUF, dữ liệu sẽ đƣợc chuyển vào bộ đệm truyền dữ liệu và sẽ đƣợc lƣu giữ ở đó cho đến khi quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc. Khi thực hiện việc chuyển dữ liệu từ SBUF ra ngoài, dữ liệu sẽ đƣợc lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp. 3.3.6. Thanh ghi của bộ định thời/bộ đếm 8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanh ghi của bộ đếm thời gian. Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao). Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao).Hoạt động của bộ định thời đƣợc thiết lập bởi thanh ghi chế độ định thời TMOD (Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON đƣợc định địa chỉ từng bit. 3.3.7. Các thanh ghi điều khiển Các thanh ghi điều khiển đặc biệt nhƣ IP, IE, TMOD, TCON, SCON và PCON là các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ đếm/định thời, truyền thông nối tiếp. 4. Ứng dụng Vi điều khiển là một IC lập trình, vì vậy Vi điều khiển cần đƣợc lập trình trƣớc khi sử dụng. Mỗi phần cứng nhất định phải có chƣơng trình phù hợp kèm theo, do đó trƣớc khi viết chƣơng trình đòi hỏi ngƣời viết phải nắm bắt đƣợc cấu tạo phần cứng và các yêu cầu mà mạch điện cần thực hiện. Ứng dụng của vi điều khiển rất rộng rãi trong đời sống va trong công nghiệp.Tất cả những thiết bị điện tử có phần điều khiển tự động đều có thể có mặt vi điều khiển,trong nhu cầu công nghiệp hóa thì vi điều khiển trong vai trò quan trọng bậc nhất trong chuyên nghành tự động và điều khiển. Những ứng dụng đơn giản của vi điều khiển 8051: – VĐK giao tiếp led đơn và phím nhấn – Kết nối VĐK với Rơle – Kết nối VĐK với LCD – Kết nối VĐK với ma trận led.… Chƣơng trình là tập hợp các lệnh đƣợc tổ chức theo một trình tự hợp lí để giải quyết các yêu cầu của ngƣời lập trình.Tập hợp tất cả các lệnh gọi là tập lệnh. Họ Vi điều khiển MSC-51 đều có chung một tập lệnh, các Vi điều khiển đƣợc cải tiến sau này thƣờng ít thay đổi hoặc mở rộng tập lệnh mà chú trọng phát triển phần cứng.Vì các lệnh của Vi điều khiển có dạng số nhị phân quá dài và khó nhớ, hơn nữa việc gỡ lỗi khi chƣơng trình phát sinh lỗi rất phức tạp và khó khăn. Khó khăn này đƣợc giải quyết với sự hỗ trợ của máy vi tính, ngƣời viết chƣơng trình có thể viết chƣơng trình cho vi điều khiển bằng các ngôn ngữ lập trình cấp cao, sau khi việc viết chƣơng trình đƣợc ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 12 hoàn tất, các trình biên dịch sẽ chuyển các câu lệnh cấp cao thành mã máy một cách tự động. Các mã máy này sau đó đƣợc đƣa (nạp) vào bộ nhớ ROM của Vi điều khiển, Vi điều khiển sẽ tìm đến đọc các lệnh từ ROM để thực hiện chƣơng trình . Bản thân máy tính không thể thực hiện các mã máy này vì chúng không phù hợp với phần cứng máy tính, muốn thực hiện phải có các chƣơng trình mô phỏng dành riêng.Chƣơng trình cho Vi điều khiển có thể viết bằng C++,C,Visual Basic, hoặc băng các ngôn ngữ cấp cao khác. Tuy nhiên hợp ngữ Assembler đƣợc đa số ngƣời dùng Vi điều khiển sử dụng để lập trình, vì lí do này chúng tôi chọn Assembly để hƣớng dẫn viết chƣơng trình cho Vi điều khiển. Assembly là một ngôn ngữ cấp thấp, trong đó mỗi câu lệnh chƣơng trình tƣơng ứng với một chỉ lệnh mà bộ xử lý có thể thực hiện đƣợc. Ƣu điểm của hợp ngữ Assembly là: mã gọn,ít chiếm dung lƣợng bộ nhớ, hoạt động với tốc độ nhanh, và nó có hiệu suất tốt hơn so với các chƣơng trình viết bằng ngôn ngữ bậc cao khác. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 13 CHƢƠNG II TỔNG QUAN VỀ ROBOT GIỚI THIỆU VỀ ROBOT DÕ ĐƢỜNG 1. Tổng quan về robot 1.1. Lịch sử Robot đã và đang xuất hiện trong cuộc sống của chúng ta từ lâu và ngày càng trở thành một phần không thể thiếu trong cuộc sống hiện đại. Chúng đã góp phần mình vào công cuộc lao động, chính robot đang làm nên một cuộc cách mạng về lao động, khoa học, và đang phục vụ đắc lực cho các ngành khoa học nhƣ: khoa học quân sự, khoa học giáo dục, các ngành dịch vụ, giải trí, v.v... Vậy robot xuất hiện từ khi nào? Năm 1921 nhà soạn kịch Karel Capek ngƣời Tiệp Khắc đã đƣa lên sân khấu vở kịch có tiêu đề “Romands Univesal Robot”. Theo tiếng Séc “Robot” nghĩa là “Ngƣời tạp dịch”. Có thể nói đây là một gợi ý, một ý tƣởng ban đầu về những cỗ máy có khả năng thao tác nhƣ con ngƣời. Đến trƣớc chiến tranh thế giới lần thứ hai nhu cầu sử dụng những máy móc có khả năng thay thế con ngƣời ở những môi trƣờng làm việc độc hại đã trở thành một nhu cầu cấp thiết. Ban đầu cơ cấu máy này hoạt động giống nhƣ tay máy của ngƣời vận hành. Cấu tạo của cơ cấu này bao gồm các thanh và các khớp và hệ thống giây chằng. Ngƣời vận hành điều khiển tay máy thông qua một cơ cấu khuyếch đại cơ khí.Trong chiến tranh thế giới lần thứ hai (năm 1945), xuất hiện cơ cấu máy đƣợc điều khiển từ xa để cầm nắm chất phóng xạ. Cho đến những năm 1950 cùng với sự ra đời của kỹ thuật điều khiển chƣơng trình số NC (Number Control) kỹ thuật tay máy lúc này đã kết hợp đƣợc cả kỹ thuật điều khiển xa và điều khiển chƣơng trình số. Sự kết hợp này đã tạo ra những thế hệ máy điều khiển từ xa có khả năng mềm dẻo, khả năng tự động hoá cao gọi tên là robot. Năm 1949, máy phay điều khiển số ra đời phục vụ sản xuất ở Mỹ. Đến năm 1960 George Devol đƣa ra mẫu Robot đầu tiên. Năm 1961 cũng tại Mỹ Robot công nghiệp. (IR: Industrial Robot) đầu tiên đƣa ra thị trƣờng: Robot Unimat 1990 (Do trƣờng đại học MIT chế tạo) đây là Robot phản hồi lực nó đƣợc ứng dụng vào công nghiệp sản xuất ô tô. Theo con số thống kê thì đến năm 1990 toàn thế giới đã triển khai và ứng dụng khoảng 300.000 IR. Do sự phát triển mạnh mẽ của kỹ thuật Vi xử lý và Tin học mà số lƣợng IR tăng nhanh chóng và tính năng cũng có nhiều bƣớc đột phá, giá thành trên một đơn vị IR giảm dần. Đó là về lịch sử, còn ngày nay, robot đã có mặt ở khắp nơi, ngay cả trong gia đình chúng ta, chúng ta cùng điểm qua những con robot mà cả thế giới biết đến. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 14 1.2.Robot trong đời sống và sản xuất 1.2.1.Robot đi xe đạp Hình 1: Robot đi xe đạp Với chiều cao chỉ với 50cm, chú robot mang “quốc tịch” Nhật này đƣợc coi là “vua” giữ thăng bằng. Vì dù là đạp hay đang dừng xe , khí cụ con quay sẽ luôn giữ cho chú robot này đứng vững. Một số bộ phận đặc biệt khác cho phép Murataboy xác định đƣợc chƣớng ngại vật trên đƣờng và giảm xóc khi va phải chƣớng ngại vật. Murataboy là ví dụ cho loại robot có khả năng di chuyển bằng 2 chân, đang là một trong những thách thức lớn của việc nghiên cứu và sản xuất robot. 1.2.2 Robot làm việc nhà Đƣợc nghiên cứu tại trƣờng đại học Karlsruhe (Đức), lĩnh vực ƣa thích nhất của cô là vào bếp. Nhờ những cử động của đôi cánh tay giống hệt nhƣ ngƣời, Armar có khả năng dọn bàn ăn, cho bát đĩa vào máy rửa bát và sắp xếp thực phẩm. Một chiếc camera kỹ thuật số cho phép cô giúp việc này nhận diện đƣợc ngƣời đang ra lệnh và tuân lệnh khi dò thấy những cử chỉ tay của ngƣời ấy. Hình 2: Robot làm việc nhà ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 15 1.2.3. Robot là bạn của những ngƣời khuyết tật Friend là nghiên cứu của các nhà khoa học Đức. Ngƣời máy này thực chất có dạng một chiếc xe lăn với đôi cánh tay giống con ngƣời. Thông qua một bộ phận nhận diện giọng nói, chủ nhân chiếc ghế có thể ra lệnh cho ngƣời giúp việc này mở cửa, rót nƣớc. Hệ thống định vị không gian 3 chiều gắn trên xe cho phép ngƣời sử dụng chỉ cần đƣa tay chỉ hƣớng, robot sẽ tự động tìm ra đƣờng đi tốt nhất. Hình 3: Robot trong y học 1.2.4. Robot là bác sĩ ngoại khoa Hãy tƣởng tƣợng những cánh tay kim loại với những khớp nối chằng chịt mổ xẻ trên một cơ thể bằng xƣơng bằng thịt. Với nhiều ngƣời đó là một cơn ác mộng. Trên thực tế việc sử dụng ngƣời máy thay các bác sĩ phẫu thuật lại đảm bảo độ chính xác và tỷ lệ thành công cao hơn cho ca mổ. Sự chính xác này cùng với việc giảm thiểu các thiết bị y khoa giúp đƣờng mổ sắc và gọn hơn đồng thời giúp bệnh nhân đỡ mất nhiều máu.Ca mổ vẫn sẽ đƣợc một bác sĩ phẫu thuật theo dõi trực tiếp thông qua một camera nối với một cánh tay robot. 2 cánh tay robot còn lại thực hiện những thao tác thành thạo của một bác sĩ thực thụ. Ngƣời máy này xứng đáng là niềm tự hào của các nhà khoa học Mỹ. Hình 4: Robot là bác sĩ ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 16 1.2.5. Asimo, robot giống ngƣời nhất Asimo lần đầu tiên ra đời năm 1993 tại Nhật, đặt tên P1, là thành quả nghiên cứu của tập đoàn Honda. Asimo P1 đã khiến các nƣớc phƣơng Tây kinh ngạc vì ý tƣởng chế tạo một loại robot giống hệt con ngƣời. Tuy vậy mục đích ban đầu của Honda chỉ là nghiên cứu một ngƣời máy phục vụ các nhu cầu của chúng ta. Ngày nay, cả 2 ý tƣởng này, robot giống ngƣời và đáp ứng nhu cầu của con ngƣời đã trở thành tiêu chí chung trong nghiên cứu Asimo. Hình 5: Robot asimo 1.2.6. Robot viễn tƣởng Đƣợc trang bị hệ thống nhận dạng giọng nói, có khả năng ngôn ngữ và diễn đạt, Mỹ đã giới thiệu một ngƣời máy là bản sao của Philipe K.Dick, tác giả của nhiều truyện viễn tƣởng nổi tiếng, mất năm 1982. Đó là những gì chúng ta đƣợc chứng kiến về sự phát triển của thế giới, nhƣng chúng ta cũng cần biết rằng Việt Nam cũng có những con robot vô cùng thông minh. Đã đƣa vị thế củaViệt Nam lên 1 tầm cao mới. Hình 6: Robot người nhân tạo Và chú robot này chính là robot TOPIO :Từ ngày 5 - 10/2/2009, chú robot “made in Vietnam” Topio 2.0 do Công ty Cổ phần Robot TOSY (TOSY Robotics JSC) nghiên cứu và chế tạo đã tham gia triển lãm lớn nhất thế giới về đồ chơi lần thứ 60 tại Đức. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 17 2. Giới thiệu về robot dò đƣờng Robot dò đƣờng là 1 biến thể đặc biệt của robot hƣớng sáng.Sở dĩ nói nhƣ vậy là do chúng có cùng nguyên tắc hoạt động là sử dụng cảm biến quang điện ( quang trở hoặc diode hồng ngoại) để so sánh cƣờng độ sáng từ đó điềuchỉnh hƣớng đi thích hợp. Khi robot đi lệch vào vùng có vạch vẽ, ánh sáng phát ra từ robot không phản xạ lại nhƣ bình thƣờng mà bị đƣờng kẻ hấp thụ 1 phần làm sai lệch độ sáng giữa 2 cảm biến. Việc còn lại là thiết kế sao cho robot có hành vi khắc phục sự sai lệch đó và ta có đƣợc loại robot đi theo đƣờng vẽ. Nhiệm vụ của các cảm biến quang đƣợc mô tả nhƣ hình sau: Hình 7: Nhiệm vủ của cảm biến trong Robot dò đường Đƣờng đi đƣợc vạch sẵn với chiều dài mặt cắt ngang xác định. Đƣờng đi đƣợc đặt trên nền có vật liệu khác loại. Nếu đƣờng đi là vật liệu phản quang thì nền không phản quang và ngƣợc lại. Robot sử dụng các LED phát chiếu xuống mặt đƣờng đi hoặc nền. Ánh sáng hồng ngoại sẽ phản xạ lại khi gặp vật liệu phản quang. Sử dụng cảm biến quang Robot xác định đƣợc trạng thái của mình trên mặt đƣờng: lệch trái hoặc phải so với mặt đƣờng, còn hoặc không còn trên mặt đƣờng,…; từ đó đƣa ra quyết định điều khiển tƣơng ứng. Dựa trên yêu cầu của đề bài và bám sát với nội dung môn học, nhóm chọn phƣơng án thiết kế. Robot vận hành có 3 bánh, 2 bánh sau chủ động, bánh trƣớc xoay tròn định hƣớng (bánh đa hƣớng).Robot dẫn động bằng 2 động cơ 1 chiều đặt ở hai bánh sau.Phần dò đƣờng dùng 8 cặp cảm biến (8 led phát và 8 quang trở.), tín hiệu đƣa về đi qua khâu so sánh LM324 để đảm bảo mức điện áp đƣa vào vi điều khiển.Phần xử lý chọn vi điều khiển 89S52 của Atmel. 2.2. Nguyên tắc hoạt động của robot dò đƣờng Robot dò dƣờng hoạt động độc lập dựa vào cảm biến dò đƣờng gắn tên thân robot và đƣờng đi là vạch trắng dán trên nền đất.Cảm biến đƣợc hiểu nhƣ là con mắt của robot. 2.3. Ứng dụng của robot dò đƣờng Đƣợc ứng dụng vào công nghệ dò đƣờng di chuyển tự động trong vận chuyển hàng hóa. Tuy còn sơ khai vê nguyên tắc điều khiển nhƣng robot dò đƣờng đã tạo một bƣớc ngoặc quan trọng trong công nghệ thiết kế và chế tạo robot, mở ra một kỷ nguyên mới về nghành công nghệ kỹ thuật tự động hóa và đƣa tự động hóa vào sản xuất. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 18 MẠCH CÔNG SUẤT CHƢƠNG III THIẾT KẾ MÔ HÌNH ROBOT DÕ ĐƢỜNG 1. Cấu trúc cơ bản của Robot dò đƣờng tự động Hình 1: Sơ đồ cấu trúc cơ bản của Robot dò đường tự động MẠCH CÁCH LY KHỐi XỬ LÝ TRUNG TÂM AT89S52 KHỐI CẢM BIẾN Cảm biến dò đƣờng ĐIỀU KHIỂN ĐỘNG CƠ (Bánh trái) ĐIỀU KHIỂN ĐỘNG CƠ (nâng hạ) KHỐI ĐIỀU CHỈNH NÚT ẤN CHỌN CHƢƠNG TRÌNH ĐIỀU KHIỂN ĐỘNG CƠ (Bánh phải) KHỐI HIỂN THỊ LED BỘ PHẬN CHẤP HÀNH KHỐI CÔNG TẮC HÀNH TRÌNH M1 M2 M3 ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 19 Trong đó: – Khối hiển thị: là 8 led hiển thị cho cảm biến dò đƣờng vs 2 led báo lỗi – Khối cảm biến: bao gồm các cảm biến nhận tín hiệu vạch trắng. – Khối điều chỉnh: là khối giao tiếp giữa ngƣời điều khiển và Robot. Đó là các nút nhấn chọn chƣơng trình và các vi trở điều chỉnh độ nhạy của cảm biến. – Khối công tắc hành trình: các công tắc hành trình sử dụng cho việc xác định trạng thái của cơ cấu chấp hành và trạng thái của robot – Khối VĐK: quan trọng nhất là chip 89S52 điều khiển toàn bộ hoạt động của Robot: nhận tín hiệu từ khối cảm biến,khối điều chỉnh, sau đó gửi tín hiệu qua khối hiển thị và điều khiển khối cơ cấu chấp hành. – Khối cơ cấu chấp hành: là mạch công suất dùng để điều khiển động cơ bánh xe, và các động cơ của các cơ cấu chấp hành. 2. Các khối cơ bản của Robot 2.1. Khối nguồn cấp cho robot Hình 2: Sơ dồ mạch nguồn cho Robot Dùng nguồn 12V để cấp điện áp vào, sau đó thông qua khối lọc, hạ áp dùng 7805 ta lấy ra điện áp 5V ổn định để cung cấp cho các khối còn lại. Ngoài ra còn có một số biện pháp bảo vệ nhƣ dùng cầu chi 2A, dùng diode chống ngƣợc nguồn. 2.3 Khối cảm biến dò đƣờng Cảm biến quang dò đƣờng là thành phần quan trọng không thể thiếu trong điều khiển lộ trình chạy của Robot một cách chính xác và đẹp mắt. Sơ đồ mạch đƣợc lựa chọn là kiểu thông dụng do đơn giản nhƣng để nâng cao khả năng nhận dạng vạch trắng và phù hợp với việc dùng chung nguồn vi điều khiển +12V, ta sẽ nâng cao điện áp cung cấp cho cảm biến, tăng số led phát ánh sáng trắng. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 20 Hình 3: Sơ đồ cảm biến dò đường Điện áp đặt lên các led siêu sáng trắng có điện áp khoảng 2V, dòng qua led từ 10 đến 15mA. Ta có thể chọn điện trở hạn dòng cho led siêu sáng: cc led led 3 3 V V 5 2 R 200 15.10 15.10        Chọn Rled = 270  Ở đây ta dùng LED siêu sáng và quang trở để cảm biến dò đƣờng. Khi Led phát tín hiệu và có tín phản lại thì quang trở sẽ thay đổi điện trở nó phát tín hiệu vào LM324 để so sánh rồi đƣa vào vi điều khiển để vi điều khiển xử lý rồi đƣa ra tín hiệu để phát lệnh điều khiển động cơ. Chức năng của khối: – Tạo tín hiệu phản hồi về khối vi xử lý trung tâm để từ đó điều khiển động cơ. – Nguyên lý hoạt động: Khi có ánh sáng thì điện trở của quang trở sẽ giảm và ngƣợc lại, điện trở của nó thay đổi cỡ từ 0.5k (khi có ánh sáng) đến 250k (không có ánh sáng), ta sử dụng led phát làm nguồn sáng cho nó. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 21 Khi gặp nền trắng, ánh sáng sẽ phản xạ lên quang trở làm điện trở nó giảm xuống và khi gặp vạch đen (băng keo đen) thì ánh sáng sẽ khó phản xạ nên quang trở nhận ít ánh sáng => trở nó tăng. Từ đó dựa vào 2 quang trở, robot có thể phân biệt đƣợc vạch đen trên nền trắng (dƣới sự hỗ trợ của opamp so sánh). 3.3. Khối động lực Loại động cơ ta sử dụng là 2 động cơ DC-12V, phục vụ cho việc điều khiển xe tiến, lùi, tăng tốc, quay phải, quay trái, với các cấp tốc độ khác nhau Hình 4: Sơ đồ mạch động lực Nguyên lý làm việc: – Khi rơle chƣa đƣợc kích hoạt thì nam châm điện không hoạt động nên tiếp điểm của cầu H giữ nguyên vị trí ban đầu. Tức là tiếp điểm 4 và 6 (cầu H) đƣợc nối với nhau, tiếp điểm 13 và 11 (cầu H) đƣợc nối với nhau. Khi có xung kích vào PWM, dòng điện chạy tới tiếp điểm 4 (cầu H), qua tiếp điểm 6 (cầu H) rồi qua động cơ về tiếp điểm 11 (cầu H), qua tiếp điểm 13(cầu H) rồi về âm nguồn (nối đất). Do vậy, động cơ quay theo chiều thuận. – Khi rơle đƣợc kích hoạt thì nam châm điện hoạt động kéo tiếp điểm của cầu H làm tiếp điểm 4 và 8 (cầu H) đƣợc nối với nhau, tiếp điểm 13 và 9 (cầu H) đƣợc nối với nhau. Khi có xung kích vào PWM, dòng điện chạy tới tiếp điểm 4 (cầu H), qua tiếp điểm 8 (cầu H) rồi qua động cơ về tiếp điểm 9 (cầu H), qua tiếp điểm 13(cầu H) rồi về âm nguồn (nối đất). Do vậy, động cơ quay theo chiều nghịch. 3.4. Khối xử lý trung tâm Sử dụng vi xử lý 8 bit AT89S52 có cấu trúc tƣơng tự nhƣ 89C51 (8051). Đây là VĐK thuộc họ MCS-51, với 8K bytes bộ nhớ, có thể đọc/ghi dữ liệu khoảng 1000 lần. Điện áp hoạt động đầu vào từ 4.0 đến 5.5V Tần số cung cấp tĩnh từ 0 đến 33 kHz. 32 đƣờng I/O có thể lập trình đƣợc. Timer/Counter 16 bit 8 nguồn ngắt ngoài. Đối với bộ vi xử lý AT89S52 rất thích hợp cho việc điều khiển động cơ DC. Tuy nhiên do các động cơ đƣợc sử dụng trên Robot thƣờng hoạt động không ổn định hay ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 22 do sự cố kỹ thuật nên có tốc độ không ổn định cũng nhƣ việc điều khiển đòi hỏi tốc độ động cơ đƣợc thay đổi liên tục, nên có thể thiết kế mạch công suất cho 3 động cơ bao gồm 1 FET và 1 Rơle tận dụng đầy đủ ƣu thế các chân điều xung. Dòng xuất nhập của các chíp vi điều khiển tƣơng đối nhỏ. Đối với một số các ứng dụng sử dụng số lƣợng cổng I/O nhỏ thì ta có thể dùng trực tiếp các cổng này. Trong mạch Robot các cổng I/O đƣợc tận dụng tối đa nên ta sẽ thiết kế thêm các mạch đệm xuất nhập trƣớc mỗi cổng điều khiển, các chíp đệm có thể sử dụng cung cấp dòng lớn hơn cho tải, chống nhiễu tốt nhƣ: 74LS04, 74LS244, 74LS541… Hình 5: Sơ đồ mạch vi điều khiển ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 23 Vcc 3.5. Khối phím ấn Sử dụng các nút nhấn để điều chỉnh và chọn chƣơng trình hoạt động của Robot. Hình 6: Sơ đồ mạch phím ấn 3.6. Khối công tắc hành trình Sử dụng 4 công tắc hành trình đƣợc nối với khối điều khiển để điều khiển quá trình hoạt động của Robot nhƣ dừng lại, nâng cần, hạ cần. Hình 7: Sơ đồ mạch công tắc hành trình V D K ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 24 3.7. Khối LED hiển thị LED hiển thị các trạng thái hoạt động của Robot, cho phép ta xử lý tình huống khi có sự cố. Hình 8: Sơ đồ LED báo lỗi LED nhận tín hiệu từ cảm biến dò đƣờng đã qua khối so sánh trong khối xử lý cho thấy đƣợc trạng thái bám vạch dò đƣờng của Robot. Hình 9: Sơ đồ LED báo cảm biến ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 25 S Đ Đ S CHƢƠNG IV LẬP TRÌNH 1. Lƣu đò thuật toán 1.1. Lƣu đồ thuật toán đoạn chƣơng trình bám vạch START DOCCAMBIEN LỆCH TRÁI B.TRÁI NHANH B.PHẢI CHẬM LỆCH PHẢI B.TRÁI CHẬM B.PHẢI NHANH STOP ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 26 Đ S Đ Đ Đ Đ Đ Đ Đ Đ Đ Đ S S S S S S S – Trƣờng hợp lệch trái DOCCAMBIEN() CB=00011000B VP=10,VT=10 VP=9,VT=10 VP=8,VT=10 VP=3,VT=8 START CB=00010000B CB=00110000B CB=00100000B CB=01100000B CB=10000000B CB=11000000B CB=01000000B VP=3,VT=6 VP=3,VT=5 VP=2,VT=5 VP=0,VT=5 STOP ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 27 Đ S S Đ Đ Đ Đ Đ Đ Đ Đ Đ Đ S S S S S S S – Trƣờng hợp lệch phải DOCCAMBIEN() CB=00011000B VT=10,VP=10 VT=9,VP=10 VT=8,VP=10 VT=3,VP=8 START CB=00001000B CB=00001100B CB=00000100B CB=00000110B CB=00000001B CB=00000011B CB=00000010B VT=3,VP=6 VT=3,VP=5 VT=2,VP=5 VT=0,VP=5 STOP ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 28 Đ Đ Đ Đ Đ Đ Đ S S S S S S 1.2. Lƣu đồ thuật toán bám vạch, đếm ngã tƣ START ĐẾM=0, A LÀ SỐ NGÃ TƢ CB=11111111B CB=11110000B CB=01111000B CB=00111100B CB=00011110B CB=00001111B TĂNG ĐẾM ĐẾM=A STOP ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 29 S Đ 1.3. Lƣu đồ thuật toán xoay trái START VP=0,VT=0 ĐẢO ROLE B.TRÁI VP=5,VT=5 VP=4,VT=4 VP=0,VT=0 ĐẢO ROLE B.TRÁI STOP DELAY(100) DELAY(5000) DELAY(50) DOCCAMBIEN() CB=00010000B ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 30 Đ S Đ 1.4. Lƣu đồ thuật toán xoay phải START VP=0,VT=0 ĐẢO ROLE B.PHẢI VP=5,VT=5 VP=4,VT=4 VP=0,VT=0 ĐẢO ROLE B.PHẢI STOP DELAY(50) DELAY(5000) DELAY(50) DOCCAMBIEN CB=00001000B ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 31 1.5. Lƣu đồ thuật toán nâng cần START PWM_2=0 DELAY(20000) PWM_2=1 STOP ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 32 S Đ 1.6. Lƣu đồ thuật toán hạ cần START ĐẢO ROLE NÂNG PWM_3=0 CTHT_3=1 PWM_2=1 ĐẢO ROLE NÂNG STOP ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 33 Đ S 2. Lƣu đồ thuật toán chƣơng trình chính START MAIN KHỞI TẠO NGẮT STOP KT PHÍM NHẤN T.HIỆN CT CỦA TỪNG PHÍM NHẤN ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 34 3.Cuộc thi robocon do trƣờng cao đẳng công nghệ tổ chức Cuộc thi ROBOCON do Khoa Điện trƣờng Cao Đẳng Công Nghệ tổ chức. Sân thi đấu: Hình 1: Sân thi đấu Yêu cầu Robot dò đƣờng tƣ ô xuất phát (bên xanh hoặc bên đỏ) đến lấy quà và qua sông bỏ quà vào ô chứa quà là hoàn thành nhiệm vụ. Dƣới đây là lƣu đò thuật toán viết cho Robot dò đƣờng khi ở vị trí bên ô xuất phát màu xanh. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 35 S Đ S S Đ Đ S 3.1. Lƣu đồ thuật toán của cuộc thi Giả sử Robot đang ở vị trí là bên xanh và Phím nhấn 1 đƣợc nhấn. START Hạ Cần SNT=2 STOP Bám Vạch Đếm Ngã Tƣ Nâng Cần Lùi 2s Xoay Trái Bám Vạch Đếm Ngã Tƣ SNT=3 Xoay Phải Bám Vạch Đếm Ngã Tƣ SNT=6 Xoay Phải Bám Vạch Đếm Ngã Tƣ SNT=2 Hạ Cần Lui 2s ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 36 CHƢƠNG V LẮP RÁP VÀ KẾT LUẬN 1. Lắp ráp 1.1. Lắp ráp mạch Hình 1: Bo mạch điều khiển Bên trên là bo mạch điều khiển của robot bao gồm tất cả linh kiện điện tử trong mô hình. Hình 2: Mạch cảm biếndò đường ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 37 Động cơ cho 2 bánh sau: Hình 3: Động cơ DC một chiều Động cơ gắp quà: Hình 3: Động cơ DC gắp quà ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 38 Bánh xe đa hƣớng: Bánh xe sau: 2. Ƣu nhƣợc điểm của robot dò đƣờng 2.1. Ƣu điểm Mô hình Robot dò đƣờng thiết kế chạy ổn định, bám vạch chính xác, chạy đúng thuật toán yêu cầu và hoàn thành nhiệm vụ. Thể hiện đƣợc khả năng hoàn toàn tự động của mô hình, hoạt động theo chƣơng trình đã lập trình.Đây là bƣớc ngoặc quan trong mở để Robot tiến xa hơn nữa trong quá trình tự động hóa. Trong tƣơng lai không xa, Robot sẽ thay thế con ngƣời làm tất cả công việc nặng nhọc nâng cao hiệu suất lao động và giảm thiểu tối đa sức lực con ngƣời. 1.2. Nhƣợc điểm Bên cạnh những ƣu điểm vƣợt trội,Robot dò đƣờng cũng có những mặt hạn chế: – Quá trình thiết kế mạch, lắp ráp, sửa chữa phức tạp tốn nhiều thời gian. – Để Robot hoạt động nhƣ ý con ngƣời đòi hỏi ngƣời lập trình phải am hiểu cả phần cứng lẫn phần mềm của Robot, đòi hỏi trình độ và kinh nghiệm của ngƣời lập trình và thiết kế mạch. – Tuy hoạt động đƣợc, nhƣng Robot dò đƣờng còn hoạt động khá chậm, chƣa mang tính linh hoạt cao, phụ thuộc hoàn toàn vào cảm biến dò đƣờng. ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 39 1.3. Hƣớng phát triển đề tài Từ ứng dụng điều khiển robot dò đƣờng, ta có thể ứng dụng trong nhiều mặt nhƣ thám hiểm, vận chuyển hàng hóa trong nhà máy, xe không ngƣời lái…. Cụ thể chúng ta có thể lập trình cho robot thông minh hơn và có khả năng làm nhiều công việc khác khi đã di chuyển linh hoạt. Kĩ thuật do đƣờng là vô cùng quan trọng trong các cuộc thi robocon chúng ta có thể tiếp tục phát triển nó để làm ra các con robot có tính ứng dụng cao. 1.4. Tài liệu tham khảo VI ĐIỀU KHIỂN Cấu trúc – Lập trình và Ứng dụng(Kiều Xuân Thực) NXB Giáo Dục Internet: www.dientuvietnam.net www.alldatasheet.com www.keil.com/c51 www.atmel.com/atmel/acrobat/doc1919.pdf PHỤ LỤC ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 40 CHƢƠNG TRÌNH LẬP TRÌNH CHO ROBOT DÕ ĐƢỜNG #include #define ROLE_1 P1_0 #define ROLE_2 P1_2 #define ROLE_3 P1_4 #define PWM_1 P1_1 // dc trai #define PWM_2 P1_3 // dc phai #define PWM_3 P1_5 // dc nang qua #define CB1 P0_1 #define CB2 P0_2 #define CB3 P0_3 #define CB4 P0_0 #define CB5 P0_5 #define CB6 P0_6 #define CB7 P0_7 #define CB8 P0_4 #define LED_DEBUG_1 P2_0 #define LED_DEBUG_2 P2_1 #define CTHT_1 P2_7 #define CTHT_2 P2_6 #define CTHT_3 P2_5 #define PROG_1 P3_3 #define PROG_2 P3_4 #define PROG_3 P3_5 #define PROG_4 P3_6 #define PROG_5 P3_7 #define high(x)((x & 0xFF00) >> 8) #define low(x)((unsigned char)(x & 0x00FF)) #define LongToBin(n) \ (\ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20) | \ ((n >> 12) & 0x10) | \ ((n >> 9) & 0x08) | \ ((n >> 6) & 0x04) | \ ((n >> 3) & 0x02) | \ ((n ) & 0x01) \ ) #define B(n) LongToBin(0x##n##l) void delay(unsigned long ms) { ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 41 while(ms--) continue;} unsigned char V_BanhTrai, V_BanhPhai, PWM_Tick; unsigned char CamBien; void T0_ISR() interrupt 1 { if (PWM_Tick++ == 10) PWM_Tick = 0; switch (V_BanhTrai) { case 0: PWM_2 = 1; break; case 10: PWM_2 = 0; break; default: if (PWM_Tick < V_BanhTrai) PWM_2 = 0; else PWM_2 = 1;} switch (V_BanhPhai) { case 0: PWM_1 = 1; break; case 10: PWM_1 = 0; break; default: if (PWM_Tick < V_BanhPhai) PWM_1 = 0; else PWM_1 = 1;}} void DocCamBien () { CamBien = ((P0_0 == 1) <<2) | ((P0_1 == 1) << 3) | ((P0_2 == 1) << 1) | ((P0_3 == 1) << 0) | ((P0_4 == 1) << 6) | ((P0_5 == 1) << 7) | ((P0_6 == 1) << 4) | ((P0_7 == 1) << 5); } void BamVach(){ DocCamBien(); if ((CamBien & B(00011000))==B(00011000)){ // Ngay giua V_BanhTrai=10; V_BanhPhai=10;} if ((CamBien & B(00001000))==B(00001000)){ V_BanhTrai=10; V_BanhPhai=9;} if ((CamBien & B(00001100))==B(00001100)){ V_BanhTrai=10; V_BanhPhai=7;} ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 42 if ((CamBien &B(00000100))==B(00000100)){ V_BanhTrai=10; V_BanhPhai=6;} if ((CamBien &B(00000110))==B(00000110)){ V_BanhTrai=8; V_BanhPhai=6;} if ((CamBien &B(00000010))==B(00000010)){ V_BanhTrai=8; V_BanhPhai=5;} if ((CamBien &B(00000011))==B(00000011)){ V_BanhTrai=8; V_BanhPhai=4;} if ((CamBien &B(00000001))==B(00000001)){ V_BanhTrai=6; V_BanhPhai=0;} if ((CamBien &B(00010000))==B(00010000)){ V_BanhTrai=9; V_BanhPhai=10;} if ((CamBien &B(00110000))==B(00110000)){ V_BanhTrai=8; V_BanhPhai=10;} if ((CamBien &B(00100000))==B(00100000)){ V_BanhTrai=7; V_BanhPhai=10;} if ((CamBien &B(01100000))==B(01100000)){ V_BanhTrai=5; V_BanhPhai=8;} if ((CamBien &B(01000000))==B(01000000)){ V_BanhTrai=4; V_BanhPhai=6;} if ((CamBien &B(11000000))==B(11000000)){ V_BanhTrai=4; V_BanhPhai=5;} if ((CamBien &B(10000000))==B(10000000)){ V_BanhTrai=0; V_BanhPhai=7;}} void Ham(){ ROLE_1 = 0; ROLE_2 = 0; V_BanhTrai=10; V_BanhPhai=10; delay(2000); ROLE_1 = 1; ROLE_2 = 1; V_BanhTrai=0; V_BanhTrai=0; } void HamNguoc(){ ROLE_1 = 0; ROLE_2 = 0; V_BanhTrai=10; V_BanhPhai=10; delay(3000); ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 43 ROLE_1 = 1; ROLE_2 = 1; V_BanhTrai=0; V_BanhTrai=0; } void NangCan(){ PWM_3 = 0; delay(10000); PWM_3 = 1; delay(100); V_BanhTrai=0; V_BanhPhai=0; ROLE_1 = 1; ROLE_2 = 1; } void BoQua(){ PWM_3 = 0; ROLE_3 = 0; delay(9000); PWM_3 = 1; delay(1000); PWM_3 = 1; ROLE_3 = 1; V_BanhTrai=0; V_BanhPhai=0; ROLE_1 = 1; ROLE_2 = 1; } void HaCan(){ PWM_3 = 0; ROLE_3 = 0; while(CTHT_3 == 1); PWM_3 = 1; ROLE_3 = 1;} void Lui_1s(){ ROLE_1 = 0; ROLE_2 = 0; V_BanhTrai=5; V_BanhPhai=5; delay(9000); V_BanhTrai=0; V_BanhPhai=0; ROLE_1 = 1; ROLE_2 = 1; V_BanhTrai=4; V_BanhPhai=4; delay(1400); V_BanhTrai=0; V_BanhPhai=0;} void Lui_2s(){ ROLE_1 = 0; ROLE_2 = 0; V_BanhTrai=10; ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 44 V_BanhPhai=10; delay(12000); V_BanhTrai=0; V_BanhPhai=0; ROLE_1 = 1; ROLE_2 = 1; V_BanhTrai=10; V_BanhPhai=10; delay(2000); V_BanhTrai=0; V_BanhPhai=0;} void HamXoayTrai(){ ROLE_1 = 0; ROLE_2 = 1; V_BanhTrai=10; V_BanhPhai=10; delay(3000); ROLE_1 = 1; ROLE_2 = 1; V_BanhTrai=0; V_BanhTrai=0; } void Xoay_Trai() { V_BanhPhai=0; V_BanhTrai=0; delay(100); // Dao chieu banh trai ROLE_2 = 0; // Tra ve delay(100); V_BanhPhai=6; V_BanhTrai=6; delay(3000); V_BanhPhai=5; V_BanhTrai=5; DocCamBien(); while ((CamBien & B(01000000))!=B(01000000)) DocCamBien(); delay(200); while ((CamBien & B(00100000))!=B(00100000)) DocCamBien(); HamXoayTrai(); V_BanhPhai=0; V_BanhTrai=0; delay(1000); ROLE_2 = 1; // Tra ve} void HamXoayPhai(){ ROLE_1 = 1; ROLE_2 = 0; V_BanhTrai=7; V_BanhPhai=70; delay(2000); ROLE_1 = 1; ROLE_2 = 1; V_BanhTrai=0; V_BanhTrai=0; } ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 45 void Xoay_Phai() { V_BanhPhai=0; V_BanhTrai=0; delay(100); ROLE_1 = 0; // Dao chieu banh phai // Tra ve delay(100); V_BanhPhai=8; V_BanhTrai=8; delay(3000); V_BanhPhai=7; V_BanhTrai=7; DocCamBien(); while ((CamBien & B(00000010))!=B(00000010)) DocCamBien(); delay(300); while ((CamBien & B(0001000))!=B(00001000)) DocCamBien(); V_BanhPhai=0; V_BanhTrai=0; delay(1); HamXoayPhai(); delay(1000); ROLE_1 = 1; // Tra ve V_BanhPhai=0; V_BanhTrai=0; } unsigned char TongSoBit1() { unsigned char i, temp, tong; temp = CamBien; tong = 0; for (i=0; i<8; i++) { if (temp & 0x01 == 0x01) tong++; temp = temp >> 1;} return(tong);} void KhoiDongBenXanh(){ HaCan(); BamVach_DemNgaTu(1); V_BanhTrai = 0; V_BanhPhai = 0; NangCan(); Lui_1s(); Xoay_Trai(); BamVach_DemNgaTu(3); HamNguoc(); Xoay_Phai(); BamVach_DemNgaTu(6); HamNguoc(); Xoay_Phai(); BamVach_DemNgaTu(2); ROLE_1=1; ROLE_2=1; V_BanhTrai = 10; ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 46 V_BanhPhai = 10; delay(1500); V_BanhTrai = 0; V_BanhPhai = 0; BoQua(); Lui_1s(); delay(10000); NangCan(); Xoay_Phai(); V_BanhTrai = 0; V_BanhPhai = 0; BamVach_DemNgaTu(2); HamNguoc(); V_BanhTrai = 0; V_BanhPhai = 0;} void Retry_1(){ BamVach_DemNgaTu(3); HamNguoc(); Xoay_Phai(); BamVach_DemNgaTu(6); HamNguoc(); Xoay_Phai(); BamVach_DemNgaTu(2); ROLE_1=1; ROLE_2=1; V_BanhTrai = 10; V_BanhPhai = 10; delay(1500); V_BanhTrai = 0; V_BanhPhai = 0; BoQua(); Lui_1s(); delay(10000); NangCan(); Xoay_Phai(); V_BanhTrai = 0; V_BanhPhai = 0; BamVach_DemNgaTu(2); HamNguoc(); V_BanhTrai = 0; V_BanhPhai = 0;} void Retry_2(){ BamVach_DemNgaTu(3); HamNguoc(); Xoay_Phai(); BamVach_DemNgaTu(2); ROLE_1=1; ROLE_2=1; V_BanhTrai = 10; V_BanhPhai = 10; delay(1500); V_BanhTrai = 0; V_BanhPhai = 0; BoQua(); ĐỒ ÁN TỐT NGHIỆP GVHD KS. PHẠM DUY DƯỞNG SVTH: BÙI XUÂN DŨNG Trang 47 Lui_1s(); delay(10000); NangCan(); Xoay_Phai(); V_BanhTrai = 0; V_BanhPhai = 0; BamVach_DemNgaTu(2); HamNguoc(); V_BanhTrai = 0; V_BanhPhai = 0;} void main(){ TMOD = 0x02; //Timer 0,1 che do 2 - 8 bit TF0 = 0; TH0 = 5; TL0 = 5; TR0 = 1; TR1 = 1; ET0 = 1; EA = 1; PWM_1 = 0; PWM_2 = 0; while(1){ if(PROG_1==0){ while(PROG_1==0); KhoiDongBenXanh();} if(PROG_2==0){ while(PROG_2==0); Retry_1();} if(PROG_3==0){ while(PROG_3==0); Retry_2();} if(PROG_4==0){ while(PROG_1==0); NangCan();} If(PROG_5==0){ while(PROG_5==0); HaCan();}}}

Các file đính kèm theo tài liệu này:

  • pdfdung_xong_7003.pdf
Luận văn liên quan