Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 122 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
122
Dung lượng
4,88 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA THIẾT KẾ VÀ THI CƠNG MƠ HÌNH PHÂN LOẠI XỒI THEO KÍCH THƯỚC VÀ ĐỘ CHÍN GVHD: TS TRẦN VŨ HOÀNG SVTH: TRẦN ĐĂNG KHƯƠNG PHẠM GIA NGHĨA SKL009250 Tp.Hồ Chí Minh, tháng 8/2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA Đề tài: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH PHÂN LOẠI XỒI THEO KÍCH THƯỚC VÀ ĐỘ CHÍN GVHD: TS Trần Vũ Hoàng SVTH: Trần Đăng Khương 18151194 Phạm Gia Nghĩa 18151208 TP Hồ Chí Minh, tháng năm 2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA Đề tài: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH PHÂN LOẠI XỒI THEO KÍCH THƯỚC VÀ ĐỘ CHÍN GVHD: TS Trần Vũ Hoàng SVTH: Trần Đăng Khương 18151194 Phạm Gia Nghĩa 18151208 TP Hồ Chí Minh, tháng năm 2022 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày tháng năm NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Đăng Khương MSSV: 18151194 Họ tên sinh viên 2: Phạm Gia Nghĩa MSSV: 18151208 Chuyên ngành: Công nghệ Kỹ thuật Điều khiển Tự động hóa Hệ đào tạo: Đại học quy Khóa: 2018 Lớp: 181511C I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH PHÂN LOẠI XỒI THEO KÍCH THƯỚC VÀ ĐỘ CHÍN II NHIỆM VỤ Các số liệu ban đầu: - Về tài liệu: nghiên cứu tìm hiểu đề tài có hệ thống phân loại trái cây, phân loại sản phẩm dựa vào kích thước, khối lượng, màu sắc Phân tích ưu nhược điểm chúng để tìm phương hướng cải tiến, nâng cao thuật toán điều khiển để tối ưu hóa phần cứng, tăng tốc độ xử lí nhằm tiết kiệm chi phí đầu tư nâng cao xuất hoạt động - Về thiết bị: board Arduino uno R3, Camera Logitech C270, hệ thống băng tải, cảm biến hồng ngoại, động DC, động RC Servo, đèn LED Nội dung thực hiện: - Nội dung 1: Nghiên cứu tìm hiểu tổng quan đề tài (tính cấp thiết, lý chọn, mục tiêu, giới hạn phương pháp nghiên cứu đề tài) - Nội dung 2: Tìm hiểu sở lý thuyết (các quy trình phân loại xồi có nay, phương pháp phân loại, sở lựa chọn thiết bị thuật toán) - Nội dung 3: Thiết kế phần cứng cho mơ hình (lựa chọn thiết bị, thiết kế sơ đồ nối dây, nối dây thiết bị theo sơ đồ thiết kế) - Nội dung 4: Thiết kế phần mềm - Nội dung 5: Kiểm tra đánh giá hoạt động mơ hình III NGÀY GIAO NHIỆM VỤ: 14/02/2022 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/07/2022 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS Trần Vũ Hồng CÁN BỘ HƯỚNG DẪN BỘ MƠN TỰ ĐỘNG ĐIỀU KHIỂN i TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày tháng năm LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Đăng Khương MSSV: 18151194 Họ tên sinh viên 2: Phạm Gia Nghĩa MSSV: 18151208 Tên đề tài: Thiết kế thi công mô hình phân loại xồi theo kích thước độ chín Tuần/ngày Tuần (26/1 – 14/2) Tuần 1-2 (14/2 – 28/2) Nội dung - Chọn đề tài, viết đề cương chi tiết ĐATN - Nghiên cứu tình hình thực tế nước Nghiên cứu sở lý thuyết liên quan đến thuật toán xử lý ảnh lựa chọn thiết bị Viết báo cáo chương 1, Tuần (28/2 – 7/3) Tuần (7/3 – 14/3) Tuần 5-6 (14/3 – 28/3) Tuần (28/3 – 4/4) Tuần 7-8 (4/4 – 18/4) - Tham khảo ĐATN trước, báo khoa học dự án thực tế Xác định vấn đề tồn phần mềm - Tính tốn, xác định u cầu phần cứng - Lựa chọn thiết bị Thi công phần cứng theo yêu cầu - Viết báo cáo chương - Tham khảo ĐATN trước, báo khoa học dự án thực tế để xác định vấn đề tồn phần mềm Xác định yêu cầu phần mềm - Xác nhận GVHD ii Tuần 9-10 (18/4 – 2/5) - Tuần 11 (2/5 – 9/5) - Tuần 12-13 (9/5 – 23/5) - Tuần 14-15 (23/5 – 6/6) - Xây dựng chạy thử thuật phân đoạn trái xoài phần mềm Matlab Hiệu chỉnh thuật toán sau thử nghiệm thực tế Tìm hiểu, so sánh thuật tốn xử lý ảnh phân loại xồi theo kích thước Lựa chọn thuật tốn dựa kết so sánh yêu cầu đề tài Triển khai thuật tốn mơ hình thực tế Hiệu chỉnh thuật tốn sau thực nghiệm Tìm hiểu, so sánh thuật toán xử lý ảnh phân loại xồi theo độ chín Lựa chọn thuật tốn dựa kết so sánh yêu cầu đề tài Triển khai thuật tốn mơ hình thực tế Hiệu chỉnh thuật toán sau thực nghiệm - Kết hợp thuật tốn phân loại kích thước độ chín mơ hình thực tế Hiệu chỉnh thuật tốn Tuần 17 (13/6 – 20/6) - Viết báo cáo chương Tuần 18 (20/6 – 27/6) - Kiểm tra, đánh giá hoạt động mơ hình Viết báo cáo chương 5, Tuần 19 (27/6 – 3/7) - Hiệu chỉnh hoàn thiện báo cáo Tuần 16 (6/6 – 13/6) - Tìm hiểu, so sánh thuật tốn xử lý ảnh phân đoạn ảnh trái xồi Lựa chọn thuật tốn dựa kết so sánh yêu cầu đề tài Chạy thử nghiệm hiệu chỉnh thuật toán với mẫu hình lý thuyết GV HƯỚNG DẪN (Ký ghi rõ họ tên) iii TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN TỰ ĐỘNG ĐIỀU KHIỂN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày tháng năm PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Họ tên sinh viên 1: Trần Đăng Khương MSSV: 18151194 Họ tên sinh viên 2: Phạm Gia Nghĩa MSSV: 18151208 Chuyên ngành: Công nghệ Kỹ thuật Điều khiển Tự động hóa Tên đề tài: Thiết kế thi cơng mơ hình phân loại xồi theo kích thước độ chín Họ tên Giáo viên hướng dẫn: TS Trần Vũ Hoàng NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không ? Đánh giá loại: Điểm: Bằng chữ: CÁN BỘ HƯỚNG DẪN BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN iv TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN o0o -Tp HCM, ngày tháng năm LỜI CAM ĐOAN Chúng xin cam kết đề tài tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước TP Hồ Chí Minh, tháng năm 2022 Người thực đề tài Trần Đăng Khương Phạm Gia Nghĩa v LỜI CẢM ƠN Trong suốt trình thực đề tài, gặp phải nhiều khó khăn giúp đỡ, hỗ trợ kịp thời từ quý Thầy Cô bạn nên Đồ án hoàn thành tiến độ Chúng xin chân thành cảm ơn thầy TS Trần Vũ Hồng tận tình hướng dẫn bảo kinh nghiệm quý báu suốt trình tìm hiểu, nghiên cứu đề tài Chúng tơi xin cảm ơn thành viên UTE AI Lab có ý kiến đóng góp, bổ sung, động viên khích lệ giúp nhóm hồn thành tốt đề tài Mặc dù chúng tơi cố gắng hồn thiện đồ án, trình thực kiến thức kỹ hạn chế nên khơng thể tránh khỏi thiếu sót Nhóm mong nhận đóng góp, ý kiến quý Thầy Cô bạn sinh viên Sau cùng, xin chúc quý Thầy Cô sức khoẻ, thành công tiếp tục đào tạo sinh viên giỏi đóng góp cho đất nước Chúc anh (chị), bạn sức khỏe, học tập thật tốt để không phụ công lao Thầy Cô giảng dạy Chúng xin chân thành cảm ơn! TP Hồ Chí Minh, tháng năm 2022 Người thực đề tài Trần Đăng Khương Phạm Gia Nghĩa vi Mục Lục NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP I LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP II PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN IV LỜI CAM ĐOAN V LỜI CẢM ƠN VI MỤC LỤC VII DANH MỤC HÌNH ẢNH X DANH MỤC BẢNG XIII TÓM TẮT XIV CHƯƠNG TỔNG QUAN 1.1 Đặt vấn đề 1.2 Mục tiêu đề tài 1.3 Phương pháp nghiên cứu 1.4 Giới hạn đề tài 1.5 Giới thiệu nội dung CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Nghiên cứu tình hình ngồi nước 2.1.1 Tình hình ngồi nước 2.1.2 Tình hình nước 2.2 Các giống xoài phổ biến tiêu chuẩn phân loại xoài Việt Nam 2.2.1 Các giống xoài phổ biến Việt Nam 2.2.2 Tiêu chuẩn áp dụng việc phân loại xoài Việt Nam 2.3 Đề xuất quy trình phân loại xồi theo độ chín kích thước 10 2.3.1 Phân loại theo độ chín 10 2.3.2 Phân loại theo kích thước 11 2.4 Cơ sở lý thuyết thiết bị 12 2.4.1 Phương pháp vận chuyển xoài 12 vii Phụ Lục % double str2double(get(hObject,'String')) returns contents of edit8 as a % - Executes during object creation, after setting all properties function edit8_CreateFcn(hObject, eventdata, handles) % hObject handle to edit8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit9_Callback(hObject, eventdata, handles) % hObject handle to edit9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit9 as text % str2double(get(hObject,'String')) returns contents of edit9 as a double % - Executes during object creation, after setting all properties function edit9_CreateFcn(hObject, eventdata, handles) % hObject handle to edit9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit10_Callback(hObject, eventdata, handles) % hObject handle to edit10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit10 as text % str2double(get(hObject,'String')) returns contents of edit10 as a double % - Executes during object creation, after setting all properties function edit10_CreateFcn(hObject, eventdata, handles) % hObject handle to edit10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER Bộ Môn Tự Động Điều Khiển 91 Phụ Lục if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit11_Callback(hObject, eventdata, handles) % hObject handle to edit11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit11 as text % str2double(get(hObject,'String')) returns contents of edit11 as a double % - Executes during object creation, after setting all properties function edit11_CreateFcn(hObject, eventdata, handles) % hObject handle to edit11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit12_Callback(hObject, eventdata, handles) % hObject handle to edit12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit12 as text % str2double(get(hObject,'String')) returns contents of edit12 as a double % - Executes during object creation, after setting all properties function edit12_CreateFcn(hObject, eventdata, handles) % hObject handle to edit12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit13_Callback(hObject, eventdata, handles) % hObject handle to edit13 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit13 as text Bộ Môn Tự Động Điều Khiển 92 Phụ Lục % double str2double(get(hObject,'String')) returns contents of edit13 as a % - Executes during object creation, after setting all properties function edit13_CreateFcn(hObject, eventdata, handles) % hObject handle to edit13 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit14_Callback(hObject, eventdata, handles) % hObject handle to edit14 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit14 as text % str2double(get(hObject,'String')) returns contents of edit14 as a double % - Executes during object creation, after setting all properties function edit14_CreateFcn(hObject, eventdata, handles) % hObject handle to edit14 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit15_Callback(hObject, eventdata, handles) % hObject handle to edit15 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit15 as text % str2double(get(hObject,'String')) returns contents of edit15 as a double % - Executes during object creation, after setting all properties function edit15_CreateFcn(hObject, eventdata, handles) % hObject handle to edit15 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER Bộ Môn Tự Động Điều Khiển 93 Phụ Lục if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes on button press in pushbutton6 function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global Hue_SP; global Saturation_SP; global Value_SP; global Hue; global Saturation; global Value; Hue_SP = Hue; Saturation_SP = Saturation; Value_SP = Value; % - Executes on button press in pushbutton7 function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'D'); % - Executes on button press in pushbutton8 function pushbutton8_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'E'); % - Executes on button press in pushbutton9 function pushbutton9_Callback(hObject, eventdata, handles) % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'A'); % - Executes on button press in pushbutton10 function pushbutton10_Callback(hObject, eventdata, handles) % hObject handle to pushbutton10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'C'); % - Executes on button press in pushbutton11 function pushbutton11_Callback(hObject, eventdata, handles) % hObject handle to pushbutton11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB Bộ Môn Tự Động Điều Khiển 94 Phụ Lục % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'B'); % - Executes on button press in pushbutton12 function pushbutton12_Callback(hObject, eventdata, handles) % hObject handle to pushbutton12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'C'); % - Executes on button press in pushbutton13 function pushbutton13_Callback(hObject, eventdata, handles) % hObject handle to pushbutton13 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'K'); % - Executes on button press in pushbutton14 function pushbutton14_Callback(hObject, eventdata, handles) % hObject handle to pushbutton14 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global s; fwrite(s,'R'); function edit16_Callback(hObject, eventdata, handles) % hObject handle to edit16 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit16 as text % str2double(get(hObject,'String')) returns contents of edit16 as a double % - Executes during object creation, after setting all properties function edit16_CreateFcn(hObject, eventdata, handles) % hObject handle to edit16 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit17_Callback(hObject, eventdata, handles) % hObject handle to edit17 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Bộ Môn Tự Động Điều Khiển 95 Phụ Lục % Hints: get(hObject,'String') returns contents of edit17 as text % str2double(get(hObject,'String')) returns contents of edit17 as a double % - Executes during object creation, after setting all properties function edit17_CreateFcn(hObject, eventdata, handles) % hObject handle to edit17 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end Phụ lục 4: Chương trình điều khiển trung tâm #include Servo loai1; Servo loai2; int IN1 = 3; int IN2 = 4; int RED = 7; int YEL = 8; int GRE = 12; int ALARM = 13 ; int DEN_AM = 6; int sensor = 2; int DEN_DUONG = 5; int conveyor_status = 0; int loai1_status = 0; int loai2_status = 0; int sensor_status = 0; int time_out = 0; int last_time_in = 0; Bộ Môn Tự Động Điều Khiển 96 Phụ Lục unsigned int shift_data[10] = {0,0,0,0,0,0,0,0,0,0}; unsigned long time_in[10] = {0,0,0,0,0,0,0,0,0,0}; int sorting_data = 0; void setup() { // put your setup code here, to run once: pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(DEN_DUONG, OUTPUT); pinMode(DEN_AM, OUTPUT); //khai báo đèn, giá trị ban đầu pinMode(RED, OUTPUT); pinMode(YEL, OUTPUT); pinMode(GRE, OUTPUT); pinMode(ALARM, OUTPUT); pinMode(sensor,INPUT); Serial.begin(9600); loai1.attach(9); loai2.attach(10); loai1.write(60); loai2.write(0); Serial.println('0'); digitalWrite(RED, HIGH); digitalWrite(YEL, HIGH); digitalWrite(GRE, HIGH); digitalWrite(ALARM, HIGH); } int error = 0; char data = '0'; Bộ Môn Tự Động Điều Khiển 97 Phụ Lục void loop() { // put your main code here, to run repeatedly: if (conveyor_status == 1) { analogWrite(IN1, 255); digitalWrite(IN2, LOW); digitalWrite(GRE, LOW); } else { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(GRE, HIGH); } getdata(); if (error == 0) digitalWrite(YEL, HIGH); if (conveyor_status == && error == 0) { for (int i = 9; i>=0 ; i ) { if (shift_data[i] != && error == 0) if (millis() - time_in[i] > 7000) { error = 1; for (int j = 0; j=0 ; i ) if (shift_data[i] != 0) { sorting_data = shift_data[i]; shift_data[i] = 0; time_in[i] = 0; break; } } else sorting_data = 0; if (sorting_data == ) { loai2.write(0); //đóng delay_ms(500); //đợi tới đầu cần gạt loai1.write(20); //mở delay_ms(4500); if (error == 0)// đợi tới cần gạt => phân loại loai1.write(60); //đóng } Bộ Mơn Tự Động Điều Khiển 99 Phụ Lục else if (sorting_data == ) { loai1.write(60); //đóng delay_ms(500); loai2.write(40); //mở delay_ms(4500); if (error == 0) loai2.write(0); //đóng } else if (sorting_data == ) { loai1.write(60); loai2.write(0); delay_ms(5000); //đợi trái xoài qua khỏi điểm cần gạt } } else if (error == 1) { //sáng đèn vàng digitalWrite(YEL, LOW); conveyor_status = 0; } else if (error == 2) { conveyor_status = 0; digitalWrite(YEL, LOW); delay(500); digitalWrite(YEL, HIGH); delay(500); Bộ Môn Tự Động Điều Khiển 100 Phụ Lục // nháy đèn vàng } } void delay_ms(int milisecond) { for (int z = 0; z0;i ) { shift_data[i] = shift_data[i-1]; time_in[i] = time_in[i-1]; // Serial.println(shift_data[i]); } Bộ Môn Tự Động Điều Khiển 101 Phụ Lục shift_data[0] = 1; time_in[0] = millis(); } else if (data == '2') { for (int i = 9; i>0;i ) { shift_data[i] = shift_data[i-1]; time_in[i] = time_in[i-1]; // Serial.println(shift_data[i]); } shift_data[0] = 2; time_in[0] = millis(); } else if (data == '3') { for (int i = 9; i>0;i ) { shift_data[i] = shift_data[i-1]; time_in[i] = time_in[i-1]; // Serial.println(shift_data[i]); } shift_data[0] = 3; time_in[0] = millis(); } else if (data == 'D' && conveyor_status == 0) { conveyor_status = 1; // báo đèn xanh Bộ Môn Tự Động Điều Khiển 102 Phụ Lục } else if (data == 'E' && conveyor_status == 1) { conveyor_status = 0; } else if (data == 'A' ) { loai2.write(0); //0_đóng 40_mở delay(500); loai1.write(20); //60_đóng 20_mở } else if (data == 'B' ) { loai1.write(60); //20_mở 60_đóng delay(500); loai2.write(40); //0_đóng 40_mở } else if (data == 'C' ) { loai1.write(60); //20_mở 60_đóng loai2.write(0); //0_đóng 40_mở } else if (data == 'K') //reset biến dịch for (int i = 0; i