.8 Lưu đồ thuật tốn di chuyển chính của robot

Một phần của tài liệu ĐỒ án kĩ THUẬT MẠCH điện tử (Trang 64)

 Mơ tả thuật tốn STT KÍ HIỆU Ý NGHĨA 1 Bắt đầu/ kết thúc chương trình 2 Điều kiện rẽ nhánh 3 Xử lý, tính tốn, gán 4 Luồng xử lí

HÌNH 3. 9 mơ tả thuật tốn

 Giải thích thuật tốn

Sau khi khởi động robot, bộ điều khiển sẽ bắt đầu phát tín hiệu cho hoạt động, robot chạy theo hướng thẳng về phía trước, khi đó các cảm biến siêu âm sẽ được phát

tín hiệu và qt về phía trước, có 3 cảm biến siêu âm đặt theo 3 hướng: phía trước robot; bên phải robot và bên trái robot. Nếu cảm biến phải có vật cản, robot sẽ quay trái cho đến khi cảm biến khơng cịn qt thấy vật cản thì đi tiếp. nếu cảm biến trái có vật cản, robot sẽ quay phải cho đến khi cảm biến không cịn qt thấy vật cản thì đi tiếp. nếu cả 3 cảm biến trái, phải, giữa đều quét thấy vật cản thì robot sẽ quay 180 độ và đi tiếp.

Đồng thời khi khởi động, bộ điều khiển sẽ phát tín hiệu cho cảm biến hồng ngoại hoạt động, nó được gắn ngay dưới mép sàn phía trước của hút bụi, khi nó phát hiện được khơng có tín hiệu truyền lại, đồng nghĩa phía dưới nó là cầu thang, nên nó sẽ quay ngược và bám đuổi quỹ đạo.

3.4.2.2 Thuật toán con

 Sơ đồ thuật toán của cảm biến siêu âm HC-SR04

HÌNH 3. 10 Lưu đồ thuật tốn của cảm biến tránh vật cản

 Sơ đồ thuật toán của cảm biến hồng ngoại

HÌNH 3. 11 Lưu đồ thuật tốn của cảm biến tránh rơi cầu thang 3.4.3 Chương trình điều khiển

3.4.3.1 Chương trình điều khiển cho cảm biến siêu âm

/* * Kết nối: HCSR04 Arduino VCC 5V GND GND TRIG 8 ECHO 7

Nạp code mở Serial Monitor chọn No line ending, baud 9600. */

const int trig = 8; // chân trig của HC-SR04 const int echo = 7; // chân echo của HC-SR04 void setup()

{

Serial.begin(9600); // giao tiếp Serial với baudrate 9600 pinMode(trig,OUTPUT); // chân trig sẽ phát tín hiệu pinMode(echo,INPUT); // chân echo sẽ nhận tín hiệu }

void loop() {

int distance; // biến lưu khoảng cách

/* Phát xung từ chân trig */

digitalWrite(trig,0); // tắt chân trig delayMicroseconds(2);

digitalWrite(trig,1); // phát xung từ chân trig

delayMicroseconds(5); // xung có độ dài 5 microSeconds digitalWrite(trig,0); // tắt chân trig

/* Tính tốn thời gian */

// Đo độ rộng xung HIGH ở chân echo. duration = pulseIn(echo,HIGH); // Tính khoảng cách đến vật. distance = int(duration/2/29.412);

/* In kết quả ra Serial Monitor */ Serial.print(distance); Serial.println("cm"); delay(200); }  Giải thích chương trình - duration = pulseIn(echo,1);

Hàm pulseIn() được dùng để đo độ rộng của xung, Duration sẽ bằng độ dài xung HIGH ở chân echo (tính theo micro giây).

- distance = int(duration/2/29.412);

Thời gian sóng truyền từ cảm biến đến vật sẽ bằng duration/2, sau đó ta chia tiếp cho 29,412 để tính khoảng cách.

Đọc một xung tín hiệu digital (HIGH/LOW) và trả về chu kì của xung tín hiệu, tức là thời gian tín hiệu chuyển từ mức HIGH xuống LOW hoặc ngược lại (LOW -> HIGH). Một số cảm biến như cảm biến màu sắc như TCS3200D hay cảm biến siêu âm dòng HC-SRxx phải giao tiếp qua xung tín hiệu nên ta phải kết hợp giữa 2 hàm digitalWrite() để xuất tín hiệu và pulseIn() để đọc tín hiệu. (adsbygoogle = window.adsbygoogle || []).push({});

Cú pháp

pulseIn(pin, value);

pulseIn(pin, value, timeout); Trong đó:

pin là chân được chọn để đọc xung. pin có kiểu dữ liệu là int.

Nếu đặt value là HIGH, hàm pulseIn() sẽ đợi đến khi tín hiệu đạt mức HIGH, khởi động bộ đếm thời gian. Khi tín hiệu nhảy xuống LOW, bộ đếm thời gian dừng lại. pulseIn() sẽ trả về thời gian tín hiệu nhảy từ mức HIGH xuống LOW này. Nếu đặt value là LOW, hàm pulseIn() sẽ làm ngược lại, đó là đo thời gian tín hiệu nhảy từ mức LOW lên HIGH. value có kiểu dữ liệu là int.

Nếu tín hiệu ln ở một mức HIGH/LOW cố định thì sau khoảng thời gian timeout, hàm pulseIn() sẽ dừng bộ đếm thời gian và trả về giá trị 0. timeout được tính bằng đơn vị micro giây. Giá trị mặc định của timeout là 60.106 tương ứng với 1 phút. Giá trị tối đa là 180.106 tương ứng với 3 phút. timeout có kiểu dữ liệu là unsigner long.

Trả về

Một số nguyên kiểu unsigner long, đơn vị là micro giây. pulseIn() trả về 0 nếu thời gian nhảy trạng thái HIGH/LOW vượt quá timeout

Ví dụ int pin = 7;

unsigned long duration; void setup() {

Serial.begin(9600); pinMode(pin, INPUT); }

void loop() {

duration = pulseIn(pin, HIGH);

//Hãy nối chân 7 của Arduino vào đường tín hiệu //bạn muốn đọc xung

Serial.println(duration); }

3.4.3.2 Chương trình chính điều khiển cho adruino

// defining the pins const int trigPin1 = 3; const int echoPin1 = 5; const int trigPin2 = 6; const int echoPin2 = 9;

const int trigPin3 = 10; const int echoPin3 = 11; int irpin =2; // defining variables long duration1; long duration2; long duration3; int distanceleft; int distancefront; int distanceright; int a=0; void setup() { pinMode(trigPin1, OUTPUT); pinMode(trigPin2, OUTPUT);

pinMode(trigPin3, OUTPUT);// Sets the trigPin as an Output pinMode(echoPin1, INPUT); // Sets the echoPin as an Input pinMode(echoPin2, INPUT); pinMode(echoPin3, INPUT); pinMode(irpin, INPUT); pinMode(4, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(12, OUTPUT); } void loop() { digitalWrite(trigPin1, LOW); delayMicroseconds(2); digitalWrite(trigPin1, HIGH); delayMicroseconds(10); digitalWrite(trigPin1, LOW);

duration1 = pulseIn(echoPin1, HIGH); distanceleft = duration1 * 0.034 / 2; Serial.print("Distance1: ");

Serial.println(distanceleft); digitalWrite(trigPin2, LOW); delayMicroseconds(2);

digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW);

duration2 = pulseIn(echoPin2, HIGH); distancefront = duration2 * 0.034 / 2; Serial.print("Distance2: "); Serial.println(distancefront); digitalWrite(trigPin3, LOW); delayMicroseconds(2); digitalWrite(trigPin3, HIGH); delayMicroseconds(10); digitalWrite(trigPin3, LOW);

duration3 = pulseIn(echoPin3, HIGH); distanceright = duration3 * 0.034 / 2; Serial.print("Distance3: "); Serial.println(distanceright); int s = digitalRead(irpin); if(s==HIGH) { digitalWrite(4, LOW); digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(12, HIGH); delay(1000); a=1; }

if ((a==0)&&(s==LOW)&&(distanceleft <= 20 && distancefront > 20 && distanceright <= 20) || (a==0)&&(s==LOW)&&(distanceleft > 20 && distancefront > 20 && distanceright > 20)) { digitalWrite(4, HIGH); digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(12,LOW); }

if ((a==1)&&(s==LOW)||(s==LOW)&&(distanceleft <= 20 && distancefront <= 20 && distanceright > 20)||(s==LOW)&&(distanceleft <= 20 && distancefront <= 20 && distanceright > 20)||(s==LOW)&& (distanceleft <= 20 && distancefront > 20 && distanceright > 20)||(distanceleft <= 20 && distancefront > 20 && distanceright > 20)) { digitalWrite(4, HIGH); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(12, HIGH); delay(100); a=0; }

if ((s==LOW) && (distanceleft > 20 && distancefront <= 20 && distanceright <= 20) ||(s==LOW) && (distanceleft > 20 && distancefront > 20 && distanceright <= 20) ||(s==LOW) && (distanceleft > 20 && distancefront <= 20 && distanceright > 20) ) { digitalWrite(4, LOW); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(12, LOW); } SVTH: ĐỖ PHẠM THANH - PHẠM ĐỨC TRÍ GVHD: Th.S PHẠM VĂN PHÁT lxv

CHƯƠNG 4: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ

4.1. Q trình thực hiện (adsbygoogle = window.adsbygoogle || []).push({});

4.1.1. Tham khảo sản phẩm robot hút bụi có trên thị trường.

HÌNH 4. 1 các robot trên thị trường

Như đã thấy, hầu hết các sản phẩm trên thị trường hiện nay đều có giá thành rất cao, nên viẹc tạo ra một sản phẩm có chất lượng tốt, thân thiện với mơi trường, an tồn, đáp ứng đủ nhu cầu sử dụng và đặt biệt giá thành rẻ hơn rất nhiều lần so với các sản phẩm trên thị trường

4.1.2. Xây dựng các phương án thiết kế

Cơng việc thiết kế cơ khí của robot hút bụi bao gồm 2 phần như sau: xây dựng bản vẽ, công việc này được thực hiện trên phần mềm vẽ đồ họa

solidwork 2005. Sau khi có được bản vẽ thiết kế 3d của robot bụi, tiến hành phân tích lựa chọn phương án thiết kế.

4.1.3. Phân tích và chọn phương án thiết kế.

Phương án 1 là mơ hình robot tự hành 3 bánh, trong đó 2 bánh sau được gắn liền trục với 2 động cơ điện dc 12v, bánh tự lựa được đặt ở phía trước có tác dụng

điều hướng. Mơ hình có hình trịn. Robot được trang bị lcd và nút nhấn để giao tiếp, ngồi ra sử dụng cơng tắc hành trình và loxo giúp robot tiếp xúc vật cản khi hoạt động. Trang bị một chổi lớn có tác dụng khuấy bụi giúp robot hút bụi tốt hơn. Phương án này sử dụng một nguồn duy nhất từ acquy 12v.

Ưu điểm của phương án này là:

 Kiểu dáng thiết kế nhỏ gọn.

 Khả năng di chuyển linh hoạt.

 Đảm bảo một số tiêu chí của yêu cầu kỹ thuật.

 Màu sắc đẹp.

 Tuy nhiên, diện tích khơng gian bên trong robot khiêm tốn, chỉ trang bị có một chổi và kiểu dáng thiết kế như vậy thì hiệu quả làm việc ở những góc tường kém, kèm theo việ các sản phẩm trên thị trường gần như dùng thiết kế này nên gần như nhìn sẽ nhàm chán.

Phương án thứ 2 là robot tự hành 3 bánh, nó cũng sử dụng một bánh điều hướng, 2 bánh phía sau được gắn liền trục với động cơ, khác với phương án 1, thiết kế tổng thể là khối hình vng được bo trịn bốn góc có kích thước. Các cơng tắc hành trình được đặt duy nhất ở phía trước.

Mơ hình cũng có khoảng trống phía trong để mạch điều khiển và pin, trang bị lcd, nút nhấn để giao tiếp. Robot được trang bị hệ thống gồm 3 chổi. Trong đó, hai chổi phía trước có chức năng phụ trợ giúp gom bụi hai bên vào, quét các góc tường. Chổi lớn có tác dụng khuấy bụi giúp robot hút bụi tốt hơn.

Ưu điểm của phương án 2 là:

 Diện tích khơng gian bên trong robot rộng.

 Hiệu quả làm việc được cải thiện.

 Màu sắc đẹp và bắt mắt.

 Tuy nhiên, nhìn tổng thể thì cồng kềnh, q góc cạnh tạo cảm giác thơ cứng không được mượt mà và đẹp mắt, nhìn ghồ ghề và khơng được thuận tiện cho các ngôi nhà chật hẹp.

Phương án 3 được thiết kế dựa trên hình vng, được cắt đi các cạnh góc vng, thành 1 hình bát giác tạo cảm giác mới mẻ trong cách nhìn cũng như đẹp mắt hơn. Robot có 2 bánh chủ động và 1 bánh dẫn hướng được đặt phía trước. Ở phương án này có bố trí hệ thống gồm 3 chổi quét, trong đó 2 chổi nhỏ đặt hai bên góc trước của robot giúp quét bụi ở góc tường nên tăng diện tích làm việc của robot. Bên cạnh đó, chổi lớn được thiết kế đặt trung tâm chếch về phía trước có chức năng khuấy bụi và qt các mảnh vụn có kích thước nhỏ. Hộp bụi được thiết kế bố trí hợp lý. Ở phương án này

dùng các cơng tắc hành trình đặt phía trước để giúp robot cảm nhận vật cản và né vật cản cho robot khi va chạm với vật cản. Các cơng tắc hành trình được bảo vệ bởi 2 vành ngồi được thiết kế dựa theo hình dạng của thân robot.

Ưu điểm:

 Robot có kích thước nhỏ gọn giúp di chuyển linh hoạt.

 Bo lớn các góc nâng cao hiệu quả làm việc.

 Diện tích khơng gian bên trong robot khá rộng.

 Kiểu dáng và màu sắc đẹp.

 Các phần cấu thành nên robot được bố trí hợp lý. (adsbygoogle = window.adsbygoogle || []).push({});

Tuy vậy, tồn tại một số nhược điểm như dung tích hộp bụi cịn nhỏ. Sử dụng cơng tắc hành trình chưa được hay lắm.

4.1.4. Lựa chọn phương án

Từ những phân tích ưu việt trong 3 phương án thiết kế, cũng như dựa trên yêu cầu kỹ thuật được đưa ra trước đó. Phương án 3 là phương án có nhiều ưu điểm hơn 2 phương án còn lại, phương án 3 được đánh giá cao không chỉ ở thiết kế nhỏ gọn mà cịn thẩm mĩ cao. Vì vậy, phương án 3 được lựa chọn để chế tạo thành sản phẩm thực tế

4.1.5. Chuẩn bị linh kiện

HÌNH 4. 3 nguyên liệu làm khung sản phẩm

4.1.6. Thi cơng phương án lựa chọn

HÌNH 4. 4 lắp ráp các linh kiện

4.1.7. Hình ảnh sinh viên khi thực hiện

HÌNH 4. 5 Một số hình ảnh trong quá trình thực hiện

4.1.8. Thử nghiệm sản phẩm

HÌNH 4. 6 sản phẩm hồn thiện

4.1.9. Hướng phát triển và cải tạo

 Robot cần được nâng cấp khả năng tự sạc nguồn khi cạn.

 Robot cần phát triển khả năng nhận dạng không gian.

 Robot cần trang bị cảm biến tránh vật cản tốt hơn.

 Robot nên trang bị cảm biến bụi bẩn để hoạt động tốt hơn.

 Robot cần trang bị thêm cảm biến để định vị trong không gian.

 Tích hợp thêm chức năng điều khiển từ xa cho robot

 Phát triển giải thuật để robot có thể thay đổi quỹ đạo di chuyển trong không gian của robot với các quỹ đạo hình xoắn ốc, quỹ đạo ngẫu nhiên, zích-zắc.

 Thực nghiệm robot hút bụi trên thực tế. 4.2 Kết quả vận hành

4.2.1 Kết quả

 Hoàn thành việc thiết kế các mạch điều khiển và mạch công suất cho robot.

 Đã xây dựng một chương trình tối ưu cho robot dựa sử dụng vi điều khiển At328Pmega.

 Thuật tốn di chuyển có phần chưa bằng các sản phẩm thị trường nhưng hoạt động khá tốt khi hoạt động.

 Robot hút bụi hoạt động tốt theo yêu cầu thiết kế đặt ra. 4.2.2 Tổng quan

Thiết kế của robot cần phải cân nhắc về tính nhỏ gọn, hiệu quả và thơng minh. Sự lựa chọn hình dạng hình 8 mặt bằng nhau đặt nó lên hàng đầu trong các thiết kế ý tưởng có sẵn. Với hình dạng 8 mặt bằng nhau, có thể giới hạn số lượng bánh xe cơ giới ở hai bánh sau có lực kéo và một bánh trước trợ lực. Ngồi ra, các thanh qt đã được phân tích đặt ở vị trí tối ưu nhất để tăng diện tích làm sạch của robot mà khơng làm tăng kích thước tổng thể của nó. Thùng rác được phát triển để đồng thời hoạt động như một kho chứa bụi bẩn và một thiết bị lốc xoáy để hút. Điều này cho thấy thùng rác thực chất là một thùng chứa bên trong có thiết lập chân khơng một phần, hút và giữ lại chất bẩn mà khơng có khả năng làm tràn chất bẩn. Cần nhấn mạnh rằng thùng rác tiếp xúc thường xuyên với sàn nhà từ đó hút bụi bẩn.

Khi xem xét thiết kế điện, cặp pin lithium-ion polymer được sử dụng phục vụ độc lập cho Arduino vì tỷ lệ tiêu thụ điện năng của chúng khác nhau. Bảng Arduino đóng vai trị như bộ não nhận xung lực từ các cảm biến siêu âm và điều khiển lá chắn động cơ.

Khung khung được làm từ nhựa cứng vì tính linh hoạt và sẵn có của nó. Bo mạch vi điều khiển Arduino được gắn trên khung và đặt ở bánh trước để cho phép các thành phần tương tác khác dễ dàng truy cập. Bốn cảm biến siêu âm được đặt cách nhau 135 °

trong khi quạt gió tạo ra chân khơng hút bụi bẩn. Hai thanh quét quay theo chiều kim đồng hồ và ngược chiều kim đồng hồ để gom bụi bẩn về khu vực hút bụi. Sau khi tất cả các thành phần được lắp ráp trên khung và mã lập trình được tải lên, robot sau đó đã được kiểm tra và phát hiện ra khả năng hút bụi bẩn và tránh chướng ngại vật một cách hiệu quả.

Robot có chiều rộng, chiều ngang và chiều cao khá khiêm tốn giúp dễ dàng điều động. Nó chỉ nặng khoảng 1,5 kg do pin trọng lượng nhẹ, thùng rác bằng bìa cứng và quạt gió nhỏ… Thể tích tối đa của thùng rác khá nhỏ so với các máy hút bụi cao cấp khác. Hạn chế này là do đường kính của quạt thổi nhỏ. Nếu cần, trình dọn dẹp có thể được mở rộng một cách thích hợp. (adsbygoogle = window.adsbygoogle || []).push({});

4.2.3 Đánh giá hiệu suất

Hiệu suất của robot được phát triển được đánh giá dựa trên hiệu quả điều hướng,

Một phần của tài liệu ĐỒ án kĩ THUẬT MẠCH điện tử (Trang 64)