Arduino – jak bezpiecznie zrobić pomiar napięcia 230 V i prądu z użyciem Wemos?

Feliks Nitkowski
15 min czytania

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.

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:

  1. Uzwojenie wtórne transformatora (9–12 V AC) podłącz do mostka prostowniczego.
  2. Wyjście mostka (napięcie DC) podłącz do rezystorów tworzących dzielnik napięcia.
  3. Punkt pośredni dzielnika połącz przez rezystor 1 kΩ i diodę Zenera do pinu analogowego Arduino/Wemos.
  4. 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_CALIBRATION aż 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

Udostępnij ten artykuł
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *