- Vật liệu thiết yếu
- Khái niệm về người theo dòng
- Giải thích mạch
- Hoạt động của Robot theo dòng sử dụng MSP430
- Sơ đồ mạch
- Giải thích lập trình
Robot theo đường dây là một trong những dự án chế tạo robot phổ biến trong giới sinh viên và người mới bắt đầu vì tính đơn giản của nó. Nó nằm sau một dòng, màu đen hoặc trắng, tùy thuộc vào cách bạn lập trình bộ vi điều khiển của mình. Ở đây chúng tôi tạo một rô bốt theo dõi dòng bằng cách sử dụng bệ khởi động MSP430 từ Texas Instruments, theo sau dòng màu đen. Nếu bạn chưa quen với bảng khởi chạy MSP430, vui lòng đọc Hướng dẫn bắt đầu với MSP430 của chúng tôi.
Vật liệu thiết yếu
- MSP430G2 LaunchPad từ Texas Instruments
- Mô-đun điều khiển động cơ L298D
- Kết nối dây
- Mô-đun cảm biến hồng ngoại
- Chasis, bánh xe, tàu lượn siêu tốc
- Energia IDE
- Nguồn điện (3.3v) và 5v-12v
Khái niệm về người theo dòng
Khái niệm về người theo dõi dòng có liên quan đến ánh sáng. Chúng tôi đã sử dụng hành vi của ánh sáng ở bề mặt đen và trắng. Khi ánh sáng rơi trên bề mặt trắng, nó sẽ phản xạ gần như hoàn toàn và trong trường hợp bề mặt đen thì ánh sáng sẽ bị bề mặt đen hấp thụ. Hành vi ánh sáng được giải thích này được sử dụng trong robot theo dõi dòng này.
Trong robot theo dòng dựa trên MSP430 này, chúng tôi đã sử dụng Bộ phát IR và bộ thu IR còn được gọi là điốt quang. Chúng được sử dụng để gửi và nhận ánh sáng. IR truyền đèn hồng ngoại. Khi tia hồng ngoại rơi trên bề mặt trắng, nó bị phản xạ trở lại và bị bắt bởi các điốt quang tạo ra một số thay đổi điện áp. Khi ánh sáng hồng ngoại rơi trên bề mặt màu đen, ánh sáng bị bề mặt màu đen hấp thụ và không có tia nào bị phản xạ trở lại, do đó diode quang không nhận được bất kỳ ánh sáng hoặc tia nào. Để tìm hiểu thêm về cảm biến IR, hãy nhấp vào liên kết.
Ở đây trong robot theo dõi dòng dựa trên MSP430 này khi cảm biến cảm nhận bề mặt trắng thì MSP nhận 1 làm đầu vào và khi cảm nhận đường đen MSP nhận 0 làm đầu vào.
Giải thích mạch
Chúng ta có thể chia toàn bộ robot theo dõi đường dây thành nhiều phần khác nhau như phần cảm biến, phần điều khiển và phần trình điều khiển.
Phần cảm biến: Phần này chứa điốt hồng ngoại, chiết áp, Bộ so sánh (Op-Amp) và đèn LED. Chiết áp được sử dụng để thiết lập điện áp tham chiếu tại một đầu cuối của bộ so sánh và cảm biến IR cảm nhận đường dây và cung cấp sự thay đổi điện áp tại đầu cuối thứ hai của bộ so sánh. Sau đó, bộ so sánh so sánh cả hai điện áp và tạo ra tín hiệu kỹ thuật số ở đầu ra. Ở đây trong mạch này, chúng tôi đã sử dụng hai bộ so sánh cho hai cảm biến. LM358 được sử dụng làm bộ so sánh. LM358 có sẵn hai Op-amp tiếng ồn thấp.
Phần điều khiển: MSP430 Launchpad được sử dụng để điều khiển toàn bộ quá trình của rô bốt theo dòng. Đầu ra của bộ so sánh được kết nối với chân kỹ thuật số P1_3 và P1_4 của MPS430 Launchpad. MSP430 Launchpad đọc các tín hiệu này và gửi lệnh tới mạch trình điều khiển để truyền động theo dòng.
Phần trình điều khiển: Phần trình điều khiển bao gồm trình điều khiển động cơ và hai động cơ DC. Trình điều khiển động cơ được sử dụng để điều khiển động cơ vì MSP430 Launchpad không cung cấp đủ điện áp và dòng điện cho động cơ. Vì vậy, chúng tôi đã thêm một mạch điều khiển động cơ để có đủ điện áp và dòng điện cho động cơ. Ở đây chúng tôi đã sử dụng trình điều khiển L298d để điều khiển DC Motors. MSP430 Launchpad gửi lệnh tới trình điều khiển động cơ này và sau đó nó điều khiển động cơ.
Chúng tôi đã phát triển Robot theo dòng sử dụng Bộ vi điều khiển khác nhau:
- Robot theo dòng sử dụng Vi điều khiển 8051
- Robot theo dòng sử dụng Arduino
- Robot theo dòng sử dụng Raspberry Pi
- Robot theo dòng sử dụng Vi điều khiển PIC
Hoạt động của Robot theo dòng sử dụng MSP430
Công việc của người theo dõi dòng rất thú vị. Robot theo dõi đường dây cảm nhận đường màu đen bằng cách sử dụng cảm biến và sau đó gửi tín hiệu đến MSP430 Launchpad. Sau đó, MSP430 Launchpad điều khiển động cơ theo đầu ra của cảm biến.
Ở đây trong dự án này, chúng tôi sử dụng hai mô-đun cảm biến IR cụ thể là cảm biến bên trái và cảm biến bên phải. Khi cả cảm biến bên trái và bên phải cảm nhận màu trắng thì robot sẽ di chuyển về phía trước.
Nếu cảm biến bên trái có vạch đen thì rô bốt rẽ trái.
Nếu cảm biến bên phải cảm nhận đường màu đen thì rô bốt quay sang bên phải cho đến khi cả hai cảm biến ở bề mặt màu trắng. Khi bề mặt trắng xuất hiện, robot lại bắt đầu di chuyển về phía trước.
Nếu cả hai cảm biến trên vạch đen, robot sẽ dừng lại.
Sơ đồ mạch
Mạch cho Robot theo dòng MSP430 này rất đơn giản. Đầu ra của bộ so sánh được kết nối trực tiếp với số pin kỹ thuật số p1_3 và P1_4 của MSP430 Launchpad. Và chân đầu vào của trình điều khiển động cơ IN1, IN2, IN3 và IN4 được kết nối tại chân số P1_5, P2_0, P2_1, P2_2 của MSP430 Launchpad tương ứng. Một động cơ được kết nối tại chân đầu ra của trình điều khiển động cơ OUT1 và OUT2, và một động cơ khác được kết nối tại OUT3 và OUT4. Ở đây chúng tôi đã sử dụng nguồn cung cấp 3.3v cho toàn bộ mạch ngoại trừ mô-đun Driver Motor. Chúng tôi đã cung cấp 8v cho mô-đun điều khiển động cơ. Người dùng có thể sử dụng 5v-12v.
Bạn cũng có thể xây dựng mô-đun IR của riêng mình, giống như tôi đã xây dựng trên Perf Board. Dưới đây là mạch cho Mô-đun IR:
Giải thích lập trình
Toàn bộ Chương trình và Video có thể được tìm thấy ở cuối Bài viết này.
Trong một chương trình, trước hết, chúng tôi xác định chân đầu vào và đầu ra cho cảm biến và động cơ. Sau đó, xác định một số macro cho hướng của người theo dõi dòng và sau đó viết chỉ thị để chọn đầu ra cảm biến
Lưu ý: Cảm biến có thể hoạt động ở mức thấp hoặc hoạt động ở mức cao, vì vậy trước tiên hãy kiểm tra đầu ra của cảm biến là gì sau đó chọn chỉ thị bằng cách nhận xét hoặc bỏ ghi chú ActiveLowMode . Đối với HIGH đang hoạt động, hãy nhận xétmacro ActiveLowMode .
#define l_sensor P1_3 #define r_sensor P1_4 intpin = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # xác định activeLowMode #ifdef activeLowMode int res = {forward, left, right, stop}; #else int res = {dừng, phải, trái, chuyển tiếp}; #endif
Sau đó, trong chức năng thiết lập , chúng tôi đưa ra hướng cho cảm biến và chân động cơ. Và sau đó trong chức năng vòng lặp , chúng tôi kiểm tra đầu vào và gửi đầu ra đến mô-đun điều khiển động cơ để chạy động cơ.
void setup () { for (int i = 0; i <4; i ++) pinMode (ghim, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); for (int i = 0; i <4; i ++) digitalWrite (ghim, (res >> i) & 0x01); }
Có bốn điều kiện trong trình theo dõi dòng này mà chúng tôi đọc được bằng cách sử dụng MSP430 Launchpad. Chúng tôi đã sử dụng hai cảm biến là cảm biến bên trái và cảm biến bên phải.
Điều kiện: Đầu ra hoạt động CAO
Đầu vào |
Đầu ra |
Chuyển động Của Robot |
||||
Cảm biến trái |
Cảm biến bên phải |
Động cơ bên trái |
Động cơ bên phải |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Dừng lại |
0 |
1 |
1 |
0 |
0 |
0 |
Rẽ phải |
1 |
0 |
0 |
0 |
1 |
0 |
Rẽ trái |
1 |
1 |
1 |
0 |
1 |
0 |
Ở đằng trước |
Chương trình được viết theo các điều kiện bảng trên. Kiểm tra toàn bộ mã và video minh họa bên dưới.