1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

117 19 0

Đ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

Nội dung

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 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 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ừ Slave 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 Hình 4.25: Giao diện lập trình arduino 83 Hình 4.26: Giao diện menu arduino IDE 84 Hình 4.27: Giao diện file menu arduino IDE 84 Hình 4.28: Giao diện Examples menu 85 Hình 4.29: Giao diện Sketch Menu Arduino IDE 86 Hình 4.30: Giao diện edit menu arduino IDE 86 Hình 4.31: Giao diện Tool Menu Arduino IDE 87 Hình 4.32: Board ESP8266 sử dụng 87 Hình 4.33: Arduino Toolbar 88 Hình 4.34: Chương trình nạp thành cơng 88 Hình 4.35: Thêm thư viện Blynk vào Arduino IDE 89 Hình 4.36: Giao diện khởi tạo blynk 90 Chương Hình 5.1: Khi cấp nguồn cho Slave Master gửi tín hiệu yêu cầu kết nố i 93 Hình 5.2: Slave kết nối bắt đầu gửi giữ liệu cho Master 93 Hình 5.3: Master hiển thị trạng thái thiết bị Slave điều khiển tay với tải bóng đèn 94 Hình 5.4: Trạng thái báo Warning dòng điện gửi Master lớn ngưỡng 95 Hình 5.5: Trạng thái báo Internet được kết nối 95 Hình 5.6: App Blynk 96 Hình 5.7: Đăng nhập ứng dụng Blynk 96 Hình 5.8: Điều khiển thiết bị từ xa thông qua App Blynk 97 Hình 5.9: Master nhận lệnh điều khiển từ App gửi qua Slave để điều khiển thiết bị 97 Hình 5.10: Trạng thái báo Warning cho thiết bị 98 xi Hình 5.11: Sử dụng App Blynk đổi địa wifi 98 Hình 5.12: Đổi địa wifi thành công 99 xii DANH SÁCH BẢNG VẼ Chương Bảng 2.1: Bảng so sánh thông số ESP-01, ESP-12E Node MCU, Wemos D1 Mini Bảng 2.2: Thông số chân Board ESP-12E Node MCU 10 Bảng 2.3: Thông số kĩ thuật Arduino Nano 12 Bảng 2.4: Thông số chân LCD 20x4 14 Bảng 2.5: Các Mode hoạt động Module LORA E32 -TTL-100 19 Bảng 2.6: Phân loại tần số song vô tuyến 30 Chương Bảng 3.1: Tính tốn dịng điện linh kiện sử dụng mạch Master 59 Bảng 3.2: Tính tốn dịng điện linh kiện sử dụng mạch Slave 60 xiv TÓM TẮT Cùng với phát triển kinh tế đất nước, nhu cầu tiêu thụ điện ngày cao khả cung cấp điện nhiều khó khăn, từ vấn đề sử dụng điện tiết kiệm, hiệu trở thành vấn đề cấp bách Việc ý thức tiết kiệm điện người dân chưa được nâng cao, biện pháp đề để tiết kiệm điện cịn việc áp dụng vào thực tiễn nhiều bất cập Để tiết kiệm điện phụ thuộc yếu tố: thiết bị điện thói quen sử dụng người Người dùng thường bận rộn với cơng việc nên có thời gian giám sát được việc sử dụng thiết bị gia đình hay quan, dẫn đến nhiều thiết bị hoạt động khơng cần thiết, gây lãng phí lượng điện tăng chi phí điện cho gia đình, quan Để giải vấn đề quản lý giảm sát được việc sử dụng điện nhà, nhóm nảy sinh ý tưởng thiết kế hệ thống giúp người dùng tiết kiệm điện qua việc giám sát lượng điện định ngưỡng tiêu thụ điện ngày tháng Khi lượng điện vượt mức giới hạn thơng báo cho người dùng biết mà đưa việc điều khiển thiết bị điện phù hợp Ngồi ra, người dùng theo dõi thiết bị nhà từ xa qua điện thoại internet xv CHƯƠNG TỔNG QUAN CHƯƠNG 1: TỔNG QUAN ĐẶT VẤN ĐỀ 1.1 Hiện nay, việc quản lý giám sát điện tiêu thụ nhà máy, khu công nghiệp, hộ gia đình, trường học chìa khóa để tiết kiệm lượng cho phủ năm gần chịu áp lực kinh tế môi trường Quản lý giám sát điện giúp giảm phụ thuộc vào nhiên liệu hóa thạch ngày trở nên cạn kiệt Điện đóng vai trị lớn sống nay, đời sống được sử dụng để thắp sáng, dùng để chạy máy điều hòa, quạt điện, tivi…Đối với sản xuất thiếu điện năng, điện nguồn lượng có vai trò cốt yếu đời sống sinh hoạt sản xuất Phần lớn điện được tạo từ nước, than, dầu khí… nguồn lượng thiên nhiên vậy, sử dụng lãng phí nguồn tài ngun nhanh chóng cạn kiệt Từ thấy tầm quan trọng việc giám sát quản lý điện tiêu thụ cần thiết Trên sở tìm hiểu IoT nhằm giám sát điện thông số khác hệ thống điện từ xa qua internet, nhu cầu có thật tăng cao thời gian gần Đặc biệt sau đợt giá điện tăng, nhiều nhà máy tiết kiệm điện hiệu sau có kết theo dõi Với thiết bi ̣quan sát điện từ xa, nhìn thấy thơng số hệ thống điện điện áp, dịng điện, tần số, cơng suất, hệ số công suất, nhà máy phận lúc mà ta không cần phải có mặt nhà máy Chúng ta cần thiết bị di động smartphone quan sát được thông số hệ thống điện nhà máy Hệ thống quản lý điện giúp nhà quản lý đánh giá tiêu thụ điện để thực tiết kiệm chi phí lượng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 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 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 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. .. – dòng điện cho hệ thống 3.2 TÍNH TỐN VÀ THI? ??T KẾ HỆ THỐNG 3.2.1 Thi? ??t kế sơ đồ khối hệ thống Với yêu cầu đưa nhóm thực hình thành sơ đồ khối cho hệ thống sau Hình 3.1: Sơ đồ khối hệ thống Chức

Ngày đăng: 01/11/2022, 12:58

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w