Thuật toán con

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

3. Phạm vi và đối tượng nghiên cứu, phương pháp nghiên cứu

3.4.2.2Thuậ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 toá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 toá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 toá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.

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 luôn ở 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ề (adsbygoogle = window.adsbygoogle || []).push({});

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. Quá trình thực hiện

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 toà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ế. (adsbygoogle = window.adsbygoogle || []).push({});

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, ngoà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 vuông đượ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, quá 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 vuông, được cắt đi các cạnh góc vuông, 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à quét 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 ngoà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ý.

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 hoà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 toá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. Ngoài ra, các thanh quét đã đượ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.

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, khả năng / hiệu suất quét và tiêu thụ điện năng trong nhà và văn phòng. Hiệu suất làm sạch được thử nghiệm trên một nền nhà nhẵn, trên đó có rải rác khô như hỗn hợp gạo, hạt sắn chiên, bột và cát. Robot hút chúng sau hai lần đi từ đầu này của căn phòng sang bức tường đối diện hoặc khi gặp chướng ngại vật. Sàn được làm sạch hiệu quả trong vòng một phút đối với sàn không có chướng ngại vật. Đối với những người có chướng ngại vật, phải mất nhiều thời gian hơn vì robot phải điều hướng chúng. Nhiều thử nghiệm hơn đã được thực hiện trong văn phòng và không gian phòng thí nghiệm, và các kết quả tương tự cũng thu được. Trong khi ro bot điều hướng các khu vực này một cách hiệu quả, thỉnh thoảng vẫn quan sát thấy trục trặc do chướng ngại vật nhỏ. Robot được chế tạo để ở rất gần mặt đất để có thể hút nhiều hơn và phát hiện chướng ngại vật nhỏ. Bất kỳ chướng ngại vật nào không thể phát hiện được phải cao hơn 1,5 cm về cơ bản không phải là mối đe dọa đối với điều hướng của robot.

Thùng rác cũng hoạt động hiệu quả vì chất bẩn được hút được giữ lại mà không bị đổ ra ngoài. Thùng rác rất dễ tiếp cận, làm cho việc đổ bụi bẩn và dọn dẹp lại thùng

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