Postavíme si jednoduchý obvod, který bude využívat destičku s čipem ESP8266, poté rozšiřující modul pro připojení napěťového transformátoru a nakonec proudový transformátor pomocí kterého budeme z měřeného obvodu bez přerušení či jakéhokoliv narušení zjišťovat aktuální odběr. Budeme tedy měřit odběr ze střídavé sítě klasických zásuvkových obvodu, tedy 220V a možnosti měřit proud do 30 A.
Pozor!
I když naše zapojení a veškerá elektronika, kterou zde budeme dnes stavět, bude napájena jak bezpečným napětím, tak měřící transformátor předpokládá manipulaci v blízkosti standartního jedno fázového zásuvkového napětí. Jedná se o napětí nebezpečné. Proto by zapojení měl vždy provádět odborník!.
Protože jsem úmyslně použil WeMos D1 Mini Pro V3.0 s rozšiřující
deskou, není nutné cokoliv pájet či zapojovat, ale stačí dvojici destiček
do sebe pouze zacvaknout. Napěťoví transformátor je totiž vybaven
klasickým konektorem jack 3,5 mm a v rozšiřujícím modulu je na to
připraven konektor. Přesto není od věci ukázat si alespoň schéma
zapojení, kdybyste z nějakého důvodu chtěli stavět vlastní zapojení
tohoto měřícího transformátoru. Jde vlastně jen o jediný kondenzátor,
čtveřici odporu a samotný konektor na připojení měřícího
transformátoru.
Jak vidíte nic to není, ale s modulem to je prostě mnohem pěknější. No pokud už máme zapojení, stačí nahrát jen kód do ESP a obvod je hotov.
/*
A simple library demo thatat reads an MLP191020 - 1-channel CT sesnor boards
Based On: EmonLib https://github.com/openenergymonitor/EmonLib
Auther: David Mottram
Updated: 22nd September 2021
*/
#include <ESP8266WiFi.h> // needed for EPS8266
#include <WiFiClient.h> // WiFi client
#include <ESP8266WebServer.h>
const char* ssid = "TajnaWifi";
const char* password = "SuperTajneHeslo";
ESP8266WebServer server(80);
String webString = "";
// I/O items
#define Network_LED 2
// library for the MLP191020 PCB
#define Cal_value 1500
// values for reporting
#define Voltage 230
#define CT_Cal 17.619
#define Min_Usable_Value 0.3
#define Reporting_Delay 500
// https://github.com/Mottramlabs/MQTT-Power-Sensor
#include <MLP191020.h>
// make an instance of MLP191020
MLP191020 My_PCB(Cal_value);
double Value = 0; // result
void handle_root() {
int analog = 0;
Serial.println("HTTP cteni ");
// display report
//Serial.print(" - Amps: "); Serial.print(Amps); Serial.print("A - Watts: "); Serial.print(); Serial.print("W");
// read A/D values and store in value
Value = My_PCB.power_sample();
// calc Amps, zero the value if below usable value
float Amps = Value / CT_Cal;
// if below min usable value then zero
if (Value < Min_Usable_Value) {
Amps = 0;
} // end if
int Watts = Amps * Voltage;
webString = "Amps :"+String(Amps)+"|Watts :"+String(Watts)+""; // Arduino has a hard time with float to string
server.send(200, "text/plain", webString); // send to someones browser when asked
delay(100);
}
void setup() {
// start the serial connection
Serial.begin(115200); Serial.println(""); Serial.println(""); Serial.println("Up and Clackin!");
Serial.println(__FILE__);
// setup I/O
pinMode(Network_LED, OUTPUT); digitalWrite(Network_LED, HIGH);
// nasstaveni wifi modu jen na clienta
// WiFi.mode(m): set mode to WIFI_AP, WIFI_STA, or WIFI_AP_STA.
// WiFi.mode(WIFI_STA);
WiFi.softAPdisconnect(true);
// Connect to WiFi network
WiFi.begin(ssid, password);
Serial.print("\n\r \n\rWorking to connect");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", handle_root);
server.begin();
Serial.println("HTTP server started");
} // end of setup
void loop() {
server.handleClient();
// read A/D values and store in value
Value = My_PCB.power_sample();
// calc Amps, zero the value if below usable value
float Amps = Value / CT_Cal;
// if below min usable value then zero
if (Value < Min_Usable_Value) {
Amps = 0;
} // end if
int Watts = Amps * Voltage;
// display report
Serial.print("Value: "); Serial.print(Value); Serial.print(" - Amps: "); Serial.print(Amps); Serial.print("A - Watts: "); Serial.print(Watts); Serial.print("W");
Serial.println("");
// flash the LED
digitalWrite(Network_LED, HIGH); delay(10); digitalWrite(Network_LED, LOW);
delay(Reporting_Delay);
} // end of loop
Jak si můžete všimnout v kódu, jsme úmyslně nechali jak výpis na konzoly, tak se informace zobrazují v podobě jednoduchého textového údaje. Také na webové stránce čidla, pokud je obvod úspěšně připojen k bezdrátové síti. Jde samozřejmě jen o vzorový příklad a kód by se dal velmi pěkně optimalizovat, nicméně jako ukázka to bohatě postačí.
Odkazy
WeMos D1 Mini Pro v3.0 NodeMcu ESP8233 (ALIRXPRESS)
Rozčířující deska pro připojení napětového transformáturu (EBAY)
Vložit komentář
* - vyžadované údaje. RSS kanál s komentáři