3.2.1. Sơ đồ khối hệ thống
Hình 3-21 Sơ đồ khối hệ thống
3.2.2. Phân tích các khối
3.2.2.1. Khối nguồn
Nguồn chính sử dụng Cell Pin Ultrafire 18650 ( đây là loại pin thường được sử dụng trong xe mơ hình, đèn pin, đồ chơi sử dụng pin, thời gian hoạt động phù hợp với các mạch công suất nhỏ ).
- Điện áp danh định: 3.7V
- Công suất danh định: 3000mah
Kích thước: - Chiều dài: 6.5cm - Đường kính: 2cm
Hình 3-22 Cell Pin Ultrafire 18650
Tạo nguồn cho các motor:
o Để đảm bảo cho robot di chuyển một cách đồng đều khi có sự thăng giáng của điện áp trên nguồn hoặc khi sử
dụng một nguồn điện khác, ta sử dụng thêm một mạch ổn áp để cung cấp nguồn cho các motor .
o Các yêu cầu cho bộ nguồn motor:
Điện áp ra trên 10V và có thể điều chỉnh được
Dịng cung cấp có thể đạt tới 3A
o Lựa chọn nguồn Switching thay cho nguồn kiểu tuyến tính (linear) sẽ thu được nhiều ưu điểm quan trọng sau:
Hiệu suất làm việc cao (có thể tới 88%)
Có thể cung cấp dòng ra lớn (điều mà hiếm IC linear nào có thể đạt được hoặc sẽ phải dùng tản nhiệt lớn, chằng hạn như LM138 – 5A, LM150 – 3A, LM317 – 1.5A)
Công suất tiêu tán nhiệt ít
3.2.2.1.1. Khối chuyển đổi nguồn nuôi Sử dụng IC LM2576.
Hình 3-23 IC LM2576 Điện áp ra được điều chỉnh từ 1.23 V tới 37V:
- Dòng ra đạt tới 3A
- Chỉ yêu cầu 4 thành phần ngoài
- Bộ dao động bên trong với tần số không đổi 52 kHz - Hiệu suất cao
- Bảo vệ q dịng, q nhiệt
Hình 3-24 Cấu tạo bên trong của LM2576
Hình 3-25 Sơ đồ mạch nguồn cho motor
Sử dụng mạch nạp chuyên dụng của pin Ultra Fire, kết nối qua cổng USB hoặc cắm trực tiếp vào nguồn xoay chiều 220V.
Hình 3-26 Khối nạp Pin
3.2.2.2. Khối cảm biến
3.2.2.2.1. Hệ thống cảm nhận vật cản
Sử dụng cảm biến siêu âm SRF05.
SRF05 có thể thiết lập cách hoạt động thơng qua các chân điều khiển MODE. Nối hoặc không nối chân MODE xuống GND cho phép cảm biến đƣợc điều khiển thông qua giao tiếp dùng 1 chân hay 2 chân IO.
Cách 1 – Tách riêng chân TRIGGER và ECHO (tương thích với cảm biến SRF04)
Modun cảm biến SRF05 có hai chân TRIGGER và ECHO riêng biệt. Khi chân MODE để trống (chân MODE có điện trở kéo lên VCC, khi để trống nó sẽ nhận mức điện áp VCC) SRF05 sẽ sử dụng cả 2 chân chức năng TRIGGER và ECHO cho việc điều khiển hoạt động của cảm biến.
cho chân TRIGGER một xung điều khiển với độ rộng tối thiểu 10uS. Sau đó một khoảng thời gian, đầu phát sóng siêu âm sẽ phát ra sóng siêu âm, vi xử lý tích hợp trên modun sẽ tự xác định thời điểm phát sóng siêu âm và thu sóng siêu âm. Vi xử lý tích hợp này sẽ đƣa kết quả thu đƣợc ra chân ECHO. Độ rộng xung vuông tại chân ECHO tỉ lệ với khoảng cách từ cảm biến tới vật thể.
Cách 2: Sử dụng một chân cho cả TRIGGER và ECHO
Ở chế độ này, một chân của vi xử lý sẽ điều khiển quá trình phát xung của cảm biến siêu âm và việc đọc tín hiệu trả về. u cầu lúc đó chân MODE cần đƣợc nối đất (GND). Đầu tiên xuất một xung với độ rộng tối thiểu 10uS vào chân TRIGGER-ECHO (chân số 3) của cảm biến. Sau đó vi xử lý tích hợp trên cảm biến sẽ phát ra tín hiệu điều khiển đầu phát siêu âm. Sau 700uS kể từ lúc kết thúc tín hiệu điều khiển, từ chân
Hình 3-30 Sơ đồ SRF04
Hình 3-31 SRF05 Timing Diagram Mode 2
Trong đề tài này, em lựa chọn cách thiết kế thứ nhất, dùng chân Trigger để phát tín hiệu và dùng chân Echo để thu tín hiệu phản xạ.
robot phải có hệt hống sensor cảm nhận đƣợc độ cao. Thơng số kỹ thuật module TCRT5000:
Hình 3-32 Module TCRT5000 +Điện áp cung cấp: 3 -> 5 V.
+Dịng điện tiêu thụ: <15mA. +Tín hiệu ngõ ra: analog và digital.
+Mạch sử dụng chip so sánh LM393 cho độ ổn định cao. +Kích thƣớc: 32 x 14 mm.
Sơ đồ chân:
+VCC: cấp nguồn 3.3 -> 5 V.
+GND: nối mass.
+DO: đầu ra digital (mức 0 và 1). +AO: đầu ra analog (0V -> 5 V).
Khoảng cách phát hiện từ 1-25mm, do đó em để cảm biến cách mặt sàn một khoảng bằng 25mm ( có thể nhỏ hơn 1-3mm) . Chọn tín hiệu trả về là tín hiệu Digital ( chân D0 nối với chân tín hiệu của Vi điều khiển). Khi có vật cản , D0 trả về giá trị 0, khi khơng có vật cản ( cách sàn > 25mm, là ở độ cao không cho phép ) , D0 trả về giá trị 1.
Sử dụng Arduino Uno R3
Bảng 3-4 Thông số Arduino Uno R3
Vi điều khiển ATmega328 (họ 8bit)
Điện áp hoạt động 5V – DC (chỉ đƣợc cấp qua cổng USB) Tần số hoạt động 16 MHz
Dòng tiêu thụ 30mA
Điện áp vào khuyên dùng 7-12V – DC Điện áp vào giới hạn 6-20V – DC Số chân Digital I/O 14 (6 chân PWM) Số chân Analog 6 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash
32 KB (ATmega328) với 0.5KB dùng bởi bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
3.2.2.3.2. Mạch điều khiển động cơ
Sử dụng IC L298 ( nguyên lý, sơ đồ… trình bày ở chương 2 ( cơ sở lý thuyết )).
+Điện áp điều khiển: +5 V ~ +12 V + Dòng tối đa cho mỗi cầu H là: 2A
+ Điện áp của tín hiệu điều khiển: +5 V ~ +7 V + Dịng của tín hiệu điều khiển: 0 ~ 36mA
+ Cơng suất hao phí: 20W (khi nhiệt độ T = 75 ℃) + Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
Trong đề tài, nhóm em sử dụng module L298 Version 3
- Điện áp hoạt động: 3V – 9V ( Hoạt động tốt nhất từ 6V – 8V ) - Momen xoắn cực đại: 800gf cm min 1.48 ( 3V )
Để điều khiển robot đi theo một quỹ đạo nào đó, ví dụ như di chuyển theo một đường cong nào đó thực chất là ta thay đổi tỉ lệ tốc độ 2 bánh xe của robot. Gọi tỉ lệ tốc độ quay giữa 2 bánh xe là R:
R = Vt / Vp, với Vt là tốc độ bánh xe bên trái, Vp là tốc độ bánh xe bên phải. Với R = 1, robot tiến thẳng.
Với 0 < R < 1, robot đi theo hình trịn ngược chiều kim đồng hồ. Với R > 1, robot đi theo hình trịn thuận chiều kim đồng hồ. Với R = 0, robot quay tròn tại chỗ với tâm là bánh trái. Với R = ∞, robot quay tròn tại chỗ với tâm là bánh phải.
Với R = -1, hai bánh xe quay ngược chiều và đồng tốc, robot quay tròn tại chỗ, tâm là điểm giữa hai bánh xe.
Tổ hợp các quỹ đạo cơ bản ở trên lại với nhau ta có thể cho robot di chuyển theo một hình dạng bất kỳ nào đó.
Mơ tả phương pháp: bắt đầu Robot di chuyển thẳng. Khi gặp tường Robot so sánh 2 bên và quay 180 độ về bên có khoảng cách lớn hơn. Nếu gặp vật cản ở giữa căn phòng Robot đi men theo vật và tiếp tục quỹ đạo trước lúc Robot gặp vật cản.
Hình 3.16 Các khoảng cánh từ Robot tới vật cản
Trong đó: d là khoảng cách từ vật cản tới cảm biến trước của robot. a là khoảng cách xa nhất mà cảm biến bên trái có thể đo.
Robot Vật cản a b d
Hình 4-35 Các khoảng cách để chọn hướng đi cho Robot
4.2. Tránh vật cản và độ cao
Sử dụng module cảm biến hồng ngoại TCRT5000.
Hình 4-36 Module cảm biến hồng ngoại TCRT5000
Đi quay trái 180 độ
Robot Đi thẳng
Đi quay phải 180 độ
d<2,5cm
a>b a<b
d<2,5cm d>2,5cm
Hình 4-37 Lưu đồ thuật tốn chương trình Robot đi thẳng Khơng có vật cản/ độ cao cho phép Có vật cản / độ cao quá giới hạn Đọc trạng
thái sensor
So sánh khoảng cách 2 bên trái phải, tìm bên lớn hơn
Robot tiến trái (500ms)
Robot tiến phải (500ms) Lùi lại (900 ms) Bắt đầu
robot hút bụi.
4.4.1. Giới thiệu chung về phần mềm Matlab2017b
MATLAB là ngôn ngữ lập trình do MathWorks phát triển, cho phép người dùng xây dựng ma trận, vẽ đồ thị hàm số hay biểu đồ dữ liệu, thực hiện các phép toán, tạo các giao diện người dùng, liên kết các chương trình máy tính được viết trên nhiều ngơn ngữ khác nhau, bao gồm cả C, C++, Java, và FORTRAN, phân tích dữ liệu, phát triển các thuật tốn, tạo ra các mơ hình và ứng dụng.
MATLAB được tích hợp nhiều lệnh và các hàm tốn học, giúp người dùng thực hiện tính toán các con số, vẽ đồ thị và thực hiện các phương pháp số.
*Các phép tính tốn của MATLAB:
Matlab được sử dụng rộng rãi trong mọi khía cạnh tính tốn, dưới đây là một trong những hình thức phổ biến nhất: Giải quyết các vấn đề ma trận và mảng Đồ thị 2-D và 3-D Đại số tuyến tính Phương trình đại số Các hàm phi tuyến tính Số liệu thống kê Phân tích dữ liệu
Giải tích và phương trình vi phân Tính tốn số
Chuyển đổi Hồi quy
Các hàm đặc biệt khác *Các tính năng của Matlab:
- Matlab là ngơn ngữ lập trình cấp cao, cho phép tính tốn các con số, hình dung và phát triển ứng dụng
- Cung cấp thư viện lớn các hàm tốn học cho đại số tuyến tính, thống kê, phân tích Fourier, bộ lọc, tối ưu hóa, tích phân, giải các phương trình vi phân bình thường
- Matlab cung cấp các đồ thị được tích hợp sẵn để hiển thị hình ảnh dữ liệu và các cơng cụ để tạo đồ thị tùy chỉnh
- Cung cấp các công cụ để xây dựng các ứng dụng với các giao diện đồ họa tùy chỉnh
*Sử dụng Matlab:
MATLAB được sử dụng rộng rãi như cơng cụ tính tốn trong các lĩnh vực khoa học và kỹ thuật, bao gồm các lĩnh vực vật lý, hóa học, tốn học và cơng nghệ. MATLAB được sử dụng trong một loạt các ứng dụng bao gồm:
Xử lý tín hiệu thơng tin Xử lý hình ảnh và video Hệ thống điều khiển Kiểm tra và đo lường Tính tốn tài chính Tính tốn sinh học
Hình 4-38 Giao diện MATLAB trên màn hình máy tính
4.4.2. Hướng dẫn mơ phỏng robot hút bụi trên MATLAB2017b
B1: Ta click vào biểu tượng MATLAB trên màn hình máy tính để xuất hiện giao diện sau.
B3: Click chuột phải vào biểu tượng Sim.I.am, sau đó chọn open folder sẽ xuất hiện giao diện.
hiện giao diện.
Trong thời gian 8 tuần hoàn thiện đồ án, được sự giúp đỡ của cơ ThS. Bùi Thị
Khánh Hịa và các thầy cơ trong khoa nhóm đã đạt được một số kết quả nhất
định trong việc áp dụng các kiến thức đã học tại trường lớp vào giải quyết vấn đề thực tế. Do chưa có nhiều kinh nghiệm trong việc gia cơng cơ khí, và thiết kế mơ phỏng nên khơng thể tránh khỏi những thiếu sót và hạn chế. Chúng em rất mong có được sự góp ý từ phía thầy cơ để hồn thiện hơn đề tài của nhóm.
5.2. Đánh giá kết quả đạt được.
Một số kết quả đạt được của nhóm trong q trình hồn thiện đồ án:
- Xây dựng thiết kế mơ phỏng hồn thiện vận hành đáp ứng u cầu đặt ra ban đầu của đề tài.
- Xây dựng được sơ đồ khối và lưu đồ thuật toán của hệ thống.
- Ứng dụng thành thạo hơn các kiến thức đã được đào tạo tại trường lớp. Tuy đã đặt được một số kết quả nhất định nhưng nhóm chúng em nhận thấy mơ hình vẫn tồn tại một số hạn chế như:
- Hệ thống có quy mơ nhỏ.
- Thiết kế hệ thống mô phỏng chưa được chỉnh chu do hạn chế kiến thức và kĩ năng của nhóm.
5.3. Hướng phát triển đề tài
Để hồn thiện hơn đề tài nhóm chúng em đề xuất một số phương án phát triển sau:
- Thiết kế mơ hình chun nghiệp hơn.
int objectDistance_cm (byte angle) { srf05.writ e(angle); delay(50 0); unsigned long
duration;//biến đo thời gian int distance;//biến lưu khỏag 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
trig
/*tính tốn thời gian*/
duration = pulseIn(echo,HIGH);//đo độ rộng xung HIGH ở chân echo. ( http://arduino.vn/reference/pulsein )
distance = int(duration/2/29.412);//tính khoảng cách đến vật. //delay(200); return distance;
}
Hàm trạng thái dịch chuyển của Robot
void robotMover (byte inR1, byte inR2, byte inL1, byte inL2, byte action)
{ /*
inR1 inR2 là 2 chân tín hiệu động cơ bên phải
inL1 inL2 là 2 chân tín hiệu động cơ bên trái action= 0 đứng yên action =1 đi thẳng action =2 lùi lại
quaytrái action =4quayphải action =5 rẽ trái action =6 rẽ phải action =7 rẽ lùi trái action =8 rẽ lùi phải */ switch (action) {
case 0:// không di chuyển motorControlNoSpeed(inR1, inR2, 0);
motorControlNoSpeed(inL1, inL2, 0);
case 1://đi thẳng motorControlNoSpeed(inR1, inR2, 1); motorControlNoSpeed(inL1, inL2, 1); break;
case 2:// lùi lại
motorControlNoSpeed(inR1, inR2, 2);
motorControlNoSpeed(inL1, inL2, 2);
break;
case 3:// quay trái
motorControlNoSpeed(inR1, inR2, 1); motorControlNoSpeed(inL1,
inL2, 2); break;
inR2, 2); motorControlNoSpeed(inL1,i nL2,1); break; case 5:// rẽ trái motorControlNoSpeed(inR1, inR2, 1); motorControlNoSpeed(inL1, inL2, 0); break; case 6:// rẽ phải motorControlNoSpeed(inR1, inR2, 0); motorControlNoSpeed(inL1, inL2, 1); break;
inR2, 2);
motorControlNoSpeed(inL1, inL2, 0);
break;
case 8:// rẽ lùi phải
motorControlNoSpeed(inR1, inR2, 0); motorControlNoSpeed(inL1, inL2, 2); break; default: action = 0; } }
Hàm gán tín hiệu điều khiển 2 động cơ
void motorControlNoSpeed (byte in1,byte in2, byte direct) {
// in1 and in2 là 2 chân tín hiệu để điều khiển motor. // tốc độ mặc định là lớn nhất // direct includes: // 0:Dừng // 1:đi theo hƣớng thứ nhất // 2:đi theo hƣớng cịn
khơng quay digitalWrite(in1,L OW); digitalWrite(in2,L OW); break; case 1:// Quay chiều thứ 1 digitalWrite(in1,H IGH); digitalWrite(in2,L OW); break; case 2:// Quay chiều thứ 2 digitalWrite(in1,L OW); digitalWrite(in2,H IGH); break; //default: } }
void objectAvoider (byte inR1, byte inR2, byte inL1, byte inL2, byte allow_distance, int turn_back_time) {robotMover(inR1,inR2,inL1,inL2,1); Serial.println("Tiến"); //delay(10); int front_distance=objectDistance_cm (90); int left_distance; int right_distan ce; int max_distanc e; int sensorValue = digitalRead(10); delay(10); if ((front_distance > allow_distance)&&(sensorValue==0)) { robotMover(inR1,inR2,inL1, inL2,1);
delay(10); } if ((front_distance <= allow_distance)||(sensorValue ==1)) { robotMover(inR1,inR2,inL1,inL2,2); Serial.println("Lùi"); delay(900); robotMover(inR1,inR2,inL1,inL2,0);
left_distance = objectDistance_cm (180); //đo khoảng cách bên trái Serial.println("left: ");
Serial.println(left_distance); delay (3000);
right_distance = objectDistance_cm (0); //đo khoảng cách bên phải Serial.println("right: "); Serial.println(righr_distance); Serial.println("front: "); Serial.println(front_distance; delay (3000);
max_distance = max(left_distance,right_distance);// so sánh giá trị lớn nhất với khoảng cách bên phải (gán bằng cái lớn nhất)
robotMover(inR1,inR2,inL1,inL2,3);// Nếu bên trái là khoảng cách lớn nhất thì rẽ trái Serial.println("Rẽ trái"); delay (turn_back_time/2); } else { if (max_distance==right_distance) {
robotMover(inR1,inR2,inL1,inL2,4);// Nếu bên phải có khoảng cách lớn nhất thì rẽ phải Serial.println(“Rẽ phải”); Delay(turn_back_time/2); } } } }
CHƯƠNG 7 TÀI LIỆU THAM KHẢO
[1] L.Feng, J.Borenstein và H.R.Everett (1994), ” Where am I? Cảm biếns and Methods for Autonomous Mobile Robot Positioning”, The University of Michigan.
[3] Traking of a moving object using ultrasonic cảm biếns based on a virtual ultrasonic image. Youngjoon Han, Moonyong Han, Hyungtate Cha, Mincheol Hong, Hernsoo Hahn. Department of Electronic Engineering, Soogsil University [4] Directed sonar sensing for mobile robot navigation. John J. Leonard. Department of Engineering Science. University of Oxford
[5] Histogramic in-motion mapping for mobile robot obstacle avoidance. J. Borenstein. Department of mechanical engineering and applied mechenics. The university of Michigan.
[6] Mobile robot map building from an advanced sonar array and accurate odometry. Kok seng chong. Institute of microelectronics. Singapore science park II. And Lindsay Kleeman. Department of electrical and computer system engineering.
[7] Keith L. Doty (1999), “Mekatronix Ultrasonic Sonar Transducer Users Manual”, Mekatronix.
[8] http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol4/jmd/
[9] Lương Mạnh Bá, Nguyễn Thanh Thuỷ (2003), ”Nhập môn xử lý ảnh số”, Nhà xuất bản Khoa học và Kỹ thuật.
[10] Trần Hiếu (2005), “Điều khiển bám và tránh vật của robot di động bằng sensor thị giác toàn phương“, Luận văn tốt nghiệp đại học, khoa Điện tử-Viễn