Tên đề tài: Thiết kế và thi công đồng hồ đo điện năng DC, AC giám sát dữ liệu trên Internet.. PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ và tên Sinh viên: Nguyễn Hoàng Nam MSSV: 18161113
TỔNG QUAN
ĐẶT VẤN ĐỀ
Công nghệ IoTs (Internet of Things) đang trở thành xu hướng phát triển mạnh mẽ trong ngành công nghệ toàn cầu IoTs là sự kết nối giữa các thiết bị với Internet, cho phép chúng giao tiếp lẫn nhau và với máy tính bảng, tạo thành một hệ thống thông minh để trao đổi dữ liệu và điều khiển Xu hướng này ngày càng ảnh hưởng lớn đến đời sống con người và có ứng dụng rộng rãi trong nhiều lĩnh vực, đặc biệt là ngành Điện trong tương lai.
Việc sử dụng IoTs trong ngành Điện, bao gồm kiểm soát giám sát và thu thập dữ liệu (SCADA) cùng với cơ sở hạ tầng (AMI), có thể nâng cao hiệu suất và hiệu quả của lưới điện IoTs cải thiện khả năng phục hồi của lưới điện thông qua việc thu thập dữ liệu từ cảm biến, cho phép các tiện ích chủ động quản lý và phân bổ nguồn lực, tối ưu hóa việc sử dụng và cung cấp điện Hệ thống quản lý công nghệ truyền thông tiên tiến giúp giám sát và vận hành dễ dàng, giảm chi phí nhân công và tăng độ tin cậy cho doanh nghiệp Dữ liệu được truyền về máy tính trung tâm và sao lưu, giúp quản lý hiệu quả hơn Phần mềm với giao diện trực quan hỗ trợ quản lý vận hành và truy xuất dữ liệu nhanh chóng Tuy nhiên, nhiều doanh nghiệp trong nước vẫn chưa thể áp dụng công nghệ này do thiếu kinh phí, dẫn đến tình trạng hao hụt và quá tải, gây thiệt hại nghiêm trọng trong quá trình sản xuất.
Nhằm tạo ra một hệ thống giám sát điện năng đơn giản và hiệu quả, nhóm nghiên cứu đã chọn đề tài “Thiết kế và thi công đồng hồ đo điện năng” dưới sự định hướng của thầy Trương Ngọc Anh, với mục tiêu tìm ra hướng đi mới cho các doanh nghiệp và ngành Điện.
AC, DC giám sát dữ liệu qua Internet”
Luận án khảo sát các phương pháp giám sát điện năng qua Internet, như sử dụng module SIM kết hợp RS232 và RS485 theo Modbus RTU Tuy nhiên, mạng GSM gặp khó khăn như trễ tin nhắn và sóng yếu, chỉ giám sát được trên máy tính Các phương pháp khác như phần mềm Acuview và PLC S7-400 có chi phí cao Đề tài “Thiết kế và thi công đồng hồ đo điện năng AC, DC giám sát dữ liệu trên Internet” nghiên cứu giao tiếp với thiết bị điện qua IoTs, hỗ trợ giám sát và quản lý điện năng từ xa, sử dụng vi điều khiển và truyền dữ liệu qua WiFi, không bị hạn chế khoảng cách.
MỤC TIÊU CỦA ĐỀ TÀI
Hệ thống giám sát điện năng từ xa được thiết kế và thi công để theo dõi các thông số nguồn AC và DC như dòng điện, điện áp, tần số và công suất tiêu thụ Người dùng có thể giám sát các thông số này thông qua nền tảng Web và ứng dụng điện thoại từ bất kỳ đâu có kết nối Internet.
NỘI DUNG NGHIÊN CỨU
Quá trình thực hiện đồ án thông qua 8 nội dung nghiên cứu sau:
- Nội dung 1: Tìm hiểu và tham khảo các tài liệu, giáo trình, nghiên cứu các chủ đề, các nội dung liên quan đến đề tài
- Nội dung 2: Lập trình giao tiếp với module PZEM004T, PZEM017 để đo các thông số điện năng
- Nội dung 3: Viết chương trình cho ESP8266 gửi dữ liệu lên Web và đồng bộ trên App Smartphone
- Nội dung 4: Kết nối phần cứng giữa PZEM004T, PZEM017, Esp8266, LCD
- Nội dung 5: Thiết kế và thi công mô hình thiết bị hoàn thiện
- Nội dung 6: Xây dựng giao diện Web, App, kho lưu trữ dữ liệu
- Nội dung 7: Chạy thử nghiệm và cân chỉnh hệ thống
- Nội dung 8: Viết báo cáo luận án.
PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp điều tra khảo sát là nghiên cứu thực trạng và nhu cầu ứng dụng của đề tài trong thực tế, từ đó xác định mục tiêu cụ thể cho nghiên cứu.
Phương pháp chọn mẫu: Chọn mẫu có chủ đích có ứng dụng thực tế cao đáp ứng được mục tiêu đề ra của đề tài
Phương pháp thử nghiệm: Tiến hành thử nghiệm, kiểm tra và điều chỉnh hoạt động của mô hình.
BỐ CỤC ĐỒ ÁN
Chương 1: Tổng quan: Trình bày lí do chọn đề tài, tình hình nghiên cứu trong và ngoài nước, mục tiêu hướng tới, phương pháp nghiên cứu của đề tài và bố cục đồ án
Chương 2: Cơ sở lí thuyết: Trình bày tóm tắt cơ sở lí thuyết sẽ sử dụng để giải quyết vấn đề
Chương 3: Thiết kế và xây dựng hệ thống: Trình bày yêu cầu, sơ đồ khối hệ thống, hoạt động của hệ thống, tính toán và thiết kế phần cứng và phần mềm
Chương 4: Thi công hệ thống: Trình bày các bước thi công phần cứng cũng như thiết kế phần mềm của hệ thống thực tế đã làm trong quá trình nghiên cứu
Chương 5: Kết quả, nhận xét, đánh giá: Mô tả kết quả đạt được, nêu những vấn đề chưa được giải quyết
Chương 6: Kết luận và hướng phát triển: Đưa ra kết luận là đã hoàn thành theo như mục tiêu đề ra hay chưa, nêu hướng phát triển của đề tài.
CƠ SỞ LÝ THUYẾT
TẦM QUAN TRỌNG CỦA VIỆC QUẢN LÝ ĐIỆN NĂNG
Giám sát chất lượng điện năng mang lại nhiều lợi ích cho người dân, giúp phát hiện sớm các sự cố trong quá trình sản xuất Nghiên cứu cho thấy hầu hết các vấn đề xảy ra đều liên quan đến hoạt động sản xuất Việc này không chỉ giúp khách hàng kịp thời bảo trì, bảo dưỡng mà còn tránh được tổn thất lớn cho doanh nghiệp.
Trong sản xuất, độ tin cậy và tính nhất quán của nguồn cung cấp điện là yếu tố quan trọng cho hoạt động của các nhà máy và dịch vụ Các vấn đề phát sinh từ chất lượng điện kém, sụt áp hoặc sinh hài có thể gây ảnh hưởng nghiêm trọng Do đó, lắp đặt hệ thống giám sát điện năng sẽ hỗ trợ doanh nghiệp trong việc cải thiện hiệu suất và giảm thiểu rủi ro.
- Giám sát và quản lý dòng điện chính xác rõ ràng, cho số liệu chi tiết, xuất báo cáo theo từng ngày, tháng cụ thể
- Thường xuyên cập nhật thông tin dữ liệu tiêu thụ của doanh nghiệp
- Cảnh báo sớm sự cố kịp thời, hạn chế việc hư hỏng thiết bị toàn hệ thống
- Giảm công sức kiểm tra trực tiếp, thay vào đó có thể kiểm soát từ xa
- Kéo dài tuổi thọ của các thiết bị điện một cách tối ưu
- Là cơ sở dữ liệu để xem xét để thay thế sử dụng các thiết bị tiết kiệm điện năng hiệu quả.
GIỚI THIỆU VỀ MỘT SỐ HỆ THỐNG GIÁM SÁT VÀ QUẢN LÝ ĐIỆN NĂNG TỪ XA TRONG THỰC TẾ
2.2.1 Hệ thống giám sát và quản lý điện năng ứng dụng SCADA
Hệ thống SCADA giám sát và quản lý điện năng do ATSCADA Lab phát triển là một giải pháp hoàn chỉnh, đã được lắp đặt thành công cho nhiều đơn vị sản xuất công nghiệp.
Hệ thống chuyển đổi tín hiệu từ Modbus RTU sang Modbus TCP/IP sử dụng mạng LAN có sẵn trong tòa nhà và nhà máy tại các khu công nghiệp, cho phép truyền tín hiệu với tốc độ cao Giải pháp này giúp tiết kiệm chi phí kéo dây từ các vị trí đến trung tâm giám sát.
Hình 2.1 Mô hình hệ thống giám sát điện năng SCADA
Các tham số điện trong hệ thống sản xuất được đo bằng các thiết bị chuyên dụng, có khả năng kết nối với thiết bị ngoại vi để tích hợp vào hệ thống SCADA, giúp giám sát và quản lý điện năng hiệu quả.
Trong hệ thống giám sát và quản lý, phần mềm giám sát cho phép người quản lý thực hiện các thao tác trực tiếp trên giao diện, giúp nâng cao hiệu quả quản lý.
Các tham số được trình bày một cách trực quan qua bảng số liệu và đồ thị, giúp người dùng dễ dàng xem, thao tác và xuất báo cáo cơ sở dữ liệu theo thời gian và đối tượng cụ thể.
Lợi ích của việc áp dụng hệ thống SCADA giám sát và quản lý điện năng:
- Giám sát và quản lý tập trung toàn bộ hệ thống
- Hệ thống hoạt động liên tục 24/24
- Kiểm soát tần số, điện áp, dòng điện, công suất phản kháng điện năng tiêu thụ,…trực quan và chính xác
- Chức năng cảnh báo từ hệ thống giúp tăng khả năng đáp ứng nhanh chóng, xử lý sự cố triệt để
- Xuất báo cáo hệ thống tự động theo đối tượng, theo thời gian, theo mẫu
- Tiết kiệm thời gian và chi phí nhân công giám sát tại chỗ
- Giảm tối đa các sai sót so với quá trình thực hiện giám sát thủ công
- Chủ động lên kế hoạch bảo trì, bảo dưỡng tránh thời gian cháy máy
- Đưa ra các quyết định hợp lý trong sữa chữa hoặc đầu tư mới để đạt hiệu quả tốt nhất
2.2.2 Đồng hồ phân tích chất lượng điện năng (SFERE 720C) cho các hệ thống giám sát điện thông minh, chất lượng cao
Đồng hồ phân tích chất lượng điện năng SFERE 720C là thiết bị phổ biến trong hệ thống giám sát điện Với thiết kế hình vuông nhỏ gọn, sản phẩm này có cấu tạo đơn giản, giúp việc lắp đặt và sử dụng trở nên dễ dàng.
SFERE 720C là thiết bị thu thập dữ liệu lý tưởng cho hệ thống phân phối điện thông minh và tự động hóa nhà máy Dữ liệu được giám sát có sẵn qua cổng giao tiếp kỹ thuật số RS485 tiêu chuẩn, hỗ trợ giao thức Modbus RTU cùng với các giao thức khác như Modbus TCP/IP và Bacnet.
Hình 2.2 Đồng hồ SFERE 720C thực tế
SFERE 720C được đi kèm với phần mềm Eplan, cho phép người dùng có thể theo dõi chất lượng điện ngay tại máy tính
Hình 2.3 Giao diện phần mềm Eplan
Dữ liệu hiển thị trên màn hình được lưu trữ trong lịch sử, giúp người theo dõi phân tích tình trạng hoạt động của điện năng, xác định xem có đang quá tải hoặc vượt mức cho phép hay không, từ đó đưa ra các giải pháp phù hợp khi xảy ra sự cố.
Với những tính năng nổi bật, SFERE 720C được sử dụng phổ biến trong việc thu thập dữ liệu tại các tải, site và tụ điện Thiết bị này hỗ trợ các hệ thống quản lý năng lượng và giám sát trực quan, cả tại chỗ lẫn từ xa, giúp theo dõi và đánh giá các thông số điện, mang lại hiệu quả cao trong công việc.
CÔNG NGHỆ IoTs
IoTs (Internet of Things) là thuật ngữ chỉ các đối tượng có khả năng nhận biết và tồn tại trong một kiến trúc kết nối Trong viễn cảnh này, mọi vật, động vật và con người đều được cung cấp định danh và khả năng tự động truyền tải dữ liệu qua mạng mà không cần tương tác giữa con người với nhau hoặc giữa con người với máy tính IoTs phát triển từ sự hội tụ của công nghệ không dây, hệ thống vi cơ điện tử (MEMS) và Internet Thuật ngữ này được Kevin Ashton, nhà khoa học sáng lập trung tâm Auto-ID tại MIT, giới thiệu vào năm 1999.
2.3.2 Giao thức kết nối WiFi
WiFi (Wireless Fidelity hay mạng 802.11) là hệ thống không dây sử dụng sóng vô tuyến, tương tự như điện thoại di động, truyền hình và radio Kết nối WiFi thường được ưa chuộng bởi tính phổ biến và chi phí hợp lý, đặc biệt trong các mạng LAN với mô hình kết nối trong một phạm vi địa lý hạn chế.
Sóng vô tuyến dùng cho WiFi tương tự như sóng vô tuyến cho điện thoại di động và các thiết bị khác, có khả năng chuyển và nhận sóng, cũng như chuyển đổi mã nhị phân 0 và 1 Tuy nhiên, sóng WiFi khác biệt ở chỗ chúng hoạt động ở tần số 2.4 GHz hoặc 5 GHz, cao hơn so với tần số của điện thoại di động, thiết bị cầm tay và truyền hình Tần số cao hơn này cho phép tín hiệu truyền tải nhiều dữ liệu hơn.
- Dãy tần số hoạt động: 2.4GHz và 5 GHz bands
- Tốc độ xử lý tối đa: 600 Mbps.
CHUẨN TRUYỀN DỮ LIỆU MODBUS RTU
Giao thức Modbus RTU là một chuẩn truyền nối tiếp, trong đó các cảm biến và cơ cấu chấp hành thường hoạt động như Slave Các thiết bị như máy tính, PLC, vi điều khiển và thiết bị HMI có thể đảm nhận vai trò Master, nhưng đôi khi cũng có thể hoạt động như Slave.
Hình 2.4 Mô phỏng kết nối giữa Modbus RTU Master- Modbus RTU Slaves
Giao thức Modbus RTU được xây dựng trên nền tảng giao thức truyền thông nối tiếp UART, một giao thức phổ biến trong vi điều khiển UART định nghĩa cấu trúc của một gói tin, và nội dung của các tin nhắn Modbus được tạo thành từ nhiều gói tin kết hợp lại.
Một bản tin Modbus RTU bao gồm: 1 byte địa chỉ - 1 byte mã hàm – n byte dữ liệu – 2 byte CRC Chức năng và vai trò cụ thể như sau:
Byte địa chỉ xác định thiết bị nhận dữ liệu (đối với Slave) hoặc dữ liệu nhận từ địa chỉ vào (đối với Master) Địa chỉ này được quy định trong khoảng từ 0 đến 254.
- Byte mã hàm: được quy định từ Master, xác định yêu cầu dữ liệu từ thiết bị Slave
- Byte dữ liệu: xác định dữ liệu trao đổi giữa Master và Slave
Master: 2 byte địa chỉ dữ liệu – 2 byte độ dài dữ liệu
Slave: 2 byte địa chỉ dữ liệu – 2 byte độ dài dữ liệu – n byte dữ liệu đọc được
Master: 2 byte địa chỉ dữ liệu – 2 byte độ dài dữ liệu – n byte dữ liệu cần ghi
Slave: 2 byte địa chỉ dữ liệu – 2 byte độ dài dữ liệu
- Byte CRC: 2 byte kiểm tra lỗi của hàm truyền, cách tính giá trị của Byte CRC
Giao thức UART trong vi điều khiển sử dụng chuẩn TTL hoặc CMOS Để giao tiếp với các thiết bị sử dụng giao thức Modbus RTU, cần thiết phải có mạch chuyển đổi TTL/CMOS-RS232 hoặc TTL/CMOS-RS485.
Hình 2.5 Kết nối phần cứng để sử dụng vi điều khiển chuẩn TTL với các thiết bị
GIỚI THIỆU PHẦN CỨNG
Hệ thống được thiết kế có sử dụng các module, các thiết bị sau:
Thiết bị đầu vào cảm biến dòng điện PZCT-2 100A và module đo điện áp PZEM-004T, PZEM017.
Module giúp chuyển đổi điện áp TTL sang giao tiếp RS-485.
Thiết bị đầu ra LCD 16x02.
Thiết bị xử lý trung tâm là vi điều khiển node MCU ESP8266.
Các chuẩn truyền dữ liệu I2C, Internet.
Thiết bị cung cấp nguồn 5V thông qua mạch nguồn thiết kế.
Nguồn ắc quy(12V) / pin cell 3,7V.
Thiết bị giao diện giám sát websever gồm laptop, smartphone.
2.5.1 Module đo thông số điện xoay chiều PZEM-004T
Module PZEM-004T cung cấp nhiều tính năng hữu ích như đo áp, đo dòng và công suất của thiết bị điện gia đình, đồng thời có bộ nhớ lưu trữ chỉ số tiêu thụ điện giống như công tơ điện Các thông số đo đạt được khá chính xác và hoàn thiện Tuy nhiên, PZEM-004T không có màn hình hiển thị trực tiếp, mà thay vào đó, truyền các giá trị đo qua giao tiếp UART đến máy tính hoặc vi xử lý.
Hình 2.6 Hình ảnh thực tế PZEM-004T
Hình 2.7 Sơ đồ nối dây của PZEM-004T
Bảng 2.1 Thông số kỹ thuật của PZEM-004T Điện áp đo 80 ~ 260 VAC
Tần số dòng điện đo 45 – 65 Hz
Module kết nối đơn giản với tổng cộng 8 ngõ, bao gồm 4 ngõ cho điện áp AC và 4 ngõ cho giao tiếp với thiết bị DC Để đảm bảo an toàn, nhà sản xuất sử dụng Opto quang để cách ly giữa điện áp AC và DC Các cổng giao tiếp với thiết bị xử lý bao gồm 2 chân nguồn GND và 5V, cùng 2 chân TX, RX cho giao tiếp UART Ngoài ra, có 2 chân kết nối trực tiếp với điện lưới để đo điện áp và cung cấp nguồn cho các IC xử lý, cùng 2 chân kết nối với cuộn cảm CT để đo dòng tải thiết bị điện Sơ đồ kết nối chi tiết có thể tham khảo bên dưới.
Phương pháp xử lí dữ liệu với PZEM004T
Hiện nay, module PZEM-004T đã được hỗ trợ tốt bởi thư viện Arduino Tuy nhiên, để làm việc một cách chuyên nghiệp hơn với module này, người dùng cần làm quen với việc xử lý dữ liệu trên các thanh ghi của nó, mỗi thanh ghi chứa 8 bit dữ liệu (1 byte).
Giao tiếp UART của module sử dụng 8 bit dữ liệu truyền nối tiếp, trong đó byte đầu tiên luôn là địa chỉ của module, có giá trị từ 0x01 đến 0xF7 Các byte tiếp theo phụ thuộc vào chức năng mà người dùng muốn giao tiếp với module.
Cấu trúc lệnh để vi xử lý có thể yêu cầu module gửi kết quả đo là:
“Địa chỉ module + 0x04 + 2 byte địa chỉ thanh ghi + 2 byte số lượng thanh ghi + 2 byte CRC kiểm tra.”
Địa chỉ module (1 byte): như đã nói ở trên, giá trị mặc định thường là 0x01
0x04 (1 byte): byte báo hiệu dữ liệu sử dụng cho việc truyền nhận dữ liệu đo
Địa chỉ thanh ghi (2 bytes): địa chỉ thanh ghi đầu tiên để lấy dữ liệu
Số lượng thanh ghi (2 bytes): số lượng thanh ghi yêu cầu module gửi
CRC kiểm tra (2 bytes): bit kiểm tra dữ liệu của phần cứng
Cấu trúc lệnh module trả về cho vi xử lý:
“Địa chỉ module + 0x04 + 1 byte số lượng thanh ghi + 2 byte dữ liệu + byte dữ liệu + … + 2 byte CRC kiểm tra.”
Địa chỉ module (1 byte): như đã nói ở trên, giá trị mặc định thường là 0x01
0x04 (1 byte): byte báo hiệu dữ liệu sử dụng cho việc truyền nhận dữ liệu đo
Số lượng thanh ghi (1 byte): báo số lượng thanh ghi (số byte) của dữ liệu đo mà module sẽ gửi
Byte dữ liệu: lần lượt các byte dữ liệu đo như điện áp, dòng điện, công suất,…sẽ được sắp xếp nối tiếp nhau theo bảng bên dưới
CRC kiểm tra (2 bytes): bit kiểm tra dữ liệu của phần cứng
Bảng 2.2 Bảng sắp xếp thứ tự thanh ghi Địa chỉ thanh ghi Mô tả Độ phân giải
0x0000 Giá trị điện áp 1 bit thấp nhất tương ứng với 0,1V
0x0001 Giá trị dòng điện (16 bits thấp) 1 bit thấp nhất tương ứng với 0,001A
0x0002 Giá trị dòng điện (16 bits cao)
0x0003 Giá trị công suất (16 bits thấp) 1 bit thấp nhất tương ứng với 0,1W
0x0004 Giá trị công suất (16 bits cao)
0x0005 Giá trị chỉ số (16 bits thấp) 1 bit thấp nhất tương ứng với 1Wh
0x0006 Giá trị chỉ số (16 bits cao)
0x0007 Giá trị tần số (16 bits) 1 bit thấp nhất tương ứng với 0,1Hz
0x0008 Giá trị hệ số công suất (16 bits) 1 bit thấp nhất tương ứng với 0,01
*Để hiểu rõ hơn ta có thể lấy 1 ví dụ:
Vi xử lý sẽ gửi 1 chuỗi giá trị như sau:
Như vậy, ta sẽ phân tích:
0x01: địa chỉ mặc định của module
0x04: báo hiệu truyền nhận dữ liệu đo
0x00 + 0x00: 2 bytes cho biết địa chỉ đầu tiên muốn nhận dữ liệu
0x00 + 0x09: cho biết vi xử lý muốn nhận 9 thanh ghi dữ liệu
0xHH + 0xLL: ký hiệu cho CRC check byte Phần này do module tự thực hiện, người thiết kế không cần quan tâm
Sau đó, module sẽ trả về 1 chuỗi giá trị như sau:
0x01: địa chỉ mặc định của module
0x04: báo hiệu truyền nhận dữ liệu đo
0x : có tổng cộng … thanh ghi dữ liệu được gửi đi
0x08 + 0x98: giá trị điện áp, ghép lại được 16 bit có giá trị là 0x0898 chuyển sang thập phân là 2200 nên giá trị điện áp là 220,0V
0x03 + 0xE8 + 0x00 + 0x00: giá trị dòng điện, ghép lại được 32 bit: 0x000003E8 chuyển sang thập phân là 1000 nên giá trị dòng điện là 1A
0x08 + 0x98 + 0x00 + 0x00: giá trị công suất, ghép lại được 32 bit: 0x00000898 chuyển sang thập phân là 2200 nên giá trị công suất là 220,0W
0x00 + 0x00 + 0x00 + 0x00: giá trị số chỉ tiêu thụ, ghép lại được 32 bit: 0x00000000 chuyển sang thập phân là 0 nên giá trị số chỉ là 0kWh
0x01 + 0xF4: giá trị tần số, ghép lại được 16 bit: 0x01F4 chuyển sang thập phân là 500 nên giá trị tần số là 50,0Hz
0x00 + 0x64: giá trị hệ số công suất, ghép lại được 16 bit: 0x0064 chuyển sang thập phân là 100 nên giá trị hệ số công suất là 1,00
0xHH + 0xLL: ký hiệu cho CRC check byte Phần này do module tự thực hiện, người thiết kế không cần quan tâm
Cấu trúc lệnh để reset giá trị số chỉ tiêu thụ:
“Địa chỉ module + 0x42 + 2 byte CRC kiểm tra”
Cũng như trên nhưng khác ở chỗ thay 0x04 thành 0x42 để báo cho module xoá dữ liệu số chỉ được lưu trong thanh ghi
Hình 2.8 Sơ đồ khối xử lý của module PZEM-004T-100A
2.5.2 Cảm biến dòng điện PZCT-02 100A
Hình 2.9 Hình ảnh thực tế Cảm biến dòng điện PZCT-02- 100A
Bảng 2.3 Thông số kỹ thuật Cảm biến dòng điện PZCT-2 100A
Nhiệt độ môi trường -40 – 85°C Độ ẩm tương đối ≤ 90% (40 ℃)
Tần số làm việc 50Hz ~ 60Hz
Cách nhiệt B cao cấp (130℃) Điện trở cách nhiệt > 1000MΩ thông thường
Cảm biến đo năng lượng đặc biệt này hoạt động với nguồn điện AC 220V và 380V, mang lại tính linh hoạt trong ứng dụng Nó sở hữu tính chất cơ học tốt và khả năng kháng môi trường, đồng thời mạch điện áp được thiết kế để đảm bảo sự cô lập, an toàn và đáng tin cậy.
2.5.3 Module đo thông số điện một chiều PZEM-017
PZEM-017 được sử dụng để đo và theo dõi 4 thông số của hệ thống điện DC bao gồm điện áp, dòng điện, công suất và năng lượng tiêu thụ
Hình 2.10 Hình ảnh PZEM-017 thực tế
Bảng 2.4 Bảng thông số kỹ thuật của PZEM-017
Model PZEM-017 kèm trở Shunt 100A Điện áp đo và hoạt động 0,05~300VDC, sai số 0,01
Dòng điện đo và hoạt động 0,02~100A, sai số 0,01
Công suất đo và hoạt động 0,2~90kW, sai số 0,01
Năng lượng đo và hoạt động 0~9999kWh
Giao tiếp RS485 modbus baudrate 9600
The module utilizes the Modbus-RTU protocol for communication and currently supports addresses such as 0x03 (Read Holding Register), 0x04 (Read Input Register), 0x06 (Write Single Register), 0x41 (Calibration), and 0x42 (Reset Energy), among others.
Phạm vi địa chỉ của slave là từ 0x01 đến 0xF7, trong khi địa chỉ 0x00 được sử dụng làm địa chỉ bắt đầu và không có phản hồi từ slave đến master Địa chỉ 0xF8 được sử dụng làm địa chỉ chung.
Cấu trúc lệnh cho vi xử lý để nhận kết quả đo từ module bao gồm: Địa chỉ module, 0x04, địa chỉ thanh ghi byte cao, địa chỉ thanh ghi byte thấp, số thanh ghi byte cao, số thanh ghi byte thấp, và CRC kiểm tra byte cao.
CRC Kiểm tra Byte thấp
Cấu trúc lệnh để module phản hồi kết quả đo là:
Kết quả đúng: Địa chỉ Slave + 0x04 + Số byte + 1 byte thanh ghi dữ liệu cao
+ 1 byte thanh ghi dữ liệu thấp + + CRC kiểm tra byte cao + CRC kiểm tra byte thấp
Kết quả lỗi: Địa chỉ Slave + 0x84 + mã lỗi + CRC kiểm tra byte cao + CRC kiểm tra byte thấp
Cấu trúc lệnh để reset giá trị số chỉ tiêu thụ:
“Địa chỉ module + 0x42 + CRC kiểm tra byte cao + CRC kiểm tra byte thấp”
Hình 2.11 Sơ đồ khối xử lý của module PZEM-004T-100A
2.5.4 Điện trở Shunt 100A 75mV Điện trở Shunt là một điện trở có độ chính xác cao được dùng để đo dòng điện chạy qua mạch Shunt được sử dụng trong điện kế để đo dòng điện lớn Nó được kết nối song song với mạch của điện kế nên có thể dễ dàng tính được dòng điện
Hình 2.12 Hình ảnh thực tế điện trở Shunt 100A-75mV
Cách tính điện trở Shunt: dựa vào dòng điện định mức tối đa Giá trị điện trở được cho bởi điện áp rơi ở dòng điện mức tối đa
Vd: Một điện trở shunt định mức 100A và 50 mV có điện trở 50/100 = 0,5 mOhm Điện áp rơi ở dòng điện tối đa thường được định mức là 50, 75 hoặc 100 mV
Các thông số quan trọng của điện trở bao gồm dung sai, hệ số nhiệt độ và công suất định mức Công suất định mức xác định lượng điện mà điện trở có thể tiêu tán mà không bị hỏng ở nhiệt độ môi trường nhất định Điện trở Shunt thường có hệ số suy giảm 66% để duy trì hoạt động liên tục trong hơn 2 phút Nhiệt độ cao ảnh hưởng tiêu cực đến độ chính xác của Shunt, bắt đầu từ 80 độ C, hiện tượng trôi nhiệt sẽ xảy ra và trở nên nghiêm trọng hơn khi nhiệt độ tăng Khi nhiệt độ đạt 140 độ C trở lên, điện trở sẽ bị hỏng và giá trị điện trở sẽ thay đổi vĩnh viễn.
2.5.5 Module giao tiếp TTL RS485
Là module giúp chuyển đổi mức điện áp TTL sang giao tiếp RS-485
Module được thiết kế nhỏ gọn, tích hợp các linh kiện cần thiết để đảm bảo tốc độ truyền dẫn cao, khoảng cách truyền xa mà vẫn ổn định
Hình 2.13 Hình ảnh module TTL RS-485 thực tế
Hình 2.14 Sơ đồ nguyên lý module RS-485
Bảng 2.5 Bảng thông số kỹ thuật của module RS-485
Chip Max 485 Điện áp hoạt động 5V DC
Dòng điện hoạt động 300 uA
Công suất hoạt động 830 mW
Ngõ vào RO, RE, DI, DE
Tốc độ truyền tối đa 2 Mbps
Các chân module gồm có:
- DI - dữ liệu vào PIN 1
- RO - tín hiệu nhận đầu ra PIN 0
- DE; RE cho phép dữ liệu vào và cho phép được nhận, 2 chân này thường để nối liền với nhau và kết nối với Pin 2
Bus 485 truyền dữ liệu visai bằng 2 dây A, B nên khoảng cách truyền lớn (max 1200m), khả năng chống nhiễu tốt
Với A - B > 200mV sẽ tạo mức logic 1
Với B - A > 200mV sẽ tạo mức logic 0
Chuẩn RS 485 chỉ truyền trên 2 dây A và B sử dụng chênh lệch điện áp giữa
A và B hoạt động theo logic 0 hoặc 1 mà không so sánh với đất, giúp tín hiệu truyền đi xa Khi xảy ra sụt áp, cả hai dây đều giảm áp, đảm bảo tín hiệu vẫn duy trì ở mức logic 1 hoặc 0.
Module RS485 hỗ trợ giao tiếp tín hiệu điều khiển chuẩn RS-485 giữa các vi điều khiển và máy tính, giúp nâng cao khả năng truyền thông hiệu quả.
2.5.6 Module chuyển tiếp giao tiếp LCD sang I2C Để điều khiển và hiển thị được kí tự từ vi điều khiển xuất ra màn hình LCD20x4 cần có ít nhất là 10 đường nối đến chân của vi điều khiển (8 đường data từ D0 – D7 và 2 đường điều khiển RS, RW) nếu bit DL (data length) =1 hoặc cần ít nhất
Khi bit DL=0, mạch LCD yêu cầu 6 đường kết nối (4 đường dữ liệu từ D4 đến D7 và 2 đường điều khiển RS, RW), dẫn đến thiết kế mạch phức tạp và khó khăn trong việc viết code Tuy nhiên, với module chuyển đổi I2C, chỉ cần kết nối 2 chân SDA và SCL với vi điều khiển, chúng ta có thể dễ dàng điều khiển và hiển thị thông tin trên màn hình LCD.
Hình 2.16 Hình ảnh thực tế module giao tiếp I2C
Bảng 2.6 Bảng chức năng các chân của I2C
Chân Tên chân I/O Chức năng
1 GND Nguồn Chân nối mass
2 VCC Nguồn Chân nối điện áp +5V
3 SDA I/O Chân truyền nhận dữ liệu
4 SCL CLK Chân nhận xung clock
A0 A0 Jumber Chân thiết lập địa chỉ A0
A1 A1 Jumber Chân thiết lập địa chỉ A1
A2 A2 Jumber Chân thiết lập địa chỉ A2
Backlight Jumber Chân điều khiển đèn nền của LCD
Điều khiển độ tương phản của LCD có thể thực hiện thông qua Pot Chân Đối với module I2C, chúng ta có khả năng kết nối nhiều module I2C để hiển thị trên nhiều màn hình LCD cùng lúc bằng cách hàn các jump trên module I2C để thay đổi địa chỉ Địa chỉ mặc định của module khi chưa hàn các jump là 0x27.
Bảng 2.7 Bảng địa chỉ module giao tiếp I2C
Giới thiệu phần mềm
2.6.1 Phần mềm lập trình Arduino IDE 1.8.19
Phần mềm Arduino IDE là công cụ lập trình lý tưởng cho các board Arduino, với nhiều tiện ích như cài đặt nhanh chóng và dễ dàng Nó là mã nguồn mở, cho phép người dùng thêm các thư viện tùy ý, đồng thời hỗ trợ ngôn ngữ lập trình phổ biến.
Các bước cài đặt và sử sụng phần mềm:
Bước 1: Tải và cài đặt phiên bản mới nhất của Arduino từ trang web https://www.Arduino.cc, vào mục Software và chọn Download Arduino IDE Hãy chú ý chọn đúng phiên bản cho hệ điều hành của bạn Đối với Windows, bạn có hai lựa chọn: tải file nén “.zip” hoặc file cài đặt “.exe” Phiên bản mới nhất hiện tại là 1.8.3 Sau khi tải về, hãy tiến hành cài đặt chương trình.
Sau khi cài đặt thành công, hãy mở chương trình Arduino IDE và tạo một project mới Cấu trúc cơ bản của một project mới, hay còn gọi là sketch, bao gồm hai hàm chính là setup() và loop().
Hình 2.17 Giao diện phần mềm sau khi cài đặt
Ví dụ về chương trình bật tắt LED sử dụng Arduino và ESP8266 Mặc định, phần mềm không hỗ trợ thư viện cho module ESP8266, do đó cần cài đặt module này Để thực hiện cài đặt, vào menu File, chọn Preferences, và trong textbox Additional Board Manager URLs, thêm đường link sau: http://Arduino.esp8266.com/stable/package_esp8266com_index.json.
Tiếp theo vào Tool→Board→Boards Manager:
Chọn ESP8266 by ESP8266 Community, click vào Install
Tool→Board→NodeMCU 1.0 ESP8266-12E Module
Bước 3: Viết chương trình với cấu trúc cơ bản bao gồm hai hàm chính là setup và loop Hàm setup được thực thi mỗi khi khởi động chương trình để thiết lập các cài đặt cần thiết, trong khi hàm loop sẽ được gọi lặp đi lặp lại cho đến khi nguồn điện bị tắt.
Bước 4: Biên dịch và nạp code là quá trình quan trọng sau khi viết code Bạn cần biên dịch cho đến khi chương trình không còn lỗi và sau đó nạp chương trình vào bo mạch Arduino Khi nạp thành công, Arduino IDE sẽ hiển thị thông báo “Uploading Done” Sau đó, hãy kiểm tra xem Arduino có thực hiện đúng yêu cầu mong muốn hay không Nếu chưa, bạn cần hiệu chỉnh lại code và tiếp tục biên dịch và nạp lại.
Hình 2.18 Hình ảnh khi biên dịch chương trình thành công
2.6.2 Phần mềm thiết kế mạch Proteus
Là một thành phần thiết kế mạch phổ biến, nó cung cấp nhiều chức năng tiện ích như thiết kế sơ đồ nguyên lý, thiết kế mạch layout (PCB), tạo mới linh kiện và mô phỏng mạch 3D đẹp mắt.
Hướng dẫn sử dụng phần mềm:
Bước 1: Khởi động chương trình Proteus Professional
Chạy chương trình bằng cách nhấp vào biểu tượng ISIS Professional trên Desktop hoặc chọn Windows >> Programs >> Proteus Professional >> ISIS Professional
Sau khi khởi động thành công ta được màn hình khởi động phầm mềm như hình 2.19
Hình 2.19 Màn hình khởi động của Proteus 8.12
Bước 2: Mở chương trình ISIS Professional
Nhấp vào biểu tượng Schematic Capture trên thanh công cụ của giao diện Proteus để mở chương trình con ISIS Professional
Hình 2.20 Biểu tượng Schematic Capture
Sau khi khởi động chương trình ISIS, một khu vực làm việc với các nút giao diện thiết kế mạch sẽ hiện ra Cần lưu ý rằng trong khu vực làm việc của ISIS có một khung vuông màu xanh, và khi thiết kế mạch, toàn bộ phần mạch phải nằm gọn trong khung vuông này.
Hình 2.21 Cửa sổ làm việc của phần thiết kế mạch nguyên lý
Bước 3: Lấy tất cả linh kiện sử dụng từ thư viện của Proteus Để chọn mở linh kiện của Proteus, đầu tiện nhấp vào nút Component Mode
Hình 2.22 Biểu tượng nút Component Mode
Tiếp theo nhấp vào chữ P để mở thư viện
Khi mở thư viện, một cửa sổ sẽ xuất hiện như sau:
Hình 2.24 Cửa sổ tìm linh kiện
Keywords: tìm kiếm linh kiện
Category và Sub-category: chứa các thư viện linh kiện trong chương trình Proteus
Results: hiển thị các linh kiện khi được chọn trong thư viện
Schematic Review: hiển thị hình dạng của linh kiện
PCB Preview: hiển thị sơ đồ chân PCB của linh kiện
Trong cửa sổ chọn linh kiện, hãy nhập tên linh kiện cần tìm vào ô Keywords Sau khi đã lấy đủ linh kiện từ thư viện, nhấn nút OK để đóng cửa sổ thư viện và quay lại màn hình thiết kế.
Khi chọn linh kiện, cần lưu ý rằng chúng phải có sơ đồ PCB Nếu không, bạn sẽ phải tự tạo sơ đồ chân linh kiện khi chuyển sang thiết kế mạch in.
Bước 4: Đưa linh kiện ra ngoài màn hình thiết kế
Nhấp chuột vào linh kiện trong ô Devices, sau đó di chuyển con trỏ ra ngoài màn hình thiết kế và click chuột để đặt linh kiện tại vị trí mong muốn.
Để di chuyển linh kiện, bạn chỉ cần nhấp và giữ chuột trái vào linh kiện cần di chuyển, sau đó rê chuột đến vị trí mới và thả chuột ra Ngoài ra, bạn cũng có thể sử dụng lệnh Block Move trên thanh công cụ để thực hiện việc di chuyển linh kiện.
Để xoay linh kiện, bạn chỉ cần đặt con trỏ vào vị trí cần xoay, nhấn chuột phải và chọn các lệnh xoay trái, phải hoặc 180 độ Bên cạnh đó, bạn cũng có thể lật linh kiện theo chiều ngang hoặc chiều dọc thông qua cửa sổ này.
Hình 2.26 Cửa sổ lệnh xoay linh kiện
Để xóa linh kiện, bạn chỉ cần nhấp chuột phải vào linh kiện cần xóa và chọn lệnh Delete Object từ menu ngữ cảnh Ngoài ra, bạn cũng có thể sử dụng phím Delete hoặc công cụ Block Delete trên thanh công cụ để thực hiện việc xóa linh kiện.
Hình 2.27 Cửa sổ xóa linh kiện
Bước 5: Thay đổi thông số kỹ thuật của linh kiện
Để thay đổi giá trị linh kiện, hãy thực hiện double click vào linh kiện cần chỉnh sửa Sau đó, tiến hành thay đổi tên và giá trị trong hai ô Part Reference và Resistance tương ứng Cuối cùng, nhấn OK để hoàn tất quá trình chỉnh sửa.
Hình 2.28 Cửa sổ thay đổi thông số kỹ thuật của linh kiện
Bước 6: Sắp xếp linh kiện hợp lý
Bước 7: Nối dây và kiểm tra lỗi mạch nguyên lý
Bước 8: Vẽ mạch in nối dây như trên mạch nguyên lý đã vẽ
Hình 2.29 Cửa sổ làm việc của phần thiết kế PCB.
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
THIẾT KẾ PHẦN CỨNG
Chương này sẽ trình bày cách tính toán, sơ đồ khối và sơ đồ nguyên lý của các board mạch trong hệ thống, cùng với nguyên lý hoạt động và phương pháp đo lường các thông số điện áp, dòng điện, công suất của điện năng AC và DC Ngoài ra, chương cũng sẽ chỉ ra cách giám sát dữ liệu từ xa qua Internet.
3.2.1 Sơ đồ khối của hệ thống
Hình 3.1 Sơ đồ khối của hệ thống
Khối xử lý trung tâm là bộ phận điều khiển chính của toàn bộ hệ thống, có nhiệm vụ kết nối với các khối xử lý và điều khiển khác để truyền dữ liệu từ người sử dụng đến các thiết bị Đồng thời, nó cũng nhận dữ liệu từ các cảm biến và gửi lên cơ sở dữ liệu, giúp người sử dụng có thể giám sát hệ thống từ xa.
- Khối cảm biến: cảm biến PZCT-02-100A đo điện áp của điện năng AC
Khối đo điện năng AC sử dụng module chuyên dụng để đo các thông số như dòng điện, công suất và điện năng tiêu thụ AC, sau đó truyền dữ liệu về vi điều khiển trung tâm.
- Khối điện trở Shunt: điện trở Shunt 100A sử dụng để đo dòng điện bằng cách đo điện áp rơi trên điện trở
- Khối đo điện năng DC: sử dụng module đo điện năng DC thông qua module
RS485 để đo các thông số về dòng điện, công suất, điện năng tiêu thụ DC sau đó gửi về vi điều khiển trung tâm
- Khối hiển thị: hiển thị các thông số về điện năng đo được lên màn hình LCD
2004 để người sử dụng giám sát trực tiếp
- Khối nguồn: khối này có nhiệm vụ chuyển đổi điện áp từ 220VAC về 5VDC-
1A để cấp nguồn cho toàn board mạch hoạt động
- Khối Web: là nơi dữ liệu giám sát được esp gửi đến để lưu trữ Nền tảng web được sử dụng là blynk.cloud và google sheets
- Khối App điện thoại: thiết kế giao diện lưu trữ, hiển thị dữ liệu giám sát trên app Blynk IoT
Bảng 3.1 Bảng so sánh các loại PZEM đo điện năng AC
Thông số kỹ thuật PZEM 061 PZEM 011 PZEM 004T
Kích thước (mm) 84.6 x 49.6 x 24.4 67 x 57.5 x 24 78 x 38 x 20 Điện áp đo (Vac) 80 ~ 260 (± 1 %) 80 ~ 260 (± 1 %) 80 ~ 260 (± 1 %) Dòng điện đo (A) 0 ~ 100 (± 1 %) 0 ~100 (± 1 %) 0 ~ 100 (± 1 %)
Phần mềm kiểm tra không không có
Giao tiếp vi điều khiển không không UART
* Giá của sản phẩm trên được tham khảo trên trang của nhà sản xuất Peacefair Link: https://www.machineryoffers.com/company/peacefair/product.html
PZEM-004T là lựa chọn lý tưởng để đo các thông số điện năng AC nhờ thiết kế nhỏ gọn và giá thành hợp lý hơn so với các loại PZEM khác Module này hỗ trợ giao tiếp UART, giúp dễ dàng kết nối và truyền dữ liệu tới ESP8266 để giám sát từ xa Hơn nữa, nhà sản xuất cung cấp phần mềm test, cho phép người dùng đánh giá kết quả đo được và so sánh với thực tế của hệ thống, đảm bảo độ chính xác cao nhất trong các phép đo.
Hình 3.2 Sơ đồ nguyên lý khối đo điện năng AC
Hình 3.3 Sơ đồ kết nối thực tế PZEM-004T với Esp8266
Bảng 3.2 Bảng so sánh các loại PZEM đo điện năng DC
Thông số kỹ thuật PZEM 051 PZEM 015 PZEM 017
Kích thước (mm) 89.6 x 49.6 x 24.4 89.6 x 49.6 x 24.2 90 x 60.5 x 23 Điện áp đo (Vdc) 6.5 ~ 100 (± 1 %) 0 ~ 200 (± 1 %) 0 ~ 300 (± 1 %)
Phần mềm kiểm tra không không có
Giao tiếp vi điều khiển không không RS 485 Modbus
* Giá của sản phẩm trên được tham khảo trên trang của nhà sản xuất Peacefair
Link: https://www.machineryoffers.com/company/peacefair/product.html
PZEM 017 là lựa chọn hàng đầu cho việc đo các thông số điện năng DC nhờ thiết kế nhỏ gọn và vỏ ngoài chắc chắn Sản phẩm này nổi bật với các thông số vượt trội so với các PZEM cùng chức năng Hơn nữa, module sử dụng giao tiếp Modbus, một chuẩn giao tiếp phổ biến trong ngành công nghiệp hiện nay, đảm bảo tính truyền ổn định cao và khả năng chống nhiễu tốt với ESP8266 Giao tiếp Modbus của PZEM 017 với ESP8266 được thực hiện thông qua module TTL RS485.
Hình 3.4 Sơ đồ nguyên lý khối đo điện năng DC
Hình 3.5 Sơ đồ kết nối PZEM 017 với Esp8266 qua module RS485
Các giá trị dòng điện, điện áp, công suất tiêu thụ, công suất,…điện năng AC được đo bằng cảm biến dòng PZCT-02T
3.2.4 Khối xử lý trung tâm
Bảng 3.3 Bảng so sánh giữa Esp32 với Esp8266
Bảo mật Mã hóa Flash khởi động bảo mật
Tốc độ kết nối Wifi ( Mbps) 72.2 150
Chân hỗ trợ kết nối SPI/
Mặc dù ESP32 có nhiều ưu điểm như nhiều chân GPIO hơn, tốc độ WiFi tốt hơn và hỗ trợ Bluetooth, nhưng ESP8266 vẫn đáp ứng đủ yêu cầu của đồ án về số lượng chân GPIO và tốc độ kết nối WiFi, mặc dù kém hơn ESP32 nhưng vẫn ổn định Hơn nữa, ESP8266 có giá thành rẻ hơn và được hỗ trợ nhiều phần mềm, do đó nhóm quyết định sử dụng module NodeMCU ESP8266 để kết nối với các thiết bị và giao tiếp với server qua WiFi Để giám sát dữ liệu từ các module PZEM-004T và PZEM017, chúng tôi đã kết nối chúng với vi điều khiển trung tâm theo sơ đồ mạch như hình 3.2 và hình 3.4.
Nguồn điện xoay chiều 220 ~240 VAC cung cấp cho khối ngõ vào và nguồn AC trên module PZEM-004T Tổng dòng cho tất cả các linh kiện sử dụng nguồn 220 VAC là 6A, vì vậy chỉ nên sử dụng cho các thiết bị điện có dòng nhỏ hơn 6A trước khi cắm vào ổ cắm.
Nguồn điện DC với điện áp 12VDC chỉ phù hợp cho các khối ngõ vào có điện áp hoạt động ≤ 12VDC Đối với các thiết bị có điện áp ≥ 12VDC, cần sử dụng nguồn DC thích hợp để tránh hư hỏng thiết bị.
Nguồn 5V được sử dụng cấp nguồn cho các module: PZEM-004T, PZEM 017,
RS 485, LCD I2C, Node MCU Esp8266 Tổng dòng tiêu thụ của hệ thống là 270 mA
Bảng 3.4 Bảng thông số điện áp và dòng tiêu thụ các linh kiện trong hệ thống
Tên linh kiện Điện áp (VDC) Dòng tiêu thụ (mA)
Sau khi thống kế các giá trị áp và dòng, ta cần nguồn cung cấp là 5V và dòng nhỏ hơn 1A
Nhóm đã chọn dùng adapter 5V-1A để cấp nguồn cho hệ thống hoạt động
3.2.6 Khối hiển thị Để dễ dàng theo dõi các thông số điện đo được ta sẽ hiển thị giá trị điện áp, dòng điện, điện năng và công suất của điện năng AC, DC trên màn hình LCD 20x04 Yêu cầu đặt ra là cấp đủ mức điện áp hoạt động cho LCD, các ký tự dữ liệu hiển thị rõ ràng, tránh việc hiển thị nhầm lẫn dữ liệu trong quá trình đo đạc Để giao tiếp LCD 20x04 với vi điều khiển trung tâm, nhằm tiết kiệm các cổng vào ra cho vi điều khiển bởi cần vi điều khiển trung tâm thực hiện thêm nhiều chức năng nên phải sử dụng thêm module chuyển giao trực tiếp sử dụng 6 chân giao tiếp qua I2C chỉ sử dụng 2 chân là module giao tiếp I2C PCF8574
Hình 3.5 Sơ đồ nguyên lý LCD 20x4 với Node MCU Esp8266
Hình 3.6 Kết nối LCD 20x4 với Node MCU Esp8266
Trong bối cảnh hệ sinh thái công nghệ đa dạng hiện nay, việc lựa chọn phần mềm giám sát không chỉ cần tính tiện dụng và khả năng triển khai đa nền tảng, mà còn phải đảm bảo hiển thị thông tin rõ ràng, dễ hiểu và có tính thẩm mỹ cao Sau khi khảo sát một số phần mềm như Blynk, Cayenne, Android Studio, php Myadmin, nhóm nhận thấy Blynk là ứng dụng tiện lợi, hỗ trợ đa nền tảng di động và cho phép tạo biểu đồ đường giúp giám sát chi tiết Blynk còn có tính năng đồng bộ dữ liệu trên Web và App, thuận tiện cho việc giám sát từ xa Do đó, nhóm đã quyết định thiết kế giao diện giám sát trên Blynk.cloud và web Blynk.
Hình 3.7 Sự tiện lợi của Blynk trên đa nền tảng
Một số thành phần chính trong nền tảng:
Bảng điều khiển Blynk Online cho phép người dùng thiết lập và sử dụng trên bất kỳ trình duyệt web nào trên máy tính Để bắt đầu, người dùng cần đăng ký bằng email, từ đó có thể điều khiển phần cứng từ xa thông qua website.
Blynk App là ứng dụng hỗ trợ cả hệ điều hành Android và iOS, cho phép người dùng tải về điện thoại cá nhân Tương tự như bảng điều khiển Blynk trực tuyến, ứng dụng này giúp theo dõi, giám sát và điều khiển từ xa phần cứng của các dự án Người dùng có thể tự do thiết kế giao diện phù hợp với nhu cầu của dự án, giống như khi thiết lập trên Web.
- Blynk Cloud: tiếp nhận, lưu trữ và xử lý tất cả các thông tin được gửi đến từ bảng điều khiển online hoặc Blynk App
Khi thực hiện thao tác trên ứng dụng Blynk hoặc bảng điều khiển Blynk Online, các lệnh sẽ được liên kết và gửi đến Blynk Cloud để xử lý Sau đó, lệnh sẽ được chuyển tiếp đến phần cứng đã được thiết lập Cuối cùng, phần cứng sẽ thực hiện lệnh và gửi dữ liệu ngược lại cho Blynk.
Cloud sẽ truyền dữ liệu ngược lại cho Blynk App và bảng điều khiển Blynk Online để hiển thị Việc điều khiển qua App hay Website đều giống nhau vì chúng được liên kết đồng bộ Người dùng có thể sử dụng Blynk để điều khiển thiết bị từ xa thông qua App hoặc Website, tùy thuộc vào sự thuận tiện của họ.
Các chức năng của Blynk:
- Kết nối thông qua 3G/4G, Wifi, Ethernet, USB, GSM (điện thoại và máy tính)
- Bảng điều khiển và giao diện App có thể tùy ý thiết kế thông qua việc kéo thả các widget cho phép của phần mềm
- Điều khiển phần cứng từ xa
- Có thể cài đặt thêm để nhận thông báo dữ liệu từ các ứng dụng hoặc trang web khác
- Giám sát được phần cứng từ xa
- Lưu trữ dữ liệu tiện cho việc xem xét lại khi cần thiết.
SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH
Để thiết kế sơ đồ nguyên lý toàn mạch, có nhiều phần mềm như Altium Designer, Orcad, Eagle, Proteus, và Kicad Trong số đó, Proteus được nhóm lựa chọn nhờ giao diện đẹp và các phím tắt tiện lợi, giúp quá trình thiết kế trở nên nhanh chóng và thuận tiện hơn.
Hình 3.8 Sơ đồ nguyên lý toàn mạch
3.4 Yêu cầu mô hình hệ thống Để đảm bảo về yêu cầu độ bền, kích thước cũng như tính thẩm mỹ của hệ thống nhóm đã tìm hiểu và lựa chọn như sau:
- Chất liệu vỏ mô hình: nhựa sino
- Mặt ngoài: lắp LCD 20x04, công tắc on/off, ổ điện 3 đấu và ngõ vào cấp nguồn cho Node MCU Esp8266
- Mặt trong chứa các linh kiện chính của hệ thống
Hình 3.9 Mặt ngoài mô hình thiết bị.
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Để đạt được mục tiêu đo điện năng AC và DC cũng như giám sát dữ liệu qua Internet, chúng tôi đã thiết kế mạch in và lắp ráp linh kiện một cách hợp lý nhằm đảm bảo tính gọn gàng và an toàn cho người sử dụng Sau khi hoàn tất, chúng tôi tiến hành đăng nhập vào Blynk Cloud để tạo tài khoản và thiết lập giao diện cho các kênh giám sát trực tuyến.
THI CÔNG HỆ THỐNG
4.2.1 Mô hình mạch in PCB
Mạch in của hệ thống được thiết kế trên phần mềm Proteus 8.12
Hình 4.1 Mạch in PCB vẽ trên Proteus
4.2.2 Lắp ráp mô hình hệ thống
Hệ thống được trang bị màn hình LCD 20x4, công tắc bật/tắt và một ổ điện để kết nối các tải AC, giúp theo dõi các thông số điện năng AC một cách hiệu quả.
Hệ thống bao gồm các thành phần chính như PZEM-004T, PZEM017, RS485, điện trở Shunt và vi điều khiển trung tâm ESP8266, tất cả được kết nối với nhau bằng dây điện.
Hình 4.2 Mặt trên của mô hình
Mặt trên mô hình gồm:
- Vùng “2”: khóa mở đóng hộp
- Vùng “3”: ổ cắm 3 nổi LiOA OC3NCND
Hình 4.3 Mặt bên của mô hình
Mặt bên mô hình gồm:
- Vùng “1”: Công tắc on/off hệ thống
- Vùng “2”: Ngõ vào nguồn của hệ thống
Hình 4.4 Hình ảnh bên trong mô hình
Bên trong mô hình gồm các linh kiện được sắp xếp như sau:
Vùng “3”: vi điều khiển Esp8266
Vùng “5”: cảm biến dòng PZCT-02
Vùng “6”: công tắc hệ thống
LƯU ĐỒ GIẢI THUẬT HỆ THỐNG
4.3.1 Lưu đồ giải thuật chương trình chính
Node trung tâm đóng vai trò là gateway, điều phối và thu thập dữ liệu từ các node phụ Khi hệ thống được cấp nguồn, NodeMCu sẽ khởi tạo các cài đặt ban đầu cho PZEM-004T và thiết lập liên kết Modbus với RS485 cho PZEM 017, nhằm truyền và nhận dữ liệu về các giá trị điện năng đo được từ các module tương ứng.
Sau khi xác nhận kết nối Wifi và đăng nhập Blynk thành công, node trung tâm sẽ thực thi các chương trình con để lấy dữ liệu từ vi điều khiển Hệ thống sẽ gửi chuỗi dữ liệu đến LCD và Web Blynk Cloud, đồng thời đồng bộ điều khiển với App Blynk Cuối cùng, chương trình con sẽ đọc dữ liệu (giá trị điện năng) từ các PZEM để hiển thị.
Hình 4.5 Lưu đồ thuật toán chương trình chính Node trung tâm
4.3.2 Lưu đồ giải thuật chương trình con đưa dữ liệu lên Blynk
- Sau khi đăng nhập thành công vào Blynk đầu tiên ta sẽ tạo các biến phù hợp hoạt động trên Blynk thay thế cho các giá trị U, A, W,
Wh của điện năng AC, DC
Sau khi khởi tạo biến, chương trình sẽ kiểm tra tín hiệu kết nối giữa Blynk và ESP Khi nhận được tín hiệu gửi dữ liệu từ ESP8266, dự án sẽ chuyển sang chế độ Online và tiến hành đọc, hiển thị các thông số điện năng từ vi điều khiển lên màn hình.
Hình 4.6 Lưu đồ chương trình con đưa dữ liệu lên Blynk
4.4 HƯỚNG DẪN THIẾT KẾ GIAO DIỆN TRÊN PHẦN MỀM BLYNK Đầu tiên để sử dụng được phần mềm ta cần đăng ký một tài khoản bằng địa chỉ email của người dùng
Hình 4.7 Tạo tài khoản cho bảng điều khiển Blynk Online
Tiếp theo ta sẽ tạo mật khẩu để sử dụng cho tài khoản của mình
Hình 4.8 Tạo mật khẩu cho bảng điều khiển Blynk Online
Thực hiện đăng nhập vào tài khoản đã được tạo
Hình 4.9 Đăng nhập vào tài khoản Blynk
Sau đó sẽ thiết lập ứng dụng phù hợp với người dùng
Hình 4.10 Khởi tạo một ứng dụng mới
Hình 4.11 Thiết lập ứng dụng trên Blynk
Sau khi hoàn tất việc thiết lập sơ bộ cho ứng dụng, bước tiếp theo là truy cập vào phần Datastreams và chọn New Datastreams để cấu hình kết nối với phần cứng.
Hình 4.12 Tạo một Datasteams mới
Chọn kiểu kết nối mà người sử dụng cần dùng và ở dự án này ta sử dụng Vitural Pin
Hình 4.13 Lựa chọn kiểu kết nối
Thiết lập tên, giá trị và đơn vị cho các thông tin cần giám sát, cũng như các vị trí chân, cần phải phù hợp với phần mã đã được viết trước đó.
Hình 4.14 Thiết lập các thông tin cho Điện Áp
Hình 4.15 Thiết lập các thông tin cho Dòng Điện
Chuyển sang phần Web Dashboard, người dùng có thể kéo thả các Widgets cần thiết vào vùng cho phép để tạo bảng điều khiển Blynk Online, đồng thời thiết lập các Pins và giá trị phù hợp với các Pins đã thiết lập ở phần Datastreams Ngoài ra, người dùng còn có thể tùy chỉnh màu sắc và thông tin hiển thị để tạo ra giao diện đẹp mắt và phù hợp với nhu cầu sử dụng của mình.
Hình 4.16 Tạo bảng điều khiển giám sát dữ liệu cho Blynk
Thực hiện thiết lập giá trị cho các Widgets đã chọn
Hình 4.17 Cấu hình cho Label
Hình 4.18 Cấu hình cho Gauge
Hình 4.19 Cấu hình cho Chart
Hình 4.20 Bảng điều khiển hoàn thiện
Ngoài các Widgets đã được lựa chọn, bạn có thể sử dụng thêm các Widgets khác phù hợp với dự án của mình Tuy nhiên, cần lưu ý rằng một số Widgets miễn phí trong khi những Widgets khác yêu cầu thanh toán để sử dụng Do đó, hãy chọn lựa sao cho phù hợp với mục đích của bạn.
Sau khi đã xong phần “Templates” tiếp đến ta vào phần “Search”
Hình 4.22 Tạo một Device mới
Sau đó ta tạo tên Template và tên Device
Hình 4.24 Tên Template và Device
Hoàn thành bước này chúng ta đã xong công việc tạo bảng điều khiển cho việc giám sát Blynk trên Web
Hình 4.25 ID, Device Name, mã Auth_Token
Lưu ý đến tên ID, Device Name và mã Auth_Token của bảng điều khiển vì nó cần được copy để đưa vào phần code của toàn bộ hệ thống
Để gửi dữ liệu từ phần cứng của dự án đến Blynk Cloud, cần thực hiện thao tác gửi thông qua các dòng code sau đây.
4.5 HƯỚNG DẪN THIẾT KẾ GIAO DIỆN TRÊN BLYNK APP
Blynk App hỗ trợ cả iOS và Android, giúp người dùng dễ dàng tải về từ App Store hoặc Google Play Sau khi tải về, người dùng có thể ngay lập tức sử dụng ứng dụng Blynk trên điện thoại của mình.
Sau đó ta truy cập vào Blynk App rồi thực hiện việc đăng nhập bằng tài khoản đã đăng ký trước đó khi tạo bảng điều khiển Blynk Online
Ta thực hiện việc Login vì đã có tài khoản từ trước
Hình 4.27 Giao diện đăng nhập app Blynk
Sau đó đăng nhập bằng tài khoản đã tạo trước đó khi tạo bảng điều khiển Blynk
Hình 4.28 Đăng nhập app Blynk
Tiếp theo, chúng ta sẽ thiết kế giao diện cho ứng dụng Blynk, tùy thuộc vào dự án của người dùng Người dùng có thể dễ dàng kéo thả các Widgets mà ứng dụng cung cấp để phù hợp với nhu cầu sử dụng của mình.
Giao diện của ứng dụng sau khi đăng nhập vào sẽ như hình dưới đây và ta sẽ chọn vào dự án của mình đã tạo
Hình 4.29 Giao diện sau khi đăng nhập
Sau khi chọn biểu tượng của dự án, tiếp theo bạn nhấn vào biểu tượng cờ lê, rồi chọn biểu tượng dấu “+” ở góc phải màn hình để thiết kế giao diện giám sát trên ứng dụng Blynk.
Hình 4.30 Chọn biểu tượng cờ lê
Hình 4.31 Chọn biểu tượng dấu “+”
Ta sẽ có thanh công cụ để lựa chọn các Widgets cho dự án của mình
Kéo thả các Widgets cần cho dự án
Hình 4.33 Giao diện kéo thả các Widgets
Sau đó chọn vào các Widgets để thiết lập tên, pin, giá trị,…sao cho phù hợp với các thông số đã tạo của bảng điều khiển Blynk Online
Hình 4.34 Thiết lập giá trị cho Widget
Giống như việc thiết lập Gauge cho điện áp của các Widgets khác, chúng ta cũng thực hiện quy trình tương tự Kết quả cuối cùng sẽ cho chúng ta một giao diện như hình dưới đây.
Hình 4.35 Giao diện sau khi thiết kế
Cuối cùng chọn vào dấu “x” ở góc trái màn hình và như vậy ta đã có được giao diện của màn hình giám sát cho dự án của mình
Hình 4.36 Giao diện giám sát dự án
Sau khi đã hoàn thành việc thiết kế giao diện thì ta tiến hành nạp code cho phần cứng và thực hiện việc giám sát
4.6 HƯỚNG DẪN LƯU TRỮ DỮ LIỆU TRÊN GOOGLE SHEETS
4.6.1 Giới thiệu về Google Sheets
Google Sheets là công cụ hữu ích cho nhiều công việc khác nhau, đặc biệt trong việc lưu trữ dữ liệu giám sát Người dùng có thể xem xét lại dữ liệu trong quá trình tiêu thụ hoặc khi có sai số xảy ra Để sử dụng Google Sheets, người dùng cần tạo một bảng tính Excel trên tài khoản Google của mình và hiển thị các thông số cần giám sát thông qua Apps Script.
4.6.2 Các bước cần để đưa dữ liệu lên Google Sheets Để lưu trữ được dữ liệu giám sát trên trang tính của google chúng ta sẽ cần thực hiện những bước sau:
- Bước 1: Lựa chọn phần trang tính ở tài khoản google của cá nhân
Hình 4.37 Chọn trang tính của google
- Bước 2: Chọn vào tạo một trang trống mới
Hình 4.38 Tạo trang tính trống
- Bước 3: Tạo những thông tin cần hiển thị theo thứ tự từng cột A,B,C,
Hình 4.39 Thiết lập các thông tin
HƯỚNG DẪN LƯU TRỮ DỮ LIỆU TRÊN GOOGLE SHEETS
4.6.1 Giới thiệu về Google Sheets
Google Sheets là công cụ hữu ích cho nhiều công việc khác nhau, đặc biệt trong việc lưu trữ dữ liệu giám sát Người dùng có thể xem xét lại dữ liệu trong quá trình tiêu thụ hoặc khi có sai số xảy ra Để sử dụng Google Sheets, người dùng cần tạo một bảng tính Excel trên tài khoản Google của mình và hiển thị các thông số cần giám sát thông qua Apps Script.
4.6.2 Các bước cần để đưa dữ liệu lên Google Sheets Để lưu trữ được dữ liệu giám sát trên trang tính của google chúng ta sẽ cần thực hiện những bước sau:
- Bước 1: Lựa chọn phần trang tính ở tài khoản google của cá nhân
Hình 4.37 Chọn trang tính của google
- Bước 2: Chọn vào tạo một trang trống mới
Hình 4.38 Tạo trang tính trống
- Bước 3: Tạo những thông tin cần hiển thị theo thứ tự từng cột A,B,C,
Hình 4.39 Thiết lập các thông tin
Để truy cập vào phần Apps Script, bạn cần mở một tab mới và nhập đường dẫn https://script.google.com/, đồng thời sử dụng tài khoản Google cá nhân của mình.
- Bước 5: Sau đó thực hiện tạo một dự án mới
Hình 4.41 Giao diện dự án
- Bước 6: Ta thực hiện sao chép phần Sheet ID của trang tính google, mỗi tài khoản google sẽ có một Sheet ID khác nhau
- Bước 7: Tiếp tục dán phần Sheet ID đã sao chép vào phần Sheet ID của phần code ở Apps Script
Hình 4.43 Thay đổi Sheet ID
Bước 8: Tùy thuộc vào thông tin cần giám sát của người dùng, các giá trị trong Apps Script cho “rowData” và “case” sẽ được điều chỉnh để phù hợp với các giá trị trong các cột A, B, C, trên trang tính Google.
- Bước 9: Tiếp đến ta thực hiện chọn vào phần: triển khai -> Tùy chọn triển khai mới ở góc phải màn hình
Hình 4.45 Triển khai, Tùy chọn triển khai mới
- Bước 10: Chọn type-> Ứng dụng Web -> Người có quyền truy cập: Bất kỳ ai
Hình 4.46 Cấu hình cho Tùy chọn triển khai mới
- Bước 11: Chọn Triển khai -> Sau đó sao chép ID triển khai để sau này ta sử dụng cho phần code ở phần mềm Arduino -> Xong
Hình 4.48 Bảng tính khi đã hoàn chỉnh
Sau đó cuối cùng sao chép xong ID triển khai ta thực hiện dán nó vào phần GAS ID ở phần mềm Arduino
Cần lưu ý rằng mỗi người sẽ có một biến khác nhau cho các giá trị cần giám sát trong phần chuỗi URL, vì vậy chúng ta cần linh hoạt điều chỉnh cho phù hợp.
CHƯƠNG 5: KẾT QUẢ THỰC HIỆN
Hình 5.1 Hình ảnh hệ thống giám sát chưa gắn tải
Hình 5.2 Kiểm tra điện áp của điện năng AC bằng VOM lần 1
Hình 5.3 Kiểm tra dòng điện của điện năng AC bằng VOM lần 1
Hình 5.4 Kiểm tra điện áp của điện năng AC bằng VOM lần 2
Hình 5.5 Kiểm tra dòng điện của điện năng AC bằng VOM lần 2
Hình 5.6 Kiểm tra điện áp của điện năng AC bằng VOM lần 3
Hình 5.7 Kiểm tra dòng điện của điện năng AC bằng VOM lần 3
Bảng 5.1 Bảng kết quả kiểm tra dòng và áp của điện năng AC bằng VOM
Lần Thời gian đo Điện áp đo bằng VOM ( V AC ) Điện áp hệ thống ( V AC )
Dòng điện đo bằng VOM ( A)
Theo thông số của PZEM-004T, sai số của module về điện áp và dòng điện lần lượt là ±1%, cho thấy hệ thống hoạt động ổn định.
Hình 5.8 Kiểm tra điện áp của điện năng DC bằng VOM lần 1
Hình 5.9 Kiểm tra dòng của điện năng DC bằng VOM lần 1
Hình 5.10 Kiểm tra điện áp của điện năng DC bằng VOM lần 2
Hình 5.11 Kiểm tra dòng điện của điện năng DC bằng VOM lần 2
Hình 5.12 Kiểm tra điện áp điện năng DC bằng VOM lần 3
Hình 5.13 Kiểm tra dòng điện điện năng DC bằng VOM lần 3
Bảng 5.2 Bảng kết quả kiểm tra dòng và áp của điện năng DC bằng VOM
Lần Thời gian đo Điện áp đo bằng VOM ( V DC ) Điện áp hệ thống ( V DC )
Dòng điện đo bằng VOM ( mA)
Dòng điện hệ thống ( mA )
Theo thông số của PZEM 017, sai số của module về điện áp và dòng điện lần lượt là ±1%, cho thấy hệ thống hoạt động ổn định.
5.2.1 Kết quả chạy trên phần mềm Blynk Cloud
Dữ liệu về các thông số điện năng AC và DC từ các PZEM được gửi đến vi xử lý trung tâm, trải qua một số bước xử lý trước khi được đưa lên Blynk Cloud Người dùng có thể truy cập và hiển thị thông tin này trên ứng dụng Smartphone.
Cụ thể dữ liệu được được hiển thị trên Web Blynk như sau:
Hình 5.14 Dữ liệu gửi điện năng của AC,DC dạng số liệu
Hình 5.15 Dữ liệu điện năng của AC, DC dạng biểu đồ
Hình 5.16 Dữ liệu điện năng AC, DC dạng vòng cung
5.2.2 Kết quả chạy trên App Blynk
Hình 5.17 Dữ liệu điện năng AC, DC trên App Blynk
Hình 5.18 App Blynk trên 2 nền tảng iOS và Androids
Hình 5.19 Giám sát trên 2 nền tảng Androids và iOS
5.2.3 Kết quả giám sát dữ liệu trên Google Sheets
Kết quả truyền nhận dữ liệu của hệ thống được cập nhật liên tục trên Google Sheets 24/24, với thời gian cập nhật giá trị điện năng có thể tùy chỉnh theo nhu cầu sử dụng Nhờ vậy, người dùng có thể tra cứu lịch sử sử dụng điện năng một cách chính xác nhất.
Hình 5.20 Các giá trị điện năng được lưu trên Google Sheets
5.2.4 Một số phần mềm thương mại có chức năng tương tự
Ngày nay trên thị trường có nhiều những phần mềm thương mại có chức năng giám sát và quản lý năng lượng hệ thống giống với Blynk
Hình 5.21 Giao diện phần mềm giám sát năng lượng Globiots
Hình 5.22 Giao diện phần mềm giám sát năng lượng Globiots
Hình 5.23 Giao diện phần mềm giám sát năng lượng Power Management System
Hình 5.24 Giao diện phần mềm giám sát năng lượng AT-PMS
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Sau thời gian học tập và nghiên cứu, nhóm đã hoàn thành luận án “THIẾT KẾ VÀ THI CÔNG ĐỒNG HỒ ĐO ĐIỆN NĂNG AC, DC GIÁM SÁT DỮ LIỆU TRÊN INTERNET” với các yêu cầu đề ra Hệ thống sử dụng các chuẩn truyền thông như UART, Modbus RTU và WiFi, đảm bảo việc truyền nhận dữ liệu ổn định ở khoảng cách xa giữa phần cứng và phần mềm Việc kết hợp điều khiển qua ứng dụng trên Smartphone mang lại sự tiện lợi trong việc giám sát và điều chỉnh các giá trị điện năng.
- Hệ thống tích hợp giám sát đồng thời điện năng AC, DC với sai số trong phạm vi cho phép đo đạt ± 1 % ( Bảng 5.1, Bảng 5.2)
- Hệ thống có thể hoạt động trên hai nền tảng di động iOS, Androids (Hình 5.11)
Ứng dụng giám sát tiệm cận với các hệ thống giám sát điện năng thương mại hiện nay, bao gồm hệ thống quản lý năng lượng PMS – Power Management System của Elecnova, phần mềm giám sát năng lượng Globiots, và hệ thống giám sát điện năng AT-PMS.
- Hệ thống chỉ dừng lại ở việc giám sát, chưa có tính năng cảnh báo người dùng trong trường hợp quá tải dòng, áp hay công suất tiêu thụ
- Sử dụng app Blynk thông qua ứng dụng sẵn có, chưa tự lập trình được ứng dụng riêng của nhóm
- Thiết kế thêm phần cảnh báo, gửi tin nhắn cho người dùng trong trường hợp công suất quá tải và phần ngắt điện năng từ xa thông qua Blynk
Nâng cấp gói Blynk nhằm tối ưu hóa giao diện người dùng và phát triển thêm các loại biểu đồ, giúp dữ liệu giám sát điện năng thể hiện chi tiết hơn.
[1] Nguyễn Đình Phú (2007), Giáo trình “Vi điều khiển”, Trường ĐH Sư Phạm Kỹ Thuật TP Hồ Chí Minh
[2] Hồ Lê Minh Hải (2022), Đồ án môn học 2 “Thiết kế thi công bộ giám sát điện năng từ xa”
[3] TAPIT (2020), https://tapit.vn/khai-niem-ve-giao-thuc-modbus-rtu-va- ket-noi-phan-cung/
[4] 4E VN Projects(2021), https://www.4evn.com/2021/09/cong-to-ien-tu- wifi-theo-doi-chi-so-qua.html
[5] Lập trình ESP8266 bằng Arduino IDE, http://arduino.vn/bai-viet/1712- lap-trinh-esp8266-bang-arduino-ide
[6] Datasheet PZEM004T (2018), https://github.com/olohs/PZEM004T
[7] Internet of things là gì (2018), http://iot.dtt.vn/InternetofThings.html
[8] hshop.vn,"https://hshop.vn/products/mach-do-dien-dc-da-nang-200a- giao-tiep-rs485-modbus-pzem-017”
[9] DatasheetPZEM017,http://www.rcscomponents.kiev.ua/datasheets/pze m-017%20-datasheet.pdf
[10] Solarduino(2020),https://solarduino.com/diy-bi-directional-ac-energy- meter-for-solar-pv-system/
[11] Solarduino(2020), https://solarduino.com/pzem-017-dc-energy-meter- online-monitoring-with-blynk-app/
#define BLYNK_TEMPLATE_ID "TMPLiX7VkUMV"
#define BLYNK_DEVICE_NAME "Cong To Dien Online"
#define BLYNK_AUTH_TOKEN "amG1N1yrDFz5lhK_-rBFch9ntlTiZZ1C" char auth[]= BLYNK_AUTH_TOKEN; char ssid[]= "No internet"; char pass[]= "@@18161308@@";
#if !defined(PZEM_RX_PIN) && !defined(PZEM_TX_PIN)
SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN);
#define MAX485_RE 16 #define MAX485_RO 5
ModbusMaster node; float u, i, w, Wh, fe, pe ; float PZEMVoltage
The code initializes several variables for energy monitoring, including `PZEMEnergy`, `pzemSlaveAddr`, and `NewshuntAddr` It sets up timing variables such as `startMillisPZEM` and `currentMillisPZEM` with a defined period of 500 milliseconds for energy calculations Additionally, it includes a 1000-millisecond period for reading data, with a reset variable for energy tracking The host for data transmission is specified as "script.google.com" using HTTPS on port 443.
String GAS_ID = "AKfycbxC_-Jrq7n-PTy75J1MYzt0pdc7y-jd5HVNRT jh_alrFIKcqO5NM6RnQn7x0N3PBbMQ"; void sendEnergy()
// pzem_info pzemData = pzem.getData();
The code snippet retrieves various electrical parameters using the PZEM module, including voltage, current, power, energy, frequency, and power factor It prints the address of the PZEM device in hexadecimal format and assigns the measured values to corresponding float variables Additionally, it checks if the voltage reading is not a number (NaN).
Serial.println("Error reading voltage");
Serial.println("Error reading current");
Serial.println("Error reading power");
Serial.println("Error reading energy");
Serial.println("Error reading frequency");
Serial.println("Error reading factor");
"); Serial.print(voltage); Serial.println("V"); Serial.print("Current:
"); Serial.print(current); Serial.println("A"); Serial.print("Power:
"); Serial.print(power); Serial.println("W"); Serial.print("Energy:
"); Serial.print(energy,3); Serial.println("kWh"); Serial.print("Frequency:
The code displays various electrical parameters on an LCD screen It prints the frequency in Hertz, power factor (PF), voltage (Vac), alternating current (Iac), active power (Wac), and energy consumption (Wh) Each parameter is clearly labeled and positioned for easy reading, ensuring that users can quickly access important information about their electrical system.
Wire.begin(14,12); lcd.init(); lcd.backlight(); delay(100);
Blynk.begin(auth, ssid, pass, "blynk.cloud", 80); timer.setInterval(1000L, sendEnergy); startMillis1 =millis(); startMillisPZEM = millis(); pinMode(MAX485_RE,
LOW); node.preTransmission(preTransmission); node.postTransmission(postTransmission); delay(1000); startMillisReadData = millis(); client.setInsecure ();
BLYNK_WRITE(V6) { if (param.asInt() == 1) { pzem.resetEnergy();
{ uint16_t u16CRC 0xFFFF; static uint8_t resetCommand 0x42; uint8_t slaveAddr
=0X01; u16CRC = crc16_update(u16CRC, slaveAddr); u16CRC = crc16_update(u16CRC, resetCommand); preTransmission(); PZEMSerial.write(slaveAddr);
PZEMSerial.write(lowByte(u16CRC)); PZEMSerial.write(highByte(u16CRC)); delay(10); postTransmission(); delay(100);
Blynk.run(); timer.run(); currentMillisPZEM = millis(); if (millis()- startMilliSetShunt == 10000)
PZEMSerial); /* if (currentMillisPZEM - startMillisPZEM > periodPZEM)
{ uint8_t result; result = node.readInputRegisters(0x0000,
6); if (result = node.ku8MBSuccess)
PZEMCurrent = node.getResponseBuffer(0x0001) / 100.0; tempdouble = (node.getResponseBuffer(0x0003)
} startMillisPZEM = currentMillisPZEM ; } currentMillisReadData millis(); if (currentMillisReadData - startMillisReadData > periodReadData)
Serial.print(PZEMVoltage); Serial.println(" V ");
Serial.print(PZEMCurrent); Serial.println(" A ");
Serial.print("Power : "); Serial.print(PZEMPower);
Serial.print("Energy : "); Serial.print(PZEMEnergy);