THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG ARDUINO

60 2.1K 21
THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG ARDUINO

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Liên Hệ: fb.com/acmasiva Với sự phát triển mạnh mẽ của khoa học công nghệ ngày nay, các loại vi điều khiển (VĐK) như AVR (Advanced Virtual RISC) hay PIC (Programable Intelligent Computer) ngày càng được sử dụng rộng rãi trong công nghiệp cũng như trong nghiên cứu cơ bản. Vi điều khiển họ Arduino xuất hiện vào năm 2005 đã mở ra một hướng đi mới cho vi điều khiển trong rất nhiều lĩnh vực. Trong lĩnh vực điều khiển tự động, đối tượng được điều khiển hoàn toàn tự động thông qua các thiết kế phần cứng gồm mạch điện điều khiển được lập trình theo một ý đồ xác định từ trước. Trong quá trình xây dựng hệ thống, bài toán thiết kế mạch điều khiển là một bài toán nan giải cần có lời giải phù hợp. Trong thời gian gần đây, họ vi điều khiển Arduino nổi lên như một giải pháp cho vấn đề này. Họ vi điều khiển này có mạch điện nhỏ gọn, rất dễ sử dụng và rất đa năng có phần cứng đã được tính hợp nhiều chức năng cơ bản và là mã nguồn mở. Ngoài ra, họ vi điều khiển này sử dụng ngôn ngữ lập trình đơn giản, dễ sử dụng dựa trên nền Java và tương thích với ngôn ngữ C với thư viện rất phong phú. Với những lý do trên, Arduino đã và đang được sử dụng rất rộng rãi, phổ biến hiện nay và hứa hẹn còn phát triển mạnh mẽ trong tương lai. Trong các hệ thống điều khiển tự động, cảm biến là thành phần không thể thiếu đóng vai trò hết sức quan trọng vì nó là thiết bị cung cấp thông tin phản hồi từ bên ngoài cho bộ phận điều khiển trung tâm để đưa ra quyết định phù hợp nhằm nâng cao chất lượng của quá trình điều khiển. Phạm vi ứng dụng của cảm biến ngày càng được mở rộng: từ các hệ thống tự động phức tạp, người máy, kiểm tra chất lượng sản phẩm, tiết kiệm năng lượng, chống ô nhiễm môi trường đến lĩnh vực giao thông vận tải, bảo quản thực phẩm, ô tô, trò chơi điện tử…Một trong các ứng dụng rất rộng rãi và phổ biến đó là cảm biến xác định vị trí và phát hiện dịch chuyển đóng vai trò rất quan trọng đối với hoạt động của nhiều máy móc và công cụ. Cảm biến siêu âm được sử dụng trong quá trình phát hiện và đo khoảng cách đến vật cản bằng sóng siêu âm. Nguyên lý hoạt động dựa trên nguyên lý thu và phát sóng siêu âm: khoảng cách từ cảm biến đến vật cản được xác định căn cứ vào khoảng thời gian giữa hai thời điểm phát và thu sóng siêu âm phản xạ. Đây là nền tảng cho các ứng dụng như phát hiện vị trí, đo vận tốc chuyển động, đo chiều dài vật hay cảnh báo va chạm….Trên cơ sở kiến thức đã được học cùng với sự hiểu biết về cảm biến siêu âm, em đã thực hiện đồ án: “thiết kế hệ thống ra đa siêu âm tự động phát hiện vật cản dựa trên nền tảng arduino” sử dụng họ vi điều khiển Arduino Uno R3 và cảm biến siêu âm SRF04 kết hợp với phần mềm processing để hiển thị vị trí của vật cản lên màn hình máy tính, báo động và lưu thông tin thu thập được lại để xử lý về sau. Nội dung đồ án tập trung vào việc tìm hiểu Arduino Uno R3, Processing, servo, cảm biến siêu âm, xác định khoảng cách và góc định hướng từ cảm biến đến vật cản rồi hiển thị trên màn hình ra đa. Đồ án gồm có bốn chương như sau:Chương 1: Giới thiệu về nền tảng ArduinoChương 2: Giới thiệu về phần mềm ProcessingChương 3: Thiết kế hệ thống ra đa đo khoảng cách bằng sóng siêu âmChương 4: Kết quả thực nghiệm và đánh giá

ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA ĐIỆN TỬ - VIỄN THÔNG  - HỒ ĐỨC NHẬT TRƯỜNG THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG ARDUINO ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Huế - 2016 ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA ĐIỆN TỬ - VIỄN THÔNG  - HỒ ĐỨC NHẬT TRƯỜNG THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG ARDUINO ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Ngành: Công nghệ Kỹ thuật Điện tử, Truyền thông NGƯỜI HƯỚNG DẪN: Th.S PHAN HẢI PHONG Huế - 2016 LỜI CẢM ƠN Trước tiên em xin gửi lời cám ơn chân thành sâu sắc tới thầy cô giáo trường Đại học Khoa Học nói chung thầy cô giáo khoa Điện Tử - Viễn Thông nói riêng tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt thời gian qua Đặc biệt em xin gửi lời cảm ơn đến thầy Phan Hải Phong, thầy tận tình giúp đỡ, trực tiếp bảo, hướng dẫn em suốt trình làm đồ án tốt nghiệp Trong thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà học tập tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, điều cần thiết cho em trình học tập công tác sau Sau xin gửi lời cảm ơn chân thành tới gia đình, bạn bè động viên, đóng góp ý kiến giúp đỡ trình học tập, nghiên cứu hoàn thành đồ án tốt nghiệp Huế, Ngày Tháng Năm 2016 Sinh viên thực (ký ghi rõ họ tên) Hồ Đức Nhật Trường MỤC LỤC DANH SÁCH CÁC HÌNH VẼ DANH SÁCH CÁC BẢNG DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Diễn giải Dịch nghĩa IC Integrated Circuit Vi mạch VĐK Microcontrollers Vi Điều Khiển AVR Advanced Virtual RISC Một họ vi điều khiển hãng Atmel sản xuất I/O Input/Output Vào/ra LED Light Emitting Diode Diode phát quang PIC Programable Intelligent Computer Chip vi xử lý hãng Microchip Technology ARM Advanced RISC Machine Một loại cấu trúc vi xử lý 32 bit 64 bit UART Universal Asynchronous Receiver Transmitter Bộ thu phát vạn không đồng COM Computer Output on Micro Cổng liệu USB Universal Serial Bus Một chuẩn kết nối đa dụng máy tính RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên EEPROM Electrically Erasable Programmable Read-Only Memory Chip nhớ không bay IDE Intergrated Development Environment Môi trường thiết kế hợp PWM Pulse Width Modulation Điều chế theo độ rộng xung SPI Serial Peripheral Interface Giao diện Ngoại vi nối tiếp MỞ ĐẦU Với phát triển mạnh mẽ khoa học công nghệ ngày nay, loại vi điều khiển (VĐK) AVR (Advanced Virtual RISC) hay PIC (Programable Intelligent Computer) ngày sử dụng rộng rãi công nghiệp nghiên cứu Vi điều khiển họ Arduino xuất vào năm 2005 mở hướng cho vi điều khiển nhiều lĩnh vực Trong lĩnh vực điều khiển tự động, đối tượng điều khiển hoàn toàn tự động thông qua thiết kế phần cứng gồm mạch điện điều khiển lập trình theo ý đồ xác định từ trước Trong trình xây dựng hệ thống, toán thiết kế mạch điều khiển toán nan giải cần có lời giải phù hợp Trong thời gian gần đây, họ vi điều khiển Arduino lên giải pháp cho vấn đề Họ vi điều khiển có mạch điện nhỏ gọn, dễ sử dụng đa có phần cứng tính hợp nhiều chức mã nguồn mở Ngoài ra, họ vi điều khiển sử dụng ngôn ngữ lập trình đơn giản, dễ sử dụng dựa Java tương thích với ngôn ngữ C với thư viện phong phú Với lý trên, Arduino sử dụng rộng rãi, phổ biến hứa hẹn phát triển mạnh mẽ tương lai Trong hệ thống điều khiển tự động, cảm biến thành phần thiếu đóng vai trò quan trọng thiết bị cung cấp thông tin phản hồi từ bên cho phận điều khiển trung tâm để đưa định phù hợp nhằm nâng cao chất lượng trình điều khiển Phạm vi ứng dụng cảm biến ngày mở rộng: từ hệ thống tự động phức tạp, người máy, kiểm tra chất lượng sản phẩm, tiết kiệm lượng, chống ô nhiễm môi trường đến lĩnh vực giao thông vận tải, bảo quản thực phẩm, ô tô, trò chơi điện tử…Một ứng dụng rộng rãi phổ biến cảm biến xác định vị trí phát dịch chuyển đóng vai trò quan trọng hoạt động nhiều máy móc công cụ Cảm biến siêu âm sử dụng trình phát đo khoảng cách đến vật cản sóng siêu âm Nguyên lý hoạt động dựa nguyên lý thu phát sóng siêu âm: khoảng cách từ cảm biến đến vật cản xác định vào khoảng thời gian hai thời điểm phát thu sóng siêu âm phản xạ Đây tảng cho ứng dụng phát vị trí, đo vận tốc chuyển động, đo chiều dài vật hay cảnh báo va chạm… Trên sở kiến thức học với hiểu biết cảm biến siêu âm, em thực đồ án: “thiết kế hệ thống đa siêu âm tự động phát vật cản dựa tảng arduino” sử dụng họ vi điều khiển Arduino Uno R3 cảm biến siêu âm SRF04 kết hợp với phần mềm processing để hiển thị vị trí vật cản lên hình 10 máy tính, báo động lưu thông tin thu thập lại để xử lý sau Nội dung đồ án tập trung vào việc tìm hiểu Arduino Uno R3, Processing, servo, cảm biến siêu âm, xác định khoảng cách góc định hướng từ cảm biến đến vật cản hiển thị hình đa Đồ án gồm có bốn chương sau: Chương 1: Giới thiệu tảng Arduino Chương 2: Giới thiệu phần mềm Processing Chương 3: Thiết kế hệ thống đa đo khoảng cách sóng siêu âm Chương 4: Kết thực nghiệm đánh giá 46 phạm vi hình đa) trả 120 lưu vào biến distance Cuối gởi biến sang Processing để tiếp tục xử lý  Processing: Khi khởi động chương trình, Servo trả vị trí 0 hoạt động bình thường Processing tạo hình đa với kích thước 1280x700px sau nhận thông tin từ Aruino gởi tới lưu vào biến iDistance iAngle Từ thông số thu tiến hành tính toán hiển thị chúng lên hình đa Tiếp tục kiểm tra, iDistance nhỏ 120 phát đoạn âm lưu sẵn máy (ở tiếng beeb) Cuối lưu biến vào file excel tạo trước 47 CHƯƠNG KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ 1.10 Kết thực nghiệm Sau hoàn thành xong hệ thống, xác định khoảng cách, góc vật cản so với cảm biến siêu âm hiển hình máy tính Xuất file excel để lưu trữ thông tin Hình Phát vật thể góc 900 cách 100cm Hình Phát vật thể góc 900 cách 50cm 48 Hình Khi vật cản nằm phạm vi đa Hình Số liệu đo lưu file excel (vật cản 50cm) 49 Hình Biểu đồ tạo từ số liệu thu (vật cản 50cm) Qua khảo sát mô hình thực tế thấy hệ thống hoạt động tương đối xác Khoảng cách đo tính từ vật thể đến trước cảm biến 2cm phạm vi 2cm cảm biến tác dụng Trong trình thử nghiệm, hệ thống chịu tác động môi trường bên nên tạo sai số không mong muốn nhìn vào biểu đồ hình 4.5 thấy rõ vị trí vật cản phạm vi mà đa quét điểm tập trung thành cụm Cụm điểm lớn, vật cản lớn ngược lại Những điểm riêng lẻ nhiễu không mong muốn môi trường bên 1.11 Hạn chế Tuy nhiên mặt hạn chế thiết bị tác động môi trường tạo nên tín hiệu nhiễu không mong muốn nên hệ thống chưa xác cách tuyệt đối, với vật thể nhỏ xa sai số nhiều, phạm vi quét gần Tốc độ xử lý chưa thật cao điều kiện kỹ thuật thiết bị cách thức lập trình Chưa có điều kiện thử nghiệm hệ thống môi trường có mật độ tính chất đặc thù môi trường khí ga, môi trường có độ ẩm cao Vật thể sử dụng chưa có hình thù đặc biệt tròn hay có bề mặt không trơn nhẵn Ngoài khoảng cách so sánh chưa đặt trường hợp có phần thập phân để tăng độ xác 50 1.12 Kết luận Qua trình hoàn thiện đồ án tốt nghiệp em tích góp số kinh nghiệm làm việc với arduino, tìm hiểu sử dụng phần mềm processing Việc tiếp cận với dễ dàng nhờ tảng học tập trường, giúp củng cố kiến thức tăng khả tư giúp ích cho công việc sau Cụ thể qua đồ án em đạt kết như:  Tìm hiểu nguyên lý hoạt động cảm biến siêu âm SRF05 ứng dụng đo khoảng cách  Tìm hiểu cấu trúc họ vi điều khiển Arduino phương pháp lập trình  Tìm hiểu lập trình Processing  Tìm hiểu cách thức kết nối Arduino máy tính  Xác định thành công vị trí vật trể phạm vi quét đa đưa thông số khoảng cách, tính từ đa lưu chúng lại để lưu trữ xử lý thống kê,… 1.13 Phương hướng phát triển đề tài Vì mô hình xây dựng quy mô nhỏ ứng dụng trực tiếp vào thực tế mô tả gần đầy đủ cách thức hoạt động đa thực tế Tuy nhiên để hệ thống hoàn thiện cần phải thử nghiệm họ vi điều khiển Arduino khác Arduino Intel Gallileo hay Intel Leonardo để tăng tốc độ xử lý Cũng sử dụng cảm biến khác có độ nhạy khả đo cao Qua cải thiện độ xác khoảng cách phạm vi đa Dựa đồ án kết hợp với thiết bị phù hợp phát triển thêm để áp dụng vào thực tế việc gắn vào robo thăm dò địa hình, hệ thống chống trộm, giám sát tự động, định vị vật thể khoảng không gian định gắn hệ thống,… Trong trình làm đề tài này, em tự nhận thấy đề tài nhiều thiếu sót hạn chế Em mong ủng hộ giúp đỡ thầy giáo để đề tài em hoàn thiện hơn, có thêm nhiều cải tiến hữu ích để đề tài ứng dụng tốt vào thực tiễn Một lần em xin chân thành cám ơn 51 TÀI LIỆU THAM KHẢO Casey Reas, Ben Fry Processing The MIT Press, December 2014 trang 720 Greenberg, Ira Processing: Creative Coding and Computational Art Friends of Ed, 2007 trang 840 Margolis, Michael Arduino Cookbook O’Reilly Media, 2011 trang 637 Banzi, Massimo Getting Started with Arduino O’Reilly Media, 2011 trang 130 Casey Reas, Ben Fry Getting Started with Processing O’Reilly Media, 2010 trang 209 Shiffman, Daniel Learning Processing Morgan Kaufmann, August 2015 trang 472 Casey Reas, Ben Fry Make: Getting Started with Processing Maker Media, 2015 trang 238 52 PHỤ LỤC // -Code cho Arduino #include const int trigPin = 7; const int echoPin = 8; long duration; int distance; Servo myServo; int pos = 0; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); myServo.attach(9); Serial.begin(9600); } void loop() { for(pos = 0; pos < 180; pos++) { myServo.write(pos); delay(60); distance = calculateDistance(); Serial.print(pos); Serial.print(","); 53 Serial.print(distance); Serial.print("."); } for(pos = 180; pos >= 1; pos ) { myServo.write(pos); delay(60); distance = calculateDistance(); Serial.print(pos); Serial.print(","); Serial.print(distance); Serial.print("."); } } int calculateDistance(){ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration/2/29.412; if(distance > 120) { distance = 120; } 54 return distance; } // -END - // Code cho Processing import processing.sound.*; import processing.serial.*; import java.awt.event.KeyEvent; import java.io.IOException; Serial myPort; SoundFile song; Table table; String angle = ""; String distance = ""; String noObject; String data=""; float pixsDistance; int iAngle, iDistance; int index1 = 0; int index2 = 0; float khoang_cach; float goc; PFont orcFont; PImage img; 55 PImage info; void setup() { size(1280, 700); song =new SoundFile(this, "beep-08b.mp3"); song.play(); table = new Table(); table.addColumn("KhoangCach"); table.addColumn("Goc"); img = loadImage("LOGO_2.png"); info = loadImage("info.png"); smooth(); myPort = new Serial(this, "COM3", 9600); myPort.bufferUntil('.'); orcFont = loadFont("Dialog.plain-30.vlw"); } void draw() { fill(98, 245, 31); textFont(orcFont); noStroke(); fill(0, 10); rect(0, 0, width, 700); fill(#FEFEFE); image(img, 1130, 10); 56 image(info, 0, 10); drawLine(); drawRadar(); drawObject(); drawText(); } void serialEvent (Serial myPort) { data = myPort.readStringUntil('.'); data = data.substring(0, data.length()-1); index1 = data.indexOf(","); angle = data.substring(0, index1); distance = data.substring(index1 + 1, data.length()); iAngle = int(angle); iDistance = int(distance); } void drawLine() { pushMatrix(); strokeWeight(2); stroke(#C42C24); noFill(); line(640, 650, 640 - 600*cos(radians(iAngle)), 650 - 600*sin(radians(iAngle))); popMatrix(); } 57 void drawObject() { pushMatrix(); strokeWeight(5); stroke(#009EA5); noFill(); pixsDistance = iDistance*5; if(iDistance < 120){ song.play(); TableRow newRow = table.addRow(); newRow.setInt("KhoangCach", iDistance); newRow.setInt("Goc", iAngle); saveTable(table, "data/siva.csv"); line(640 - pixsDistance*cos(radians(iAngle)), 650 pixsDistance*sin(radians(iAngle)), 640 - 600*cos(radians(iAngle)), 650 600*sin(radians(iAngle))); } else { iDistance = 120; line(640 - pixsDistance*cos(radians(iAngle)), 650 pixsDistance*sin(radians(iAngle)), 640 - 600*cos(radians(iAngle)), 650 600*sin(radians(iAngle))); } popMatrix(); } 58 void drawRadar() { pushMatrix(); stroke(#60AA45); noFill(); strokeWeight(2); arc(640, 650, 1200, 1200, radians(180), radians(360)); arc(640, 650, 1000, 1000, radians(180), radians(360)); arc(640, 650, 800, 800, radians(180), radians(360)); arc(640, 650, 600, 600, radians(180), radians(360)); arc(640, 650, 400, 400, radians(180), radians(360)); arc(640, 650, 200, 200, radians(180), radians(360)); line(0, 650, 1280, 650); line(640, 650, 640 - 600*cos(radians(30)), 650 - 600*sin(radians(30))); line(640, 650, 640 - 600*cos(radians(60)), 650 - 600*sin(radians(60))); line(640, 650, 640 - 600*cos(radians(90)), 650 - 600*sin(radians(90))); line(640, 650, 640 - 600*cos(radians(120)), 650 - 600*sin(radians(120))); line(640, 650, 640 - 600*cos(radians(150)), 650 - 600*sin(radians(150))); popMatrix(); } void drawText() { pushMatrix(); textSize(20); 59 //stroke(#FEFEFE); khoang_cach = 0.2*(sqrt(pow(650 - mouseY, 2) + pow(640 - mouseX, 2))); if( khoang_cach > 120 ) { khoang_cach = 120; } text(khoang_cach +" cm", 130, 27); text(iDistance + " cm", 130, 117); goc = asin ((650 - mouseY) / (sqrt(pow(650 - mouseY, 2) + pow(640 - mouseX, 2)))); if(mouseX > 640) { goc = PI - goc; } text(degrees(goc) +"°", 55, 63); text(iAngle +"°", 55, 155); text("0°", 20, 645); text("30°", 90, 350); text("60°", 320, 115); text("90°", 631, 36); text("120°", 940, 115); text("150°", 1175, 350); text("180°", 1241, 645); 60 text("0", 635, 675); text("20", 730, 675); text("40", 825, 675); text("60", 925, 675); text("80", 1025, 675); text("100", 1125, 675); text("120", 1225, 675); text("20", 530, 675); text("40", 425, 675); text("60", 325, 675); text("80", 225, 675); text("100", 125, 675); text("120", 25, 675); popMatrix(); } END ...ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA ĐIỆN TỬ - VIỄN THÔNG  - HỒ ĐỨC NHẬT TRƯỜNG THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG PHÁT HIỆN VẬT... cứu hoàn thành đồ án tốt nghiệp Huế, Ngày Tháng Năm 2016 Sinh viên thực (ký ghi rõ họ tên) Hồ Đức Nhật Trường MỤC LỤC DANH SÁCH CÁC HÌNH VẼ DANH SÁCH CÁC BẢNG DANH MỤC CÁC TỪ VIẾT TẮT Từ viết... thiết kế 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 quay, vận tốc vị trí hồi tiếp mạch điều khiển Nếu có lý ngăn cản chuyển động quay động cơ, cấu hồi tiếp nhận thấy

Ngày đăng: 14/03/2017, 23:25

Mục lục

  • CHƯƠNG 1 GIỚI THIỆU VỀ NỀN TẢNG ARDUINO

  • CHƯƠNG 2 GIỚI THIỆU VỀ PHẦN MỀM PROCESSING

  • CHƯƠNG 3 THIẾT KẾ HỆ THỐNG RA ĐA ĐO KHOẢNG CÁCH BẰNG SÓNG SIÊU ÂM

  • CHƯƠNG 4 KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ

Tài liệu cùng người dùng

Tài liệu liên quan