PZEM-004T Manual (dansk)

📖 PZEM-004T v3.0 – Dansk manual

Denne manual er en dansk oversættelse af producentens vejledning til PZEM-004T AC-kommunikationsmodul. Modulet måler AC-spænding, strøm, aktiv effekt, frekvens, effektfaktor og aktiv energi. Det har ikke selv et display – alle data læses ud via TTL-interfacet (seriel/UART) af din Arduino, ESP32, Raspberry Pi eller en PC med en USB-TTL-adapter.

Modulet findes i to udgaver:

  • PZEM-004T-10A: MĂĽleomrĂĽde 10 A (indbygget shunt)
  • PZEM-004T-100A: MĂĽleomrĂĽde 100 A (ekstern strømtransformer / strømtang) – det er denne udgave, KompoNemt sĂŚlger

⚠️ Sikkerhed først

Modulet tilsluttes 230 V netspÌnding. Arbejd aldrig pü kredsløbet med strøm pü, og sørg for at alle 230V-forbindelser er isolerede og berøringssikre (brug fx et lukket kabinet). Fast installation i en eltavle eller i husets elinstallation mü kun udføres af en autoriseret elinstallatør.

1. Funktioner og mĂĽleomrĂĽder

Müling Müleomrüde Opløsning Nøjagtighed
🔌 Spænding 80–260 V 0,1 V 0,5 %
⚡ Strøm 0–10 A (10A-udgave)
0–100 A (100A-udgave)
0,001 A 0,5 %
📈 Aktiv effekt 0–2,3 kW (10A-udgave)
0–23 kW (100A-udgave)
0,1 W 0,5 %
🎛️ Effektfaktor 0,00–1,00 0,01 1 %
〰️ Frekvens 45–65 Hz 0,1 Hz 0,5 %
🔋 Aktiv energi 0–9.999,99 kWh 1 Wh 0,5 %

StartvĂŚrdier

  • Mindste mĂĽlbare strøm: 0,01 A (10A-udgave) / 0,02 A (100A-udgave)
  • Mindste mĂĽlbare effekt: 0,4 W

Visningsformat

  • Effekt: Under 1000 W vises ĂŠn decimal (fx 999,9 W). Fra 1000 W vises kun hele tal (fx 1000 W).
  • Energi: Under 10 kWh vises enheden Wh (1 kWh = 1000 Wh), fx 9999 Wh. Fra 10 kWh vises enheden kWh, fx 9999,99 kWh.
  • Nulstilling af energi: Sker via software (se afsnit 2.5).

Alarm ved overbelastning

Du kan indstille en grĂŚnsevĂŚrdi for den aktive effekt. NĂĽr den mĂĽlte effekt overstiger grĂŚnsen, gĂĽr modulet i alarm (kan aflĂŚses i register 0x0009).

Kommunikationsinterface

UART-interface (TTL), galvanisk adskilt fra 230V-siden med optokoblere.

2. Kommunikationsprotokol

2.1 Fysisk lag

UART-kommunikation. Baudrate kan vĂŚlges (standard 9600), 8 databit, 1 stopbit, ingen paritet (9600 8N1).

2.2 Applikationslag

Modulet bruger Modbus-RTU. Følgende funktionskoder understøttes:

  • 0x03 – LĂŚs holding-register (indstillinger)
  • 0x04 – LĂŚs input-register (mĂĽleresultater)
  • 0x06 – Skriv enkelt register
  • 0x41 – Kalibrering (kun til fabriksbrug)
  • 0x42 – Nulstil energitĂŚller

Funktionskode 0x41 er kun til intern brug (adressen kan kun være 0xF8) og bruges ved fabrikskalibrering og service. Efter funktionskoden sendes et 16-bit kodeord – standardkodeordet er 0x3721.

Adresser: Slave-adressen kan være 0x01–0xF7. Adressen 0x00 er broadcast-adresse – her svarer modulet ikke. Adressen 0xF8 er en generel adresse, som kun må bruges når der er ét modul på bussen; den kan bruges til kalibrering m.m.

2.3 AflĂŚsning af mĂĽleresultater

Masterens kommando (i alt 8 bytes):

Slave-adresse + 0x04 + Registeradresse (høj) + Registeradresse (lav)
+ Antal registre (høj) + Antal registre (lav) + CRC (høj) + CRC (lav)

Modulets svar er en af to typer:

Korrekt svar: Slave-adresse + 0x04 + Antal bytes + Register 1 data (høj)
+ Register 1 data (lav) + ... + CRC (høj) + CRC (lav)

Fejlsvar: Slave-adresse + 0x84 + Fejlkode + CRC (høj) + CRC (lav)

Fejlkoder (gĂŚlder alle kommandoer):

  • 0x01 – Ulovlig funktion
  • 0x02 – Ulovlig adresse
  • 0x03 – Ulovlige data
  • 0x04 – Slave-fejl

Registre med mĂĽleresultater:

Register Beskrivelse Opløsning
0x0000 SpĂŚnding 1 LSB = 0,1 V
0x0001 Strøm – nederste 16 bit 1 LSB = 0,001 A
0x0002 Strøm – øverste 16 bit
0x0003 Effekt – nederste 16 bit 1 LSB = 0,1 W
0x0004 Effekt – øverste 16 bit
0x0005 Energi – nederste 16 bit 1 LSB = 1 Wh
0x0006 Energi – øverste 16 bit
0x0007 Frekvens 1 LSB = 0,1 Hz
0x0008 Effektfaktor 1 LSB = 0,01
0x0009 Alarmstatus 0xFFFF = alarm, 0x0000 = ingen alarm

Eksempel (CRC-koden er erstattet af 0xHH og 0xLL – det samme gælder resten af manualen). Masteren sender:

0x01 + 0x04 + 0x00 + 0x00 + 0x00 + 0x0A + 0xHH + 0xLL

Det betyder: lĂŚs 10 registre fra slave-adresse 0x01, startende ved register 0x0000. Korrekt svar fra modulet:

0x01 + 0x04 + 0x14 + 0x08 + 0x98 + 0x03 + 0xE8 + 0x00 + 0x00 + 0x08 + 0x98
+ 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x01 + 0xF4 + 0x00 + 0x64
+ 0x00 + 0x00 + 0xHH + 0xLL

Dataene betyder:

  • SpĂŚnding er 0x0898 = 2200 decimalt → 220,0 V
  • Strøm er 0x000003E8 = 1000 → 1,000 A
  • Effekt er 0x00000898 = 2200 → 220,0 W
  • Energi er 0x00000000 = 0 → 0 Wh
  • Frekvens er 0x01F4 = 500 → 50,0 Hz
  • Effektfaktor er 0x0064 = 100 → 1,00
  • Alarmstatus er 0x0000 → effekten er under grĂŚnsevĂŚrdien

2.4 LĂŚs og ĂŚndr modulets indstillinger

Det er kun slave-adressen og effektalarmens grĂŚnsevĂŚrdi, der kan lĂŚses og ĂŚndres:

Register Beskrivelse Opløsning
0x0001 GrĂŚnsevĂŚrdi for effektalarm 1 LSB = 1 W
0x0002 Modbus-RTU-adresse Område 0x0001–0x00F7

Indstillingerne læses på samme måde som måleresultaterne (afsnit 2.3) – du skal bare bruge funktionskode 0x03 i stedet for 0x04.

Kommando til at ĂŚndre en indstilling (i alt 8 bytes):

Slave-adresse + 0x06 + Registeradresse (høj) + Registeradresse (lav)
+ RegistervÌrdi (høj) + RegistervÌrdi (lav) + CRC (høj) + CRC (lav)
Korrekt svar: Slave-adresse + 0x06 + Antal bytes + Registeradresse (lav)
+ RegistervÌrdi (høj) + RegistervÌrdi (lav) + CRC (høj) + CRC (lav)

Fejlsvar: Slave-adresse + 0x86 + Fejlkode + CRC (høj) + CRC (lav)

Eksempel – sæt alarmgrænsen:

0x01 + 0x06 + 0x00 + 0x01 + 0x08 + 0xFC + 0xHH + 0xLL

SĂŚtter register 0x0001 (effektalarm) til 0x08FC = 2300 W. Lykkes det, sender modulet prĂŚcis de samme data tilbage.

Eksempel – skift slave-adresse:

0x01 + 0x06 + 0x00 + 0x02 + 0x00 + 0x05 + 0xHH + 0xLL

SĂŚtter register 0x0002 (Modbus-RTU-adresse) til 0x0005. Lykkes det, sender modulet de samme data tilbage.

💡 Tip fra værkstedet: Vil du have flere PZEM-moduler på samme serielle linje (fx ét pr. fase), så giv dem hver sin adresse – ét ad gangen – før du kobler dem sammen.

2.5 Nulstil energitĂŚlleren

Kommando (4 bytes): Slave-adresse + 0x42 + CRC (høj) + CRC (lav)
Korrekt svar:       Slave-adresse + 0x42 + CRC (høj) + CRC (lav)
Fejlsvar:           Slave-adresse + 0xC2 + Fejlkode + CRC (høj) + CRC (lav)

2.6 Kalibrering

Kommando (6 bytes): 0xF8 + 0x41 + 0x37 + 0x21 + CRC (høj) + CRC (lav)
Korrekt svar:       0xF8 + 0x41 + 0x37 + 0x21 + CRC (høj) + CRC (lav)
Fejlsvar:           0xF8 + 0xC1 + Fejlkode + CRC (høj) + CRC (lav)

Bemærk: Kalibreringen tager 3–4 sekunder. Hvis den lykkes, går der 3–4 sekunder, fra masteren har sendt kommandoen, til svaret kommer fra modulet. Kalibrering er normalt kun nødvendig på fabrikken.

2.7 CRC-kontrol

CRC-kontrollen er 16 bit og fylder to bytes. Generatorpolynomiet er X16 + X15 + X2 + 1, og vĂŚrdien der bruges i beregningen er 0xA001 (standard Modbus CRC-16). CRC beregnes over alle bytes i rammen undtagen selve CRC-bytes.

3. Funktionsdiagram

Internt bestür modulet af en AC-strømforsyning, et signalkredsløb og et mülesystem. Mülesystemet er adskilt fra TTL-interfacet med optokoblere, sü din microcontroller er galvanisk isoleret fra 230V-siden.

  • PZEM-004T-10A: Klemmerne hedder N-OUT, N-IN, L-IN og L-OUT – strømmen løber gennem modulets indbyggede shunt.
  • PZEM-004T-100A: Klemmerne hedder CT, CT, N og L – strømmen mĂĽles via den eksterne strømtang (CT).

TTL-siden har 4 stifter:

GNDTXRX5V

4. Tilslutning (100A-udgaven)

  1. SpÌndingsmüling: Forbind L (fase) og N (nul) til modulets L- og N-klemmer. Det er herfra, modulet müler spÌnding og samtidig für strøm til mülesiden.
  2. Strømtang (CT): Sæt strømtangens to ledninger i de to CT-klemmer. Klik tangen rundt om én af ledningerne til belastningen (typisk fasen L) – aldrig rundt om både L og N, så udligner de hinanden og du måler 0 A.
  3. Belastning: Belastningen (fx en lampe eller et apparat) sidder på L og N som normalt – strømmen skal bare løbe gennem tangen.
  4. TTL-side: Forbind GND, TX, RX og 5V til din microcontroller eller en USB-TTL-adapter (TX → RX og RX → TX).

Spænding: AC 80–260 V · Strøm: 0–100 A

10A-udgaven tilsluttes i stedet direkte i serie: strømmen til belastningen løber ind og ud gennem modulets klemmer (maks. 10 A).

5. Øvrige bemÌrkninger

5.1 TTL-interfacet er passivt

TTL-interfacet er passivt og skal have ekstern strømforsyning. Det betyder, at alle fire stifter (5V, RX, TX og GND) skal være tilsluttet under kommunikation – ellers kan modulet ikke kommunikere.

5.2 Driftstemperatur

-20 °C til +60 °C.

🧠 Kom hurtigt i gang

  • Arduino / ESP32: Brug biblioteket PZEM004Tv30 af Jakub Mandula (findes i Arduino Library Manager). PĂĽ ESP32 kan du bruge en hardware-UART, fx Serial2.
  • ESPHome: Brug platformen pzemac sammen med en uart- og modbus-komponent – sĂĽ fĂĽr du spĂŚnding, strøm, effekt, energi, frekvens og effektfaktor direkte i Home Assistant.
  • Tasmota: Understøtter PZEM-004T v3 direkte (vĂŚlg "PZEM016 Rx" og "PZEM0XX Tx" under modulkonfiguration).

Har du spørgsmål? Skriv til os – vi hjælper gerne. 🔧