ĐAI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN- ĐIỆN TỬ
ĐIỀU KHIỂN TỰ ĐỘNG BỘ MÔN
LUẬN VĂN TỐT NGHIỆP
ĐỀ TÀI:
THIẾT KẾ CÁNH TAY ROBOT GẮP KHỐI DÙNG VI ĐIỀU KHIỂN PIC 16F877A
SVTH : DƯƠNG BÌNH THẠNH MSSV:403T0254
VÕ THANH ĐIỀN MSSV:403T0055
GVHD : TS. HOÀNG MINH TRÍ Ks. BÙI THANH HUYỀN : BT03TDH Lớp
TP.HOÀ CHÍ MINH, Tháng 5/2008
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐỘC LẬP- TỰ DO- HẠNH PHÚC
----oOo----
BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐH BÁCH KHOA ----oOo---- Số: ……./BKĐT
NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP
KHOA : ĐIỆN-DIỆN TỬ BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG HỌ VÀ TÊN NGÀNH
:DƯƠNG BÌNH THẠNH : ĐIỀU KHIỂN TỰ ĐỘNG
MSSV: 403T0254 :BT03TĐH LỚP
1. Đầu đề luận án :
THIẾT KẾ MÔ HÌNH CÁNH TAY MÁY ROBOT SÁU BẬC TỰ DO DÙNG VI ĐIỀU KHIỂN PIC
2. Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu): ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... 3. Ngày giao nhiệm vụ luận án :
………………………………………………………………
4. Ngày hoàn thành nhiệm vụ :
………………………………………………………………
5. Họ tên người hướng dẫn: 1/ TS. Hoàng Minh Trí 2/ …………........................................ 3/ …………........................................
Phần hướng dẫn: Toàn phần …………........................................ …………........................................
Chủ nhiệm bộ môn
Người hướng dẫn chính (ký tên và ghi rõ họ tên)
Nội dung và yêu cầu của LATN đã được thông qua bộ môn. Ngày …. tháng …. năm 2008 (ký tên và ghi rõ họ tên)
TS. HOÀNG MINH TRÍ
TS. NGUYỄN ĐỨC THÀNH PHẦN DÀNH CHO KHOA, BỘ MÔN Người duyệt(chấm sơ bộ):……………….. Đơn vị: …………………………………... Điểm tổng kết: …………………………...
Nơi lưu trữ luận án: ……………………...
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT
TRƯỜNG ĐẠI HỌC BÁCH KHOA NAM KHOA ĐIỆN- ĐIỆN TỬ ----oOo----
ĐỘC L
ẬP- TỰ DO- HẠNH PHÚC ----oOo----
Ngày ….tháng …. năm 2008
PHIẾU CHẤM BẢO VỆ LUẬN VĂN
(Dành cho người hướng dẫn / phản biện)
1. Họ và tên SV: ………………………………………………………………………
MSSV:………………………………..Ngành (chuyênngành):…………………….
2. Đề tài:……………………………………………………………………………….
3. Họ tên người hướng dẫn / phản biện:………………………………………………
4. Tổng quát về bản thuyết minh:
Số trang :……………………….. Số chương: ………………………..
Số bản số liệu:……………………….. Số hình vẽ:…………………………
Số tài liệu tham khảo:………………… Phần mềm tính Toán:………………
Hiện vật(sản phẩm):…………………..
5. Tổng quát về các bản vẽ.
-Số bản vẽ: bản A1 bảnA2 khổ khác
-Số bản vẽ tay Số bản vẽ trên máy tính
6. Những ưu điểm chính của LVTN :…………………………………………
7. Những thiếu sót chính của LVTN:………………………………………………
……………………………………………………..………………………………
không được bảo vệ 8. Đề nghị: Được bảo vệ: Bổ xung thêm để bảo vệ
9. Câu hỏi SV phải trả lời trước hội đồng(CBPB ra ít nhất 02 câu):
a. ………………………………………………………………………………...
b. ………………………………………………………………………………...
c. ………………………………………………………………………………...
10. Đánh giá chung(bằng chữ: giỏi, khá ,TB): Đi ểm: ……./10
Ký tên (ghi rõ họ tên)
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT
ĐỘC L
ẬP- TỰ DO- HẠNH PHÚC ----oOo----
Ngày ….tháng …. năm 2008
TRƯỜNG ĐẠI HỌC BÁCH KHOA NAM KHOA ĐIỆN- ĐIỆN TỬ ----oOo----
PHIẾU CHẤM BẢO VỆ LUẬN VĂN
(Dành cho người hướng dẫn / phản biện)
1. Họ và tên SV: …………………………………………………………………….
MSSV:………………………………..Ngành (chuyênngành):……………………
2. Đề tài:………………………………………………………………………………
3. Họ tên người hướng dẫn / phản biện:………………………………………………
4. Tổng quát về bản thuyết minh:
Số trang :……………………….. Số chương: ………………………….
Số bản số liệu:……………………….. Số hình vẽ:…………………………..
Số tài liệu tham khảo:………………… Phần mềm tính Toán:……………….
Hiện vật(sản phẩm):…………………..
6. Tổng quát về các bản vẽ.
-Số bản vẽ: bản A1 bảnA2 khổ khác
-Số bản vẽ tay Số bản vẽ trên máy tính
6. Những ưu điểm chính của LVTN:………………………………………………..
7. Những thiếu sót chính của LVTN:……………………………………………….
……………………………………………………..…………………………………
không được bảo vệ 8. Đề nghị: Được bảo vệ: Bổ xung thêm để bảo vệ
9. Câu hỏi SV phải trả lời trước hội đồng(CBPB ra ít nhất 02 câu):
a. ………………………………………………………………………………...
b. ………………………………………………………………………………...
c. ………………………………………………………………………………...
10. Đánh giá chung(bằng chữ: giỏi, khá ,TB): Đi ểm: ……./10
Ký tên (ghi rõ họ tên)
Nhận xét của giáo viên hướng dẫn
........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ...........................................................................................................................................
Tp. Hồ Chí Minh, Ngày …. Tháng ….năm 2008 GVHD
Nhận xét của giáo viên phản biện
........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ...........................................................................................................................................
Tp. Hồ Chí Minh, Ngày …. Tháng…. năm 2008 GVPB
LỜI CẢM ƠN
Đề tài được hoàn thành trong sự hỗ trợ và động viên rất nhiều từ gia đình, người thân, thầy cô cũng như bạn bè thân thuộc. Đó là những tình cảm thật đáng trân trọng không sao đền đáp hết, và thật phấn khởi biết bao khi thấy mọi người vẫn luôn ở bên cạnh mình trong những hoàn cảnh khó khăn nhất. Dù ở bất kỳ nơi đâu, tôi sẽ vẫn nhớ và ghi sâu những tình cảm cao đẹp này.
Cảm ơn ba mẹ đã luôn cùng con đi suốt những tháng ngày khó khăn qua.
Cảm ơn ông, bà, và các cô chú vẫn luôn động viên và ủng hộ con.
Đặc biệt cảm ơn thầy Hoàng Minh Trí và cô Bùi Thanh Huyền đã tạo điều kiện và hướng dẫn em cách học tập cũng như nghiên cứu để hoàn thành tốt đề tài này.
Chân thành cảm ơn những người bạn vẫn luôn đồng hành cùng mình cả trong những lúc khó khăn nhất.
Cảm ơn quý thầy cô trong Khoa Điện tử – Tự động hóa Trường Đại học Bách Khoa luôn cảm thông và tạo điều kiện tốt cho em trong suốt thời gian học tập tại trừơng.
Qua đây em cũng rất mong nhận được những ý kiến đóng góp quý báu của quý thầy cô trong Hội đồng bảo vệ khóa luận tốt nghiệp.
Cuối cùng xin chúc gia đình, người thân, quý thầy cô cùng bạn bè nhiều sức khỏe và thành công trong mọi việc.
LỜI NÓI ĐẦU
Từ các thông tin trên các diễn đàn Internet và các trung tâm học tập thực hành, cho thấy nhu cầu học tập và nghiên cứu cũng như tự mài mò tìm hiểu về nhiều lĩnh vực trong ngành điện tử nói chung, tự động hóa nói riêng là rất cao. Trong nhiều lĩnh vực được quan tâm, có một lĩnh vực về vi điều khiển được quan tâm rất nhiều hiện nay đó là vi điều khiển PIC. Việc tìm hiểu và ứng dụng hết khả năng của nhiều loại PIC là cả một quá trình dài lý thú và hữu ích, vì sự thuận tiện, tinh gọn, khả năng phát triển cũng như sự đa dạng các dòng sản phẩm phù hợp nhiều quy mô ứng dụng của nó.
Một lĩnh vực khác được quan tâm đông đảo trên các diễn đàn học tập ngành điện tử và tự động hóa, nhưng chưa có một tài liệu chính thống phổ biến hướng dẫn hay cung cấp thông tin về nó, cũng như chưa được giảng dạy ở nhiều trung tâm đó là ứng dụng PIC 16f877 điều khiển cánh tay ROBOT và thể hiện một sự linh hoạt mà trong thực tế rất phù hợp với nhu cầu s ản x ấut đa dạng trong các hệ thống từ công nghiệp cho đến dân dụng. Thuận tiện cho người vận hành cũng như cũng như năng xuất và chất lượng sản phẩm, trình bày một cách sinh động hơn
Lựa chọn PIC trong đề tài này là một bước đi phù hợp với những yêu cầu giới hạn cần có của một đề tài tốt nghiệp cũng như đáp ứng những nhu cầu ứng dụng thực tế trong các lĩnh vực của ngành điện tử và tự động hóa đã theo học.
Tuy đã có nhiều cố gắng nhưng do vốn kiến thức còn hạn chế cũng như thời gian còn hạng chế nên sẽ không tránh khỏi những sai sót và khuyết điểm trong qúa trình tính toán cũng như thi công công mô hình, rất mong được sự thông cảm và góp ý kiến của qúi thầy cô cũng như các bạn sinh viên.
TOÙM TAÉT LUAÄN VAÊN
Thöïc hieän ñeà taøi nghieân cöùu khaùi nieäm, nguyeân lyù laøm vieäc cuûa caùnh tay
Cành tay máy sẽ di chuyển vật theo lộ trình định trước, và lập lại thao tác
Ứng dụng phần mềm PCWH 3.227 sử dụng ngôn ngữ lập trình C (CCSC) để
Hiển thị trạng thái hoạt động của cành tay máy thông qua màn hình tinh thể
Thöïc hieän ñeà taøi “THIEÁT KEÁ & ÑIEÀU KHIEÅN MOÂ HÌNH CAÙNH TAY MAÙY SAÙU BAÄC TÖÏ DO” maùy sử dụng step motor để di chuyển sản phẩm. tương tự khi ấn phím enter. biên dịch và nạp cho vi xử lí PIC. lỏng LCD. Ứng dụng phần mềm OrCAD hổ trợ thiết kế mạch in.
MỤC LỤC
Chương 1: TỔNG QUAN Trang
1.1 Giới thiệu sơ lược về lịch sử phát triển của Robot. 1.2 Tình hình phát triển của Robot hiện nay. 1.3 Tình hình phát triển của ngành TDH ở nước ta hiện nay. 1.4 Nội dung đề tài. 1.5 Giới thiệu vấn đề. 1 2 3 4 4
Chương 2: GIỚI THIỆU ĐỀ TÀI VÀ PHƯƠNG PHÁP NGHIÊN CỨU 2.1 Tổng quang. 2.2 Giới hạn đề tài nghiên cứu. 2.3 Phương pháp nghiên cứu. 5 5 5
3.1 Vi điều khiển PIC 16F877A . 3.1.1 Giới thiệu chung. 3.1.2 Phân loại PIC. 3.2 Cấu trúc tổng quát của PIC16F877A. 3.3 Các Port xuất nhập và thanh ghi điều khiển. 3.4 Mạch dao động cho PIC . 3.5 Chân Reset PIC 3.6 Vấn đề cấp nguồn chi vi điều khiển. 3.7 Tổ chức bộ nhớ PIC . 7 8 8 8 10 13 13 14 14
Chương 3 : GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC16F877A Chương 4: MÔ-ĐUN MÀN HÌNH TINH THỂ LỎNG LCD(LIQUID CRYSTAL DISPLAY)
4.1 Giới thiệu Chung LCD. 4.2 Module LCD hi ển th ị k ý t ự theo d òng LMB 162ABC. 4.3 Lưu đồ khởi động LCD. 4.4 Sơ đồ kết nói ứng dụng vi điều khiển. 17 18 24 25
50 55
Chương 5: BIÊN DỊCH PCWH 3.227 SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C . 26 28 42 46 5.1 Giới thiệu chung về ngôn ngữ C. 5.2 Cách viết một chương trình trong CCSC. 5.3 Chương trình nạp Vi điều khiển PIC qua cổng LPT WinPic800 5.4 Bài tập minh họa điều khiển dãy 8 LED đơn
6.1 Nguyên lí hoạt động của động cơ bước. 6.2 Giới thiệu các motor dùng trong cánh tay máy . Chương 6: GIỚI THIỆU SƠ LƯỢC VỀ ĐỘNG CƠ BƯỚC.
58 59 60 61 68 70 74 Chương 7: THÍÊT KẾ VÀ THI CÔNG 7.1 Tính toán sơ bộ cánh tay máy. 7.2 Tính vận tốc và moment của động cơ bước . 7.3 Tính toán phần cơ của cánh tay máy. 7.4 Mô hình thi công cánh tay máy. 7.4 Thiết kế bo mạch điều khiển cho cánh tay máy. 7.6 Lưu đồ giải thuật điều khiển. 7.6 Chương trình điều khiển.
95 95 96
8.1 Tóm tắt đề tài. 8.2 Kết quaû thöïc hieän. 8.3 Một vài đề nghị.
97
Tài Liệu Tham khảo.
Chương8: KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
CHƯƠNG 1:
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
TỔNG QUAN
1.1 LÒCH SÖÛ PHAÙT TRIEÅN CUÛA ROBOT
Thuaät ngöõ ROBOT xuaát hieän vaøo naêm 1920 trong moät taùc phaåm vaên hoïc
cuûa nhaø vaên Tieäp Khaéc coù teân Karel Capek.
Thuaät ngöõ Inducstrial Robot (IR) - xuaát hieän ñaàu tieân ôû Myõ do coâng ty AMF (American Manchine and Foundry company) quaûng caùo moâ taû moät thieát bò mang daùng daáp vaø coù moät soá chöùc naêng nhö tay ngöôøi ñöôïc ñieàu khieån töï ñoäng ñeå thöïc hieän moät soá thao taùc saûn xuaát thieát bò coù teân goïi Versatran. Quaù trình phaùt trieån cuûa IR coù theå toùm taét nhö sau: - Töø nhöõng naên 50 ôû Myõ xuaát hieän vieän nghieân cöùu ñaàu tieân. - Ñang ñaàu nhöõng naêm 60 xuaát hieän saûn phaåm ñaàu tieân teân Versatran cuûa
coâng ty AMF.
- ÔÛ Anh ngöôøi ta baét ñaàu nghieân cöùu vaø cheá taïo caùc IR theo baûn quyeàn cuûa
Myõ töø naêm 1967;
- ÔÛ caùc nöôùc Taây AÂu khaùc nhö : Ñöùc, YÙ, Phaùp, Thuïy Ñieån, töø nhöõng naêm
70.
- Chaâu AÙ coù Nhaät baét ñaàu nghieân cöùu öùng duïng IR töø naêm 1968.
Ñeán nay treân theá giôùi coù khoaûng treân 20 coâng ty saûn xuaát IR trong soá ñoù coù 80 coâng ty cuûa Nhaät , 90 coâng ty cuûa caùc nöôùc Taây AÂu, 30 coâng ty cuûa Myõ vaø moät soá coâng ty ôû Nga, Tieäp …
Theo chuûng loaïi, möùc ñoä ñieàu khieån, vaø khaû naêng nhaän bieát thoâng tin cuûa tay maùy - ngöôøi maùy ñaõ ñöôïc saûn xuaát treân theá giôùi coù theå phaân loaïi caùc IR thaønh caùc theá heä sau:
Theá heä 1 : theá heä coù kieåu ñieàu khieån theo chu trình daïng chöông trình cöùng
khoâng coù khaû naêng nhaän bieát thoâng tin
Theá heä 2 : theá heä coù kieåu ñieàu khieån theo chu kỳ daïng chöông trình meàm
böôùc ñaàu ñả coù khaû naêng nhaän bieát thoâng tin
Theá heä 3 : theá heä coù kieåu ñieàu khieån daïng tinh khoân ,coù khaû naêng nhaän bieát
thoâng tin vaø böôùc ñaàu ñaõ coù moät soá chöùc naêng lyù trí cuûa con ngöôøi
Ñoái vôùi tay maùy coâng nghieäp ñaõ coù hôn 250 loaïi ,trong soá ñoù coù hôn 40% laø
Söï xuaát hieän cuûa robot vaø söï gia taêng vai troø cuûa chuùng trong saûn xuaát vaø xaõ hoäi loaøi ngöôøi laøm xuaát hieän moät ngaønh khoa hoïc môùi laø ngaønh robot hoïc (Robotic) . treân theá giôùi ôû nhieàu nöôùc ñaõ xuaát hieän nhöõng vieän nghieân cöùu rieâng veà robot . ÔÛ Vieät Nam, töø nhöõng naêm giöõa cuûa thaäp kyû 80 ñaõ coù vieän nghieân cöùu veà robot.
loaïi tay maùy coù kieåu ñieàu khieån ñôn giaûn thuoäc theá heä thöù nhaát .
GVHD: Ts. Hoàng Minh Trí
Trang: 1
1.2 TÌNH HÌNH PHAÙT TRIEÅN CUÛA ROBOT TREÂN THEÁ GIÔÙI
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Söï phaùt trieån cuûa khoa hoïc kyõ thuaät ngaøy caøng nhanh goùp phaàn naâng cao naêng suaát lao ñoäng. Ñaët bieät söï ra ñôøi vaø phaùt trieån cuûa coâng ngheä cheá taïo Robot nhaèm taïo ra söï töï ñoäng hoùa trong quaù trình saûn xuaát giaûm ñi söùc lao ñoäng baèng chaân tay cuûa ngöôøi lao ñoäng . Ñoái vôùi caùc nööôùc ngoaøi laõnh vöïc töï ñoäng hoùa ñaõ xuaát hien raát sôùm ,tôùi nay ngaønh töï ñoäng hoùa ñaõ ñaït ñöôïc nhöõng thaønh töïu heát söùc to lôùn ,hoã trôï ñaéc löïc con nguoi trong nhieàu laõnh vöïc nhö : +ROBOT Coâng nghieäp
CAÙNH TAY MAÙY 5 BAÂËC DUØNG TRONG COÂNG NGHIEÄP CUA HAÕNG
SANYO DENKI
Hình 2.1
+Khoâng gian:
GVHD: Ts. Hoàng Minh Trí
Trang: 2
Xe töï haønh Spirit cuûa NASA ñang thaùm hieåm sao hoûa Hình 2.2
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Hình 2.3
GVHD: Ts. Hoàng Minh Trí
Trang: 3
Töï ñoäng hoùaù ñaõ trôû thaønh moät troâng nhöõng ngaønh muõi nhoïn cuûa nhieàu nöôùc treân theá giôùi,vôùi söï phaùt trieån khoâng ngöøng của coâng ngheä baùn daãn,coâng ngheä thoâng tin, trí tuïeâ nhaân taïo va cô khí chính xaùc, robot không con la nhöõng coå maùy voâ tri,voâ giac chi bieát laïp ñi laäp laïi moät coâng vi c nhaát ñònh maø noù ñaõ baét ñaàu coù caûm suùc ,suy nghó va haønh ñoäng nhö moät sinh vaät, töø ñoù nghaønh töï ñoäng hoùa ñaå môû ra nhieàu öùng duïng heát söùc phong phuù. nhöõng theá heä robot gaân gioáng con ngöôøi laàn löôït ñöôïc caùc haõng nhö HONDA ASIMO,MITSUBITSI,SONY,..cho ra ñôøi chöùng toû töông söï phaùt trieån va töông lai cuûa ngaønh töï ñoâng hoùa laø raát maïnh meõ. 1.3 TÌNH HÌNH PHAÙT TRIEÅN CUÛA NGHAØNH TÖÏ ÑOÄNG HOÙA & ROBOT TAÏI VIEÄT NAM. Rieâng ôû nöôùc ta lónh vöïc naøy coøn khaù môùi meõ.chuùng ta ñang ôû giai ñoaïn ñaàu cuûa thôøi kyø coâng nghieäp hoùa vaø hieän daïi hoùa ñaát nöôc, ña soá caùc maùy moùc cuûa chuùng ta trong caùc nhaø maùy xí ngieäp ñeàu ñaõ loãi thôøi vaø heát söùc laïc haïâu ,chuùng khoâng coøn thích hôp cho vieäc saûn xuaát.Vieäc ñaàu tö môùi caùc thieát bò naøy laø heát söùc caàn thieát nhöng hieän nay phaàn lôùn cacù trang thieát bò naøy ta ñeàu phaûi nhaäp ngoaïi maø chöa theå töï cheá taïo ñöôïc ,do ñoù töï ñoäng hoaù ñöôc xem nhu moät trong baûy nghaønh coâng nghieäp muõi nhoïn caàn ñaàu tö phaùt trieån ñeå noù coù theå ñaùp öùng tröôùc söï ñoøi hoûi cuûa nghaønh coâng nghieäp nöôùc nhaø. Ñeå coù theå coù theå laøm ñöôïc ñieàu ñoù chuùng ta caàn coù moät löïc löôïng nhaän löïc huøng haâuï caû veà soá löôïng laån trình ñoä chuyeân moân cuøng vôùi söï ñaàu tö veà trang thieát bò vaø cô sô vaät chaát Nhieàu cuoäc thi veà töï ñoäng hoùa ñaõ dieãn ra nhaèm khuyeán khích loøng xay meâ saùng taïo trong giôùi treûõ ñaõ ñöôïc toå chöùc nhö :ROBOCON,EUREKA,. . . . . ñaõ nhaän ñöôïc söï uûng hoä nhieät tình trong sinh vieân vaø goùp phaàn tích cöïc vao vieäc thuùc ñaåy söï ñam meâ vaø loøng ham thích cuûa sinh vieân VIETNAM treân con ñöôøng xaây döïng ñaát nöôùc Ñöùng tröôùc nhu caàu ñoù tröôùc nhu caàu thöïc teá ñoù coäng vôùi loøng ñam meâ cuûa baïn thaân, chuùng em ñaõ baét tay vaøo thöïc hieän ñeà taøi naøy vôùi söï giuùp ñôõ nhieät tình veà
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
GVHD: Ts. Hoàng Minh Trí
Trang: 4
kieán thöùc, taøi chính vaø söï ñoäng vieân nhieät tình cua thaâyø cô. Mong ñoùng goùp moät phaàn söùc löïc vaøo söï phaùt trieån cuaû nöôùc nhaø. 1.4 NOÄI DUNG CUÛA ÑEÀ TAØI: Yeâu caàu cuûa ñeà taøi laø cheá taïo hoaøn thieän phaàn cô-ñieän cuûa moät caùnh tay maùy 6 baäc töï do coù chieàu daøi toång coâng laø 60cm(daøi baèng tay ngöôøi),tuy nhieân ñeå chöùng toû tính öùng duïng cao cuûa caùnh tay maùy em ñaõ thieát keá theâm phaàn baêng chuyeàn vaø caûm bieán vaät theå. ÔÛ Vieät Nam noùi chung coâng ngheä cheá taïo cô khí chính xaùc con chöa phaùt trieån neáu khoâng muoán noùi laø con soá khoâng, chuùng ta hoaøn toaøn chöa coù khaû naêng cheá taïo caùc boä phaän caáu thaønh cuûa tay maùy ñaït tieâu chuaån quoác teá (coù ñoä chính xaùc vaø ñoä beàn cao). Taän duïng nhöõng vaät lieäu coù saún ñeå gia coâng caùc chi tieát cô khí cuõng nhö linh kieän, thieát bò ñieän do nöôùc ngoøai saûn suaát ñeå thieát keá thaønh nhöõng saûn phaåm cuï theå tröôùc heát laø öùng duïng laøm phöông tieän giaûng daïy trong tröôøng hoïc vaø töø ñoù phaùt trieån cao hôn ñeå öùng duïng vaøo trong saûn suaát ñaõ vaø ñang laø höôùng ñi ñuùng ñaéng cuûa caùc nhaø khoa hoïc vaø kyõ sö ôû Vieät Nam . Ñeà taøi : “THIEÁT KEÁ & ÑIEÀU KHIEÅN MOÂ HÌNH CAÙNH TAY MAÙY SAÙU BAÄC TÖÏ DO” khoâng naèm ngoaøi nhaän ñònh treân. Ñieàu quan troïng hôn heát laø caùc vaán ñeà lieân quan ñeán vieäc tính toaùn thieát keá, cheá taïo, nguyeân lyù hoaït ñoäng cuûa tay maùy vaø phaàn lyù thuyeát ve àmaïch giao tieáp coâng suaát vaø maïch ñieàu khieån heä thoáng baèng vi ñieàu khieån. Noù seõ laø nguoàn thoâng tin höûu ích cho nhöõng ai muoán tìm hieåu veà lónh vöïc töï ñoäng hoùa noùi chung vaø laõnh vöïc caùnh tay maùy noùi rieâng. 1.5 GIÔÙI HAÏN VAÁN ÑEÀ Tay maùy raát ña daïng veà nguoàn goác vaø chuûng loaïi ñaây laø laàn ñaàu thöïc hieän nghieân cöùu ñeà taøi: “THIEÁT KEÁ & ÑIEÀU KHIEÅN MOÂ HÌNH CAÙNH TAY MAÙY SAÙU BAÄC TÖÏ DO” trong ñieàu kieän: • Thôøi gian thöïc hieän ñeà taøi chæ trong moät hoïc kyø • Kinh nghieäm thöïc teá chöa coù nhieàu • Taøi lieäu veà vi xöû lí vaø tay maùy coøn hieám • Vaät tö vaø linh kieän khoâng ñoàng boä Vì vaäy chuùng em ñaõ thöïc hieän nghieân cöùu ñeà taøi vôùi nhöõng ñaëc ñieåm chính sau ñaây: • Thieát keá & cheá taïo caùnh tay maùy 5 baäc töï do & heä thoáng baêng chuyeàn • Thieát keá & cheá taïo maïch giao tieáp coâng suaát cuûa caùnh tay maùy • Thieát keá& cheá taïo maïch ñieàu khieån caùnh tay maùy & baêng chuyeàn • Laäp trình baèng vi xöû lí PIC16F877A • Xaây döïng nhöõng chöông trình tieâu bieåu
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
CHƯƠNG 2
: GIỚI THIỆU ĐỀ TÀI VÀ PHƯƠNG PHÁP
NGHIÊN CỨU
Tổng quan: 2.1
Đề tài Thiết kế cánh tay Robot dùng Vi điều khiển PIC 16F877A bao gồm các thành phần chính:
Động cơ bước (step motor )
• • Phần cứng lập trình Vi điều khiển PIC 16F877A của MICROCHIP Mỹ với 32 tập lệnh 14bit.
• Trình biên dịch PCWH 3.227 sử dụng ngôn ngữ lập trình C (CCSC) (Do TM e-DESIGN cung cấp).
• Chương trình nạp Vi điều khiển PIC qua cổng LPT1 WinPic800 3.56 (Do TM e-DESIGN cung cấp).
• Thiết kế bo mạch điều khiển với sự hổ trợ của phần mềm OrCAD (electronic design automation)
• Các khâu truyền động cơ khí giửa các khớp của cánh tay Robot (cid:35) Ý nghĩa đề tài
Đề tài điều khiển cánh tay Robot là một ứng dụng thực tế mà hiện nay dang phát triển mạnh mẽ, đa dạng và sinh động, nó được ứng dụng nhiều trong các nhà máy sản xuất nhầm giảm bớt công sức lao động của con người dồng thời nâng cao số lượng cũng như chất lượng của sản phẩm, nên nó phù hợp nhiều ứng dụng thực tế,... Việc trình bày thao tác đối với cánh tay Robot, nhất là động cơ bước (step motor),Tuy nhiên Step motors hiện nay các nước tiên tiến đã sản xuất và ứng dụng trong một số lĩnh vực, trong công nghiệp hiện nay người ta dùng một loại motor mới (Servo motor AC) Loại motor này vận hành ở tốc độ cao hơn công suất lớn hơn và tiết kiệm năng lượng hơn tuy nhiên giá thành sẽ cao hơn rất nhiều. Từ đó các nghiên cứu trong lĩnh vực này sẽ thuận lợi hơn, sáng tạo hơn và chuyên nghiệp hơn.
2.2 Giới hạn nghiên cứu:
• Động cơ step motor . • Vi điều khiển PIC 16F877A. • Phần mềm CCS ( ngôn ngữ C) hổ trợ lập trình và biên dịch chương trình vi xử lí.
• Phần mềm OrCAD hổ trợ thiết kế mạch in.
2.3 Giới hạn áp dụng:
Điều khiển cành tay Robot để di chuyển vật trên lộ trình đã định.
GVHD: Ts. Hoàng Minh Trí
Trang: 5
2.4 Phương pháp nghiên cứu:
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
(cid:35) Tìm hiểu vi xử lí PIC16F877A phần cứng và tập lệnh.
(cid:35) Tìm hiểu màn hình LCD.
(cid:35) Tìm hiểu ngôn ngữ lập trình và biên dịch CCS, viết chương trình và biên
dịch ra file.hex nạp cho vi điều khiển PIC.Viết chương trình diều khiển cho một motor bước quay một góc x ác định bằng kit thực hành đa năng theo
(cid:35) Thiết kế phần cơ và chế tạo cánh tay robot.
(cid:35) Thiết kế mạch công suất và thử nghiệm cho quay từng khớp cuả cánh tay máy.
(cid:35) Thiết kế hệ thống băng chuyền các sensor và mạch điều khiển.
GVHD: Ts. Hoàng Minh Trí
Trang: 6
(cid:35) Lập trình và hoàn thiện cánh tay robot.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
CHƯƠNG 3: GIỚI THIỆU VI ĐIỀU KHIỂN PIC 16F877A
3.1 Vi điều khiển PIC16F877A:
Hình 3.1 Sơ đồ chân của PIC16FxxxA
3.1.1Giới thiệu chung
PIC là tên viết tắt của Máy tính khả trình thông minh (Programable Intelligent Computer) do hãng General Instrument đặt tên, con vi điều khiển đầu tiên của họ là PIC1650. Hãng Microchip tiếp tục phát triển các dòng sản phẩm này. Cho đến nay, các sản phẩm vi điều khiển PIC của Microchip đã gần 100 loại, từ họ 10Fxxx đến các họ 12Cxxx, 17Cxx, 16Fxx, 16Fxxx, 16FxxxA, 16LFxxxA, 18Fxxx 18LFxxx,
GVHD: Ts. Hoàng Minh Trí
Trang: 7
Bảng 3.2 Sơ đồ chân của PIC16FxxxA
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
3.1.2 Phân loại PIC theo ký tự: • Nhóm thứ nhất có ký tự C, họ PIC xxCxxx được đưa vào một nhóm, gọi là OTP (One Time Programable) chỉ có thể lập trình một lần duy nhất.
• Nhóm thứ hai có ký tự F, LF, họ PIC xxFxxx, xxFxxx, gọi là Flash, cho phép ghi/xóa nhiều lần bắng các mạch điện thông thường.
3.1.3 Phân loại PIC theo ký số: • Loại thứ nhất là dòng PIC cơ bản (Base-Line), gồm các PIC 12Cxxx, có độ dài lệnh là 12 bit.
• Loại thứ hai là các dòng PIC 10F, 12F, và 16F, gọi là dòng phổ thông (Mid- Range), có độ dài lệnh là 14 bit.
• Loại thứ ba là dòng PIC 18F (High-End), có độ dài lệnh là 16 bit. PIC là một vi điều khiển với kiến trúc RISC, sử dụng microcode đơn giản đặt trong ROM, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động). PIC nhờ có EEPROM nên tạo thành 1 bộ điều khiển vào ra khả trình, có rất nhiều dòng PIC với hàng loạt các mô-đun ngoại vi tích hợp sẵn (như USART, PWM, ADC...), với bộ nhớ chương trình từ 512 Word đến 32K Word. PIC16F877A là dòng PIC phổ biến nhất, đủ mạnh về tính năng, 40 chân, bộ nhớ đủ lớn cho hầu hết các ứng dụng thông thuờng.
3.2 Cấu trúc tổng quát PIC16F877A gồm:
GVHD: Ts. Hoàng Minh Trí
Trang: 8
• 8 K Flash ROM • 368 bytes RAM • 256 bytes EEPROM • 5 Port I/O (A, B, C, D, E), ngõ vào/ra với tín hiệu điều khiển độc lập • 2 bộ định thời 8 bit Timer 0 và Timer 2
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
• 1 bộ định thời 16 bit Timer 1, có thể hoạt động trong cả chế độ tiết kiệm năng lượng (Sleep Mode) với nguồn xung clock ngoài
• 2 bộ CCP, Capture/Compare/PWM - tạm gọi là: Bắt giữ / So sánh / Điều biến xung
• 1 bộ biến đổi tương tự – số (ADC) 10 bit, 8 ngõ vào • 2 bộ so sánh tương tự (Comparator) • 1 bộ định thời giám sát (WDT – Watch Dog Timer) • 1 cổng song song (Parallel Port) 8 bit với các tín hiệu điều khiển • 1 cổng nối tiếp (Serial Port) • 15 nguồn ngắt (Interrupt) • Chế độ tiết kiệm năng lượng (Sleep Mode) • Nạp chương trình bằng cổng nối tiếp ICSPTM (In-Circuit Serial Programing) • Nguồn dao động lập trình được tạo bằng công nghệ CMOS • 35 tập lệnh có độ dài 14 bit • Tần số hoạt động tối đa là 20 MHz
* Cấu trúc phần cứng PIC16F877A:
PIC là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4
GVHD: Ts. Hoàng Minh Trí
Trang: 9
chu kỳ của bộ dao động). PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năng khác nhau. Trong đó có một số chân đa công dụng (đa hợp), mỗi chân có thể hoạt động như một đường xuất/nhập (I/O) độc lập hoặc là một chức năng đặc biệt dùng để giao tiếp với các thiết bị ngoại vi.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Hình 3.4 Sơ đồ khối của PIC16F877A
3.3 Các Port x và thanh ghi TRISx [ x={A,B,C,D,E} ]
GVHD: Ts. Hoàng Minh Trí
Trang: 10
3.3.1Port A và thanh ghi TRISA
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Bảng 3.5 Các thanh ghi liên quan đến Port A Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được dùng bởi Port A
Port A gồm 6 chân RA0-RA5, việc ghi các giá trị nào vào thanh ghi
Việc đọc thanh ghi Port A sẽ đọc các trạng thái chân cảu Port A. Việc
Riêng chân RA4 được tích hợp thêm chức năng cung cấp xung clock
Khi các chân của Port A được sử dụng là ngõ vào thì các bit của thanh TRISA sẽ quy định các chân của Port A là Input hay Output, 0 = Output, 1 = Input. ghi giá trị vào thanh ghi Port A sẽ thay đổi các trạng thái của các chân của Port A. ngoài cho Timer 0 (RA4/T0CLKI). Các chân khác của Port A được đa hợp với các chân Analog của bộ ADC và chân ngõ vào điện thế so sánh của bộ so sánh Comparator. Hoạt động của các chân này được quy định bằng các bit ADCON1 và CMCON1. ghi TRISA phải luôn bằng 1.
3.3.2 Port B và thanh ghi TRISB
Bảng 3.6 Các thanh ghi liên quan đến Port B Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được dùng bởi Port B
Port B gồm 8 chân RB0-RB7, việc ghi các giá trị nào vào thanh ghi
Việc đọc thanh ghi Port B sẽ đọc các trạng thái chân cảu Port B. Việc
GVHD: Ts. Hoàng Minh Trí
Trang: 11
TRISB sẽ quy định các chân của Port B là Input hay Output, 0 = Output, 1 = Input. ghi giá trị vào thanh ghi Port B sẽ thay đổi các trạng thái của các chân của Port B. Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low Voltage Programing Function là RB3/PGM, RB6/PGC, RB7/PGD. Việc thay đổi chức năng của ba thanh ghi này được đề cập trong phần các thanh ghi chức năng đặc biệt. Mỗi chân của Port B có một transistor kéo lên nguồn Vdd , chức năng này hoạt động khi bit RBPU OPTION<7> được xóa, chức năng này sẽ tự động tắt khi chân Port B được quy định là Input. Bốn chân RB4-RB7 có chức năng ngắt (interrupt) khi trạng thái chân Port thay đổi (khi chân Port được quy định là output thì chức năng này không hoạt động), giá trị chân Port được so sánh với giá trị được lưu lại trước đó,
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Bất cứ hoạt động truy xuất nào trên Port B sẽ xóa trạng thái sai lệch, kết khi có 2 trạng thái sai lệch giữa 2 giá trị này, ngắt sẽ xảy ra với cờ ngắt RBIF INTCON<0> bật lên, ngắt có thể làm cho vi điều khiển thoát khỏi trạng thái Sleep Mode. thúc ngắt và cho phép xóa cờ RBIF.
3.3.3 Port C và thanh ghi TRISC
Bảng 3.7 Các thanh ghi liên quan đến Port C Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi.
Port C gồm 8 chân từ RC0-RC7, việc ghi các giá trị nào vào thanh ghi
Việc đọc thanh ghi Port C sẽ đọc các trạng thái chân cảu Port C. Việc
TRISC sẽ quy định các chân của Port C là Input hay Output, 0 = Output, 1 = Input. ghi giá trị vào thanh ghi Port C sẽ thay đổi các trạng thái của các chân của Port C. Các chân của Port C được đa hợp với các chức năng ngoại vi. Khi các hàm chức năng ngoại vi được cho phép, thì cần quan tâm chặt chẽ tới giá trị các bit của thanh ghi TRISC. Một số chức năng ngoại vi sẽ ghi các giá trị 0 đè lên các bit của thanh ghi TRISC và mặc định các chân là ngõ vào. Do đó cần phải xem xét kỹ các tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho chính xác.
3.3.4 Port D và thanh ghi TRISD
Bảng 3.8 Các thanh ghi liên quan đến Port D Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được dùng bởi Port D
Port D gồm 8 chân từ RD0-RD7. Ngoài việc Port D được cấu trúc là một Port xuất nhập, nó còn có thể hoạt động như một cổng song song phụ tá (Parallel Slave Port) bằng cách đặt bit PSPMODE(TRIS<4>) lên 1, trong chế độ này buffer của ngõ vào là linh kiện TTL.
GVHD: Ts. Hoàng Minh Trí
Trang: 12
3.3.5 Port E và thanh ghi TRISE
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Bảng 3.9 Các thanh ghi liên quan đến Port E Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được dùng bởi Port E
Port E có 3 chân RE0/RD/AN5, RE1/WR/AN6, và RE2/CS/AN7 có thể
Ngoài ra, các chân của Port E còn được cấu hình như các ngõ vào
được cấu hình là các chân xuất nhập. Các chân của Port E có thể trở thành các chân điều khiển cho các cổng của vi xử lý khi bit PSPMODE(TRISE<4>) được đặt lên 1. Trong chế độ này, phải đảm bảo rằng các bit từ 0 đến 2 của thanh ghi TRISE phải được đặt lên 1 để các chân này được cấu hình như là chân ngõ vào. Analog, ở chế độ này khi đọc trạng thái các chân của Port E sẽ cho ta giá trị 0. Thanh ghi TRISE quy định chức năng xuất nhập của các chân Port E ngay cả khi nó được sử dụng là các ngõ vào Analog, khi đó các chân Port E phải là ngõ vào.
3.4 OSC1 và OSC2 – Dao động thạch anh cho vi điều khiển PIC:
Mỗi vi điều khiển hoạt động đều cần một xung clock nhất định. Hai
chân OSC1 và OSC2 (chân 13 và chân 14) cung cấp dao động cho vi điều khiển PIC hoạt động. PIC16F877A có thể hoạt động trong 4 chế độ dao động khác nhau Ở chế độ LP, XT, HS, thì dùng thạch anh nối vào 2 chân OSC1 và OSC2 để thiếp lập dao động. Việc mắc thêm các tụ lọc giúp tăng tính ổn định của bộ dao động, tuy nhiên giá trị của tụ không quá lớn hay quá nhỏ để dao động ổn định và thời gian khởi động ngắn. Với điện thế Vdd > 4.5V thì nên dùng tụ có trị số 33pF.
Đối với một số ứng dụng mà độ chính xác của thời gian không quan trọng, có thể dùng dao động RC như một giải pháp tiết kiệm. Tần số dao động được xác định bởi giá trị của điện trở R và tụ C. 3.5 MCLR (Master Clear):
Ngõ vào Master Clear (RESET PIC) trên chân số 1 của vi điều khiển PIC. Khi đưa MCLR xuống thấp, các thanh ghi bên trong vi điều khiển PIC sẻ được tải những giá trị thích hợp để khởi động lại hệ thống.
Hình .Bộ nhớ chương trìn h
GVHD: Ts. Hoàng Minh Trí
Trang: 13
Hình 3.9 Sơ đồ mạch Master Clear (Reset PIC)
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
3.6 Nguồn cấp cho PIC16F877A:
PIC16F877A vận hành với nguồn đơn 5V. Vdd (chân nguồn dương) được nối váo chân số 11 và 32 của PIC. Vss (chân mass) được nối vào chân số 12 và 31 của PIC. Cả 4 chân này phải được nối nguồn thì PIC mới hoạt động được.
3.7 Tổ chức bộ nhớ:
Có tất cả 3 khối bộ nhớ riêng biệt trong PIC16F877A bao gồm: Bộ nhớ
dữ liệu, Bộ nhớ chương trình, và Bộ nhớ EEPROM. PIC16F877A có bộ đếm chương trình (Program Counter) dài 13 bit có thể định địa chỉ cho 8K không gian bộ nhớ, 8K không gian bộ nhớ được chia làm 8 trang bộ nhớ. Mọi sự truy cập ngoài vùng không gian này sẽ không có tác dụng. Bộ nhớ chương trình còn có các ngăn xếp (stack) với 8 mức. Vector reset được đặt ở địa chỉ 0000h và vector ngắt ngoại vi được đặt ở địa chỉ 0004h, khi PIC được reset thì chương trình sẽ nhảy về vị trí vector reset và bắt đầu thực hiện tại đó. Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank 1, Bank 2, và Bank 3. Mỗi Bank có dung lượng 128 Bytes, bao gồm vùng RAM đa mục đích và vùng các thanh ghi chức năng đặc biệt SFRs (Special Function Registers). Các Bank này được lựa chọn bằng bit RP0 và RP1 ở thanh ghi Status.
Bảng 3.10 Lựa chọn Bank của Bộ nhớ dữ liệu trong PIC
Các vùng RAM đa mục đích (GPR – General Purpose RAM) có chiều rộng là 8 bit và được truy cập trực tiếp hoặc gián tiếp thông qua thanh ghi chức năng đặc biệt. Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm và các hàm chức năng ngoại vi để điều khiển hoạt động của các thiết bị. Các thanh ghi chức năng đặc biệt được chia làm 2 loại, loại thứ nhất dùng cho các chức năng ngoại vi (ngắt, so sánh, điều biến xung PWM,...) loại thứ hai dùng cho các chức năng bên trong của vi điều khiển (các phép tính số học, truy xuất dữ liệu,... ) Phần thông tin cơ bản về vi điều khiển PIC16F877A tạm gác ở đây, thông tin thêm về Các thanh ghi chức năng đặc biệt SFR, bộ định thời, Các chế độ ngắt, Bộ biến đổi ADC 10 bit, Sử dng EEPROM, Tập lệnh hợp ngữ của PIC,.. có thể tra cứu, tham khảo trong datasheet PIC16F87xA của Microchip (microchip.com). Các phần ứng dụng điều khiển dùng PIC16F877A sẽ được trình bày cụ thể trong các phần tiếp theo, ví dụ như việc truy xuất các port I/O, delay, Bộ biến đổi ADC, hay ngắt,... Có thể khái quát một điều là việc truy xuất dữ liệu trong PIC cần được thực hiện theo một trình tự như sau:
• Đầu tiên : Chọn và thiết lập các Bank 0, 1, 2, 3 trong bộ nhớ dữ liệu bằng các thanh ghi chức năng đăc biệt.
• Tiếp theo : Chọn và thiết lập thanh ghi TRISx để định hướng Port, thiết lập các bit điều khiển liên quan.
GVHD: Ts. Hoàng Minh Trí
Trang: 14
• Cuối cùng : Chọn và tác động các Port, hoặc các thanh ghi chức năng khác cần cho việc điều khiển.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
GVHD: Ts. Hoàng Minh Trí
Trang: 15
Thông tin thêm: Khi khai báo một biến int i; sẽ sử dụng 8 bit cho thanh ghi i ở trong RAM tại các thanh ghi đa mục đích của RAM. Có tổng cộng là 368 byte RAM trong các thanh ghi đa mục đích để sử dụng.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
GVHD: Ts. Hoàng Minh Trí
Trang: 16
Hình 3.11: Bản đồ cấu trúc bộ nhớ dữ liệu của PIC16F877A
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
CHƯƠNG 4: MÔ-ĐUN MÀN HÌNH TINH THỂ LỎNG LCD (LIQUID CRYSTAL DISPLAY)
4.1Giới thiệu chung:
Màn hình LCD có rất đa dạng và được ứng dụng trong nhiều lĩnh vực khác nhau từ công nghiệp cho đến dân dụng. Các LCD cấp thấp đơn sắc (có màu xám, xanh lá vàng, xanh dương,...), trung và cao cấp thì có các loại màn hình LCD theo các chuẩn VGA, ... với độ phân giải điểm ảnh cũng như độ phân giải màu cao, ... ngoài ra còn có nhiều loại LCD được ứng dụng làm các màn hình cảm ứng rất hay. Các loại LCD đơn sắc có thể tìm hiểu để úng dụng nghiên cứu dưới đây được thiết kế dưới dạng các mô-đun. Các mô-đun gồm phần màn hình LCD, chip điều khiển quy định các tập lệnh tác động lên LCD (mã lệnh dưới dạng các tín hiệu bit qua các chân điều khiển và chân dữ liệu của LCD), quy định quá trình khởi động LCD hoặc thiết lập liên kết các vùng màn hình LCD khác nhau, ... Việc còn lại vẫn đòi hỏi cần có một mạch điều khiển ngoài dùng vi xử lý để lập trình hiển thị và giao tiếp của LCD với các phần cứng khác (như đọc tín hiệu từ bàn phím, ma trận phím, ADC, tính toán, rồi hiển thị lên LCD, hoặc giao tiếp máy tính hiển thị lên LCD,...
• LCD 7 đoạn, LCD nền xám sáng, được thiết kế từng khu vực riêng, ... thường được dùng trong các máy tính (Calculator), các đồng hồ đeo tay, treo tường, ... . Chúng hiển thị theo các khu vực segment đã được thiết lập trước, hoặc hiển thị như LED 7 đoạn với 7 segment mỗi khu vực. Thường không có mô-đun
• LCD hiển thị ký tự theo dòng hay đồ họa ký tự, ... chúng hiển thị bằng cách chia màn hình ra làm nhiều ô, thể hiện được các ký tự chỉ đọc (ROM character - lưu trong DDRAM) hoặc các biểu tượng (thiết kế trong CGRAM) trên mỗi ô; độ phân giải của từng ô tùy kích thước do nhà thiết kế quy định. Riêng LCD đồ họa ký tự thì có khác đôi chút, như kích thước màn hình lớn hơn, các ô liền nhau như là ma trận điểm toàn màn hình, các ký tự thường có 2 bảng mã ASCII và 1 bảng mã chữ riêng (có kích thước ô lớn hơn, như tiếng Hoa, tiếng Nhật, ...); ngoài ra nó được mở rộng để hiển thị đồ họa (chế độ mở rộng – thiết kế hiển thị qua GDRAM).
• LCD đồ họa điểm ảnh (ma trận điểm toàn màn hình) thì hoàn toàn không có bảng mã nào trong bộ nhớ, cũng không có tập lệnh cụ thể để thao tác cho các mục đích truy cập mà hình LCD, nhưng có quy định các mã cơ bản để thiết lập các trạng thái tín hiệu cho các điểm ảnh, và có quy định quá trình khởi động cho LCD – đây là điều quan trọng đầu tiên khi điều khiển LCD. Từ những điều đó, mà lập ra các tổ hợp lệnh hay chương trình để kích hoạt các điểm ảnh tương ứng nhằm hiển thị đúng như mong muốn của chương trình.
GVHD: Ts. Hoàng Minh Trí
Trang: 17
Ngoài ra mỗi mô-đun LCD còn có các chân để chỉnh tín hiệu độ sáng màn hình (CONTRAST), đôi khi có thêm đèn nền (Back Light)tùy theo sự thiết lập của nhà thiết kế.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
H ình 4.1 Một số lo ại LCD tiêu biểu.
4.2 Mô-đun LCD hiển thị ký tự theo dòng LMB162ABC
a) Cấu trúc phần cứng
A) Các thông số cơ bản:
* Thông số hiển thị
+Chế độ hiển thị:
STN – màn hình đơn sắc, màu xanh lá vàng (yellow-green); tác động thuận (điểm sáng là màu màn hình), góc xem 6H (6 giờ), nhìn từ dưới lên.
+Phương thức điều khiển:
1/16 (duty) tác vụ – xử lý từng ô địa chỉ trên tổng số 16 ô của mỗi
đoạn trong thanh địa chỉ bộ nhớ DDRAM. [(*) – do tự hiểu] 1/5 (bias) độ thiên lệch – xử lý từng hàng một trên tổng số 4 hàng tối đa cho phép trong chip quy định (+1 hàng là để quay về vị trị đầu sau khi cuộn dọc) (trên thị trường có loại tối đa là 4 hàng – số cột tùy loại chip có thể là 16, 20, 40). [(*) – do tự hiểu]
* Kích thước: 80.0 x 36.0 x 15.8 MAX; chế độ 16 ô cột x 2 hàng.
B) Sơ đồ khối :
Hình 4.2 Sơ đồ khối mô-đun LCD LMB162ABC
A) Chức năng của các chân
GVHD: Ts. Hoàng Minh Trí
Trang: 18
Mô tả STT chân Tên chân Chức năng
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
1 Cung cấp nguồn, nối đất (0V) Vss Nguồn cấp
2 Vdd Cung cấp nguồn, nguồn dương (Vcc = +5V) Nguồn cấp
3 Vo Nguồn cấp Cung cấp nguồn điện áp tham chiếu điều chỉnh độ tương phản LCD
4 RS Ngõ vào
Chọn thanh ghi (Register Select) - RS=HIGH: Chế độ đọc - RS=LOW: Chế độ truyền lệnh
5 R/W Ngõ vào Bus điều khiển đọc/ghi (Read/Write Control Bus) - R/W=HIGH: Chế độ đọc - R/W=LOW: Chế độ ghi
6 Ngõ vào Bật dữ liệu (Data Enable) E
7 DB0
: : Ngõ vào/ra 14 DB7 Bus dữ liệu ba trạng thái hai chiều vào/ra - Chế độ giao tiếp 8 bit, DB0-DB7 đều được sử dụng - Chế độ giao tiếp 4 bit, DB4-DB7 được sử dụng, DB0-DB3 để hở
15 Cung cấp nguồn cho cực dương đèn nền BLA (+) Nguồn cấp
16 Cung cấp nguồn cho cực âm đèn nền BLK (– ) Nguồn cấp
Bảng 4.3 Chức năng của các chân LCD LMB162ABC
B) Giá trị cho phép
Vdd: 0V ~ 6V [Vss=0V]
[Vss=0V]
-30 (cid:198) 80OC Điện áp cấp nguồn: Điện áp tín hiệu ngõ vào: Vin: 0V ~ Vdd (V) Nhiệt độ khi hoạt động: Nhiệt độ khi lưu trữ: Thđ: -20 (cid:198) 70OC Tlt:
C) Đặc trưng về điện
Điện thế hoạt động: Vdd = 5V [Min=4.7V ~ Max=5.3V] (cid:198) Vdd Điện thế ngõ vào mức cao: VIH=0.8Vdd (cid:198) RS, R/W, E, DB0-DB7 Điện thế ngõ vào mức thấp: VIL=Vss~0.5V (cid:198) RS, R/W, E, DB0-DB7 Điện thế ngõ ra mức cao: VOH=0.7Vdd ~ Vdd (cid:198) RS, R/W, E, DB0-DB7 Điện thế ngõ ra mức thấp: VOL=Vss~0.5V (cid:198) RS, R/W, E, DB0-DB7 Dòng hoạt động: Idd = 1.3mA [Max=3mA] (cid:198) Vdd Điện áp duy trì đèn nền 4.9V, dòng duy trì đèn nền tối đa 150mA
Các thông số khác có thể tham khảo thêm ở datasheet LMB162ABC. Chỉnh độ tương phản của LCD bằng cách dùng một biến trở VR 5K hay 10K cũng được, nối lên nguồn dương +5V, và chỉnh cho đến khi có độ sáng vừa phải.
GVHD: Ts. Hoàng Minh Trí
Trang: 19
b) Tập lệnh
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Để điều khiển mô-đun LCD một cách chính xác và hiển thị bình thường, hãy dùng những thiết lập cơ bản sau: (Xem thêm trong Bảng mô tả bên dưới)
N=1, chế độ hiển thị được cả 2 dòng F=0, Font chữ 5x8 chấm điểm ở mỗi ô cột D=1, bật hiển thị
Những thiết lập này sẽ tác động đến mô-đun LCD khi khởi động Khi cấp nguồn Vdd và Vss , mô-đun LCD sẽ tự động chạy reset trong 50ms. Sau khi reset, mô-đun LCD sẽ có trạng thái sau:
N=0, chế độ hiển thị chỉ 1 dòng DL=1, chế độ giao tiếp 8 bit F=0, Font chữ 5x8 chấm điểm ở mỗi ô cột D=0, tắt hiển thị C=0, tắt con trỏ B=0, tắt chớp nháy con trỏ I/D=1, tăng theo cấp +1 S=0, không có dịch
Reset có thể không tạo thiết lập cơ bản N=1, F=0, D=1. Trong mô-đun này có 2 khu vực nhớ chính để hiển thị là:
• CGRAM – Bộ nhớ RAM để thiết kế ký tự (Character Generator RAM)
o Kiểu ký tự 5x8 chấm (ngang 5, cao 8) o Được truy xuất qua DB4 – DB0, còn DB7 – DB5 không dùng. o Mã ký tự do người dùng định nghĩa. Có 8 địa chỉ 00h – 07h, để định nghĩa các mã ký tự, tức có thể tạo được 8 ký tự (font 5x8 chấm điểm).
• DDRAM – Bộ nhớ hiển thị dữ liệu (Display Data RAM)
o Kiểu ký tự 5x8 chấm (ngang 5, cao 8) o Các ký tự ROM (bộ nhớ chỉ đọc) (mã 10h – FFh) được viết vào DDRAM để hiển thị, các ký tự do người dùng định nghĩa trong CGRAM 00h – 07h cũng được sử dụng. Tương ứng, việc gọi mã ký tự 08h – 0Fh cũng sẽ gọi ra các ký tự do người dùng định nghĩa.
GVHD: Ts. Hoàng Minh Trí
Trang: 20
Tức là bộ nhớ DDRAM sẽ quản lý tất cả nội dung dữ liệu để hiển thị, dù đó là ký tự có sẵn trong ROM hay do người dùng thiết kế trong CGRAM.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Hình 4.4 Bản đồ địa chỉ CRRAM
Hình 4.5 Bản đồ địa chỉ DDRAM
Nhìn vào hình ta thấy, DDRAM có tổng cộng 2 dãy địa chỉ để hiện thị dữ liệu là: 00h-0Fh và 40h-4Fh, tương ứng cho hiển thị 2 hàng 16 ô cột ký tự được hiển thị trên màn hình
• Hàng 1 địa chỉ 00h-0Fh, có tổng cộng 16 cột • Hàng 2 địa chỉ 40h-4Fh, có tổng cộng 16 cột
Như vậy để truy cập đến ô nào của hàng nào, ta cần biết địa chỉ của ô cột ở hàng đó.
GVHD: Ts. Hoàng Minh Trí
Trang: 21
Ví dụ: Để hiện thị được ký tự ‘A’ ở ô 1 hàng 1 (ô đầu tiên), thì truy cập và đưa dữ liệu ký tự ‘A’ vào địa chỉ 00h của DDRAM - đây cũng là địa chỉ mặc định của DDRAM sau khi LCD khởi động.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Cần thấy rằng các điều khiển của LCD hoạt động nhưng một “người gác cổng” mà điển hình như DDRAM ở trên. Mỗi ký tự cần hiển thị phải được thiết kế hoặc lưu sẵn ở một nơi (ROM, CGRAM), khi cần hiển thị thì đưa vào DDRAM mới hiển thị được – đó là quy định. Ngoài ra, trong một giao thức đọc/ghi dữ liệu của LCD, trước tiên cần bật/tắt tín hiệu điều khiển phù hợp, sau đó đưa dữ liệu đến “ngõ” quy ước, tiếp theo là bật/tắt các tín hiệu điều khiển tại “ngõ” đó như một “người gác cổng”, thì dữ liệu mới lưu chuyển. Sau khi dữ liệu lưu chuyển qua “ngõ” đó rồi thì phải đóng “ngõ” đó lại (như hành động hạ thanh chắn ngang xuống sau khi qua cổng kiểm soát vậy).
Bảng 4.6 Các lệnh hiển thị LCD LMB162ABC
GVHD: Ts. Hoàng Minh Trí
Trang: 22
c) Lưu đồ khởi động
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Tra cứu các mã lệnh ở Bảng 4.6 trang trước để rõ hơn. Ví dụ Port B là Port dữ liệu, khi gán mã lệnh thì đưa dữ liệu đó ra Port B. Các chân tín hiệu điều khiển RS, R/W, E được điều khiển riêng.
o Thiết lập mở các cổng điều khiển
(cid:131) RS = 0 : Bật chế độ truyền lệnh
Bật chế độ ghi Tắt dữ liệu : :
(cid:131) R/W = 0 (cid:131) E = 0 (cid:198) Sẵn sàng cho việc ghi lệnh.
o Đưa con trỏ về đầu bộ nhớ dữ liệu DDRAM
(cid:131) Gán giá trị 2 hoặc 3 cho Port dữ liệu (0x02 hoặc 0x03) (cid:131) Bật cổng cho dữ liệu qua E=1, delay 1 chút chờ dữ liệu qua.
(cid:131) Đóng cổng sau khi dữ liệu đã qua E=0, delay cổng đóng. (cid:198) Có thể lặp lại vài lần như vậy để đảm bảo LCD đã cập nhật.
o Thiết lập các giá trị ban đầu cho LCD như đã đề cập ở phần trước:
(cid:131) DL=1 (0x30) : Chế độ giao tiếp 8bit, Port dữ liệu DB0- DB7 (xem mục số 6 bảng mã lệnh)
(cid:131) D=1 (0x0c) : Bật màn hình (mục 4 bảng mã lệnh) (cid:131) Xóa dữ liệu nếu có trong DDRAM (0x01) (mục 1)
GVHD: Ts. Hoàng Minh Trí
Trang: 23
d) Sơ đồ kết nối ứng dụng với vi điều khiển
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Hình 4.7 Sơ đồ kết nối PIC16F877A với LCD LMB162ABC
4.3 Lưu đồ khởi động:
Tra cứu các mã lệnh ở Bảng 4.6 ở những trang trước để rõ hơn. Ví dụ Port B là Port dữ liệu, khi gán mã lệnh thì đưa dữ liệu đó ra Port B. Các chân tín hiệu điều khiển RS, R/W, E, hay PSB, /RST được điều khiển
riêng. Dưới đây là khởi động chế độ cơ bản, giao tiếp song song, chế độ 8 bit.
o Chọn chế độ song song bật PSB=1. o Thiết lập mở các cổng điều khiển
GVHD: Ts. Hoàng Minh Trí
Trang: 24
(cid:131) RS = 0 Bật chế độ truyền lệnh :
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Bật chế độ ghi Tắt dữ liệu : :
(cid:131) R/W = 0 (cid:131) E = 0 (cid:198) Sẵn sàng cho việc ghi lệnh.
o Đưa con trỏ về đầu bộ nhớ dữ liệu DDRAM
(cid:131) Gán giá trị 2 hoặc 3 cho Port dữ liệu (0x02 hoặc 0x03) (cid:131) Bật cổng cho dữ liệu qua E=1, delay 1 chút chờ dữ liệu qua.
(cid:131) Đóng cổng sau khi dữ liệu đã qua E=0, delay cổng đóng. (cid:198) Có thể lặp lại vài lần như vậy để đảm bảo LCD đã cập nhật.
o Thiết lập các giá trị ban đầu cho LCD như đã đề cập ở phần trước:
(cid:131) DL=1 (0x30) : Chế độ giao tiếp 8bit, Port dữ liệu DB0- DB7 (xem hàng thứ 6 bảng mã lệnh cơ bản – Function Set)
(cid:131) D=1 (0x0c) : Bật màn hình (hàng thứ 4 bảng mã lệnh cơ
bản)
(cid:131) Xóa dữ liệu nếu có trong DDRAM (0x01) (hàng thứ 1)
4.4 Sơ đồ kết nối ứng dụng với vi điều khiển:
GVHD: Ts. Hoàng Minh Trí
Trang: 25
Hình 4.7 Sơ đồ kết nối PIC16F877A với LCD LM3033B-0BR2
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
CHƯƠNG 5: TRÌNH BIÊN DỊCH PCWH 3.227 SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C (CCSC):
5.1 Giới thiệu chung:
Dưới đây là khung cửa sổ chính của chương trình CCSC
Việc cài đặt chương trình tạm thời không đề cập ở đây, có thể tham khảo thêm
Trình biên dịch PCWH sử dụng ngôn ngữ lập trình C còn gọi là chương trình CCSC, gồm: PCB, PCM, và PCH. Phiên bản hiện dùng là 3.227 có nhiều hàm và chức năng mới cập nhật, lập trình cho các họ PIC 12 bit, 14 bit, 16 bit. thông tin trên các diễn đàn như diendandientu.com hay picvietnam.com Giả sử quá trình cài đặt chương trình mặc định đã hoàn tất và không bị giới hạn sử dụng. Để bắt đầu chương trình, nhấp trái chuột lên biểu tượng Pcw bên cạnh để kích hoạt.
Cửa sổ chương trình xuất hiện như trên. Vào File – New để tạo một chương
Khi soạn thảo chương trình, nhớ chọn đúng loại PIC đang dùng bằng cách chọn
GVHD: Ts. Hoàng Minh Trí
Trang: 26
trình mới. ô có “Microchip 14 bit” ở góc trên bên phải màn hình. Chọn “Microchip 12 bit” để viết chương trình cho PIC 12 bit, “Microchip 14 bit” để viết chương trình cho PIC 14 bit (như PIC16F877A chẳng hạn) và “Microchip 18 bit” để viết chương trình cho PIC 18 bit (như dsPIC chẳng hạn).
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
Sau khi viết chương trình xong, nhấn F9 hay biểu tượng Compile như hình trên để biên dịch. Chương trình sẽ thông báo các tình trạng cho ta biết, như có lỗi nào sai về cú pháp khi viết chương trình không, hay có cảnh báo nào không, và chương trình chiếm không gian bộ nhớ như thế nào,...
là một mẫu Dưới tham bằng đây dụ để ví Hình trên mô tả quá trình biên dịch của chương PCWH (CCSC). Kết quả cho thấy chương trình tốt, không lỗi hay cảnh báo nào, chương trình chiếm 2% của 368 bytes của bộ nhớ RAM, và chiếm 2% của 256 bytes của bộ nhớ ROM. hình khảo.
GVHD: Ts. Hoàng Minh Trí
Trang: 27
CCSC dùng ngôn ngữ C trực quan nên có nhiều thuận lợi hơn ngôn ngữ ASSEMBLER (Hợp ngữ). Tuy nhiên trong một số trường hợp, CCSC có thể sinh mã chạy sai (tham khảo cải tiến trên web của CCS), hoặc sinh mã không theo ý muốn (dù
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
không sai, ví dụ như, sinh nhiều mã lệnh không quan trọng khi thực thi hàm ngắt) làm chậm tốc độ thực thi chương trình, có thể ảnh hưởng nhiều đến việc xử lý đòi hỏi tốc độ cao như điều biến xung PWM,... Nhưng trong CCSC vẫn cho phối hợp ASSEMBLY cùng với C, nên chương trình sẽ rất uyển chuyển, kết hợp được sức mạnh của cả hai ngôn ngữ, dù việc phối hợp này có thể làm cho việc viết chương trình trở nên khó khăn hơn.
CCSC cung cấp các công cụ tiện ích giám sát hoạt động của chương trình như: • C/ASM List : Cho phép xem mã ASM của file biên dịch (View – C/ASM List), giúp ích cho việc quản lý mã, biết được mã sinh ra và chạy như thế nào, là công cụ rất quan trọng giúp gỡ rối chương trình và nắm bắt được hoạt động của nó.
• Symbol Map : Hiển thị bộ nhớ cấp phát cho từng biến, giúp quản lý bộ nhớ các biến của chương trình. (View - Symbol Map).
• Call Tree : Hiển thị việc phân bổ bộ nhớ. .v..v... Xem thêm trong Menu View của chương trình. Ngoài ra còn có thêm nhiều công cụ hữu dụng khác trong Menu Tools của chương trình, tuy nhiên nên cẩn thận khi sử dụng, một số công cụ đòi hỏi nhiều kiến thức hơn về nó.
5.2 Cách Viết một chương trình trong CCSC:
// Thạch anh dao động tần số
Chương trình con //
...
Khai báo ngắt khi có thay đổi ở Port //
...
GVHD: Ts. Hoàng Minh Trí
Trang: 28
Cấu trúc chương trình trong CCSC có các phần chính tương tự lập trình C như • Khai báo các chỉ thị tiện xử lý • Khai báo các biến, mảng • Khai báo các hàm, các thủ tục tự tạo (chương trình con) • Chương trình chính ... Cấu trúc chương trình #include <16F877A.h> #device *=16 ADC=10 #use delay(clock=4000000) cao 4 MHz ... int16 a,b; void ctr_con1() { } #INT_RB B void xu_ly_ngat_b() { }
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
// Chương trình chính
... void main() { }
DIỄN GIẢI
• Khai báo các chỉ thị tiền xử lý
#INCLUDE
(cid:198) Khai báo chỉ dẫn tới các tập tin tiêu đề .h , .c có chứa các thủ tục, các hàm cần cho chương trình. Khai báo này luôn đặt ở dòng đầu tiên. Tập tin này nằm ở trong các thư mục chuẩn của chương trình đã cài đặt (như Devices, Drivers, Examples), hoặc nằm cùng cấp với tập tin hiện đang viết chương trình, nếu không thì phải ghi rõ cả đường dẫn đến tập tin đó.
Ví dụ:
#include <16F877A.h>
#include
#DEVICE chip option
(cid:198) Khai báo thiết bị sử dụng. chip
Là tên vi điều khiển PIC được sử dụng, không cần dùng tham số này nếu đã khai báo tên chip ở #include
option
*=5 – dùng poiter 5 bit (cho tất cả các loại PIC) *=8 – dùng pointer 8 bit (cho PIC 14 bit, PIC 18 bit) *=16 – dùng pointer 16 bit (cho PIC 14 bit, PIC 18 bit)
*=x ADC=x
Chỉ ra sử dụng ADC x bit (8,16,32,… bit tuỳ chip). Khi dùng hàm read_adc() , chương trình sẽ trả về giá trị theo x bit.
ICD=true
Dùng để tạo mã tương thích debug phần cứng Microchip.
Khai báo pointer 8 bit *=8 chỉ sử dụng được tối đa 256 byte RAM cho tất cả biến của chương trình, trong khi có tới 368 byte RAM, nên sử dụng không hết RAM.
Khai báo pointer 16 bit *=16 sẽ sử dụng được hết số RAM của vi điều khiển PIC (216 = 1024 > 368).
Chỉ nên dùng duy nhất một khai báo #DEVICE cho cả pointer và ADC. Ví dụ:
GVHD: Ts. Hoàng Minh Trí
Trang: 29
#include <16F877A.h> #device *=16 ADC=10
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
#USE DELAY(CLOCK=SPEED)
(cid:198) Khai báo tần số hoạt động để phục vụ cho việc tính toán delay trong chương trình. speed
Là giá trị OSC (tần số dao động) mà vi điều khiển dùng, đơn vị tính bằng Hz.
Ví dụ:
#use delay(clock=4000000) // Tần số dao động cho PIC là 4 MHz
4 chu kỳ xung clock
= 4*(1/4000000) 1 us (micô giây) = =
Ta có: 1 chu kỳ lệnh Nếu dùng #use delay(clock=20000000) (20 MHz) thì mỗi chu kỳ lệnh là 0.2us. Chỉ khi có chỉ thị này thì chương trình mới dùng được các hàm delay như: daley_cycles(), delay_us(),delay_ms().
#FUSES option
(cid:198) Khai báo các yếu tố đặc trưng bảo vệ của thiết bị PIC sử dụng như : loại bộ dao động, có bảo vệ mã hay không, có WDT không,…
option
: : : Dao động thạch anh tần số cao. Không bảo vệ mã Không có giám sát thời gian.
HS NOPROTECT NOWDT …
Chi tiết thêm có thể tra cứu trong HELP > Preprocessor cmds
#BYTE id=x
(cid:198) Dùng để gán tên biến id cho địa chỉ thanh ghi x, sau đó có thể gán hay kiểm tra địa chỉ thanh ghi x chỉ cần dùng biến id, không tốn thêm bộ nhớ.
id
Tên gợi nhớ chức năng thanh ghi ở địa chỉ đó.
Giá trị id theo giá trị thanh ghi và thay đổi do theo hoạt động của chương trình. Không nên dùng id cho thanh ghi đa mục đích, vì CCSC có thể dùng các thanh ghi này bất kỳ lúc nào cho chương trình, nếu muốn dùng riêng phải khai báo #locate.
#byte port_b=0x06
Ví dụ: Tên biến tự đặt, có thể đặt là cong_b, port_b hay bất kỳ tên gợi nhớ nào. Khi đặt các tên biến trùng nhau cho việc định nghĩa thì khi biên dịch chương trình, CCSC sẽ cảnh báo.
GVHD: Ts. Hoàng Minh Trí
Trang: 30
0x06 là địa chỉ thanh ghi Port B của PIC16F877A. Nếu muốn gán giá trị nào đó, ví dụ 120 cho Port B, chỉ cần dùng: port_b=120;
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
#BIT id=x.y
(cid:198) Tạo 1 biến đặt ở vị trí y của byte x id : Tên biến x : Biến số có độ dài *8 bit (8, 16, 32 bit tùy chip) hay hằng số địa chỉ của thanh ghi.
y : Vị trí bit y trong thanh ghi x. Khai báo này tiện lợi cho việc kiểm tra hay gán giá trị cho bit của thanh ghi. Không tốn bộ nhớ, do id chỉ là địa chỉ danh định đại diện cho bit chỉ định ở biến x, thay đổi giá trị id (0 hay 1) sẽ thay đổi giá trị bit y, tương ứng thay đổi giá trị x.
#bit co_timer0=0xb.2
Ví dụ 1: Bit cờ ngắt timer 0 ở địa chỉ bit 2 của 0xb (16F877A). Nếu gán co_timer0=0; thì sẽ xóa cờ ngắt timer 0. Ví dụ 2:
int8 a=20; #bit b=a.4 // a=00010100b // địa chỉ bit 4 của a
Nếu gán b=0; thì bit 4 của a=0 (cid:198) a= 00000100b= 4 Lưu ý không được dùng hàm if(0xa.4) … trực tiếp, mà phải gán qua biến như trên mới dùng được, như là if(b) … .
Ví dụ 3:
#byte cong_b=0x06; #bit b0=cong_b.1 #bit b1=cong_b.1 // địa chỉ Port B // b0 – bit 0 c ủa Port B // b1 – bit 1 c ủa Port B
#LOCATE id=x
(cid:198) Làm việc như #byte nhưng có thêm chức năng bảo vệ không cho CCSC sử dụng địa chỉ đó vào mục đích khác.
#locate t=0x020 // địa chỉ thanh ghi đa mục đích
Ví dụ 1: Hay
int8 t; #locate t=0x020
Sử dụng #locate để gán biến cho 1 dãy địa chỉ kề nhau (cặp thanh ghi) sẽ tiện lợi hơn thay vì dùng 2 byte với #byte.
Ví dụ 2: Thanh ghi CCP1 có giá trị là một cặp thanh ghi 0x15 (byte thấp) v à 0x16 (byte cao). Để gán giá trị cho CCP1 :
GVHD: Ts. Hoàng Minh Trí
Trang: 31
int16 ccp1; #locate ccp1=0x15
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
ccp1=1133; // ccp1 = 0000 0100 0110 1101 b
Khi gán giá trị cho ccp1, chương trình sẽ tự động gán vào cả 2 thanh ghi. Ví dụ: Thanh ghi 0x15 sẽ có giá trị byte thấp là 0110 1101 Thanh ghi 0x16 sẽ có giá trị byte cao là 0000 0100
#DEFINE id text
(cid:198) Dùng định nghĩa giá trị cho biến id là một chuỗi hay số text : Có thể là chuỗi ký tự hay số Ví dụ:
int a; #define b 8 a=a+b; // Tương tự như lệnh a=a+8;
#DEFINE id(x,y...) text
(cid:198) Dùng định nghĩa giá trị cho biến id là một chuỗi hay số, kết hợp gán biến nội.
Ví dụ:
//
a = 0000 0001 b //
// b(x) = x<<2 – Dịch sang trái 2 bit Tương tự như lệnh a=a<<2; lúc đó a=4 = 0000 int a=1; #define b(x) (x<<2) a= b(a); 0100 b
#ASM và #ENDASM
(cid:198) Cho phép đặt một đoạn mã ASM ở giữa 2 chỉ thị này, riêng chỉ thị này chỉ đặt trong 1 cấu trúc của hàm hay chương trình con, không đặt chung ở khu vực khai báo chỉ thị tiền xử lý. CCSC định nghĩa sẵn 1 biến 8 bit _RETURN_ để gán giá trị trả về cho hàm từ đoạn mã ASSEMBLY
Ví dụ:
int ctr_a(int n) {
int c; #asm … _return_ #endasm
}
Các chỉ thị tiền xử lý là cơ bản, thường dùng. Các chỉ thị tiền xử lý khác có thể tra cứu trong HELP > Preprocessor cmds của chương trình.
GVHD: Ts. Hoàng Minh Trí
Trang: 32
Tương tự cũng có thể tra cứu thêm nhiều thông tin bổ ích khác trong HELP này. Cụ thể xem hình dưới đây và chọn các thông tin hướng dẫn phù hợp.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
• Khai báo các biến, mảng
Cách khai báo các biến và mảng tương tự lập trình ngôn ngữ C đã học. Cấu
// số a là 8 bit dấu (bit 7 là bit dấu) có giá trị từ –
// số b là 8 bit không dấu, có giá trị từ 0 đến +255
Khai báo biến số: signed int8 a; 128 đến +127 int8 b; int16 a,b,c; ...
Khai báo hằng số: (phải có tham số CONST nằm giữa kiểu dữ liệu và tên hằng)
int8 const a=23; // a là một hằng số có giá trị là 23
Khai báo mảng : int16 a[125]; Phải có tham số CONST giữa kiểu dữ liệu và tên mảng nếu là mảng hằng số.
// a có 5 phần tử, chỉ số mảng bắt đầu int8 const a[5]={1,2,3,4,5}; từ a[0]=1
Các khai báo mảng vượt quá có số phần tử vượt quá giới hạn đều không hợp lệ,
GVHD: Ts. Hoàng Minh Trí
Trang: 33
Ví dụ: int8 const a[256]={...}; // hợp lệ : 256 (phần tử) x 1 (byte) = 256 Một mảng hằng số có kích thước tối đa tùy thuộc loại chip vi điều khiển. Đối với PIC 14 bit (16F877A) thì chỉ được khai báo 1 mảng hằng số có kích thước tối đa là 256 byte. khi đó chương trình sẽ thông báo lỗi. (byte)
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
int16 const b[128]={...}; // hợp lệ : 128 (phần tử) x 2 (byte) = 256
int16 const c[256]={...}; // không hợp lệ : 256 x 2 = 512 (byte) > 256
Nếu đánh không đủ số phần tử vào trong ngoặc kép như đã khai báo, các phần
Truy xuất giá trị vượt quá chỉ số mảng khai báo sẽ làm chương trình chạy vô
Khai báo 1 biến mảng với kích thước tùy thuộc khai báo con trỏ (pointer) trong
(byte) byte tử còn lại sẽ mặc định có giá trị là 0. tận. #device và loại vi điều khiển. Đối với PIC 14 bit (16F877A), nếu khai báo pointer 8 bit (#device *=8) thì không gian bộ nhớ chỉ có 256 byte cho tất cả các biến chương trình bất chấp PIC đang dùng có hơn 256 byte RAM; và biến mảng có kích thước tối đa tùy thuộc độ phân mảnh bộ nhớ, với PIC16F877A có 368 byte RAM, thường thì kích thước không quá 60 byte, có khi dưới 40 byte, nếu khai báo lớn hơn sẽ gặp lỗi không đủ bộ nhớ (Not enough RAM for all variable) trong khi thực sự PIC còn rất nhiều RAM. Nếu khai báo 16F877A với pointer 16 bit (#device *=16), không gian bộ nhớ sẽ là đầy đủ (trừ đi ít RAM do CCSC chiếm làm biến tạm), dùng đầy đủ bộ nhớ 368 byte RAM, nhưng kích thước mảng cũng không quá 60 byte.
// biến mảng a 126 phần tử (0–125), kích thước 252 byte Ví dụ: int16 a[125]; RAM.
• Các cấu trúc lệnh
Các cấu trúc lệnh thường dùng bao gồm: if..., if...else, for..., while..., switch... Tất cả có thể tham khảo trong HELP của chương trình ở HELP > Statements
• Các hàm xử lý bit hay dùng
bit_set(var,bit)
bit_clear(var,bit)
(cid:198) Dùng xóa về 0 (clear) hay đặt lên 1 (set) được chỉ định bởi vị trí bit trong – biến 8, 16, 32 bit bất kỳ
biến var. bit
var – vị trí bit được xóa về 0 (clear) hay đặt lên 1 (set). bit 0 – 7 (đối với biến 8 bit) bit 0 – 15 (đối với biến 16 bit) bit 0 – 31 (đối với biến 32 bit)
Hàm không trả về trị. Ví dụ:
GVHD: Ts. Hoàng Minh Trí
Trang: 34
int x; x=11; // x=1011b bit_clear(x.1);// giá trị x thay đổi thành x=1001b sau khi xóa bit 1 của biến x.
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
bit_test(var,bit)
(cid:198) Dùng kiểm tra vị trí bit trong biến var. Hàm trả về giá trị 0/1 là giá trị bit đó trong biến var. Ví dụ:
Giả sử có biến x 12 bit đếm từ 0 lên và muốn kiểm tra xem có lớn hơn 4096 (212) không, thì hàm if(x>=4096) … mất khoảng 5 us. Trong 1 vòng l ặp, việc kiểm tra thường xuyên như vậy sẽ làm mất thời gian đáng kể. Để tối ưu, chỉ cần dùng if(bit_test(x,12)) … chỉ mất khoảng 0.4 us đối với thạch anh dao động 20 MHz.
Kiểm tra đếm lên tới những giá trị đặc biệt (như 2i), dùng hàm này rất tiện lợi.
• Các toán tử thường dùng:
+, -, *, /, ++, --, +=, -=, *=, /=, ==, &, &=, |, |=, !=, >, <, >=, <=, ... >>, <<, <<= >>= dịch phải, dịch trái, ...
Ví dụ:
x = 0000 0001 b //
int x=1;
int y=4;
x<<1;
x<<=y; //
// lúc này x = 0000 0010b
x=x< Các kiểu dữ liệu, khai báo biến, hằng, mảng, các hàm xử lý bit khác và các
toán tử, … có thể tra cứu trong HELP của chương trình: HELP > Operators,
Data types, … • Các hàm xử lý xuất nhập I/O output_high()
input() output_X() output_bit()
… output_low()
input_X()
output_low(pin)
output_high(pin)
(cid:198) Dùng thiết lập mức 0 (low, 0V), mức 1 (high, 5V) cho chân IC.
pin : chỉ vị trí chân của Port
Hàm này sẽ đặt pin làm ngõ ra một cách tự động, thực ra là nhiều thao tác gộp lại (xem cụ thể trong mã ASM) Hàm này dài từ 2 đến 4 chu kỳ máy.
Nếu dùng để xuất xung, có thể khai báo tiền xử lý #use fast_io (sử dụng truy
xuất nhanh I/O), sau đó phải tự set_tris_X(value) để định hướng xuất nhập, rồi mới
dùng hàm output như trên. Ví dụ: main()
{ GVHD: Ts. Hoàng Minh Trí Trang: 35 while(true) *//dieu kien vong lap// Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh { output_low(pin_b0);
delay_ms(250);
output_low(pin_b0);
delay_ms(250); } } : tên chân output_bit(pin,value)
(cid:198) Hàm này cũng xuất giá trị 0/1 cũng như 2 hàm trên.
pin
value : giá trị 0/1
Thường dùng nó khi giá trị tuỳ thuộc giá trị biến 1 bit nào đó, hay muốn xuất đảo của giá trị ngõ ra trước đó. Ví dụ: int1 x; // mặc định x=0
main()
{ while(true)
{ output_pin(pin_b0,!x);
delay_ms(250); } } Chương trình trên xuất xung vuông chu kỳ 500ms, duty=50% – tức là mỗi chu kỳ gồm 2 giai đoạn (100% / 50%), kết thúc 1 chu kỳ có 2 lần chuyển trạng thái. : tên port có trên chip. output_X(value)
(cid:198) Hàm này xuất 1 giá trị 8 bit ra Port. Tất cả chân của Port đó đều là ngõ ra.
X
value : là giá trị 1 byte
Ví dụ: // xuất giá trị 11010100 ra Port B output_b(212);
input_X() : tên port có trên chip. (cid:198) Hàm này trả về giá trị 8 bit là giá trị đang hiện hữu của Port đó.
X
value : là giá trị 1 byte.
Ví dụ: int m=0;
m=input_b(); // Ví dụ Port B hiện đang có giá trị là 240.
// Sau lệnh này m thay đổi giá trị thành 240. GVHD: Ts. Hoàng Minh Trí Trang: 36 set_tris_X(value) Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh (cid:198) Hàm này định nghĩa chân I/O cho 1 Port là ngõ vào hay ra, còn gọi là định hướng xuất nhập (I/O) Port. : tên Port ({A,B,C,D,E}) X
value : là giá trị toàn Port, được ghi theo mã hexa 0x.., mã nhị phân (ví dụ
00000101), hoặc thập phân (như 255 – tức là 0xff). Nếu chỉ ghi 1 giá trị duy nhất như
1 hay 0, tất cả các chân trên Port đó đều có cùng giá trị là 1 hay 0. Với bit 1 – input,
bit 0 – output. Chỉ dùng khi khai báo truy cập nhanh I/O ở tiền xử lý (#use fast_io), vì lúc đó CCSC không tự động thiết lập hoạt động định hướng Port, mà để mặc định. Ví dụ: set_tris_B(0xf0); // RB7-RB4 của Port B là ngõ vào, RB3-RB0 là ngõ ra. set_tris_B(240); // RB7-RB4 của Port B là ngõ vào, RB3-RB0 là ngõ ra. set_tris_B(1); // Tất cả các chân của Port B đều là ngõ vào (input).
Các hàm tác động bit, Port khác có thể tham khảo thêm trong HELP của chương trình. • Các hàm DELAY Đề sử dụng các hàm delay, cần khai báo tiền xử lý ở đầu chương trình.
Ví dụ: #use delay(clock=4000000) // tần số dao động cho PIC là 4MHz Hàm delay không sử dụng bất kỳ timer nào. Chúng thực ra là một nhóm lệnh
ASM để khi thực thi từ đầu tới cuối thì xong khoảng thời gian được quy định delay.
Tùy thời gian delay yêu cầu dài ngắn mà CCSC sinh mã phù hợp, có khi là vài lệnh
NOP cho thời gian rất nhỏ, hay 1 vòng lặp NOP, hoặc gọi tới 1 hàm phức tạp trong
trường hợp delay dài. Các lệnh đó không ảnh hưởng tới chương trình về mặt dữ liệu
và giá trị các biến, chỉ là duy trì một trạng thái đủ lâu để đáp ứng thời gian delay được
yêu cầu. Nếu trong thời gian delay lại xảy ra ngắt thì thời gian thực thi ngắt không
tính vào thời gian delay, xong ngắt nó quay về chạy tiêp các dòng mã cho tới khi xong
hàm delay. Do đó thời gian delay sẽ không đúng nếu có ngắt xảy ra trong lúc delay. Có 3 hàm phục vụ do CCSC thiết lập delay_cycles(count) count - hằng số có giá trị 0 – 255, là số chu kỳ lệnh
(cid:198) Hàm dùng delay 1số chu kỳ lệnh cho trước. Hàm không trả về trị. delay_us(time) time - là biến số thì có giá trị 0 – 255, là hằng số thì có giá trị 0 – 65535.
(cid:198) Hàm cho phép delay theo đơn vị us (micrô giây). Hàm không trả về trị. delay_ms(time) GVHD: Ts. Hoàng Minh Trí Trang: 37 time - là biến số thì có giá trị 0 – 255, là hằng số thì có giá trị 0 – 65535. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh (cid:198) Hàm cho phép delay theo đơn vị ms (mili giây). Hàm không trả về trị.
Ví dụ: int a=215;
delay_us(a);
delay_us(4356);
delay_ms(2500); // delay 215 us
// delay 4356 us = 4.356 ms
// delay 2500 ms = 2.5 s (gi ây) • Xử lý ADC - biến đổi Analog - Digital PIC có nhiều chân phục vụ xử lý ADC với nhiều cách khác nhau. Để dùng
ADC, phải khai báo tiền xử lý #device và cho biết dùng ADC bao nhiêu bit (tuỳ chip)
Cần lưu ý là 1 vi điều khiển hỗ trợ ADC 10 bit thì giá trị gán vào luôn là 10 bit,
nhưng chia cho 4 còn 8 bit. Do đó 1 biến trở cấp cho ngõ vào ADC 10 bit sẽ rất nhạy
hơn so với ADC 8 bit (vì 2 bit cuối có thay đổi cũng không ảnh hưởng giá trị 8 bit cao
thấp và do đó kết quả 8 bit ADC ít thay đổi). Nếu chương trình có chế độ kiểm tra tính
toán hay dùng ngắt ADC thì nó sẽ chạy hoài luôn. Dùng ADC 8 bit sẽ hạn chế điều
này. Do đó CCSC cung cấp chọn lựa ADC 8 bit hay 10 bit tuỳ mục đích sử dụng. Cấu hình bộ ADC Thông dụng nhất khi dùng ADC là sử dụng 1 biến trở, điều chỉnh bởi 1 nút
vặn, qua đó tuh được 1 điện áp nhỏ hơn điện áp tham chiếu (Vref – áp tối đa) đưa vào
chân bộ biến đổi ADC, kết quả cho 1 giá trị số ADC 8 bit (0 - 255) hay 10 bit (0 -
1023). Thường thì Vref lấy bằng Vdd (5V). Các hàm phục vụ ADC
#DEVICE ADC=x // x – 8 hay 10 bit – khai báo chỉ thị tiền xử lý
setup_adc(mode)
(cid:198) Dùng để xác định cách thức hoạt động của bộ biến đổi ADC. Hàm không trả về trị. Tham số mode tuỳ thuộc tập tin tiêu đề *.h có tên tương ứng chip vi điều khiển
sử dụng quy định, nằm trong thư mục #Devices của CCSC được khai báo ở #include.
Để biết có bao nhiêu tham số có thể đọc trong file 16F877A.h, tìm tới chỗ các định
nghĩa cho chức năng ADC dùng cho chip đó tương ứng với hàm này. Vào HELP > Index, tìm mục setup_adc(mode) để tham khảo thêm.
mode ADC_OFF Tắt hoạt động ADC (tiết kiệm điện, dành chân cho hoạt động khác)
ADC_CLOCK_INTERNAL Thời gian lấy mẫu bằng xung clock của PIC (mất 2 – 6 us) thường chung cho các chip GVHD: Ts. Hoàng Minh Trí Trang: 38 ADC_CLOCK_DIV_2 Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Thời gian lấy mẫu bằng ½ xung clock (mất 0.4 us trên thạch anh 20 mhz) ADC_CLOCK_DIV_8 Thời gian lấy mẫu bằng 1/8 xung clock (mất 1.6 us)… setup_adc_ports(value)
value : là một hằng số được định nghĩa trong file 16F877A.h đang sử dụng.
(cid:198) Xác định chân lấy tín hiệu analog và điện thế chuẩn sử dụng. Tùy thuộc bố
trí chân trên chip, số chân, chân nào dùng cho ADC, và số chức năng ADC mỗi chip
mà value có thể có những giá trị khác nhau. Trong PIC16F877A có các chân
A0,A1,A2,A3,A5,E0,E1,E2. Để tương thích chương trình viết cho phiên bản cũ, 1 số tham số có 2 tên khác nhau (nhưng cùng chức năng do định nghĩa cùng địa chỉ). Dùng tất cả các chân sau làm Analog: A0,A1,A2,A3,A5,E0,E1,E2 (Vref Sau đây là các giá trị cho value, chỉ dùng 1 trong các giá trị:
ALL_ANALOG
= Vdd) Không dùng chân Analog, các chân đó sẽ là chân I/O hay RA0_RA1_RA3 NO_ANALOGS
AN0_AN1_AN3 Chỉ A0,A1,A3 là Analog, và điện thế so sánh là điện thế nguồn Vref = Vdd hay RA0_RA1_VSS_VREF A0, A1 là Analog, và A3 là điện thế so sánh Vref = A3 hay ANALOG_RA3_REF Tất cả các chân Analog, và A3 là điện thế so sánh Vref = A3 Chỉ có AN0 là Analog và điện thế so sánh là điện thế nguồn Vref = Vdd AN0_AN1_VSS_VREF
ANALOG_AN3_REF
AN0
. . . .
Tham khảo thêm HELP > Index của chương trình, mục setup_adc_ports. set_adc_channel(channel) (cid:198) Chọn chân đọc vào giá trị Analog bằng lệnh read_adc( ).
Giá trị channel tuỳ thuộc số chân chức năng ADC mỗi chip. 16F77A có
chân tương ứng các giá có trị – 0 7 từ channel
{RA0,RA1,RA2,RA3,RA5,RE0,RE1,RE2} Hàm không trả về trị.
Nên delay 10 us sau hàm này rồi mới dùng hàm read_adc( ) để đảm bảo kết quả đúng. Hàm chỉ hoạt động với tín hiệu biến đổi A/D phần cứng trên chip. GVHD: Ts. Hoàng Minh Trí Trang: 39 read_adc(mode) Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh (cid:198) Dùng đọc giá trị ADC từ thanh ghi hay cặp thanh ghi chứa kết quả biến đổi
ADC. Hàm này sẽ hỏi vòng cờ cho đến khi cờ này báo đã hoàn thành biến đổi ADC
(sẽ mất vài us). Nếu giá trị ADC là 8 bit như khai báo trong tiền chỉ thị #DEVICE , giá trị trả
về của hàm là 8 bit, ngược lại là 16 bit nếu khai báo #device ADC=10 (sử dụng ADC
10 bit trở lên) Khi dùng hàm này, nó sẽ lấy ADC từ chân được chọn trong hàm
set_ADC_channel() trước đó. Nghĩa l à mỗi lần đ ọc chỉ 1 kênh (PIC16F877A chỉ có
1 bộ ADC), muốn đổi sang đọc chân nào thì dùng hàm set_ADC_channel() lấy chân
đó. Nếu không có đổi chân, dùng hàm read_adc() bao nhiêu l ần cũng được. Các mode có thể có hoặc không: ADC_START_AND_READ
ADC_START_ONLY
ADC_READ_ONLY :
: giá trị mặc định
bắt đầu chuyển đổi và trả về trị
đọc kết quả chuyển đổi
: lần cuối
Ví dụ: // thạch anh tần số cao 4MHz #include <16f877a.h>
#device *=16 ADC=10
#fuses HS,NOPROTECT,NOWDT,NOLVP,PUT
#use delay(clock=4000000)
main()
{ int value;
setup_adc(adc_clock_internal);
setup_adc_port(all_analog);
set_adc_channel(1); // channel=1 tương ứng chân analog AN1 delay_ms(10);
while(input(pin_b0)) // Nhấp nháy Port B theo delay // Port B = 0000 0000 b // Port B = 1111 1111 b value=read_adc();
output_b(0);
delay_ms(value);
output_b(255);
delay_ms(value); từ ADC
{
}
read_adc(adc_start_only);
sleep;
value=read_adc(adc_read_only); GVHD: Ts. Hoàng Minh Trí Trang: 40 } Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Các hàm, thủ tục xử lý khác có thể tra cứu thêm trong HELP của chương trình.
Các phương thức nâng cao khác như: Truyền thông với PC qua cổng RS232 -
Xử lý chuỗi, Giao tiếp SPI, I2C và Parallel, Mô-đun CCP, … có thể tham khảo từ
HELP hoặc hỏi người có kinh nghiệm, vì gồm nhiều phần phức tạp hơn, mà trong giới
hạn trình bày cho phép nên xin tạm gác ở đây. 5.3 Chương trình nạp Vi điều khiển PIC qua cổng LPT WinPic800 3.56: 5.3.1 Giới thiệu chung: Việc cài đặt chương trình tạm thời không đề cập ở đây, có thể tham khảo thêm Để bắt đầu chương trình, nhấp trái chuột lên biểu tượng WinPIC800 Chương nạp vi điều khiển PIC qua cổng LPT WinPIC800 phiên bản hiện dùng
là 3.56. Để nạp được vào PIC, dĩ nhiên cần đến một mạch nạp. Chương trình chỉ làm
các nhiệm vụ liên quan đến việc nạp, xóa chương trình của PIC,... thông qua mạch
nạp. Có thể tìm mạch nạp trên thị trường hoặc liên hệ các diễn đàn chuyên ngành để
tìm nó.
thông tin trên các diễn đàn như diendandientu.com hay picvietnam.com
bên cạnh để kích hoạt. Cửa sổ chương trình xuất hiện như trên. Vào File – Open để mở chương trình GVHD: Ts. Hoàng Minh Trí Trang: 41 Trước tiên phải cài đặt nhận dạng phần cứng cho chương trình như sau, vào mới.
Menu Settings > Hardware để thiết lập. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Cửa sổ thiết lập phần cứng xuất hiện. Nếu không thấy các thông số để thiết lập thì nhấn vào vị trí số 1 đã chỉ.
Nhấn vào vị trí số 2 đã chỉ để thay đổi các thông số.
Các thông số phải được cài đặt chính xác, vì tác động đến PIC thông qua các
tín hiệu điện nên có thể làm hỏng PIC trong một số trường hợp như: khai Use Vpp2 mà
PIC không hỗ trợ, PIC sẽ bị sốc điện. Trường hợp nhẹ thì chỉ không liên lạc được với
PIC như khai báo sai cổng giao tiếp LPT hay COM hay USB, ở đây chương trình giao
tiếp qua cổng LPT. Thiết lập chính xác như hình trên, sau đó nhấn Apply edits xác nhận những GVHD: Ts. Hoàng Minh Trí Trang: 42 Bật nguồn cho mạch nạp, kết nối mạch nạp (đã gắn cố định chip vi điều khiển thay đổi.
PIC) với máy tính qua cổng LPT. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh • Kiểm tra kết nối (Detect PIC)
Nhấn vào Icon Dò tìm PIC như trên màn hình hướng dẫn. Nếu kết nối tốt, màn
hình sẽ xuất hiện như sau là kết nối thành công vi điều khiển được dùng là
PIC16F877A Khi nhấn Detect PIC, rất tiện lợi, WinPIC800 sẽ tự động chọn Loại PIC sử Kết nối thành công, đã sẵn sàng nạp chương trình (tập tin *.hex) cho PIC được Để nạp chương trình, nhấn vào Nạp code .hex cho PIC (Program All) như dụng mà nó dò tìm được mà không cần phải chọn trước cho nó.
rồi.
hình trên. Quá trình nạp được thể hiện như sau: GVHD: Ts. Hoàng Minh Trí Trang: 43 Sau khi WinPIC800 nạp xong 100%, nó sẽ tự động xác nhận lại (Verify). Nếu
OK thì chương trình đã được nạp tốt vào PIC. Đến đây đã có thể quan sát được tác
động của PIC lên các thiết bị thực tế thông qua các mạch giao tiếp port của PIC với
thiết bị đó.
Nếu chương trình nạp không có vấn đề về lỗi thiết kế (phù hợp PIC sử dụng),
nhưng khi nap có vấn đề, có thể do nhiều yếu tố như: do nhiễu, kết nối không chắc Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh chắn, nguồn điện chưa bật cho mạch nạp, PIC không được cố định tốt trên mạch nạp,
xung đột do khai báo sai cổng giao tiếp, ... Kiểm tra lại các thông tin trên để điều
chỉnh ngay, sau khi điều chỉnh, nhớ cập nhật lại tập tin chương trình cần nạp (vì đôi
khi WinPIC800 tự động trả về mặc định là chưa có chương trình để nạp, ví dụ như khi
Detect PIC nhưng không dò được PIC).
Đối với nhiễu (thường gặp), hoặc do kết nối không chắc chắn, cách khắc phục
là rút cáp kết nối ra, sau đó gắn lại, tốt hơn hết là rút cả cáp kết nối và cáp nguồn ra,
rồi gắn lại, cập nhật lại chương trình, nạp lại chương trình cho PIC. Đôi khi phải làm
vài lần như vậy.
Các phương pháp chống nhiễu cho mạch điện hay hạn chế ảnh hưởng của
nhiễu, có thể tham khảo thêm trong các sách về các vấn để nhiễu điện, hoặc hỏi người
có kinh nghiệm.
Đến đây đã có thể viết chương trình cơ bản cho vi điều khiển PIC16F877A,
biên dịch bằng CCSC và nạp bằng WinPIC800 cho PIC16F877A rồi. Việc tiếp theo là
cố gắng tìm hiểu nghiên cứu các ứng dụng điều khiển đa dạng trong thực tế để thi
hành, vừa giúp nắm vững hơn về PIC, vừa thể hiện được sức mạnh và tính linh hoạt
trong những ứng dụng đa dạng của vi điều khiển PIC16F877A. Mà cụ thể trong đề tài
này sẽ nghiên cứu điều khiển các mô-đun LCD, nhất là LCd đồ họa để hiển thị thông
tin một cách sinh động đa dạng, trực quan, đáp ứng nhiều nhu cầu trong việc hiển thị
của các hệ thống từ công nghiệp cho đến dân dụng. 5.3.2 Kit thực hành PIC-Lab và các bài tập minh họa: PICLab là mạch thí nghiệm 2 trong 1 cho PIC 40 chân như 16F874, • 8 LED đơn
• 2 LED 7 đoạn
• Giao tiếp máy tính chuẩn RS-232
• 3 ngõ vào tương tự (Analog) (Biến trở 10KΩ)
• Ma trận phím (Matrix key) 4x3, Loa (Speaker)
Khả năng mở rộng thêm các mô-đun là vô hạn, có thể thê, các mô-đun bên
ngoài như I2C, điều khiển thời gian thực (Real time), điều khiển LCD, điều khiển
động cơ các loại,...
Để lập trình và nạp chương trình cho PIC, ta dùng hai trình biên dịch và
chương trình nạp đã nêu ở trên để nạp cho PIC qua cổng LPT, sau đó dùng các dây
nối jack cắm các ngõ vào ra thích hợp theo từng chương trình giữa PIC với các nguồn
và đích, ta có được những mô tả cụ thể được trình bày ngay. GVHD: Ts. Hoàng Minh Trí Trang: 44 16F877A…. Trên
bo mạch bao gồm mạch nạp và các mô-đun cơ bản như sau: Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Hình 2.5 – Kit thực hành Vi điều khiển PIC 16F877A Các bài tập được trình bày dưới đây sẽ giúp hình dung cụ thể một chương trình
viết cho PIC, cách ghi chú trong chương trình như thế nào, ... Trong chương trình
chính nên dùng hàm while(true)... để tạo vòng lặp bất tận khi mạch vẫn còn được cấp
nguồn. 5.4 Bài tập minh họa điều khiển dãy 8 LED đơn //
//
// +-----------------------------------+
¦ Define 14 bit = 16F877A ¦
//
+----------------------------
¦ Defind crystal = 4 MHz ¦
+-----------------------------------+ Chuong trinh chinh _MAIN_ Dieu khien LED nhieu dang ¦ //
#include <16f877A.h>
#device *=16 ADC=10
#use delay(clock=4000000)
#fuses HS,NOLVP,NOWDT,PUT
¦
//
void main()
{ // ¦ Khai bao cac bien duoc su dung trong chuong trinh ¦
char r,l,i,j,c;
char k,t,p,tam;
char count1,count2,count3,count4,count5,count6,count7,count8;
char t1;
// ¦ Su dung ham _while_ tao vong lap bat tan ¦ while(TRUE) { // ¦ Bat dau cac dang hien thi LED ¦
// -¦- Tat toan bo -¦- // -¦- Sang' toan bo -¦- // -¦- Tat dan ve ben trai -¦- GVHD: Ts. Hoàng Minh Trí Trang: 45 output_b(0x00);
delay_ms(200);
output_b(0xff);
delay_ms(200);
count3=255;
for (i=0;i<=8;i++)
{
output_b(count3);
delay_ms(200);
count3=count3<<1;
} Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh // -¦- Sang' dan ve ben phai -¦- // -¦- Tat dan ve ben phai -¦- // -¦- Sang' dan ve ben trai -¦- // end of while(TRUE)
// end of void main() count8=128;
tam=count8>>1;
for (i=0;i<=7;i++)
{
output_b(count8);
delay_ms(200);
count8=count8+tam;
tam=tam>>1;
}
count2=255;
for (i=0;i<=8;i++)
{
output_b(count2);
delay_ms(200);
count2=count2>>1;
}
count1=1;
for (i=0;i<=7;i++)
{
output_b(count1);
delay_ms(200);
count1=count1<<1;
count1++;
}
}
}
// + Ket thuc chuong trinh End Program! + 5.5 Bài tập minh họa điều khiển 2 LED 7 đoạn #include <16f877A.h>
#device *=16 ADC=10 //
//
// #fuses HS,NOLVP,NOWDT,PUT ¦ Define 14 bit = 16F877A ¦
+----------------------------
//
¦ tần số thạch anh = 4 MHz ¦
+-----------------------------------+ GVHD: Ts. Hoàng Minh Trí Trang: 46 #use delay(clock=4000000)
// -¦- Khai bao database cho LED 7 doan -¦-
byte CONST MAP[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
// -¦- 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0
-¦-
// ¦ Chuong trinh quet LED 7 doan. Dem so thu tu tang dan. ¦
// ¦ Kich muc khong. Bit 0 - sang , Bit 1 - tat ¦
// ¦ Chuong trinh con Hien thi 2 LED 7 doan ¦
// display - chuong trinh con
void display(int n)
{
char b;
b=(MAP[n/10]);
if((n/10)==(0))
b=0xff; Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh // end of void main() output_b(b);
output_low(PIN_C1);
delay_ms(1);
output_high(PIN_C1);
output_b(MAP[n%10]);
output_low(PIN_C2);
delay_ms(1);
output_high(PIN_C2);
}
// end display
// ¦ Chuong trinh chinh _MAIN_ Dem so thu tu tang dan ¦
// +-----------------------------------------------------------------------------------+
// main - chuong trinh chinh
void main()
{
int i,count;
count=0;
while(TRUE)
{
for(i=0;i<=100;i++) // Hien thi tu 1 den 99
{
display(count);
}
if(count<=99) // Kiem tra bien count <= 99 ?
{
count++; // neu co thi dem tiep tuc tang
}
else
{
count=0; // neu khong thi xoa ve 0 va dem lai
}
} // end of while(TRUE)
}
// + Ket thuc chuong trinh End Program! + GVHD: Ts. Hoàng Minh Trí Trang: 47 Cuối cùng của chương này có thể khái quát theo hình vẽ được mô tả dưới
đây: Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh GVHD: Ts. Hoàng Minh Trí Trang: 48 Hình 5.1+ Sơ đồ mô hình tổng quan Điều khiển dùng vi điều khiển
(PIC16F877A) Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh CHƯƠNG 6: GIỚI THIỆU SƠ LƯỢC VỀ 6.1 NGUYEÂN LYÙ HOAÏT ÑOÄNG CUÛA ÑOÄNG CÔ BÖÔÙC
Ñoäng cô böùôc chuyeån ñoåi xung ñieän thaønh nhöõng goùc quay xaùc ñònh .Nhöõng
goùc quay ñöïôc taïo thaønh bôûi xung ñieän taïo söï chính xaùc &khaû naêng laäp laïi cao.Ñoù
laø lyù do taïi sao ñoäng cô böôùc toû ra voâ cuøng hieäu quaû trong caùc öùng duïng ñoøi hoûi ñoä
chính xaùc cao Caáu taïo:
Hieän nay treân thi tröôøng coù 3 loaïi ñoäng cô böôùc la :ñoäng cô 2 pha, 3 pha, 5
pha Pha cuûa ñoäng cô böôùc laø soá cuoän daây cuûa Stator
Theo hình döôùi ta thaáy caáu taïo cuûa ñoäng cô böôùc goàm rotor laø moät nam chaâm vónh
cöõu coù xeõ caùc raõnh xen ke cöïc nam va cöc baéc ,stator la øcaùc taám saét côõ moät ly
gheùp laïi vôùi nhau,phía ñaùy cuõng coù xeõ raõnh töông öùng nhö treân rotor ,treân stator
caùc cuoän daây se õñöïôc quaán deå taïo ra töø tröøông laøm quay rotor.caùc cuoän daây seõ
ñöïôc noái ra ngoaøi vôùi caùc maøu töông öùng
*Löu yù: Tuyeät ñoái khoâng gôõ ñoäng cô ra vì seõ laøm hoûng ñoäng cô do leäch
töø cuûa stator va rotor . GVHD: Ts. Hoàng Minh Trí Trang: 49 H ình 6.1: Caáu taïo beân trong của ñoäng cô böôùc. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh . Loaïi ñöôïc duøng phoå bieán hieän nay la loaïi 2 pha, loaïi 2 pha coøn chia laøm 2 loai nöõa la Bipolar Winding vaø Unipolar Windingø. Bipolar Winding Unipolar Winding H ình 6.2 Sơ đồ nguyên lí bên trong motor
Unipolar Winding caáu taïo goàm 2 cuoän daây treân moät pha.Coøn Bipolar winding thì
chæ coù moät cuoän daây treân moät pha.Söû duïng Bipolar Winding thì ñôn giaûn hôn
Unipolar nhöïng moment quay se yeáu hôn gaán 30%
Trong thöïc teá ñoäng cô bipolar thöôïng ñöïôc duøng roäng raõi hôn. H ình 6.3 Ca cuoän daây cuûa ñoäng cô 2 pha • Nguyeân lyù hoaït ñoâng cuûa ñoäng cô böôùc:
*FULL STEPPING: -Phöông phaùp kích töøng pha moät(nghóa laø trong moät luùc chæ coù moät
pha ñöôïc kích:”one phase on”) GVHD: Ts. Hoàng Minh Trí Trang: 50 Ñoäng cô böôùc nam chaâm vónh cöõu laø söï keát hôïp giöõa moät rotor nam chaâm
vónh cöõu vaø stato daãn töø. Naêng löôïng đöïôc taïo ra töø moät cuoän daây cuûa
stator seõ gaây ra moät töø tröôøng nam baéc nhö hình veõ sau Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Töø tröôøng naøy seõ taùc ñoäng leân rotor,laøm rotor quay theo chieàu cuûa töø
tröôøng Hình 6.4 ÔÛ laàn kích thöù nhaát cuoän A seõ ñöïôc kích taïo moät töø tröôøng ngöôïc laïilaøm
rotor ñöïôc giöõ lai nhö treân.ÔÛ laàn kích thöù hai cuoän B seõ ñöïôc kích cuoän A
ngöng
Laøm löïc huùt cuûa töø tröôøng seõ chuyeãn töø cuoän A sang cuoän B laøm roto quay
moät goùcä 90 0 theo chieàu kim ñoàng hoà ÔÛ böôùc thöù ba va tö cuoän A va B laàn löôït ñöôïc kích nhö treân laøm ñoäng cô
xoay voøng tuaàn töï. -Phöông phaùp kích caõ hai pha:(“two phase on”) GVHD: Ts. Hoàng Minh Trí Trang: 51 ÔÛ laàn kích thöù nhaát caû 2 pha laø A&B ñeàu ñöïôc kích ,chuùng seõ taïo ra moät töø
tröông raát maïnh ñaåy höôùng cöïc baéc cuûa rotor vaøo giöõa.ÔÛ laàn kích thöù pha Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh B vaãn giöõ nguyeân nhöng pha a ñoái dieän seõ ñöôïc kích(pha -A) laøm rotor
quay moät goùc 90 0 Quaù trình seõ xaõy ra tuaàn töï ôû laàn kích thöù tö vaø thöù naêm laøm cho ñoäng cô
quay ñeàu.
Baûng chaân trò: Khi kích ñoäng cô baèng phöông phaùp kích 2 pha cuøng luùc seõ laøm taêng ngaãu
löïc cuaû ñoäng cô leân 41,4% so vôùi phöông phaùp kích moät pha cuøng
luùc,nhöng coâng suaát seõ taêng gaáp ñoâi
• HALF STEPPING:
Ta coù theå chia ñoái böôùc cuûa ñoäng cô baèng caùch cheøn moät traïng thaùi taét giöõa
söï dòch chuyeãn pha cuûa 2 cuoän daây GVHD: Ts. Hoàng Minh Trí Trang: 52 ÔÛ laàn kích thöù nhaát caû 2 cuoän A&B ñeàu ñöôïc kích,rotor xeõ quay 45 0ä töø
cuoän A
ÔÛ laàn thöùù hai chæ coù cuoän B ñöôïc kích vaø rotor laïi quay tieáp moät goùc 45 ñoâ(
theo chieàu kim ñoàng hoà
Quaù trình cöù theá tieáp dieãn laøm ñoäng cô quay ñeàu Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh *GIAO TIEÁP COÂNG SUAÁT VÔÙI ÑOÄNG CÔ:
-COÂNG SUAÁT NHOÛ HÔN 3W:
Neáu coâng suaát cuaû ñoäng cô nhoû hôn 3W ta coù theå duøng caùc IC buffer
driver ñeå giao tieáp coâng suaát vôùi ñoäng cô böôùc nhö ULN2003-ULN2004 H ình 6.5: Sô ñoà chaân cuûa hoï ULN200X vaø caùch noái taûi Coù doøng kích laø 25 mA,doøng ra cöïc ñaïi laø 500mA,ñieän theá ngoõ ra coù theå leân ñeán
50V. Taûi ngoõ ra coù theå maét vôùi IC nhö treân.Trong IC ñaõ coù saün diod daäp ñeå daäp doøng ngöôïc khi caùc taûi laø cuoän daây
-COÂNG SUAÁT LÔÙN HÔN 10W: GVHD: Ts. Hoàng Minh Trí Trang: 53 Neáu coâng suaát cuûa ñoäng cô lôùn hôn 10W thì ta phaûi duøng Transistor coâng
suaát ñeå laøm maïch giao tieáp .Coù 2 loaïi transistor moät loaïi kích baèng doøng nhö
:H1061(chòu doøng leân ñeán 6A)vôùi maïch coâng suaát ñöïôc thieát keá nhö sau: Diod daäp Ngoõ ra cuûa
optocoupler Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Ngoõ ra cuûa
optocoupler Vaø moät loaïi kích baèng theá nhö IRF840 (theo lyù thuyeát chòu doøng leân ñeán 7A)hay
IRF840(theo lyù thuyeát chòu doøng leân ñeán 20A).Maïch giao tieáp ñöôïc thieát keá nhö
sau: H ình 6.6: Sơ đồ đấu dây kích motor bước. 6.2 Giới thiệu sơ lược motor dung trong cánh tay máy:
+ Canh tay ñöôïc söû duïng saùu ñoäng cô böôùc: GVHD: Ts. Hoàng Minh Trí Trang: 54 Ñoäng cô cua khôùp xoay troøn (thaân ngöôøi) & khôùp vai duøng ñoäng cô cuûa haõng
SANYO-DENKY (TYPE 103H6704-1141) coù coâng suaát laø 6.76W –1.8
Ñoä/Böôùc thôøi gian giöõa 2 xung kích nhoû nhaát laø 1.007mS. Keát caáu boä truyeàn
ñoäng cô khí cuûa khôùp vai & khôùp xoay raát ñôn giaûn thoâng qua boä baùnh raêng
giaûm toác 3 caáp, caáp thöù 3 laø boä truïc vít- baùnh vít do ñoù khaû naêng töï haõm raát toát
khi laøm vieäc.ñöôïc laáy töø boä phaän gaït nöôùc cuûa xe hôi NISSAN Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Hình 6.1. Động cơ khớp vai. Ñoäng cô khuûy tay: cuûa haõng VEXTA ORIENTAL MOTOR (MODEL A2730-
9212) coâng suaát cuû ñoäng cô laø 7.2W–1.8 Ñoä/Böôùc thôøi gian giöõa 2 xung kích
nhoû nhaát laø 1.007mS ,khôùp naøy cuõng söû duïng boä giaûm toác trong kính gat nöôùc
xe hôi Hình 6.2. Động cơ khớp khuỷu tay. Khôùp xoay tay duøng ñoäng cô trong maùy in phun coâng suaát laø 4W, khôùp naøy söû
duïng boä nhoâng truyeàn trong caàn xoay angten TV. Khôùp coå tay duøng ñoäng cô trong maùy in phun coâng suaát laø 4W,khôùp naøy söû
duïng Boä phaän chuyeån höôùng trong maùy quaït coâng nghieäp GVHD: Ts. Hoàng Minh Trí Trang: 55 Khôùp ngoùn tay laø ñoäng cô cuûa haõng OKI (MODEL KHL-40M12B) ,khôùp naøy
chuyeån ñoäng baèng víttme. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Hình 6.3. Động cơ khớp cổ tay và ngón tay. Caõ 3 ñoäng cô naøy ñeàu coù thôøi gian giöõa 2 xung kích nhoû nhaát la2.007mS . Soá voøng quay cuûa ñoäng cô vaø toác ñoä chuyeån ñoäng caùc khôùp cuûa tay maùy tay
maùy phuï thuoäc vaøo ñieän aùp ñaët vaøo ñoäng cô vaø thôøi gian giöõa 2 xung kích. GVHD: Ts. Hoàng Minh Trí Trang: 56 Taát caû caùc khôùp ñeàu ñöôïc laâp trình chuyeån ñoäng ôû toác ñoä 4.5 voøng /s Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Chương 7: Xoay tay Coå tay Khuỷu tay Khớp vai Tay gấp Vai Hình 7.1 Mô hình hệ thống chấp hành cánh tay máy Thoâng thöôøng caáu truùc chaáp haønh cuûa tay maùy coâng nghieäp ñöôïc moâ hình hoùa
trong daïng chuoåi ñoäng vôùi caùc khaâu vaø khôùp nhö trong nguyeân lyù maùy vôùi caùc giaû thuyeát
cô baûn nhö sau: - Chæ duøng caùc khôùp ñoäng loaïi (khôùp quay, khôùp tònh tieán, khôùp vít)
- Truïc quay höôùng tònh tieán cuûa caùc khôùp thì song song hay vuoâng goùc vôùi nhau.
- Chuoåi ñoäng laø chuoåi ñoäng hôû, ñôn giaûn.
Döôùi ñaây laø chuoåi ñoäng cuûa moät tay maùy coâng nghieäp toång quaùt coù 6 baäc töï do,
caùc khôùp A, B, F laø caùc khôùp toång quaùt coù nghæa laø chuùng coù theå laø khôùp quay, cuõng coù
theå laø khôùp tònh tieán, caùc khôùp D, E, K chæ laø nhöõng khôùp quay. Caùc khaâu ñöôïc ñaùnh soá
baét ñaàu töø khaâu 0 _ giaù coá ñònh, tieáp ñeán laø caùc khaâu 1, 2, …, n _ caùc khaâu ñoäng _ khaâu
toång quaùt kyù hieäu laø khaâu i, (i=0,1,2,…,n), khaâu, khaâu n cuoái cuøng laø khaâu mang baøn keïp
cuûa tay maùy. Töông töï nhö tay ngöôøi ñeå baøn keïp (baøn tay) laøm vieäc ñöôïc caàn coù ba loaïi chuyeån ñoäng, töông öùng vôùi caùc chuyeån ñoäng naøy laø ba daïng caáu truùc cuûa tay maùy nhö sau: GVHD: Ts. Hoàng Minh Trí Trang: 57 loaïi khôùp ñoäng duøng trong cheá taïo maùy thoâng thöôøng ta coù nhöõng phoái hôïp sau ñaây cuûa
caùc khôùp vaø töø ñoù taïo neân caùc caáu truùc xaùc ñònh vò trí cuûa baøn keïp trong caùc khoâng gian vò
trí laøm vieäc khaùc nhau cuûa baøn keïp . Phoái hôïp 3 khôùp ñeàu laø khôùp tònh tieán vaø moät khôùp quay. Ñaây laø caáu truùc hoaït ñoäng
trong heä toïa ñoä ñeà caùc so vôùi caùc toïa ñoä S0 vì ñieåm M naèm treân khaâu 3 ñöôïc xaùc ñònh bôûi
ba chuyeån ñoäng tònh tieán vaø moät chuyeån ñoäng quay (töùc laø hai toïa ñoä daøi) Phoái hôïp TRT, RTT hayTTR, nghóa laø moät khôùp tònh tieán hai khôùp quay (caùc caáu
truùc 2,3 vaø 4). Ñaây laø laø caáu truùc hoaït ñoäng trong heä toïa ñoä truï so vôùi ñieåm S0 vì ñeå M
treân khaâu 3 ñöôïc xaùc ñònh bôû hai chuyeån ñoäng tònh tieán vaø moät chuyeån ñoäng quay (töùc laø
hai toïa ñoä daøi moät toïa ñoä goác) Phoái hôïp RTR, RRT hay TTR nghóa laø hai khôùp tònh tieán vaø hai khôùp quay (caùc
caáu truùc 5, 6, 7, 8, 9 vaø 10). Ñaây laø caáu truùc hoaït ñoäng trong heä toïa ñoä caàu so vôùi heä S0, vì
ñieåm M treân khaâu 3 ñöôïc xaùc ñònh bôûi moät chuyeån ñoäng tònh tieán vaø hai chuyeån ñoäng
quay (töùc laø moät toïa ñoä daøi, hai toïa ñoä goùc) Phoái hôïp RRR nghóa laø ba khôùp quay (caùc caáu truùc 11,12) ñaây laø caùc caáu truùc hoïat
ñoäng trong heä toïa ñoä goùc so vôùi heä S0 vì ñieåm M treân khaâu 3 ñöôïc xaùc ñònh bôûi ba chuyeån
ñoäng quay (töùc laø ba toïa ñoä goùc), caáu truùc naøy ñöôïc goïi laø caáu truùc phoûng sinh hoïc. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh -Toác ñoä böôùc
-Doøng chaïy trong cuoän daây
-Maïch giao tieáp coâng suaát T= T f + T i Moment löïc ma saùt baèng löïc yeâu caàu ñeå dòch
chuyeån taûi nhaân vôùi chieàu daøi cuûa caùnh tay ñoøn GVHD: Ts. Hoàng Minh Trí Trang: 58 Vaø Ti laø moment quaùn tính yeâu caàu ñeå taêng toác taûi:
I = quaùn tính cuûa taûi g-cm2 Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh = toác ñoä böôùc böôùc/S =1/(delay) 7.3 Tính toán phần cơ khí của cánh tay : Ñöôøng kính cuûa maâm xoay laø 20cm, chieàu cao maâm laø 9 cm. Maâm xoay ñöïôc toái ña 2
voøng quanh truïc
Chieàu daøi cuûa baép tay la25.5 cm.
Chieàu daøi cuûa caùnh tay laø 15.5 cm.
Chieàu daøi cuûa baøn tay laø 14 cm
Chieàu daøi cuûa ngoùn tay laø 7 cm Baøn tay khi môû ra coù theå roäng ñeán 8 cm
Toång chieàu daøi cuûa caùnh tay maùy khi duõi thaüng ra laø 60 cm t = thôøi gian ñöôïc tính bằng giaây
= goùc böôùc ñöôïc tính baèng ñoä
K = 97.73
Toác ñoä böôùc :
Vôùi delay laø thôøi gian trì hoaõn giöõa hai xung tính baèng giaây Khôp1(vai) : Toác ñoä quay laø 4,9 v/phut. • Phaïm vi hoaït ñoäng laø : 1 voøng quanh ñieåm khoâng Khôp2(canh tay) : Toác ñoä quay laø 4,9 v/phut. • Phaïm vi hoaït ñoäng laø : Trong khoaûng töø 25-85 ñoä Khôp3(khuyûu tay): Toác ñoä quay laø 4,9 v/phut. • Phaïm vi hoaït ñoäng laø: Töø -80 ñeán +80 ñoä Khôp4(coå tay) : Toác ñoä quay laø 4,9 v/phut. • Phaïm vi hoaït ñoäng laø: Töø -90 ñeán -45 ñoä Khôp5(xoay tay) : Toác ñoä quay laø 24 v/phut.
• Phaïm vi hoaït ñoäng laø : Khoâng giôùi haïng
Khôp6(ngoùn tay) : Toác ñoä quay laø 4,9 v/phut. • Phaïm vi hoaït ñoäng laø :2 voøng quanh ñieåm khoâng. * PHAÀN CÔ ÑIEÄN: Caùc ñoäng cô Servo AC thích hôïp hôn cho loaïi ñieàu khieån naøy nhöng coù giaù thaønh cao, khoù tìm, neân ở đây ñoäng cô böôùc được sử sụng. GVHD: Ts. Hoàng Minh Trí Trang: 59 Ñoäng cô 1 : ñoùng môû haøm keïp.
Ñoäng cô 2 : xoay baøn keïp xoay troøn thuaän nghòch theo chieàu kim ñoàng hoà
Ñoäng cô 3 : xoay thuaän nghòch coå tay.
Ñoäng cô 4 : xoay thuaän nghòch khôùp khuyûu tay.
Ñoäng cô 5 : xoay thuaän nghòch khôùp caùnh tay. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Các động cơ 2,3,4,5 được bố trí có thể xoay tự do về mọi hường hình thành 6 bật tự do trên mỏi khớp chuyển động. Hình 7.2. Khớp vai. GVHD: Ts. Hoàng Minh Trí Trang: 60 Hình 7.3.Khớp cánh tay Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Hình 7.4 Khớp cánh tay GVHD: Ts. Hoàng Minh Trí Trang: 61 Hình 7.5 Khớp ng ón tay Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh 7.5 GIÔÙI THIEÄU HEÄ THOÁNG GIAO TIEÁP COÂNG SUAÁT CUÛA CAÙNH TAY MAÙY:
Maïch coâng suaát cuûa 6 ñoäng cô böôùc bao goàm 20 Transistor MOSFET
IRF840 duøng ñeå giao tieáp vôùi 5 ñoäng cô böôùc cuûa caùc khôùp 6,5,4,3,2. Linh kieän: Hình7.7 IRF 840 OPTO COUPLER 521 : Vì ñoäng cô böôùc baùn treân thò tröôøng raát ít vaø khoâng phuø hôïp vôùi heä thoáng cô
khí neân khi thieát keá em buoäc phaûi söû duïng khaùc vôùi nhöõng quy ñònh cuûa khi thieát
keá. GVHD: Ts. Hoàng Minh Trí Trang: 62 Ñoäng cô cuûa khôùp ngoùn tay: Neáu theo ñuùng thoâng soá kyû thuaät cuûa nhaø saûn
xuaát :DC 8.2V,0.24A,7.5 DEG/STEP thì so vôùi yeâu caàu thöïc teá veà vaän toác thì ñoäng Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh cô khoâng ñaùp öùng ,do ñoù em phaûi caáp nguoàn laø 30 V thì ñoäng cô môùi ñaùp öùng kòp
khoaûng delay laø 2 mS moãi xung kích, neáu caáp ñieän theá laø 30V thì doøng ñoøi hoûi
cuûa ñoäng cô laø 0.9A vì coâng suaát nhoû neân em duøng buffer driver ñeå giao tieáp. Ñoäng cô xoay tay & coå tay: Vì laø ñoäng cô duøng trong maùy in phun neân em
cuõng khoâng coù thoâng soá kyõ thuaät cuûa noù. Chæ bieát moât cuoän daây coù ñieän trôû laø 22
Ohm .Khi caáp ñieän DC30V thì noù môùi ñaùp öùng kòp delay giöõa 2 xung laø 2mS.Khi
ñoù doøng maø noù yeâu caàu laø 1.4A.Hai ñoäng cô naøy em duøng IRF 540 ñeå giao tieáp
nhö maïch döôùi ñaây. 7.8 ÑEÄM TUYEÁN DỮ LI ỆU: Maïch ñeäm (buffer)laø moät maïch logic ñeå khueách ñaïi doøng ñieän hoaëc coâng suaát. Maïch ñeäm veà cô baûn ñöôïc söû duïng ñeå laøm taêng khaû naêng laùi (drive) cuûa moät
maïch logic.Hình 6.11 trình baøy 74LS244, moät maïch ñeäm moät chieàu (vì tuyeán ñòa
chæ laø tuyeán moät chieàu,höôùng từ vi xöû lí ñeán caùc thieát bò beân ngoøai) ñeå laøm taêng
khaû naêng laùi cuûa tuyeán ñòa chæ cao. Veà cô baûn, caùc tuyeán cuûa PIC coù theå caáp doøng
400μA (IO H = 400μA) vaø ruùt doøng 2μA (II L = 2μA); chuùng chæ coù theå laùi moät taûi
logic TTL. Maëc duø beân trong PIC ñaõ coù caùc maïch ñeäm döõ lieäu Hình 7.11 trình baøy 74LS244, moät maïch ñeäm moät chieàu (vì tuyeán ñòa chæ laø tuyeán moät chieàu,höôùng từ vi xöû lí ñeán caùc thieát bò beân ngoøai) ñeå laøm taêng khaû naêng
laùi cuûa tuyeán ñòa chæ cao. Veà cô baûn, caùc tuyeán cuûa PIC coù theå caáp doøng 400μA (IO
H = 400μA) vaø ruùt doøng 2μA (II L = 2μA); chuùng chæ coù theå laùi moät taûi logic TTL.
Maëc duø beân trong PIC ñaõ coù caùc maïch ñeäm döõ lieäu vaø ñòa chæ, nhöng theo khuyeán
caùo cuûa caùc nhaø cheá taïo, moät heä thoáng vi xöû lí coù 10 thaønh phaàn trôû leân neân duøng
caùc maïch ñeäm. Maïch ñeäm 74LS244 coù khaû naêng caáp doøng 15mA vaø ruùt doøng
24mA. GVHD: Ts. Hoàng Minh Trí Trang: 63 Hình 7.11 : Sô ñồ IC 74LS244 ñeäm tuyeán ñòa chæ döõ lieäu Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Trong heä thoáng vi xöû lí, caùc ngoaïi vi ñöôïc keát noái ôû daïng song song giöõa 5v 5v U2 4
1 D
D
V DG
C1
C2 THC1
THC2
THDG reset-628 17
18
1
2
3
4 RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/TOCKI/CMP2
RA5/MCLR/VPP PGC-628
PGD-628 33pF 6
7
8
9
10
11
12
13 RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4/PGM
RB5
RB6/T1OSO/T1CKL/PGC
RB7/T1OSI/PGD OSC1-628 OSC2-628 OSC1-628 15
16 RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN 4Mhz OSC2-628 33pF PIC16C622_SS D
N
G 5 J13 J14 PGC-628
PGD-628 1 J15 5v reset-628 1
2
3
4
5 HEADER 1 1 HEADER 5 HEADER 1 tuyeán ñòa chæ tuyeán döõ lieäu vaø tuyeán ñieàu khieån. Vi xöû lí chæ thoâng tin vôùi moät
trong caùc thieát bò taïi moït thôøi ñieåm, khi ñoù phaûi caùch li taát caû caùc thieát bò coøn laïi.
Vieäc söû duïng caùc maïch ba traïng thaùi (Tri_State). Seõ giaûi quyeát ñöôïc vaán ñeà naøy . D16
D17 J20 L3 +12V DIODE
DIODE Q5
B688 1 4 1
2
3 + C28 5v 1000UF -12V R31 2 3 1 VIN VOUT HEADER 3 U10 7805
D
N
G 3
C30
104 3 3W C31
1000UF D20 + + C29 0.33UF FIT80-6 LED 2 R33
330 Hình 6.12 Sơ đồ điều khiển động cơ băng chuyền B-down B-up Enter R16 SW2 R18 SW3 R20 SW4 5v 4 3 4 4 3 5v 5v 1k 1k 1k 1 2 1 2 1 2 GVHD: Ts. Hoàng Minh Trí Trang: 64 Hình 6.13 Nguồn nuôi cho vi xử lí. Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh J1 +12V R1 +12V 1 10KOHM R2
R +12V +12V THC1 U1A 4 D1 3 + C1
103PF C2
103PF Q1
2N1069 1 LED THU-C1 2 - -12V -12V 1
1 LM324/SO J2 +12V -12V +12V +12V +12V R3 +12V 1 10KOHM +12V +12V J3 J4 J5 R4
220 R5
220 R6
220 R7
R R8
10K R9
10K R10
10K U1B 4 THC2 C3
103PF C4
103PF THU-C1 THU-DG THU-C2 5 + 7 D2 -12V -12V THU-C2 Q2
2N1069 6 1
2
3
4
5 1
2
3
4
5 1
2
3
4
5 - LED J6 1
1 LM324/SO CBCM CBDG CBM +12V R11 +12V +12V +12V -12V +12V DONG CO -DC 1 J7 1
2 10KOHM H1061 R13 C5
103PF C6
103PF O-DC+ R12
R Q3
2N1069 U1C 4 THDG +12V +12V R 10 + 8 D3 THU-DG Q4
2N1069 9 - LED C7
103PF C8
103PF 1
1 -12V -12V LM324/SO -12V J8 CONNECTOR DB9 Ngontay -A
Ngontay -B
Ngontay -AA
Ngontay -BB 1
2
3
4 5v 5v 5v J9 U2 4
1 5v 5v
PGC-877 5v U3 J10
HEADER 4 0
2 PGC-877
PGD-877 PGD-877 D
D
V U4 THC1
THC2
THDG DG
C1
C2 R16 LCD_1602A C
C
V reset-877 5v 5
9
4
8
3
7
2
6
1 5v
reset-877 SW1 k1
B-up 5
4
3
2
1 4 1 5v 1 : DCD
2 : RXD
3 : TXD
4 : DTR
5 : GND
6 : DSR
7 : RTS
8 : CTS
9 : RI Xoay tay-A
Xoay tay-B
Xoay tay-AA
Xoay tay-BB 1
2
3
4 4 3 17
18
1
2
3
4 reset-628 P1 RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/TOCKI/CMP2
RA5/MCLR/VPP U5 SW2 PGC-628
PGD-628 33pF D4 6
7
8
9
10
11
12
13 LCD - 16x2 - DM1602A RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4/PGM
RB5
RB6/T1OSO/T1CKL/PGC
RB7/T1OSI/PGD OSC1-628 Cotay -A
Cotay -B
Cotay -AA
Cotay -BB
Canhtay -A
Canhtay -B
Canhtay -AA
Canhtay -BB A
B
AA
BB
A
B
AA
BB HEADER 5 18
16
14
12
9
7
5
3 2
4
6
8
11
13
15
17 R17 Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8 A1
A2
A3
A4
A5
A6
A7
A8 DIODE 2 OSC2-628 J11
HEADER 4 5v 3
5v 1k
reset-628 OSC1-628 1 2 15
16 W RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN / 4Mhz 1
19 D
N
G AK 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
D E
E
V S
R E R 1OE
2OE OSC2-628 Cotay
Canhtay
D5 5v Ngontay
Xoay tay
Cotay
Canhtay
BaVai
Vai 2
3
4
5
6
7 U7 R18 SW PUSHBUTTON-SPST-2 0
2 RA0
RA1
RA2
RA3
RA4/T0CLK
RA5/SS D6
LED 0
1 6
1 5
1 4
1 3
1 2
1 1
1 0
7891 3456 Cotay -A
Cotay -B
Cotay -AA
Cotay -BB 33pF PIC16C622_SS 1
2
3
4 74LS244 LED Enter
B-up
B-down
DG
C1
C2 C17
C 1k
B-down 4 1 C
C
V D
N
G 15
16
17
18
23
24
25
26 5v SW3 TXD_MCU
RXD_MCU RC0/T1OSI/T1CLK
RC1/T1OSO
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT J12
HEADER 4 5 3 2 A
B
AA
BB R19
330 5v J13 Ngontay -A
Ngontay -B
Ngontay -AA
Ngontay -BB
Xoay tay-A
Xoay tay-B
Xoay tay-AA
Xoay tay-BB A
B
AA
BB
A
B
AA
BB 2
4
6
8
11
13
15
17 18
16
14
12
9
7
5
3 J14 Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8 A1
A2
A3
A4
A5
A6
A7
A8 5v Canhtay -A
Canhtay -B
Canhtay -AA
Canhtay -BB D7 D8 D9 D10 1
2
3
4 5v PGC-877
PGD-877 33
34
35
36
37
38
39
40 5v U8 D 0
2 RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6/PGC
RB7/PGD LED LED LED LED PGC-628
PGD-628 1
19 1 N
G 1OE
2OE R21 33pF Ngontay
Xoay tay
D11 R20 J15 OSC1-877 19
20
21
22
27
28
29
30 J16
HEADER 4 C
C
V 5v RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7 D12
LED 0
1 reset-628 1k
Enter 1
2
3
4
5 74LS244 4 1 3 5v LED OSC1-877
OSC2-877 13
14 1 HEADER 1 OSC1/CLK
OSC2/CLKOUT 4Mhz 330 R22 SW4 OSC2-877 reset-877 1 8
9
10 10k RE0/RD
RE1/WR
RE2/CS MCLR/VPP HEADER 5 2 3 2 BaVai-A
BaVai-B
BaVai-AA
BaVai-BB A
B
AA
BB
A
B
AA
BB BaVai-A
BaVai-B
BaVai-AA
BaVai-BB
Vai-A
Vai-B
Vai-AA
Vai-BB 33pF 2
4
6
8
11
13
15
17 18
16
14
12
9
7
5
3 1
2
3
4 HEADER 1 Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8 A1
A2
A3
A4
A5
A6
A7
A8 R23
330 11
32 5v
5v PIC16LC64
VDD
VDD J17 5v 1 1
19 D
N
G 1OE
2OE SW5 BaVai
Vai
D13 4 3 1 5v HEADER 4
J18 D
N
G D
N
G D14
LED 0
1 J19 74LS244 LED D15 2
1 1
3 R27 DIODE 1 HEADER 1 1k
reset-877 1 2 Vai-A
Vai-B
Vai-AA
Vai-BB R28
330 1
2
3
4 SW PUSHBUTTON-SPST-2 HEADER 1 C27
C 5v HEADER 4 J21 1 HEADER 1 H ình 6.15. Mạch điều khiển chính GVHD: Ts. Hoàng Minh Trí Trang: 65 Hình 6.14. Các buttons điều khiển bằng tay 2
J 3
J 5
J 123456 123456 123456 O
A O
B O
A O
B -
I I I -
I O
A O
B I I -
I -
I A
V O
A
A
V O
B
A
V A
V C
C
V C
C
V C
C
V A
V
K A
V
K A
V
K A
V
K O
A
T
K O
B
T
K O
B
-
T
K O
A
-
T
K O
B
T
K O
A
T
K O
A
-
T
K O
B
-
T
K 2
D 4
D 6
D 8
D 0
4
8
F
R 0
4
8
F
R 0
4
8
F
R 0
4
8
F
R I 2
Q I 4
Q I 6
Q I 8
Q M
H
O
K
7
.
1 4
R C C
C
V 2 5
4
3
2 1 1
J R
E
P
M
U
J 1 2
O
S 4
O
S 6
O
S 8
O
S I I I I 4 3 4 3 4 3 4 3 1 2 1 2 1 2 1 2 M
H
O
K
2 1
R C 5
4
3
2 1 r
e
p
m
u j I I B
T
K A
T
K A
-
T
K B
-
T
K O
B O
B O
O
A
A -
I I -
I -
-
I
I I I A
V O
A I -
I O
A
A
V
K O
B
A
V A
V
K A
A
V
V
K
K O
B
A
V
K I O
A
A
V A
V E
D
O
7 D
D 1
D 3
D 5
D 1
1
D 2
1
D 3
1
D 9
D 1
3
3
F
R I 1
3
3
F
R 1
3
3
F
R 1
3
3
F
R 1
3
3
F
R 1
3
3
F
R 1
3
3
F
R I 1
Q I 3
Q 5
Q 7
Q I 0
1
Q I 1
1
Q I 2
1
Q I 9
Q 1
3
3
F
R I r
e
p
m
u j . K
7
8 4
R 2 R
E
P
M
U
J 9
J 1 9
8
7
6
5
4
3
2 1 1
O
S 3
O
S 5
O
S 7
O
S 0
1
O
S 1
1
O
S 2
1
O
S I I I I I I I 9
O
S I 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3 K
7 1
R 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 9
8
7
6
5
4
3
2 1 B I I I -
I B I A I A B A -
I I I -
I -
I I A
V
K A
V A
V A
V A
V B
A
V
K A
V
K A
A
V
K 0
1
D 3
R C
C
V A -
I A I I -
I f
p
3
0
1 4
C A
V
K A
A
V A
-
T
K A
A
V
K A
T
K I I A
V I I I I A A I I I I I -
I I -
I A A I I A A I -
I I -
I C
C
V A
V A
V A
V A
V A
A
V
K A
V
K A
A
V
K A
V
K A
T
K A
-
T
K A
T
K A
-
T
K f
p
3
0
1 3
C 1
1 3 5 7 9 1 3
1 5
1 M
S M
S M
S M
S
/
2
x
8 /
4
-
P /
4
-
P /
4
-
P I I I C
C
V 5
W
S 4
W
S D
W
S 2
W
S D
W
S 3
W
S D
W
S 4
J 1
W
S R
E
D
A
E
H 6
W
S f
u
0
0
1 2
C 2 4 6 8 0
1 2
1 4
1 6
1 C
C
V B B I -
I I -
I A
V
K B
A
V
K B
A
V B
T
K A
V B
-
T
K 1
C f
u
1 2
r
e
w
o
p 1
r
e
w
o
p 6
1
5
D
1
4
D
1
D 3
r
e
w
o
p C
C
V R A A A I -
I I -
I A
V A
V A
V
K A
A
V
K A
T
K A
-
T
K 4
R 5
R 6
R 1 2 1 2 1 2 6
J 7
J 8
J Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh GVHD: Ts. Hoàng Minh Trí Trang: 66 Hình 6.17: Sơ đồ mạch công suất giao tiếp động cơ khớp 4, 5 và 6 1 1 R1 R2 J1 C 30v 1kohm 1 2 1 30V 23456789 2345 R3 C 30v 30v 4.7kohm 2345 C1
100UF C2
1UF ISO1 DKNT-AI 1 4 U1 NT-A 2 3 DKNT-B ISO2 1 4 NT-B mass30v mass30v 16
15
14
13
12
11
10 1
2
3
4
5
6
7 1C
2C
3C
4C
5C
6C
7C 1B
2B
3B
4B
5B
6B
7B J21 J2 2 3 9 SW1 ULN2003A D
N
COMG 1 2 30v C3 J22 8 DKNT-A 104k 1 2 JUMPER NT-A
NT-B
NT--A
NT--B DKNT--A DKNT-AI
DKNT--AI
DKNT-AI
DKNT--AI ISO3 mass30v 30v DKNT--AI 6
5
4
3
2
1 JUMPER 1 4 NGONTAY
SW2 NT--A 2 3 DKXT-A U2 DKXT--A DKXT-AI
DKXT--AI
DKXT-AI
DKXT--AI DKNT--B ISO4 4 1 NT--B 16
15
14
13
12
11
10 J7 1
2
3
4
5
6
7 XOAY TAY 1C
2C
3C
4C
5C
6C
7C 1B
2B
3B
4B
5B
6B
7B XT-A
XT-B
XT--A
XT--B 9 SW3 30v D
N
COMG 2 3 6
5
4
3
2
1 DKCT-A ULN2003A C4 8 104k DKCT-AI
DKCT--AI
DKCT-AI
DKCT--AI DKCT--A
DKCT--A COTAY J13 TIN HIEU DIEU KHIEN CT-A
CT-B
CT--A
CT--B ISO5 J12 30v XT-A DKXT-AI 6
5
4
3
2
1 1 4 IRF540 Q1 D1 DKNT-B
DKNT--B
DKXT-B
DKXT--B
DKCT-B
DKCT--B DIODE mass24v dc 2 3 DKNT-A
DKNT--A
DKXT-A
DKXT--A
DKCT-A
DKCT--A
start
ledstart 2
4
6
8
10
12
14
16 1
3
5
7
9
11
13
15 24v dc mass30v 30v mass30v DKXT-B XT-B ISO6 R4 4 1 J14 1KOHM D2 SW4 IRF540 CONG TAC NGUON 4 Q2 DIODE 30v xoay 1 2 2 3 1
2
3 D4 5 AMPE D3
LED POWER mass30v - + ct 30v 30V XOAY CHIEU 4 1 ISO7 XT--A DKXT--AI 1 4 D5 IRF540 30v xoay 2 Q3 DIODE 3 C5 C6 C7 2 3 4700UF 4700uf 104pf -400v mass30v ISO8 mass30v XT--B DKXT--B IRF540 1 4 Q4 D6 DIODE 2 3 mass30v 220VAO 220induong
220inam J15 1
2 ISO9 CT-A DKCT-AI 1 4 IRF540 NGUON1 220outduong
220outam Q5 D7 J16 1
2 DIODE 2 3 NGUON2 220outduong
220outam J17 1
2 mass30v NGUON3 220outduong
220outam J18 1
2 CT-B DKCT-B ISO10 IRF540 1 4 Q6 D8 DIODE 2 3 NGUON4 220outduong
220outam 1
2 J19 mass30v ISO11 CT--A DKCT--AI 1 4 Q7 IRF540 D9 DIODE 2 3 mass30v CT--B DKCT--B IRF540 ISO12
4 1 D10 Q8 DIODE 2 3 mass30v 2 3 4 5 6 7 8 9 R5 RESISTOR SIP 9 J20 1 2 1 mass30v JUMPER 4 4 4 4 24v dc 220induong 220inam 220inam 220induong 3 3 3 3 5v dc 220outduong 220outduong 220outam 220outam 5
8 5
8 5
8 5
8 220induong 220inam 220induong 6 6 6 6 U3 220inam 5 220outduong 220outduong 7 7 7 220outam 7 220outam p512 start 1 4 24v dc 24v dc 24v dc 24v dc 1
2 1
2 1
2 1
2 14
1 C
C
V CLKA
CLKB ledstart C8 1uf ISO13 D11
4 AMPE 12
9
8
11 QA
QB
QC
QD 2 3 kich relay kich relay kich relay R6
500ohm RELAY DPDT
LS1 RELAY DPDT
LS2 RELAY DPDT
LS3 RELAY DPDT
LS4 kich relay 2
3
6
7 D
N
G R01
R02
R91
R92 kich relay R7
1kohm R8
4.7kohm SW5 0
1 74LS90 Q9
h1061 2 D12 CONG TAC KHOI DONG 220induong
220inam mass24v dc mass24v dc mass24v dc 24v dc U4 LM7812/TO U5 LM7805/TO 5v dc D13 - + 4 1 1 3 1 3 VIN VIN D VOUT
N
G D VOUT
N
G C11 C12 R9 LED C10
1000uf 10uf 1uf 2 2 C9
104k 1ampe 3 R mass24v dc Hình 6.16: Sô ñoà maïch coâng suaát cuûa ñoäng cô khôùp 1, 2 và 3 GVHD: Ts. Hoàng Minh Trí Trang: 67 Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh POWER ON 6.7 Lưu đồ giải thuật: Xuất ra LCD
(Lựa chọn chế độ hoat động) Yes Up= 0 Điều khiển bằng tay
(Up= 0) No Yes Down=0 Điều khiển tự động
(Down= 0) GVHD: Ts. Hoàng Minh Trí Trang: 68 Khởi tạo ngõ vào Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Khởi tạo LCD_ Manual
Count = 5 Yes Nếu Up = 0 Count= Count +1
If (Count> 10 (cid:198)Count= 5) Yes Count= Count -1
If (Count< 5(cid:198) Count= 10) LƯU ĐỒ GIẢI THUẬT ĐIỀU KHIỂN BẰNG TAY Yes Count= 5 Hiển thị LCD “DC VAI”
(Count= 5) Yes Count= 6 Hiển thị LCD “DC BA VAI”
(Count= 6) Yes Count= 7 Hiển thị LCD “DC Khuỷu tay”
(Count= 7) Yes Count= 8 Hiển thị LCD “DC Cổ tay”
(Count= 8) Yes Count= 9 Hiển thị LCD “DC Xoay tay”
(Count= 9) Yes Count = Hiển thị LCD “DC Ngón tay”
(Count= 10) No Enter Yes GVHD: Ts. Hoàng Minh Trí Trang: 69 Down = 0 Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Điều khiển “DC Vai” Count= 5 Điều khiển “DC Bả vai” Count= 6 Điều khiển “DC Khuỷu tay” Count= 7 Điều khiển “DC Cổ tay” Count= 8 Điều khiển “DC Xoay tay” Count= 9 GVHD: Ts. Hoàng Minh Trí Trang: 70 Count=10 Điều khiển “DC Ngón tay” Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh No Enter Yes Khởi tạo LCD “ Auto” Gắp vật 1 Di chuyển đến vị trí đặt vật 1 Đặt vật 1 xuống Di chuyển đến vị trí vật 2 Gắp vật 2 Di chuyển đến vị trí đặt vật 2 GVHD: Ts. Hoàng Minh Trí Trang: 71 Đặt vật 2 xuống Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh #include <16F877a.h> #device 16F877*=16 ADC=10 #include #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) //*********************************** //Khai bao bien //*********************************** #bit Enter = 0x07.0//RC0 #bit Up = 0x07.1//RC1 #bit Down = 0x07.2//RC2 #bit DG = 0x07.3//RC3 #bit C1 = 0x07.4//RC4 #bit C2 = 0x07.5//RC5 #bit NGONTAY = 0x05.0//RA0 #bit XOAYTAY = 0x05.1//RA1 #bit COTAY = 0x05.2//RA2 #bit CANHTAY = 0x05.3//RA3 #bit BAVAI = 0x05.4//RA4 #bit VAI = 0x05.5//RA5 #bit A = 0x06.0//RB0 #bit B = 0x06.1//RB0 #bit AA = 0x06.2//RB0 #bit BB = 0x06.3//RB0 #bit RS=0x09.2 //RS= 0 thi thang ghi IR duoc chon,=1 thi thanh ghi DR dc
chon GVHD: Ts. Hoàng Minh Trí Trang: 72 #bit RW=0x09.1 //RW=1 la read, RW=0 la write Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh #bit E= 0x09.0 //e=1 thi cho phep doc,e=0 cho phep ghi #byte lcd_data = 0x08 // Dia chi PORTd //************************************************ //Cac ham lien quan toi LCD byte lcd_read_byte(); void lcd_send_byte( byte address, byte n ); void lcd_init(); void lcd_gotoxy( byte x, byte y); void lcd_putc( char c); void lcd_refresh();//****************************** /* Doc mot byte tu LCD */ byte lcd_read_byte() { byte read_byte; set_tris_D(0xFF); // PORTD = input RW = 1; delay_cycles(1); E = 1; delay_cycles(1); read_byte = lcd_data; E = 0; set_tris_D(0x00); // PORTD = output return(read_byte); } /* Goi 1byte den LCD */ void lcd_send_byte( byte address, byte n ) { RS = 0; GVHD: Ts. Hoàng Minh Trí Trang: 73 while ( bit_test(lcd_read_byte(),7) ) ;//kiem tra xem co BF co bat len hay
khong Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh RS = address; delay_cycles(1); RW = 0; delay_cycles(1); E = 0; lcd_data = n; delay_cycles(1); E = 1; delay_us(20); E = 0; } /* Khoi tao ban dau cho LCD */ void lcd_init() { byte const lcd_init_string[4] = {0x38, 0x0C, 1 , 6}; byte i; set_tris_D(0x00); RS = 0; RW = 0; E = 0; delay_ms(15); for(i=1;i<=3;++i) { lcd_data = 3; delay_cycles(1); E = 1; delay_us(2); E = 0; delay_ms(5); } lcd_data = 2; delay_cycles(1); GVHD: Ts. Hoàng Minh Trí Trang: 74 E = 1; Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh delay_us(2); E = 0; delay_ms(5); for(i=0;i<=3;++i) { lcd_send_byte(0,lcd_init_string[i]); } } /* Nhay den vi tri (x,y) tren LCD,nhay nham y se bao loi */ void lcd_gotoxy( byte x, byte y) { byte address; switch(y) { case 1: address=0; //dia chi bat dau cua vung ram hang 1 0x00 address+=x-1;//cot thu n nhung gia tri dia chi la n-1 lcd_send_byte(0,0x80|address); break; case 2: address=0x40; //dia chi bat dau cua vung ram hang 2 0x040 address+=x-1;//cot thu n nhung gia tri dia chi la n-1 lcd_send_byte(0,0x80|address); break; default :lcd_init(); lcd_putc("ERROR Y POSITION"); while(true); // Dung tai day! } } /* Hien thi ki tu hoac chuoi ra LCD */ void lcd_putc( char c) GVHD: Ts. Hoàng Minh Trí Trang: 75 { Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh lcd_send_byte(1,c); } /* Hien thi ki tu hoac chuoi ra LCD */ void lcd_refresh() { lcd_send_byte(0,1); lcd_send_byte(0,6); } //******************************************** //Chuyen du lieu xuat LCD //******************************************** void delaystep1() { delay_us(1800); } void delaystep2() { delay_us(2500); } //******************************************** //Chuyen du lieu xuat LCD //******************************************** void delaybuttom() { delay_ms(90); } VOID STEPPER1(int D,int16 N) { int8 R0; R0=0B00110011; GVHD: Ts. Hoàng Minh Trí Trang: 76 IF(D==0) Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh { LOOP11: OUTPUT_B(R0); delaystep1(); N=N-1; IF(N==0) {OUTPUT_B(0x00); GOTO THOAT1;} rotate_left (&R0, 1); GOTO LOOP11; } IF(D==1) { LOOP12: OUTPUT_B(R0); delaystep1(); N=N-1; IF(N==0) {OUTPUT_B(0x00); GOTO THOAT1;} rotate_right (&R0, 1); GOTO LOOP12; } THOAT1: DELAY_MS(1); GVHD: Ts. Hoàng Minh Trí Trang: 77 } Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh VOID STEPPER2(int D,int16 N) { int8 R0; R0=0B00110011; IF(D==0) { LOOP21: OUTPUT_B(R0); delaystep2(); N=N-1; IF(N==0) {OUTPUT_B(0x00); GOTO THOAT2;} rotate_left (&R0, 1); GOTO LOOP21; } IF(D==1) { LOOP22: OUTPUT_B(R0); delaystep2(); N=N-1; IF(N==0) {OUTPUT_B(0x00); GOTO THOAT2;} rotate_right (&R0, 1); GOTO LOOP22; } GVHD: Ts. Hoàng Minh Trí Trang: 78 THOAT2: Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh DELAY_MS(1); } //***************************************** /* Ham main */ //***************************************** void main () { int16 count,r; int8 i,R1; //Khoi tao Port vao ra set_tris_b (0X00); set_tris_a (0X00); set_tris_c (0Xff); set_tris_d (0X00); set_tris_e (0X00); OUTPUT_B(0x00); OUTPUT_A(0xFF); //Chon che do hoat dong khi bat dau chuong trinh; Nhan0: lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Mode Select: ");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("Up:Manu-Dw:Auto ");//xuat dong chu ra If(Up==0) { delaybuttom(); If(Up==0) {Goto Manual;} } If(Down==0) GVHD: Ts. Hoàng Minh Trí Trang: 79 { delaybuttom(); Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh If(Down==0) {Goto Autos; } } goto nhan0; //Che do dieu khien bang tay; Manual: lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh //Doan chuong trinh dieu khien count=5; OUTPUT_B(0x00); OUTPUT_A(0xff); WHILE(TRUE) { OUTPUT_B(count); If(Up==0) { delaybuttom(); If(Up==0) { count=count+1;} } If(Down==0) { delaybuttom(); If(Down==0) { count=count-1;} } If( count<5) {count=10;} If(count>10 ) {count=5;} GVHD: Ts. Hoàng Minh Trí Trang: 80 If(Count==5) Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh { lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("DC Vai");//xuat dong chu ra man hinh } If(Count==6) { lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("DC Ba Vai");//xuat dong chu ra man hinh } If(Count==7) { lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("DC Khuy tay");//xuat dong chu ra man hinh } If(Count==8) { lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("DC Co Tay");//xuat dong chu ra man hinh } If(Count==9) GVHD: Ts. Hoàng Minh Trí Trang: 81 { lcd_init(); //khoi tao man hinh LCD Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("DC Xoay Tay");//xuat dong chu ra man hinh } If(Count==10) { lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc("Manual");//xuat dong chu ra man hinh lcd_gotoxy(1,2); lcd_putc("DC Ngon Tay");//xuat dong chu ra man hinh } If(Enter==0) { delaybuttom(); If(Enter==0) { goto Ctdieukhiendongco;} } } Ctdieukhiendongco: R1=0B00110011; If(Count==5) {OUTPUT_A(0b11111110); while(true) { If(Up==0) { rotate_left (&R1, 1); OUTPUT_B(R1); GVHD: Ts. Hoàng Minh Trí Trang: 82 delaystep1(); Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh } If(Down==0) { rotate_right (&R1, 1); OUTPUT_B(R1); delaystep1(); } If(Up==1&&Down==1) {OUTPUT_B(0x00);} If(Enter==0) { DELAY_MS(100); If(Enter==0) { goto Manual;} } } } If(Count==6) {OUTPUT_A(0b11111101); while(true) { If(Up==0) { rotate_left (&R1, 1); OUTPUT_B(R1); delaystep1(); } If(Down==0) { rotate_right (&R1, 1); GVHD: Ts. Hoàng Minh Trí Trang: 83 OUTPUT_B(R1); Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh delaystep1(); } If(Up==1&&Down==1) {OUTPUT_B(0x00);} If(Enter==0) { DELAY_MS(100); If(Enter==0) { goto Manual;} } } } If(Count==7) {OUTPUT_A(0b11111011); while(true) { If(Up==0) { rotate_left (&R1, 1); OUTPUT_B(R1); delaystep1(); } If(Down==0) { rotate_right (&R1, 1); OUTPUT_B(R1); delaystep1(); GVHD: Ts. Hoàng Minh Trí Trang: 84 } Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh If(Up==1&&Down==1) {OUTPUT_B(0x00);} If(Enter==0) { delaybuttom(); If(Enter==0) { goto Manual;} } } } If(Count==8) {OUTPUT_A(0b11110111); while(true) { If(Up==0) { rotate_left (&R1, 1); OUTPUT_B(R1); delaystep2(); } If(Down==0) { rotate_right (&R1, 1); OUTPUT_B(R1); delaystep2(); } If(Up==1&&Down==1) GVHD: Ts. Hoàng Minh Trí Trang: 85 {OUTPUT_B(0x00);} Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh If(Enter==0) { delaybuttom(); If(Enter==0) { goto Manual;} } } } If(Count==9) {OUTPUT_A(0b11101111); while(true) { If(Up==0) { rotate_left (&R1, 1); OUTPUT_B(R1); delaystep2(); } If(Down==0) { rotate_right (&R1, 1); OUTPUT_B(R1); delaystep2(); } If(Up==1&&Down==1) {OUTPUT_B(0x00);} If(Enter==0) { delaybuttom(); GVHD: Ts. Hoàng Minh Trí Trang: 86 If(Enter==0) Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh { goto Manual;} } } } If(Count==10) {OUTPUT_A(0b11011111); while(true) { If(Up==0) { rotate_left (&R1, 1); OUTPUT_B(R1); delaystep2(); } If(Down==0) { rotate_right (&R1, 1); OUTPUT_B(R1); delaystep2(); } If(Up==1&&Down==1) {OUTPUT_B(0x00);} If(Enter==0) { delaybuttom(); If(Enter==0) { goto Manual;} } } } GVHD: Ts. Hoàng Minh Trí Trang: 87 ///////////////////////////////////////////////////// Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Autos: lcd_init(); //khoi tao man hinh LCD lcd_gotoxy(1,1); lcd_putc(" Autos");//xuat dong chu ra man hinh nhan: If(Down==0) { DELAY_MS(80); If(Down==0) { Goto Nhan0;}} If(Enter==0) { DELAY_MS(80); If(Enter==0) { ////////////////////////////////////////////////// //Doan thu nhat/////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=0; r=860; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=1; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=1; r=200; GVHD: Ts. Hoàng Minh Trí Trang: 88 STEPPER2(i,r); Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh //Ngon tay; OUTPUT_A(0b11011111); i=0; r=2400; STEPPER2(i,r); /////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=1; r=860; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=0; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=0; r=200; STEPPER2(i,r); /////////////////////////////////// //Vai; OUTPUT_A(0b11111110); i=1; r=2605; STEPPER1(i,r); /////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=0; GVHD: Ts. Hoàng Minh Trí Trang: 89 r=830; Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=1; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=1; r=200; STEPPER2(i,r); //Ngon tay; OUTPUT_A(0b11011111); i=1; r=2400; STEPPER2(i,r); /////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=1; r=830; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=0; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=0; r=200; GVHD: Ts. Hoàng Minh Trí Trang: 90 STEPPER2(i,r); Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh //////////////////////////////////////// //Doan thu hai//////////////////// //Vai; OUTPUT_A(0b11111110); i=1; r=2900; STEPPER1(i,r); /////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=0; r=860; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=1; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=1; r=200; STEPPER2(i,r); //Ngon tay; OUTPUT_A(0b11011111); i=0; r=2400; STEPPER2(i,r); /////////////////////////////////// GVHD: Ts. Hoàng Minh Trí Trang: 91 //Bavai; Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh OUTPUT_A(0b11111101); i=1; r=860; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=0; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=0; r=200; STEPPER2(i,r); /////////////////////////////////// //Vai; OUTPUT_A(0b11111110); i=1; r=2630; STEPPER1(i,r); /////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=0; r=860; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=1; r=900; STEPPER1(i,r); GVHD: Ts. Hoàng Minh Trí Trang: 92 //Co tay; Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh OUTPUT_A(0b11110111); i=1; r=200; STEPPER2(i,r); //Ngon tay; OUTPUT_A(0b11011111); i=1; r=2400; STEPPER2(i,r); /////////////////////////////////// //Bavai; OUTPUT_A(0b11111101); i=1; r=860; STEPPER1(i,r); //Khuy vai; OUTPUT_A(0b11111011); i=0; r=900; STEPPER1(i,r); //Co tay; OUTPUT_A(0b11110111); i=0; r=200; STEPPER2(i,r); /////////////////////////////////// //Vai; OUTPUT_A(0b11111110); i=0; r=8135; STEPPER1(i,r); GVHD: Ts. Hoàng Minh Trí Trang: 93 } Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh } goto nhan; GVHD: Ts. Hoàng Minh Trí Trang: 94 } Chương 8: KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh Noäi dung cuaû ñeà taøi ñöôïc hình thaønh töø nhöõng vaán ñeà ñöôïc giaûi quyeát moät caùch tương đối. Caùc vaán ñeà trong ñeà taøi ñöôïc giaûi quyeát vaø trình baøy töø toång quaùt ñeán cuï theå. Trong töøng vaán ñeà, caùc tình huoáng ñöôïc giaûi quyeát theo töøng böôùc. Ñeà taøi bao goàm 6 chöông ñöôïc trình baøy, nhöng caùc vaán ñeà troïng taâm coát loõi taäp
trung vaøo caùc chöông 3,4 vaø 5. Trong chöông 3 caùc khaùi nieäm vaø nhöõng kieán thöùc cô baûn
veà tay maùy ñöôïc trình baøy, vaø trong chöông 6 caáu truùc maïch ñieàu khieån ñöôïc giôùi thieäu.
Moâ hình caáu truùc maïch ñöôïc trieån khai thaønh nhöõng maïch ñieän cuï theå. Caùch söû duïng
nhöõng linh kieän, thieát bò caáu truùc neân maïch ñieàu khieån ñöôïc ñeà caäp chæ bao goàm nhöõng
noäi dung caàn thieát phuïc vuï tröïc tieáp cho ñeà taøi vaø vieäc tính toaùn, choïn caùc linh kieän trong
maïch coâng suaát cuõng raát quan troïng trong quaù trình thöïc thi ñeà taøi. Caùnh tay maùy; seõ khoâng bao giôø hoaït ñoäng neáu khoâng coù chöông trình ñieàu khieån ñöôïc xaây döïng trong chöông 6. Caùc böơc chuaån bò thi coâng maïch vaø nhöõng thao taùc caàn thieát ñeå ñieàu khieån caùnh tay maùy ñöôïc trình baøy trong chöông 6. 8.2 KẾT QUẢ THỰC HIỆN:
Sau ba tháng thực hiện đề tài, tập luận văn đã được hoàn tất
- Vật được di chuyển có kích thước nằm trong khoảng từ 0 (cid:198) 40mm, trọng lượng khoảng từ 0 (cid:198) 400g - Có hai chế độ điều khiển:
a) Manual: Người điều khiển có thể điều khiển trực tiếp bằng cách nhấn nút trực tiếp từ bàn phím. Có thể gắp vật ở bất kỳ vị trí nào, do người điều khiển chọn. b) Chế độ điều khiển tự động(Autos) Cánh tay máy sẽ thực hiện thao tác gắp vật taị
hai vị trí a và đặt tới vị trí mới b, gắp vật tại c và đặt tại vị trí mới d, theo đúng lộ trình định
trước. * Ưu điểm điểm của cánh tay máy. 1. Cánh tay hoạt động đúng như ý đồ thiết kế.
2. Cánh tay hoạt động khà êm ái chính xác khi thao tác gắp vật.
3. Có thể hoạt động tốt ở cả hai chế độ manual và autos.
4. Cánh tay được thiết kế khá đẹp mắt, và nhỏ gọn phù hợp đối với đề tài tốt nghiệp.
* Khuyết điểm của cánh tay máy: 1. Tốc độ hoạt động chưa nhanh.
2. Hoạt động lập lại nhiều lần (ở chế độ autos) sẽ dẫn đến sai số tích lũy sau 20 lần lập lại sẽ bị sai số khoảng 1 độ. 3. Công suất thấp, gắp được vật có trọng lượng tương đối nhỏ.
4. Khớp ngón tay hoạt động chậm hơn so với các khớp còn lại. GVHD: Ts. Hoàng Minh Trí Trang: 95 5. Cành tay được thiết kế chỉ hoạt động từng khớp một, nên dẫn đến tốc độ chưa cao, nên không linh hoạt lắm. 8.3 MOÄT VAØI ÑEÀ NGHÒ: Duø ñaõ coá gaéng heát söùc nhöng do thôøi gian coù haïn neân vieäc thöïc hieän ñeà taøi phaûi
döøng laïi. Chuùng toâi, nhöõng ngöôøi thöïc hieän ñeà taøi hy voïng nhöõng khoùa sau seõ phaùt trieån
hoaøn thieän hôn ñeå öùng duïng vaøo trong saûn xuaát. Sau ñaây laø moät vaøi ñeà nghò cho nhöõng ai muoán phaùt trieån ñeà taøi: 3. Ñieàu khieån linh hoaït hôn cho taát caû caùc khôùp hoaït ñoäng cuøng luùc, taïo söï 5. Dùng motor sevor AC để có công suất lớn và tốc độ đáp ứng nhanh. 1. Duøng vi ñieàu khieån PIC ñeå thieát keá maïch ñieàu khieån giao tiếp may tính.
2. Thieát keá phaàn giao tieáp vôùi maùy tính taïo söï linh hoaït trong ñieàu khieån.
linh hoaït vaø taêng ñöôïc toác ñoä hoaït ñoäng cuûa caùnh tay.
4. Thiết kế băng tải di chuyển vật kết hợp cánh tay máy gắp vật. GVHD: Ts. Hoàng Minh Trí Trang: 96 Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh TÀI LIỆU THAM KHẢO Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh TpHCM. Ts. Nguyễn Thiện Thành, Trí tuệ nhân tạo và hệ chuyên gia. NXB Giáo dục. 1. Ts.Nguy ễn Đức Thành , Đo lường và điều khiển bằng máy tính.NXB ĐH Qu ốc gia TS.Lê Hoài Quốc, Kỹ thuật người máy và Robot Công nghiệp. NXB ĐH Quốc gia 2. TpHCM. Điện tử công xuất I v à II, (tài liệu lưu hành nội bộ) Trường đại học bách khoa 3. TpHCM. Ks.Trần xuân Thường, Tài liệu sử dụng CCS tiếng việt (tài liệu lưu hành nội bộ) 4. Trường đại học KHTN. Ks.Phan Vinh Hiếu, Cấu trúc phần cứng PIC16F877A(tài liệu lưu hành nội bộ) 5. Trường đại học KHTN. PGS.TS. Nguyễn Hữu Phương ,Mạch số ,Nhà Xuất Bản Thống Kê. 6. Diển đàn điện tử .com 7. Google + Datasheet.com (Internet) 8. GVHD: Ts. Hoàng Minh Trí Trang: 97 9.ĐỘNG CƠ BƯỚC
THIẾT KẾ VÀ THI CÔNG
7.1 Tính toan sơ bộ :
Caáu truùc chuyeån ñoäng toaøn boä (Thaân ngöôøi) caáu truùc naøy thöïc hieän chuyeån ñoäng
ñem toaøn boä tay maùy (tay ngöôøi) ñeán vò trí laøm vieäc. Caáu truùc naøy heát söùc ña daïng vaø
thoâng thöôøng neáu khoâng phaûi laø tay maùy hoaït ñoäng trong heä thoáng maø chuyeån ñoäng naøy
caàn coù söï kieåm soaùt ngöôøi ta thöôøng coi tay maùy laø ñöùng yeân khaâu 0 goïi giaù coá ñònh cuûa
tay maùy.
Caáu truùc xaùc ñònh haøm keïp bao goàm caùc khôùp AB vaø F caùc khaâu 1, 2 vaø 3,
chuyeån ñoäng cuûa caáu truùc naøy nhaèm ñem theo baøn keïp tôùi vò trí laøm vieäc. Do giaû thieát veà
Tuy nhieân trong thöïc teá, ñoái vôùi caùc tay maùy chuyeân duøng hay chuyeân moân hoùa vaø
ñaëc bieät ñaûm baûo giaù thaønh ñaàu tö vaøo tay maùy thaáp, ngöôøi ta khoâng nhaát thieát luùc naøo
cuõng phaûi cheá taïo tay maùy coù ñuû soá ba khôùp ñoäng cho caáu truùc xaùc ñònh vò trí.
7.2 Vaän toác vaø moment quay cuûa ñoäng cô böôùc;
* Vaän toác :
Toác ñoä ñaùp öùng cuûa ñoäng cô böôùc phuï thuoâc vaøo theá cuûa xung ñieän kích
,muoán ñoäng cô ñaùp öùng nhanh ta phaûi caáp xung ñieän theá cao hôn.Tuy nhieän ñeå
baûo veä ñoäng cô chuùng ta neân caáp theá ñuùng nhö nhaø saûn xuaát quy ñònh.
* Moment quay :
Moment quay cuûa caùnh tay maùy phuï thuoäc vaøo 3 yeáu toá:
Coâng thöùc tính moment :
-Trong ñoù Tf laø moment cuûa löïc ma saùt : Tf = F • r
* Giới thiệu động cơ công tác:
Hình 7.6 Mô hình cánh tay máy hoàn chỉnh.
LƯU ĐỒ GIẢI THUẬT ĐIỀU KHIỂN TỰ ĐỘNG
Chương trình vi điều khiển PIC .
8.1 TOÙM TAÉT ÑEÀ TAØI:
Qua 12 tuaàn thöïc hieän nghieân cöùu ñeà taøi, taäp luận văn ñöôïc hoaøn taát. Nhöõng vaán
ñeà coøn môùi naåy sinh trong quaù trình thöïc hieän ñeà taøi. Nhöõng vaán ñeà naøy khoâng chæ laø ñoäng
löïc kích thích nieàm say meâ trong quaù trình nghieân cöùu maø coøn laø söï thaùch thöùc veà khaû
naêng cuaû baûn thaân ngöôøi nghieân cöùu.