Đồ án tốt nghiệp một trong những học phần bắt buộc cúa sinh viên ngành Cơ điện tử nói riêng cũng như sinh viên các ngành kỹ thuật nói chung Qua những kiến thức đã học từ các thầy cô nhóm đồ án đã áp dụng các kiến thức đã học vào thực tế với đồ án tốt nghiệp Nền nông nghiệp nước ta đang phát triển theo hướng hiện đại hóa nên ứng dụng khoa học kỹ thuật vào quá trình sản xuất giúp tăng năng suất cây trồng nên số lượng nông sản ngày càng nhiều mà công việc rửa và phân loại còn thủ công nên năng suất thấp tốn nhân lực nhiều Từ đó các hệ thống rửa và phân loại trái cây tự động đang được nghiên cứu chế tạo để áp dụng vào thực tiễn Chính vì vậy nhóm đồ án đã chọn đề tài là Thiết kế và chế tạo hệ thống rửa và phân loại trái cây ứng dụng công nghệ xử lý ảnh giúp cho quá trình rửa và phân loại trái cây sau khi thu hoạch được nhanh chóng chính xác từ đó giúp tăng năng xuất và hiệu quả kinh tế
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO HỆ THỐNG RỬA VÀ PHÂN LOẠI TRÁI CÂY ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH Người hướng dẫn: Sinh viên thực hiện: Số thẻ sinh viên : Lớp: TS VÕ NHƯ THÀNH HỒNG TRỌNG TÍN PHẠM DUY THƠNG 101130221 101130219 13CDT2 Đà Nẵng, 2018 TĨM TẮT ĐỒ ÁN TỐT NGHIỆP Tên đề tài : THIẾT KẾ VÀ CHẾ TẠO HỆ THỐNG RỬA VÀ PHÂN LOẠI TRÁI CÂY ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH Họ tên SV MSSV : Hồng Trọng Tín : 101130221 Lớp Họ tên SV : 13CDT2 : Phạm Duy Thông MSSV Lớp GV hướng dẫn : 101130219 : 13CDT2 : T.S Võ Như Thành GV duyệt : T.S Đặng Phước Vinh Nội dung bao gồm vấn đề: Nhu cầu thực tế đề tài: Đồ án tốt nghiệp học phần bắt buộc cúa sinh viên ngành Cơ điện tử nói riêng sinh viên ngành kỹ thuật nói chung Qua kiến thức học từ thầy cơ, nhóm đồ án áp dụng kiến thức học vào thực tế với đồ án tốt nghiệp Nền nông nghiệp nước ta phát triển theo hướng đại hóa nên ứng dụng khoa học kỹ thuật vào trình sản xuất, giúp tăng suất trồng nên số lượng nông sản ngày nhiều mà công việc rửa phân loại cịn thủ cơng nên suất thấp, tốn nhân lực nhiều Từ đó, hệ thống rửa phân loại trái tự động nghiên cứu, chế tạo để áp dụng vào thực tiễn Chính vậy, nhóm đồ án chọn đề tài “Thiết kế chế tạo hệ thống rửa phân loại trái ứng dụng công nghệ xử lý ảnh” giúp cho trình rửa phân loại trái sau thu hoạch nhanh chóng, xác từ giúp tăng xuất hiệu kinh tế Phạm vi nghiên cứu đề tài tốt nghiệp: Trong đề tài nhóm đồ án thiết kế cấu cho hệ thống, tìm hiểu phương pháp điều khiển để đưa phương án tối ưu Từ chế tạo nên hệ thống hoàn chỉnh với phần: - Tính tốn, thiết kế cấu hệ thống - Tính tốn, thiết kế mạch điều khiển cho hệ thống - Thiết kế chế tạo hệ thống Nội dung đề tài thực hiện: - Thuyết minh - Bản vẽ: vẽ A0 - Hệ thống rửa phân loại trái ứng dụng công nghệ xử lý ảnh Kết đạt được: - Tìm hiểu tổng quan hệ thống rửa phân loại trái cây, tính cấp thiết ứng dụng để tài - Giới thiệu số phương án thiết kế cho toàn hệ thống - Chọn lựa, tính tốn cấu hệ thống - Thiết kế chế tạo mạch điều khiển - Tìm hiểu công nghệ xử lý ảnh ứng dụng vào hệ thống - Thiết kế chế tạo thành công hệ thống rửa phân loại trái ứng dụng công nghệ xử lý ảnh ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ CỘNG HỊA XÃ HÔI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TT Họ tên sinh viên Số thẻ SV Hoàng Trọng Tín Phạm Duy Thơng 101130221 101130219 Lớp 13CDT2 13CDT2 Ngành CƠ ĐIỆN TỬ CƠ ĐIỆN TỬ Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO HỆ THỐNG RỬA VÀ PHÂN LOẠI TRÁI CÂY ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: Nội dung phần thuyết minh tính toán: a Phần chung: TT Họ tên sinh viên Nội dung Hồng Trọng Tín - Phạm Duy Thơng - b Phần riêng TT Họ tên sinh viên Hồng Trọng Tín - Tìm hiểu số hệ thống rửa phân loại trái thực tế đưa ý tưởng để thiết kế Đưa nguyên lí, lựa chọn cấu phù hợp để thiết kế Tìm hiểu cơng nghệ xử lý ảnh Chế tạo hệ thống - Nội dung Tính tốn, thiết kế mạch điều khiển Code điều khiển xử lý ảnh - Tính tốn cấu - Thiêt kế hệ thống soildworks - Hoàn thiện thuyết minh Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): a Phần chung: TT Phạm Duy Thơng Họ tên sinh viên Hồng Trọng Tín Phạm Duy Thơng b Phần riêng: Nội dung - Bản vẽ kết cấu tổng thể 1A0 TT Họ tên sinh viên Hồng Trọng Tín - Bản vẽ sơ đồ động Bản vẽ sơ đồ mạch Phạm Duy Thông - Bản vẽ kết cấu băng chuyền 1A0 Bản vẽ kết cấu cấu rửa 1A0 Bản vẽ kết cấu băng chuyền xử lý ảnh 1A0 Bản vẽ lắp ghép 1A0 Nội dung 1A0 1A0 Họ tên người hướng dẫn: T.S Võ Như Thành Ngày giao nhiệm vụ đồ án: 5/2/2018 Ngày hoàn thành đồ án: 25/5/ 2018 Đà Nẵng, ngày tháng năm 2018 Trưởng Bộ môn Kỹ thuật Người hướng dẫn Cơ điện tử LỜI NÓI ĐẦU Chúng em xin gởi lời cảm ơn chân thành tri ân sâu sắc với thầy khoa Cơ khí mơn Cơ điện tử trường Đại Học Bách Khoa, Đại Học Đà Nẵng năm qua tận tình dạy dỗ, truyền đạt cho chúng em kiến thức quý báu để chúng em hồn thành đề tài tốt nghiệp tảng cho công việc sau tốt nghiệp Chúng em xin chân thành cảm ơn thầy T.S Võ Như Thành tận tình hướng dẫn, bảo chúng em suốt trình làm đề tài để nhóm hồn thành tốt đề tài Mặc dù hướng dẫn nhiệt tình thầy cơ, kiến thức cịn hạn chế, kinh nghiệm chưa nhiều, tài liệu phục vụ cho thực đề tài cịn nên khơng tránh khỏi sai sót Nhóm mong thầy bạn góp ý để đề tài hồn thiện Một lần cho phép chúng em gửi đến q thầy bạn lịng biết ơn sâu sắc Đà Nẵng, ngày tháng năm 2018 Nhóm sinh viên thực Hồng Trọng Tín i Phạm Duy Thơng LỜI CAM ĐOAN Kính gửi: - Trường Đại Học Bách Khoa Đà Nẵng - Khoa Cơ khí Nhóm đồ án xin cam đoan: Đồ án tốt nghiệp với đề tài “Thiết kế chế tạo hệ thống rửa phân loại trái ứng dụng công nghệ xử lý ảnh” cơng trình nghiên cứu nhóm, khơng chép đồ án hay cơng trình có trước Mọi giúp đỡ cho việc thực đồ án cảm ơn, thông tin trích dẫn đồ án ghi rõ nguồn gốc phép cơng bố Nhóm sinh viên thực hiên Hồng Trọng Tín ii Phạm Duy Thơng MỤC LỤC Tóm tắt đồ án tốt nghiệp Nhiệm vụ đồ án tốt nghiệp Lời nói đầu i Lời cam đoan ii Mục lục iii Danh sách bảng, hình vẽ vi Trang MỞ ĐẦU Chương 1: GIỚI THIỆU TỔNG QUAN VỀ HỆ THỐNG RỬA VÀ PHÂN LOẠI TRÁI CÂY VÀ TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1.1 Tổng quan tình hình thực tế hệ thống rửa phân loại trái 1.1.1 Sự cần thiết tự động hóa hoạt động sản xuất nông nghiệp 1.1.2 Sự cần thiết phải tự động hóa trình rửa phân loại trái 1.1.3 Tình hình thực tế 1.2 Tính cấp thiết ưu điểm đề tài 1.2.1 Phân tích tính cấp thiết đề tài 1.2.2 Phân tích ưu điểm đề tài 1.3 Ý tưởng thiết kế Chương 2: PHÂN TÍCH, LỰA CHỌN NGUYÊN LÍ HOẠT ĐỘNG CỦA HỆ THỐNG 2.1 Phận tích hoạt động rửa phân loại trái 2.1.1 Các hoạt động rửa phân loại hộ sản xuất, nhà máy 2.1.2 Các cấu đồ án 2.1.3 Phạm vi đồ án 2.2 Các yêu cầu thiết kế hệ thống 2.2.1 Sơ đồ nguyên lý hệ thống 2.2.2 Các chuyển động hệ thống 2.2.3 Các yêu cầu thiết kế iii 2.3 Phân tích lựa chọn phương án thiết kế cho phận 2.3.1 Lựa chọn phương án thiết kế cho phận vận chuyển 2.3.2 Lựa chọn phương án thiết kế cho phận rửa 12 2.2.3 Lựa chọn phương án thiết kế cho phận băng chuyền sử lý ảnh 14 2.2.4 Lựa chọn phương án thiết kế cho phận phân loại 15 2.3 Lựa chọn cấu truyền động cho băng tải 17 2.3.1 Phương án sử dụng truyền đai: 17 2.3.2 Phương án sử dụng truyền xích 18 Chương 3: TÍNH TỐN VÀ THIẾT KẾ CÁC CƠ CẤU 20 3.1 Các thông số đầu vào hệ thống 20 3.2 Tính chọn băng chuyền vận chuyển 20 3.2.1 Số liệu ban đầu 21 3.2.2 Tính chọn động truyền động 21 3.2.3 Tính tốn thiết kế băng chuyền vận chuyển 22 3.3 Tính cơng suất truyền động cấu rửa trái 24 Chương 4: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 26 4.1 Sơ đồ khối hệ thống 26 4.2 Phân tích lựa chọn phận xử lý 27 4.2.1 Tổng quan điều khiển thực tế 27 4.2.2 Giới thiệu Arduino UNO R3 31 4.3 Lựa chọn thiết bị, mạch liên quan 32 4.3.1 Nguồn điện 32 4.3.2 Mạch điều khiển hệ thống đèn chiếu sáng 33 4.3.3 Mạch Arduino mạch điều khiển cấu phân loại sản phẩm 34 4.3.4 Mạch điều khiển động DC 35 4.3.5 Mạch nguyên lý toàn hệ thống: 37 Chương 5: CHƯƠNG TRÌNH ĐIỀU KHIỂN 38 5.1 Lưu đồ thuật toán 38 iv 5.2 Xử lý ảnh 39 5.2.1 Tổng quan xử lý ảnh 39 5.2.2 Xử lý ảnh đề tài 44 5.3 Giao tiếp máy tính Arduino 48 5.3.1 Giới thiệu giao tiếp Serial Arduino 48 5.3.2 Quá trình giao tiếp Arduino máy tính 48 5.4 Giao diện làm việc phần mềm 49 5.4.1 Thiết kế giao diện 49 5.4.2 Giao diện làm việc 51 Chương 6: THIẾT KẾ VÀ CHẾ TẠO HỆ THỐNG 53 6.1 Thiết kế chế tạo hệ thống 53 6.1.1 Yêu cầu đặt cho hệ thống 53 6.1.2 Chế tạo phần khí hệ thống 54 6.1.3 Thiết kế chế tạo mạch điều khiển 55 6.2 Chương trình điều khiển 56 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC v Dat += 1; } else { Lbl_StatusA.Text = "Đóng";// //KDat += 1; } A_Ready = false; TimerA_Open.Interval = timer_Open; TimerA_Open.Enabled = true; } if (X == "B") { PicBox_B.Image = Crop_Img.ToBitmap(); if (proportion > 60) { Lbl_StatusB.Text = "Mở"; Dat += 1; } else { Lbl_StatusB.Text = "Đóng";// } B_Ready = false; TimerB_Open.Interval = timer_Open; TimerB_Open.Enabled = true; } if (X == "C") { PicBox_C.Image = Crop_Img.ToBitmap(); if (proportion > 60) { Lbl_StatusC.Text = "Mở"; Dat += 1; } else { Lbl_StatusC.Text = "Đóng";// } C_Ready = false; TimerC_Open.Interval = timer_Open; TimerC_Open.Enabled = true; } } private void Form1_Load(object sender, EventArgs e) { PictureBox_DHBK.Image = new Image(@"D:\DO AN TOT NGHIEP\PHAN_LOAI_TRAI_CAY\IMG111.PNG").ToBitmap(); string[] Comlist = SerialPort.GetPortNames(); Array.Sort(Comlist); Cbx_ComList.Items.AddRange(Comlist); Txt_Motor1.Text = v1.ToString(); Trackbar_Motor1.Value = v1; Txt_Motor2.Text = v2.ToString(); Trackbar_Motor2.Value = v2; } private void Btn_Connect_Click(object sender, EventArgs e) { if (Cbx_ComList.Text == "") { MessageBox.Show("Select COM Gate", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { if (SerialPort.IsOpen) { SerialPort.Close(); Btn_Connect.Text = "Kết nối"; Cbx_ComList.Enabled = true; Gbx_Control.Enabled = false; } else { try { SerialPort.PortName = Cbx_ComList.Text; SerialPort.Open(); Btn_Connect.Text = "Ngắt kết nối"; Cbx_ComList.Enabled = false; Gbx_Control.Enabled = true; } catch { MessageBox.Show("Can not open Gate" + SerialPort.PortName, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } private void Btn_Update_Click(object sender, EventArgs e) { if (Cbx_ComList.Text != "") { if (SerialPort.IsOpen) { SerialPort.Write("p"); SerialPort.Close(); } Application.Exit(); } else MessageBox.Show("Can not open Gate" + SerialPort.PortName, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } private void Btn_Start_Click(object sender, EventArgs e) { if (Btn_Start.Text == "Khởi động") { if (capture == null) { capture = new Capture(0); capture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth, 1080); capture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight, 720); } capture.ImageGrabbed += Capture_ImageGrabbed1; capture.Start(); Application.Idle += new EventHandler(Show); { TimerA_Open.Enabled = false; TimerB_Open.Enabled = false; TimerC_Open.Enabled = false; TimerA_Close.Enabled = false; TimerB_Close.Enabled = false; TimerC_Close.Enabled = false; ChkBox_Motor1.Checked = false; Trackbar_Motor1.Enabled = false; ChkBox_Motor2.Checked = false; Trackbar_Motor2.Enabled = false; ChkBox_Motor3.Checked = false; ChkBox_Motor4.Checked = false; ChkBox_Light.Checked = false; } Btn_Start.Text = "Dừng"; Gbx_Connect.Enabled = false; if (Cbx_ComList.Text != "") { SerialPort.Write("s"); } else MessageBox.Show("Can not open Gate" + SerialPort.PortName, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { capture.Stop(); Application.Idle -= new EventHandler(Show); Btn_Start.Text = "Khởi động"; Gbx_Connect.Enabled = true; if (Cbx_ComList.Text != "") { SerialPort.Write("p"); } else MessageBox.Show("Can not open Gate" + SerialPort.PortName, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Capture_ImageGrabbed1(object sender, EventArgs e) { try { Mat m = new Mat(); capture.Retrieve(m); PicBox_Input.Image = m.ToImage().Bitmap; } catch (Exception) { } } private void Capture_ImageGrabbed(object sender, EventArgs e) { } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (SerialPort.IsOpen) { SerialPort.Write("p"); SerialPort.Close(); } } private void Trackbar_Motor1_Scroll(object sender, EventArgs e) { Txt_Motor1.Text = Trackbar_Motor1.Value.ToString(); v1 = Trackbar_Motor1.Value; SerialPort.Write(v1.ToString());//v6 } private void Txt_Motor1_TextChanged(object sender, EventArgs e) { v1 = Convert.ToInt32(Txt_Motor1.Text.ToString()); if (v1 = 9) v1 = 9; Trackbar_Motor1.Value = v1; } private void Trackbar_Motor2_Scroll(object sender, EventArgs e) { Txt_Motor2.Text = Trackbar_Motor2.Value.ToString(); v2 = Trackbar_Motor2.Value; SerialPort.Write((v2 - 5).ToString());//v11 } private void Txt_Motor2_TextChanged(object sender, EventArgs e) { v2 = Convert.ToInt32(Txt_Motor2.Text.ToString()); if (v2 = 9) v2 = 9; Trackbar_Motor2.Value = v2; } private void TimerA_Open_Tick(object sender, EventArgs e) { PicBox_A.Image = null; if (Lbl_StatusA.Text == "Mở") { SerialPort.Write("a");///// TimerA_Close.Interval = timer_Close; TimerA_Close.Enabled = true; } Lbl_StatusA.Text = "Đóng"; A_Ready = true; TimerA_Open.Enabled = false; } private void TimerB_Open_Tick(object sender, EventArgs e) { PicBox_B.Image = null; if (Lbl_StatusB.Text == "Mở") { SerialPort.Write("b");///// TimerB_Close.Interval = timer_Close; TimerB_Close.Enabled = true; } Lbl_StatusB.Text = "Đóng"; B_Ready = true; TimerB_Open.Enabled = false; } private void TimerC_Open_Tick(object sender, EventArgs e) { PicBox_C.Image = null; if (Lbl_StatusC.Text == "Mở") { SerialPort.Write("c");///// TimerC_Close.Interval = timer_Close; TimerC_Close.Enabled = true; } Lbl_StatusC.Text = "Đóng"; C_Ready = true; TimerC_Open.Enabled = false; } private void TimerA_Close_Tick(object sender, EventArgs e) { SerialPort.Write("A"); TimerA_Close.Enabled = false; } private void TimerB_Close_Tick(object sender, EventArgs e) { SerialPort.Write("B"); TimerB_Close.Enabled = false; } private void TimerC_Close_Tick(object sender, EventArgs e) { SerialPort.Write("C"); TimerC_Close.Enabled = false; } private void button1_Click(object sender, EventArgs e) { SerialPort.Write("15"); } private void ChkBox_Motor1_CheckedChanged(object sender, EventArgs e) { if (ChkBox_Motor1.Checked == false) { Trackbar_Motor1.Enabled = false; Txt_Motor1.Enabled = false; SerialPort.Write("d");//Tat dc } else { Trackbar_Motor1.Enabled = true; Txt_Motor1.Enabled = true; SerialPort.Write(v1.ToString());//v6 } } private void ChkBox_Motor2_CheckedChanged(object sender, EventArgs e) { if (ChkBox_Motor2.Checked == false) { Trackbar_Motor2.Enabled = false; Txt_Motor2.Enabled = false; SerialPort.Write("e");//Tat dc } else { Trackbar_Motor2.Enabled = true; Txt_Motor2.Enabled = true; SerialPort.Write((v2 - 5).ToString());//v11 } } private void ChkBox_Motor3_CheckedChanged(object sender, EventArgs e) { if (ChkBox_Motor3.Checked == false) SerialPort.Write("f"); else SerialPort.Write("F"); } private void ChkBox_Motor4_CheckedChanged(object sender, EventArgs e) { if (ChkBox_Motor4.Checked == false) SerialPort.Write("g"); else SerialPort.Write("G"); } private void ChkBox_Light_CheckedChanged(object sender, EventArgs e) { if (ChkBox_Light.Checked == false) SerialPort.Write("h"); else SerialPort.Write("H"); } private void Btn_Res_Click(object sender, EventArgs e) { Total = 0; Dat = 0; } } } B Chương trình Vi điều khiển #include #include Servo servoA; Servo servoB; Servo servoC; int Motor1 = 11; int Motor2 = 6; int Motor3 = 9; int Motor4 = 10; int Motor5 = 5; int Light = 7; int Close = 30; int Open = 90; char a = 0; int v = 0; void setup() { Serial.begin(9600); pinMode(Motor1, OUTPUT);// Dieu khien dong co pinMode(Motor2, OUTPUT); pinMode(Motor3, OUTPUT); pinMode(Motor4, OUTPUT); pinMode(Motor5, OUTPUT); pinMode(Light, OUTPUT); digitalWrite(Motor1, LOW); digitalWrite(Motor2, LOW); digitalWrite(Motor3, LOW); digitalWrite(Motor4, LOW); digitalWrite(Motor5, LOW); digitalWrite(Light, LOW); servoA.attach(2); servoB.attach(3); servoC.attach(4); servoA.write(Close); servoB.write(Close); servoC.write(Close); } void loop() { if (Serial.available() > 0) { a = Serial.read(); v = (int)a-48; if(v