Chế tạo Robot theo dòng này cho Dự án Hội chợ Khoa học

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài đăng này, chúng ta sẽ tìm hiểu cách xây dựng một mạch rô bốt theo dõi đường bằng Arduino, mạch này sẽ chạy trên một bố cục đường được vẽ cụ thể và sẽ theo dõi trung thực miễn là có sẵn và có thể theo dõi bằng các cảm biến của nó.

Bởi navneet sajwan



Robot theo dòng là gì

Robot tự hành là một cỗ máy có thể thực hiện một loạt các hành động theo hướng dẫn của người lập trình mà không bị con người điều khiển theo cách thủ công trong thời gian thực.

Kẻ theo đường (LFR) cũng là những chiếc xe rô-bốt tự động được dẫn đường bởi một hoặc nhiều cảm biến và một đường kẻ màu đen hoặc trắng. Chúng là nền tảng của những chiếc xe tự lái hiện đại.



Giống như mọi robot tự động, những người đi theo đường dây có một bộ phận xử lý và ra quyết định tín hiệu, các cảm biến và bộ truyền động. Nếu bạn là người mới bắt đầu học chế tạo robot và muốn thực hiện nó một cách nghiêm túc, đây là nơi bạn nên bắt đầu. Hãy bắt đầu làm.

Tôi đã sử dụng hai cảm biến hồng ngoại và ba bánh để thực hiện dự án này. Số lượng cảm biến tối thiểu có thể được sử dụng là một và tối đa là tám là đủ cho dòng dựa trên PID.

Các thành phần bắt buộc:

Arduino una

Khung xe

Hai động cơ hoạt động bằng pin (b.o.) Và lốp xe tương thích

Bóng thầu dầu

Hai cảm biến hồng ngoại

Mô-đun điều khiển động cơ

Nguồn cấp

Phần mềm Arduino IDE

Bây giờ, chúng ta hãy xem xét các thành phần của chúng tôi:

ARDUINO MỘT : Hãy tưởng tượng nó giống như phòng điều khiển của robot của chúng ta. Hiện tại, có rất nhiều bảng phát triển được xem xét cho dự án này, nhưng Arduino UNO đơn giản là không phù hợp với những bảng khác. Không phải là nhân vật chính của chúng ta vượt trội về các tính năng đa chiều của nó.

Nếu đúng như vậy, Raspberry Pi và Intel Edison sẽ đập vào mắt nó. Các lập luận thuyết phục nhất dẫn đến việc lựa chọn Arduino UNO được hình thành bởi sự kết hợp của các tính năng, giá cả, kích thước và yêu cầu cho dự án.

Một số lý do có liên quan là:

KÍCH THƯỚC : Nó khá nhỏ so với các bo mạch phát triển dựa trên Atmega16 hoặc Atmega8, tiêu tốn một ít không gian trên khung máy, vì vậy bạn sẽ có được một bot nhỏ gọn và tiện dụng.

Điều này thực sự quan trọng trong các cuộc thi người máy. Tin tôi đi, bạn sẽ ghét phải đi lang thang với con bot to lớn xấu xí đó, thay đổi địa điểm cả ngày.

Kích thước nhỏ hơn, robot nhanh hơn và lượt hiệu quả hơn.

BAN TIẾN HÀNH TỐT NHẤT : Không nghi ngờ gì nữa, Arduino UNO có sự kết hợp tốt nhất của các tính năng cho tạo mẫu . Khi các mạch của bạn đã ở đúng vị trí và dự án của bạn hoạt động hoàn hảo, bạn có thể thay thế nó bằng thứ gì đó nhỏ hơn và rẻ hơn như Arduino Nano và Attiny85 ic.

Đối với những người, làm người theo dõi dòng cho các dự án đại học, tôi khuyên bạn nên thay thế UNO bằng Nano ở phần cuối.

CHASSIS : Nó là khung giữ tất cả các thành phần ở vị trí. Có một số điểm cần cân nhắc khi mua khung gầm mới,

Nó phải nhẹ và mạnh mẽ.

Đối với các dự án, sẽ tốt hơn nếu bạn mua một cái từ chợ. Nhưng nếu bạn đang chuẩn bị cho cuộc thi, tôi thực sự khuyên bạn nên tùy chỉnh của riêng mình, lưu ý các kích thước và yêu cầu của cuộc thi.

Chọn khung xe bằng nhựa hoặc bằng gỗ. Khi khung kim loại tiếp xúc với Arduino, một số chân cắm sẽ bị chập. Đây là một yếu tố lớn cần tập trung khi tìm kiếm khung gầm.

Giữ khung gầm của bạn càng thấp càng tốt - điều này mang lại sự ổn định cho bot.

ĐỘNG CƠ : Sử dụng pin nhẹ hoạt động bằng pin (B.O.) d.c. động cơ.

CASTOR BALL : Bánh xe bình thường cung cấp chuyển động tịnh tiến dọc theo một trục nhưng một quả cầu thầu dầu được thiết kế để di chuyển dọc theo bất kỳ hướng nào trên bề mặt. Nó cung cấp cho chúng tôi ổ đĩa ba bánh.

Lý do thích dẫn động 3 bánh hơn 4 bánh là vì chuyển động của nó tương đối nhanh hơn. Bạn có thể nhận thấy những chiếc xe xích lô đâm xuyên qua phương tiện giao thông như loài bò sát. Tương tự là trường hợp của robot của chúng tôi.

CẢM BIẾN : Nó là một thiết bị phát hiện hoặc đo lường bất kỳ thông số vật lý nào của môi trường của chúng ta và chuyển nó thành tín hiệu điện. Trong trường hợp này, tham số được phát hiện là tia hồng ngoại.

Cảm biến là yếu tố cơ bản đối với bất kỳ robot nào. Chà, nếu arduino là bộ não của bot của chúng ta, thì các cảm biến cũng có thể đóng vai trò của mắt. Dưới đây là một số điều về cảm biến:

Các cảm biến phải được định hướng theo cách mà (các) led hướng xuống đất.

Nên được đặt ở đầu phía trước của bot của bạn.

Khoảng cách tối thiểu giữa chúng phải lớn hơn chiều rộng của đường màu đen.

BAN LÁI XE ĐỘNG CƠ : Trình điều khiển động cơ là các mạch đệm lấy tín hiệu điện áp thấp để cấp nguồn cho động cơ yêu cầu điện áp cao hơn.

Trong trường hợp của chúng tôi, Arduino có thể cung cấp đủ điện áp để điều khiển động cơ nhưng nó không thể cung cấp dòng điện dồi dào. Các chân 5v và GND của Arduino UNO có định mức hiện tại là 200mA trong khi bất kỳ chân GPIO nào có định mức là 40 mA. Đây là cách thấp hơn so với động cơ khởi động và ngừng dòng mà chúng ta cần.

Có hai trình điều khiển động cơ mà tôi thích cho dự án này: L298N và L293D. Cả hai đều thích hợp để thực hiện dự án này.

Tuy nhiên, L293D tương đối rẻ hơn nhưng có xếp hạng hiện tại thấp. Các kết nối của chúng gần giống nhau. Vì tôi đã đưa ra các kết nối cho cả hai, việc bạn tạo bot của mình như thế nào là hoàn toàn phụ thuộc vào bạn.

NGUỒN CẤP :

Sử dụng bộ chuyển đổi 12 v hoặc pin (không quá 12 vôn).

Vị trí của các thành phần (từ trước ra sau):

Cảm biến ở đầu bot của bạn.

Bánh xe thầu dầu ở giữa.

Động cơ và lốp xe ở một hàng ở phía sau.

Kết nối:

SENSORS thành ARDUINO :

Kết nối chân cảm biến với chân arduino như hình,

Chân cảm biếnPin Arduino
VCC (5v)5V
GND (G)GND
CẢM BIẾN TRÁI RA (DO)chốt 6
RIGHT SENSOR OUT (DO)chốt 7

Lưu ý: Để kiểm tra xem cảm biến của bạn có được cấp nguồn hay không, hãy hướng camera điện thoại di động của bạn vào đèn LED phát hồng ngoại. Bạn sẽ thấy đèn led phát sáng trên màn hình mà mắt thường chúng ta không thể nhìn thấy được. Một số máy ảnh điện thoại di động hiện đại có bộ lọc hồng ngoại. Vì vậy, hãy tính đến điều đó.

ĐỘNG CƠ tới NGƯỜI LÁI XE ĐỘNG CƠ:

Mỗi động cơ có hai thiết bị đầu cuối cần được kết nối với trình điều khiển động cơ. Đừng bao giờ cố gắng kết nối chúng trực tiếp với arduino. Nhìn từ phía sau bot của bạn, với động cơ ở gần bạn và cảm biến ở xa, hãy kết nối chúng như sau:

ĐỘNG CƠL298NL293D
ĐỘNG CƠ TRÁIPIN 1 VÀ 2PIN 7 VÀ 8
ĐỘNG CƠ ĐÚNGPIN 13 VÀ 14PIN 9 VÀ 10

BẰNG LÁI XE ĐỘNG CƠ sang ARDUINO UNO:

ĐỘNG CƠ LÁI XE (L298N)ARDUINO MỘT
PIN 4RƯỢU
PIN 5GND
PIN 65V
PIN 8 & PIN 9PIN 3 & PIN 9
Mã PIN 10 và mã PIN 11Mã PIN 5 và mã PIN 10
Mã PIN 7 và mã PIN 125V
ĐỘNG CƠ LÁI XE (L293D)ARDUINO MỘT
PIN 3RƯỢU
PIN 2GND
PIN 15V
PIN 5 VÀ PIN 6PIN 3 & PIN 9
PIN 11 VÀ PIN 12Mã PIN 5 và mã PIN 10
PIN 4 VÀ PIN 55V

LƯU Ý: Chân 8 và 9 của l298n được sử dụng để điều khiển động cơ kết nối với 1 và 2. Và, 10 và 11 động cơ điều khiển được kết nối với chân 13 và 14. Tương tự, chân 5 và 6 của l293d được sử dụng để điều khiển động cơ được kết nối với 7 và 8.And, 12 và 11 động cơ điều khiển kết nối với chân 9 và 10.

Đến đây là chúng ta đã kết thúc phần thiết kế. Chúng ta vẫn phải viết mã nhưng trước đó chúng ta sẽ xem xét các nguyên tắc cho phép chạy theo dòng.

Cách hoạt động của cảm biến hồng ngoại:

Cảm biến màu đỏ hồng ngoại (cảm biến IR) có thể được sử dụng để cảm nhận độ tương phản về màu sắc và độ gần của các đối tượng với nó. Nguyên tắc nằm đằng sau hoạt động của cảm biến IR khá cơ bản.

Như chúng ta thấy, nó có hai led - led phát tia hồng ngoại và một photodiode. Chúng hoạt động như một cặp máy phát - máy thu. Khi một chướng ngại vật đến trước tia phát, chúng sẽ bị phản xạ trở lại và bị chặn bởi bộ thu.

Điều này tạo ra một tín hiệu kỹ thuật số có thể được cung cấp cho bộ vi điều khiển và thiết bị truyền động để thực hiện hành động cần thiết khi gặp chướng ngại vật.

Vật lý cơ bản cho chúng ta biết rằng vật thể màu đen hấp thụ tất cả các bức xạ điện từ tới nó trong khi vật thể màu trắng phản chiếu nó. Nguyên tắc này được một người theo dõi dòng khai thác để phân biệt giữa bề mặt trắng và bề mặt đen.

Cách thức hoạt động của rô bốt theo dòng:

BỐ TRÍ DÒNG SAU

Trong điều kiện bình thường, robot di chuyển theo cách mà cả hai cảm biến đều ở trên màu trắng và vạch đen ở giữa cả hai cảm biến.

Nó được lập trình để quay cả hai động cơ sao cho bot di chuyển theo hướng thuận.

Hoàn toàn tự nhiên, khi thời gian trôi qua, một trong hai cảm biến sẽ vượt qua vạch đen.

Nếu cảm biến bên trái vượt qua vạch, động cơ bên trái được đưa về trạng thái nghỉ và kết quả là bot bắt đầu quay về phía trái trừ khi cảm biến bên trái trở lại trên bề mặt trắng và đạt được điều kiện bình thường.

Tương tự như vậy, khi cảm biến bên phải vượt qua vạch đen, động cơ bên phải bị dừng và do đó bot bây giờ quay về phía bên phải trừ khi cảm biến quay trở lại trên bề mặt trắng. Cơ cấu quay này được gọi là cơ cấu truyền động vi sai.

SƠ ĐỒ MẠCH:

CHI TIẾT DÂY:

LẬP TRÌNH VÀ KHÁI NIỆM:

Làm xong phần mạch, bây giờ chúng ta sẽ chuyển sang phần lập trình. Trong phần này, chúng ta sẽ hiểu về chương trình điều khiển robot của chúng ta. Đây là mã: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Mô tả các chức năng được sử dụng:

read_sensors (): Nó lấy kết quả đọc của cả cảm biến và lưu trữ chúng trong các biến trái và phải.

move_ntic (): Khi arduino thực hiện chức năng này, cả hai động cơ sẽ chuyển động theo chiều thuận.

turn_left (): Động cơ bên trái dừng. Bot rẽ trái.

turn_right (): Động cơ bên phải dừng. Bot rẽ phải.

halt (): Bot dừng lại.

print_readings (): Hiển thị số đọc của cảm biến trên màn hình nối tiếp. Đối với điều này, bạn phải bỏ ghi chú “Serial.begin (9600)” trong thiết lập void.

ĐỌC CẢM BIẾN:

CẢM BIẾN DÒNGĐỌC CẢM BIẾN
TRÁIĐÚNG
CẢM BIẾN TRÁI01
CẢM BIẾN PHẢI10
KHÔNG AI11
CẢ HAI00

KIỂM SOÁT TỐC ĐỘ:

Đôi khi tốc độ của động cơ cao đến mức trước khi arduino giải thích tín hiệu cảm biến, robot bị mất dòng. Tóm lại, bot không theo dòng do tốc độ cao và liên tục bị mất dòng mặc dù thuật toán đúng.

Để tránh những trường hợp như vậy, chúng tôi giảm tốc độ của bot bằng kỹ thuật PWM. Trong đoạn mã trên có một giá trị được đặt tên là biến.

Chỉ cần giảm giá trị số trong hàm để giảm tốc độ. Trong Arduino UNO, bạn chỉ có thể có giá trị pwm từ 0 đến 255.

analogWrite (pin, giá trị)

0<= value <=255

Đây là cuối bài viết của tôi trên người theo dõi dòng. Tôi hy vọng nó đủ chi tiết để trả lời tất cả các truy vấn nóng bỏng của bạn và nếu trong thực tế hiếm hoi nhất là không, thì chúng tôi luôn có sẵn phần bình luận cho bạn. Bình luận nghi ngờ của bạn ra. Chúc bạn vui vẻ mày mò!




Trước: Xe rô bốt điều khiển bằng điện thoại di động sử dụng mô-đun DTMF Tiếp theo: Công tắc BẬT / TẮT nguồn AC được kiểm soát bằng mật khẩu