Pomiar napięcia sieciowego 230 V i prądu za pomocą płytek takich jak Arduino czy Wemos wydaje się na pierwszy rzut oka zadaniem zaawansowanym. Przy właściwych komponentach, zachowaniu zasad bezpieczeństwa i odrobinie wiedzy możesz zbudować niezawodny system monitorowania energii elektrycznej.
- Dlaczego pomiar 230 V jest niebezpieczny?
- Metody bezpiecznego pomiaru napięcia 230 V
- Metoda 1 – transformator zasilający (rekomendowana dla początkujących)
- Metoda 2 – transformator + czujniki dedykowane (profesjonalna)
- Metoda 3 – modułowy czujnik INA219 (niskie napięcia i prądy)
- Krok po kroku – pomiar 230 V za pomocą Wemos D1 Mini
- Etap 1 – przygotowanie komponentów
- Etap 2 – budowa obwodu pomiaru napięcia
- Etap 3 – budowa obwodu pomiaru prądu
- Etap 4 – program Arduino/Wemos
- Etap 5 – kalibracja
- Bezpieczeństwo elektryczne – niezbędne zasady
- Alternatywy – moduły gotowe
- 1. Sonoff POW R2 – smart meter Wi‑Fi
- 2. Shelly EM – licznik energii
- 3. Zestaw: czujnik ZMPT101B + ACS712
- Wdrażanie w inteligentnym domu
- Rozwiązywanie problemów
- Normy i bezpieczeństwo – skrót najważniejszych zasad
Poradnik przeprowadzi Cię krok po kroku przez całą procedurę – od podstaw teoretycznych po praktyczną realizację.
Dlaczego pomiar 230 V jest niebezpieczny?
Zanim przejdziemy do samego pomiaru, wyjaśnijmy, dlaczego bezpośrednie podanie napięcia sieciowego na pin analogowy mikrokontrolera to prosta droga do awarii i wypadku. Płytki Arduino i Wemos są projektowane do pracy z napięciami maksymalnie 5 V (lub 3,3 V w przypadku Wemos), a kontakt z 230 V AC grozi:
- uszkodzeniem płytki – mikrokontroler nie przeżyje takiego obciążenia;
- zagrożeniem dla użytkownika – prąd elektryczny może być śmiertelny;
- pożarem – niewłaściwe połączenia mogą spowodować krótkie spięcie;
- zniszczeniem komputera – jeśli Arduino jest podłączone przez USB.
Dlatego konieczne jest stosowanie transformatorów, dzielników napięcia i izolacji galwanicznej – tylko wtedy pomiar jest bezpieczny i powtarzalny.
Metody bezpiecznego pomiaru napięcia 230 V
Metoda 1 – transformator zasilający (rekomendowana dla początkujących)
Najprostsza i najbezpieczniejsza metoda to wykorzystanie transformatora 230 V/9–12 V AC. Transformator izoluje obwód niskonapięciowy (Arduino/Wemos) od sieci 230 V, znacząco ograniczając ryzyko porażenia i uszkodzeń.
Do realizacji tej metody przygotuj następujące komponenty:
- transformator 230/9 V AC lub 230/12 V AC (1–2 A),
- mostek prostowniczy (mostek Graetza) lub cztery diody 1N4007,
- kondensatory wygładzające 2200 µF/16 V i 100 nF,
- rezystory do dzielnika napięcia 10 kΩ i 10 kΩ,
- rezystor ochronny 1 kΩ,
- dioda Zenera 5,1 V (1N4733A).
Poniżej znajdziesz ogólny schemat połączeń dla tej metody:
- Uzwojenie wtórne transformatora (9–12 V AC) podłącz do mostka prostowniczego.
- Wyjście mostka (napięcie DC) podłącz do rezystorów tworzących dzielnik napięcia.
- Punkt pośredni dzielnika połącz przez rezystor 1 kΩ i diodę Zenera do pinu analogowego Arduino/Wemos.
- Połącz GND Arduino z GND prostownika.
Dlaczego taki układ działa poprawnie:
- transformator fizycznie izoluje obwód Arduino od sieci,
- prostownik przekształca sygnał AC na DC,
- dzielnik napięcia obniża napięcie do zakresu bezpiecznego dla ADC,
- dioda Zenera chroni pin analogowy przed przepięciami.
Metoda 2 – transformator + czujniki dedykowane (profesjonalna)
Dla bardziej zaawansowanych projektów warto użyć dedykowanych modułów pomiarowych, które zapewniają dobrą separację i ułatwiają kalibrację.
Parametry popularnego czujnika napięcia ZMPT101B prezentują się następująco:
- precyzja – ±0,5%;
- zakres – 80–260 V AC;
- wyjście analogowe – 0–5 V;
- izolacja galwaniczna – wbudowana.
Z kolei dla pomiaru prądu często wybiera się czujnik ACS712:
- dostępne warianty – 5 A, 20 A, 30 A;
- wyjście analogowe – ok. 2,5 V przy 0 A (punkt odniesienia);
- czułość – zależna od wersji (np. 0,185 V/A dla 5 A);
- izolacja galwaniczna – dzięki efektowi Halla.
Najważniejsze atuty podejścia z czujnikami dedykowanymi to:
- brak konieczności bezpośredniej obsługi wysokiego napięcia przez mikrokontroler,
- wyższa dokładność pomiarów,
- prostsza kalibracja,
- dostępność gotowych bibliotek.
Metoda 3 – modułowy czujnik INA219 (niskie napięcia i prądy)
Gdy mierzysz napięcie i prąd w obwodach niskonapięciowych i niskoprądowych, świetnie sprawdza się INA219 z wbudowanym szuntem i komunikacją I²C.
Najważniejsze parametry modułu:
- pomiar napięcia – 0–26 V;
- pomiar prądu – 0–4 A (z dołączonym precyzyjnym szuntem);
- interfejs – I²C (magistrala dwuprzewodowa);
- oprogramowanie – dedykowana biblioteka Adafruit.
Krok po kroku – pomiar 230 V za pomocą Wemos D1 Mini
Etap 1 – przygotowanie komponentów
W tym przykładzie użyjemy transformatora 230/12 V AC i czujnika ACS712 do pomiaru prądu. Zgromadź poniższe elementy:
- wemos D1 Mini (ESP8266),
- transformator 230/12 V AC,
- mostek prostowniczy,
- kondensatory wygładzające 1000 µF/50 V i 100 nF,
- rezystory: 2× 100 kΩ (dzielnik), 1 kΩ (ochronny),
- dioda Zenera 5,1 V,
- czujnik ACS712-30A,
- rezystory 10 kΩ dla toru czujnika prądu,
- kondensator 100 nF dla toru czujnika prądu,
- złączki zaciskowe do podłączeń zasilania,
- obudowa IP54 do montażu na ścianie.
Etap 2 – budowa obwodu pomiaru napięcia
Poniższy schemat blokowy ilustruje przykładowe połączenie transformatora, prostownika i dzielnika napięcia z wejściem ADC:
Sieć 230 V AC
↓
[Transformator 230/12 V AC]
↓ (12 V AC na uzwojeniu wtórnym)
[Mostek prostowniczy]
↓ (ok. 15–17 V DC)
[Kondensator 1000 µF/50 V]
↓
┌─────────────────────┐
│ Dzielnik napięcia │
│ 100 kΩ ──┬── 100 kΩ
│ ├─────────→ A0 (Wemos) + 1 kΩ + Zener 5,1 V
│ │
│ GND
└─────────────────────┘
W oparciu o powyższy schemat, poniżej zebrano najważniejsze założenia doboru elementów:
- maksymalne napięcie wejściowe – ~17 V DC po prostowaniu i filtracji;
- docelowe napięcie na ADC – ok. 2,5 V (bezpieczne dla większości płytek 5 V);
- współczynnik dzielnika – 2,5/17 ≈ 0,147 (dobierz rezystory doświadczalnie i skalibruj pomiar);
- równy dzielnik 100 kΩ/100 kΩ – teoretycznie daje 1/2 napięcia, wymaga zabezpieczenia Zener i kalibracji;
- korekta w praktyce – wyniki należy zgrać z multimetrem podczas kalibracji;
- bezpieczeństwo – priorytetem jest niska moc strat w dzielniku i ograniczenie prądu do wejścia ADC.
Etap 3 – budowa obwodu pomiaru prądu
Czujnik ACS712 mierzy prąd poprzez spadek napięcia na wewnętrznym szuncie i udostępnia sygnał analogowy przesunięty o połowę napięcia zasilania:
Przewód fazowy (żyła brązowa)
↓
[ACS712 – wejście IP]
[ACS712 – wyjście OP] ──→ do mierzonego obciążenia
[VOUT] ──→ A1 (Wemos) poprzez:
- kondensator 100 nF (do masy)
- rezystor 10 kΩ (do V+ = 3,3 V Wemos)
[GND] ──→ GND Wemos
[+5V] ──→ V+ = 5 V (zalecane) lub 3,3 V Wemos
Ważne – zwróć uwagę na zasilanie i punkty odniesienia czujnika:
- zasilanie 5 V zapewnia wyższą czułość i lepszy stosunek sygnału do szumu,
- przy zasilaniu 3,3 V rozdzielczość spada i wymagane jest staranne przeliczenie offsetu,
- kalibrację offsetu i czułości przeprowadź w kodzie po podłączeniu układu.
Etap 4 – program Arduino/Wemos
Poniżej znajdziesz przykładowy kod do odczytu napięcia i prądu. Uwaga: Wemos D1 Mini ma tylko 1 wejście ADC; do dwóch jednoczesnych pomiarów użyj zewnętrznego multipleksera lub innej płytki (np. Arduino Uno):
// Biblioteki
#include <Arduino.h>
// Definicje pinów (dla Arduino z dwoma wejściami ADC)
#define VOLTAGE_PIN A0 // pomiar napięcia
#define CURRENT_PIN A1 // pomiar prądu
// Stałe kalibracyjne
const float VOLTAGE_CALIBRATION = 23.0; // dla transformatora 230/12 V
const float CURRENT_CALIBRATION = 0.066; // dla ACS712-30A (V/A)
const float ADC_REFERENCE = 5.0; // napięcie referencyjne
const int ADC_RESOLUTION = 1023; // dla Arduino Uno/Mega
// Zmienne do pomiaru
float voltage_rms = 0;
float current_rms = 0;
float power = 0;
void setup() {
Serial.begin(115200);
Serial.println("\n\n=== Monitor mocy – Arduino ===");
Serial.println("System gotowy do pomiaru napięcia i prądu");
analogReference(DEFAULT);
}
void loop() {
// Pomiar napięcia (DC po prostowaniu)
int voltage_raw = analogRead(VOLTAGE_PIN);
float voltage_adc = (voltage_raw / (float)ADC_RESOLUTION) * ADC_REFERENCE;
voltage_rms = voltage_adc * VOLTAGE_CALIBRATION; // wzmocnienie z dzielnika
// Pomiar prądu (AC poprzez czujnik Halla)
int current_raw = analogRead(CURRENT_PIN);
float current_adc = (current_raw / (float)ADC_RESOLUTION) * ADC_REFERENCE;
// ACS712 ma punkt zerowy ok. połowy zasilania
float current_offset = ADC_REFERENCE / 2.0; // 2,5 V dla 5 V lub ~1,65 V dla 3,3 V
float current_v = (current_adc - current_offset); // w voltach
current_rms = current_v / CURRENT_CALIBRATION; // w amperach
// Ochrona: bardzo małe wartości ustaw na zero
if (current_rms < 0.1) {
current_rms = 0;
}
// Moc pozorna/przybliżona
power = voltage_rms * current_rms;
// Wyświetlenie
Serial.print("Napięcie: ");
Serial.print(voltage_rms, 1);
Serial.print(" V | Prąd: ");
Serial.print(current_rms, 2);
Serial.print(" A | Moc: ");
Serial.print(power, 1);
Serial.println(" W");
delay(1000); // pomiar co sekundę
}
Etap 5 – kalibracja
Kalibracja napięcia
Wykonaj poniższe czynności, aby zgrać wskazania z rzeczywistością:
- zmierz rzeczywiste napięcie multimetrem (np. 228 V AC),
- zapisz odczyt z Serial Monitora,
- dostosuj współczynnik
VOLTAGE_CALIBRATION, by wynik pokrywał się z pomiarem multimetru, - skorzystaj ze wzoru:
Współczynnik = Wartość_rzeczywista / Odczyt_Arduino.
Kalibracja prądu
Aby dopasować wskazania prądu, postępuj tak:
- podłącz znane obciążenie (np. żarówkę 60 W),
- zmierz rzeczywisty prąd multimetrem,
- koryguj
CURRENT_CALIBRATIONaż do uzyskania zbieżności.
Bezpieczeństwo elektryczne – niezbędne zasady
1. Izolacja galwaniczna
Izolacja transformatorowa jest wymagana zawsze – transformator oddziela sieć od obwodu Arduino, znacząco zwiększając bezpieczeństwo.
2. Ochrona przed przepięciem
Dodatkowe elementy ochronne stabilizują i filtrują sygnał z dzielnika:
- dioda Zenera 5,1 V – ogranicza poziom napięcia na wejściu ADC;
- rezystor 1 kΩ – ogranicza prąd w razie przepięć i błędów połączeń;
- kondensator 100 nF – filtruje zakłócenia wysokoczęstotliwościowe.
3. Obudowa i montaż
Całość układu powinna pracować w szczelnej obudowie o odpowiedniej klasie ochrony. Przykładowy układ elementów w obudowie:
┌─────────────────────────────────┐
│ Obudowa IP54 (hermetyczna) │
│ │
│ [Arduino/Wemos] │
│ [Transformator] │
│ [Prostownik] │
│ │
│ Uwaga: wszystko w obudowie! │
│ Nigdy nie pracuj na żywym │
│ i otwartym obwodzie! │
└─────────────────────────────────┘
Dodatkowe wskazówki montażowe:
- transformator zamontuj wewnątrz sztywnej obudowy,
- wszystkie połączenia z wysokim napięciem starannie osłoń i odizoluj,
- użyj złączek zaciskowych zamiast połączeń „na pająka”,
- przewód zasilający zabezpiecz odpowiednim bezpiecznikiem.
4. Certyfikacja i normy
Jeśli montujesz urządzenie do użytku domowego, pamiętaj o podstawowych wymaganiach formalnych:
- sprawdź zgodność z normą EN 61010-1 (bezpieczeństwo urządzeń pomiarowych),
- zastosuj gniazdo z uziemieniem i przesłonami torów prądowych,
- dołącz krótką instrukcję obsługi i ostrzeżenia.
Alternatywy – moduły gotowe
Jeżeli samodzielna budowa układu jest zbyt czasochłonna, rozważ sprawdzone moduły komercyjne. Poniżej najpopularniejsze propozycje:
1. Sonoff POW R2 – smart meter Wi‑Fi
Najważniejsze cechy tego rozwiązania:
- mierzy napięcie i prąd w jednej obudowie,
- obsługuje Wi‑Fi i integruje się z Home Assistant,
- posiada wbudowane układy ochronne.
2. Shelly EM – licznik energii
Co wyróżnia ten licznik:
- pomiar dwóch obwodów równocześnie,
- obsługa chmury oraz sieci lokalnej,
- precyzja sięgająca ±1%.
3. Zestaw: czujnik ZMPT101B + ACS712
Gotowe moduły pomiarowe oferują szybki start:
- prosty interfejs analogowy lub I²C,
- integracja z popularnymi bibliotekami,
- mniej pracy związanej z kalibracją układu.
Wdrażanie w inteligentnym domu
Integracja z Home Assistant
Poniższy przykład pokazuje, jak dodać sensory MQTT do Home Assistant w pliku configuration.yaml:
# configuration.yaml
sensor:
- platform: mqtt
name: "Napięcie Sieciowe"
state_topic: "home/power/voltage"
unit_of_measurement: "V"
- platform: mqtt
name: "Pobór Prądu"
state_topic: "home/power/current"
unit_of_measurement: "A"
- platform: mqtt
name: "Pobór Mocy"
state_topic: "home/power/power"
unit_of_measurement: "W"
Wysyłanie danych do MQTT (kod na Wemos)
Przykładowy szkic dla ESP8266 (Wemos D1 Mini) z wykorzystaniem biblioteki PubSubClient wygląda tak:
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
extern float voltage_rms;
extern float current_rms;
extern float power;
const char* ssid = "TwojWiFi";
const char* password = "TwojeHaslo";
const char* mqtt_server = "192.168.1.100";
WiFiClient espClient;
PubSubClient client(espClient);
void reconnect() {
while (!client.connected()) {
if (client.connect("ArduinoPowerMonitor")) {
Serial.println("Połączono z MQTT");
} else {
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); }
client.setServer(mqtt_server, 1883);
}
void loop() {
// ... (pomiar jak w poprzednim przykładzie) ...
if (!client.connected()) {
reconnect();
}
client.loop();
// Wysłanie danych
String voltage_str = String(voltage_rms, 1);
String current_str = String(current_rms, 2);
String power_str = String(power, 1);
client.publish("home/power/voltage", voltage_str.c_str());
client.publish("home/power/current", current_str.c_str());
client.publish("home/power/power", power_str.c_str());
delay(5000);
}
Rozwiązywanie problemów
Jeśli napotkasz trudności, porównaj symptomy z poniższą tabelą i zastosuj sugerowane działania naprawcze:
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Odczyt zawsze 0 V | Błędne podłączenie wyjścia transformatora | Sprawdź napięcie multimetrem na wyjściu |
| Wartości chaotyczne | Brak filtracji, szumy AC | Dodaj kondensator 1000 µF i 100 nF |
| Przesunięcie odczytu | Nieprawidłowa kalibracja | Ponów kalibrację z multimetrem |
| Arduino się resetuje | Przeciążenie zasilacza lub spadki napięcia | Użyj zasilacza o większej mocy |
| Czujnik zawsze pokazuje 0 A | Punkt zerowy poza zakresem ADC | Zmierz napięcie na VOUT (powinno być ok. 2,5 V) |
| Wysoka temperatura transformatora | Zbyt duże obciążenie | Zastosuj transformator o wyższej mocy |
Normy i bezpieczeństwo – skrót najważniejszych zasad
Poniżej znajdziesz listę rekomendacji, które warto wdrożyć w każdym projekcie:
- zawsze używaj transformatora izolującego,
- montuj układ w zamkniętej obudowie IP54+,
- stosuj diodę Zenera i rezystor ochronny w torze ADC,
- kalibruj wskazania z multimetrem,
- testuj najpierw na niskich napięciach,
- używaj oznakowanych przewodów i zachowaj porządek okablowania.
Oto czynności, których należy bezwzględnie unikać:
- nigdy nie pracuj bez izolacji galwanicznej,
- nie testuj na żywej sieci bez doświadczenia i nadzoru,
- nie montuj układu bez obudowy,
- nie pomijaj elementów ochronnych w torze pomiarowym.
Elektryczność jest niebezpieczna – jeśli masz wątpliwości, skonsultuj się z wykwalifikowanym elektrykiem lub inżynierem elektroniki.
Artykuł przygotowany: maj 2026