Module Đo Điện AC Đa Năng Giao Tiếp UART PZEM004T

0
4645

Module đo điện AC đa năng giao tiếp UART PZEM004T công suất đo và hoạt động: 0 ~ 26000W, năng lượng đo và hoạt động: 0~9999kWh, giao tiếp UART mức logic TTL 5VDC baudrate mặc định 9600, 8, 1
Module đo điện AC đa năng giao tiếp UART PZEM004T  được sử dụng để đo và theo dõi gần như hoàn toàn các thông số về điện năng AC của mạch điện như điện áp hoạt động, dòng tiêu thụ, công suất và năng lượng tiêu thụ. Giao tiếp UART dễ dàng kết nối truyền dữ liệu tới Vi điều kiển hoặc máy tính.
Module đo điện giao tiếp UART PZEM004T nhỏ gọn, dễ lắp đặt, sử dụng cách đo dòng cách ly an toàn và khả năng đo dòng lên đến 100A, mạch có chất lượng gia công và linh kiện tốt, độ bền cao.

THÔNG SỐ MODULE ĐO ĐIỆN AC ĐA NĂNG

  • Điện áp đo và hoạt động: 80 ~ 260VAC / 50 – 60Hz, sai số 0.01
  • Dòng điện đo và hoạt động: 0 ~ 100A, sai số 0.01
  • Công suất đo và hoạt động: 0 ~ 26000W
  • Năng lượng đo và hoạt động: 0~9999kWh.
  • Giao tiếp UART mức logic TTL 5VDC baudrate mặc định 9600, 8, 1.
  • Có opto cách ly an toàn giữa mạch đo và mạch nhận tín hiệu UART.
  • Lưu giữ thông số năng lượng tiêu thụ trong bộ nhớ.
  • Có nút Reset, nhấn giữ 5 giây để xóa các thông số về 0.
  • Kích thước: 30 x 75 mm

ĐẶT GIÁ TRỊ CẢNH BÁO CÔNG SUẤT

Ban hành lệnh: B5 C0 A8 01 01 14 33

Trả lời dữ liệu: A5 00 00 00 00 00 A5

Lưu ý: 14 trong lệnh đã ban hành là giá trị cảnh báo (14 là biểu diễn dữ liệu thập lục phân, được chuyển đổi sang số thập phân là 20). Cần lưu ý rằng cài đặt giá trị cảnh báo nguồn của mô-đun này là KW, nghĩa là giá trị cảnh báo tối thiểu là 1KW và tối đa là 22KW.

ĐỌC ĐIỆN ÁP

Ban hành lệnh: B0 C0 A8 01 01 00 1A

Trả lời dữ liệu: A0 00 E6 02 00 00 88

Mô tả: Re dữ liệu điện áp D1D2D3 = 00 E6 02,00 E6 đại diện cho số nguyên điện áp-bit, số thập phân 02 đại diện cho điện áp, điện áp là một số thập phân, 00 E6 chuyển đổi sang thập phân 230; 02 chuyển đổi sang thập phân 2, điện áp hiện tại Giá trị là 230.2V.

ĐỌC DÒNG ĐIỆN

Ban hành lệnh: B1 C0 A8 01 01 00 1B

Trả lời dữ liệu: A1 00 11 20 00 00 D2

Mô tả: Dữ liệu hiện tại trả về là D2D3 = 11 20, 11 đại diện cho bit nguyên hiện tại, 20 đại diện cho vị trí thập phân hiện tại, vị trí thập phân hiện tại là 2 bit, 11 được chuyển đổi sang thập phân 17; 20 được chuyển thành số thập phân 32, do đó giá trị hiện tại là 17,32 A.

ĐỌC CÔNG SUẤT

Ban hành lệnh: B2 C0 A8 01 01 00 1C

Trả lời dữ liệu: A2 08 98 00 00 00 42

Lưu ý: Dữ liệu công suất phục hồi là D1D2 = 08 98, 08 98 được chuyển đổi thành số thập phân 2200, do đó giá trị điện áp hiện tại là 2200W.

ĐỌC ĐIỆN NĂNG TIÊU THỤ

Ban hành lệnh: B3 C0 A8 01 01 00 1D

Trả lời dữ liệu: A3 01 86 9F 00 00 C9

Lưu ý: Dữ liệu điện áp khôi phục là D1D2D3 = 01 86 9F, 01 86 9F được chuyển thành số thập phân 99999, do đó, giá trị lũy thừa của điện là 99999Wh.
Mô-đun PZEM004T phục vụ tất cả các yêu cầu cơ bản của việc đo lường. Bạn có thể sử dụng mô-đun này để đo các giá trị, nhưng nó có một số giới hạn trong việc đo giá trị dòng điện. Nếu bạn muốn tăng giá trị dòng điện tối đa (100A), bạn phải thêm một cuộn dây biến dòng điện có đường kính 33mm (CT), như hình bên dưới. Nếu không có cuộn dây biến dòng này thì mô-đun chỉ có thể đo được vài A.

Hướng dẫn giao tiếp

1. Kết nối phần cứng theo sơ đồ nối dây.

2. Sau khi kết nối đường dây, trước tiên hãy chọn cổng giao tiếp Phần mềm máy chủ của mô-đun này hỗ trợ cổng giao tiếp COM2 COM3 COM4 và có thể xem qua trình quản lý thiết bị.Nếu không phải là cổng trên, nó cần phải được sửa đổi thông qua cổng.

  • 1. Mô-đun này phù hợp để sử dụng trong nhà và không thể sử dụng ngoài trời.
  • 2. Tải trọng áp dụng không được vượt quá công suất định mức.
  • 3. Jack cắm có hướng giúp không bị nhầm lẫn

——————-CODE THAM KHẢO——————-
Thư viện SoftwareSerial.h
Thư viện: https://github.com/mandulaj/PZEM-004T-v30

#include <PZEM004Tv30.h>

PZEM004Tv30 pzem(11, 12);

void setup() {
  Serial.begin(115200);
}

void loop() {
    float voltage = pzem.voltage();
    if(voltage != NAN){
        Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V");
    } else {
        Serial.println("Error reading voltage");
    }

    float current = pzem.current();
    if(current != NAN){
        Serial.print("Current: "); Serial.print(current); Serial.println("A");
    } else {
        Serial.println("Error reading current");
    }

    float power = pzem.power();
    if(current != NAN){
        Serial.print("Power: "); Serial.print(power); Serial.println("W");
    } else {
        Serial.println("Error reading power");
    }

    float energy = pzem.energy();
    if(current != NAN){
        Serial.print("Energy: "); Serial.print(energy,3); Serial.println("kWh");
    } else {
        Serial.println("Error reading energy");
    }

    float frequency = pzem.frequency();
    if(current != NAN){
        Serial.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz");
    } else {
        Serial.println("Error reading frequency");
    }

    float pf = pzem.pf();
    if(current != NAN){
        Serial.print("PF: "); Serial.println(pf);
    } else {
        Serial.println("Error reading power factor");
    }

    Serial.println();
    delay(2000);
}
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include <PZEM004T.h>

PZEM004T pzem(10,11);  // RX,TX
IPAddress ip(192,168,1,1);

void setup() {
  Serial.begin(9600);
  pzem.setAddress(ip);
}

void loop() {
  float v = pzem.voltage(ip);
  if (v < 0.0) v = 0.0;
  Serial.print(v);Serial.print("V; ");

  float i = pzem.current(ip);
  if(i >= 0.0){ Serial.print(i);Serial.print("A; "); }
  
  float p = pzem.power(ip);
  if(p >= 0.0){ Serial.print(p);Serial.print("W; "); }
  
  float e = pzem.energy(ip);
  if(e >= 0.0){ Serial.print(e);Serial.print("Wh; "); }

  Serial.println();

//  delay(1000);
}
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include <PZEM004T.h>

PZEM004T pzem(&Serial1);
IPAddress ip(192,168,1,1);

void setup() {
  Serial.begin(9600);
  pzem.setAddress(ip);
}

void loop() {
  float v = pzem.voltage(ip);
  if (v < 0.0) v = 0.0;
  Serial.print(v);Serial.print("V; ");

  float i = pzem.current(ip);
  if(i >= 0.0){ Serial.print(i);Serial.print("A; "); }
  
  float p = pzem.power(ip);
  if(p >= 0.0){ Serial.print(p);Serial.print("W; "); }
  
  float e = pzem.energy(ip);
  if(e >= 0.0){ Serial.print(e);Serial.print("Wh; "); }

  Serial.println();

//  delay(1000);
}

LEAVE A REPLY

Please enter your comment!
Please enter your name here