- Vật liệu thiết yếu:
- Khái niệm về Robot tránh chướng ngại vật:
- Sơ đồ mạch và giải thích:
- Lập trình cho bạn Vi điều khiển PIC:
- Robot tránh chướng ngại vật đang hoạt động:
Robot tránh chướng ngại vật là một loại robot nổi tiếng khác, hỗ trợ các dự án nhúng. Đối với những người mới sử dụng robot tránh chướng ngại vật, nó chỉ là một robot có bánh xe bình thường có thể điều hướng theo cách của mình mà không va vào bất kỳ chướng ngại vật nào. Có nhiều cách để chế tạo một robot tránh chướng ngại vật trong dự án, chúng tôi sẽ sử dụng một Cảm biến siêu âm (phía trước) và hai cảm biến IR (Trái / Phải) để robot của chúng ta có mắt theo cả ba hướng. Bằng cách này, bạn có thể làm cho nó thông minh hơn và nhanh hơn nhiều bằng cách phát hiện các đối tượng ở cả ba phía và điều động phù hợp. Ở đây chúng tôi đang kiện PIC Microcontroller PIC16F877A vì robot tránh chướng ngại vật này.
Hoạt động của robot tránh chướng ngại vật có thể được quan sát từ một sản phẩm thời gian thực được gọi là robot dọn dẹp nhà cửa. Mặc dù công nghệ và cảm biến được sử dụng trong những thứ này phức tạp hơn nhiều, nhưng khái niệm này vẫn không đổi. Hãy để chúng tôi xem chúng tôi có thể đạt được bao nhiêu khi sử dụng các cảm biến bình thường và bộ vi điều khiển PIC.
Đồng thời kiểm tra các Robot tránh chướng ngại vật khác của chúng tôi:
- Robot tránh chướng ngại vật dựa trên Raspberry Pi
- Tự làm Robot hút bụi thông minh bằng Arduino
Vật liệu thiết yếu:
- PIC16F877A
- Cảm biến IR (2Nos)
- Cảm biến siêu âm (1Nos)
- Động cơ bánh răng DC (2Nos)
- Trình điều khiển động cơ L293D
- Chaises (Bạn cũng có thể tự xây dựng bằng bìa cứng)
- Ngân hàng điện (Mọi nguồn điện khả dụng)
Khái niệm về Robot tránh chướng ngại vật:
Khái niệm về Robot tránh chướng ngại vật rất đơn giản. Chúng tôi sử dụng cảm biến để phát hiện sự hiện diện của các đối tượng xung quanh rô bốt và sử dụng dữ liệu này để rô bốt không va chạm vào các đối tượng đó. Để phát hiện một Đối tượng, chúng ta có thể sử dụng bất kỳ cảm biến sử dụng nào như cảm biến IR và cảm biến siêu âm.
Trong robot của chúng tôi, chúng tôi đã sử dụng cảm biến Hoa Kỳ làm cảm biến phía trước và hai cảm biến IR cho bên trái và bên phải tương ứng. Robot sẽ di chuyển về phía trước khi không có đối tượng nào trước nó. Vì vậy, robot sẽ di chuyển về phía trước cho đến khi cảm biến Ultrasonic (Mỹ) phát hiện bất kỳ vật thể nào.
Khi một đối tượng được phát hiện bởi cảm biến của Hoa Kỳ, đó là thời điểm để thay đổi hướng của robot. Chúng tôi có thể rẽ trái hoặc phải, để quyết định hướng rẽ chúng tôi sử dụng sự trợ giúp của cảm biến IR để kiểm tra xem có bất kỳ vật thể nào hiện diện gần bên trái hoặc bên phải của robot hay không.
Nếu phát hiện có vật thể ở phía trước và bên phải của Robot, thì Robot sẽ quay lại và rẽ trái. Chúng tôi làm cho rô bốt chạy lùi trong một khoảng cách nhất định để không va chạm vào đối tượng khi rẽ.
Nếu có vật thể được phát hiện ở phía trước và bên trái của Robot, thì Robot sẽ quay lại và rẽ phải.
Nếu robot đến một góc của căn phòng, nó sẽ cảm nhận được vật thể hiện diện ở cả bốn. Trong trường hợp này, chúng tôi phải điều khiển robot lùi lại cho đến khi bất kỳ bên nào trở nên tự do.
Một trường hợp khác có thể xảy ra là sẽ có một đối tượng ở phía trước nhưng có thể không có bất kỳ đối tượng nào ở bên trái và bên phải, trong trường hợp này chúng ta phải quay ngẫu nhiên theo bất kỳ hướng nào.
Hy vọng điều này sẽ cung cấp một ý tưởng sơ bộ về cách hoạt động của một công cụ Tránh chướng ngại vật, bây giờ chúng ta hãy tiếp tục với Sơ đồ mạch để xây dựng bot này và tận hưởng nó trong hoạt động.
Sơ đồ mạch và giải thích:
Sơ đồ mạch hoàn chỉnh của robot tránh chướng ngại vật dựa trên PIC này được hiển thị trong hình trên. Như bạn có thể thấy, chúng tôi đã sử dụng hai cảm biến IR để phát hiện các đối tượng ở bên trái và bên phải của rô bốt và một cảm biến siêu âm để đo khoảng cách của đối tượng ở phía trước rô bốt. Chúng tôi cũng đã sử dụng mô-đun Trình điều khiển động cơ L293D để Điều khiển hai động cơ có mặt trong dự án này. Đây chỉ là động cơ bánh răng DC thông thường cho bánh xe và do đó có thể được tạo ra rất dễ dàng. Bảng sau sẽ hỗ trợ bạn trong việc kết nối.
S. không |
Được kết nối từ |
Kết nối với |
1 |
Cảm biến hồng ngoại Chân cắm trái |
RD2 (chân 21) |
2 |
Cảm biến hồng ngoại Chân ra phải |
RD3 (chân 22) |
4 |
Động cơ 1 kênh A pin |
RC4 (chân 23) |
5 |
Động cơ 1 kênh B chân |
RC5 (chân 25) |
6 |
Động cơ 2 kênh A pin |
RC6 (chân 26) |
7 |
Chân 2 kênh B của động cơ |
RC7 (chân 27) |
số 8 |
Mã kích hoạt Hoa Kỳ |
RB1 (chân 34) |
9 |
Pin Echo Hoa Kỳ |
RB2 (chân 35) |
Mô-đun Trình điều khiển động cơ như L293D là bắt buộc vì lượng dòng điện cần thiết để chạy động cơ bánh răng DC không thể được lấy từ chân I / O của bộ vi điều khiển PIC. Các cảm biến và mô-đun được cấp nguồn bởi nguồn + 5V đang được điều chỉnh bởi 7805. Mô-đun điều khiển động cơ có thể được cấp nguồn ngay cả khi sử dụng + 12V, nhưng đối với dự án này, tôi chỉ sử dụng nguồn + 5V có sẵn.
Trong trường hợp của tôi, Robot hoàn chỉnh được cấp nguồn bởi Power bank. Bạn cũng có thể sử dụng bất kỳ pin dự phòng thông thường nào và vượt qua phần điều chỉnh hoặc sử dụng mạch trên và sử dụng bất kỳ pin 9V hoặc 12V nào cho Robot như trong sơ đồ mạch ở trên. Sau khi các kết nối của bạn được thực hiện, nó sẽ trông giống như sau
Lập trình cho bạn Vi điều khiển PIC:
Lập trình cho bạn PIC để làm việc cho một Người tránh chướng ngại vật thực sự dễ dàng. Chúng ta chỉ cần đọc giá trị của ba cảm biến này và điều khiển Động cơ cho phù hợp. Trong dự án này, chúng tôi đang sử dụng cảm biến siêu âm. Chúng ta đã học cách giao tiếp sóng siêu âm với vi điều khiển PIC, nếu bạn là người mới ở đây vui lòng quay lại hướng dẫn đó để hiểu cách cảm biến Hoa Kỳ hoạt động với PIC, vì tôi sẽ bỏ qua chi tiết về nó ở đây để tránh lặp lại.
Các chương trình hoàn chỉnh hoặc Robot này được đưa ra ở cuối trang này, tôi đã giải thích thêm các khối quan trọng của chương trình dưới đây.
Như chúng ta đã biết tất cả các chương trình đều bắt đầu bằng khai báo chân Input và Output. Ở đây, bốn chân của mô-đun Trình điều khiển động cơ và chân Kích hoạt là chân Đầu ra, trong khi chân Echo và hai chân ra IR sẽ là đầu vào. Chúng ta nên khởi tạo mô-đun Hẹn giờ 1 để sử dụng nó với cảm biến Siêu âm.
TRISD = 0x00; // PORTD được khai báo là đầu ra cho giao diện LCD TRISB1 = 0; // Chân kích hoạt của cảm biến US được gửi dưới dạng chân đầu ra TRISB2 = 1; // Chân tiếng vọng của cảm biến US được đặt làm chân đầu vào TRISB3 = 0; // RB3 là chân đầu ra cho LED TRISD2 = 1; TRISD3 = 1; // Cả hai chân cảm biến IR được khai báo là đầu vào TRISC4 = 0; TRISC5 = 0; // Chân 1 động cơ khai báo là ngõ ra TRISC6 = 0; TRISC7 = 0; // Chân 2 động cơ khai báo là ngõ ra T1CON = 0x20;
Trong chương trình này, chúng tôi sẽ phải kiểm tra khoảng cách giữa cảm biến và đối tượng khá thường xuyên, vì vậy chúng tôi đã tạo một hàm có tên là Calcul_distance (), bên trong chúng tôi sẽ đo khoảng cách bằng phương pháp được thảo luận trong hướng dẫn giao diện cảm biến của Hoa Kỳ. Các mã được hiển thị dưới đây
void tính_distance () // hàm tính khoảng cách US {TMR1H = 0; TMR1L = 0; // xóa các bit bộ định thời Trigger = 1; __delay_us (10); Kích hoạt = 0; while (Tiếng vọng == 0); TMR1ON = 1; while (Tiếng vọng == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); khoảng cách = (0,0272 * time_taken) / 2; }
Bước tiếp theo sẽ là so sánh các giá trị của cảm biến siêu âm và cảm biến hồng ngoại và di chuyển robot cho phù hợp. Ở đây Trong chương trình này, tôi đã sử dụng giá trị cm làm khoảng cách tới hạn mà dưới đó Robot sẽ bắt đầu thực hiện thay đổi hướng. Bạn có thể sử dụng các giá trị ưa thích của mình. Nếu không có đối tượng, robot chỉ di chuyển về phía trước
if (khoảng cách> 5) {RC4 = 0; RC5 = 1; // Động cơ 1 tiến RC6 = 1; RC7 = 0; // Động cơ 2 tiến}
Nếu một đối tượng được phát hiện, thì khoảng cách sẽ đi dưới cm. Trong trường hợp này, chúng tôi xem xét các giá trị của cảm biến siêu âm trái và phải. Dựa trên giá trị này, chúng tôi quyết định rẽ trái hoặc rẽ phải. Độ trễ ms được sử dụng để thay đổi hướng có thể nhìn thấy được.
if (RD2 == 0 && RD3 == 1 && distance <= 5) // Cảm biến bên trái bị chặn {back_off (); RC4 = 1; RC5 = 1; // Động cơ 1 dừng RC6 = 1; RC7 = 0; // Động cơ 2 tiến __delay_ms (500); } count_distance (); if (RD2 == 1 && RD3 == 0 && distance <= 5) // Cảm biến bên phải bị chặn {back_off (); RC4 = 0; RC5 = 1; // Động cơ 1 tiến RC6 = 1; RC7 = 1; // Động cơ 2 dừng __delay_ms (500); }
Đôi khi cảm biến siêu âm sẽ phát hiện một vật thể, nhưng sẽ không có vật thể nào được phát hiện bởi cảm biến IR. Trong trường hợp này, rô bốt rẽ trái theo mặc định. Bạn cũng có thể làm cho nó rẽ phải hoặc theo một hướng ngẫu nhiên tùy theo sở thích của bạn. Nếu có các đối tượng ở cả hai bên thì chúng ta làm cho nó lùi lại. Mã để làm điều tương tự được hiển thị bên dưới.
tính_dạng (); if (RD2 == 0 && RD3 == 0 && distance <= 5) // Cả hai cảm biến đều mở {back_off (); RC4 = 0; RC5 = 1; // Động cơ 1 tiến RC6 = 1; RC7 = 1; // Động cơ 2 dừng __delay_ms (500); } count_distance (); if (RD2 == 1 && RD3 == 1 && distance <= 5) // Cả hai cảm biến đều bị chặn {back_off (); RC4 = 1; RC5 = 0; // Động cơ 1 ngược RC6 = 1; RC7 = 1; // Động cơ 2 dừng __delay_ms (1000); }
Robot tránh chướng ngại vật đang hoạt động:
Công việc của dự án là rất thú vị và vui vẻ để xem. Khi bạn đã hoàn tất với Mạch và Mã của mình, chỉ cần bật nguồn Bot của bạn và để nó trên mặt đất. Nó sẽ có thể xác định chướng ngại vật và tránh chúng một cách thông minh. Nhưng, đây là phần thú vị. Bạn có thể sửa đổi mã và làm cho nó thực hiện nhiều thứ hơn như làm cho nó tránh khỏi cầu thang, làm cho nó thông minh hơn bằng cách lưu trữ các lượt quý giá và những gì không?
Robot này sẽ giúp bạn hiểu cơ bản về lập trình và tìm hiểu cách một phần cứng thực tế sẽ phản hồi mã của bạn. Luôn luôn thú vị khi lập trình robot này và xem nó hoạt động như thế nào đối với mã trong thế giới thực.
Ở đây chúng tôi đã sử dụng cùng một bảng điều khiển PIC mà chúng tôi đã làm cho đèn LED nhấp nháy bằng vi điều khiển PIC và sử dụng bảng này trong các dự án khác của Chuỗi hướng dẫn PIC.
Robot của bạn sẽ trông giống như một trong những hình ảnh trên. Toàn bộ hoạt động của dự án này được hiển thị trong video dưới đây.
Hy vọng bạn hiểu dự án và thích xây dựng một. Nếu bạn có bất kỳ nghi ngờ hoặc gặp khó khăn, bạn có thể sử dụng phần bình luận để đăng câu hỏi của bạn và tôi sẽ cố gắng hết sức để trả lời chúng.