Professional Documents
Culture Documents
ĐỀ TÀI:
THIẾT KẾ CÁNH TAY ROBOT GẮP KHỐI
DÙNG VI ĐIỀU KHIỂN PIC 16F877A
http://www.ebook.edu.vn
BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐẠI HỌC QUỐC GIA TP.HCM ĐỘC LẬP- TỰ DO- HẠNH PHÚC
TRƯỜNG ĐH BÁCH KHOA ----oOo----
----oOo----
Số: ……./BKĐT
KHOA : ĐIỆN-DIỆN TỬ NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP
BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG
http://www.ebook.edu.vn
Nơi lưu trữ luận án: ……………………...
TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT
NAM
KHOA ĐIỆN- ĐIỆN TỬ ĐỘC LẬP- TỰ DO- HẠNH PHÚC
----oOo---- ----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:………………………………………………
……………………………………………………..………………………………
8. Đề nghị: Được bảo vệ: Bổ xung thêm để bảo vệ không được 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
http://www.ebook.edu.vn
TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT
NAM
KHOA ĐIỆN- ĐIỆN TỬ ĐỘC LẬP- TỰ DO- HẠNH PHÚC
----oOo---- ----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):…………………..
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:……………………………………………….
……………………………………………………..…………………………………
8. Đề nghị: Được bảo vệ: Bổ xung thêm để bảo vệ không được 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)
http://www.ebook.edu.vn
Nhận xét của giáo viên hướng dẫn
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
http://www.ebook.edu.vn
Nhận xét của giáo viên phản biện
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
http://www.ebook.edu.vn
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.
http://www.ebook.edu.vn
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.
http://www.ebook.edu.vn
TOÙM TAÉT LUAÄN VAÊN
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”
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
maùy sử dụng step motor để di chuyển sản phẩm.
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
tương tự khi ấn phím enter.
Ứng dụng phần mềm PCWH 3.227 sử dụng ngôn ngữ lập trình C (CCSC) để
biên dịch và nạp cho vi xử lí PIC.
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ể
lỏng LCD.
Ứng dụng phần mềm OrCAD hổ trợ thiết kế mạch in.
http://www.ebook.edu.vn
MỤC LỤC
Chương 1: TỔNG QUAN Trang
Chương 5: BIÊN DỊCH PCWH 3.227 SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C .
5.1 Giới thiệu chung về ngôn ngữ C. 26
5.2 Cách viết một chương trình trong CCSC. 28
5.3 Chương trình nạp Vi điều khiển PIC qua cổng LPT WinPic800 42
5.4 Bài tập minh họa điều khiển dãy 8 LED đơn 46
http://www.ebook.edu.vn
Chương 7: THÍÊT KẾ VÀ THI CÔNG
7.1 Tính toán sơ bộ cánh tay máy. 58
7.2 Tính vận tốc và moment của động cơ bước . 59
7.3 Tính toán phần cơ của cánh tay máy. 60
7.4 Mô hình thi công cánh tay máy. 61
7.4 Thiết kế bo mạch điều khiển cho cánh tay máy. 68
7.6 Lưu đồ giải thuật điều khiển. 70
7.6 Chương trình điều khiển. 74
http://www.ebook.edu.vn
Báo cáo luận văn tốt nghiệp. SVTH: Dương Bình Thạnh
CHƯƠNG 1:
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ø
loaïi tay maùy coù kieåu ñieàu khieån ñôn giaûn thuoäc theá heä thöù nhaát .
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.
1.2 TÌNH HÌNH PHAÙT TRIEÅN CUÛA ROBOT TREÂN THEÁ GIÔÙI
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ö :
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:
Xe töï haønh Spirit cuûa NASA ñang thaùm hieåm sao hoûa
Hình 2.2
Hình 2.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à
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ø.
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.
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
# 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
# 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.
• 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
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.
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.
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
thúc ngắt và cho phép xóa cờ RBIF.
3.3.3 Port C và thanh ghi TRISC
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.
• 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.
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.
Nguồn
1 Vss Cung cấp nguồn, nối đất (0V)
cấp
Nguồn
2 Vdd Cung cấp nguồn, nguồn dương (Vcc = +5V)
cấp
Nguồn Cung cấp nguồn điện áp tham chiếu điều chỉnh độ
3 Vo
cấp tương phản LCD
Chọn thanh ghi (Register Select)
4 RS Ngõ vào - RS=HIGH: Chế độ đọc - RS=LOW: Chế độ
truyền lệnh
Bus điều khiển đọc/ghi (Read/Write Control Bus)
5 R/W Ngõ vào
- R/W=HIGH: Chế độ đọc - R/W=LOW: Chế độ ghi
6 E Ngõ vào Bật dữ liệu (Data Enable)
7 DB0 Bus dữ liệu ba trạng thái hai chiều vào/ra
: : Ngõ - Chế độ giao tiếp 8 bit, DB0-DB7 đều được sử dụng
vào/ra - Chế độ giao tiếp 4 bit, DB4-DB7 được sử dụng,
14 DB7 DB0-DB3 để hở
BLA Nguồn
15 Cung cấp nguồn cho cực dương đèn nền
(+) cấp
BLK (– Nguồn
16 Cung cấp nguồn cho cực âm đèn nề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
Điện áp cấp nguồn: Vdd: 0V ~ 6V [Vss=0V]
Điện áp tín hiệu ngõ vào: Vin: 0V ~ Vdd (V) [Vss=0V]
O
Nhiệt độ khi hoạt động: Thđ: -20 Æ 70 C
Nhiệt độ khi lưu trữ: Tlt: -30 Æ 80OC
C) Đặc trưng về điện
Điện thế hoạt động: Vdd = 5V [Min=4.7V ~ Max=5.3V] Æ Vdd
Điện thế ngõ vào mức cao: VIH=0.8Vdd Æ RS, R/W, E, DB0-DB7
Điện thế ngõ vào mức thấp: VIL=Vss~0.5V Æ RS, R/W, E, DB0-DB7
Điện thế ngõ ra mức cao: VOH=0.7Vdd ~ Vdd Æ RS, R/W, E, DB0-DB7
Điện thế ngõ ra mức thấp: VOL=Vss~0.5V Æ RS, R/W, E, DB0-DB7
Dòng hoạt động: Idd = 1.3mA [Max=3mA] Æ 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.
b) Tập lệ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.
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.
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).
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
RS = 0 : Bật chế độ truyền lệnh
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.
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
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
trình mới.
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
ô 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).
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,...
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.
Dưới đây là một mẫu ví dụ bằng hình để tham
khảo.
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ù
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:
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) // Thạch anh dao động tần số
cao 4 MHz
...
int16 a,b;
#USE DELAY(CLOCK=SPEED)
Æ 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
Ta có: 1 chu kỳ lệnh = 4 chu kỳ xung clock
= 4*(1/4000000)
= 1 us (micô giây)
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
Æ 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
HS : Dao động thạch anh tần số cao.
NOPROTECT : Không bảo vệ mã
NOWDT : Không có giám sát thời gian.
…
Chi tiết thêm có thể tra cứu trong HELP > Preprocessor cmds
#BYTE id=x
Æ 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.
Ví dụ:
#byte port_b=0x06
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.
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;
#BIT id=x.y
Æ 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.
Ví dụ 1:
#bit co_timer0=0xb.2
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; // a=00010100b
#bit b=a.4 // địa chỉ bit 4 của a
Nếu gán b=0; thì bit 4 của a=0 Æ 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; // địa chỉ Port B
#bit b0=cong_b.1 // b0 – bit 0 c ủa Port B
#bit b1=cong_b.1 // b1 – bit 1 c ủa Port B
#LOCATE id=x
Æ 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.
Ví dụ 1:
#locate t=0x020 // địa chỉ thanh ghi đa mục đích
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 :
int16 ccp1;
#locate ccp1=0x15
Khi gán giá trị cho ccp1, chương trình sẽ tự động gán vào cả 2 thanh ghi.
Ví dụ:
ccp1=1133; // ccp1 = 0000 0100 0110 1101 b
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
Æ 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
Æ 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ụ:
int a=1; // a = 0000 0001 b
#define b(x) (x<<2) // b(x) = x<<2 – Dịch sang trái 2 bit
a= b(a); // Tương tự như lệnh a=a<<2; lúc đó a=4 = 0000
0100 b
#ASM và #ENDASM
Æ 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.
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.
bit_test(var,bit)
Æ 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ụ:
int x=1; // x = 0000 0001 b
int y=4;
x<<1; // lúc này x = 0000 0010b
x<<=y; // x=x<<y; tức là x<<4, lúc này x = 0010 0000 b
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_low() output_high() output_X() output_bit()
input_X() input() …
output_low(pin)
output_high(pin)
Æ 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()
{
while(true) *//dieu kien vong lap//
{
output_low(pin_b0);
delay_ms(250);
output_low(pin_b0);
delay_ms(250);
}
}
output_bit(pin,value)
Æ Hàm này cũng xuất giá trị 0/1 cũng như 2 hàm trên.
pin : tên chân
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.
output_X(value)
Æ 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 : tên port có trên chip.
value : là giá trị 1 byte
Ví dụ:
output_b(212); // xuất giá trị 11010100 ra Port B
input_X()
Æ Hàm này trả về giá trị 8 bit là giá trị đang hiện hữu của Port đó.
X : tên port có trên chip.
value : là giá trị 1 byte.
Ví dụ:
int m=0; // Ví dụ Port B hiện đang có giá trị là 240.
m=input_b(); // Sau lệnh này m thay đổi giá trị thành 240.
set_tris_X(value)
Æ 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.
X : tên Port ({A,B,C,D,E})
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
Æ 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.
Æ Hàm cho phép delay theo đơn vị us (micrô giây). Hàm không trả về trị.
delay_ms(time)
time - là biến số thì có giá trị 0 – 255, là hằng số thì có giá trị 0 – 65535.
Æ 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 215 us
delay_us(4356); // delay 4356 us = 4.356 ms
delay_ms(2500); // delay 2500 ms = 2.5 s (gi ây)
setup_adc(mode)
Æ 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
ADC_CLOCK_DIV_2
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.
Æ 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ỉ).
Sau đây là các giá trị cho value, chỉ dùng 1 trong các giá trị:
ALL_ANALOG
Dùng tất cả các chân sau làm Analog: A0,A1,A2,A3,A5,E0,E1,E2 (Vref
= Vdd)
NO_ANALOGS
Không dùng chân Analog, các chân đó sẽ là chân I/O
AN0_AN1_AN3 hay RA0_RA1_RA3
Chỉ A0,A1,A3 là Analog, và điện thế so sánh là điện thế nguồn Vref =
Vdd
AN0_AN1_VSS_VREF hay RA0_RA1_VSS_VREF
A0, A1 là Analog, và A3 là điện thế so sánh Vref = A3
ANALOG_AN3_REF hay ANALOG_RA3_REF
Tất cả các chân Analog, và A3 là điện thế so sánh Vref = A3
AN0
Chỉ có AN0 là Analog và điện thế so sánh là điện thế nguồn Vref = Vdd
....
Tham khảo thêm HELP > Index của chương trình, mục setup_adc_ports.
set_adc_channel(channel)
Æ 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ó
channel có giá trị từ 0 – 7 tương ứng các chân
{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.
read_adc(mode)
Æ 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 : giá trị mặc định
ADC_START_ONLY : bắt đầu chuyển đổi và trả về trị
ADC_READ_ONLY : đọc kết quả chuyển đổi
lần cuối
Ví dụ:
#include <16f877a.h>
#device *=16 ADC=10
#fuses HS,NOPROTECT,NOWDT,NOLVP,PUT
#use delay(clock=4000000) // thạch anh tần số cao 4MHz
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
từ ADC
{
value=read_adc();
output_b(0); // Port B = 0000 0000 b
delay_ms(value);
output_b(255); // Port B = 1111 1111 b
delay_ms(value);
}
read_adc(adc_start_only);
sleep;
value=read_adc(adc_read_only);
}
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:
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ó.
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
thông tin trên các diễn đàn như diendandientu.com hay picvietnam.com
Để bắt đầu chương trình, nhấp trái chuột lên biểu tượng WinPIC800
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
mới.
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
Menu Settings > Hardware để thiết lập.
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
thay đổi.
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
PIC) với máy tính qua cổng LPT.
Khi nhấn Detect PIC, rất tiện lợi, WinPIC800 sẽ tự động chọn Loại PIC sử
dụng mà nó dò tìm được mà không cần phải chọn trước cho nó.
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
rồi.
Để nạp chương trình, nhấn vào Nạp code .hex cho PIC (Program All) như
hình trên.
Quá trình nạp được thể hiện như sau:
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
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,
16F877A…. Trên
bo mạch bao gồm mạch nạp và các mô-đun cơ bản như sau:
• 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.
count8=128;
tam=count8>>1;
for (i=0;i<=7;i++) // -¦- Sang' dan ve ben phai -¦-
{
output_b(count8);
delay_ms(200);
count8=count8+tam;
tam=tam>>1;
}
count2=255;
for (i=0;i<=8;i++) // -¦- Tat dan ve ben phai -¦-
{
output_b(count2);
delay_ms(200);
count2=count2>>1;
}
count1=1;
for (i=0;i<=7;i++) // -¦- Sang' dan ve ben trai -¦-
{
output_b(count1);
delay_ms(200);
count1=count1<<1;
count1++;
}
} // end of while(TRUE)
} // 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)
} // end of void main()
Hình 5.1+ Sơ đồ mô hình tổng quan Điều khiển dùng vi điều khiển
(PIC16F877A)
. 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ø.
*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”)
Ñ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
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öï.
ÔÛ 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 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
ÔÛ 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
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:
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
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:
Ngoõ ra cuûa
optocoupler
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:
Ñ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
Chương 7:
THIẾT KẾ VÀ THI CÔNG
Vai
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.
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á:
-Toác ñoä böôùc
-Doøng chaïy trong cuoän daây
-Maïch giao tieáp coâng suaát
Coâng thöùc tính moment :
T= T f + T i
-Trong ñoù Tf laø moment cuûa löïc ma saùt : Tf = F • r
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
Vôùi delay laø thôøi gian trì hoaõn giöõa hai xung tính baèng giaây
* 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.
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.
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:
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á.
Ñ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
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.
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.
Trong heä thoáng vi xöû lí, caùc ngoaïi vi ñöôïc keát noái ôû daïng song song giöõa
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 .
5v
5v
U2
14
DG 17 6 THC1
VDD
C1 18 RA0/AN0 RB0/INT 7 THC2
C2 1 RA1/AN1 RB1/RX/DT 8 THDG
2 RA2/AN2/VREF RB2/TX/CK 9
3 RA3/AN3/CMP1 RB3/CCP1 10
reset-628 4 RA4/TOCKI/CMP2 RB4/PGM 11
RA5/MCLR/VPP RB5 12 PGC-628
33pF RB6/T1OSO/T1CKL/PGC 13 PGD-628
OSC1-628 RB7/T1OSI/PGD
OSC2-62815
OSC1-628 16 RA6/OSC2/CLKOUT
4Mhz RA7/OSC1/CLKIN
OSC2-628
33pF PIC16C622_SS
GND
5
J13
J14
1 PGC-628
2 PGD-628 1
3 J15
4
5v reset-628
5
1 HEADER 1
HEADER 5
HEADER 1
R33
330
R16
SW2 R18 SW3 R20 SW4
5v
4 3 4 4 3
5v 5v
1k
1k 1k
1 2 1 2 1 2
1
R2
R
+12V +12V
U1A THC1
4
3 + Q1 D1 C1 C2
1 2N1069 103PF 103PF
THU-C1 2 LED
-
-12V -12V
11
LM324/SO
+12V J2
+12V +12V +12V -12V
R3
+12V
10KOHM
1
J3 R4 J4 R5 J5 R6 +12V +12V
220 R8 220 R9 220 R10 R7
10K 10K 10K R
1 1 1 U1B C3 C4
4
2 THU-C1 2 THU-C2 2 THU-DG THC2 103PF 103PF
3 3 3 5 +
4 4 4 7 Q2 D2 -12V -12V
5 5 5 THU-C2 6 2N1069
- LED
J6
11
LM324/SO
CBCM CBDG CBM +12V R11
+12V
1 DONG CO -DC +12V +12V -12V +12V
J7 2 10KOHM
1
R13
H1061 C5 C6 R12
O-DC+ 103PF 103PF
Q3 R
2N1069 U1C
4
THDG +12V +12V
R 10 +
8 Q4 D3
THU-DG 9 2N1069 C7 C8
- LED 103PF 103PF
11
LM324/SO -12V -12V
-12V
J8
1 Ngontay -A
2 Ngontay -B CONNECTOR DB9
3 Ngontay -AA
4 Ngontay -BB 1 : DCD 5
5v 2 : RXD 9 5v
3 : TXD 4
5v J9 5v
8 U2
14
5v 4 : DTR PGC-877 5v
J10
HEADER 4 U3 3
20
VDD
A 2 18 Cotay -A 6 : DSR 2 PGD-877 4 PGD-877 C1 18 RA0/AN0 RB0/INT 7 THC2
VCC
VEE
R /W
1 Cotay -A Canhtay Canhtay B-up 4Mhz
RS
D7
D6
D5
D4
D3
D2
D1
D0
2OE 6 RA3 RC1/T1OSO 17
K
A
E
2 Cotay -B D5 BaVai B-down OSC2-628
5v
3 Cotay -AA D6 U7 Vai 7 RA4/T0CLK RC2/CCP1 18 DG R18 SW PUSHBUTTON-SPST-2
20
16
15
14
13
12
11
10
4 Cotay -BB 74LS244 C1 C17 33pF PIC16C622_SS
9
8
7
6
5
4
3
LED A Ngontay -A RC4/SDI/SDA 24 C2 1k
2 18 1 4 B-down C
GND
VCC
5
1 Canhtay -A 330 B 13 A5 Y5 7 Xoay tay-B BB 36 RB2 19 2 3
2 Canhtay -B 5v AA 15 A6 Y6 5 Xoay tay-AA 37 RB3 RD0/PSP0 20 J13
3 Canhtay -AA BB 17 A7 Y7 3 Xoay tay-BB 38 RB4 RD1/PSP1 21 J14
4 Canhtay -BB A8 Y8 D7D8D9D10 PGC-877 39 RB5 RD2/PSP2 22 5v
5v
5v U8 Ngontay 1 PGD-877 40 RB6/PGC RD3/PSP3 27 1 PGC-628
20
GN D
J16
HEADER 4 B 4 A1 Y1 16 BaVai-B D12 OSC1-877 RD6/PSP6 30 4
A2 Y2 LED RD7/PSP7 1k 5v reset-628
10
3
BB 8 12 BaVai-BB OSC2-877 8 1 HEADER 1
1 BaVai-A A 11 A4 Y4 9 Vai-A 330 4Mhz OSC2/CLKOUT RE0/RD 9 R22 SW4
2 BaVai-B B 13 A5 Y5 7 Vai-B OSC2-877 reset-877 1 RE1/WR 10
3 BaVai-AA AA 15 A6 Y6 5 Vai-AA MCLR/VPP RE2/CS 2 10k HEADER 5
4 BaVai-BB BB 17 A7 Y7 3 Vai-BB R23 33pF 11 PIC16LC64 2 3 HEADER 1
A8 Y8 5v
330 32 VDD
BaVai 5v VDD
1 J17
GND
Vai 19 1OE 5v
1
HEADER 4 D13 2OE SW5
GND
GND
J18 D14 5v 4 3 1
LED
10
74LS244 J19
LED D15
12
31
1 Vai-A R27
2 Vai-B DIODE 1 HEADER 1
3 Vai-AA R28 1 2 1k
reset-877
4 Vai-BB 330
SW PUSHBUTTON-SPST-2 HEADER 1
C27
HEADER 4 5v C
J21
HEADER 1
C1 C2 C3 C4
1uf 100uf 103pf 103pf
SW1
jumper J1
VAIA VAIAI VCC
VAI-AI jumper 1 2
VAIAI VAIAI VAIAO J2
1
4
VAI-A VAI-AI
ISO1 D1 JUMPER VAIAO 6
Q1 KTAI KTAO VAIBO 5
1
4
SW DIP-4/SM IRF331 VAI-AO 4
2
3
ISO2 D2 VAI-BO 3
Q2 2
IRF840 1
VCC
2
3
SW2
1
4
KVAI-AI
1
4
Báo cáo luận văn tốt nghiệp.
2
3
SW DIP-4/SM ISO4 D4 KVAIAO 6
Q4 KVAIBO 5
SW3 IRF840 KVAI-AO 4
2
3
KVAI-BO 3
KTA KTAI VAI-AI VAI-AO 2
1
4
KT-AI 1
KT-A KTAI VCC
ISO5 D5
KT-AI Q5
KT-AI KT-AO
1
4
2
3
IRF331
SW DIP-4/SM ISO6 D6
J4 Q6
IRF840
2
3
1
4
VAI-B 4 3 VAI-A J5
KVAIB 6 5 KVAIA ISO7 IRF331 D7
KVAI-B 8 7 KVAI-A Q7 KTAO 6
KTB 10 9 KTA DIODE KTBO 5
2
3
KT-B 12 11 KT-A KT-B KT-BO KT-AO 4
1
4
14 13 KT-BO 3
16 15 ISO8 D8 2
Q8 1
VCC
IRF840
2
3
KVAIAI KVAIAO
1
4
HEADER 8x2/SM
ISO9 D9
Q9
IRF331
2
3
4
5
2
3
VCC
R1
2
3
4
5
1 R2 4.7KOHM
C
J6 2 SW4 KVAIB
KVAIBO 1KOHM
1
4
C
D10
1
ISO10 D11
Q10
1
1 SW5 IRF331
power3
2
3
J7 2
R3
1 R4 power2 SW6
http://www.ebook.edu.vn
J8 2 KVAI-AI
KVAI-AO
1
4
R5 R power1
R6 ISO11 D12
Q11
IRF331
2
3
KVAI-B
KVAI-BO
1
4
ISO12 D13
Q12
D14
D15
D16 IRF331
2
3
R7 R8
1K 4.7K
J9
1
1
Trang: 66
1 2
JUMPER
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
1
R1 R2
J1
30v
C
1kohm 1 2
1
30V
R3
9
8
7
6
5
4
3
2
5
4
3
2
30v 30v
C
4.7kohm
C1 C2
100UF 1UF ISO1
5
4
3
2
DKNT-AI
4
U1
1 16
2 1B 1C 15 NT-A
3 2B 2C 14
1 2
4 3
DKNT-B ISO2 4 3B 3C 13
5 4B 4C 12
mass30v mass30v 6 5B 5C 11 NT-B
7 6B 6C 10
J21 7B 7C
GND
SW1 9 ULN2003A J2
3
1 2 COM
DKNT-AI 30v NT-A
C3 J22 6
DKNT-A DKNT--AI 104k NT-B 5
8
DKNT-AI JUMPER 1 2 NT--A 4
DKNT--A DKNT--AI NT--B 3
ISO3 mass30v 2
DKNT--AI 30v
JUMPER 1
4
NGONTAY
SW2
1 16
DKXT-AI 2 1B 1C 15 NT--A
DKXT-A DKXT--AI U2 3 2B 2C 14
3
DKXT-AI 4 3B 3C 13
DKXT--A DKXT--AI DKNT--B ISO4 5 4B 4C 12 XT-A 6
5B 5C
4
6 11 NT--B XT-B 5
XOAY TAY 7 6B 6C 10 XT--A 4 J7
7B 7C XT--B 3
GND
SW3 9 2
DKCT-AI COM 30v
1
3
DKCT-A DKCT--AI C4 ULN2003A
DKCT-AI 104k
8
DKCT--A DKCT--AI
COTAY
J13 CT-A 6
TIN HIEU DIEU KHIEN CT-B 5
CT--A 4
DKNT-B 2 1 DKNT-A CT--B 3
DKNT--B 4 3 DKNT--A ISO5 2 J12
DKXT-AI XT-A 30v
DKXT-B 6 5 DKXT-A 1
4
DKXT--B 8 7 DKXT--A IRF540
DKCT-B 10 9 DKCT-A Q1 D1
DKCT--B 12 11 DKCT--A
14 13 start DIODE
mass24v dc ledstart
16 15
3
24v dc
mass30v 30v
mass30v
4
J14
1KOHM SW4 IRF540 D2
1 CONG TAC NGUON 4 Q2
2 30v xoay 1 DIODE
2
3 D4
2
5 AMPE
D3
LED POWER mass30v
30V XOAY CHIEU 4 - + 1 ct 30v
ISO7
DKXT--AI XT--A
1
IRF540 D5
30v xoay 2 Q3
C5 C6 C7 DIODE
3
mass30v
mass30v ISO8
DKXT--B IRF540 XT--B
1
Q4 D6
DIODE
2
mass30v
220VAO 1 220induong
J15 2 220inam
ISO9
DKCT-AI CT-A
1
NGUON2 1 220outduong
J17 2 220outam
mass30v
NGUON3 1 220outduong
J18 2 220outam
DKCT-B ISO10 IRF540 CT-B
1
Q6 D8
DIODE
NGUON4 1 220outduong
2
2 220outam
J19
mass30v
ISO11
DKCT--AI CT--A
1
Q7
IRF540
D9
DIODE
2
mass30v
CT--B
DKCT--B ISO12 IRF540
1
Q8 D10
DIODE
2
mass30v
2
3
4
5
6
7
8
9
R5
RESISTOR SIP 9
J20
1
2 1
mass30v JUMPER
4 4 4 4
220induong 3 220induong 3 220inam 3 220inam 3 5v dc 24v dc
5 220outduong 5 220outduong 5 220outam 5 220outam
8 8 8 8
220induong 6 220induong 6 220inam 6 220inam 6 U3
5
2 2 2 2 1 CLKA QA 9
D11 C8 1uf CLKB QB 8 ISO13 ledstart
4 AMPE 2 QC 11
RELAY DPDT RELAY DPDT RELAY DPDT RELAY DPDT 3 R01 QD R6
kich relay LS1 kich relay LS2 kich relay LS3 kich relay LS4 6 R02 500ohm
2
3
GND
7 R91 R7 R8
SW5 R92 1kohm 4.7kohm kich relay
10
74LS90 Q9
h1061
2
GND
2
3
mass24v dc R
POWER ON
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
Điều khiển tự động
Down=0 (Down= 0)
Yes
Count= Count +1
Nếu Up = 0 If (Count> 10 ÆCount= 5)
Yes
Count= Count -1
Down = 0 If (Count< 5Æ Count= 10)
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
Hiển thị LCD “DC Ngón tay”
Count =
(Count= 10)
No
Enter
Yes
No
Enter
Yes
Gắp vật 1
Gắp vật 2
#include <16F877a.h>
#device 16F877*=16 ADC=10
#include <math.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
//***********************************
//Khai bao bien
//***********************************
#bit DG = 0x07.3//RC3
#bit C1 = 0x07.4//RC4
#bit C2 = 0x07.5//RC5
#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
#bit RW=0x09.1 //RW=1 la read, RW=0 la write
#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();//******************************
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;
}
delay_us(2);
E = 0;
delay_ms(5);
for(i=0;i<=3;++i)
{
lcd_send_byte(0,lcd_init_string[i]);
}
}
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!
}
}
lcd_send_byte(1,c);
}
void delaystep2()
{
delay_us(2500);
}
//********************************************
//Chuyen du lieu xuat LCD
//********************************************
void delaybuttom()
{
delay_ms(90);
}
{
LOOP11:
OUTPUT_B(R0);
delaystep1();
N=N-1;
IF(N==0)
{OUTPUT_B(0x00);
GOTO THOAT1;}
GOTO LOOP11;
}
IF(D==1)
{
LOOP12:
OUTPUT_B(R0);
delaystep1();
N=N-1;
IF(N==0)
{OUTPUT_B(0x00);
GOTO THOAT1;}
THOAT1:
DELAY_MS(1);
}
IF(D==1)
{
LOOP22:
OUTPUT_B(R0);
delaystep2();
N=N-1;
IF(N==0)
{OUTPUT_B(0x00);
GOTO THOAT2;}
GOTO LOOP22;
}
THOAT2:
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)
{ delaybuttom();
If(Down==0)
{Goto Autos; } }
goto nhan0;
If(Down==0)
{ delaybuttom();
If(Down==0)
{ count=count-1;}
}
If( count<5)
{count=10;}
If(count>10 )
{count=5;}
If(Count==5)
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)
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)
{ 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 Xoay Tay");//xuat dong chu ra man hinh
}
If(Count==10)
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);
delaystep1();
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);
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==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();
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)
{OUTPUT_B(0x00);}
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();
If(Enter==0)
{
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;}
}
}
}
/////////////////////////////////////////////////////
Autos:
{ 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;
STEPPER2(i,r);
//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;
r=830;
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;
STEPPER2(i,r);
////////////////////////////////////////
//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);
///////////////////////////////////
//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=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);
//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=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);
goto nhan;
Chương 8:
KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
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.
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:
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.
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öï
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.
5. Dùng motor sevor AC để có công suất lớn và tốc độ đáp ứng nhanh.
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
TpHCM.
2. Ts. Nguyễn Thiện Thành, Trí tuệ nhân tạo và hệ chuyên gia. NXB Giáo dục.
3. TS.Lê Hoài Quốc, Kỹ thuật người máy và Robot Công nghiệp. NXB ĐH Quốc gia
TpHCM.
4. Đ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
TpHCM.
5. 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ộ)
Trường đại học KHTN.
6. 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ộ)
Trường đại học KHTN.
7. PGS.TS. Nguyễn Hữu Phương ,Mạch số ,Nhà Xuất Bản Thống Kê.