https://github.com/archytech99/pzem-017
https://github.com/archytech99/pzem-017
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/archytech99/pzem-017
- Owner: archytech99
- Created: 2025-06-30T05:05:59.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2025-06-30T05:06:12.000Z (12 months ago)
- Last Synced: 2025-06-30T05:30:37.063Z (12 months ago)
- Language: C++
- Size: 0 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PZEM-017 DC Communication Module
Pustaka komunikasi arduino untuk monitor power dan energi dari perangkat Peacefair PZEM-017, dengan sedikit perubahan dari pustaka [Hemmarit Hema's PZEM-017-v1](https://github.com/maxzerker/PZEM-017-v1).
***
## Rentang Pengukuran
50A, 100A, 200A, 300A kisaran arus tergantung pada spesifikasi shunt eksternal.
## Fitur ([*datasheet*](./PZEM-003%20017User%20Manual(MEDC300V).pdf))
### Tegangan (V)
- Rentang pengukuran: 0,05-300 V. (*bila tegangan uji < 7V, harap gunakan mode catu daya independen*)
- Resolusi: 0,01V.
- Akurasi pengukuran: 1%.
### Arus (A)
- Rentang pengukuran: 0,02-300 A (*dapat dicocokkan dengan empat jenis shunt 50, 100, 200, 300A*)
- Resolusi: 0,01A.
- Akurasi pengukuran: 1%.
### Daya (W)
- Rentang pengukuran: 0,2-90 kW.
- Resolusi: 0,1W.
- Akurasi pengukuran: 1%.
### Konsumsi Energi (Wh)
- Rentang pengukuran: 0-9999 kWh.
- Resolusi: 1Wh.
- Akurasi pengukuran: 1%.
### Alarm Tegangan Berlebih
- Ambang tegangan dapat diatur, dibagi menjadi ambang tegangan tinggi dan ambang tegangan rendah, ketika tegangan yang diukur melebihi ambang batas, maka dapat membunyikan alarm. Ambang tegangan tinggi default adalah 300V, ambang tegangan rendah default adalah 7V.
## Protokol Komunikasi
- Antarmuka **RS485**.
- Lapisan fisik menggunakan antarmuka komunikasi UART ke RS485.
- Baud rate adalah **9600**, 8 bit data, 2 bit stop, tanpa paritas.
## Daftar alamat pengukuran disusun sebagai berikut
| Register Addr. | Deskripsi | Resolution |
|----------------|-------------------------------|----------------------------------------|
| 0x0000 | nilai tegangan | 1LSB sesuai dengan 0,01V |
| 0x0001 | nilai arus | 1LSB sesuai dengan 0,01A |
| 0x0002 | nilai daya rendah (16 bits) | 1LSB sesuai dengan 0,1W |
| 0x0003 | nilai daya tinggi (16 bits) | 1LSB sesuai dengan 0,1W |
| 0x0004 | nilai energi rendah (16 bits) | 1LSB sesuai dengan 1Wh |
| 0x0005 | nilai energi tinggi (16 bits) | 1LSB sesuai dengan 1Wh |
| 0x0006 | alarm status tegangan tinggi | 0xFFFF adalah alarm, 0x000 bukan alarm |
| 0x0007 | alarm status tegangan rendah | 0xFFFF adalah alarm, 0x000 bukan alarm |
\* *Menggunakan transformator arus eksternal sebagai pengganti shunt internal*
## Contoh Sketch
```c++
/* Gunakan software serial untuk PZEM
* Pin 4 Rx (Hubungkan ke Tx pin pada PZEM)
* Pin 5 Tx (Hubungkan ke Rx pin pada PZEM)
*/
#include
PZEM017v1 pzem(4, 5); //WMOS D1 4=D1, 5=D2
void setup()
{
Serial.begin(115200);
}
void loop()
{
float voltage = pzem.voltage();
if ( !isnan(voltage) )
Serial.printf("Tegangan: %.3f V", voltage);
else
Serial.println("Kesalahan membaca tegangan");
float current = pzem.current();
if ( !isnan(current) )
Serial.print("Arus: %.3f A", current);
else
Serial.println("Kesalahan membaca arus");
float power = pzem.power();
if ( !isnan(power) )
Serial.print("Daya: %.2f W", power);
else
Serial.println("Kesalahan membaca daya");
float energy = pzem.energy();
if ( !isnan(energy) )
Serial.print("Energi: %.3f kWh");
else
Serial.println("Kesalahan membaca energi");
Serial.println();
delay(2000);
}
```
## Petunjuk Instalasi
Anda seharusnya dapat menginstal pustaka dari Library Manager di Arduino IDE. Anda juga dapat mengunduh ZIP repositori ini dan menginstalnya secara manual. Panduan tentang cara melakukannya ada di sini: [https://www.arduino.cc/en/guide/libraries](https://www.arduino.cc/en/guide/libraries).
***
**Credits**: thank you to [Hemmarit Hema's PZEM-017-v1](https://github.com/maxzerker/PZEM-017-v1) for this great library.