TABLET A PZEM004T_100A AC

      Občas potřebuji v různých zařízeních současně měřit více parametrů při odběru v síti 230VAC a tak padla volba před výrobou přípravku na odzkoušení již dříve zakoupeného a zatím nevyužitého modulu PZEM-004T-80 – 230V AC – 100A AC a ovládání pomocí Arduino Nano, se zobrazováním hodnot na tabletu nebo chytrém telefonu v sériovém terminálu pro Android, nebo je možné využít i počítač PC a sériový terminál například z [1] s převodníkem USB/COM CH340.  Přenos dat mezi samotnou jednotkou a tabletem je řešený pomocí bluetooth JDY – 33, uuvedené zapojení může posloužit při podobných experimentech s uvedeným modulem PZEM-004T.

MODUL PZEM-004T-100A AC

     Uvedený modul měří současně napětí AC, proud AC, odběr W, celkovou spotřebu kwh, frekvenci sítě Hz a účiník (cos fí). Modul má na komunikačním rozhraní s řídícím mikrokontrolérem použity optočleny, napájení modulu je ze sítě 230V AC kdy je napětí sníženo klasickým zapojením rezistoru a kondenzátorem v sérii, modul komunikuje s Arduino Nano protokolem MODBUS  - RTU. Doporučené připojení měřícího transformátoru proudu k modulu je tak že červený vodič je vždy připojen do krajní svorky na modulu. Bližší popis modulu je podrobně popsán na internetu včetně programů pro jeho používání.

NAPÁJENÍ A POPIS PŘÍPRAVKU

      Přípravek tedy pouze pro Arduino nano je napájen továrním zdrojem 230VAC/7VDC 1,0A kdy je napětí stabilizováno na desce Arduino Nano na hodnotu 5V, které napájí i modul bluetooth JDY – 33 a optočleny na modulu PZEM. Deska  Arduino Nano je osazena do rozšiřujícího IO sheildu který umožňuje využít desku Arduino Nano využívat i pro shieldy určené pro Arduino Uno. Do IO shieldu je připojen převodník pro bluettoth který je vyrobený na univerzální vrtané desce a tvoří jej odporový dělič pro vstup RXD bluetooth modulu na hodnotu vstuního napětí 3.3V. Komunikační signály RXD a TXD bluetooth modulu jsou připojeny na IO shieldu k signálům RXD a TXD, kdy signál bluetooth modulu TXD je připojen na IO shieldu na PIN „0“ RXD. Signál bluetooth modulu RXD je připojen na IO shieldu na PIN „1“ TXD, na schématu zapojení na Obr.č.01 je nakresleno připojení bluetooth modulu a modulu PZEM přímo k desce Arduino Nano. Komunikační signály RXD a TXD na modulu PZEM jsou se signály RXD a TXD na IO shieldu ARDUINO NANO připojeny tak že PIN 11 „RXD“ IO shieldu je připojen na signál TXD modulu, PIN 12 „TXD“ IO shieldu je připojen na signál RXD modulu. Kladné napájecí napětí +5V modulu je připojen na IO shieldu na kladný napájecí pin +5V, záporné napájecí napětí -5V modulu je připojeno na IO shieldu na záporný napájecí PIN.

PROGRAMY

     Programy jsou uloženy v tomto archivu ke stažení:
TABLET_A_PZEM-004T_100A_AC.zip
v daresáři ARDUINO a v podadresářích BLUETOOTH_PZEM a PZEM_BLUETOOTH, jde o moje upravené programy pro odzkoušení modulu PZEM z programu který je součástí knihovny. Program s názvem BLUETOOTH_PZEM umožňuje odečet až po odeslání číselné hodnoty „1“ ze spuštěného terminálu na tabletu, chytrého telefonu nebo spuštěného terminálu na PC, tak že vždy po odeslání hodnoty „1“ se zobrazí další načtené hodnoty z modulu PZEM. Progam PZEM_BLUETOOTH má pevně nastavenou hodnotu mezi odečty hodnot z PZEM na čas 10 vteřin, tuto hodnotu je možné před kompilací a nahrání programu do Arduina změnit. V uvedených podadresářích jsou i adresáře s naměřenými daty z tabletu. V adresáři ARDUINO je i adresář KNIHOVNA kde je knihovna pro programy a komunikaci s modulem PZEM-004T-80 – 230V AC – 100A AC.

BLUETOOTH_PZEM:

 // Program pro mereni s modulem PZEM-004T 100A

// zobrazovani hodnot je na LCD displeji tabletu
// odecet se provede po zadani a odeslani hodnoty "1" z terminalu v tabletu
// vagnervlastimil@seznam.cz

#include <PZEM004Tv30.h>
PZEM004Tv30 pzem(11,12);
int hodnota;

void setup() {
Serial.begin(9600);
hodnota = 0;
}

void loop() {
if (Serial.available() > 0){
hodnota=Serial.parseInt();
if (hodnota == 1){
Serial.println("ODECET HODNOT");
float voltage = pzem.voltage();
if(voltage != NAN){
Serial.print("Napeti: ");Serial.print(voltage);Serial.println(" V");
} else {
Serial.println("Chyba data napeti");
}
float current = pzem.current();
if(current != NAN){
Serial.print("Proud: ");Serial.print(current);Serial.println(" A");
} else {
Serial.println("Chyba data proud");
}
float power = pzem.power();
if(current != NAN){
Serial.print("Odber: ");Serial.print(power);Serial.println(" W");
} else {
Serial.println("Chyba data odber");
}
float energy = pzem.energy();
if(current != NAN){
Serial.print("Spotreba: ");Serial.print(energy,3);Serial.println(" kWh");
} else {
Serial.println("Chyba data spotreba");
}
float frequency = pzem.frequency();                      
if(current != NAN){
Serial.print("Frekvence: ");Serial.print(frequency, 1);Serial.println(" Hz");
} else {
Serial.println("Chyba data frekvence");
}
float pf = pzem.pf();
if(current != NAN){
Serial.print("Ucinik: ");Serial.println(pf);
} else {
Serial.println("Chyba data ucinik");
}
}
hodnota = 0;
Serial.println();
}
delay(1000);
}
 

PZEM_BLUETOOTH:

// Program pro mereni s modulem PZEM-004T 100A
// zobrazovani hodnot je na LCD displeji tabletu
// vagnervlastimil@seznam.cz

#include <PZEM004Tv30.h>
PZEM004Tv30 pzem(11,12);

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

void loop() {
float voltage = pzem.voltage();
if(voltage != NAN){
Serial.print("Napeti: ");Serial.print(voltage);Serial.println(" V");
} else {
Serial.println("Chyba data napeti");
}
float current = pzem.current();
if(current != NAN){
Serial.print("Proud: ");Serial.print(current);Serial.println(" A");
} else {
Serial.println("Chyba data proud");
}
float power = pzem.power();
if(current != NAN){
Serial.print("Odber: ");Serial.print(power);Serial.println(" W");
} else {
Serial.println("Chyba data odber");
}
float energy = pzem.energy();
if(current != NAN){
Serial.print("Spotreba: ");Serial.print(energy,3);Serial.println(" kWh");
} else {
Serial.println("Chyba data spotreba");
}
float frequency = pzem.frequency();
if(current != NAN){
Serial.print("Frekvence: ");Serial.print(frequency, 1);Serial.println(" Hz");
} else {
Serial.println("Chyba data frekvence");
}
float pf = pzem.pf();
if(current != NAN){
Serial.print("Ucinik: ");Serial.println(pf);
} else {
Serial.println("Chyba data Ucinik");
}
Serial.println();
delay(10000);
}

[1] www.mojeelektronika.mzf.cz

Bližší informace :
vagnervlastimil@seznam.cz 

Další podobné články

OVLÁDÁNÍ VÍCE RELÉ S NEOPIXEL RGB ARDUINEM

Kamarád mi poprosil o pomoc s tím že v současnosti potřebuje v jednom projektu ovládat čtyři reléové moduly, kdy jeden obsahuje šestnáct relátek které zakoupil v [1] a již má hotovou část zapojení přípravku, s tím že časem by chtěl ovládání z PC „po otestování“, ovládat diody pomocí tabletu nebo chytrého telefonu. Na tento počet ovládání relé je potřeba 64 ovládacích pinů, což ani ARDUINO MEGA 2560 s potřebou dalších vstupů které budou potřeba není možné použít. Po návrzích s posuvnými registry kterých by bylo potřeba osm kusů a složitosti zapojení mi napadlo použít pásek NEOPIXEL  s RGB led diodami kdy na ovládání stačí jeden výstup z ARDUINA. Tak že pro pokusy co a jak půjde použít, jsem použil modul relátek osazený dvěma relátky, modul s MOSFET tranzistorem, Neopixel pásek s osmi RGB led diodami WS2812B, fototranzistor GL5528 a bluetooth JDY-33 pro komunikaci s tabletem chytrým telefonem vše zakoupené v [1]. Napsané programy jsou celkem dva jeden pouze pro ovládání Neopixel s osmi RGB led diodami, druhý pak umožňuje ovládat maximálně 255 RGB led použitých v Neopixel pásku. Oba programy umožňují ovládat libovolnou RGB diodu nebo více RGB led diod na Neopixel pásku včetně barev a dají se upravit dle potřeby. Přípravek může posloužit při vlastních pokusech s RGB LED Neopixel pásky a zároveň doplňuje články v [2]. Ovládání RGB diod je zde řešeno s ARDUINO NANO je možné použít i ARDUINO UNO. Programové ovládání RGB led diod na Neopixel pásku je dle požadavků kamaráda.