Thiết kế và thi công hệ thống điều khiển, giám sát điện năng tiêu thụ cho tải thông qua mạng internet

122 59 0
Thiết kế và thi công hệ thống điều khiển, giám sát điện năng tiêu thụ cho tải thông qua mạng internet

Đ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

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 o0o -BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Tp HCM, ngày 10 tháng 07 năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Trần Anh Khoa Nguyễn Văn Hạnh MSSV: 15141185 MSSV: 15141151 Chuyên ngành: Kỹ thuật Điện tử - Truyền thông Mã ngành: 141 Hệ đào tạo: Đại học quy Mã hệ: Khóa: 2015 Lớp: 15141DT I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ CHO TẢI THÔNG QUA MẠNG INTERNET II NHIỆM VỤ Các số liệu ban đầu: - Các loại vi điều khiển: Arduino Mega 2560 Pro, Arduino Nano, Esp 8266 V12 - Các loại Module: Lora – E32 TTL 100, Đo dịng ACS712, ULN2003 - Màn hình hiển thị: LCD 20x4 - Điều khiển thiết bị điện: relay, transistor, diode - Nguồn: module hạ áp AC – DC Nội dung thực - Tìm hiểu tham khảo tài liệu, giáo trình, nghiên cứu chủ đề, nội dung liên quan đến đề tài - Tìm hiểu công nghệ Lora, IoT - Thiết kế, thi công hệ thống điều khiển - Thiết kế ứng dụng điều khiển hệ điều hành Android - Chạy thử nghiệm hệ thống - Chỉnh sửa lỗi xuất - Đánh giá kết thực - Viết báo cáo luận văn - Báo cáo đề tài tốt nghiệp III NGÀY GIAO NHIỆM VỤ: 18/03/2020 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 10/08/2020 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: KS Hà A Thồi CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH i 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 o0o -BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Tp HCM, ngày 10 tháng 07 năm 2020 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Anh Khoa Lớp: 15141DT1D MSSV:15141185 Họ tên sinh viên 2: Nguyễn Văn Hạnh Lớp: 15141DT1A MSSV:15141151 Tên đề tài: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ CHO TẢI THÔNG QUA MẠNG INTERNET Tuần/ngày Nội dung Tuần 1,2 18/03-01/04 Gặp GVHD để lựa chọn đề tài tốt nghiệp viết đề cương chi tiết Tuần 3,4,5 02/03-25/04 Tìm hiểu linh kiện sử dụng mạch Thiết kế sơ đồ nguyên lí Tuần 6,7,8,9 27/04-25/05 Lập trình vi điều khiển điều khiển giao tiếp với module mạch Tuần 10,11 26/05-09/06 Thiết kế App Android, truyền nhận liệu Firebase với App với Esp8266 Tuần 12 10/06-17/06 Đóng hộp mơ hình, kiểm tra hoạt động hệ thống Tuần 13,14,15 18/06-11/07 Xác nhận GVHD Kiểm tra sửa lỗi hệ thống Viết báo cáo hoàn chỉnh GV HƯỚNG DẪN (Ký ghi rõ họ tên) ii LỜI CAM ĐOAN Nhóm sinh viên – Nguyễn Văn Hạnh Trần Anh Khoa xin cam đoan đồ án nhóm tự thực hướng dẫn thầy Hà A Thồi Nhóm tham khảo tài liệu trước nghiên cứu mạng online Kết công bố khóa luận tốt nghiệp trung thực khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Trần Anh Khoa Nguyễn Văn Hạnh iii LỜI CẢM ƠN Nhóm thực đồ án xin được gửi lời cảm ơn đặc biệt đến giảng viên hướng dẫn thầy Hà A Thồi giúp đỡ nhóm q trình thực đồ án, người đưa hướng nghiên cứu, giải đáp thắc mắc, tận tình quan sát nhóm làm việc Trong q trình thực nhóm tiếp thu được kiến thức thực tế cách làm việc nghiêm túc, hiệu từ thầy Nhóm em xin gửi lời tri ân thành đến quý thầy cô khoa Điện điện tử hỗ trợ chúng em kiến thức tảng vững vàng, tạo điều kiện tốt cho sinh viên trình học tập nghiên cứu Sự hỗ trợ thầm lặng vơ quan trọng từ gia đình bạn bè ln động lực để nhóm làm việc hết khả hoàn thành đồ án cách tốt Một lần nhóm vơ hân hạnh được làm sinh viên trường ĐH Sư Phạm Kỹ Thuật TPHCM, học trò giảng viên đầy tâm huyết, lời cảm ơn ghi nhận sâu sắc mà nhóm muốn gửi đến thầy cơ, gia đình bạn bè Người thực đề tài Trần Anh Khoa Nguyễn Văn Hạnh iv 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 LỜI CAM ĐOAN iii LỜI CẢM ƠN iv TÓM TẮT xv CHƯƠNG 1: TỔNG QUAN 1 ĐẶT VẤN ĐỀ 1 2MỤC TIÊU ĐỀ TÀI 3NỘI DUNG THỰC HIỆN 1.5 BỐ CỤC ĐỒ ÁN CHƯƠNG 2: CƠ SỞ LÝ THUYẾT TẦM QUAN TRỌNG CỦA VIỆC QUẢN LÝ ĐIỆN NĂNG 2 CÔNG NGHỆ IOT 3GIỚI THIỆU VỀ PHẦN CỨNG 2.3.1Giới thiệu module ESP8266 2.3.2 Vi Điều Khiển 10 2.3.3 Module LCD 2004-20X4 15 2.3.4 Module Lora E32 - TTl – 100 16 2.3.5 Cảm biến dòng điện Hall ACS712 20A 19 2.3.6 IC đệm dòng ULN 2003 21 2.3.7 Module chuyển đổi nguồn điện AC - DC 22 2.3.8 Relay tiếp điểm khí 23 2.4 CHUẨN GIAO TIẾP UART 25 2.7 CÁC LOẠI MODULE TTHU PHÁT SÓNG RF 28 2.8 NGUỒN CUNG CẤP 29 2.8.1 Bộ Chuyển Đổi Nguồn AC-DC 29 2.8.2 Bộ Chuyển Đổi Nguồn DC-DC 31 CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ 33 GIỚI THIỆU 33 v TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 33 3.2.1 Thiết kế sơ đồ khối hệ thống 33 3.2.2 Tính tốn mạch điện 34 CHƯƠNG THI CÔNG HỆ THỐNG 50 GIỚI THIỆU 50 THI CÔNG HỆ THỐNG 50 4.2.1 Thi công board mạch 50 4.2.2 Lắp ráp kiểm tra 53 4.2.3 Thi cơng lắp ráp mơ hình 55 LẬP TRÌNH HỆ THỐNG 58 4.3.1 Lưu đồ giải thuật 58 4 GIỚI THIỆU VỀ PHẦN MỀM LẬP TRÌNH 70 4.4.1 Giới thiệu Arduino IDE 70 4.4.2 Giới thiệu App Blynk 76 CHƯƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 79 GIỚI THIỆU 79 KẾT QUẢ ĐẠT ĐƯỢC 79 KẾT QUẢ THỰC NGHIỆM 80 5.3.1 Cấp nguồn kết nối Master với Slave 80 5.3.2 Đăng nhập ứng dụng điện thoại điều khiển – giám sát thiết bị 83 NHẬN XÉT – ĐÁNH GIÁ 87 5.4.1 Nhận xét 87 5.4.2 Đánh giá 88 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN 89 HƯỚNG PHÁT TRIỂN 89 TÀI LIỆU THAM KHẢO PHỤ LỤC 89 90 91 vi DANH SÁCH HÌNH ẢNH Chương Hình 2.1: Sơ đồ chân ESP8266MOD Hình 2.2: Sơ đồ chân Board ESP -12E Node MCUS Hình 2.3: Board Arduino Mega 2560 Pro 10 Hình 2.4: Board Arduino Mega 2560 Pro với GPIO 11 Hình 2.5: Board Arduino Nano 12 Hình 2.6: Arduino Nano GPIO 13 Hình 2.7: Hình ảnh mặt trước LCD 20x4 14 Hình 2.8: Module Lora E32 – TTL – 100 15 Hình 2.9: Mạch nguyên lý nối dây với vi điều khiển 15 Hình 2.10: Dạng sóng module truyền liệu qua vi điều khiển 16 Hình 2.11: Dạng sóng module nhận liệu không dây 17 Hình 2.12: Cảm biến dịng điện Hall ACS712 20A 18 Hình 2.13: Sơ đồ nối dây để sử dụng ACS712 19 Hình 2.14: IC đệm dòng UNL 2003 20 Hình 2.15: Các chân kết nối ic uln 2003 20 Hình 2.16: Mạch chuyển đổi nguồn AC – DC 21 Hình 2.17: Relay 5v 22 Hình 2.20: Gói liệu truyền UART 22 Hình 2.21: Sóng truyền UART 23 Hình 2.22: Quá trình truyền UART 24 Hình 2.23: Quá trình nhận UART 25 Hình 2.26: Sơ đồ mạch RF đơn giản 27 Hình 2.27: Sơ đồ mạch thu song RF đơn giản 28 Hình 2.28: Mạch thu phát kênh 2.4 GHZ L24YK-RX4 31 viii Hình 2.29: Mạch thu phát sóng RF NRF24L01+ 32 Hình 2.30: Mạch thu phát RF UART LC12S 2.4Ghz 33 Hình 2.31: Adapter 12v – 1,5A 33 Hình 2.32: Nguồn tổ ong 12V-10A 34 Hình 2.33: Sơ đồ hoạt động mạch tăng áp 34 Hình 2.34: Mạch tăng áp XL6009 4A 35 Hình 2.35: Sơ đồ hoạt động mạch hạ áp 35 Hình 2.36: Mạch hạ áp DC-DC LM2596 35 Chương Hình 3.1: Sơ đồ khối hệ thống 45 Hình 3.2: Sơ đồ chân ESP8266-12E Node MCU 47 Hình 3.3: Sơ đồ chân Arduimo Mega 2650 Pro 48 Hình 3.4: Sơ đồ kết nối Arduino Mega với nút nhấn 49 Hình 3.5: Sơ đồ kết nối Arduino Mega với LCD 50 Hình 3.6: Sơ đồ kết nối Arduino Mega với Lora 51 Hình 3.7: Sơ đồ nguyên lý Master 52 Hình 3.8: BJT điều khiển Buzzer 53 Hình 3.9: IC đệm dòng ULN 2003 54 Hình 3.10: Sơ đồ cấu tạo IC ULN 2003 55 Hình 3.11: Kết nối ACS với Arduino Nano 55 Hình 3.12: Kết nối relay với UNL2003 56 Hình 3.13: Kết nối khối giám sát điều khiển relay với Arduino Nano 57 Hình 3.14: Kết nối mạch điều khiển buzzer với Arduino 57 Hình 3.15: Kết nối Lora với Arduino nano 58 Hình 3.16: Kết nối phím nhấn với Arduino Nano 58 Hình 3.17: Sơ đồ nguyên lý mạch Slave 59 ix Hình 3.18: Khối nguồn 61 Chương Hình 4.1: Bố trí linh kiện mặt mạch (Master) 62 Hình 4.2: Bố trí linh kiện mặt sau mạch (Master) 63 Hình 4.3: Bố trí linh kiện mặt trước mạch (Slave) 64 Hình 4.4: Bố trí linh kiện mặt sau mạch (Slave) 65 Hình 4.5: Hình ảnh mạch sau hàn linh kiện 66 Hình 4.6: Hình ảnh mạch phụ sau hàn linh kiện 66 Hình 4.7: Hình ảnh mica 67 Hình 4.8: Hình ảnh thực tế bên hộp mạch chính(Master) 67 Hình 4.9: Hình ảnh thực tế bên hộp mạch chính(Master) 68 Hình 4.10: Hình ảnh thực tế bên hộp mạch phụ(Slave) 68 Hình 4.11: Hình ảnh thực tế bên hộp mạch phụ(Slave) 69 Hình 4.12: Hình ảnh thực tế bên hộp hai mạch 70 Hình 4.13: Lưu đồ chương trình Arduino Mega2560 pro 71 Hình 4.14: Lưu đồ khởi tạo hệ thống 73 Hình 4.15: Lưu đồ gửi nhận giữ liệu từ Sl ave 74 Hình 4.16: Lưu đồ điều khiển nút nhấn Master 75 Hình 4.17: Lưu đồ chương trình phát gửi cảnh báo 76 Hình 4.18: Lưu đồ chương trình điều khiển Slave 77 Hình 4.19: Lưu đồ chương trình đọc cảm biến ACS 712 78 Hình 4.20: Lưu đồ điều khiển nút nhấn Slave 79 Hình 4.21: Lưu đồ kết nối ESP với Blynk Sever 80 Hình 4.22: Lưu đồ chương trình tạo liệu gửi lên Blynk Sever 81 Hình 4.23: Lưu đồ sử dụng App 82 Hình 4.24: Quy trình làm việc arduino 83 x PHỤ LỤC //Serial.print("Attempting MQTT connection "); // Thực kết nối với mqtt user pass if (client.connect("ESP8266Client",mqtt_user, mqtt_pwd)) { / digitalWrite(ledPin, HIGH); Serial.println("connected"); digitalWrite(wifi, HIGH); digitalWrite(lamp, HIGH); / Khi kết nối publish thông báo client.publish(mqtt_topic_pub, "ESP_reconnected"); / nhận lại thông tin //client.subscribe(mqtt_topic_sub); } else { //digitalWrite(ledPin, LOW); digitalWrite(wifi, LOW); digitalWrite(lamp, LOW); Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in seconds"); / Đợi 5s delay(1000); } } } void loop() { Blynk.run(); / Nếu nhận liệu từ master if (Serial.available() > ) { data = Serial.readString(); data.trim(); //Serial.println(data); //Serial.println(data.length()); // Xử lý tách liệu id = getValue(data, ';', 0); l1 = getValue(data, ';', 1); l2 = getValue(data, ';', 2); l3 = getValue(data, ';', 3); l4 = getValue(data, ';', 4); cur = getValue(data, ';', 5); alarm = getValue(data, ';', 6); / Serial.println(id); //Serial.println(l2); checkStatus(); / / / / } }// Kết nối lại server bị ngắt kết nối if (!client.connected()) { reconnect(); } client.loop(); / Setup terminal blynk BLYNK_WRITE(V20) { String t = param.asStr(); 94 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC String id = getValue(t, ';', 0); String pass = getValue(t, ';', 1); terminal.print("SSID :"); terminal.println(id); terminal.print("PASS :"); terminal.println(pass); terminal.flush(); id.toCharArray(ssid_buff,20); pass.toCharArray(pass_buff,20); } / Cáu hình nút set để lưu thông tin wifi sau nhập BLYNK_WRITE(V6) { int i = param.asInt(); if (i == 1) { delete_eeprom(); delay(50); EEPROM.put(5, ssid_buff); EEPROM.put(30, pass_buff); EEPROM.commit(); terminal.println("CAP NHAT THANH CONG"); terminal.println("Auto reboot "); terminal.flush(); delay(2000); ESP.restart(); } else { ; } } / đặt nút xóa nhớ eeprom cần BLYNK_WRITE(V7) { int i = param.asInt(); if (i == 1) { delete_eeprom(); delay(50); terminal.println("Da xoa bo nho"); terminal.flush(); } else { ; } } / Hàm điều khiển tải BLYNK_WRITE(V21) { int i = param.asInt(); if (i == 1) { / statusld1 = !statusld1; //Blynk.virtualWrite(V12, HIGH); control[10] = '1'; Serial.println(control); 95 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC } else { ; } } //Hàm điều khiển tải BLYNK_WRITE(V22) { int i = param.asInt(); if (i == 1) { control[10] = '2'; Serial.println(control); } else { ; } } //Hàm điều khiển tải BLYNK_WRITE(V23) { int i = param.asInt(); if (i == 1) { control[10] = '3'; Serial.println(control); } else { ; } } //Hàm điều khiển tải BLYNK_WRITE(V24) { int i = param.asInt(); if (i == 1) { control[10] = '4'; Serial.println(control); } else { ; } } / Hàm xử lý nhận chuỗi void checkStatus() { //Serial.println("Step1"); / xác thực chuỗi nhận if ((id == "slave1")&&(data.length() == 40)) { // Dữ liệu gửi lên web server 96 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC String temp = String("gateway1-") + l1 + String(";") + l2 + String(";") + l3 + String(";") + l4 + String("-statusA"); temp.toCharArray(mqtt2,100); client.publish(mqtt_topic_pub, mqtt2); sendmqtt(); float t1 = cur.toFloat(); float t2 = alarm.toFloat(); / Serial.println(mqtt2); //Serial.println(t2); // Cập nhật hiển thị blynk tải Blynk.virtualWrite(V11,t1 ); Blynk.virtualWrite(V12,t2 ); if (l1 == "ld1:a") { Blynk.virtualWrite(V21, HIGH); statusld1 = 1; // Blynk.virtualWrite(V12,); } else { Blynk.virtualWrite(V21, LOW); statusld1 = 0; } / Cập nhật hiển thị blynk tải if (l2 == "ld2:a") { Blynk.virtualWrite(V22, HIGH); } else { Blynk.virtualWrite(V22, LOW); } / Cập nhật hiển thị blynk tải if (l3 == "ld3:a") { Blynk.virtualWrite(V23, HIGH); } else { Blynk.virtualWrite(V23, LOW); } / Cập nhật hiển thị blynk tải if (l4 == "ld4:a") { Blynk.virtualWrite(V24, HIGH); } else { Blynk.virtualWrite(V24, LOW); } / Nếu ngưỡng thị bật thông báo sáng đèn warning if (t1 > t2) { warning.on(); Blynk.notify("Current warning!"); 97 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC Serial.println("warning"); over = 0; } else { warning.off(); over = 1; } } } ❖ Chương trình code cho mạch Master // Khai báo thư viện #include #include #include #define ledStatus3 40 #define ledStatus4 38 #define btnSet A14 #define btnMode A12 #define btnDown 34 #define btnUp 32 #define buzz 42 // Khai báo biến boolean status_btn_up = 0; boolean status_btn_set = 0; boolean status_btn_down = 0; boolean check = 0; float CURRENT_ALAMR = 0; / Chuỗi truyền xuống slave tải String warning = "master;warning"; String safety = "master;safety"; / Khai báo dử dụng lcd / Biến lưu liệu nhận từ slave String data = ""; String id = ""; String l1 = ""; String l2 = ""; String l3 = ""; String l4 = ""; String cur = ""; boolean fw = 0; void setup() { Serial.begin(9600); // Khai báo Serial2.begin(9600);// Khai báo Serial2.setTimeout(150); Serial3.begin(9600);// Khai báo Serial3.setTimeout(150); //EEPROM.put(20, CURRENT_ALAMR) EEPROM.get(20, CURRENT_ALAMR) ; eeprom lcd.begin(20,4); // Khai lcd.print("Starting "); delay(500); serial serial2 serial3 ; // Đọc giá trị ngưỡng dòng từ báo lcd 20x4 98 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC Serial.println("Start"); / Khai báo chân, input, output pinMode(ledStatus3, OUTPUT); pinMode(ledStatus4, OUTPUT); pinMode(buzz, OUTPUT); pinMode(btnSet, INPUT); pinMode(btnMode, INPUT); pinMode(btnDown, INPUT); pinMode(btnUp, INPUT); digitalWrite(ledStatus3, LOW); digitalWrite(ledStatus4, LOW); delay(1000); blink_buzz(2); lcd.setCursor(14, 1); lcd.print("Done"); delay(2000); display_setting(); } void loop() { read_input(); if(check == 0){ / Kiểm tra liệu nhận slave gửi if (Serial3.available() > ) { data = Serial3.readString(); data.trim(); // Tách liệu id = getValue(data, ';', 0); l1 = getValue(data, ';', 1); l2 = getValue(data, ';', 2); l3 = getValue(data, ';', 3); l4 = getValue(data, ';', 4); cur = getValue(data, ';', 5); / Kiểm tra dòng cao giá trị ngưỡng báo động gửi cảnh báo slave if (cur.toFloat() > CURRENT_ALAMR) { / blink_buzz(1); digitalWrite(buzz , HIGH); digitalWrite(ledStatus3, HIGH); digitalWrite(ledStatus4, HIGH); fw = 1; Serial3.println(warning); } else { digitalWrite(buzz , LOW); digitalWrite(ledStatus3, LOW); digitalWrite(ledStatus4, LOW); if (fw == 1) { Serial3.println(safety); fw = 0; } } // Xác thực chuỗi nhận có hay khơng 99 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC if ((id == "slave1")&&(data.length() == 35)) { } / Cập nhật hiển thị lcd display_update(); //Gửi liệu lên Esp8266 String data2 = data + String(";") + String(CURRENT_ALAMR); Serial2.println(data2); }// Check chuỗi gửi từ Esp8266 if (Serial2.available() > ) { String data3 = Serial2.readString(); data3.trim(); //Serial.println(data3); / Serial.println(data3.length()); String id2 = getValue(data3, ';', 0); String value = getValue(data3, ';', 1); // Xác thực chuỗi nhận if((id2 == "control")&&(data3.length() == 11)) { / Gửi điều khiển xuống slave Serial.println(data3); Serial3.println(data3); } } } } / -Hàm check nhấn nút -boolean debounce(int pin) { boolean state; boolean previousState; const int debounceDelay = 60; previousState = digitalRead(pin); for (int counter = 0; counter < debounceDelay; counter++) { delay(1); state = digitalRead(pin); if (state != previousState) { counter = 0; previousState = state; } } return state; } / Hàm đọc input, nút nhấn đầu vào void read_input() { int value_set = debounce(btnSet); if (!value_set) // check nút set nhấn { status_btn_set = !status_btn_set; blink_buzz(2); Serial.println("Nut set"); 100 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC } int value_up = debounce(btnUp); if (!value_up) // check nút UP nhấn { //Serial.println("Nut up"); if (status_btn_set == 1) { CURRENT_ALAMR = CURRENT_ALAMR + 0.1 ; / temp = count; //Serial.print("UP "); display_set_cur(); Serial.print(CURRENT_ALAMR); Serial.println("Nut up"); } } int value_down = debounce(btnDown); if (!value_down) // Check nút Down nhấn { //Serial.println("Nut down"); if (status_btn_set == 1) { CURRENT_ALAMR = CURRENT_ALAMR - 0.1 ; / temp = count; / display_segment(TEMP_ALAMR); / Serial.print("Down "); display_set_cur(); Serial.print(CURRENT_ALAMR); Serial.println("Nut down"); } } if(status_btn_set == 1) { check = 1; } if((status_btn_set == 0)&&(check == 1)) { // Lưu gia trị set vào nhớ eeprom EEPROM.put( 20, CURRENT_ALAMR ); check = 0; blink_buzz(2); } } // Hàm hú còi, led báo động void blink_buzz (int n) { for (int i = ; i < n ; i++) { digitalWrite(buzz , HIGH); digitalWrite(ledStatus3, HIGH); digitalWrite(ledStatus4, HIGH); delay (300) ; digitalWrite(buzz , LOW); digitalWrite(ledStatus3, LOW); digitalWrite(ledStatus4, LOW); delay (300) ; } } 101 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC / Hàm hiển thị lcd ban đầu void display_setting() { lcd.clear(); //lcd.setCursor(7, 0); //lcd.print("Monitor"); lcd.setCursor(0, 0); lcd.print("Load1:"); lcd.setCursor(6, 0); lcd.print("on"); lcd.setCursor(11, 0); lcd.print("Load2:"); lcd.setCursor(17, 0); lcd.print("on"); lcd.setCursor(0, 1); lcd.print("Load3:"); lcd.setCursor(6, 1); lcd.print("on"); lcd.setCursor(11, 1); lcd.print("Load4:"); lcd.setCursor(17, 1); lcd.print("on"); lcd.setCursor(0, 2); lcd.print("Current:"); lcd.setCursor(9, 2); lcd.print("0.00/"); lcd.setCursor(14, 2); lcd.print(String(CURRENT_ALAMR)); lcd.setCursor(19, 2); lcd.print("A"); lcd.setCursor(0, 3); lcd.print("Power :"); lcd.setCursor(10, 3); lcd.print(" W"); } // Hàm update hiển thị cho lcd void display_update() { if (l1 == "ld1:a") { lcd.setCursor(6, 0); lcd.print("on "); } else { lcd.setCursor(6, 0); lcd.print("off"); } if (l2== "ld2:a") { lcd.setCursor(17, 0); lcd.print("on "); } else { 102 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC lcd.setCursor(17, 0); lcd.print("off"); } if (l3 == "ld3:a") { lcd.setCursor(6, 1); lcd.print("on "); } else { lcd.setCursor(6, 1); lcd.print("off"); } if (l4 == "ld4:a") { lcd.setCursor(17, 1); lcd.print("on "); } else { lcd.setCursor(17, 1); lcd.print("off"); } lcd.setCursor(9, 2); lcd.print(cur); int w = cur.toFloat() * 220; lcd.setCursor(10, 3); String poe = String(w) + String(" W "); lcd.print(poe); } void display_set_cur() { lcd.setCursor(14, 2); lcd.print(String(CURRENT_ALAMR)); } // Hàm lấy giá trị từ chuỗi String getValue(String data, char separator, int index) { int found = 0; int strIndex[] = {0, -1}; int maxIndex = data.length()-1; for(int i=0; i= printPeriod) { previousMillis = millis(); count++; if (count == 1) { / Đọc nút nhấn read_input(); / Đọc trạng thái tải readstatus(); / Gửi chuỗi truyền lên master String data = String(stringsta) + String(';') + String(temp); Serial.println(data); } else { // Tính giá trị dịng điện Amps_TRMS = intercept + slope * inputStats.sigma(); / Calib giá trị cảm biến temp = abs(Amps_TRMS - 0.18); / Serial.println(stringsta); count = 0; } } } } / Hàm cảnh báo dòng void blink_buzz (int n) { for (int i = ; i < n ; i++) { digitalWrite(buzz , HIGH); delay (300) ; digitalWrite(buzz , LOW); delay (300) ; } } / Hàm check nút nhấn boolean debounce(int pin) 106 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC { boolean state; boolean previousState; const int debounceDelay = 60; previousState = digitalRead(pin); for (int counter = 0; counter < debounceDelay; counter++) { delay(1); state = digitalRead(pin); if (state != previousState) { counter = 0; previousState = state; } } return state; } / Hàm đọc nút nhấn điều khiển void read_input() { boolean value = debounce(btn1); if (!value) { status_btn1 = !status_btn1; action(); } boolean value2 = debounce(btn2); if (!value2) { status_btn2 = !status_btn2; action(); } boolean value3 = debounce(btn3); if (!value3) { status_btn3 = !status_btn3; action(); } boolean value4 = debounce(btn4); if (!value4) { status_btn4 = !status_btn4; action(); } } / Hàm thực thi lệnh điều khiển void action() { if (status_btn1 == 1) { digitalWrite(load1, HIGH); } else digitalWrite(load1, LOW); if (status_btn2 == 1) 107 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC { digitalWrite(load2, HIGH); } else digitalWrite(load2, LOW); if (status_btn3 == 1) { digitalWrite(load3, HIGH); } else digitalWrite(load3, LOW); if (status_btn4 == 1) { digitalWrite(load4, HIGH); } else digitalWrite(load4, LOW); } / Hàm đọc trạng thái tải void readstatus(){ for (int i = ; i < ; i++) { if(digitalRead(load[i]) == 0) { stringsta[sttsta[i]] = 'b'; } else { stringsta[sttsta[i]] = 'a'; } } } / Hàm check lệnh điều khiển void check_control() { if (t2 == "ld1") { status_btn1 = !status_btn1; action(); } if (t2 == "ld2") { status_btn2 = !status_btn2; action(); } if (t2 == "ld3") { status_btn3 = !status_btn3; action(); } if (t2 == "ld4") { status_btn4 = !status_btn4; action(); } } 108 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ... tên ? ?Thi? ??t kế thi cơng hệ thống điều khiển giám sát điện tiêu thụ cho tải thơng qua mạng Internet? ?? Người dùng giám sát điều khiển thi? ??t bị điện từ xa nơi thông qua ứng dụng điện thoại được kết... ? ?Thi? ??t kế thi công hệ thống điều khiển giám sát điện tiêu thụ cho tải thông qua mạng Internet? ?? có giới hạn sau: - Hệ thống gồm board mạch (Master) board mạch phụ (Slave) điều khiển giám sát cho. .. Văn Hạnh Lớp: 15141DT1A MSSV:15141151 Tên đề tài: THI? ??T KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ CHO TẢI THÔNG QUA MẠNG INTERNET Tuần/ngày Nội dung Tuần 1,2 18/03-01/04

Ngày đăng: 26/05/2021, 10:40

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan