Proudový senzor HWTC 5A

Proudový senzor HWTC je vstupní měřící modul pro Arduino. Tento senzor slouží pro měření průchozího střídavého (AC) proudu vodičem. Jak si můžete všimnout na jeho konstrukci, tak uprostřed senzoru je otvor o průměru 5 milimetrů. Pokud tímto otvorem protáhneme fázový nebo nulový vodič, tak můžeme na výstupu senzoru naměřit výstupní proud, který je násobně menší než proud měřeným vodičem. V tomto případě jsem ze svého měření zjistil, že použitý 5A senzor má převodní poměr 1000:1. A jak si můžete všimnout z názvu senzoru, tak maximální měřený proud je 5 Ampér, při kterém naměříme na výstupu proud 5 mA.

Pro úspěšné propojení senzoru HWTC a Arduino desky stačí zapojit celkem 2 vodiče. Propojíme jeden pin senzoru s pinem A0 a druhý se zemí Arduina. Pro analogový vstup musíme vybrat analogový pin, ale pokud chcete využít jiný z dostupných pinů, je nutné tuto volbu provést také na začátku programu. Důležitou součástkou je pro nás také paralelně zapojený odpor o známé velikosti, kdy já jsem zvolil odpor 220 ohmů. Na tomto odporu měříme úbytek napětí pro zjištění výstupního proudu senzoru pomocí Ohmova zákona.

Ukázkový kód obsahuje na svém začátku nastavení číslo propojovacího pinu senzoru, nastavení velikosti použitého odporu a vytvoření měřících proměnných.
V podprogramu setup zahájíme komunikaci po sériové lince a poté nastavíme pin se senzorem jako vstupní.
Na začátku nekonečné smyčky loop je vždy zavolána funkce pro měření napětí špička-špička, která svůj výsledek uloží do proměnné. Poté provedeme několik výpočtů pro získání všech informací. První výpočet vychází z Ohmova zákona a získáme z něj hodnotu proudu špička-špička (I=U/R), kdy je ještě tato hodnota vynásobena tisícem pro získání proudu v miliampérech. Dalším výpočtem převedeme hodnotu špička-špička na takzvanou RMS – efektivní hodnotu proudu. A třetí výpočet využívá znalosti převodního poměru senzoru 1000:1. Poslední výpočet pak slouží ke zjednodušenému výpočtu odběru energie ve Wattech, kdy je použita hodnota napětí 230 Voltů a proud je převeden z miliAmpér na Ampéry. Na konci programu vytiskneme všechny dostupné údaje po sériové lince a smyčka se opakuje.
Pod smyčkou loop se nachází ještě zmíněná funkce pro měření napětí špička-špička, která obsahuje na svém začátku měřící proměnné a uložení aktuálního času od spuštění do proměnné. V další kroku se přesuneme do while smyčky, kde zůstaneme po dobu jedné sekundy (1000 ms). V této smyčce se provádí opakovaná měření napětí ze senzoru, kdy se hledá nejvyšší hodnota (špičkové napětí). A pokud je aktuálně měřená hodnota vyšší než předchozí uložená, přepíšeme si ji jako nové maximum. Po sekundě měření převedeme výsledek na napětí ve Voltech a vrátíme ho jako výstup funkce.

// AC senzor proudu

// nastavení čísla propojovacího pinu
#define pinSenzor A0
// nastavení velikosti odporu
float odpor = 220.0;
// měřící proměnné
float napetiSpickove;
float proudSpickovyPresRezistor;
float proudRMSPresRezistor;
float proudRMSmereny;
float odberWatt;

void setup() {
  // zahájení komunikace po sériové lince
  Serial.begin(9600);
  // nastavení pinu se senzorem jako vstup
  pinMode(pinSenzor, INPUT);
}

void loop() {
  // získání napětí Špička-špička pomocí funkce
  napetiSpickove = namerNapetiSpickaSpicka();
  // výpočet proudu v mA tekoucího rezistorem pomocí Ohmova zákona
  proudSpickovyPresRezistor = (napetiSpickove / odpor) * 1000.0;
  // výpočet RMS hodnoty proudu
  proudRMSPresRezistor = proudSpickovyPresRezistor * 0.707;
  // výpočet měřeného proudu díky znalosti
  // převodního poměru 1000:1
  proudRMSmereny = proudRMSPresRezistor * 1000;
  // zjednodušený výpočet spotřeby
  odberWatt = 230.0 * (proudRMSmereny / 1000.0);
  // vytištění všech údajů po sériové lince
  // s přesností na 3 desetinná místa
  Serial.print("Napeti spicka-spicka: ");
  Serial.println(napetiSpickove, 3);
  Serial.print("Proud tekouci rezistorem (spicka-spicka): ");
  Serial.print(proudSpickovyPresRezistor, 3);
  Serial.println(" mA.");
  Serial.print("Proud tekouci rezistorem (RMS): ");
  Serial.print(proudRMSPresRezistor, 3);
  Serial.println(" mA RMS.");
  Serial.print("Proud mereny: ");
  Serial.print(proudRMSmereny, 3);
  Serial.println(" mA RMS.");
  Serial.print("Odber energie: ");
  Serial.print(odberWatt, 3);
  Serial.println(" W.");
  Serial.println();
}

float namerNapetiSpickaSpicka() {
  // měřící proměnné
  float vysledek;
  int merenaHodnota;
  int maximum = 0;
  // uložení startovacího času
  unsigned long zacatekMereni = millis();
  // po dobu jedné sekundy měř
  while ((millis() - zacatekMereni) < 1000) {
    // měření napětí na odporu
    merenaHodnota = analogRead(pinSenzor);
    // kontrola nalezení maxima
    if (merenaHodnota > maximum) {
      // uložení nového maxima
      maximum = merenaHodnota;
    }
  }
  // převod výsledku na napětí ve Voltech
  vysledek = (maximum * 5.0) / 1024.0;
  // vrácení výsledku funkce
  return vysledek;
}

Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem proudu HWTC dostaneme například tento výsledek, kdy já jsem zapojil jako spotřebič lampičku s 30 W žárovkou:

Napeti spicka-spicka: 0.000
Proud tekouci rezistorem (spicka-spicka): 0.000 mA.
Proud tekouci rezistorem (RMS): 0.000 mA RMS.
Proud mereny: 0.000 mA RMS.
Odber energie: 0.000 W.

Napeti spicka-spicka: 0.039
Proud tekouci rezistorem (spicka-spicka): 0.178 mA.
Proud tekouci rezistorem (RMS): 0.126 mA RMS.
Proud mereny: 125.533 mA RMS.
Odber energie: 27.617 W.

Napeti spicka-spicka: 0.039
Proud tekouci rezistorem (spicka-spicka): 0.178 mA.
Proud tekouci rezistorem (RMS): 0.126 mA RMS.
Proud mereny: 125.533 mA RMS.
Odber energie: 27.617 W.

Proudový senzor HWTC je zajímavou možností, jak měřit střídavý proud ve vodiči. Jako jistou nevýhodu ale vidím u tohoto typu senzoru zaprvé malý měřící otvor a zadruhé nerozebíratelné pouzdro. Díky tomu tedy není úplně jednoduché vzít jeden vodič z přívodu a vézt ho skrze senzor. Tento senzor ale může být vhodným kandidátem pro různá zařízení, kde byste rádi měřili průchozí střídavý proud vodičem a z něj určili ať už stav zařízení (zapnuto/vypnuto), tak i hodnotu průchozího proudu a z něj odvozený energetický odběr.

Poznámka: V programu je uveden zjednodušený vztah pro výpočet odběru energie. Pro přesný výpočet bychom měli podobným způsobem měřit i efektivní hodnotu napětí, která je zde zastoupena pevnou hodnotou 230 Voltů.
Pokud budete používat senzor v plném rozsahu 5A, tak doporučuji použít menší odpor 100 ohmů. Mikrokontrolér Atmega328 použitý na deskách Arduino UNO totiž dle výrobce zvládá pouze -0,5 Voltů, což při proudu 5mA odpovídá právě odporu 100 ohm.

Rád bych také všechny upozornil, že práce se střídavým síťovým napětím je životu nebezpečná a bez příslušného vzdělání nedoporučuji do elektroinstalace zasahovat.
Autor webu tedy nenese a nemůže nést zodpovědnost za případnou škodu, která vznikla v souvislosti s užíváním tohoto webu a zde uvedených informací.

 

Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1249-5a-proudovy-senzor-neinvazivni-hwtc-5a-5ma-1458863288.html
Senzor proudu s integrovaným odporem 200 ohm na desce:
https://dratek.cz/arduino/1618-modul-analogoveho-mericiho-pristroje-proudu-ac-0-5a-1496054850.html
Proudové sondy s rozebíratelným pouzdrem:
https://dratek.cz/arduino/1588-15a-ac-proudova-sonda-neinvazivni-sct-013-015-1494874540.html
https://dratek.cz/arduino/1248-100a-ac-proudovy-senzor-neinvazivni-sct-013-000-1458861888.html

Další podobné články