Có thể nói, Robot là sự tổ hợp khả năng hoạt động linh hoạt của các cơ cấu điềukhiển từ xa với mức độ “tri thức” ngày càng phong phú của hệ thống điều khiển theochương trình số cũng như
Trang 1MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH ẢNH 3
LỜI NÓI ĐẦU 6
LỜI CẢM ƠN 7
CHƯƠNG 1 TỔNG QUAN VỀ ROBOT CÔNG NGHIỆP 8
1.1 Sơ lược quá trình phát triển của Robot công nghiệp 8
1.2.Ưng dụng robot công nghiệp trong sản xuất 11
1.3.Các khái niệm và định nghĩa về Robot công nghiệp 12
1.3.1 Định nghĩa Robot công nghiệp 12
1.3.2 Bậc tự do của Robot 13
1.3.3 Hệ toạ độ (Coordinate frames) 14
1.3.4 Trường công tác của Robot (Workspace or Range of motion) 15
1.4.Cấu trúc cơ bản của Robot công nghiệp 16
1.4.1 Các thành phần chính của Robot công nghiệp 16
1.4.2 Kết cấu của tay máy 17
1.5 Phân loại Robot công nghiệp 17
1.5.1 Phân loại theo kết cấu 18
1.5.2 Phân loại theo hệ thống truyền động 18
1.5.3 Phân loại theo ứng dụng 18
1.5.4 Phân loại theo cách thức và đặc trưng của phương pháp điều khiển 18
CHƯƠNG 2.GIỚI THIÊU NGÔN NGỮ LẬP TRÌNH C 19
2.1 Biến 19
2.2 Hằng 19
2.3 Những kiểu dữ liệu cơ bản và dẫn xuất 21
2.3 Nhập và xuất trong C 23
2.3.1 Printf 23
2.3.2 Scanf() 26
2 4 Điều kiện 27
2.4.1 Cấu trúc IF 27
2.4.2 Cấu trúc IF…ELSE 27
2.5 Vòng lặp 27
2.5.1 Vòng lặp For 27
2.5.2 Vòng lặp ‘Do While’: 27
CHƯƠNG 3: LẬP TRÌNH VI XỬ LÝ 29
Trang 23.1 Cấu Trúc AVR 29
3.1.1 Tổ chức của AVR 29
3.2.2 Thanh ghi trạng thái - SREG (STATUS REGISTRY) 34
3.2 Ngắt Ngoài 36
3.3.1 Ngắt trên AVR 36
3.2.2 Ngắt ngoài (External Interrupt) 37
3.3 Timer Counter 40
3.3.1 Tổng quan các bộ Timer/Counter trên chip Atmega8 40
3.3.2 Sử dụng Timer/Counter 40
3.3.2.1 Timer/Counter0: 41
3.3.2.2 Timer/Counter1: 42
3.4 Giao tiếp SPI 45
3.4.1Chuẩn truyền thông SPI, 45
3.4.2 Truyền thông SPI trên AVR 47
CHƯƠNG 4: PHẦN MỀM WINAVR VÀ CÁCH SỬ DỤNG 51
4.1 Giới thiệu 51
4.2 Hướng dẫn sử dụng 51
Phụ lục 58
Một số nguồn tham khảo : 75
Trang 3DANH MỤC HÌNH ẢNH
Hình 1.1 tọa độ suy rộng của Robot 14
Hình 1.2 Quy tắc bàn tay phải 15
Hình 1.3 Biểu diễn trường công tác Robot 15
Hình 1.4 Các thành phần chính của hệ thống Robot 17
Hình 2 Truyền dữ liệu SPI 46
Hình 3.1 Tổ chức bộ nhớ của AVR 29
Hình 3.2 Thanh ghi 8 bits 29
Hình 3.3 mô tả các chức năng phụ của các thanh ghi 30
Hình 3.4 Biểu diễn cấu trong bên trong của 1 AVR 32
Hình 3.5 Ảnh hưởng của các phép toán lên SREG 34
Hình 3.6 Minh họa cách tổ chức ngắt thông thường trong các chip AVR 35
Hình 3.7 Thiết lập ngắt ngoài 38
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỠNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6LỜI NÓI ĐẦU
Trong sự nghiệp công nghiệp hóa, hiện đại hóa đất nước vấn đề tự động hóa cóvai trò đặc biệt quan trọng
Mục tiêu ứng dụng kỹ thuật robot trong công nghiệp là nhằm nâng cao năng suấtdây chuyền công nghệ, nâng cao chất lượng và khả năng cạnh tranh của sản phẩm,đồng thời cải thiện điều kiện lao động Sự cạnh tranh hàng hóa đặt ra một vấn đề thời
sự là làm sao để hệ thống tự động hóa sản xuất phải có tính linh hoạt cao nhằm đápứng với sự biến động thường xuyên của thị trường hàng hóa cạnh tranh Robot côngnghiệp là bộ phận cấu thành không thể thiếu trong việc tạo ra những hệ thống tự độngsản xuất linh hoạt đó
Robot công nghiệp là sản phẩm đặc thù của ngành cơ điện tử (mechatronis ).Chính vì vậy sinh viên ngành cơ điện tử cần nắm được các kiến thức cần thiết nhằmphân tích, tính toán các cơ cấu cơ khí robot, thiết lập mô hình toán học, phân tích cáccấu trúc và phương pháp thiết kế hệ thống điều khiển cho robot Sau đó chúng ta tiếnhành mô phỏng với các công cụ mô phỏng để khảo sát hệ thống, xem hệ thống hoạtđộng như thế nào, đã đúng như mong đợi chưa
Tiểu luận mà nhóm chúng em được giao là:
“ Tính toán và mô phỏng đồ họa động của Robot MMR bằng Visual C++” Với sự hướng dẫn tận tình của thầy giáo “ThS.Nguyễn Trọng Du” và nỗ lực
của bản thân, đến nay nhiệm vụ của chúng em đã hoàn thành Dưới đây là nội dungphần lý thuyết, phần mô phỏng sẽ được trình bày trong phần sau Do thời gian có hạncũng như sự hạn chế về kiến thức của chúng em, hẳn chúng em còn những thiếu sótrất mong những góp ý, những lời nhận xét bổ sung của các thầy và các bạn sinh viên
Hà Nội ngày 20 tháng 06 năm 2013
Trang 7LỜI CẢM ƠN
Trước tiên chúng em xin gửi lời cám ơn chân thành sâu sắc tới thầy giáo
“ThS Nguyễn Trọng Du” truyền đạt cho chúng em những kiến thức, kinh nghiệm
quý báu trong suốt thời gian vừa qua, thầy đã tận tìnhgiúp đỡ, trực tiếp chỉ bảo, hướngdẫn chúng em trong suốt quá trình làm bài tập dài Trong thời gian học tập, chúng
em không ngừng tiếp thu thêm nhiều kiến thứcbổ ích mà còn học tập được tinh thầnlàm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả của thầy, đây là nhữngđiều rất cần thiết cho chúng em trong quá trình học tập và công tác sau này
Đồng thời xin chân thành cảm ơn các thầy cô giáo bộ môn đã giúp đỡ chúng emcung cấp tài liệu và kinh nghiệm để chúng e hoàn thành tốt đồ án
Trang 8CHƯƠNG 1 TỔNG QUAN VỀ ROBOT CÔNG NGHIỆP
1.1 Sơ lược quá trình phát triển của Robot công nghiệp.
Thuật ngữ “Robot” xuất phát từ tiếng Sec (Czech) “Robota” có nghĩa là côngviệc tạp dịch trong vở kịch Rossum’s Universal Robots của Karel Capek, vào năm
1921 Trong vở kịch này, Rossum và con trai của ông ta đã chế tạo ra những chiếcmáy gần giống với con người để phục vụ con người Có lẽ đó là một gợi ý ban đầucho các nhà sáng chế kỹ thuật về những cơ cấu, máy móc bắt chước các hoạt động cơbắp của con người
Đầu thập kỷ 60, công ty Mỹ AMF (American Machine and Foundry Company)quảng cáo một loại máy tự động vạn năng và gọi là “Người máy công nghiệp”(Industrial Robot) Ngày nay người ta đặt tên người máy công nghiệp (hay Robot côngnghiệp) cho những loại thiết bị có dáng dấp và một vài chức năng như tay người đượcđiều khiển tự động để thực hiện một số thao tác sản xuất
Về mặt kỹ thuật, những Robot công nghiệp ngày nay, có nguồn gốc từ hai lĩnhvực kỹ thuật ra đời sớm hơn đó là các cơ cấu điều khiển từ xa (Teleoperators) và cácmáy công cụ điều khiển số (NC - Numerically Controlled machine tool)
Các cơ cấu điều khiển từ xa (hay các thiết bị kiểu chủ-tớ) đã phát triển mạnhtrong chiến tranh thế giới lần thứ hai nhằm nghiên cứu các vật liệu phóng xạ Ngườithao tác được tách biệt khỏi khu vực phóng xạ bởi một bức tường có một hoặc vài cửaquan sát để có thể nhìn thấy được công việc bên trong Các cơ cấu điều khiển từ xathay thế cho cánh tay của người thao tác; nó gồm có một bộ kẹp ở bên trong (tớ) vàhai tay cầm ở bên ngoài (chủ) Cả hai, tay cầm và bộ kẹp, được nối với nhau bằng một
cơ cấu sáu bậc tự do để tạo ra các vị trí và hướng tuỳ ý của tay cầm và bộ kẹp Cơ cấudùng để điều khiển bộ kẹp theo chuyển động của tay cầm
Vào khoảng năm 1949, các máy công cụ điều khiển số ra đời, nhằm đáp ứng yêucầu gia công các chi tiết trong ngành chế tạo máy bay Những Robot đầu tiên thựcchất là sự nối kết giữa các khâu cơ khí của cơ cấu điều khiển từ xa với khả năng lậptrình của máy công cụ điều khiển số
Dưới đây chúng ta sẽ điểm qua một số thời điểm lịch sử phát triển của ngườimáy công nghiệp Một trong những Robot công nghiệp đầu tiên được chế tạo là Robot
Trang 9Versatran của công ty AMF, Mỹ Cũng vào khoảng thời gian này ở Mỹ xuất hiện loạiRobot Unimate W1900 được dùng đầu tiên trong kỹ nghệ ôtô.
Tiếp theo Mỹ, các nước khác bắt đầu sản xuất Robot công nghiệp : Anh 1967,Thụy Điển và Nhật 1968 theo bản quyền của Mỹ; CHLB Đức -1971; Pháp - 1972; ở Ý
- 1973
Tính năng làm việc của Robot ngày càng được nâng cao, nhất là khả năng nhậnbiết và xử lý Năm 1967 ở trường Đại học tổng hợp Stanford (Mỹ) đã chế tạo ra mẫuRobot hoạt động theo mô hình “mắt-tay”, có khả năng nhận biết và định hướng bànkẹp theo vị trí vật kẹp nhờ các cảm biến
Năm 1974 Công ty Mỹ Cincinnati đưa ra loại Robot được điều khiển bằng máy
vi tính, gọi là Robot T3 (The Tomorrow Tool : Công cụ của tương lai) Robot này cóthể nâng được vật có khối lượng đến 40 Kg
Có thể nói, Robot là sự tổ hợp khả năng hoạt động linh hoạt của các cơ cấu điềukhiển từ xa với mức độ “tri thức” ngày càng phong phú của hệ thống điều khiển theochương trình số cũng như kỹ thuật chế tạo các bộ cảm biến, công nghệ lập trình và cácphát triển của trí khôn nhân tạo, hệ chuyên gia
Trong những năm sau này, việc nâng cao tính năng hoạt động của Robot khôngngừng phát triển Các Robot được trang bị thêm các loại cảm biến khác nhau để nhậnbiết môi trường chung quanh, cùng với những thành tựu to lớn trong lĩnh vực Tin học
- Điện tử đã tạo ra các thế hệ Robot với nhiều tính năng đăc biệt, Số lượng Robot ngàycàng gia tăng, giá thành ngày càng giảm Nhờ vậy, Robot công nghiệp đã có vị tríquan trọng trong các dây chuyền sản xuất hiện đại
J.de Vancanson chế tạo một búp bê cơ khí đánh nhạc
J.Jacquard chế tạo khung vải có thể lập trình
H.Mailader chế tạo búp bê cơ khí biết vẽ tranh
S.Babbitt (Mỹ) đã thiết kế một cầu trục truyền động động cơ
có cơ cấu kẹp để gắp thỏi thép dúc ra khỏi lò lung
W.Pollard và H.Roselund (Mỹ) đã thiết kế một cơ cấu phunsơn lập trình cho công ty De Vilbiss
G.C.Devol (Mỹ) sang chế thiết bị điều khiển có thể ghi lạinhững tín hiệu điện bằng từ hóa, sau đó được sử dụng để điềukhiển một máy cơ khí
Cơ cấu tay máy điều khiển từ xa có thể mang các vật liệuphóng xạ được chế tạo
Trang 10Công ty Ford lắp đặt Robot Unimate.
Công ty General Motor (GM) lắp đặt Robot công nghiệp đầutiên (Robot Unimate) trong dây truyền sản suất
Công ty Trallfa (Nauy) lắp đặt Robot phn sơn
Robot di chuyển “Shakey” được chế tạo tại viên Sanford.Robot này được trang bị một số cảm biến tiếp xúc, máy ảnh, có thể
Mục tiêu ứng dụng Robot công nghiệp nhằm góp phần nâng cao năng suất dâychuyền công nghệ, giảm giá thành, nâng cao chất lượng và khả năng cạnh tranh củasản phẩm đồng thời cải thiện điều kiện lao động Đạt được các mục tiêu trên là nhờvào những khả năng to lớn của Robot như: Làm việc không biết mệt mỏi, rất dễ dàngchuyển nghề một cách thành thạo, chịu được phóng xạ và các môi trường làm việc độchại, nhiệt độ cao, “cảm thấy” được cả từ trường và “nghe” được cả siêu âm
Trang 11Robot được dùng thay thế con người trong các trường hợp trên hoặc thực hiệncác công việc tuy không nặng nhọc nhưng đơn điệu, dễ gây mệt mỏi, nhầm lẫn.
Trong ngành cơ khí, Robot được sử dụng nhiều trong công nghệ đúc, công nghệhàn, cắt kim loại, sơn, phun phủ kim loại, tháo lắp vận chuyển phôi, lắp ráp sảnphẩm
Ngày nay đã xuất hiện nhiều dây chuyền sản xuất tự động gồm các máy CNCvới Robot công nghiệp, các dây chuyền đó đạt mức tự động hoá cao, mức độ linh hoạtcao ở đây các máy và Robot được điều khiển bằng cùng một hệ thống chương trình.Ngoài các phân xưởng, nhà máy, kỹ thuật Robot cũng được sử dụng trong việckhai thác thềm lục địa và đại dương, trong y học, sử dụng trong quốc phòng, trongchinh phục vũ trụ, trong công nghiệp nguyên tử, trong các lĩnh vực xã hội
Rõ ràng là khả năng làm việc của Robot trong một số điều kiện vượt hơn khảnăng của con người Do đó nó là phương tiện hữu hiệu để tự động hoá, nâng cao năngsuất lao động, giảm nhẹ cho con người những công việc nặng nhọc và độc hại
Nhược điểm lớn nhất của Robot là chưa linh hoạt như con người, trong dâychuyền tự động, nếu có một Robot bị hỏng có thể làm ngừng hoạt động của cả dâychuyền, cho nên Robot vẫn luôn hoạt động dưới sự giám sát của con người
1.2.Ưng dụng robot công nghiệp trong sản xuất.
Từ khi mới ra đời robot công nghiệp được áp dụng trong nhiều lĩnh vực dưới góc
độ thay thế sức người Nhờ vậy các dây chuyền sản xuất được tổ chức lại, năng suất
và hiệu quả sản xuất tăng lên rõ rệt
Mục tiêu ứng dụng robot công nghiệp nhằm góp phần nâng cao năng suất dâychuyền công nghệ, giảm giá thành, nâng cao chất lượng và khả năng cạnh tranh củasản phẩm đồng thời cải thiện điều kiện lao động Đạt được các mục tiêu trên là nhờvào những khả năng to lớn của robot như : làm việc không biết mệt mỏi, rất dễ dàngchuyển nghề một cách thành thạo, chịu được phóng xạ và các môi trường làm việc độchại, nhiệt độ cao, “cảm thấy” được cả từ trường và “nghe” được cả siêu âm
Robot được dùng thay thế con người trong các trường hợp trên hoặc thực hiệncác công việc tuy không nặng nhọc nhưng đơn điệu, dễ gây mệt mỏi, nhầm lẫn
Trong ngành cơ khí, robot được sử dụng nhiều trong công nghệ đúc, công nghệhàn, cắt kim loại, sơn, phun phủ kim loại, tháo lắp vận chuyển phôi, lắp ráp sản phẩm
Trang 12Ngày nay đã xuất hiện nhiều dây chuyền sản xuất tự động gồm các máy CNC với robot công nghiệp, các dây chuyền đó đạt mức tự động hoá cao, mức độ linh hoạt cao ở đây các máy và robot được điều khiển bằng cùng một hệ thống chương trình.
Ngoài các phân xưởng, nhà máy, kỹ thuật robot cũng được sử dụng trong việckhai thác thềm lục địa và đại dương, trong y học, sử dụng trong quốc phòng, trongchinh phục vũ trụ, trong công nghiệp nguyên tử, trong các lĩnh vực xã hội
Rõ ràng là khả năng làm việc của robot trong một số điều kiện vượt hơn khảnăng của con người; do đó nó là phương tiện hữu hiệu để tự động hoá, nâng cao năngsuất lao động, giảm nhẹ cho con người những công việc nặng nhọc và độc hại
Nhược điểm lớn nhất của robot là chưa linh hoạt như con người, trong dâychuyền tự động, nếu có một robot bị hỏng có thể làm ngừng hoạt động của cả dâychuyền, cho nên robot vẫn luôn hoạt động dưới sự giám sát của con người
1.3.Các khái niệm và định nghĩa về Robot công nghiệp.
1.3.1 Định nghĩa Robot công nghiệp.
Định nghĩa theo tiêu chuẩn AFNOR (Pháp) :
Robot công nghiệp là một cơ cấu chuyển động tự động có thể lập trình, lặp lạicác chương trình, tổng hợp các chương trình đặt ra trên các trục toạ độ; có khả năngđịnh vị, định hướng, di chuyển các đối tượng vật chất : chi tiết, dao cụ, gá lắp theonhững hành trình thay đổi đã chương trình hoá nhằm thực hiện các nhiệm vụ côngnghệ khác nhau
Định nghĩa theo RIA (Robot institute of America):
Robot là một tay máy vạn năng có thể lặp lại các chương trình được thiết kế để
di chuyển vật liệu, chi tiết, dụng cụ hoặc các thiết bị chuyên dùng thông qua cácchương trình chuyển động có thể thay đổi để hoàn thành các nhiệm vụ khác nhau.Định nghĩa theo GOCT 25686-85 (Nga):
Robot công nghiệp là một máy tự động, được đặt cố định hoặc di động được,liên kết giữa một tay máy và một hệ thống điều khiển theo chương trình, có thể lậptrình lại để hoàn thành các chức năng vận động và điều khiển trong quá trình sản xuất
Trang 13Có thể nói Robot công nghiệp là một máy tự động linh hoạt thay thế từng phầnhoặc toàn bộ các hoạt động cơ bắp và hoạt động trí tuệ của con người trong nhiều khảnăng thích nghi khác nhau.
Robot công nghiệp có khả năng chương trình hoá linh hoạt trên nhiều trụcchuyển động, biểu thị cho số bậc tự do của chúng Robot công nghiệp được trang bịnhững bàn tay máy hoặc các cơ cấu chấp hành, giải quyết những nhiệm vụ xác địnhtrong các quá trình công nghệ: hoặc trực tiếp tham gia thực hiện các nguyên công(sơn, hàn, phun phủ, rót kim loại vào khuôn đúc, lắp ráp máy ) hoặc phục vụ các quátrình công nghệ (tháo lắp chi tiết gia công, dao cụ, đồ gá ) với những thao tác cầmnắm, vận chuyển và trao đổi các đối tượng với các trạm công nghệ, trong một hệthống máy tự động linh hoạt, được gọi là “Hệ thống tự động linh hoạt Robot hoá” chophép thích ứng nhanh và thao tác đơn giản khi nhiệm vụ sản xuất thay đổi
1.3.2 Bậc tự do của Robot
Bậc tự do là số khả năng chuyển động của một cơ cấu (chuyển động quay hoặctịnh tiến) Để dịch chuyển được một vật thể trong không gian, cơ cấu chấp hành củaRobot phải đạt được một số bậc tự do Nói chung cơ hệ của Robot là một cơ cấu hở,
do đó bậc tự do của nó có thể tính theo công thức :
Để định vị và định hướng khâu chấp hành cuối một cách tuỳ ý trong không gian
3 chiều Robot cần có 6 bậc tự do, trong đó 3 bậc tự do để định vị và 3 bậc tự do đểđịnh hướng Một số công việc đơn giản nâng hạ, sắp xếp có thể yêu cầu số bậc tự do
ít hơn Các Robot hàn, sơn thường yêu cầu 6 bậc tự do Trong một số trường hợpcần sự khéo léo, linh hoạt hoặc khi cần phải tối ưu hoá quỹ đạo, người ta dùngRobot với số bậc tự do lớn hơn 6
Trang 141.3.3 Hệ toạ độ (Coordinate frames).
Mỗi Robot thường bao gồm nhiều khâu (links) liên kết với nhau qua các khớp(joints), tạo thành một xích động học xuất phát từ một khâu cơ bản (base) đứng yên
Hệ toạ độ gắn với khâu cơ bản gọi là hệ toạ độ cơ bản (hay hệ toạ độ chuẩn) Các hệtoạ độ trung gian khác gắn với các khâu động gọi là hệ toạ độ suy rộng Trong từngthời điểm hoạt động, các toạ độ suy rộng xác định cấu hình của Robot bằng cácchuyển dịch dài hoặc các chuyển dịch góc của các khớp tịnh tiến hoặc khớp quay Cáctoạ độ suy rộng còn được gọi là biến khớp.(hình 1.1)
Hình 1.1 tọa độ suy rộng của Robot.
Các hệ toạ độ gắn trên các khâu của robot phải tuân theo qui tắc bàn tay phải :Dùng tay phải, nắm hai ngón tay út và áp út vào lòng bàn tay, xoè 3 ngón : cái, trỏ vàgiữa theo 3 phương vuông góc nhau, nếu chọn ngón cái là phương và chiều của trục z,thì ngón trỏ chỉ phương, chiều của trục x và ngón giữa sẽ biểu thị phương, chiều củatrục y (hình 1.2)
Trong Robot ta thường dùng chữ O và chỉ số n để chỉ hệ toạ độ gắn trên khâuthứ n Như vậy hệ toạ độ cơ bản (Hệ toạ độ gắn với khâu cố định) sẽ được ký hiệu là00; hệ toạ độ gắn trên các khâu trung gian tương ứng sẽ là 01, 02, , 0n-1, Hệ toạ độgắn trên khâu chấp hành cuối ký hiệu là 0n
Trang 15Hình 1.2 Quy tắc bàn tay phải
1.3.4 Trường công tác của Robot (Workspace or Range of motion).
Trường công tác (hay vùng làm việc, không gian công tác) của Robot là toàn bộthể tích được quét bởi khâu chấp hành cuối khi Robot thực hiện tất cả các chuyểnđộng có thể Trường công tác bị ràng buộc bởi các thông số hình học của Robot cũngnhư các ràng buộc cơ học của các khớp;
Ví dụ: Một khớp quay có chuyển động nhỏ hơn một góc 3600 Người ta thườngdùng hai hình chiếu để mô tả trường công tác của một Robot (hình 1.3)
a, hình chiếu đứng b, hình chiếu bằng.
Hình 1.3 Biểu diễn trường công tác Robot.
Trang 161.4.Cấu trúc cơ bản của Robot công nghiệp.
1.4.1 Các thành phần chính của Robot công nghiệp.
Một Robot công nghiệp thường bao gồm các thành phần chính như: cánh tayRobot, nguồn động lực, dụng cụ gắn lên khâu chấp hành cuối, các cảm biến, bộ điềukhiển, thiết bị dạy học, máy tính các phần mềm lập trình cũng nên được coi là mộtthành phần của hệ thống Robot
Cánh tay Robot (tay máy) là kết cấu cơ khí gồm các khâu liên kết với nhau bằngcác khớp động để có thể tạo nên những chuyển động cơ bản của Robot
động lực là các động cơ điện (một chiều hoặc động cơ bước), các hệ thống xylanh khí nén, thuỷ lực để tạo động lực cho tay máy hoạt động
Dụng cụ thao tác được gắn trên khâu cuối của Robot, dụng cụ của Robot có thể
có nhiều kiểu khác nhau như: dạng bàn tay để nắm bắt đối tượng hoặc các công cụlàm việc như mỏ hàn, đá mài, đầu phun sơn
Thiết bị Dạy-Hoc (Teach-Pendant) dùng để dạy cho Robot các thao tác cần thiếttheo yêu cầu của quá trình làm việc, sau đó Robot tự lặp lại các động tác đã được dạy
để làm việc (phương pháp lập trình kiểu dạy học)
Các phần mềm để lập trình và các chương trình điều khiển Robot được cài đặttrên máy tính, dùng điều khiển Robot thông qua bộ điều khiển (Controller) Bộ điềukhiển còn được gọi là Mođun điều khiển (hay Unit, Driver), nó thường được kết nốivới máy tính Một mođun điều khiển có thể còn có các cổng Vào - Ra (I/O port) đểlàm việc với nhiều thiết bị khác nhau như các cảm biến giúp Robot nhận biết trạngthái của bản thân, xác định vị trí của đối tượng làm việc hoặc các dò tìm khác; điềukhiển các băng tải hoặc cơ cấu cấp phôi hoạt động phối hợp với Robot
Trang 17Hình 1.4 Các thành phần chính của hệ thống Robot.
1.4.2 Kết cấu của tay máy.
Như đã nói trên, tay máy là thành phần quan trọng, nó quyết định khả năng làmviệc của Robot Tay máy là cơ cấu cơ khí gồm các khâu, khớp Chúng hình thànhcánh tay để tạo các chuyển động cơ bản, cổ tay tạo nên sự khéo léo linh hoạt và bàntay hoặc phần công tác để trực tiếp hoàn thành các thao tác trên đối tượng Các kết cấucủa nhiều tay máy được phỏng theo cấu tạo và chức năng của tay người; tuy nhiênngày nay, tay máy được thiết kế rất đa dạng, nhiều cánh tay Robot có hình dáng rấtkhác xa cánh tay người Trong thiết kế và sử dụng tay máy, chúng ta cần quan tâm đếncác thông số hình - động học, là những thông số liên quan đến khả năng làm việc củaRobot như: tầm với (hay trường công tác), số bậc tự do (thể hiện sự khéo léo linh hoạtcủa Robot), độ cứng vững, tải trọng vật nâng, lực kẹp
Các khâu của Robot thường thực hiện hai chuyển động cơ bản:
• Chuyển động tịnh tiến theo hướng x, y, z trong không gianDescarde, thông thường tạo nên các hình khối, các chuyển động này thường
ký hiệu là T (Translation) hoặc P (Prismatic)
• Chuyển động quay theo các trục x, y, z trong không gianDescarde, thông thường tạo ra các hình cầu, các chuyển động này thường kýhiệu là R (Rotate)
1.5 Phân loại Robot công nghiệp.
Robot công nghiệp rất phong phú đa dạng, có thể được phân loại theo các cách sau:
Trang 181.5.1 Phân loại theo kết cấu.
Theo kết cấu của tay máy người ta phân thành Robot kiểu toạ độ Đề Các, kiểutoạ độ trụ, kiểu toạ độ cầu, kiểu toạ độ góc, Robot kiểu SCARA như đã trình bày ở trên
1.5.2 Phân loại theo hệ thống truyền động.
Có các dạng truyền động phổ biến là:
Hệ truyền động điện: Thường dùng các động cơ điện 1 chiều (DC : DirectCurrent) hoặc các động cơ bước (step motor) Loại truyền động này dễ điều khiển, kếtcấu gọn
Hệ truyền động thuỷ lực: có thể đạt được công suất cao, đáp ứng những điềukiện làm việc nặng Tuy nhiên hệ thống thuỷ lực thường có kết cấu cồng kềnh, tồn tại
độ phi tuyến lớn khó xử lý khi điều khiển
Hệ truyền động khí nén: có kết cấu gọn nhẹ hơn do không cần dẫn ngược nhưnglại phải gắn liền với trung tâm tạo ra khí nén Hệ này làm việc với công suất trungbình và nhỏ, kém chính xác, thường chỉ thích hợp với các Robot hoạt động theochương trình định sẳn với các thao tác đơn giản “nhấc lên - đặt xuống” (Pick andPlace or PTP : Point To Point)
1.5.3 Phân loại theo ứng dụng.
Dựa vào ứng dụng của Robot trong sản xuất có Robot sơn, Robot hàn, Robot lắpráp, Robot chuyển phôi
1.5.4 Phân loại theo cách thức và đặc trưng của phương pháp điều khiển.
Có Robot điều khiển hở (mạch điều khiển không có các quan hệ phản hồi),Robot điều khiển kín (hay điều khiển servo): sử dụng cảm biến, mạch phản hồi đểtăng độ chính xác và mức độ linh hoạt khi điều khiển
Ngoài ra còn có thể có các cách phân loại khác tuỳ theo quan điểm và mục đíchnghiên cứu
Trang 19CHƯƠNG 2.GIỚI THIÊU NGÔN NGỮ LẬP TRÌNH C
2.1 Biến
Một chương trình ứng dụng có thể quản lý nhiều loại dữ liệu Trong trường hợpnày, chương trình phải chỉ định bộ nhớ cho mỗi đơn vị dữ liệu Khi chỉ định bộ nhớ,
có hai điểm cần lưu ý như sau :
• Bao nhiêu bộ nhớ sẽ được gán
• Mỗi đơn vị dữ liệu được lưu trữ ở đâu trong bộ nhớ
•
Trước đây, các lập trình viên phải viết chương trình theo ngôn ngữ máy gồm các
mã 1 và 0 Nếu muốn lưu trữ một giá trị tạm thời, vị trí chính xác nơi mà dữ liệu đượclưu trữ trong bộ nhớ máy tính phải được chỉ định Vị trí này là một con số cụ thể, gọi
là địa chỉ bộ nhớ
Các ngôn ngữ lập trình hiện đại cho phép chúng ta sử dụng các tên tượng trưnggọi là biến (variable), chỉ đến một vùng bộ nhớ nơi mà các giá trị cụ thể được lưu trữ.Kiểu dữ liệu quyết định tổng số bộ nhớ được chỉ định Những tên được gán chobiến giúp chúng ta sử dụng lại dữ liệu khi cần đến
2.2 Hằng
Một hằng là một giá trị không bao giờ bị thay đổi Ví dụ, 5 là một hằng, mà giá trị toán học luôn là 5 và không thể bị thay đổi bởi bất cứ ai Tương tự, ‘Black’ là một
hằng, nó biểu thị cho màu đen Khi đó, 5 được gọi là hằng số (numeric constant),
‘Black’ được gọi là hằng chuỗi (string constant)
• Định danh
Tên của các biến (variables), các hàm (functions), các nhãn (labels) và các đốitượng khác nhau do người dùng định nghĩa gọi là định danh Những định danh này cóthể chứa một hay nhiều ký tự Ký tự đầu tiên của định danh phải là một chữ cái hay
một dấu gạch dưới ( _ ) Các ký tự tiếp theo có thể là các chữ cái, các con số hay dấu
gạch dưới
Arena, s_count, marks40, và class_one là những định danh đúng Các ví dụ vềcác định danh sai là 1sttest, oh!god, và start end
Trang 20Các định danh có thể có chiều dài tuỳ ý, nhưng số ký tự trong một biến đượcnhận diện bởi trình biên dịch thì thay đổi theo trình biên dịch Ví dụ, nếu một trìnhbiên dịch nhận diện 31 con số có ý nghĩa đầu tiên cho một tên định danh thì các câusau sẽ hiển thị cùng một kết quả:
Đây là biến testing testing
Đây là biến testing testing testing
Các định danh trong C có phân biệt chữ hoa và chữ thường, cụ thể, arena thìkhác ARENA
• Các nguyên tắc cho việc đặt tên
Các quy tắc đặt tên biến khác nhau tuỳ ngôn ngữ lập trình Tuy nhiên, vàiquy ước chuẩn được tuân theo như :
• Tên biến phải bắt đầu bằng một ký tự chữ cái
• Các ký tự theo sau ký tự đầu bằng một chuỗi các chữ cái hoặc con số và cũng cóthể bao gồm ký tự đặc biệt như dấu gạch dưới
• Tránh dùng ký tự O tại những vị trí mà có thể gây lầm lẫn với số không (0) vàtương tự chữ cái l (chữ thường của chữ hoa L) có thể lầm lẫn với số 1
• Tên riêng nên tránh đặt tên cho biến
• Theo tiêu chuẩn C các chữ cái thường và hoa thì xem như khác nhau ví dụ biếnADD, add và Add là khác nhau
• Việc phân biệt chữ hoa và chữ thường khác nhau tuỳ theo ngôn ngữ lập trình Do
đó, tốt nhất nên đặt tên cho biến theo cách thức chuẩn
• Tên một biến nên có ý nghĩa, gợi tả và mô tả rõ kiểu dữ liệu của nó Ví dụ, nếu tìm
tổng của hai số thì tên biến lưu trữ tổng nên đặt là sum (tổng) Nếu đặt tên là s hay ab12 thì không hay lắm.
Trang 21• float và double được dùng cho các số có dấu chấm động Kiểu float (số thực) chiếm
4 byte và có thể có tới 6 con số phần sau dấu thập phân, trong khi double chiếm 8
bytes và có thể có tới 10 con số phần thập phân
• char chiếm 1 byte và có khả năng lưu một ký tự đơn (character)
• void được dùng điển hình để khai báo một hàm không trả về giá trị Ðiều này sẽ
được nói rõ hơn trong phần hàm
Lưu ý: Các con số dấu chấm động được dùng để biểu thị các giá trị cần có độ
chính xác ở phần thập phân
2.3 Những kiểu dữ liệu cơ bản và dẫn xuất
• Các kiểu có dấu (signed) và không dấu(unsigned)
Khi khai báo một số nguyên, mặc định đó là một số nguyên có dấu Tính quan trọng
nhất của việc dùng signed là để bổ sung cho kiểu dữ liệu char, vì char là kiểu không
dấu theo mặc định
Kiểu unsigned chỉ rõ rằng một biến chỉ có thể có giá trị dương Bổ từ này có thể được
sử dụng với kiểu dữ liệu int và kiểu dữ liệu float Kiểu unsigned có thể áp dụng cho
kiểu dữ liệu float trong vài trường hợp nhưng điều này giảm bớt tính khả chuyển(portability) của mã lệnh
Với việc thêm từ unsigned vào trước kiểu dữ liệu int, miền giá trị cho những số
dương có thể được tăng lên gấp đôi
Xem những câu lệnh của mã C cung cấp ở bên dưới, nó khai báo một biến theo kiểu
unsigned int và khởi tạo biến này có giá trị 23123.
unsigned int varNum;
• Các kiểu long và short
Chúng được sử dụng khi một số nguyên có chiều dài ngắn hơn hoặc dài hơn
chiều dài bình thường Một bổ từ short được áp dụng cho kiểu dữ liệu khi chiều dài
Trang 22yêu cầu ngắn hơn chiều dài số nguyên bình thường và một bổ từ long được dùng khi
chiều dài yêu cầu dài hơn chiều dài số nguyên bình thường
Bổ từ short được sử dụng với kiểu dữ liệu int Nó sửa đổi kiểu dữ liệu int theo hướng
chiếm ít vị trí bộ nhớ hơn Bởi vậy, trong khi một biến kiểu int chiếm giữ 16 bit (2
byte) thì một biến kiểu short int (hoặc chỉ là short), chiếm giữ 8 bit (1 byte) và cho
phép những số có trong phạm vi từ -128 tới 127
Bổ từ long được sử dụng tương ứng một miền giá trị rộng hơn Nó có thể được
sử dụng với int cũng như với kiểu dữ liệu double Khi được sử dụng với kiểu dữ liệu int, biến chấp nhận những giá trị số trong khoảng từ -2,147,483,648 đến 2,147,483,647 và chiếm giữ 32 bit ( 4 byte) Tương tự, kiểu long double của một biến
chiếm giữ 128 bit (16 byte)
Một biến long int được khai báo như sau:
long int varNum;
Bảng dưới đây trình bày phạm vi giá trị cho các kiểu dữ liệu khác nhau và số bit
nó chiếm giữ dựa theo tiêu chuẩn ANSI
Kiểu Dung lượng xấp xỉ
unsigned
signed
short int
83,647signed
unsigned
long int
long
double
Trang 23Bảng 2.1: Các kiểu dữ liệu và phạm vi
• Các toán tử số học
Những toán tử số học được sử dụng để thực hiện những thao tác mang tính số
học Chúng được chia thành hai lớp : Toán tử số học một ngôi (unary) và toán tử số học hai ngôi (binary).
Các toán tử một
ngôi
Chức năng
Các toán tử hai ngôi
Chức năng
Thư viện chuẩn trong C cung cấp hai hàm để thực hiện các yêu cầu nhập và xuất
có định dạng Chúng là:
• printf() – Hàm xuất có định dạng.
• scanf() – Hàm nhập có định dạng.
2.3.1 Printf
Ở đây, chúng ta sẽ xem chúng chi tiết hơn Hàm printf() được dùng để hiển thị
dữ liệu trên thiết bị xuất chuẩn – console (màn hình) Dạng mẫu chung của hàm nàynhư sau:
printf(“control string”, argument list);
Danh sách tham số (argument list) bao gồm các hằng, biến, biểu thức hay hàm
và được phân cách bởi dấu phẩy Cần phải có một lệnh định dạng nằm trong chuỗi
Trang 24điều khiển (control string) cho mỗi tham số trong danh sách Những lệnh định dạng
phải tương ứng với danh sách các tham số về số lượng, kiểu dữ liệu và thứ tự Chuỗi
điều khiển phải luôn được đặt bên trong cặp dấu nháy kép“”, đây là dấu phân cách (delimiters) Chuỗi điều khiển chứa một hay nhiều hơn ba thành phần dưới đây :
• Ký tự văn bản (Text characters) – Bao gồm các ký tự có thể in ra được và sẽ được
in giống như ta nhìn thấy Các khoảng trắng thường được dùng trong việc phân chiacác trường (field) được xuất ra
• Lệnh định dạng - Định nghĩa cách thức các mục dữ liệu trong danh sách tham số sẽ
được hiển thị Một lệnh định dạng bắt đầu với một ký hiệu % và theo sau là một mã định dạng tương ứng cho mục dữ liệu Dấu % được dùng trong hàm printf() để chỉ ra
các đặc tả chuyển đổi Các lệnh định dạng và các mục dữ liệu tương thích nhau theothứ tự và kiểu từ trái sang phải Một mã định dạng thì cần thiết cho mọi mục dữ liệucần in ra
• Các ký tự không in được – Bao gồm phím tab, dấu khoảng trắng và dấu xuống dòng.
Mỗi lệnh định dạng gồm một hay nhiều mã định dạng Một mã định dạng bao
gồm ký hiệu % và một bộ định kiểu Bảng 6.1 liệt kê các mã định dạng khác nhau được hỗ trợ bởi câu lệnh printf():
Số thập lục phân không dấu (Dùng “ABCDEF”)
(Unsigned hexadecimal integer)
Bảng 2.2: Mã định dạng trong printf () Trong bảng trên, c, d, f, lf, e, g, u, s, o và x là bộ định kiểu.
Các quy ước in cho các mã định dạng khác nhau được tổng kết trong Bảng 6.2:
Trang 25Mã định
dạng
Quy ước in ấn
%f Phần số nguyên của số sẽ được in nguyên dạng Phần thập
phân sẽ chứa 6 con số Nếu phần thập phân của con số ít hơn 6
số, nó sẽ được thêm các số không (0) bên phải hay gọi là làmtròn phía bên phải
%e Một con số bên trái dấu chấm thập phân và 6 con số bên
phải giống như %f
Bảng 2.3: Quy ước in
Bởi vì các ký hiệu %,\ và “ được dùng đặc biệt trong chuỗi điều khiển, nếu chúng ta
cần in các ký hiệu này lên màn hình, chúng phải được dùng như trong Bảng 6.3:
Bảng 2.4: Các ký tự đặc biệt trong chuỗi điều khiển
Bảng dưới đây đưa ra vài ví dụ sử dụng chuỗi điều khiển và mã định dạng khác nhau
Số Câu lệnh Chuỗi điều khiển
Nội dung mà chuỗi điều khiển chứa đựng
Danh sách tham số
Giải thích danh sách tham số
Hiển thị trên màn hình
Hello(Trên
Trang 26tự vănbản và ký
và trình
tự thoátra
count,stud_num
Haibiến
0,100
2.3.2 Scanf()
Hàm scanf() được sử dụng để nhập dữ liệu Khuôn dạng chung của hàm scanf()
như sau:
scanf(<Chuỗi các định dạng>, <Danh sách các tham số>);
Ðịnh dạng được sử dụng bên trong câu lệnh printf() cũng được sử dụng cùng cú
pháp trong các câu lệnh scanf()
Cách thức hoạt động của scanf()
scanf() sử dụng những ký tự không được in như ký tự khoảng trắng, ký tự phân
cách (tab), ký tự xuống dòng để quyết định khi nào một trường nhập kết thúc và bắt
đầu Có sự tương ứng giữa lệnh định dạng với những trường trong danh sách tham số
theo một thứ tự xác định, bỏ qua những ký tự khoảng trắng bên trong Do đó, đầu vào
có thể được trải ra hơn một dòng, miễn là chúng ta có ít nhất một ký tự phân cách,
khoảng trắng hay hàng mới giữa các trường nhập vào Nó bỏ qua những khoảng trắng
và ranh giới hàng để thu được dữ liệu
Trang 27Câu lệnh}
Cú pháp tổng quát của vòng lặp for như sau:
for(khởi tạo giá trị cho biến điều khiển; biểu thức điều kiện;biểu thức thay đổigiá trị của biến điều khiển)
Trang 28CHƯƠNG 3: LẬP TRÌNH VI XỬ LÝ
3.1 Cấu Trúc AVR
3.1.1 Tổ chức của AVR
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được tách riêng Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại
vi, với register file Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục
vụ cho instruction registers Hình 1 mô tả cấu trúc bộ nhớ của AVR
Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình được,
trong các chip AVR cũ (như AT90S1200 hay AT90S2313…) bộ nhớ chương trình chỉgồm 1 phần là Application Flash Section nhưng trong các chip AVR mới chúng ta có thêm phần Boot Flash setion Boot section sẽ được khảo sát trong các phần sau, trong bài này khi nói về bộ nhớ chương trình, chúng ta tự hiểu là Application section Thực chất, application section bao gồm 2 phần: phần chứa các instruction (mã lệnh cho hoạtđộng của chip) và phần chứa các vector ngắt (interrupt vectors) Các vector ngắt nằm
ở phần đầu của application section (từ địa chỉ 0x0000) và dài đến bao nhiêu tùy thuộc vào loại chip Phần chứa instruction nằm liền sau đó, chương trình viết cho chip phải được load vào phần này
Vì chức năng chính của bộ nhớ chương trình là chứa instruction, không có nhiều cơ hội tác động lên bộ nhớ này khi lập trình cho chip, vì thế đối với người lập trình AVR, bộ nhớ này “không quá quan trọng” Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của chip
Trang 29Hình 3.1 Tổ chức bộ nhớ của AVR.
Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan trọng
nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip, tuy nhiên về cơ bản phần
bộ nhớ này được chia thành 5 phần:
• Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu, như mô tả trong hình 1, phần này
bao gồm 32 thanh ghi có tên gọi là register file (RF), hay General Purpose Rgegister –GPR, hoặc đơn giản là các Thanh ghi Tất cả các thanh ghi này đều là các thanh ghi 8 bits như trong hình 2
Hình 3.2 Thanh ghi 8 bits
Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địachỉ tuyệt đối từ 0x0000 đến 0x001F Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến
255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31 Chúng được chia thành 2phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16đến R31 Các thanh ghi này có các đặc điểm sau:
• Được truy cập trực tiếp trong các instruction
Trang 30• Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳ xung clock.
• Register File được kết nối trực tiếp với bộ xử lí trung tâm – CPU của chip
• Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứa kết quảtrả lại của phép toán
Tất cả các instruction sử dụng RF làm toán hạng đều có thể truy nhập tất cả các
RF một cách trực tiếp trong 1 chu kỳ xung clock, ngoại trừ SBCI, SUBI, CPI, ANDI
và LDI, các instruction này chỉ có thể truy nhập các thanh ghi từ R16 đến R31
Thanh ghi R0 là thanh ghi duy nhất được sử dụng trong instruction LPM (LoadProgram Memory) Các thanh ghi R26, R27, R28, R29, R30 và R31 ngoài chức năngthông thường còn được sử dụng như các con trỏ (Pointer register) trong một sốinstruction truy xuất gián tiếp Chúng ta sẽ khảo sát vấn đề con trỏ sau này
Hình 3.3 mô tả các chức năng phụ của các thanh ghi
Tóm lại 32 RF của AVR được xem là 1 phần của CPU, vì thế chúng được CPU
sử dụng trực tiếp và nhanh chóng, để gọi các thanh ghi này, chúng ta không cần gọi
Trang 31địa chỉ mà chỉ cần gọi trực tiếp tên của chúng RF thường được sử dụng như các toán hạng (operand) của các phép toán trong lúc lập trình.
• Phần 2: là phần nằm ngay sau register file, phần này bao gồm 64 thanh ghi được gọi
là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùng nhớ I/O (I/O Memory).Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi Tất cả các thanh ghiđiều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây Xem lại ví dụ trong bài 1,trong đó tôi có đề cập về việc điều khiển các PORT của AVR, mỗi PORT liên quanđến 3 thanh ghi DDRx, PORTx và PINx, tất cả 3 thanh ghi này đều nằm trong vùngnhớ I/O Xa hơn, nếu muốn truy xuất các thiết bị ngoại vi khác như Timer, chuyển đổiAnalog/Digital, giao tiếp USART…đều thực hiện thông qua việc điều khiển các thanhghi trong vùng nhớ này
Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O Nếu sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính từ 0x0020 đến 0x005F Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.
Để thống nhất cách sử dụng từ ngữ, từ bây giờ chúng ta dùng khái niệm
“địa chỉ I/O” cho các thanh ghi trong vùng nhớ I/O để nói đến địa chỉ không tính phần Register File, khái niệm “địa chỉ bộ nhớ” của thanh ghi là chỉ địa chỉ tuyệt đối của chúng trong SRAM Ví dụ thanh ghi DDRD có “địa chỉ I/O” là 0x0011 và “địa chỉ bộ nhớ” của nó là 0x0031, “địa chỉ bộ nhớ” = “địa chỉ I/O” + 0x0020.
Vì các thanh ghi trong vùng I/O không được hiểu theo tên gọi như cácRegister file, khi lập trình cho các thanh ghi này, người lập trình cần nhớ địa chỉ củatừng thanh ghi, đây là việc tương đối khó khăn Tuy nhiên, trong hầu hết các phầnmềm lập trình cho AVR, địa chỉ của tất cả các thanh ghi trong vùng I/O đều được địnhnghĩa trước trong 1 file Definition, bạn chỉ cần đính kèm file này vào chương trình củabạn là có thể truy xuất các thanh ghi với tên gọi của chúng Giả sử trong ví dụ ở bài 1,
để lập trình cho chip Atmega8 bằng AVRStudio, dòng thứ 2 chúng ta sử dụngINCLUDE "M8DEF.INC" để load file định nghĩa cho chip ATMega8, fileM8DEF.INC Vì vậy, trong sau này khi muốn sử dụng thanh ghi DDRD bạn chỉ cầngọi tên của chúng, như: OUT DDRD,R6.
Trang 32• Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa các biến(tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự các thanhRAM trong máy tính nhưng có dung lượng khá nhỏ (khoảng vài KB, tùy thuộc vàoloại chip).
• Phần 4: RAM ngoại (external SRAM), các chip AVR cho phép người sử dụng gắnthêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào người sửdụng gắn thêm bộ nhớ ngoài vào chip
• Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một phần quantrọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay cả khikhông cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu.Như trong hình 1, phần bộ nhớ EEPROM được tách riêng và có địa chỉ tính từ0x0000
Hình 3.4 Biểu diễn cấu trong bên trong của 1 AVR
Các instruction được chứa trong bộ nhớ chương trình Flash memory dưới dạngcác thanh ghi 16 bit Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock
Trang 33và 1 instruction chứa trong program memory sẽ được load vào trong instruction register, instruction register tác động và lựa chọn register file cũng như RAM cho ALU thực thi Trong lúc thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được quyết định bởi một bộ đếm chương trình – PC (Program counter) Đó chính là cách thức hoạt động của AVR.
AVR có ưu điểm là hầu hết các instruction đều được thực thi trong 1 chu kỳxung clock, vì vậy có thể nguồn clock lớn nhất cho AVR có thể nhỏ hơn 1 số vi điềukhiển khác như PIC nhưng thời gian thực thi vẫn nhanh hơn
3.2.2 Thanh ghi trạng thái - SREG (STATUS REGISTRY).
Nằm trong vùng nhớ I/O, thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ bộnhớ là 0x005F (thường đây là vị trí cuối cùng của vùng nhớ I/O) là một trong số các thanh ghi quan trọng nhất của AVR Thanh ghi SREG chứa 8 bit cờ (flag) chỉ trạng thái của bộ xử lí, tất cả các bit này đều bị xóa sau khi reset, các bit này cũng có thể được đọc và ghi bởi chương trình Chức năng của từng bit được mô tả như sau:
Hình 3.5 Thanh ghi trạng thái
• Bit 0 – C (Carry Flag: Cờ nhớ): là bit nhớ trong các phép đại số hoặc logic, ví dụthanh ghi R1 chứa giá trị 200, R2 chứa 70, chúng ta thực hiện phép cộng có nhớ: ADCR1, R2, sau phép cộng, kết quả sẽ được lưu lại trong thanh ghi R1, trong khi kết quảthực là 270 mà thanh ghi R1 lại chỉ có khả năng chứa tối đa giá trị 255 (vì có 8 bit)nên trong trường hợp này, giá trị lưu lại trong R1 thực chất chỉ là 14, đồng thời cờ Cđược set lên 1 (vì 270=100001110, trong đó 8 bit sau 00001110 =14 sẽ được lưu lạitrong R1)
• Bit 1 – Z (Zero Flag: Cờ 0): cờ này được set nếu kết quả phép toán đại số hay phépLogic bằng 0
• Bit 2 – N (Negative Flag: Cờ âm): cờ này được set nếu kết quả phép toán đại sốhay phép Logic là số âm
Trang 34• Bit 3 – V (Two’s complement Overflow Flag: Cờ tràn của bù 2): hoạt động của
cờ này có vẻ sẽ khó hiểu cho bạn vì nó liên quan đến kiến thức số nhị phân (phần bù),chúng ta sẽ đề cập đến khi nào thấy cần thiết
• Bit 4 – S (Sign Bit: Bit dấu): Bit S là kết quả phép XOR giữa 1 cờ N và V, S=Nxor V
• Bit 5 – H (Half Carry Flag: Cờ nhờ nữa): cờ H là cờ nhớ trong 1 vài phép toánđại số và phép Logic, cờ này hiệu quả đối với các phép toán với số BCD
• Bit 6 – T (Bit Copy Storage): được sử dụng trong 2 Instruction BLD (Bit LoaD)
và BST (Bit STorage) Tôi sẽ giải thích chức năng Bit T trong phần giới thiệu về BLD
và BST
• Bit 7 – I (Global Interrupt Enable) : Cho phép ngắt toàn bộ): Bit này phải đượcset lên 1 nếu trong chương trình có sử dụng ngắt Sau khi set bit này, bạn muốn kíchhoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó Hai instruction dùng riêng đểSet và Clear bit I là SEI và CLI
Chú ý: tất cả các bit trong thanh ghi SREG đều có thể được xóa thông quacác instruction không toán hạng CLx và set bởi SEx, trong đó x là tên của Bit.Ví dụCLT là xóa Bit T và SEI là set bit I
bảng tóm tắt sự ảnh hưởng của các phép toán đại số, logic lên các Bit trong thanh ghi SREG
Hình 3.5 Ảnh hưởng của các phép toán lên SREG
Trang 353.2 Ngắt Ngoài
3.3.1 Ngắt trên AVR
Ngắt là một trong 2 kỹ thuật “bắt” sự kiện cơ bản là hỏi vòng (Polling) và ngắt
Hình 3.6 Minh họa cách tổ chức ngắt thông thường trong các chip AVR
Trang 36Bảng 3.7 Tóm tắt các vector ngắt có trên chip atmega8.
3.2.2 Ngắt ngoài (External Interrupt).
Có 4 khả năng (tạm gọi là các MODES) có thể xảy ra khi nhấn và thả các button Nếu không nhấn, trạng thái các chân INT là HIGH do điện trở kéo lên, khi vừanhấn 1 button, sẽ có chuyển trạng thái từ HIGH sang LOW, gọi là cạnh xuống
- Falling Edge, khi button được nhấn và giữ, trạng thái các chân INT được xác định làLOW và cuối cùng khi thả các button, trạng thái chuyển từ LOW sang HIGH, gọi là cạnh lên – Rising Edge Trong những trường hợp cụ thể, 1 trong 4 MODES trên đều hữu ích, ví dụ trong các ứng dụng đếm xung (đếm encoder của servo motor chẳng hạn) thì 2 MODE “cạnh” phải được dùng Thanh ghi MCUCR chứa các bits cho phép chọn 1 trong 4 MODE trên cho các ngắt ngoài Dưới đây là cấu trúc thanh ghi
MCUCR được trích ra từ datasheet của chip atmega8
Trang 37MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài, chúng tachỉ quan tâm đến 4 bit thấp của nó (4 bit cao dùng cho Power manager và SleepMode) Bốn bit thấp là các bit Interrupt Sense Control (ISC) trong đó 2 bitISC11:ISC10 dùng cho INT1 và 2 bit ISC01:ISC00 dùng cho INT0 Hãy nhìn vàobảng tóm tắt bên dưới để biết chức năng của các bit trên, đây là bảng “chân trị” của 2bit ISC11, ISC10 Bảng chân trị cho các bit ISC01, ISC00 hoàn toàn tương tự.
Bảng 3.8: INT1 Sense ControlThật dễ dàng để hiểu chức năng của các bit Sense Control, ví dụ bạn muốn set cho INT1 là ngắt cạnh xuống (Falling Edge) trong khi INT0 là ngắt cạnh lên (Rising Edge), hãy đặt dòng lệnh MCUCR =0x0B (0x0B = 00001011 nhị phân) trong chương trình của bạn
Thanh ghi điều khiển ngắt chung – GICR (General Interrupt Control Register) (chú ý trên các chip AVR cũ, như các chip AT90Sxxxx, thanh ghi này có tên là thanh ghi mặt nạ ngắt thông thường GIMSK, bạn tham khảo thêm datasheet của các chip này nếu cần sử dụng đến) GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 2 bit cao (bit 6
và bit 7) là được sử dụng cho điều khiển ngắt, cấu trúc thanh ghi như bên dưới (trích datasheet)