báo cáo thiết kế robot dò đường
Trang 1LỜI NÓI ĐẦU
Trong thời gian gần đây, những đề tài về robot xuất hiện thường xuyên trên Tivi Điều đó cho thấy rằng con người ngày càng quan tâm nhiều hơn đến robot, nhưng lại có rất ít cơ hội để họ có thể tự mình chế tạo ra những con robot Bài báo cáo này sẽ sử dụng robot dò đường với việc sử dụng cả ba yếu tố để tạo ra một robot
“cảm biến”, “ xử lý vi tính “, “ kiểm soát điều khiển chuyển động “ Robot mà cấu tạo càng đơn giản thì càng dễ hiểu được cái nguyên tắc hoạt động của trương trình cũng như hiểu được bố trí của mạch điện, chính vì vậy cũng sẽ nắm được cái nguyên tắc chung của thiết bị mà đang sử dụng trong mạch đó Mục đích của báo cáo này chúng em sẽ tìm hiểu sâu hơn về cơ chế hoạt động của robot,tạo ra một con robot, mạch điện cũng như viết và phát hiện lỗi của chương trình điều khiển để có thể điều khiển robot
Chúng em gửi lời cảm ơn chân thành tới Thầy đã góp ý, giải đáp thắc mắc, hướng dẫn chi tiết, tận tình cho nhóm, qua đó đã giúp cho chúng em hiểu thêm rất nhiều điều và hoàn thành đề tài này
Hà Nội, 06/2013
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 1
MỤC LỤC 2
CHƯƠNG 1 GIỚI THIỆU ROBOT DÒ ĐƯỜNG 3
1.1 Giới thiệu 3
1.2 Các thành phần chính của robot 3
CHƯƠNG 2 CẤU TRÚC ROBOT VÀ LẮP RÁP 5
2.1 Sơ đồ nguyên lí, mạch in và danh sách linh kiện 5
2.2 Thiết kế khung xe và động cơ 7
2.3 Lắp ráp 9
CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH VỚI PIC16F84A 10
3.1 Thiết lập các cổng với PIC16F84A 10
3.2 Lập trình với ngôn ngữ C 11
3.2.1 Ngôn ngữ C 11
3.2.2 Led nhấp nháy và nút bấm 12
3.3 Phát hiện đường đi bằng cảm biến 17
3.4 Điều khiển động cơ 19
3.4.2 Điều khiển tốc độ động cơ 22
3.5 Dò đường 22
3.6 CODE 27
KẾT LUẬN 31
Trang 3CHƯƠNG 1 GIỚI THIỆU ROBOT DÒ ĐƯỜNG
1.1 Giới thiệu
Robot tự hành hay robot di động (mobile robots, thường được gọi tắt là mobots) được định nghĩa là một loại xe robot có khả năng tự dịch chuyển, tự vận động (có thể lập trình lại được) dưới sự điền khiển tự động để thực hiện thành công công việc được giao
Tiềm năng ứng dụng của robot tự hành hết sức rộng lớn: robot vận chuyển vật liệu, hàng hóa trong các tòa nhà, nhà máy, cửa hàng, sân bay và thư viện; robot phục
vụ quét dọn đường phố; robot kiểm tra trong môi trường nguy hiểm; robot canh gác,
do thám; robot khám phá không gian, di chuyển trên hành tinh; robot xe lăn phục vụ người khuyết tật; robot phục vụ sinh hoạt gia đình v.v
Cùng với sự phát triển mạnh mẽ của các hệ thống tự động hóa, robot tự hành ngày một được hoàn thiện và càng cho thấy lợi ích của nó trong công nghiệp và sinh hoạt Một vấn đề được quan tâm khi nghiên cứu về robot tự hành là làm thế nào để robot biết được vị trí đang đứng và có thể di chuyển tới 1 vị trí xác định, đồng thời có thể tự động tránh được các chướng ngại vật trên đường đi Vì vậy, việc chế tạo thành công đề tài này sẽ mở ra 1 hướng tiếp cận mới và góp phần thúc đẩy việc ứng dụng của robot ngày càng nhiều vào trong đời sống hàng ngày và trong nghiên cứu chế tạo
Mặc dù nhu cầu ứng dụng cao, nhưng những hạn chế chưa giải quyết được của robot tự hành, như chi phí chế tạo cao, đã không cho phép chúng được sử dụng rộng rãi Bài toán tìm đường của robot tự hành cũng không phải là loại bài toán đơn giản như nhiều người nghĩ lúc ban đầu
Trong đề tài này, bài toán tìm đường sẽ được giải quyết ở mức độ không quá phức tạp: dò đường theo đường vạch sẵn
1.2 Các thành phần chính của robot
Trang 43) Động cơ 2 động cơ DC công suất nhỏ
Hình 1.1 Robot dò đường
Trang 5CHƯƠNG 2 CẤU TRÚC ROBOT VÀ LẮP RÁP
2.1 Sơ đồ nguyên lí, mạch in và danh sách linh kiện
Trang 6Hình 2.2 Xắp xếp vị trí linh kiện
Đi dây và đổ đồng
Hình 2.3 Mạch in
Trang 8Hình 2 4 Khung xe
Hình 2.5 Khung xe và động cơ
Trang 9Hình 2.6 Vị trí bắt ốc
2.3 Lắp ráp
Tiến hành hàn linh kiện vào mạch ta đƣợc:
Hình 2.7 Mạch robot
Trang 10CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH VỚI PIC16F84A
Dùng phầm mềm MPLAB X IDE 1.6 lập trình với ngôn ngữ C, biên dịch bằng HI-TECH PICC (v9.83)
Tìm hiểu và thực hành với PIC16F84A, LM324, mở transistor…
3.1 Thiết lập các cổng với PIC16F84A
R sensor M sensor L sensor S-I
R sensor M sensor L sensor Dịch
Trang 11Bảng 4.3 Điều khiển động cơ theo cảm biến đầu vào
Right sensor B2
Middle sensor B1
Lefeft sensor B0
Bảng 4.4 Điều khiển động cơ theo mức logic
L motor Right motor Control logic
assembly
Trang 12Sự phát triển của một chương trình trong ngôn ngữ C được hoàn thiện trong những bước sau Trước tiên, ngôn ngữ C được tạo ra bằng việc sử dụng một bản soạn thảo với máy tính cá nhân Sau đó ngôn ngữ C được biến đổi thành mã khiến máy tính hiểu được
Hình 3.1 Cấu trúc chương trình ngôn ngữ C
3.2.2 Led nhấp nháy và nút bấm
a Đèn LED nhấp nháy:
(a) khi điện thế cao (5v) đầu ra từ PORT , LED sẽ bật lên (b) khi điện thế thấp (0v) đầu ra từ PORT , LED sẽ tắt
Để đầu ra có điện thế cao (5v) , thiết lập giá trị “1” cho PORT :
Để đầu ra có điện thế thấp (0V) , thiết lập “1” cho PORT
Mô tả chương trình đèn LED nhấp nháy
(1) Tất cả các LED nhấp nháy 5s 1 lần
Trang 13Bên dưới là chương trình để điều khiển 3 đèn LED kết nối tới bit 3, bit 4,
và bit 5 của PORT B Khi chương trình được thực hiện , tất cả các đèn LED đều bật và tắt mỗi 5s
LED (PORT B) tất cả LED bật
LED (PORT B) tất cả LED tắt
(Tất cả LED đều tắt ) PORTB =0x00;
(Tất cả LED đều tắt ) PORTB =0x38;
Trang 14{
TRISA = 0xFC; /* A0,1:output, 2,3,4:input */
TRISB = 0xC7; /* B0,1,2:input, B3,4,5:LED output, other bits input */
while(1){ /* infinite loop */
PORTB=0x00; /* LEDs off */
wait0(50); /* wait time = 0.5 sec */
PORTB=0x38; /* LEDs on */
wait0(50); /* wait time = 0.5 sec */
}
}
TRISA = 0xFC; /* A0,1:output, 2,3,4:input */
TRISB = 0xC7; /* B0,1,2:input, B3,4,5:LED output, other bits input */
Hai dòng code bên trên thiết lập hoạt động làm việc của input/output của PIC’s PORTA và PORTB
Chi tiết hoạt động được thể hiện ở (Hình 3.2) bên dưới
Hình 3.2 Các cổng I/O
Trang 15Nếu input được định nghĩa như 1 và output được định nghĩa như 0, cấu hình input
và output của PORTA và PORTB đều được thể hiện ở Bảng 4.1a và Bảng 4.1b Cho PORTA , những pin còn lại đều được đặt cho input PORTB tất cả đều được đặt cho input Bên dưới là giá trị cấu hình của mỗi PORT và giá trị tương ứng trong
Hình 3.3 (a) và (b) thể hiện mạch phần cứng và logic để xử lý nút bấm
Trong hình 3.3(a) , khi mà công tắc không được bật, chân IC tương ứng sẽ ở mức điện thế cao (5v) Do đó , giá trị khi mà viết vào trương trình sẽ là “1”
Trong hình 3.4(b) , khi mà công tắc được bấm, chân IC tương ứng sẽ ở mức điện thế thấp (0v) Do đó giá trị được viết vào chương trình sẽ là “0”
Ví dụ:
Trang 16while(RA4!=0){} // next code
Hình 3.3a Bút bấm
Hình 3.3b Thiết kế nút Start và Reset
Trang 173.3 Phát hiện đường đi bằng cảm biến
Chúng em dung cảm biến hồng ngoại, với mạch dò đường cần 3 bộ thu phát, mỗi bộ gồm 1 led phát hồng ngoại và 1 led thu hồng ngoại được đặt sát nhau Chúng
em kết hợp dùng LM324 để mức logic vào PIC16f84a được chính xác và ổn định hơn
LM324 gồm 4 bộ so sánh, mỗi bộ được kết nối theo Hình 3.4 Cổng 2 được
phân áp cố định Khi Led thu hồng ngoại không thu được sóng hồng ngoại của led phát thì áp trên cổng 3 sẽ nhỏ hơn áp trên cổng 2 đầu ra mức 0, led báo tắt Ngược lại, nếu led thu nhận được sóng hồng ngoại thì áp trên cổng 3 lớn hơn áp trên cổng 2 đầu ra mức 1,led báo sáng Các bộ so sánh khác cũng tương tự như vậy
Ta có thể chỉnh độ nhạy của cảm biến bằng cách thay đổi giá trị của biến trở vi chỉnh
Hình 3.4 Khối cảm biến
Trang 18Hình 3.5 Led báo
Đầu ra của LM324 nối với đầu vào của PIC16F84A
Trang 193.4 Điều khiển động cơ
Dùng 2 động cơ 1 chiều công suất nhỏ, đóng mở 2 động cơ bằng transistor TIP
122
3.4.1 Nguyên lí
Trong Hình 3.6 (a), khi điện thế cao (5v) là cổng ra từ PORT, động cơ xoay
Trong Hình 3.6 (b), khi điện thế thấp (0v) là cổng ra từ PORT, động cơ dừng
Khi ở điện thế cao (5v) là cổng ra từ PORT, motor quay, tương đương mức
“1”
Khi ở điên thế thấp (0v) là cổng ra từ PORT, motor dừng quay, tương đương mức “0”
Trang 20Hình 3.6 Nguyên lí
Sơ đồ thiết kế thực tế:
Hình 3.7 Khối động cơ
Ví dụ code điều khiển động cơ đơn giản:
Trang 21if(RB0==1 && RB1==0 && RB2==0){
RB6=1;// motor trai quay
Trang 22RB7=1;//motor phai quay
}
}
}
3.4.2 Điều khiển tốc độ động cơ
Hình 3.8, khi motor được bật lên và tắt đi lặp lại nhiều lần trong chu kì thời gian
ngắn sẽ được thể hiện như bên phải, mức trung bình dòng điện chảy qua nó sẽ được thể hiện ở bên trái Bởi vậy, sự thay đổi tỷ lệ thời gian bật và tắt theo chu kì, nó có thể điều khiển tốc độ của motor
Hình 3.8 Các trạng thái tốc độ
Với 2 động cơ trái và phải, việc điều khiển tốc độ từng động cơ sẽ giúp xe rẽ trái hoặc rẽ phải Động cơ trái tắt, động cơ phải bật sẽ điều khiển xe rẽ trái và ngược lại Nếu thời gian động cơ trái bật lớn hơn thời gian động cơ phải tắt sẽ điều khiển động cơ rẽ phải với góc cua rộng hơn…
3.5 Dò đường
Chuyển đổi giữa các trạng thái
Như trong Hình 3.9, trạng thái của robot sẽ thay đổi bởi cảm biến, phải cân
nhắc sự khác biệt giữa các trạng thái của robot để thiết kế chương trình dò đường
Trang 23(màu trắng, màu trắng, màu trắng) Trạng thái của robot sẽ thay đổi theo hướng của đường đi
Hình 3.9 Chuyển đổi giữa các trạng thái
Nếu robot không bị nghiêng khỏi đường đi
Hình 3.10 Đi thẳng Như đã được thể hiện trong Hình 3.10, nếu robot không chệch
khỏi đường đi , robot sẽ đi thẳng
Nếu hơi nghiêng khỏi đường đi
Trang 24Hình 3.11 Rẽ trái vòng cua nhỏ
Mô tả trường hợp này như mô Hình 3.11 và Hình 3.12 được thể
hiện bên dưới
Mỗi pin RB0,RB1 và RB2 của PORTB được kết nối với 1 cảm biến tương ứng là trái , giữa và phải Nếu sàn là màu trắng, là mức “1” Nếu sàn là màu đen, là mức “0” Khi cảm biến trái , phải và giữa là ( đen, đen ,trắng ) =( 0,0,1), robot hơi nghiêng sang bên phải Như vậy để trở lại đường đi, robot phải rẽ trái c theo vòng cung bán kính lớn bằng việc làm giảm động cơ bên trái
Hình 3.12 Chu trình rẽ trái
Nếu robot từ từ rẽ phải
Trang 25Hình 3.13 Rẽ trái vòng cua lớn
Mô tả của trường hợp này như Hình 3.13 và Hình 3.14 đều được
thể hiện bên dưới
Mỗi RB0, RB1 và RB2 là PORT kết nối với cảm biến trái, phải ,
và giữa Nếu sàn là màu trắng, là mức “1” Nếu sàn là màu đen, là mức
“0” Khi mỗi cảm biến trái, phải và giữa phát hiện ( đen, trắng ,trắng ) =( 0,1,1), robot nghiêng nhiều sang bên phải Sau đó để trở về đường đi , robot phải rẽ trái dọc theo vòng cung bán kính lớn bằng việc làm giảm động cơ bên trái
Hình 3.14 Chu trình rẽ trái vòng cua lớn
Trang 26 Nếu robot đi chệch hẳn khỏi đường đi khi nghiêng quá nhiều sang
bên phải
Hình 3.15 Tìm đường
Mô tả của trường hợp này như Hình 3.15 và Hình 3.16 đều được
thể hiện bên dưới
Mỗi RB0, RB1 và RB2 là PORT kết nối với cảm biến trái, phải,
và giữa Nếu sàn là màu trắng, là mức “1” Nếu sàn là màu đen, là mức
“0” Khi mỗi cảm biến trái , phải và giữa phát hiện ( trắng, trắng ,trắng )
=( 1,1,1), robot rẽ trái lần cuối, robot phải rẽ trái dọc theo vòng cung bán kính lớn bằng việc làm giảm động cơ bên trái
Hình 3.16 Chu trình tìm đường ( trường hợp rẽ trái)
Trang 30Hình 3.17 Sơ đồ thuật toán
Trang 31KẾT LUẬN
Sau một thời gian tìm tòi và tiến hành công việc thiết kế nhóm chúng em đã tạo ra được sản phẩm là robot dò đường như mục tiêu đề ra Mặc dù với nhiều tính năng chưa được tối ưu như: khả năng vận hành chưa được linh hoạt, chưa xử lý được các đoạn đường phức tạp, giới hạn về tốc độ di chuyển…nhưng nó cũng đáp ứng được đúng chức năng của nó (dò đường và di chuyển ) ở mức độ đơn giản Trong quá trình làm Project 2, chúng em được sự hướng dẫn rất tận tình của T.S Lê Dũng Thầy đã hướng dẫn cho chúng em cách tiến hành làm đề tài và hướng
đi đúng cho đề tài
Đồ án 2 đã cho chúng em cơ hội trao đổi và học hỏi thêm cách làm việc theo nhóm hiệu quả, biết thêm về lập trình, vi điều khiển…nhưng bên cạnh đó chúng em cũng gặp phải không ít khó khăn và hạn chế trong công việc: giới hạn về khả năng lập trình, kiến thức còn hạn hẹp về PIC…
Cuối cùng chúng em chân thành cảm ơn Viện Điện tử- viễn thông đã cho chúng em cơ hội học và tiến hành làm Đồ án 2, cùng sự hướng dẫn hết sức nhiệt tình và tận tâm của T.S Lê Dũng - người đã theo chúng em trong suốt môn học và
đã giúp chúng em hoàn thành đề tài của mình