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() {
unsigned long duration; // biến đo thời gian 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. Cú pháp
pulseIn(pin, value);
pulseIn(pin, value, timeout); Trong đó:
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); }
CHƯƠNG 4: Q TRÌNH THỰC HIỆN VÀ KẾT QUẢ
1.Quá trình thực hiện
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
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ế.
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 qt, 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.
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. 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ế
5. Chuẩn bị linh kiện
HÌNH 4. 3 nguyên liệu làm khung sản phẩm
6. Thi công phương án lựa chọn
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
8. Thử nghiệm sản phẩm
HÌNH 4. 6 sản phẩm hồn thiện
9. Hướng phát triển và cải tạo
Với điều kiện hiện thực tế em xin đề xuất một số hướng phát triển của đề tài như sau:
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. 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 ngồ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 rác dễ dàng. Đối với pin dung lượng 2200 mAh, người ta tính tốn rằng trình dọn dẹp có thể làm sạch hiệu quả trong 2 giờ trước khi sạc. Với khả năng này, thiết bị sẽ được triển khai cho mục đích sử dụng văn phịng và gia đình, do đó làm cho việc dọn dẹp trở thành một nhiệm vụ hoàn toàn tự chủ.
Khả năng làm sạch bị giới hạn bởi thể tích của thùng rác. Điều này có thể được mở rộng một cách tương xứng. Các thành phần này có thể ngày càng trở nên nóng hơn khi hoạt động, do đó việc kết hợp tản nhiệt hoặc hệ thống làm mát thơng thường hơn sẽ có