Điều khiển cánh tay Robot học lệnh gắp sản phẩm trên băng chuyền.pdf
- BỘ GIÁO DỤC
VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÀ RỊA VŨNG TÀU
KHOA CÔNG NGHỆ KỸ THUẬT–NÔNG NGHIỆP CÔNG NGHỆ CAO
—–—–
BÁO CÁO ĐỒ ÁN TỐT NGHIỆP
ĐIỀU KHIỂN CÁNH TAY ROBOT HỌC LỆNH GẮP SẢN PHẨM
TRÊN BĂNG CHUYỀN
T
Tr
rì
ìn
nh
h đ
độ
ộ đ
đà
ào
o t
tạ
ạo
o:
: Đ
Đạ
ại
i h
họ
ọc
c c
ch
hí
ín
nh
h q
qu
uy
y
N
Ng
gà
àn
nh
h :
: C
Cô
ôn
ng
g N
Ng
gh
hệ
ệ K
Kỹ
ỹ T
Th
hu
uậ
ật
t Đ
Đi
iệ
ện
n –
– Đ
Đi
iệ
ện
n T
Tử
ử
C
Ch
hu
uy
yê
ên
n N
Ng
gà
àn
nh
h :
: Đ
Đi
iề
ều
u k
kh
hi
iể
ển
n &
& T
Tự
ự Đ
Độ
ộn
ng
g H
Hó
óa
a
G
GV
VH
HD
D :
: T
Th
h.
.s
s N
Ng
gu
uy
yễ
ễn
n L
Lư
ươ
ơn
ng
g T
Th
ha
an
nh
h T
Tù
ùn
ng
g
S
SV
VT
TH
H :
: N
Ng
gu
uy
yễ
ễn
n V
Vă
ăn
n H
Hi
iế
ếu
u
L
Lớ
ớp
p :
: D
DH
H1
17
7T
TD
D
V
Vũ
ũn
ng
g T
Tà
àu
u,
, T
Th
há
án
ng
g 0
01
1 N
Nă
ăm
m 2
20
02
21
1 - TRƯỜNG ĐẠI HỌC
BÀ RỊA VŨNG TÀU CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CNKT – NNCNC ĐỘC LẬP-TỰ DO-HẠNH PHÚC
PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP
(Đính kèm Quy định về việc tổ chức, quản lý các hình thức tốt nghiệp ĐH, CĐ ban hành kèm
theo Quyết định số 585/QĐ-ĐHBRVT ngày 16/7/2013 của Hiệu trưởng Trường Đại học BR-VT)
Họ tên sinh viên : NGUYỄN VĂN HIẾU Ngày sinh: 20/11/1999
MSSV: 17032542
Email: [email protected]
Lớp : DH17TD
Chuyên ngành : Điều Khiển Và Tự Động Hóa
Hệ đào tạo : Đại Học Chính Quy
1. Tên đề tài: Điều khiển cánh tay robot học lệnh gắp sản phẩm trên băng chuyền
2. Giảng viên hướng dẫn: Ths. Nguyễn Lương Thanh Tùng
3. Ngày giao đề tài: 11/2020
4. Ngày hoàn thành đồ án/ khoá luận tốt nghiệp: 01/2021
Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021
Giảng viên hướng dẫn Sinh viên thực hiện
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Trưởng bộ môn Trưởng khoa
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên - Page | 3
Nhậnxét của GVHD
(Của giáo viên hướng dẫn)
1.Thái độ tác phong và nhận thức trong quá trình thực hiện đồ án:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
2.Hình thức, thể thức trình bày đồ án:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
3. Kiến thức chuyên môn:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
4.Đánh giá khác:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
5.Đánh giá kết quả:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
GIÁO VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
ThS. Nguyễn Lương Thanh Tùng - Page | 4
Nhậnxét của GVPB
(Của giáo viên phản biện)
1.Thái độ tác phong và nhận thức trong quá trình thực hiện đồ án:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
2.Hình thức, thể thức trình bày đồ án:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
3. Kiến thức chuyên môn:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
4.Đánh giá khác:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
5.Đánh giá kết quả:
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………..
GIÁO VIÊN PHẢN BIỆN
(Ký và ghi rõ họ tên) - Page | 5
Lờicảm ơn
Đầu tiên em xin gởi lời cảm ơn sâu sắc đến Thầy Nguyễn Lương Thanh Tùng –
Giảng viên bộ môn Điện – Điện Tử, đã tận tình giúp đỡ, hướng dẫn, giảng giải cho
chúng em trong lựa chọn đề tài cũng như trong quá trình thực hiện đề tài. Trong quá
trình thực hiện đồ án cũng đã xảy ra nhiều khó khăn, thiếu sót nhưng được sự hỗ trợ
và góp ý của Thầy nên nhóm đã hoàn thành được đồ án.
Trong suốt thời gian được theo học tại trường Đại học Bà Rịa Vũng Tàu, Tp.
Vũng Tàu, em đã nhận được nhiều sự quan tâm và giúp đỡ từ Thầy Cô và bạn bè.
Cảm ơn Hiệu Trưởng, cùng các quý thầy cô trường Đại học Bà Rịa – Vũng Tàu đã
hỗ trợ tận tình về trang thiết bị, phần mềm, cơ sở vật chất tạo điều kiện hoàn thành
đồ án. Với lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới quý Thầy Cô, những người
đã truyền lại cho em rất nhiều kinh nghiệm và kiến thức quý báu, những sự giúp đỡ
ấy đã tiếp thêm động lực cho em vững bước trên con đường mình đã chọn. Và đặc
biệt là Thầy, Cô khoa Điện – Điện tử đã truyền đạt kiến thức, kinh nghiệm cũng như
tạo những điều kiện tốt nhất để em hoàn thành đề tài.
Xin cảm ơn các bạn cùng khóa, cùng khoa đã động viên, khích lệ, ủng hộ về nhiều
mặt góp phần làm nên thành công của đồ án này.
Cảm ơn Đại Học Bà Rịa Vũng Tàu!
Xin chân thành cảm ơn!
Sinh viên thực hiện
(Ký và ghi rõ họ tên)
Nguyễn Văn Hiếu - Page | 6
MỤCLỤC:
CHƯƠNG 1: MỞ ĐẦU
I. Đặt vấn đề
II. Mục tiêu, nhiệm vụ và giới hạn đề tài
CHƯƠNG 2: TỔNG QUAN ĐỀ TÀI
I. Giới thiệu
II. Lịch sử phát triển
III. Phân loại arm robot
IV. Ứng dụng và lợi ích
CHƯƠNG 3: TỔNG QUAN THIẾT BỊ VÀ PHẦN MỀM SỬ DỤNG
I. Giới thiệu chung về Arduino
II. Arduino Uno
III. Giới thiệu chung về cảm biến
IV. Động cơ servo
V. Chiết áp ( biến trở )
VI. Motor giảm tốc
VII. Relay đóng ngắt
VIII. Khung cánh tay robot
IX. Giới thiệu phần mềm IDE
CHƯƠNG 4: TỔNG QUAN MÔ HÌNH THỰC TẾ
I. Kết nối linh kiện
II. Mô hình thực tế
III. Nguyên lí hoạt động
IV. Thuật toán điều khiển
V. Code điều khiển
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
I. Kết luận
II. Hướng phát triển đề tài
TÀI LIỆU THAM KHẢO - Page | 7
PHỤLỤC HÌNH ẢNH:
Hình 1 : Robot hoạt động theo tạo độ DECAC.
Hình 2 : Robot hoạt động theo hệ tọa độ trụ
Hình 3 : Robot hoạt động theo hệ tọa độ cầu.
Hình 4 : Robot kiểu SCARA.
Hình 5 : Robot khớp nối
Hình 6 : Robot song song (3-PRS)
Hình 7: Ứng dụng robot
Hình 8: Board mạch Arduino Uno.
Hình 9: Board mạch Arduino Uno.
Hình 10: Cảm biến vật cản hồng ngoại
Hình 11: Cảm biến vật cản hồng ngoại
Hình 12: Động cơ RC Servo Digital RC FR1510
Hình 13: Động cơ RC Servo 9G.
Hình 14: Chiết áp
Hình 15: Động cơ giảm tốc
Hình 16: Relay
Hình 17: Khung arm robot tự làm
Hình 18: Giao diện phần mềm IDE.
Hình 19: Code sáng tắt led trên phần mềm IDE.
Hình 20: Kết nối Servo với arduino.
Hình 21: Kết nối Cảm biến vật cản hồng ngoại, relay và động cơ giảm tốc:
Hình 22: Mô hình
Hình 23: Bảng mạch điều khiển
Hình 24: Cánh tay robot
Hình 25: Sơ đồ khối
Hình 26: Thuật toán - Page | 8
CHƯƠNG1: MỞ ĐẦU
I. Đặt vấn đề
Hiện nay với nền công nghiệp hóa hiện đại hóa, với sự phát triển của các kỹ
thuật hiện đại, nền công nghiệp 4.0 cần sản xuất rất nhiều linh kiện hay chế tạo máy
móc, hay trong nền công nghiệp sản xuất hàng hóa củng cần hiện đại hóa.
Cùng với sự phát triển không ngừng của các ngành khoa học kỹ thuật, các ngành công
nghiệp cũng phát triển nhanh chóng. Việc áp dụng máy móc hiện đại vào sản xuất cũng là một
yêu cầu không thể thiếu trong các nhà máy, nhằm tang năng suất, tăng chất lượng và giảm giá
thành sản phẩm.
Song song với sự phát triển đó, công nghệ chế tạo Robot cũng phát triển nhanh chóng đặc
biệt là ở các nươc phát triển nhằm đáp ứng các nhu cầu về sản xuất, sinh hoạt, quốc
phòng…Robot có thể thực hiện những công việc mà con người khó thực hiện và thậm chí
không thực hiện được như : làm những công việc đòi hỏi độ chính xác cao,làm việc trong môi
trường nguy hiểm( như lò phản ứng hạt nhân, dò phá mìn trong quân sự), thám hiểm không
gian vũ trụ….
Với nghành công nghiệp của Việt Nam thì robot chưa được xuất hiện nhiều trong các dây
chuyền sản xuất. Vì sản phẩm này còn quá đắt với thị trường Việt Nam.
Nhằm nội địa hóa sản phẩm, góp phần nào đó nâng cao năng xuất lao động , phát triển
công nghệ chế tạo robot ở nước ta, cũng như nghiên cứu chuyên sâu về Robot, nên em đã chọn
đề tài “ Cánh tay robot học lệnh gắp sản phẩm trên băng chuyền ”.
Đề tài này hướng tới có thể thay thế các bộ điều khiển cùa các nhà máy, công ty và xây
dựng thuật điều khiển tối ưu cho các đối tượng sản xuất, đồng thời sử dụng đề tài này để làm
đồ án chuyên ngành của mình.
II. Mục tiêu, nhiệm vụ và giới hạn đề tài
Mục tiêu của đề tài này là nghiên cứu về cấu tạo và các phương pháp điều
khiển thích hợp trên cơ sở ứng dụng arduino để hiểu được bộ điều khiển cánh tay
robot học lệnh gắp sản phẩm trên băng chuyền. có thể áp dụng vào phòng thí nghiệm của các
trường cao đẳng, đại học cũng như ứng dụng trong sản xuất công nghiệp. - Page | 9
CHƯƠNG2: TỔNG QUAN ĐỀ TÀI
I. Giới Thiệu
Đề tài cánh tay robot phân loại sản phẩm là một phân nhánh trong Robot công nghiệp
vì vậy em xin giới thiệu tổng quát về lịch sử ra đời từ Robot công nghiệp.
Thuật ngữ Robot xuất hiện lần đầu tiên vào năm 1922 trong tác phẩm “Rossum’s
Universal Robot” của Karel Capek. Trong tác phẩm nhân vật Rossum và con trai đã tạo
ra chiếc máy giống con người để phục vụ cho con người.
Năm 40 nhà văn viễn tưởng Nga, Issac Asimov, mô tả robot là một chiếc máy tự động,
mang diện mạo con người được điều khiển bằng một hệ thần kinh khả trình Positron, do
chính con người lập trình. Asimov đặt tên cho ngành nghiên cứu về robot là robotics, trong
đó có 3 nguyên tắc cơ bản:
– Robot không được xúc phạm con người và không gây tổn hại cho con người.
– Hoạt động của robot phải tuân thủ các quy tắc do con người đặt ra. Các quy tắc này
không được vi phạm nguyên tắc thứ nhất.
– Một robot cần phải bảo vệ sự sống của mình, nhưng không được vi phạm hai nguyên
tắc trước.
Robot là một tác nhân cơ khí, nhân tạo, ảo, thường là một hệ thống cơ khíđiện tử. Với
sự xuất hiện và chuyển động của mình, robot gây cho người ta cảm giác rằng nó giác quan
giống như con người. Từ “robot” thường được hiểu với hai nghĩa: robot cơ khí và phần
mềm tự hoạt động. Về lĩnh vực Robot, Mỹ và Nhật Bản là những nước đi đầu thế giới về
lĩnh vực này.
Tay robot có thể được thiết kế để thực hiện bất kỳ công việc mong muốn như hàn,
nắm, quay, vv, tùy thuộc vào ứng dụng. Ví dụ, cánh tay robot trong dây chuyền lắp ráp ô
tô thực hiện nhiều công việc khác nhau như hàn và xoay linh kiện và lắp đặt trong quá
trình lắp ráp. Trong một số trường hợp, sự mô phỏng chặt chẽ của bàn tay con người là
mong muốn, như trong robot được thiết kế để tiến hành giải trừ vũ khí và thải bỏ bom. - Page | 10
II.Lịch sử phát triển
Sau sự xuất hiện vào năm 1922, hơn 20 năm sau, sau chiến tranh thế giới thứ 2Hình
dạng Robot xuất hiện đầu tiên ở nước Hoa Kỳ, là loại tay máy chép hình dung trong phòng
thí nghiệm vật liệu phóng xạ. Vào những năm 50 của thế kỷ trước, bên cạnh các loại tay
máy chép hình cơ khí, các loại tay máy chép hình thủy lực điện tử đã xuất hiện.
Chiếc robot công nghiệp được đưa vào ứng dụng đầu tiên. Năm 1961. ở một nhà máy
ô tô của General Motors lại Trenlon. New Jerscy Hoa Kỳ. Năm 1967 Nhât Bản mới nhập
chiếc robot công nghiệp đấu tiên từ Công ty AMF của Hoa Kỳ (American Machine and
Foundry Company).
Nên năm 1990 có hơn 40 công ty Nhật Bản, trong đó có những công ty không lẽ như
Công ty Hitachi và Công ty Mitsubishi, đã đưa ra thi trường quốc tế nhiều lại robot nổi
tiếng.Từ những năm 70 việc nghiên cứu nâng cao tính năng của robot đã chú ý nhiều đến
sự lắp đặt thêm các cảm biến ngoại tín hiệu để nhận biết môi trường làm việc. Tại trường
Đạỉ học Tổng hợp Stanford người ta đã tạo ra loại robot lắp ráp lự động điều khiến bằng
máy vi tính trên cơ sở xử lý thông tin từ các cảm biến lực và thị giác. Vào thời gian này
công ty IBM đã chế tạo loại robot có các cảm biến xúc giác và cảm biến lực. điều khiển
bằng máy tính để lắp ráp các máy in gồm 20 cụm chi tiết.
Theo Viện Kỹ Thuật robot cảu Hoa Kỳ định nghĩa robot là loại tay máy nhiều chức
năng, với chương trình làm việc thay đổi được, dùng để thực hiện một số thao tác sản xuất.
Có nhều tài liệu khi định nghĩa robot rất lưu ý đến tiêu chí điều khiển bằng máy tính nhưng
trong phân loại robot công nghiệp theo tiêu chuẩn của Nhật Bản (JISB 0134-1979) có cả
nhóm tay máy điều khiển bằng tay.
Theo ISO (International Standards Organization) thì: “robot công nghiệp là một tay
máy đa mục tiêu, có một số bậc tự do, dể dàng lập trình, điều khiển trợ động, dùng để tháo
lắp phôi, dụng cụ hoặc các vật dụng khác. Do chương trình thao tác có thể thay đổi nên
thực hiện nhiều nhiệm vụ đa dạng”. Tuy nhiên, robot công nghiệp được định nghĩa như
thế là chưa hoàn toàn thỏa đáng.
Robot công nghiệp có thể được hiểu là những thiết bị tự động linh hoạt, bắt chước
được các chức năng lao động công nghiệp của con người. Nói đến thiết bị tự động linh
hoạt là nhấn mạnh đến khả năng thao tác với nhiều bậc tự do, được điều khiển trợ động
và lập trình thay đổi được. Còn nói đến sự bắt chước các chức năng lao động công nghiệp
của con người là có ý nói đến sự không hạn chế từ các chức năng lao động chân tay đơn
giản đến trí khôn nhân tạo, tùy theo loại hình công việc lao động cần đến chức năng đó
hay không. Đồng thời cũng nói đến mức độ cân thiết bắt chước được như con người hay
không. - Page | 11
III.Phân loại arm robot
1. Robot Cartesian / Gantry Robot (tọa độ DECAC): (Hình 2.3.1) Được sử dụng để chọn
và đặt công việc, ứng dụng sealant, hoạt động lắp ráp, xử lý các máy công cụ và hàn hồ
quang. Đó là một robot có cánh tay có ba khớp lăng trụ, có trục khớp.
Hình 1 : Robot hoạt động theo tạo độ DECAC.
2. Robot trụ : (Hình 2.3.2) Được sử dụng cho các hoạt động lắp ráp, xử lý tại các máy
công cụ, hàn điểm, và xử lý tại các máy đúc. Đó là một robot có trục tạo thành một hệ trục
tọa độ.
Hình 2 : Robot hoạt động theo hệ tọa độ trụ.
3. Robot hình cầu / Robot Polar : (Hình 2.3.3) Được sử dụng để xử lý các máy công cụ,
hàn điểm, máy đúc, máy hàn nhiệt, hàn hồ quang và hàn hồ quang. Đó là một robot có
trục tạo thành một hệ tọa độ cực. - Page | 12
Hình3 : Robot hoạt động theo hệ tọa độ cầu.
4. SCARA robot : (Hình 2.3.4) Được sử dụng để chọn và đặt công việc, ứng dụng sealant,
hoạt động lắp ráp và xử lý các máy công cụ. Robot này có hai khớp nối song song để cung
cấp sự tuân thủ trong máy bay.
Hình 4 : Robot kiểu SCARA.
5. Robot khớp nối : (Hình 2.3.5) Được sử dụng cho các hoạt động lắp ráp, diecasting,
fettling máy móc, khí hàn, hàn hồ quang và phun sơn. Đó là một robot có cánh tay có ít
nhất ba khớp quay. - Page | 13
Hình5 : Robot khớp nối
6. Robot song song : (Hình 2.3.6) Một sử dụng là một nền tảng di động xử lý mô phỏng
bay buồng lái. Đó là một robot có cánh tay có khớp nối lăng trụ hoặc khớp quay đồng
thời.
Hình 6 : Robot song song (3-PRS) - Page | 14
IV.Ứng dụng và lợi ích
Robot cánh tay học lệnh gắp sản phẩm trên băng chuyền được ứng dụng trong các hệ
thống gắp các sản phẩm đã biết trước ở trong các nhà máy, các công ty, xí nghiệp, doanh
nghiệp, …. khi phát triển đề tài hơn có thể thay vì gắp sản phẩm thông thường ta có thể
phát triển thành phân loại và gắp sản phẩm theo màu sắc, theo kích thước hay mã vach,
mã hiệu được cung cấp trước trong hệ thống. Lợi ích lớn nhất của sử dụng cánh tay
robot trong việc phân loại và gắp sản phẩm là có thể xử lý hàng hóa, linh kiện ở tốc độ
cao và nhất quán. Có thể dễ dàng lập trình cánh tay Robot trong nhiều ứng dụng giúp đáp
ứng các yêu cầu trong sản xuất. Cùng với đó việc áp dụng cánh tay Robot cộng tác có kích
thước nhỏ, nhẹ, sẽ hoạt động tốt trong nhiều không gian, cả những không gian nhỏ hẹp.
Sử dụng cánh tay Robot gắp sản phẩm giúp tăng sản lượng, đặc biệt hiệu quả trong quá
trình đóng gói hàng hóa, xây dựng nhà kho thông minh, tạo tỉ lệ hoàn vốn cao trong sản
xuất. Cánh tay Robot gắp sản phẩm sẽ thay thế con người làm các công việc đơn điệu,
nhàm chán lặp đi lặp lại.
Hình 7: Ứng dụng robot
Lợi ích:
• Nâng cao hiệu quả hoạt động
• Tiết kiệm không gian
• Tiết kiệm chi phí
• Hạn chế sai sót
• Giảm tai nạn lao động - Page | 15
CHƯƠNG3: TỔNG QUAN THIẾT BỊ VÀ PHẦN MỀM SỬ DỤNG
I. Giới thiệu chung về arduino
Hình 8: Board mạch Arduino Uno.
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau
hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một board mạch nguồn mở
được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit. Những
Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân
I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
Được giới thiệu vào năm 2005, những nhà thiết kế của Arduino cố gắng mang đến một
phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên
nghiệp để tạo ra những nhiết bị có khả năng tương tác với môi trường thông qua các cảm
biến và các cơ cấu chấp hành. Những ví dụ phổ biến cho những người yêu thích mới bắt
đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng
với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông
thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc
C++.
Arduino cơ bản là một nền tảng tạo mẫu mở về điện tử (open-source electronics
prototyping platform) được tạo thành từ phần cứng lẫn phần mềm. Về mặt kĩ thuật có thể
coi Arduino là 1 bộ điều khiển logic có thể lập trình được. Đơn giản hơn, Arduino là một
thiết bị có thể tương tác với ngoại cảnh thông qua các cảm biến và hành vi được lập trình - Page | 16
sẵn.Với thiết bị này, việc lắp ráp và điều khiển các thiết bị điện tử sẽ dễ dàng hơn bao giờ
hết. Một điều không hề dễ dàng cho những ai đam mê công nghệ và điều khiển học nhưng
là người ngoại đạo và không có nhiều thời gian để tìm hiểu sâu hơn về về kĩ thuật lập trình
và cơ điện tử.
Hiện tại có rất nhiều loại vi điều khiển và đa số được lập trình bằng ngôn ngữ C/C++
hoặc Assembly nên rất khó khăn cho những người có ít kiến thức sâu về điện tử và lập
trình. Nó là trở ngại cho mọi người muốn tạo riêng cho mình một món đồ mang tính công
nghệ. Do vậy đó là lí do Arduino được phát triển nhằm đơn giản hóa việc thiết kế, lắp ráp
linh kiện điện tử cũng như lập trình trên vi xử lí và mọi người có thể tiếp cận dễ dàng hơn
với thiết bị điện tử mà không cần nhiều về kiến thức điện tử và thời gian. Sau đây là nhưng
thế mạnh của Arduino so với các nền tảng vi điều khiển khác:
– Chạy trên đa nền tảng: Việc lập trình Arduino có thể thể thực hiện trên các hệ điều
hành khác nhau như Windows, Mac Os, Linux trên Desktop, Android trên di động.
– Ngôn ngữ lập trình đơn giản dễ hiểu.
– Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nên phần mềm chạy trên
Arduino được chia sẻ dễ dàng và tích hợp vào các nền tảng khác nhau.
– Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạng module nên việc
mở rộng phần cứng cũng dễ dàng hơn.
– Đơn giản và nhanh: Rất dễ dàng lắp ráp, lập trình và sử dụng thiết bị.
– Dễ dàng chia sẻ: Mọi người dễ dàng chia sẻ mã nguồn với nhau mà không lo lắng về
ngôn ngữ hay hệ điều hành mình đang sử dụng.
Arduino có rất nhiều module, mỗi module được phát triển cho một ứng dụng. Về mặt
chức năng, các bo mạch Arduino được chia thành hai loại: loại bo mạch chính có chip
Atmega và loại mở rộng thêm chức năng cho bo mạch chính. Các bo mạch chính về cơ
bản là giống nhau về chức năng, tuy nhiên về mặt cấu hình như số lượng I/O, dung lượng
bộ nhớ, hay kích thước có sự khác nhau. Một số bo có trang bị thêm các tính năng kết nối
như Ethernet và Bluetooth. Các bo mở rộng chủ yếu mở rộng thêm một số tính năng cho
bo mạch chính. Ví dụ như tính năng kết nối Ethernet, Wireless, điều khiển động cơ.
Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn giản đến phức tạp.
Trong số đó có một vài ứng dụng thực sự chứng tỏ khả năng vượt trội của Arduino do
chúng có khả năng thực hiện nhiều nhiệm vụ rất phức tạp. Sau đây là danh sách một số
ứng dụng nổi bật của Arduino như trong công nghệ in 3D, robot dò đường theo hướng có
nguồn nhiệt, tạo một thiết bị nhấp nháy theo âm thanh và đèn laser hay là một thiết bị báo
cho khách hàng biết khi nào bánh mì ra lò. Đồ án tốt nghiệp SVTH: Nguyễn Đức Thịnh
22 Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng tỏ
được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng - Page | 17
đồngnguồn mở (open-source). Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết
đến nhiều. ứng dụng của arduino trong thực tế:
II. Arduino Uno
Hình 9: Board mạch Arduino Uno.
Arduino Uno là một bo mạch vi điều khiển dựa trên chip Atmega328. Nó có
14 chân vào ra bằng tín hiệu số, trong đó có 6 chân có thể sử dụng để điều chế đô rộng
xung. Có 6 chân đầu vào tín hiệu tương tự cho phép chúng ta kết nối với các bộ cảm biến
bên ngoài để thu thập số liệu, sứ dụng một dao động thạch anh tần số dao động 16MHz,
có một cổng kết nối bằng chuẩn USB để chúng ta nạp chương trình vào bo mạch và một
chân cấp nguồn cho mạch, một ICSP header, một nút reset. Nó chứa tất cả mọi thứ cần
thiết để hỗ trợ các vi điều khiển, nguồn cung cấp cho Arduino có thể là từ máy tính thông
qua cổng USB hoặc là từ bộ nguồn chuyên dụng được biến đổi từ xoay chiều sang một
chiều hoặc là nguồn lấy từ pin.
Arduino có thể được hỗ trợ thông qua kết nối USB hoặc với một nguồn cung cấp
điện bên ngoài. Các nguồn năng lượng được lựa chọn tự động. Hệ thống vi điều khiển có
thể hoạt động bằng một nguồn cung cấp bên ngoài từ 6V đến 20V. Tuy nhiên, nếu cung
cấp với ít hơn 7V, chân 5V có thể cung cấp ít hơn 5V và hệ thống vi điều khiển có thể
không ổn định. Nếu cấp nhiều hơn 12V, bộ điều chỉnh điện áp có thể quá nóng và gây
nguy hiểm cho bo mạch. Phạm vi khuyến nghị là 7V đến 12V. - Page | 18
–Chân Vin: Điện áp đầu vào Arduino khi chúng ta dùng nguồn điện bên ngoài (khác
với nguồn 5V lấy từ USB hoặc nguồn thông qua jack cắm nguồn riêng). Chúng ta có thể
cung cấp nguồn thông qua chân này. 25
– Chân 5V: Cung cấp nguồn vi điều khiển và các bộ phận khác trên bo mạch và cung
cấp nguồn cho các thiết bị ngoại vi khi kết nối tới bo mạch.
– Chân 3,3V: Cung cấp nguồn cho các thiết bị cảm biến.
– Chân GND: Chân nối đất.
– Chân Aref: Tham chiếu điện áp đầu vào analog.
– Chân IOREF: Cung cấp điện áp cho các vi điều khiển hoạt động. Một shield được cấu
hình đúng có thể đọc điện áp chân IOREF và lựa chọn nguồn thích hợp hoặc kích hoạt bộ
chuyển đổi điện áp để là việc ở mức 5V hoặc 3,3V.
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
– 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ Flash
của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho
bootloader .
– 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi
lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM.
– 1KB EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống
như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không
phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.
Arduino Uno có 14 chân digital (chân 0 – 13) và 6 chân analog (chân A0 – A5).
Các chân digital chúng ta có thể cấu hình để làm chân nhần dữ liệu vào từ các thiết
bị ngoại vihoặc làm chân để truyền tín hiêu ra các thiết bị ngoại vi. Bằng cách sử dụng
các hàm pinMode(), digitalWrite() và digitalRead(). Mỗi chân có thể cung cấp hoặc nhận
một dòng điện tối đa 40mA và có một điện trở kéo nội (mặc định không nối) 20 – 50
kOhms. Ngoài ra có một số chân có chức năng đặc biệt:
– Chân 0 (Rx): Chân được dùng để nhận dữ liệu nối tiếp.
– Chân 1 (Tx): Chân được dùng để truyền dữ liệu nối tiếp. – Chân 2 và 3: Chân ngắt
ngoài.
– Chân 3, 5, 6, 9, 10 và 11: Chân vào/ra số hoặc để điều chế độ rộng xung
(chân 13 được nối với một LED đơn, sáng tắt tương ứng với mức logic của chân này).
– Chân 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Chuẩn giao tiếp SPI. - Page | 19
–Các chân analog có độ phân giải 10 bit (tương ứng với 1024 mức giá trị khác nhau)
ứng với mức từ 0 – 5V. Ngoài ra một số chân có các chức năng đặc biệt:
– Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI
với các thiết bị khác.
III. Giới thiệu chung về cảm biến
1. Giới thiệu cảm biến:
Cảm biến – sensor: xuất phát từ chữ “sense” nghĩa là giác quan – do đó nó như các
giác quan trên cơ thể con người . Nhờ cảm biến mà mạch điện , hệ thống điện có thể thu
thập thông tin từ bên ngoài. Từ đó hệ thống máy móc, điện tử tự động mới có thể tự động
hiển thị thông tin về đối tượng hay điều khiển quá trình định trước có khả năng thay đổi
một cách uyển chuyển theo môi trường hoạt động.
Cảm biến là thiết bị dùng để cảm nhận biến đổi các đại lượng vật lý và các đại lượng
không có tính chất điện cần đo thành các đại lượng điện có thể đo và xử lý được.
Các bộ cảm biến đóng vai trò cực kỳ quan trọng trong lĩnh vực đo lường và điều khiển.
Chúng cảm nhận và đáp ứng theo các kích thích thường là đại lượng không điện, chuyển
đổi các đại lượng này thành các đại lượng điện và truyền các thông tin về hệ thống đo
lường điều khiển, giúp chúng ta nhận dạng đánh giá và điều khiển mọi biến trạng thái của
đối tượng.
Hiện nay, con người đã sản xuất được rất nhiều các loại cảm biến khác nhau như: cảm
biến ánh sang, cảm biến độ ẩm, cảm biến nhiệt độ, cảm biến quang… Các cảm biến có
ứng dụng rộng rãi và phạm vi sử dụng lớn, ví dụ như trong công nghiệp, khoa học kĩ thuật,
giám sát thiết bị, viễn thông, giao thông, dân dụng, quân sự…
2. Cảm biến vật cản hồng ngoại
Cảm biến vật cản hồng ngoại có khả năng thích nghi với môi trường, có một cặp truyền và
nhận tia hồng ngoại. Tia hồng ngoại phát ra một tần số nhất định, khi phát hiện hướng truyền
có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi so sánh, đèn màu xanh sẽ
sáng lên, đồng thời đầu cho tín hiệu số đầu ra (một tín hiệu bậc thấp).
Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V. Độ nhạy sáng
của cảm biến vật cản hồng ngoại được điều chỉnh bằng chiết áp, cảm biến dễ lắp ráp, dễ sử
dụng,….
Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại vật và
dò đường… - Page | 20
Hình10: Cảm biến vật cản hồng ngoại
Thông số kỹ thuật :
Bộ so sánh sử dụng LM393, làm việc ổn định
Điện áp làm việc: 3.3V – 5V DC.
Khi bật nguồn, đèn báo nguồn màu đỏ sáng.
Lỗ vít 3 mm, dễ dàng cố định, lắp đặt.
Kích thước: 3.2cm * 1.4cm
Các mô-đun đã được so sánh điện áp ngưỡng thông qua chiết áp, nếu sử dụng ở chế độ
thông thường, xin vui lòng không tự ý điều chỉnh chiết áp. - Page | 21
Hình11: Cảm biến vật cản hồng ngoại
IV. Động cơ servo
Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường cứ
cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với
góc quay nằm trong khoảng bất kì từ 0o –
180o
. Mỗi loại servo có kích thước, khối lượng
và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô mình), có
loại thì sở hữu một momen lực vài chục Newton/m, hoặc có loại thì khỏe và nhông sắc
chắc chắn,…
Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của động
cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp
về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động
cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều
khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác.
Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC
(radio-controlled). Trong thực tế, bản thân động cơ servo không phải được điều khiển
bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi. Động cơ servo
nhận tín hiệu từ máy thu này. - Page | 22
1.Động cơ RC Servo Digital RC FR1510:
Hình 12: Động cơ RC Servo Digital RC FR1510
Động cơ RC Servo Digital RC FR1510 có cấu tạo một trục xoay giống như servo
truyền thống giúp bạn dể ứng dụng cho các thiết kế robot của mình, ngoài ra chất lượng
của loại động cơ này rất tốt, độngc ơ này có bánh răng kim loại, lực kéo mạnh, xoay êm,
không rung, giữ vị trí tốt
– Trọng lương: 60g.
– Kích thước: 40*20*40.5mm.
– Tốc độ: 0.16s/60o
tại 4.8VDC đến 7.2VDC.
– Lực kéo: 17kg/cm tại 4.8VDC đến 7.2VDC.
– Dòng điện tiêu thụ: >600mA. – Chiều dài cáp: 32cm.
2. Động cơ RC Servo 9G:
Hình 13: Động cơ RC Servo 9G. - Page | 23
Độngcơ RC Servo 9G có kích thước nhỏ, là loại được sử dụng nhiều nhất để làm các
mô hình nhỏ hoặc các cơ cấu kéo không cần đến lực nặng. Động cơ RC Servo 9G có tốc
độ phản ứng nhanh, động cơ RC Servo 9G có tích hợp sẵn Driver điều khiển động cơ bên
trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM.
Lưu ý: Các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng vì có thể
làm hư bánh răng.
THÔNG SỐ KỸ THUẬT: –
Khối lượng : 9g
– Kích thước: 22.2×11.8.32 mm
– Momen xoắn: 1.8kg/cm
– Tốc độ hoạt động: 60 độ trong 0.1 giây
– Điện áp hoạt động: 4.8V(~5V)
– Nhiệt độ hoạt động: 0 ºC – 55 ºC
V. Chiết áp (biến trở)
Chiết áp, potentiometer hay biến trở chia áp là phần tử điện trở có ít nhất một tiếp điểm di
động trên thân điện trở để tạo thành “bộ chia điện áp” chỉnh được. Tiếp điểm di động chia điện
trở thành các phần có giá trị bù nhau, và khi đặt lên điện trở một điện áp (tín hiệu) V thì điện
áp tại tiếp điểm là giá trị chia tỷ lệ điện áp đó theo các giá trị điện trở. Đó cũng là nguồn gốc
để đặt tên là “chiết áp”.
Chiết áp được dùng để điều khiển mức tín hiệu trong các thiết bị điện và điện tử. Trong
phần lớn trường hợp công suất tiêu tán trên chiết áp là nhỏ, nhưng cũng có một số trường hợp
công suất tiêu tán lên tới watt hoặc trăm watt.
Nếu một đầu ra của thân điện trở không được sử dụng, chỉ có một đầu ra và cần gạt, thì nó
hoạt động như một điện trở thay đổi hoặc biến trở (trở biến đổi). Trong lịch sử các biến trở,
thường là trở dây quấn, có công suất tiêu tán chịu được trên 1 W gọi là rheostat.
Các dạng đặc biệt
Hầu hết chiết áp chế được chế ra có 1 tiếp điểm di động. Tuy nhiên một số hãng có chế ra các
chiết áp có bố trí đặc biệt, hiếm gặp trong thực tế.
Chiết áp trượt có 2 tiếp điểm trượt, để lấy ra hai mức chia áp. Hạn chế không gian cho ra
các tiếp điểm di chuyển trong phạm vi liên quan đến nhau.
Chiết áp có điểm ra bù, là chiết áp trên phần thân điện trở có thêm các điểm nối ra phụ.
Khi nối các điện trở và tụ điện phù hợp vào các điểm này thì cải thiện được đặc trưng tần
số của mạch chia áp ở các mức chia khác nhau. - Page | 24
Chiếtáp kỹ thuật số
Chiết áp kỹ thuật số là phần tử hiếm có trong ứng dụng thông thường. Có hai dạng:
Chiết áp có mảng điện trở chính xác cao được nối và điều khiển giá trị chia áp bằng mã
số, để chia tín hiệu tương tự, như trong các mạch ADC và DAC.
Chiết áp thuần túy số do phần mềm mô phỏng một hệ số nhân tín hiệu đã chỉ định.
Ứng dụng
Chiết áp thường được sử dụng để điều khiển các thiết bị điện như điều khiển âm lượng trên
thiết bị âm thanh. Khi dịch chuyển thanh trượt được vận hành bởi một cơ chế xác định thì nó
có thể được sử dụng làm đầu dò vị trí, ví dụ trong joystick. Chiết áp hiếm khi được sử dụng
để điều khiển trực tiếp công suất đáng kể, cỡ hơn một watt, vì công suất tiêu tán trong chiết
áp sẽ tương đương với công suất trong tải điều khiển
Hình 14: Chiết áp
VI. Motor giảm tốc
Động cơ giảm tốc vàng là loại được lựa chọn và sử dụng nhiều nhất hiện nay cho các thiết kế
Robot đơn giản.
Động cơ DC giảm tốc vàng có chất lượng và giá thành vừa phải cùng với khả năng dễ lắp ráp
của nó đem đến chi phí tiết kiệm và sự tiện dụng cho người sử dụng, các bạn khi mua động cơ
giảm tốc vàng có thể mua thêm gá bắt động cơ vào thân Robot cũng như bánh xe tương thích.
THÔNG SỐ KỸ THUẬT - Page | 25
Điện áp hoạt động: 3-9VDC
Dòng điện tiêu thụ: 110140mA
Tỉ số truyền: 1:120
Số vòng/1phút:
50 vòng/ 1 phút tại 3VDC.
83 vòng/ 1 phút tại 5VDC.
Moment: 1.0KG.CM
Bánh xe V1 được thiết kế để sử dụng với động cơ giảm tốc V1. Bánh xe V1 là loại bánh được
sử dụng nhiều nhất trong các thiết kế robot hiện nay vì có giá thành phải chăng, chất lượng
tốt, dể lắp ráp và ứng dụng trong thiết kế.
Chất liệu: Nhựa, cao su, mút.
Đường kính: 65mm.
Hình 15: Động cơ giảm tốc
VII. Relay đóng ngắt
Module 1 Relay gồm 1 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế lên đến
250VAC 10A. Module 1 relay kích mức thấp được thiết kế chắc chắn, khả năng cách điện
tốt. Trên module đã có sẵn mạch kích relay sử dụng transistor và IC cách ly quang giúp cách
ly hoàn toàn mạch điều khiển (vi điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn
định. - Page | 26
Hình16: Relay
Có sẵn header rất tiện dụng khi kết nối với vi điều khiển. Mô-đun này tuân thủ các tiêu
chuẩn an toàn quốc tế, khu vực đầu vào và khu vực tải có các khe cách ly
THÔNG SỐ KỸ THUẬT
Mức logic : 0V (GND)
Điều khiển đóng ngắt điện DC hoặc AC, bạn có thể điều khiển tải AC 220 V 10A
Có tiếp điểm thường mở và thường đóng:
o NO : thường mở (khi kích tiếp điểm đóng lại)
o COM : chung
o NC : Thường đóng (khi kích tiếp điểm mở ra)
Đầu vào:
-Điện áp nuôi : 5VDC
-Tín hiệu vào điều khiển: 0V
+ Tín hiệu là 0: thì Relay đóng
+ Tín hiệu là 1 : thì Relay mở
Đầu ra:
+ Tiếp điểm relay 220V 10A ( Lưu ý tiếp điểm , không phải điện áp ra)
+ NC : Thường đóng
+ NO: Thường mở
+ COM: Chân chung
Ký hiệu nguồn:
+ VCC, GND là nguồn nuôi Relay
+ in là chân tín hiệu điều khiển - Page | 27
VIII.Khung cánh tay robot
Hình 17: Khung arm robot - Page | 28
IX.Giới thiệu phần mềm IDE
(Integrated Development Environment)
Hình 18: Giao diện phần mềm IDE.
Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng crossplatform
(nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình
xử lý (Processing programming language) và project Wiring. Nó được thiết kế để dành
cho những người mới tập làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một
chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace
matching, và tự động canh lề, cũng như compile(biên dịch) và upload chương trình lên
board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho Arduino được gọi là
một sketch.
Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với một
thư viện phần mềm được gọi là “Wiring”, từ project Wiring gốc, có thể giúp các thao tác - Page | 29
input/outputđược dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm để tạo ra một
chương trình vòng thực thi (cyclic executive) có thể chạy được:
– : hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết
lập các cài đặt
– : hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch
Một chương trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một
bóng đèn Led sáng/tắt. Trong môi trường Arduino, ta sẽ phải viết một chương trình
giống như sau:
Hình 19: Code sáng tắt led trên phần mềm IDE.
Một đặc điểm của hầu hết các board Arduino là chúng có một đèn LED và điện trở
nối giữa chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản.
Đoạn code ở trên không thể đọc được bởi một compiler C++ chuẩn như là một
chương trình đúng, vì vậy khi ta click vào nút “Upload to I/O board” trong
IDE này, một bản copy của đoạn code này sẽ được ghi vào một file tạm với một extra
include header ở phía trên cùng và một hàm main () đơn giản nằm ở phía đáy, để làm
cho thàn một chương trình C++ khả dụng.
Arduino IDE này sử dụng GNU toolchain và AVR Libc để biên dịch chương trình,
và sử dụng avrdude để upload chương trình lên board.
Vì nền tảng của Arduino là các vi điều khiển của Atmel, cho nên môi trường phát
triển của Atmel, AVR Studio hoặc các phiên bản Atmel Studio mới hơn, cũng có thể
được sử dụng để làm phần mềm phát triển cho Arduino.
setup()
loop() - Page | 30
CHƯƠNG4: TỔNG QUAN MÔ HÌNH THỰC TẾ
I. Kết nối linh kiện
1. Sơ đồ kết nối Servo, biến trở, led, nút nhấn với Arduino:
Hình 20: Kết nối Servo với arduino.
LINH KIỆN ARDUINO UNO PIN
SERVO 1 Dây cam -7, dây đen-GND Dây đỏ -VCC
SERVO 2 Dây cam -6, dây đen-GND Dây đỏ -VCC
SERVO 3 Dây cam -5, dây đen-GND Dây đỏ -VCC
BIẾN TRỞ 1 Chân giữa-A0, chân âm-GND Chân dương-
VCC
BIẾN TRỞ 2 Chân giữa -A1, chân âm-GND
Chân dương –
VCC
BIẾN TRỞ 3 Chân giữa -A2, chân âm-GND
Chân dương –
VCC
BIẾN TRỞ 4
Chân giữa -A3, chân âm-GND
Chân dương –
VCC - Page | 31
LEDChân 13 & điện trở &-GND
BUTTON 1 Chân 12 & GND
BUTTON 2 Chân 7 & GND
BUTTON 3 Chân 2 & GND
Hình 21: Kết nối Cảm biến vật cản hồng ngoại, relay và động cơ giảm tốc:
– Chân VCC cảm biến vật VCC
– Chân GND cảm biến vật GND
– Chân OUT cảm biến vật IN Relay và chân số 8 arduino
– Chân IN Relay OUT Cảm biến
– Chân VCC Relay VCC
– Chân GND Relay GND
– Chân COM Relay VCC
– Chân NC Relay GND Motor
– VCC Motor VCC
– GND Motor NC Relay - Page | 32
III.Mô hình hoàn thiện
– Dưới đây là hình ảnh toàn bộ mô hình sau khi hoàn thành
Hình 22: Mô hình - Page | 33
Hình23: Bảng mạch điều khiển
Hình 24: Cánh tay robot - Page | 34
III.Nguyên lí hoạt động và sơ đồ khối
* Cấp nguồn cho mô hình, sau đó thực hiện dạy lệnh, sau khi day lệnh xong ấn Playpause để
chạy ( cảm biến sẽ phát hiện, nếu có vật cản thì cánh tay robot mới hoạt động), muốn dừng thì
ấn lại playpause.
– Bước 1: Đầu tiên ta bật công tắc để cấp nguồn cho băng tải và các thiết bị
– Bước 2: bắt đầu dạy lệnh: vặn biến trở thứ nhất để điều khiển servo thứ nhất quay theo ý
muốn, sau đó ấn nút ấn record trên bảng điều khiển, tương tự vặn biến trở thứ 2 và 3 để điều
khiển servo thứ 2 và 3 quay theo ý muốn và ấn record ( nếu cánh tay có nhiều servo hơn thì
tăng số lượng biến trở lên và cũng làm tương tự như trên )
– Bước 3: Ấn nút ấn Playpause để cánh tay robot thực hiện chạy như lệnh vừa dạy ở bước 2.
– Muốn dừng tạm thời cánh tay robot thì ấn Playpause, và ấn lại nút Playpause để tiếp tục chạy
lại.
-Nút ấn Enable Eeprom là nút ấn dung để chuyển dữ liệu từ ram qua Eeprom để phòng khi
mất điện. Sau khi ấn nút Enable Eeprom, thì khi rút nguồn(mất điện), thì sau khi ta cấp nguồn
lại sẽ ko bị mất lệnh ta dạy lúc đầu ( lệnh sẽ được chuyển từ ram qua epprom, khi bật nguồn
thì lệnh lại được chuyển từ eeprom qua ram để thực hiện chạy).
Hình 25: Sơ đồ khối
Khối điều khiển trung tâm: khối điều khiển trung tâm sử dụng Arduino UNO R3 để
điều khiển các thiết bị khác trong hệ thống
Khối cảm biến: sử dụng cảm biến vật cản hồng ngoại dùng để thu thập tín hiệu có vật
cản và đưa tín hiệu về khối điều khiển trung tâm để điều khiển khối arm robot.
Khối băng tải: dùng để vận chuyển sản phẩm
Khối Arm robot: dùng để gắp sản phẩm vào vị trí - Page | 35
Khốinguồn cung cấp: Khối nguồn cung cấp là khối quan trọng giúp cung cấp điện
cho toàn bộ hệ thống. Vì vậy cần tính toán hợp lý để khối nguồn có thể cung cấp đủ dòng
và áp để mạch có thể hoạt động tốt và ổn định.
IV. Thuật toán điều khiển
Hình 26: Thuật toán - Page | 36
V.Code điều khiển
//ĐỒ ÁN TỐT NGHIỆP
//CÁNH TAY ROBOT HỌC LỆNH GẮP SẢN PHẨM TRÊN BĂNG CHUYỀN
//SVTH NGUYỄN VĂN HIẾU
//GVHD NGUYỄN LƯƠNG THANH TÙNG
#define servo_max 5
// số step lớn nhất , nó sẽ tiêu tốn step_max*servo_max (byte) RAM
// ví dụ cần 200*5=1000 byte RAM
#define step_max 200
// nút ấn
#define start_pause_pin 12
#define record_pin 7
#define ENABLE_EEPROM_PIN 2
// đèn báo
#define led_pin 13
// tốc độ nhanh chậm
#define delay_toc_do 20
//cài pin vào analog
byte pin_analog[servo_max] = { A0, A1, A2, A3, A4 };
// cài đặt pin ra cho servo
byte pin_servo[servo_max] = { 3, 5, 6, 9, 10 };
// có 5 servo
unsigned int A0_value, A1_value, A2_value, A3_value, A4_value;
//cam bien
byte cbObj = 8; //pin 8 in uno kit
byte get_goc(byte servo_i)
{ - Page | 37
//tính toán lấy giá trị góc của biến trở i
switch (servo_i) {
case 0:
A0_value = constrain(analogRead(A0), 200, 823);
return map(A0_value, 200, 823, 4, 175);
break;
case 1:
A1_value = constrain(analogRead(A1), 200, 823);
return map(A1_value, 200, 823, 4, 175);
break;
case 2:
A2_value = constrain(analogRead(A2), 200, 823);
return map(A2_value, 200, 823, 175, 4);
break;
case 3:
A3_value = constrain(analogRead(A3), 200, 823);
return map(A3_value, 200, 823, 175, 4);
break;
case 4:
A4_value = constrain(analogRead(A4), 200, 823);
return map(A4_value, 200, 823, 100, 175); // tay gắp, góc quay 100°->180°
break;
default:
break;
}
}
// kích thước eeprom (số byte) trên arduino - Page | 38
//trong ví dụ này em dùng arduino uno r3 có 1024 bytes EEPROM
const unsigned int SIZE_MEMORY_EEPROM = 1024;
///////////////////////////////////////////////////////////////////////////////////
/////////////////////////MAIN CODE- KHÔNG CẦN CHỈNH SỬA PHẦN
NÀY////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
#include <EEPROM.h>
#include <Servo.h>
Servo servo[servo_max];
//pin button
int step_move = 0;
/* mảng lưu góc cho 5 servo, 90 là giá trị góc khởi tạo cho toàn bộ phần tử*/
byte goc_servo[servo_max][step_max];
// mảng 2 chiều quản lý (servo_max) servo
byte goc_tam_thoi[servo_max] = { 90 };
// lưu góc tạm thời tại thời điểm cần tín
void setup()
{
pinMode(led_pin, OUTPUT);
//2 pin button
Serial.begin(115200);
pinMode(start_pause_pin, INPUT_PULLUP);
pinMode(ENABLE_EEPROM_PIN, INPUT_PULLUP);
pinMode(record_pin, INPUT_PULLUP);
pinMode(cbObj,INPUT);
for(int i = 0;i<10;i++){
Serial.println(“cbOBj =”+ String(digitalRead(cbObj))); - Page | 39
delay(1000);
}
//
Serial.println(“Batdau day Robot hoc lenh”);
// cài chế độ 5 pin analog
for (byte i = 0; i < servo_max; i++) {
pinMode(pin_analog[i], INPUT);
servo[i].attach(pin_servo[i]);
}
ADCSRA = ((ADCSRA & (B11111000)) | B00000100); // Cài tần số quét analog 1mhz
//trong hàm void setup sẽ cài đạt rồi chạy hàm learnand move này, mãi mãi
learn_and_move(); // chạy hàm
}
void move_servo(byte i, byte goc_i)
{
servo[i].write(goc_i);
}
void nhap_nhay(unsigned int time_delay, byte count)
{
for (byte i = 0; i < count; i++) {
digitalWrite(led_pin, HIGH);
delay(time_delay);
digitalWrite(led_pin, LOW);
delay(time_delay * 2);
}
}
void record(unsigned int step_x) - Page | 40
{
for(byte i = 0; i < servo_max; i++) {
goc_servo[i][step_x] = get_goc(i);
}
nhap_nhay(100, 2);
Serial.println(goc_servo[0][step_x]);
}
void move_all()
{
for (byte i = 0; i < servo_max; i++) {
move_servo(i, goc_tam_thoi[i]);
} // di chuyển
}
void control_servo()
{
byte hieu;
for (byte i = 0; i < servo_max; i++) {
hieu = abs(goc_tam_thoi[i] – get_goc(i));
if ((hieu >= 1) && (hieu < 170)) { // chống nhiễu
// không được di chuyển arm điều khiển quá nhanh
goc_tam_thoi[i] = get_goc(i);
}
} // lấy góc
move_all();
}
void nap_eeprom_sang_ram()
{ - Page | 41
//nạp eeprom sang RAM
step_move = EEPROM.read(SIZE_MEMORY_EEPROM – 1); // lấy lại step_move từ
rom
for (byte i = 0; i < servo_max; i++) {
for (int step_j = 0; step_j < step_max; step_j++) {
goc_servo[i][step_j] = EEPROM.read(step_j + i * step_max);
//nạp dữ liệu từ rom sang ram
}
}
}
void luu_vao_eeprom()
{
// bước 1: lưu dữ liệu vào rom
EEPROM.write(SIZE_MEMORY_EEPROM – 1, step_move); // ghi step_move vào rom
delay(15); // đợi 15ms để hoàn thành ghi 1 ô nhớ
nhap_nhay(500, 3);
digitalWrite(led_pin, HIGH); // giữ nguyên đèn
for (byte i = 0; i < servo_max; i++) {
//Serial.print(“luu”);
//Serial.println(i);
for (int step_j = 0; step_j < step_move; step_j++) {
EEPROM.write(step_j + i * step_max, goc_servo[i][step_j]);
//nạp dữ liệu từ ram vào rom
delay(15); // đợi 15ms để hoàn thành ghi 1 ô nhớ
}
}
nhap_nhay(500, 3); - Page | 42
digitalWrite(led_pin,LOW); // tắt đèn
}
void pause()
{
// chỉ được lưu dữ liệu vào eeprom khi đã có dữ liệu
// nhấn pause trước, sau đó mới nhấn nút ENABLE_EEPROM_PIN để bắt đầu ghi vào
eeprom
//
if (digitalRead(start_pause_pin) == 0) {
while (true) {
digitalWrite(led_pin, 1);
delay(300); // chống nhiễu
Serial.println(“PAUSE”);
if (digitalRead(ENABLE_EEPROM_PIN) == 0) {
// nhấn lưu eeprom
delay(300);
luu_vao_eeprom();
}
if (digitalRead(start_pause_pin) == 0) {
Serial.println(“START”);
digitalWrite(led_pin, 0);
delay(300); // chống nhiễu
goto out_pause;
}
} //while
} //if
out_pause:; - Page | 43
//thoát lặp
}
void auto_move()
{
Serial.println(step_move);
nhap_nhay(50, 3);
float hieu_f[servo_max];
unsigned int step = 0, step_next;
byte time;
byte thay_doi;
long tt;
while (true) {
//lấy hiệu góc hiện tại và góc sau
while(digitalRead(cbObj)==1 && step==0){
//khong co vat, thi chay trong wong while over
tt = millis();
Serial.println(“Obj=”+String(digitalRead(cbObj)));
delay(100);
//phat hien co vat, thi thoat while de dk robot
/*
if(digitalRead(cbObj==0)){
Serial.println(“Obj=”+String(digitalRead(cbObj)));
Serial.println(“Time Run:”+String(millis()-tt));
delay(100);
break;
}
*/ - Page | 44
}
if(step < step_move) {
step_next = step + 1; // không viết : step++
}
else {
/*step = step_mov :thì step tiếp theo của step cuối cùng là step đầu tiên*/
step_next = 0;
}
for (byte i = 0; i < servo_max; i++) {
hieu_f[i] = (float(goc_servo[i][step]) – float(goc_servo[i][step_next]));
}
Serial.println(step);
Serial.println(goc_servo[0][step]);
Serial.println(goc_servo[0][step_next]);
Serial.println(hieu_f[0]);
//int denta;
/*vận tốc sẽ tăng dần khi khởi đầu, đạt max , vận tốc giảm dần khi ở cuối quá trình,
*/
for (float loading = 1.0; loading <= 100.0; loading++) {
//denta=30+((sq(loading-150))/1000);
// loading là phần trăm %, đánh giá kết thúc 1 động tác là 100%
for (byte i = 0; i < servo_max; i++) {
goc_tam_thoi[i] = byte(float(goc_servo[i][step]) – (((hieu_f[i]) * loading) /
100.0));
}
Serial.print(loading);
Serial.print(“‚”); - Page | 45
Serial.print(hieu_f[0]);
Serial.print(“‚”);
Serial.println(goc_tam_thoi[0]);
//gia tốc từ chậm->nhanh->chậm
if ((loading >= 0.0) && (loading < 20.0)) {
time = delay_toc_do * 2 + 5;
}
else if (loading < 30.0) {
time = delay_toc_do / 2 + 5;
}
else if (loading < 90.0) {
time = delay_toc_do + 5;
}
else {
time = delay_toc_do * 2 + 5;
}
// delay(delay_toc_do);
while ((millis() % delay_toc_do) != 0) { // làm trễ
/* cứ sau denta_ms, vòng lặp mới được thoát, */
pause();
} //while
/*
Đoạn code < delay(time) >sẽ tương đương với < while((millis()%time)!=0){;} >
– Lý do em không chọn delay :về bản chất Delay sẽ vô hiệu hóa hoàn toàn chương tình
arduino ,
arduino sẽ không thể làm gì cho đến khi hết Delay. - Page | 46
Trongkhi đó chúng ta muốn ấn nút PAUSE(tạm dừng robot) ngay lập tức Robot sẽ không
dừng ngay vì bị Delay vô hiệu hóa.
Đấy là lí do em đã cho hàm pause() lồng vào bên trong khối while() như mọi người đã thấy.
*/
move_all();
} // for_loading
if (step < step_move) {
step++; // tăng cho lần kế tiếp
}
else {
/* step = step_move*/
step = 0; // lại từ đầu
}
//kết thúc 1 động tác
delay(50);
} //while
}
void learn_and_move()
{
step_move = 0;
while (digitalRead(start_pause_pin) != 0) {
//b1: điều khiển servo bằng biến trở
while (digitalRead(record_pin) != 0) {
control_servo();
if ((digitalRead(start_pause_pin) == 0) && (step_move == 0)) {
// nếu chưa có cài đặt náo mà vô thẳng phần chạy thì hiểu : lấy cài đặt từ eeprom
nap_eeprom_sang_ram(); - Page | 47
}
if((digitalRead(start_pause_pin) == 0) && (step_move != 0)) {
goto buoc_3;
}
//delay(1);// bỏ delay luôn
}
// nút record đươcj nhấn, thoát lặp
// b2: lưu vào mảng
record(step_move);
if (step_move < step_max) {
step_move++; // tăng step cho bước sau
}
}
// nút start_pause được nhấn, thoát lặp
buoc_3:
step_move–; //không có bước sau, giảm step_move xuống 1 đơn vị
//b4:auto move
auto_move();
}
void loop()
{
} // loop - Page | 48
CHƯƠNG5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
I. Kết luận
1. Những nhiệm vụ đã thực hiện:
– Tìm hiểu được quá trình hình thành và phát triển của Robot.
– Tìm hiểu về arduino.
– Nghiên cứu, tìm hiểu phần cứng của đề tài.
– Sưu tầm, tìm kiếm tài liệu tham khảo phục vụ cho việc nghiên cứu.
– Nghiên cứu, học hỏi các phương pháp lập trình arduino.
2. Những thuận lợi và khó khăn khi thực hiện đề tài:
Thuận lợi:
– Được thầy cô và các bạn hỗ trợ hết mình.
– Được tiếp xúc với môi trường năng động ở xưởng thực hành làm tăng niềm
đam mê tìm tòi học hỏi.
Khó khăn:
– Vì vừa nghiên cứu vừa đi thực tập tốt nghiệp và phải đảm bảo việc học trên
trường nên sự phân bố thời gian chưa được nhiều
– Tài liệu chủ yếu về đề tài chủ yếu là tiếng anh nên việc dịch có những chổ
chưa chuẩn xác.
Ưu điểm đề tài :
– Đáp ứng được yêu cầu của đề tài.
– Tiết kiệm được công sức con người.
– Có thể gắp vật ở nhiều vị trí khác nhau
Nhược điểm đề tài :
– Nhiễu do kết nối và nhiễu do linh kiện giá rẻ - Page | 49
II.Hướng phát triển đề tài
– Đề tài cơ bản đáp ứng được những yêu cầu đặt ra tuy nhiên để sản phẩm hoàn thiện được
hơn nữa thì đòi hỏi cần được cải tiến và nghiên cứu thêm.
– Ngoài những gì mà em tìm hiểu được, có thể phát triển hơn nữa đề tài điều khiển cánh
tay robot gắp sản phẩm trên băng chuyền thành nhiều phiên bản hơn nữa. ví như cánh tay
robot gắp và phân loại sản phẩm theo kích thước, màu hoặc nhiệt độ.
– Ngoài ra đề tài này có thể phát triển thành cánh tay robot dùng để gắp linh kiện, hay hàn,
cắt hay khoan, hoặc là cánh tay robot tự động vẽ theo mẫu có sẵn…
– Ngoài những hướng phát triển mà em nghĩ mình có khả năng có thể làm được trong
tương lai với lượng kiến thức đã nghiên cứu, và cần phải tìm hiểu hơn nữa. Vì Robot phát
triển đa dạng nên mong thầy có thể bổ sung và hướng dẫn em nhiều hơn nữa. - Page | 50
TÀILIỆU THAM KHẢO
1. Kỹ thuật điện tử. (1999)
Đỗ Xuân Thụ. – NXB giáo dục.
2. Giáo trình cảm biến. (2000)
Phan Quốc Phô, Nguyễn Đức Chiến. – NXB Khoa học và kĩ thuật.
3. Vi điều khiển câu trúc lập trình và ứng dụng. (2008)
Kiều Xuân Thực, Vũ Thị Hương, Vũ Trung Kiên – NXB Giáo Dục.
4. Website http://alldatasheet.com/
5. Website http://arduino.vn/
6. Website http://codientu.org/
7. Website http://webdien.com/
8. Website http://www.tailieu.vn/
9. Website http://hocarm.org/
10. Webcoban.vn