(Đồ án hcmute) 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

124 3 0
(Đồ án hcmute) 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

Đ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

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 KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG 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 GVHD: HÀ A THỒI SVTH: TRẦN ANH KHOA MSSV: 15141185 SVTH: NGUYỄN VĂN HẠNH MSSV: 15141151 SKL 0 7 Tp Hồ Chí Minh, tháng 08/2020 an 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 ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -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 MSSV: 15141185 Nguyễn Văn Hạnh 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 an 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 an 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 ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -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 Xác nhận Tuần/ngày Nội dung Tuần 1,2 Gặp GVHD để lựa chọn đề tài tốt nghiệp GVHD 18/03-01/04 viết đề cương chi tiết Tuần 3,4,5 Tìm hiểu linh kiện sử dụng mạch 02/03-25/04 Thiết kế sơ đồ nguyên lí Tuần 6,7,8,9 Lập trình vi điều khiển điều khiển giao tiếp 27/04-25/05 với module mạch Tuần 10,11 Thiết kế App Android, truyền nhận liệu 26/05-09/06 Firebase với App với Esp8266 Tuần 12 10/06-17/06 Tuần 13,14,15 18/06-11/07 Đóng hộp mơ hình, kiểm tra hoạt động hệ thống 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 an 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 an 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 an 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.1 ĐẶT VẤ N ĐỀ 1.2 MỤC TI ÊU Đ Ề T ÀI 1.3 NỘI DUN G TH Ự C HIỆN 1.5 BỐ CỤC ĐỒ Á N CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 TẦM QUA N TRỌNG CỦA V IỆ C QUẢN LÝ ĐI Ệ N NĂNG 2.2 CÔN G NG H Ệ IOT 2.3 GIỚI TH IỆU V Ề PHẦN CỨ NG 2.3.1 Giớ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 GI AO TI ẾP U ART 25 2.7 CÁC LOẠI M ODULE TTHU P HÁT SÓ NG RF 28 2.8 NGU ỒN CU N G 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 3.1 GIỚI THI ỆU 33 v an 3.2 TÍN H TỐ 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 4.1 GIỚI THI ỆU 50 4.2 THI CÔNG H Ệ THỐN G 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 4.3 LẬP TRÌN H H Ệ THỐ NG 58 4.3.1 Lưu đồ giải thuật 58 4.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 5.1 GIỚI TH IỆU 79 5.2 KẾT QU Ả ĐẠT Đ ƯỢC 79 5.3 KẾT QUẢ T HỰC NG HIỆ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 5.4 NHẬ N XÉT – ĐÁNH G IÁ 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 89 6.1 KẾT LU ẬN 89 6.2 HƯỚNG PHÁT T RI ỂN 89 TÀI LIỆU THAM KHẢO 90 PHỤ LỤC 91 vi an 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 an 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 an 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 an 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 an 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 an 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 LiquidCrystal lcd(A0, A2 , A4, A6, A8, A10); // 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 serial Serial2.begin(9600);// Khai báo serial2 Serial2.setTimeout(150); Serial3.begin(9600);// Khai báo serial3 Serial3.setTimeout(150); //EEPROM.put(20, CURRENT_ALAMR) ; EEPROM.get(20, CURRENT_ALAMR) ; // Đọc giá trị ngưỡng dòng từ eeprom lcd.begin(20,4); // Khai báo lcd 20x4 lcd.print("Starting "); delay(500); 98 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 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 an 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 an 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 an 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 an 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 an 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 an 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 an S an K L 0 ... 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. .. 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

Ngày đăng: 02/02/2023, 09:30

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

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

Tài liệu liên quan