Nguyên lí hoạt động: Tín hiệu từ vi điều khiển chân 22 được đưa vào chân số 1 của optotransistor. Nếu tích cực mức cao thì opto dẫn, mức thấp thì khơng dẫn. Opto dẫn thì kích cho FET dẫn và cho dịng điện chạy qua làm quay động cơ.
3.5. SƠ ĐỒ NGUYÊN LÝ CỦA HỆ THỐNG
3.6. MẠCH SAU KHI HOÀN THÀNH 3.6.1. MẠCH KHUẾCH ĐẠI 3.6.1. MẠCH KHUẾCH ĐẠI
Hình 3.8: Mạch khuếch đại đã thi cơng.
3.6.2. MẠCH ĐẢO CHIỀU ĐỘNG CƠ
3.6.3. MẠCH ĐIỀU KHIỂN BĂNG TẢI
Hình 3.10: Mạch điều khiển băng tải.
3.6.4. ARDUINO ETHERNET SHIELD KẾT NỐI VỚI ARDUINO 2560
3.7. HÌNH ẢNH THỰC TẾ MƠ HÌNH
3.8. ĐÁNH GIÁ SAI SỐ
Từ sơ đồ khối ta thấy: Sai số của hệ thống bao gồm sai số của cảm biến, sai số của bộ khuếch đại, sai số của ADC, sai số của vi điều khiển. Nhưng sai số của vi điều khiển là rất nhỏ có thể bỏ qua, vì vậy ta cịn 3 thành phần sai số:
Sai số của hệ thống: 2 2 2
1 2 3
Trong đó:
1
: là sai số của cảm biến 2
: là sai số của ADC 3
: là sai số của bộ khuếch đại
Sai số cảm biến:
Sai số của cảm biến thường do nhiệt độ gây ra. Khi nhiệt độ thay đổi sẽ làm điện trở cảm biến thay đổi gây ra sai số, nhiệt độ làm việc là 0oc tới 50oc
Sai số của nhà sản xuất:1= 0,1%
Sai số của ADC:
Sai số lượng tử: Đây là sai số hệ thống, giá trị của sai số lượng tử bằng một nửa của giá trị điện áp đặt vào để làm thay đổi một đơn vị của mã đầu ra
Sai số do điện áp Uref: Sai số này sinh ra do nguồn tham chiếu bị thay đổi. (sai số này đã bị triệt tiêu khi điện áp cấp cho Uref cũng là điện áp cấp cho cầu)
Các yếu tố ảnh hưởng đến độ chính xác của ADC:
Mạch so sánh: Khoảng chuyển tiếp của tín hiệu là một yếu tố gây ra sai số bởi vì hai tín hiệu phải sai lệch một giá trị nhất định thì điện thế ra của mạch mới chuyển trạng thái. Ngoài ra ở một mức điện áp khác nhau có một mức chuyển tiếp khác nhau tạo ra sự khơng tuyến tính của mạch so sánh. Bộ so sánh cũng bị tác động của nhiệt độ.
Độ phân giải: Độ phân giải càng cao thì sai số càng thấp ảnh hưởng của bộ dao động: khi xung nhịp đặt vào thay đổi thì độ chính xác bị kém đi sai số tổng của ADC:
10
1/ 2 =0,097% 2=0,097%
Sai số khuếch đại:
Mạch khuếch đại sử dụng INA125 có sai số là: 3 0,01%
Chƣơng 4: THIẾT KẾ PHẦM MỀM 4.1. YÊU CẦU THIẾT KẾ
Hệ thống thiết kế bao gồm các phần yêu cầu sau: Phân loại màu sản phẩm theo 2 loại: Đỏ, xanh lá.
Sản phẩm màu đỏ có 2 loại là sản phẩm đỏ đạt chuẩn và sản phẩm đỏ không đạt chuẩn. 2 loại sản phẩm này phân theo 2 đường.
Sản phẩm màu xanh có 2 loại là sản phẩm xanh đạt chuẩn và sản phẩm xanh không đạt chuẩn. 2 loại sản phẩm này phân theo 2 đường.
Sản phẩm được nhận dạng theo màu rồi tới khối lượng. Sau khi hoàn thành gồm 4 loại sản phẩm.
4.2. GIẢI PHÁP THỰC HIỆN
Giải pháp:
Chia các hệ thống thành từng giai đoạn. Xử lý từng giai đoạn.
Xử lý các công đoạn chi tiết cho từng giai đoạn.
4.3. GIAO DIỆN WEBSERVER
4.4. LƢU ĐỒ CHƢƠNG TRÌNH
4.4.1. LƢU ĐỒ CHƢƠNG TRÌNH CHÍNH
u cầu: Quá trình được chia nhỏ thành 5 giai đoạn, từng giai đoạn sẽ thực hiện 1 nhiệm vụ
riêng, các chương trình con xử lí các giai đoạn.
Hình 4.2: Lưu đồ chương trình chính.
Chương trình chính được chia thành 5 giai đoạn, từ khi hoạt động sản phẩm sẽ được xác định vị trí qua các cảm biến hồng ngoại, khi vật tới giai đoạn nào thì sẽ thực hiện chương trình con của giai đoạn đó.
4.4.2. LƢU ĐỒ CHƢƠNG TRÌNH CON ĐƢA SẢN PHẨM VÀO BÀN CÂN
4.4.3. LƢU ĐỒ CHƢƠNG TRÌNH CON CÂN VÀ ĐỌC MÀU
4.4.4. LƢU ĐỒ CHƢƠNG TRÌNH CON ĐƢA SẢN PHẨM VÀO BĂNG TẢI 2
4.4.5. LƢU ĐỒ CHƢƠNG TRÌNH CON ĐƢA SẢN PHẨM VÀO THÙNG
4.4.6. LƢU ĐỒ CHƢƠNG TRÌNH CON GẠT SẢN PHẨM VÀO THÙNG MÀU XANH
4.4.7. LƢU ĐỒ CHƢƠNG TRÌNH CON GẠT SẢN PHẨM VÀO THÙNG MÀU ĐỎ
Chƣơng 5: KẾT QUẢ NGHIÊN CỨU 5.1. KẾT QUẢ 1: 5.1. KẾT QUẢ 1:
Sau thực hiện đề tài “Giám sát và phân loại sản phẩm theo màu sắc dùng kit arduino” đề tài đã hồn thành các nội dung chính như sau:
Về arduino 2560:
Tìm hiểu sơ lược về arduino 2560.
Tìm hiểu và phân tích ứng dụng của arduino 2560. Viết được chương trình của từng phần riêng biệt.
Về websever:
Giám sát được thông qua webserver.
5.1. KẾT QUẢ 2:
Về thiết kế mơ hình:
Tìm hiểu đặc tính của các linh kiện sử dụng.
Thiết kế các module như: module khếch đại tín hiệu analog dùng trong loadcell, mạch đảo chiều động cơ.
Chƣơng 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 6.1. KẾT LUẬN
Đề tài đã thực hiện được chạy theo các bước cơ bản, điều khiển chạy được từng phần. Nhưng vẫn còn mắc một số lỗi trong quá trình vận hành do sai số của thiết bị và do nhiễu. Nhóm đã hồn thành đúng mục tiêu và tiến độ đề ra.
6.2. HƢỚNG PHÁT TRIỂN ĐỀ TÀI
Có thể phát triển thêm chức năng thông báo số lượng sản phẩm hoặc trong quá trình chạy bị lỗi bằng giọng nói.
Phát triển thêm theo hướng phân loại nhiều sản phẩm cùng lúc và liên tục để tăng năng suất quá trình phân loại.
TÀI LIỆU THAM KHẢO SÁCH THAM KHẢO:
[I] Thầy Lê Chí Kiên, “Giáo trình Đo lường cảm biến”, ĐH Sư phạm Kỹ thuật Tp.HCM.
[II] Loadcell technical information. [III] Datasheet L298.
[IV] Datasheet IRF 540.
TRANG WEB THAM KHẢO:
[1] http://canchatluong.com/loadcell-mavin/.html [2] http://www.stdio.vn/articles/read/320/dieu-khien-dong-co-servo-voi-adruino [3] http://dientu4u.blogspot.com/.html [4] https://www.arduino.cc/ [5] https://startingelectronics.org/.html [6]http://www.alldatasheet.com/datasheet-pdf/pdf/56681/BURR- BROWN/INA125.html [7] http://www.giacandientu.com/ PHỤ LỤC CHƢƠNG TRÌNH CON: Webserver: void giaodien() {
EthernetClient client = server.available(); if(client = true)
{
while(client.connected()) {
{
char c=client.read();
//Đọc char bởi yêu cầu HTTP if(readString.length()<100) {
//Lưu trữ các ký tự vào chuỗi readString+=c; //In C } //================================================= //Request HTTP Stop: if(c=='\n'){
Serial.println(readString);//In ra serial monitor
client.println("HTTP/1.1 200 OK");//Tạo 1 trang mới client.println("Content-Type: text/html");
client.println("Refresh: 5"); client.println();
client.println("<HTML>"); client.println("<HEAD>");
client.println("<TITLE>He Thong Dieu Khien Thiet Bi Bang
Arduino 2560 - Ethernet Shield Arduino</TITLE>"); client.println("</HEAD>");
client.println("<BODY>"); client.println("<CENTER>");
client.println("<center> <p> <h2 style=\"color: #EE0000\" >DO AN TOT NGHIEP</h2></p>"); client.println("<center> <p> <h2 style=\"color: #000000\" >HUYNH THANH THOAI</h2></p>"); client.println("<center> <p> <h2 style=\"color: #000000\" >PHAM CONG DUC</h2></p>");
>KHOA:DIEN-DIEN TU</h2></p>");
client.println("<h3>******************************
******************************</h3>"); client.println("<center> <p> <h2 style=\"color:
#990000\">DIEU KHIEN THIET BI</h2></p>");
//============================================================ client.println("<a href=\"/button1on\"> <button
style=\"width:100px;height:40px\"> <font size=\"0.5\">ON </font> </button> </a>");
client.println("<a href=\"/button1off\"> <button style=\"width:100px;height:40px\"> <font size=\"0.5\">OFF </font> </button> </a> <br/><br/>");
//============================================================ client.println("<center> <p> <h2 style=\"color: #990000\" >SO SAN PHAM</h2></p>");
client.println("<p> <h2 style=\"color: #FF0000\"> MAU DO:"); client.println(maudo);
client.println("</p>");
client.println("<p> <h2 style=\"color: #00FF00\" >MAU XANH LA:");
client.println(xanhla); client.println("</p>"); client.println("<br/>"); client.println("<br/>"); client.println("<br/>"); client.println("</BODY>"); client.println("</HTML>"); delay(1); //Stop Client:
client.stop();
Serial.println("client disconnected");
//================================================= //DIEU KHIEN QUA NHAN LENH DIEU KHIEN:
if(readString.indexOf("button1on")>0) { digitalWrite(22, HIGH); } //================================================= if(readString.indexOf("button1off")>0) { digitalWrite(22 ,LOW); } //================================================= readString=""; } //================================================= } } } } Màu sắc: int color() { digitalWrite(s2,LOW); digitalWrite(s3,LOW);
red = pulseIn( out,digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3,HIGH);
blue = pulseIn( out,digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2,HIGH);
/* Serial.print("R Intensity:"); Serial.print(red, DEC); Serial.print("G Intensity:"); Serial.print(green,DEC); Serial.print("B Intensity:"); Serial.print(blue, DEC); */
if ( red > 10 && red < 40) {
Serial.println(" - (red Color) "); xuatmau = 1;//red maudo++; delay (1000); } else if ( green >40) {
Serial.println(" - (green Color) "); xuatmau = 2; xanhla++; delay (1000); } else { xuatmau = 3; } return xuatmau; }