Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
2,21 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ BÁO CÁO ĐỒ ÁN MÔN HỌC Cảm biến chuyển – CT378 GVHD: TS NGUYỄN HỮU CƯỜNG Xe tránh vật cản sử dụng Arduino cảm biến khoảng cách HC-SR04 SINH VIÊN THỰC HIỆN MSSV Nguyễn Minh Trí B1509486 Lâm Văn Đại B1509435 Phạm Đức Qui B1509469 Tháng 5/2018 NỘI DUNG ĐỒ ÁN I GIỚI THIỆU ĐỀ TÀI Tổng quan vấn đề Ngày với tiến nghành khoa học kĩ thuật ứng d ụng cảm biến đóng vai trò quan trọng kĩ thuật điện t ử, giúp t ạo vật dụng thông minh, tiện lợi đầy hữu ít… Cảm biến thiết bị điện tử cảm nhận trạng thái hay trình vật lý hay hóa học mơi trường cần khảo sát, biến đổi thành tín hiệu điện để thu thập thơng tin trạng thái hay q trình Nhóm chúng em tìm hiểu cảm biến siêu âm, cảm biến sử dụng nhiều lĩnh vực : robot, máy đo độ sâu, quét địa hình đáy biển,… với cảm biến, chúng có khả nhận biết mơi trường xung quanh, có nhiều ý nghĩa ngành công nghiệp, th ương m ại, y tế, ứng dụng khoa học phục vụ đời sống người Với phát triển nghành Robot học cảm biến đóng vai trò r ất quan trọng, robot tự hành ngày có khả hoạt động môi tr ường khác nhau, tùy lĩnh vực áp dụng mà chúng có nhiều loại khác nh robot sơn, robot hàn, robot cắt cỏ, robot thám hiểm đại dương, robot làm việc vũ trụ… robot tự hành tiếp tục đưa nh ững thách th ức m ới cho nhà nghiên cứu để đáp ứng nhu cầu ng ười Vấn đ ề robot tự hành làm để robot tự hành có th ể hoạt đ ộng, nh ận biết môi trường thực thi nhiệm vụ đề Việc di chuyển tránh vật cản tác vụ thường thấy robot di đ ộng, môi trường biết trước trước Tác vụ đ ược dùng với nhiệm vụ: tránh chướng ngại vật, theo tường biết trước, theo tường trước Trong phạm vi đồ án , chúng em thi ết k ế mô hình robot gồm bánh xe chủ động phía sau, bánh xe phía tr ước chuyển động tự do, cảm biến siêu âm HC-SR04 để thu khoảng cách tránh vật cản, mạch điều khiển sử dụng Arduino Uno Mục tiêu đề tài Hiểu nguyên lý hoạt động cảm biến khoảng cách HC SR-04 ứng dụng vào mơ hình xe điện tử, để tự tránh vật cản phía trước đường Phần đề tài chúng em mơ hình thành cơng mơ áp dụng vật dụng hay phương tiện để phục vụ cho mục đích người, ví dụ xe tự động láy, xe dò thám… II CƠ SỞ LÝ THUYẾT Cấu tạo, nguyên lý hoạt động 1.1 Khối cảm biến Cảm biến khoảng cách HC-SR04 cảm biến dùng để xác định khoảng cách phạm vi nhỏ cách phát sóng siêu âm Cảm biến với độ xác xác cao (với khoảng cách nhận biết nh ỏ nh ất 3mm) độ ổn định cao trình sử dụng, đồng thời dễ dàng kết nối v ới MCU (Arduino, DSP, AVR, PIC, ARM…) Các ứng dụng thường thấy với cảm biến như: xe tránh vật cản, xác định khoảng cách vật thể đến cảm biến, hay mô làm radar… a) Thông số kỹ thuật : Điện áp làm việc: 5V (DC) Góc quét tốt nhất: 30° Khoảng cách hoạt động: 2cm ~ 450cm Khoảng cách nhận biết nhỏ nhất: 3mm Pinout: - VCC: nguồn cấp cho cảm biến 5V - GND: nối mass - Trigger: pin cho cực phát - Echo: pin cho cực thu b) Nguyên lý hoạt động: Nguyên lý hoạt động module HC-SR04 dựa vào giản đồ thời gian bên Trigger phát sóng siêu âm Echo thu sóng siêu âm phản xạ Đầu tiên cảm biến phát sóng siêu âm với tần số 40khz Nếu có ch ướng ngại vật đường đi, sóng siêu âm phản xạ lại tác động lên module nhận sóng Bằng cách đo thời gian từ lúc phát đến lúc nh ận sóng ta tính khoảng cách từ cảm biến đến chướng ngại v ật Khoảng cách = (thời gian * vận tốc âm (340 m/s) / 1.2 Khối điều khiển 1.2.1 Arduino UNO R3 Arduino UNO R3 cấp nguồn 5V thơng qua cổng USB Nếu cấp nguồn vượt ngưỡng giới hạn làm hỏng Arduino UNO R3 GND (Ground): cực âm nguồn điện cấp cho Arduino UNO Khi bạn dùng thiết bị sử dụng nguồn điện riêng biệt chân phải nối với 5V: cấp điện áp 5V đầu Dòng tối đa cho phép chân 500mA 3.3V: cấp điện áp 3.3V đầu Dòng tối đa cho phép chân 50mA Vin (Voltage Input): Để cấp nguồn cho Arduino UNO, bạn nối cực dương nguồn với chân cực âm nguồn với chân GND IOREF: Điện áp hoạt động vi điều khiển Arduino UNO có th ể đ ược đo chân Nó ln 5V Chú ý bạn không đ ược lấy nguồn 5V từ chân để sử dụng chức khơng phải cấp ngu ồn RESET: Khi nhấn nút Reset board để Reset vi điều khiển t ương đ ương với việc chân Reset nối với GND qua điện trở 10K Ω Các chân vào Arduino Uno R3: Arduino UNO R3 có 14 chân digital dùng để đọc xu ất tín hi ệu Chúng có mức điện áp 0V 5V với dòng vào/ra t ối đa m ỗi chân 40mA Ở chân có điện trở pull-up từ cài đặt vi điều khiển ATmega328 (mặc định điện tr không đ ược kết n ối) Một số chân digital có chức đặc biệt sau: chân Serial (RX) (TX): dùng để gửi (Transmit – TX) nhận (Receive – RX) liệu TTL Serial Arduino Uno có th ể giao ti ếp v ới thiết b ị khác thông qua chân Kết nối bluetooth nói kết nối Serial không dây Nếu không cần giao tiếp Serial bạn không nên s d ụng chân không cần thiết Chân PWM (~): 3, 5, 6, 9, 10, 11: Cho phép bạn xuất xung PWM với độ phân giải 8bit (giá trị từ → 28-1 tương ứng v ới 0V → 5V) b ằng hàm analogWrite() Nói cách đơn giản, bạn điều chỉnh điện áp chân từ mức 0V đến 5V thay cố đ ịnh m ức 0V 5V nh chân khác Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài chức thơng thường, chân dùng để truyền phát d ữ liệu giao thức SPI với thiết bị khác LED 13: Arduino UNO có đèn led màu cam (kí hiệu ch ữ L) Khi bấm nút Reset, bạn thấy đèn nhấp nháy để báo hi ệu Nó đ ược n ối với chân số 13 Khi chân người dùng sử dụng, LED sáng Arduino UNO có chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit để đọc giá trị điện áp khoảng 0V → 5V V ới chân AREF board, bạn để đưa vào điện áp tham chiếu s dụng chân analog Tức bạn cấp điện áp 2.5V vào chân bạn có th ể dùng chân analog để đo điện áp khoảng từ 0V → 2.5V với độ phân giải 10bit Đặc biệt, Arduino UNO có chân A4 (SDA) A5 (SCL) hỗ trợ giao tiếp I2C/TWI với thiết bị khác Module driver L298N IC L298N mạch tích hợp đơn chip có kiểu vỏ công suất 15 chân (multiwatt 15) Là IC mạch cầu đơi (dual full-bridge) có khả hoạt động ện th ế cao, dòng cao Nó thiết kế tương thích chuẩn TTL lái tải c ảm kháng relay, cuộn solenoid, động DC động bước Nó có chân enable (cho phép) phép/không cho phép IC hoạt động, độc lập v ới chân tín hiệu vào Cực phát (emitter) transistor m ỗi m ạch c ầu đ ược nối với nối chân để nối với điện tr cảm ứng dòng c ần Nó có thêm chân cấp nguồn giúp mạch logic hoạt động điện th ể thấp Sơ đồ khối CHỨC NĂNG CÁC CHÂN + Chân 1;15 (Sense A; Sense B): Nối chân qua điện trở cảm ứng dòng xuống GND để điều khiển dòng tải + Chân 2;3 (Out 1; Out 2): Ngõ cầu A Dòng tải mắc hai chân qui định chân + Chân (VS): Chân cấp nguồn cho tầng cơng suất Cần có m ột tụ ện không cảm kháng 100nF nối chân chân GND + Chân 5;7 (Input 1;Input): Chân ngõ vào cầu A, tương thích chu ẩn TTL + Chân 6;11(Enable A; EnableB): Chân ngõ vào enable (cho phép) t ương thích chuẩn TTL Mức thấp chân cấm (disable) ngõ c ầu A (đ ối với chân EnableA) và/hoặc cầu B (đối với chân EnableB) + Chân (GND): Chân đất (Ground) + Chân (VSS): Chân cấp nguồn cho khối logic Cần có tụ ện 100nF n ối chân với GND + Chân 10; 12 (Input 3;Input 4): Các chân logic ngõ vào c ầu B + Chân 13; 14 (Out 3; Out 4): Ngõ cầu B Dòng t ải m ắc gi ữa hai chân qui định chân 15 Thông số kỹ thuật Driver: L298N tích hợp hai mạch cầu H Điện áp điều khiển: +5 V ~ +12 V Dòng tối đa cho cầu H là: 2A (=>2A cho motor) Điện áp tín hiệu điều khiển: +5 V ~ +7 V Dòng tín hiệu điều khiển: ~ 36mA Cơng suất hao phí: 20W (khi nhiệt độ T = 75 ℃) Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃ 1.3 Khối khí 1.3.1.Động giảm tốc bánh xe Động DC giảm tốc vàng loại lựa chọn sử dụng nhiều cho thiết kế Robot đơn giản Thông thường động DC chạy tốc độ kết nối với nguồn điện, kiểm sốt tốc độ hướng động với hỗ trợ mạch điện tử với phương pháp PWM Điều khiển động PWM phương pháp dựa nguyên tắc hoạt động cho động chạy chuỗi xung nhanh chóng mở đóng Điện DC chuyển đổi thành tín hiệu sóng vng (chỉ có hai cấp độ khoảng điện áp hoạt động volt) Tín hiệu sóngvng cho động cơ.Nếu tần số chuyển đổi đủ lớn động chạy tốc độ ổn định phụ thuộc vào trục mô-men xoắn.Với phương pháp PWM, điều chỉnh tốc độ động thông qua điều chế độ rộng xung, tức thời gian "xung đầy đủ" ("on") chuỗi xung vuông cho động Điều chỉnh ảnh hưởng đến công suất trung bình cho động thay đổi cần điều khiển tốc độ động - Thơng số kỹ thuật + Động cơ: • Điện áp hoạt động : v- v DC • Mơmen xoắn cực đại: 800gf cm 1:48 (3V) • Tốc độ khơng tải: 125 rpm (3V) 208 rpm (5V) • Dòng khơng tải: 70 mA (250 mA max) + Bánh xe • Chất liệu: Nhựa • Đường kính bánh xe: 66mm • Đồ dày lốp xe : 6.5mm • Chiều rộng bánh xe : 27mm 1.3.2.Động servo Động servo thiết kế cho hệ thống hồi tiếp vòng kín Tín hiệu động nối với mạch điều khiển Khi đ ộng c quay, vận tốc vị trí hồi tiếp mạch điều khiển Nếu có bầt kỳ lý ngăn cản chuyển động quay động cơ, cấu hồi ti ếp nh ận th tín hiệu chưa đạt vị trí mong muốn Mạch điều khiển tiếp tục ch ỉnh sai lệch cho động đạt điểm xác Cấu tạo: Động Cơ Các mạch điện tử Dây nguồn ( đỏ) Dây tín hiệu ( vàng trắng) Dây âm/ dây nối đất ( mầu đen) Bộ chỉnh điện áp ( chia áp) Trục đầu ra/ Bánh Mặt bích lắp ( ghá) động Servo/ bánh 9 Hộp động Servo 10 Chíp tích hợp điều khiển Thơng số kĩ thuật SG90-9G : •Khối lượng : 9g •Kích thước: 22.2x11.8.32 mm •Momen xoắn: 1.8kg/cm •Tốc độ hoạt động: 60 độ 0.1 giây •Điện áp hoạt động: 4.8V(~5V) •Nhiệt độ hoạt động: ºC – 55 ºC •Có đây, dây nguồn +5V, dây GND, PWM Nguyên lý điều khiển động : Kết nối dây màu đỏ với 5V, dây màu nâu với mass, dây màu cam v ới chân ều khiển tín hiệu vào dây PWM vi điều khiển Ở chân PWM cấp m ột xung t 1ms-2ms (hoặc tuỳ ý) để điều khiển góc quay theo ý muốn Mơ tả góc quay trục động theo độ rộng xung PWM Nguyên lý hoạt động mạch Xe né vật cản robot dựa tín hiệu cảm biến siêu âm Phát xung ngắn (10 microseconds) từ chân Trig sau đócảm biến tạo xung HIGH chân echo nhận sóng phản xạ Từ dộ rộng xung ta biết khoảng cách vật cản Kết hợp với động Servo ta đo khoảng cách vật cản phía trước(0 độ) bên trái (180 độ) bên phải (90độ) so sánh giá trị với giá trị cho giới hạn chọn công việc rẽ phải hay rẽ trái hay thẳng III NỘI DUNG THỰC HIỆN Sơ đồ mạch điện Cấu tạo hệ thống ứng dụng Sơ đồ khối hệ thống Một khung xe robot bánh Một cảm biến siêu âm HC-SR04 giá đỡ Một Broad Arduino UNO R3 Một module driver L298N Một Servo Hai động có gắn bánh xe Dây nối Pin Code 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include //#include "LiquidCrystal_I2C.h" //LiquidCrystal_I2C Serial(0x3F, 16, 2); #define trig //chân trig HC-SR04 #define echo 8//chân echo HC-SR04 Servo sr04; // create servo object to control a servo #define inA1 //Định nghĩa chân in1 động A #define inA2 //Định nghĩa chân in2 động A #define inB1 //Định nghĩa chân in1 động B #define inB2 //Định nghĩa chân in2 động B void setup() { pinMode(inA1, OUTPUT);//Set chân in1 dc A output pinMode(inA2, OUTPUT);//Set chân in2 dc A output pinMode(inB1, OUTPUT);//Set chân in1 dc B output pinMode(inB2, OUTPUT);//Set chân in2 dc B output pinMode(trig, OUTPUT); //chân trig phát tín hiệu pinMode(echo, INPUT); //chân echo nhận tín hiệu Serial.begin(9600); sr04.attach(10); //attach servo chân digital 10 } int khoangcachvatcan_cm (byte x) { sr04.write(x); delay(500); unsigned long thoigian;//biến đo thời gian int khoangcach;//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(10);// xung có độ dài microSeconds digitalWrite(trig, 0); //tắt chân trig /* tính toán thời gian */ thoigian = pulseIn(echo, HIGH); //đo độ rộng xung HIGH chân echo ( http://arduino.vn/reference/pulsein ) 40 khoangcach = int(thoigian / / 29.412); //tính khoảng cách đến vật 41 42 /* in kết Serial monitor */ 43 Serial.print(khoangcach); 44 Serial.println("cm"); 45 //delay(200); 46 return khoangcach; 47 } 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 void chieuquaydongco (byte in1, byte in2, byte huongquay) { // in1 in2 chân dộng // huongquay bao gồm: // 0:Dừng // 1:Quay chiều thứ // 2:Quay chiều thứ switch (huongquay) { case 0:// Dừng không quay digitalWrite(in1, LOW); digitalWrite(in2, LOW); break; case 1:// Quay chiều thứ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); break; case 2:// Quay chiều thứ digitalWrite(in1, LOW); digitalWrite(in2, HIGH); break; //default: } } void robotMover (byte inR1, byte inR2, byte inL1, byte inL2, byte hanhdong) { /* inR1 inR2 chân tín hiệu động bên phải inL1 inL2 chân tín hiệu động bên trái hanhdong= đứng yên hanhdong =1 thẳng hanhdong =2 lùi lại hanhdong =3 rẽ trái hanhdong =4 rẽ phải */ switch (hanhdong) { case 0:// không di chuyển chieuquaydongco(inR1, inR2, 0); chieuquaydongco(inL1, inL2, 0); break; case 1://đi thẳng chieuquaydongco(inR1, inR2, 1); chieuquaydongco(inL1, inL2, 1); break; case 2:// lùi lại chieuquaydongco(inR1, inR2, 2); chieuquaydongco(inL1, inL2, 2); break; 98 case 3:// quay trái 99 chieuquaydongco(inR1, inR2, 1); 100 chieuquaydongco(inL1, inL2, 0); 101 break; 102 case 4:// quay phải 103 chieuquaydongco(inR1, inR2, 0); 104 chieuquaydongco(inL1, inL2, 1); 105 break; 106 default: 107 hanhdong = 0; 108 } 109 } 110 void loop() 111 { 112 objectAvoider (inA1, inA2, inB1, inB2, 40, 1000); 113 } 114 void objectAvoider (byte inR1, byte inR2, byte inL1, byte inL2, byte khoangcach_antoan(), int thoigianchuyenhuong) 115 { 116 int khoangcach_phiatruoc = khoangcachvatcan_cm (90); 117 int khoangcach_trai; 118 int khoangcach_phai; 119 int khoangcach_max; 120 if (khoangcach_phiatruoc > khoangcach_antoan) 121 { 122 robotMover(inR1, inR2, inL1, inL2, 1); 123 Serial.print("Truoc "); 124 Serial.print(khoangcach_phiatruoc); 125 Serial.println(" cm"); 126 Serial.println("Tien Thang"); 127 delay(10); 128 } 129 else if (khoangcach_phiatruoc