Thiết kế và thi công Robot tìm báu vật

MỤC LỤC CHƯƠNG 1: GIỚI TỔNG QUAN VỀ MỘT SỐ ROBOT TỰ HÀNH HIỆN CÓ TRÊN THẾ GIỚI1 CHƯƠNG II :GIỚI THIỆU VỀ VI XỬ LÝ HỌ MSC-51 3 I / Giới thiệu cấu trúc phần cứng họ MSC-51 (8951) 3 II/ Sơ đồ chân AT89C51 và chức năng từng chân 3 III/ Cấu trúc bên trong vi điều khiển 7 IV/ Hoạt động Timer của 8951 14 V/ Tổ chức ngắt của c8031/8951 21 VI/ Tóm tắt tập lệnh của 8951 30 CHƯƠNG III : GIỚI THIỆU CÁC LINH KIỆN SỬ DỤNG TRONG LUẬN VĂN42 I/MOSFET42 II/ OPTO PC817 44 III/ GIỚI THIỆU ENCODER45 IV/ CÁC LOẠI CẢM BIẾN QUANG TRONG CÔNG NGHIỆP46 V/GIỚI THIỆU LCD48 VI.GIỚI THIỆU VỀ ĐỘNG CƠ ĐIỆN MỘT CHIỀU55 CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH58 I/GIỚI THIỆU PHẦN CƠ KHÍ59 II.GIỚI THIỆU SƠ ĐỒ NGUYÊN LÝ CỦA MẠCH ĐIỆN61 CHƯƠNG 5: THUẬT TOÁN ĐIỀU KHIỄN VÀ TÓM LƯỢC CHƯƠNG TRÌNH 65 I/THUẬT TOÁN ĐIỀU KHIỄN65 II/CHƯƠNG TRÌNH HOẠT ĐỘNG70

pdf94 trang | Chia sẻ: banmai | Lượt xem: 1903 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Thiết kế và thi công Robot tìm báu vật, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ong 128 vùng nhớ thấp và 80H - FFH ở các vùng thanh ghi chức năng đặc biệt. Bit Carry C trong thanh ghi PSW của từ trạng thái chương trình và được dùng như một sự tích lũy đơn của bộ xử lí luận lý. Bit Carry cũng là bit định vị và có địa chỉ trực tiếp vì nó nằm trong PSW. Hai lệnh CLR C và CLR CY đều có cùng tác dụng là xóa bit cờ Carry nhưng lệnh này mất 1 byte còn lệnh sau mất 2 byte. Hoạt động của các lệnh luận lý được tóm tắt như sau: CLR C : Xóa cờ Carry xuống 0. Có ảnh hưởng cờ Carry. CLR BIT : Xóa bit xuống 0. Không ảnh hưởng cờ Carry SET C : Set cờ Carry lên 1. Có ảnh hưởng cờ Carry. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang42 SET BIT : Set bit lên 1. Không ảnh hưởng cờ Carry. CPL C : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry. CPL BIT : Đảo bit. Không ảnh hưởng cờ Carry. ANL C, BIT : (C) (C) AND (BIT) : Có ảnh hưởng cờ Carry. ANL C, /BIT: (C) (C) AND NOT (BIT):Không ảnh hưởng cờ Carry. ORL C, BIT : (C) (C) OR (BIT) : Tác động cờ Carry. ORL C, /BIT : (C) (C) OR NOT (BIT) : Tác động cờ Carry. MOV C, BIT : (C) (BIT) : Cờ Carry bị tác động. MOV BIT, C : (BIT) (C) : Không ảnh hưởng cờ Carry. Các lệnh xen vào (Miscellamous Intstruction): NOP : Không hoạt động gì cả, chỉ tốn 1 byte và 1 chu kỳ máy. Ta dùng để delay những khoảng thời gian nhỏ. CHƯƠNG III : GIỚI THIỆU CÁC LINH KIỆN SỬ DỤNG TRONG LUẬN VĂN I/ MOSFET : Mosfet sử dụng trong mạch này là IRF540 và IRF9540 Mosfet : Ñöôïc ñieàu khieån ñoùng ngaét baèng ñieän aùp, thôøi gian ñoùng ngaét nhanh, ñoùng ngaét caùc doøng lôùn. + IRF540: Thuộc loại npn, dòng trung bình định mức 28A, điện áp định mức lớn nhất 100v THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang43 Sơ đồ khối bên trong - Khi VGS >0V , thì IRF540 daãn . Các thông số kĩ thuật của IRF540 : VDS đỉnh có thể chịu được là 100V. VDGR đỉnh có thể chịu được là 100V. VGS đỉnh có thể chịu được là V20 . ID đỉnh có thể chịu được là 28A. -Khi ñieän aùp döông ñaët leân giöõa coång G vaø S .taùc duïng cuûa ñieän tröôøng seõ keùo caùc electron töø lôùp n vaøo lôùp p ,cho pheùp doøng ñieän daãn töø cöïc D tôùi cöïc S. + IRF9540: loaïi pnp, doøng trung bình ñònh möùc 19A,ñieän aùp ñònh möùc lôùn nhaát 100V. Sơ đồ bên trong - Khi VGS <0V , thì IRF9540 daãn . Các thông số kĩ thuật của IRF9540 : VDS đỉnh có thể chịu được là -100V. VDGR đỉnh có thể chịu được là -100V. VGS đỉnh có thể chịu được là V20 . ID đỉnh có thể chịu được là -19A. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang44 -Khi ñieän aùp ñaët leân giöõa coång G vaø S .taùc duïng cuûa ñieän tröôøng seõ keùo caùc electron töø lôùp n vaøo lôùp p ,cho pheùp doøng ñieän daãn töø cöïc D tôùi cöïc S. II/ OPTO PC817 : Opto là loại IC có cấu tạo như 1 tổ hợp Led phát và Phototransistor dùng để cách ly tín hiệu vào và ra . Sơ đồ khối bên trong Chân 1 và 2 được có chức năng như 1 LED phát khi có tín hiệu sẽ dẫn điện áp từ chân 4 sang chân 3. Các thông số kĩ thuật của OPTO PC817: Ngõ vào : Dòng điện IF để có tín hiệu dẫn là 10 mA. Dòng đỉnh có thể chịu được là 100mA. Điện áp ngõ vào có thể chịu được là 6V. Ngõ ra : Điện áp VCE có thể chịu được là 35V. Dòng điện dẫn IC có thể chịu được là 50mA. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang45 III/ GIỚI THIỆU ENCODER: * Dạng thiết bị mã hoá theo số gia: Là loại thiết bị mã hoá có dãy xung ra phù hợp với góc của trục quay.thiết bị mã hoá này không có xung ra khi trục không làm việc .Cần có một bộ đếm xung ra. Thiết bị mã hoá cho biết vị trí của trục quay bằng số xung được đếm .dạng thiết bị này có thể xếp vào loại một chiều (chỉ có đầu ra kênh A) là loại chỉ sinh ra xung khi trục quay và loại hai chiều (có đầu ra kênh A va B)cũng có thể cho biết chiều của trục quay(nghĩa là thuận hay ngược chiều kim đồng hồ ) * Bộ mã hoá quay(rotary encoder) Để cảm biến góc,hay vị trí người ta hay dùng bộ mã hoá quay. Có nhiều loại bộ mã hoá (encoder).Tuỳ theo cách chế tạo đĩa mà ta có ngõ ra là mã Gray,BCD,là số xung 500 hay 1000,1500xung/vòng quay ** ứng dụng : Có rất nhiều ứng dụng: định vị sản phẩm trên dây chuyền, định vị vị trí cho xe tự động ( đồ án), … **Encoder của omron: Loại thiết bị mã hoá theo số gia kiểu mới + Phạm vi điện áp làm việc rộng từ 5_24 V một chiều(dạng encoder hở) + Độ phân giải 2000 xung/1vòng quay. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang46 + Pha Z có thể được điều chỉnh dễ dàng bằng việc sử dụng chức năng chỉ thị ban đầu. + Cho phép phụ tải lớn 3 kg(29.4 N) theo hướng xuyên tâm và 2 kg(19.4 N) theo hướng đè lên. +có lắp bảo vệ đảm bảo độ tin cậy khi ngắn mạch tải và đảo chiều. IV. CÁC LOẠI CẢM BIẾN QUANG TRONG CÔNG NGHIỆP: Với môi trường làm việc trong hóa chất, nhiệt độ cao,… các linh kiện cảm biến quang phải đảm bảo đạt các yếu cầu sau: - Có độ bền cơ khí cao, giảm được chấn động, vận tốc quét cao, chống run cơ học, … - Có độ nhạy cảm cao, giảm tối thiểu được ảnh hưởng của môi trường làm việc,… -Thích hợp với nhu cầu và đáp ứng được nhu cầu sử dụng. Các hãng sản xuất thiết bị tự động đã đưa ra thị trường các loại cảm biến đạt được các yêu cầu nói trên. Đề tài ứng dụng cảm biến quang (Photo Electric Sensors) nên chỉ tập trung tìm hiểu về loại cảm biến này. * Đặc điểm của loại phản hồi a. Nguyên tắc hoạt động: Mỗi vật chất đều có tính chất hấp thụ (vật đen) hay phản xạ (gương) năng lượng từ ngoài tác động vào. Tùy theo mức độ phản xạ của vật thể khi nhận một chùm tia tới chiếu đến mà chùm tia phản xạ có thể là mạnh hay yếu. Cảm biến quang dựa theo nguyên tắc phản hồi chính là dựa trên nguyên tắc phản xạ của chùm tia phản xạ. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang47 b. Các thông số tiêu chuẩn: Hình dạng: hình trụ hay khối chữ nhật. Tầm cảm nhận : 1,570mm. Đầu vào : 2 đầu dây, 12VDC hay 24VDC. Đầu ra : 1 đầu dây tín hiệu. Tần số chuyển : 1,5200Hz. Theo tài liệu của hãng “PEPPERL+FUCHS” về cường độ phản xạ tia hồng ngoại trên các gam màu và vật chất ta có bảng sau: Hình 06: Sơ đồ nguyên lý hoạt động của bộ thu phát loại phản hồi THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang48 Vật chất Phản xạ Từ nguyên bản Trắng tiêu chuẩn 90% Testcard standard white Xám tiêu chuẩn 18% Testcard standard grey Giấy trắng 80% White paper Chữ in trên báo 55% News print Gỗ thông sạch 75% Clean pine wood Nút bần 35% Cork Tấm bảng gỗ sạch 20% Wooden pallets clean Bọt bia 70% Beer foam Chai nhựa trong 40% Clear plastic bottes Chai nhựa nâu trong 60% Transparent brown plastic bottles Nhựa trắng đục 87% Opaque white plastic Nhựa đen 14% Black plastic Đen tuyền 04% Black neoprene Gáy xoắn đen 02% Black foam carpet backing Lốp xe hơi 1.5% Automobile tyres Nhôm nguyên chất 140% Aluminium, untreated Thép bóng láng 400% Polished stainless steel V. GIỚI THIỆU LCD Để có được hiển thị tiết kiệm năng lượng và linh hoạt hơn, người ta sử dụng bộ hiển thị LCD. Có nhiều loại LCD, trong số đó thông dụng là hiển thị 162 và 20 2 ( có nghĩa là 2 hàng với 16 ký tự trên một hàng và 2 hàng với 20 ký tự trên một hàng ). Người ta đã thiết lập chuẩn để cho phép ta có thể giao tiếp với các hãng LCD bất chấp hãng sản xuất với điều kiện là các LCD có sử dụng cùng IC điều khiển HD44780. 2. Hình dáng và kích thước của LCD: THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang49 Các LCD được chế tạo từ các hãng như Densitrn, Epson, Hewlett Packard, Optrex, Sharp,… Với các cấu hình thông dụng là 16, 20, 24, 32, hay 40 ký tự trên một hàng với màn hình hiển thị 1,2 hay 4 hàng. Thí dụ 202, 404 …. Có loại LCD hiển thị theo ký tự hay đồ hoạ, các mạch lái trong các module LCD là các chip điều khiển, thí dụ Hitachi HD44780. 3. Một vài LCD thông dụng : Hình 3.16 3. Chiếu sáng trong bộ hiển thị LCD: Người ta sử dụng các kiểu sau : + Backlit ( back lighting ), sử dụng neon chiếu sáng sau bộ hiển thị thay vì dùng ánh sáng phản xạ. + CfL( Cold Cathode Flourescent Lamp = Đèn huỳng quang cathod lạnh). Một loại đèn huỳnh quang đặc biệt để chiếu sáng phía trong các hiển thị LCD hiện đại, đặc biệt trong các mảng đồ hoại lớn như dùng trong các laptop. Chúng cho chiếu sáng rất tốt với dòng điện thấp. Được cấp điện bởi nguồn AC cao áp và cao tần (200-1000V ở tần số 25-75kHz), các yêu cầu về điện của chúng nghiêm ngặt và phải chính xác khớp với inverter thích hợp do nhà sản xuất đề nghị. Thí dụ mức do backlit CFL của Stanley 20 character2 line : 230V, 2,5mA, 65KHz 4. Sơ đồ chân và chức năng : Sơ đồ chân : THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang50 Hình 3.17 : Sơ đồ chân Mô tả các chân : Thứ tự chân Kí hiệu Mức logic Vào / Ra Chức năng 1 Vss - - GND 2 Vcc - - 5V 3 Vee - - Điều chỉnh độ sáng 4 RS 0/1 Vào 0 = Tín hiệu chỉ dẫn 1=Dữ liệu vào 5 R / W 0/1 Vào 0 = Ghi vào LCD 1 = Đọc từ LCD 6 E 1,1 --- >0 Vào Tín hiệu cho phép 7 DB0 0/1 Vào /Ra Đường dữ liệu 0 8 DB1 0/1 Vào / Ra Đường dữ liệu1 9 DB2 0/1 Vào / Ra Đường dữ liệu 2 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang51 10 DB3 0/1 Vào / Ra Đường dữ liệu 3 11 DB4 0/1 Vào / Ra Đường dữ liệu 4 12 DB5 0/1 Vào / Ra Đường dữ liệu 5 13 DB6 0/1 Vào / Ra Đường dữ liệu 6 14 DB7 0/1 Vào / Ra Đường dữ liệu 7 Mặc dù theo sổ tay kỹ thuật LCD thì cấp nguồn cho nó là 5VDC ( chỉ khoảng vài mA ) nhưng cung cấp cho nó 6VDC hay 4,5 VDC thì nó cũng hoạt động tốt và ngay cả với 3VDC cũng đủ cho một số module. Kết quả là các module LCD tiêu thụ năng lượng ít. Chân 3 là chân điều khiển Vee dùng để thay đổi độ tương phản của màn hình hiển thị. Lý tưởng thì chân này nên nối với nguồn điện áp thay đổi được, người ta thực hiện bằng cách gắn mạch chia áp dùng biến trở có đầu ra thay đổi đưa và chân này, tuy nhiên nên chú ý là một số module cần nguồn điện DC_7 VDC. Đơn giản nhất là người ta nối chân này với nguồn 0V (xuống đất ). Chân 4 là đường RS (register select = chọn thanh ghi ) đây là một trong 3 ngõ vào điều khiển lệnh. Khi chân này để mức thấp thì các dữ liệu được truyền đến LCD được xử lý như các mệnh lệnh và các dữ liệu độc ra chỉ trạng thái của nó. Bằng cách đưa đường RS này lên mức cao thì dữ liệu ký tự có thể xuất/ nhập trên module này. Chân 5 là đường R/W (read/write). Chân này được kéo xuống mức thấp để ghi các lệnh hay dữ liệu ký tự vào module hoặc được kéo lên mức cao để đọc dữ liệu ký tự hay thông tin trạng thái từ các thanh ghi của nó. Chân 6 là đường E (enable) ngõ vào này dùng để khởi động việc chuyển các lệnh hay dữ liệu Khi ghi ra màn hình hiển thị LCD, dữ liệu chỉ được chuyển khi có THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang52 tín hiệu xuống ở cạnh E này. Tuy nhiên khi độc ra từ LCD thì dữ liệu khã dụng sau khi có chuyển tiếp từ thấp lên cao và duy trì dữ liệu khã dụng cho đến khi dữ liệu xuống thấp một lần nữa. Các chân 7 đến 14 là 8 đường bus dữ liệu (DO đến D7). Dữ liệu có thể được chuyển đến và lấy ra khỏi bộ hiển thị LCD theo dạng một byte 8 bit hay dạng 2 nữa byte 4 bit (nibble). Trong trường hợp sau có 4 đường dữ liệu trên được sử dụng ( 4 bit cao: D4 đến D7. Chế độ 4 bít này thuận tiện khi xử lý, cần có ít đường xuất/nhập hơn. Tóm tắt tập lệnh điều khiển LCD: ommand (Lệnh) RS RW NHỊ PHÂN HEX D7 D6 D5 D4 D3 D2 D1 D0 NOP (No operation = không làm gì cả) 0 0 0 0 0 0 0 0 0 0 00 Clear display (xoá hiển thị ) 0 0 0 0 0 0 0 0 0 1 01 Display&Cursor home (hiển thị và đặt cursor ở vị trí góc trái phía trên ). 0 0 0 0 0 0 0 0 1 X 02 hoặc 03 Character Entry mode (chế độ nhập ký tự ). 0 0 0 0 0 0 0 1 I/D S 04 đến 07 Display ON/Off& Cursor (hiển thị tắt mở và cursor ). 0 0 0 0 0 0 1 D U B 08 đến 0F THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang53 Display / Cursor Shift(dịch hiển thị / cursor ). 0 0 0 0 0 1 D/C R/L X X 10 đến 1F Funtion set( đặt chúc năng ). 0 0 0 0 1 8/4 2/1 10/7 X X 20 đến 3F Set CGRAM address ( đặt địa chỉ CGRAM ). 0 0 0 1 A A A A A A 40 đến 7F Set DDRAM address ( đặt địa chỉ DDRAM ). 0 0 1 A A A A A A A 80 đến FF Busy Flag & Addr(cờ bận và bộ đếm địa chỉ ). 0 1 BF Bộ đếm địa chỉ Read Data ( đọc dữ liệu từ CGRAM hoặc DDRAM ). 1 0 Dữ liệu đọc Write Data ( ghi dữ liệu vào CGRAM hoặc DDRAM ) 1 1 Dữ liệu ghi Chú thích : Tên bit Thiết lập I/D 1 = increment 0= decrement S 1 = display shift on 0 = display shift off D 1= display on 0 = display off U 1= cursor underline on 0 = underline off THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang54 B 1 = cursor blink on 0 = cursor blink off D/C 1= display shift 0 = cursor move R/L 1 = right shift 0 = left shift 8/4 1 = 8 bit interface 0 = 4 bit interface 2/1 1= chế độ 2 hàng 0 = chế độ 1 hàng 10/7 1 = 5* 10 dot format 0 = 5*7 dot format CGRAM = character gernerator RAM DDRAM = display data RAM X : don’t care Bảng ký tự chuẩn LCD : Hoạt động : LCD HD 44780 cần 3 đường điều khiển cũng như 4 hay 8 ngõ vào ra cho dữ liệu. Nếu sử dụng giao tiếp 4 bit thì cần 7 đường ( 3 đường điều khiển và 4 đường giao tiếp ), nếu sử dụng giao tiếp 8 bit thì cần 11 đường ( 3 đường điều khiển và 8 đường giao tiếp ). THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang55 Ba đường điều khiển là :  EN : Để gởi data đến LCD thì trước hết phải đưa bước này lên mức cao.Sau đó đưa 2 bit điều khiển còn lại là RS và RW lên mức cao rồi nhận dữ liệu từ data bus. Sau đó lại đưa EN về lại mức thấp. Sự chuyển trạng thái từ 0 sang 1 để yêu cầu LCD xem data trên data bus giống như một lệnh yêu cầu .  RS : Khi RS ở mức thấp thì data xem như một lệnh yêu cầu hay một chỉ dẫn đặc biệt ( chẳng hạn như clear display hay cursor position …). Khi RS ở mức cao thì data trên data bus chính là data được hiển thị trên màn hình.  RW : Là đường điều khiển đọc hay ghi data. Khi RW = 0 thì data đang được đọc từ data bus. Khi RS ở mức 1 thì chương trình đang xềp hàng hay đang đọc. Vì vậy chỉ có một trường hợp duy nhất RW = 1 là khi lệnh chỉ dẫn là đọc một lệnh ( cho biết trạng thái của LCD ), còn lại tất các trường hợp khác thì RS luôn ở mức thấp Có thể hiển thị kí tự tên LCD bằng 1 dòng , 2 dòng hay 4 dòng. Trong phạm vi đồ án này sử dụng LCD hiển thị kí tự trên 2 dòng và mỗi dòng 16 kí tự. VI.GIỚI THIỆU VỀ ĐỘNG CƠ ĐIỆN MỘT CHIỀU. Trong thời đại ngày nay, hầu hết các dây chuyền sản xuất đang dần dần được tự động hóa bằng cách áp dụng các kỹ thuật tiên tiến của khoa học kỹ thuật. Tuy thế, động cơ điện một chiều vẫn được coi là một loại máy quan trọng. Nó có đặc tính điều chỉnh tốc độ rất tốt, vì vậy máy được dùng nhiều trong các nghành công nghiệp có yêu cầu cao về điều chỉnh tốc độ như cán thép, hầm mỏ, giao thông vận tải… 1.Cấu tạo : Động cơ điện một chiều gồm hai phần : Phần tĩnh (stator) và phần quay (rotor). Phần tĩnh là phần đứng yên của máy. Nó thường bao gồm các bộ phận sau : THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang56 – Cực từ chính : là bộ phận sinh ra từ trường chính trong vỏ máy, gồm có lõi sắt cực từ và dây quấn kích từ lồng ngoài lõi sắt cực từ. Lõi sắt cực từ làm bằng những lá thép kỹ thuật điện hay thép cacbon dày 0,5  1 mm ép chặt lại với nhau. – Cực từ phụ : được đặt giữa các cực từ chính và dùng để cải thiện đổi chiều giúp cho máy điện làm việc không có tia lửa xảy ra giữa chổi điện và vành đổi chiều. Lõi thép cực từ cực từ phụ thường làm bằng thép khối và trên thân cực từ phụ có đặt dây quấn. – Gông từ : dùng để làm mạch từ nối liền các cực từ, đồng thời làm vỏ máy. – Các bộ phận khác như Nắp máy để bảo vệ, Cơ cấu chổi than. Phần quay gồm có những bộ phận sau : – Lõi sắt phần ứng : dùng để dẫn từ, thường dùng những tấm thép kỹ thuật điện dày 0,5 mm được phủ lớp cách điện và ghép chặt lại với nhau. – Dây quấn phần ứng : là phần sinh ra sức điện động và có dòng điện chạy qua. Dây quấn được cách điện cẩn thận với rãnh của lõi thép. – Các bộ phận khác như cánh quạt dùng để quạt gió làm nguội máy, trục máy để đặt lõi sắt phần ứng, cổ góp, cánh quạt và ổ bi. 2.Nguyên lý làm việc của động cơ điện một chiều : Động cơ điện một chiều là một thiết bị biến đổi năng lượng của dòng một chiều thành cơ năng. Trong quá trình biến đổi đó, một phần năng lượng của dòng xoay chiều bị tiêu tán do các tổn thất trong mạch phần ứng và trong mạch kích thích. Phần còn lại là năng lượng được biến đổi thành cơ năng trên trục động cơ. Khi cho dòng điện một chiều chạy vào dây quấn kích thích và dây quấn phần ứng sẽ sinh ra từ trường ở phần tĩnh. Từ trường này tác dụng tương hỗ lên dòng điện trong dây quấn phần ứng tạo ra momen tác dụng lên rotor và làm rotor quay. Nhờ có vành đổi chiều nên dòng điện một chiều được chỉnh lưu thành dòng xoay chiều đưa vào dây quấn phần ứng. Điều này làm lực từ tác dụng lên thanh dẫn dây quấn phần ứng không bị đổi chiều và làm động cơ quay theo một hướng. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang57 Công suất ứng với momen điện từ đưa ra đối với động cơ gọi là công suất điện từ và bằng : Pđt = M = EưIư Trong đó : M : momen điện từ. 60 2 n   : tốc độ góc phần ứng. Iư : dòng điện phần ứng. Eư : suất điện động phần ứng. 3.Đặc điểm: -Nguồn điện áp cung cấp cho động cơ DC từ 5  24V (tuỳ theo loại động cơ) -Tốc độ thay đổi vô cấp (v/p). -Cókhả năng mang tải ngay khi cấp nguồn điện. * Phương pháp điều khiển động cơ. - Dùng điện áp DC 5 24V. - Cấp nguồn đúng chiều theo yêu cầu. - Thay đổi chiều quay bằng cách hoán vị các cực . - + + - + - - + Hình 3.5 : Phương pháp đảo chiều quay động cơ Để làm được công việc trên , ở mạch điều khiển ta trang bị các cầu dao đảo hoặc rơle điện từ . Dựa theo nguyên lý trên khi ứng dụng lắp ráp ROBOT thì những chuyển động đảo chiều đó sẽ đảo chiều được hành trình chuyển động của các khâu. * Nguyên lý hãm ngược + Đối với động cơ một chiều thì công việc hãm ngược đơn giản hơn, giả sử động cơ chạy theo chiều nào đó, có thể cùng chiều hoặc ngược chiều kim đồng hồ. + Khi ngưng cấp nguồn đồng thời đưa nguồn điện khác ngược chiều với nguồn đang hoạt động lập tức động cơ sẽ bị hãm cưỡng bức, lúc ấy lực từ sẽ có M M THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang58 chiều ngược lại và ta điều chỉnh thời gian sao cho động cơ dừng hẳn thì thôi cấp nguồn. CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH. Mô hình thiết kế của xe ROBOT gắp vật. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang59 Mô hình thực của xe ROBOT gắp vật. I.Giới thiệu phần cơ khí: + Thân ROBOT được làm từ các thanh nhôm, liên kết với nhau qua một tấm đế bằng Meca dày và được kết chặt bởi các ốc vít. Kích thước của thân xe là 2.2x3.2 cm. + Trên xe được trang 4 động cơ DC, mỗi động cơ đều có lắp kèm theo hộp số nhằm tăng moment và giảm tốc độ quay. + Tất cả 4 động cơ đều được cấp nguồn 12V + Hai động cơ DC chính được vặn chặt với khung nhôm và liên kết chặt với hai bánh lái. - Phía trước đầu xe là cánh tay làm bằng các thanh nhôm liên kết lại dùng để gắp vật, cánh được sử dụng 2 động cơ; một động cơ là dùng gắp và một động cơ là dùng để nâng tay lên và hạ tay xuống khi gắp vật. THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang60 - Tất cả các các động cơ này đều được điều khiễn bởi mạch công suất ( mạch cầu sử dụng MOSFET), mạch này có thể thay đổi chiều quay của động cơ một cách dễ dàng thông qua mạch Vi Xử Lý. + Phía trước khung xe đặt một bánh nhỏ có thể quay tự do. + Tỷ lệ truyền động giữa motor và bánh xe là: 3:1. + Khoảng cách bánh trái và phải là 24cm. + Đường kính bánh:10cm + Chu vi bánh: 31cm - Xe chạy thẳng: hai bánh lái cùng quay . - Xe quay trái: bánh lái phải quay tới đồng thời bánh lái trái quay lui với số vòng tương ứng. - Xe quay phải: bánh lái trái quay tới, bánh lái phải quay lùi với số vòng tương ứng - Xe dừng: cả hai bánh lái cùng dừng. - Phía sau đuôi có gắn thêm 2 encoder dùng để đếm số xung khi cần xác định chính sát quảng đường bánh xe dịch chuyển. - Cảm biến quang được bố trí như mô hình thực dùng để đọc các tín hiệu phản hồi khi có vật cản. + Cảm biến phía trước có tác dụng phát hiện khi có chướng ngại vật phía trước đồng phát hiện khi gặp báu vật. + Hai cảm biến bên hông là trái và phải dùng để quan sát chướng ngại vật hai bên trước khi xe quay một góc 900 vì có vật cản phía trước. *Quan hệ giữa động cơ bánh xe và động cơ trên cánh tay gắp với Vi Xử Lý: + Bánh trái quay tới: P0.0 = 0 P0.1 = 1 + Bánh trái quay lùi: P0.0 = 1 P0.1 = 0 + Bánh phải quay tới: P0.2 = 1 P0.3 = 0 + Bánh phải quay lùi: P0.2 = 0 P0.3 = 1 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang61 + Cánh tay nâng lên: P0.4 = 0 P0.5 = 1 + Cánh tay hạ xuống: P0.4 = 1 P0.5 = 0 + Cánh tay đóng lại: P0.6 = 0 P0.7 = 1 + Cánh tay mở ra: P0.6 =1 P0.7 = 0  Từ mô hình xe và mạch. ta có thể cho xe chay tới, lùi, quay trái, phải. Muốn cho xe tới hay lùi bao nhiêu ,ta chỉ cần tính số xung . + N =  C S số vòng bánh xe :S = chiều dài đoạn đường,C = chu vi bánh xe. + n = N* 3 10 = số vòng quay của motor. + Số xung = n * 360 . * Ví Dụ: Xe quay phải 90 độ: lúc này bánh trái quay, bánh phải dừng .  Bánh trái sẽ quay đoạn đường bằng ¼ vòng tròn có bán kính là khoảng cách giửa 2 bánh xe. S = 2*24*3.14*1/4 38cm - Số vòng quay của bánh trái : 38/31 = 1.2 - Số vòng quay của motor: 1.2*10/3 - Số xung = 360*1.2*10/3 =1440 xung. II.Giới thiệu sơ đồ nguyên lý của mạch điện: 1.Mạch xử lý chính: THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang62 D7 control 7 J9 UP_SENSOR 1 2 3 GND C1 33p + C5 100uF DOWN control 8 C R17 10K*8 1 2 3 4 5 6 7 8 9 Y1 12Mhz control 3 SENSOR 4 SENSOR 6 START/STOP RW_16X2 RST GND C2 33p D3 control 2 control 7 control 8 JP2 HEADER 8 1 2 3 4 5 6 7 8 D0 control 3 SENSOR 6 OK MENU GND control 6 R19 8.2K J7 ENCODER 2 1 2 3 SW HT 1 J10 LEFT_SENSOR 1 2 3 GND OK VEE VCC control 6 VCC J5 DOWN_SENSOR 1 2 3 RW_16X2 START/STOP E_16X2 C6 104 SW HT 1 GND control 1 D1 VEE SW4 UP 1 2 GND J6 RIGHT_SENSOR 1 2 3 D7 control 4 J12 FONT_SENSOR 1 2 3 C9 104 control 4 MENU SENSOR 3 VCC +C3 10uF VCC SENSOR 3 UP GND D1 D5 SENSOR 4 control 3 control 4 SW HT 2 SENSOR 5 D5 GND GND RST D6 D4 RS_16X2 U12 LM7805 / TO220 1 3 2 IN OUT G N D D2 VCC control 5 D0 C11 104 VCC + C4 4700uF SW1 START/STOP 1 2 - + D1 1A 2 1 3 4 control 5 control 8 D2 control 5 GNDGND C7 104 U6 LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Gnd Vcc Vee RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 SENSOR 5 E_16X2 SW HT 2 GND control 1 J11 ENCODER1 1 2 3 SENSOR 1 R18 10K 1 3 2 UP VCC SENSOR 1 SW5 DOWN 1 2 VCC D3 GND control 7 D6 control 2 SW2 MENU 1 2 VCC control 6 J8 SENSOR 1 1 2 3 C10 104 U1 AT89C51 31 19 18 9 12 13 14 15 1 2 3 4 5 6 7 8 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10 EA/VP X1 X2 RESET INT0 INT1 T0 T1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 RD WR PSEN ALE/P TXD RXD SENSOR 2 GND SW3 OK 1 2 DOWN VCC GND D4 VCC SENSOR 2 control 2 JP1 12VAC 1 2 VCC RS_16X2 control 1 C8 104 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang63 2.Khối mạch công suất điều khiễn 4 động cơ: 12V K4 R3 220 R16 1k VCC K2 K3 GND U2 Q P621 1 2 3 4 Q5540 1 2 3 Q8 540 1 2 3 A -+ MG1 DC TRAI 1 2 K5 Q16 540 1 2 3 R5 220 Q2 9540 1 2 3 12V VCC 12V GND DONG CO PHAI GND Q6 540 1 2 3 12V control 4 R9 220 U7 Q P621 1 2 3 4 R13 220 R7 220 GND 12V A -+ MG4 DC GAP 1 2 Q13 540 1 2 3 control 2 U10 Q P621 1 23 4 DONG CO KEO k7 Q1 9540 1 2 3 GND 12V 12V R12 1k Q7 5401 2 3 VCC R11 220 R10 1k Q10 9540 1 2 3 R15 220 control 8 GNDcontrol 1 Q3 9540 1 2 3 U9 Q P621 1 2 3 4 control 3 K4 12V Q11 9540 1 2 3 U8 Q P621 1 23 4 DONG CO GAP R2 1k Q4 9540 1 2 3 A -+ MG3 DC NANG 1 2 k5 12V DONG CO TRAI VCC12V K2K1 R14 1k R8 1k Q12 9540 1 2 3 Q15 5401 2 3 control 6 U3 Q P621 1 23 4 K8 GND VCC 12V A -+ MG2 DC PHAI 1 2 GND R4 1k R1 220 Q14 540 1 2 3 U4 Q P621 1 2 3 4 K6 R6 1k K3 U5 Q P621 1 23 4 Q9 9540 1 2 3 12V VCC K7K6 K1 VCC VCC control 5 control 7 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang64 3.Khối mạch cách ly dùng cho cảm biến quang: OUT 2 OUT 4 R? 1k R? 10k J? HEADER 3 1 2 3 12V 5V U? Q P621 1 2 3 4 5V OUT 1 A 0 1Friday , June 09, 2006 Title Size Document Number Rev Date: Sheet of OUT 1 R? 1k J? HEADER 6 1 2 3 4 5 6 12V 12V R? 10k J? 12V 1 2 12V OUT 2 J? HEADER 3 1 2 3 5V12V J? HEADER 3 1 2 3 5V OUT 3 J? HEADER 3 1 2 3 R? 1k R? 10k U? Q P621 1 2 3 4 R? 1k U? Q P621 1 2 3 4 5V C? 104 OUT 4 R? 10k U? Q P621 1 2 3 4 OUT 3 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang65 Chương 5: Thuật toán điều khiễn và tóm lược chương trình Bắt đầu Xoá Ram Thiết lập Timer Thiết lập LCD Hiển thi chuổi “RoBot dò đường gắp vật” Delay 1S Gọi chương trình nhập đích tới Cho mặc định hướng ban đầu RoBot là “N” Chờ phím Start Gọi chương trình dò đường 1 N Nhập đích tới địa chỉ 1x1 Gọi chương trình tìm đường Nhập đích tới 0,0 Ret 1 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang66 2 Cảm biến trái=1 1 Cảm biến trước=1 Ghi lên LCD chữ F Ghi lên LCD chữ L Cảm biến phải=1 Ghi lên LCD chữ R Cảm biến trước=1 cảm biến trái=1 3 4 N Y N Y Y y N Y Y Y N N THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang67 Cảm biến phải=1 4 2 Robot chạy lùi 1 ô 1 Y 3 1 Cảm biến trái=1 Cảm biến phải=1 Cảm biến trước=1 Cảm biến trước=1 Robot xoay phải Robot xoay trái Robot chạy tới 1 1 5 Y N Y N N N Robot chạy tới Đích tới x =giá trị định vị x 5 6 7 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang68 7 Hướng W Hướng E Gọi chương trình tính toán cho y Gọi chương trình tính toán cho x Đích tới y = giá trị định vị y Bit _finish_x = 1 6 Bit _finish_y = 1 Ret Chương trình tính toán cho x,y 8 9 Y N Y N THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang69 Tham chiếu y = S Robot quay phải Tham chiếu x= S Robot quay trái Ret Robot quay trái Robot quay phải Ret 8 9 Y N Y N THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang70 II.CHƯƠNG TRÌNH HOẠT ĐỘNG DATABUS EQU P1 count_lcd equ 30h bit_motor1 bit p0.0 bit_motor2 bit p0.1 bit_motor3 bit p0.3 bit_motor4 bit p0.2 bit_motor5 bit p0.4 bit_motor6 bit p0.5 bit_motor7 bit p0.6 bit_motor8 bit p0.7 EN BIT P2.1 RW BIT P2.0 RS BIT P2.2 save_dh equ 31h save_dl equ 32h count_encoder equ 33h encoder_1 equ 34h encoder_2 equ 35h encoder_3 equ 36h encoder_4 equ 37h save_encoder equ 38h save_encoder_1 equ 39h save_encoder_2 equ 3Ah save_encoder_3 equ 3Bh save_encoder_4 equ 3Ch temp_EWNS equ 3Dh Process_run equ 3Eh matrix_x equ 3Fh matrix_y equ 40h local_x equ 41h local_y equ 42h prefer_x equ 43h prefer_y equ 44h THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang71 tagret_x equ 45h tagret_y equ 46h compass equ 47h font_sensor bit p3.7 left_sensor bit p3.6 right_sensor bit p3.4 down_sensor bit p3.1 up_sensor bit p3.3 key_menu bit p2.4 key_up bit p2.7 key_down bit p2.6 key_ok bit p2.5 key_start bit p2.3 mode_set equ 48h temp_a equ 49h bit_finish_x bit 11 bit_finish_y bit 12 sensor_line bit 13 bit_run bit 14 bit_keypress bit 15 ORG 0000H ljmp main org 0003h ; ngat ngoai 0 tac dong encoder ljmp up_encoder org 0013h org 001Bh org 0030h main: lcall reset_ram setb EX0 ; cho phep ngat ngoai 0 setb IT0 ; cho phep ngat canh xuong Mov Tmod,#01h Lcall INIT_LCD mov count_lcd,#00h THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang72 mov dptr,#sample_text lcall write_string_lcd lcall delay1s Lcall CLEAR_LCD setb bit_keypress point_display_encoder: lcall sub_set_tagret mov save_encoder,#0FFh setb EA lcall display_encoder mov compass,#'N' jb key_start,$ lcall delay_key ;lcall process_intelligent_y_finish_x lcall Thinking_run_find_object rot_display_information: lcall drag_object mov tagret_x,#00 mov tagret_y,#00 lcall Thinking_run_find_object lcall drag_object ljmp point_display_encoder Thinking_run_find_object: lcall display_information jb font_sensor,check_left_sensor mov a,#'F' lcall write_text check_left_sensor: jb left_sensor,check_right_sensor mov a,#'L' lcall write_text check_right_sensor: jb right_sensor,process_sensor_font mov a,#'R' lcall write_text process_sensor_font: jb font_sensor,process_left_sensor jb left_sensor,perfer_process_font jb right_sensor,perfer_process_font lcall robot_backward ljmp Thinking_run_find_object perfer_process_font: jnb left_sensor,process_left_sensor jnb right_sensor,process_left_sensor THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang73 mov a,#'1' lcall write_text lcall delay1s lcall robot_rotate_left ;lcall process_intelligent_y_finish_x ljmp Thinking_run_find_object process_left_sensor: jb left_sensor,process_right_sensor process_left_sensor_1: jb font_sensor,process_left_sensor_2 lcall robot_rotate_right ljmp Thinking_run_find_object process_left_sensor_2: mov a,#'2' lcall write_text lcall delay1s lcall robot_forward ljmp Thinking_run_find_object process_right_sensor: jb right_sensor,not_signal_sensor process_right_sensor_1: jb font_sensor,process_right_sensor_2 lcall robot_rotate_left ljmp Thinking_run_find_object process_right_sensor_2: mov a,#'3' lcall write_text lcall delay1s lcall robot_forward ljmp Thinking_run_find_object not_signal_sensor: mov a,#'4' lcall write_text lcall robot_forward ;lcall delay1s ;lcall delay1s ;lcall delay1s ;lcall robot_rotate_left mov a,local_x cjne a,tagret_x,not_finish_tagret_x setb bit_finish_x mov a,local_y THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang74 cjne a,tagret_y,not_finish_tagret_y setb bit_finish_y lcall display_information ret not_finish_tagret_y: lcall process_intelligent_y_finish_x ljmp Thinking_run_find_object not_finish_tagret_x: clr bit_finish_x lcall process_intelligent_y_finish_x ljmp Thinking_run_find_object process_intelligent_y_finish_x: mov a,compass process_x: cjne a,#'W',process_intelligent_y_point_E_finish_x jnb bit_finish_x,temp_exit_process_intelligent_y_finish_x lcall calculate_prefer_y mov a,prefer_y cjne a,#'S',process_intelligent_y_point_WN lcall robot_rotate_right ljmp exit_process_intelligent_y_finish_x process_intelligent_y_point_WN: lcall robot_rotate_left ljmp exit_process_intelligent_y_finish_x process_intelligent_y_point_E_finish_x: cjne a,#'E',againts_wrong_x jnb bit_finish_x,temp_exit_process_intelligent_y_finish_x lcall calculate_prefer_y mov a,prefer_y cjne a,#'S',process_intelligent_y_point_WN_point_E lcall robot_rotate_left ljmp exit_process_intelligent_y_finish_x process_intelligent_y_point_WN_point_E: lcall robot_rotate_right ljmp exit_process_intelligent_y_finish_x againts_wrong_x: mov a,compass cjne a,#'W',againts_wrong_x_2 lcall calculate_prefer_x mov a,prefer_x THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang75 cjne a,#'E',temp_exit_process_intelligent_y_finish_x lcall robot_rotate_right lcall robot_rotate_right ljmp temp_exit_process_intelligent_y_finish_x againts_wrong_x_2: cjne a,#'E',process_Y lcall calculate_prefer_x mov a,prefer_x cjne a,#'W',exit_process_intelligent_y_finish_x lcall robot_rotate_left lcall robot_rotate_left ljmp temp_exit_process_intelligent_y_finish_x temp_exit_process_intelligent_y_finish_x: ret process_Y: cjne a,#'N',process_intelligent_y jb bit_finish_x,exit_process_intelligent_y_finish_x lcall calculate_prefer_x mov a,prefer_x cjne a,#'E',process_intelligent_y_1 lcall robot_rotate_right ljmp exit_process_intelligent_y_finish_x process_intelligent_y_1: lcall robot_rotate_left ljmp exit_process_intelligent_y_finish_x process_intelligent_y: cjne a,#'S',againts_wrong_y jb bit_finish_x,exit_process_intelligent_y_finish_x lcall calculate_prefer_x mov a,prefer_x cjne a,#'E',process_intelligent_y_2 lcall robot_rotate_left ljmp exit_process_intelligent_y_finish_x process_intelligent_y_2: lcall robot_rotate_right ljmp exit_process_intelligent_y_finish_x againts_wrong_y: mov a,compass THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang76 cjne a,#'S',againts_wrong_y_2 lcall calculate_prefer_y mov a,prefer_y cjne a,#'N',exit_process_intelligent_y_finish_x lcall robot_rotate_right lcall robot_rotate_right ljmp exit_process_intelligent_y_finish_x againts_wrong_y_2: cjne a,#'N',exit_process_intelligent_y_finish_x lcall calculate_prefer_y mov a,prefer_y cjne a,#'S',exit_process_intelligent_y_finish_x lcall robot_rotate_left lcall robot_rotate_left ljmp exit_process_intelligent_y_finish_x exit_process_intelligent_y_finish_x: ret display_information: lcall CLEAR_LCD mov dptr,#string_tagret_run lcall write_string_lcd mov count_lcd,#07 lcall command_pos_lcd mov a,#'X' lcall write_text mov a,#':' lcall write_text mov a,tagret_x mov b,#10 div ab orl a,#30h lcall write_text mov a,b orl a,#30h lcall write_text mov count_lcd,#12 lcall command_pos_lcd mov a,#'Y' lcall write_text mov a,#':' lcall write_text mov a,tagret_y THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang77 mov b,#10 div ab orl a,#30h lcall write_text mov a,b orl a,#30h lcall write_text mov count_lcd,#16 lcall command_pos_lcd mov a,#'X' lcall write_text mov a,#':' lcall write_text mov a,local_x mov b,#10 div ab orl a,#30h lcall write_text mov a,b orl a,#30h lcall write_text mov count_lcd,#21 lcall command_pos_lcd mov a,#'Y' lcall write_text mov a,#':' lcall write_text mov a,local_y mov b,#10 div ab orl a,#30h lcall write_text mov a,b orl a,#30h lcall write_text mov count_lcd,#26 lcall command_pos_lcd mov a,compass lcall write_text mov a,#' ' lcall write_text ret THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang78 drag_object: lcall motor_lift_down jb down_sensor,drag_object lcall stop_motor_lift lcall hand_open lcall delay1s lcall stop_hand lcall hand_close lcall delay1s lcall stop_hand lift_up_object: lcall motor_lift_up jb up_sensor,lift_up_object lcall stop_motor_lift ret motor_lift_up: clr bit_motor5 setb bit_motor6 ret motor_lift_down: setb bit_motor5 clr bit_motor6 ret stop_motor_lift: setb bit_motor5 setb bit_motor6 ret hand_close: clr bit_motor7 setb bit_motor8 ret hand_open: setb bit_motor7 clr bit_motor8 ret stop_hand: setb bit_motor7 setb bit_motor8 ret THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang79 ;******************************************************************* ***** ; Process function display and set tagret ;******************************************************************* ***** sub_set_tagret: mov a,mode_set cjne a,#02,process_and_display_tagret mov mode_set,#00h lcall clear_lcd ret process_and_display_tagret: lcall process_key_tagret lcall display_data_tagret ljmp sub_set_tagret display_data_tagret: jnb bit_keypress,exit_display_data_tagret clr bit_keypress lcall CLEAR_LCD mov dptr,#string_tagret lcall write_string_lcd mov count_lcd,#19 lcall command_pos_lcd mov a,#'X' lcall write_text mov a,#':' lcall write_text mov a,tagret_x mov b,#10 div ab orl a,#30h lcall write_text mov a,b orl a,#30h lcall write_text mov count_lcd,#25 lcall command_pos_lcd mov a,#'Y' lcall write_text mov a,#':' lcall write_text mov a,tagret_y mov b,#10 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang80 div ab orl a,#30h lcall write_text mov a,b orl a,#30h lcall write_text exit_display_data_tagret: ret process_key_tagret: check_key_up_set_tagret: jb key_up,check_key_down_set_tagret setb bit_keypress lcall delay_key mov a,mode_set cjne a,#00,mode_set_tagret_y inc tagret_x mov a,tagret_x cjne a,#100,exit_process_key_tagret mov tagret_x,#00h ljmp exit_process_key_tagret mode_set_tagret_y: cjne a,#01,exit_process_key_tagret inc tagret_y mov a,tagret_y cjne a,#100,exit_process_key_tagret mov tagret_y,#00h ljmp exit_process_key_tagret check_key_down_set_tagret: jb key_down,check_key_ok_set_tagret setb bit_keypress lcall delay_key mov a,mode_set cjne a,#00,mode_set_down_tagret_y dec tagret_x mov a,tagret_x cjne a,#0FFh,exit_process_key_tagret mov tagret_x,#99 ljmp exit_process_key_tagret mode_set_down_tagret_y: cjne a,#01,exit_process_key_tagret dec tagret_y mov a,tagret_y cjne a,#0FFh,exit_process_key_tagret mov tagret_y,#99 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang81 ljmp exit_process_key_tagret check_key_ok_set_tagret: jb key_ok,exit_process_key_tagret setb bit_keypress lcall delay_key inc mode_set exit_process_key_tagret: ret ;******************************************************************* ******* ; process ;******************************************************************* ******* calculate_prefer_x: mov a,tagret_x clr c subb a,local_x jnc set_prefer_x mov prefer_x,#'E' ret set_prefer_x: mov prefer_x,#'W' ret calculate_prefer_y: mov a,tagret_y clr c subb a,local_y jnc set_prefer_y mov prefer_y,#'N' ret set_prefer_y: mov prefer_y,#'S' ret robot_rotate_right: setb EA setb bit_motor1 clr bit_motor2 clr bit_motor3 setb bit_motor4 ;setb bit_run ;jb bit_run,$ THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang82 clr EA lcall delay1s lcall delay1s lcall robot_stop lcall delay1s mov a,compass rotate_right_1: cjne a,#'W',rotate_right_2 mov compass,#'N' ljmp exit_robot_rotate_right rotate_right_2: cjne a,#'N',rotate_right_3 mov compass,#'E' ljmp exit_robot_rotate_right rotate_right_3: cjne a,#'E',rotate_right_4 mov compass,#'S' ljmp exit_robot_rotate_right rotate_right_4: cjne a,#'S',exit_robot_rotate_right mov compass,#'W' ljmp exit_robot_rotate_right exit_robot_rotate_right: ret robot_rotate_left: ;setb EA clr bit_motor1 setb bit_motor2 setb bit_motor3 clr bit_motor4 ;setb bit_run ;jb bit_run,$ lcall delay1s lcall delay1s ;clr EA lcall robot_stop lcall delay1s mov a,compass rotate_left_1: cjne a,#'W',rotate_left_2 mov compass,#'S' THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang83 ljmp exit_robot_rotate_left rotate_left_2: cjne a,#'S',rotate_left_3 mov compass,#'E' ljmp exit_robot_rotate_left rotate_left_3: cjne a,#'E',rotate_left_4 mov compass,#'N' ljmp exit_robot_rotate_left rotate_left_4: cjne a,#'N',exit_robot_rotate_left mov compass,#'W' ljmp exit_robot_rotate_left exit_robot_rotate_left: ret robot_forward: ; setb EA setb bit_motor1 clr bit_motor2 setb bit_motor3 clr bit_motor4 setb bit_run ; jb bit_run,$ ; clr EA lcall delay1s lcall robot_stop mov a,compass forward_1: cjne a,#'W',forward_2 inc local_x ljmp exit_robot_forward forward_2: cjne a,#'S',forward_3 dec local_y ljmp exit_robot_forward forward_3: cjne a,#'E',forward_4 dec local_x ljmp exit_robot_forward forward_4: cjne a,#'N',exit_robot_forward inc local_y ljmp exit_robot_forward exit_robot_forward: ret THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang84 robot_backward: ; setb EA clr bit_motor1 setb bit_motor2 clr bit_motor3 setb bit_motor4 setb bit_run lcall delay1s ; jb bit_run,$ ; clr EA lcall robot_stop mov a,compass backward_1: cjne a,#'W',backward_2 inc local_x ljmp exit_robot_backward backward_2: cjne a,#'S',backward_3 inc local_y ljmp exit_robot_backward backward_3: cjne a,#'E',backward_4 dec local_x ljmp exit_robot_backward backward_4: cjne a,#'N',exit_robot_backward dec local_y ljmp exit_robot_backward exit_robot_backward: ret robot_stop: clr bit_motor1 clr bit_motor2 clr bit_motor3 clr bit_motor4 mov encoder_1,#00h mov encoder_2,#00h mov encoder_3,#00h mov encoder_4,#00h ret display_encoder: THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang85 clr ea mov a,save_encoder cjne a,encoder_1,update_display_encoder ljmp check_key_ok_test_signal update_display_encoder: lcall clear_lcd mov save_encoder,encoder_1 mov count_lcd,#00h mov dptr,#string_Encoder lcall write_string_lcd mov a,encoder_4 orl a,#30h lcall write_text mov a,encoder_3 orl a,#30h lcall write_text mov a,encoder_2 orl a,#30h lcall write_text mov a,encoder_1 orl a,#30h lcall write_text check_key_ok_test_signal: jb key_ok,check_key_menu_test_signal lcall delay_key mov save_encoder_1,encoder_1 mov save_encoder_2,encoder_2 mov save_encoder_3,encoder_3 mov save_encoder_4,encoder_4 mov encoder_1,#00h mov encoder_2,#00h mov encoder_3,#00h mov encoder_4,#00h ljmp exit_display_encoder check_key_menu_test_signal: jb key_menu,exit_display_encoder lcall delay_key lcall clear_lcd lcall clear_lcd THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang86 mov dptr,#string_run lcall write_string_lcd ret exit_display_encoder: setb ea ljmp display_encoder DEMO_LCD: ;Chuong tring Test LCD Mov Tmod,#01h Lcall INIT_LCD loop_demo: Lcall CLEAR_LCD ;lcall Demo mov count_lcd,#00h mov dptr,#sample_text lcall write_string_lcd lcall delay1s lcall delay1s lcall delay1s lcall delay1s Lcall CLEAR_LCD mov count_lcd,#00h mov dptr,#sample_name lcall write_string_lcd lcall delay1s lcall delay1s lcall delay1s lcall delay1s ljmp loop_demo up_encoder: ; dung bien r1 chu yeu mov temp_a,a inc count_encoder mov r1,count_encoder cjne r1,#10,exit_up_encoder mov count_encoder,#00 normal_up: inc encoder_1 mov r1,encoder_1 cjne r1,#10,compare_save_encoder mov encoder_1,#00 THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang87 inc encoder_2 mov r1,encoder_2 cjne r1,#10,compare_save_encoder mov encoder_2,#00 inc encoder_3 mov r1,encoder_3 cjne r1,#10,compare_save_encoder mov encoder_3,#00 inc encoder_4 mov r1,encoder_4 cjne r1,#10,compare_save_encoder mov encoder_4,#00 compare_save_encoder: jnb bit_run,exit_up_encoder mov a,encoder_4 cjne a,save_encoder_4,exit_up_encoder mov a,encoder_3 cjne a,save_encoder_3,exit_up_encoder mov a,encoder_2 cjne a,save_encoder_2,exit_up_encoder mov a,encoder_1 cjne a,save_encoder_1,exit_up_encoder lcall robot_stop clr bit_run exit_up_encoder: mov a,temp_a reti delay_key: mov r7,#03 loop_r6: mov r6,#200 loop_r5: mov r5,#250 djnz r5,$ djnz r6,loop_r5 djnz r7,loop_r6 ret write_string_lcd: mov r3,#00h mov a,#00h mov save_dh,dph THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang88 mov save_dl,dpl loop_write_string_lcd: mov a,R3 mov dph,save_dh mov dpl,save_dl movc a,@a+dptr cjne a,#01h,countinue_write_text ret countinue_write_text: lcall write_text inc r3 ljmp loop_write_string_lcd exit_write_string: ret WAIT_LCD : ;Chuong tring kiem tra trang thai LCD Setb EN ;bat dau truyen lenh vao LCD Clr RS ;Noi cho Lcd chi thi la LENH Setb RW ;Doc Lcd MOV DATABUS,#0FFh ;Gan DATABUS la FF MOV A,DATABUS Jb ACC.0,WAIT_LCD ;Neu bit 7 o muc cao , thi Lcd dang ban Clr EN ;Ket thuc lenh Clr RW ;Chuan bi RW cho lenh toi Ret INIT_LCD: ;Khai bao LCD MOV R3,#4 SETUP: Setb EN Clr RS mov a,#038H lcall convert_invert_data Mov DATABUS,a ;Khai bao che do LCD : 8 bit , ky tu : 5X8 character Clr EN Lcall WAIT_LCD DJNZ R3,SETUP setb EN CLR RS CLR RW mov a,#0Ch lcall convert_invert_data Mov DATABUS,a ;Bat man hinh LCD THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang89 Clr EN Lcall WAIT_LCD Lcall Clear_Lcd Ret CLEAR_LCD: ;Chuong trinh xoa man hinh mov count_lcd,#00h Setb EN Clr RS clr rw mov a,#02H lcall convert_invert_data Mov DATABUS,a ;Dua con tro ve dau dong Clr EN Lcall WAIT_LCD Setb EN Clr RS clr rw mov a,#01H lcall convert_invert_data Mov DATABUS,a ;Lenh xoa man hinh Clr EN Lcall WAIT_LCD mov count_lcd,#00h Ret WRITE_TEXT: ;Chuong tring ghi ky tu vao LCD Setb EN Setb RS clr rw lcall convert_invert_data Mov DATABUS,A Clr EN Lcall WAIT_LCD inc count_lcd lcall command_pos_lcd Ret command_pos_lcd: setb en clr rs clr rw mov a,count_lcd mov dptr,#pos_lcd THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang90 movc a,@a+dptr orl a,#10000000b lcall convert_invert_data Mov DATABUS,a Clr EN Lcall WAIT_LCD mov a,count_lcd cjne a,#32,exit_write_text_lcd mov count_lcd,#00h exit_write_text_lcd: ret DELAY1S: MOV R7,#20 AGAIN : MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 WAIT : JNB TF0,WAIT CLR TF0 CLR TR0 DJNZ R7,AGAIN RET reset_ram: mov r0,#20h loop_del: inc r0 mov @r0,#00h cjne r0,#80h,loop_del ret convert_invert_data: mov c,acc.7 mov 01,c mov c,acc.6 mov 02,c mov c,acc.5 mov 03,c mov c,acc.4 mov 04,c THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang91 mov c,acc.3 mov 05,c mov c,acc.2 mov 06,c mov c,acc.1 mov 07,c mov c,acc.0 mov 08,c ;convert mov c,08 mov acc.7,c mov c,07 mov acc.6,c mov c,06 mov acc.5,c mov c,05 mov acc.4,c mov c,04 mov acc.3,c mov c,03 mov acc.2,c mov c,02 mov acc.1,c mov c,01 mov acc.0,c ret sample_text: db ' Robot do duong ' db ' Gap vat ',01h sample_name: db ' NGUYEN HOP ' THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang92 db '04D3N - 410639D',01h string_Encoder: db 'Encoder : ',01h string_tagret: db ' Input tagret',01h string_tagret_run: db 'Tagret ',01h string_lengh: db 'Input encoder',01h string_saved_encoder: db 'Saved encoder',01h string_run: db ' Press key ST ' db ' To Run' ,01 pos_lcd: db 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh db 40h,41h,42h,43h,44h,45h,46h,47h,48h,49h,4Ah,4Bh,4Ch,4Dh,4Eh,4Fh END THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang93 TÀI LIỆU THAM KHẢO 1.HỌ VI ĐIỀU KHIỄN 8051 Tác giả: TốNG VĂN ON HOÀNG ĐỨC HẢI NHÀ XUẤT BẢN LAO ĐỘNG XÃ HỘI 2.CẤU TRÚC VÀ LẬP TRÌNH HỌ VI ĐIỀU KHIỄN 8051 Tác giả: NGUYỄN TĂNG CƯỜNG PHAN QUỐC THẮNG NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT 3.ĐIỆN TỬ CÔNG SUẤT Tác giả: NGUYỄN VĂN NHỜ NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH 4.SƠ ĐỒ CHÂN LINH KIỆN Tác giả: DƯƠNG MINH TRÍ 5.MỘT SỐ TÀI LIỆU TRÊN MẠNG INTERNET THIẾT KẾ VÀ THI CÔNG ROBOT TÌM BÁU VẬT Trang94 MỤC LỤC Trang Nhiệm vụ luận văn tốt nghiệp. Nhiệm vụ luận văn tốt nghiệp. Lịch trình luận văn tốt nghiệp. Nhận xét của Giáo viên hướng dẫn Nhận xét của Giáo viên phản biện Lời cảm ơn Lời nói đầu CHƯƠNG 1: GIỚI TỔNG QUAN VỀ MỘT SỐ ROBOT TỰ HÀNH HIỆN CÓ TRÊN THẾ GIỚI…………………………………………………………..1 CHƯƠNG II :GIỚI THIỆU VỀ VI XỬ LÝ HỌ MSC-51 ........................... 3 I / Giới thiệu cấu trúc phần cứng họ MSC-51 (8951) .............................. 3 II/ Sơ đồ chân AT89C51 và chức năng từng chân ................................. 3 III/ Cấu trúc bên trong vi điều khiển ....................................................... 7 IV/ Hoạt động Timer của 8951 ............................................................... 14 V/ Tổ chức ngắt của c8031/8951 .......................................................... 21 VI/ Tóm tắt tập lệnh của 8951 ................................................................. 30 CHƯƠNG III : GIỚI THIỆU CÁC LINH KIỆN SỬ DỤNG TRONG LUẬN VĂN……………………………………………………………………………..42 I/MOSFET………………………………………………………………..42 II/ OPTO PC817 …………………………………………………………44 III/ GIỚI THIỆU ENCODER…………………………………………….45 IV/ CÁC LOẠI CẢM BIẾN QUANG TRONG CÔNG NGHIỆP……... 46 V/GIỚI THIỆU LCD……………………………………………………48 VI.GIỚI THIỆU VỀ ĐỘNG CƠ ĐIỆN MỘT CHIỀU…………………..55 CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH.................................58 I/GIỚI THIỆU PHẦN CƠ KHÍ………………………………………….59 II.GIỚI THIỆU SƠ ĐỒ NGUYÊN LÝ CỦA MẠCH ĐIỆN…………….61 CHƯƠNG 5: THUẬT TOÁN ĐIỀU KHIỄN VÀ TÓM LƯỢC CHƯƠNG TRÌNH ………………………………………………………………………….65 I/THUẬT TOÁN ĐIỀU KHIỄN………………………………………………..65 II/CHƯƠNG TRÌNH HOẠT ĐỘNG…………………………………………...70

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

  • pdfTRINH BAY.pdf