Hallův senzor proudu je vstupní modul pro Arduino. Tento modul obsahuje měřící prvek WCS1700, díky kterému můžeme měřit jak střídavý, tak stejnosměrný proud. Na modulu pak můžeme měřit jak přímo analogovou hodnotu na výstupu senzoru, tak i digitální výstup. Ten slouží jako detektor překonání určité hodnoty proudu, kterou můžeme nastavit trimrem na modulu.
Pro napájení senzoru proudu můžeme použít napětí v rozsahu 3-12 Voltů. Měřící rozsah senzoru je +- 70 Ampér pro stejnosměrný proud a 50 Ampér pro střídavý proud.
Pro úspěšné propojení senzoru proudu a Arduino desky propojíme celkem 3 vodiče. Připojíme VCC na +5V Arduina, GND na zem Arduina a Aout na pin A0. Pro analogový pin lze použít také jiné volné piny. Změnu je ale nutné provést také na začátku programu. A pokud budete chtít pracovat s digitálním výstupem, tak pro to použijte výstupní pin Dout.
Ukázkový kód obsahuje na svém začátku nastavení čísla propojovacího pinu a vytvoření kalibrační konstanty. Tuto konstantu lze získat při měření naprázdno, kdy se snažíme dosáhnout hodnoty 0 mV.
Ve funkci setup nejprve zahájíme komunikaci po sériové lince a poté provedeme nastavení měřícího pinu jako vstupu.
Nekonečná smyčka loop obsahuje v první kroku načtení hodnoty z analogového pinu do proměnné data. Z této hodnoty následně vypočteme měřené napětí v milivoltech, kdy u Arduino UNO desky a napájecího napětí 5V použijeme analogový rozsah 0-1023 s napájecím rozsahem 0-5000 (pokud byste například tento modul chtěli použít s deskou ESP32, tak tam můžete použít přesnější analogový rozsah 0-4095 a napětí 0-3300). A od vypočtené hodnoty napětí ještě odečteme naší kalibrační konstantu nastavenou na začátku programu. Tuto hodnotu napětí následně vydělíme rozlišením senzoru daného výrobcem, kdy u WCS1700 by se mělo jednat o hodnotu 32 mV/A. Získané hodnoty vytiskneme po sériové lince a na konci programu je už jen pauza před novým během smyčky.
// Hallův senzor proudu WCS1700 // navody.dratek.cz // nastavení čísla propojovacího pinu #define analogPin A0 // kalibrační konstanta měřená naprázdno const int kalibrace = 2533; void setup() { // zahájení komunikace po sériové lince Serial.begin(115200); // nastavení analogového pinu jako vstupu pinMode(analogPin, INPUT); } void loop() { // načtení hodnoty z analogového pinu int data = analogRead(analogPin); // přepočet načtených dat na napětí v milivoltech int milivolty = map(data, 0, 1023, 0, 5000) - kalibrace; // přepočet na Ampéry při rozlišení 32mV/A float ampery = milivolty / 32.0; Serial.print("Merene napeti: "); Serial.print(milivolty); Serial.print("mV , prepocet v Amperech: "); Serial.println(ampery); // pauza před novým měřením delay(200); }
Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem proudu WCS1700 dostaneme například tento výsledek:
Merene napeti: 3mV , prepocet v Amperech: 0.09 Merene napeti: -2mV , prepocet v Amperech: -0.06 Merene napeti: 13mV , prepocet v Amperech: 0.39 Merene napeti: 18mV , prepocet v Amperech: 0.55 Merene napeti: 23mV , prepocet v Amperech: 0.70 Merene napeti: 28mV , prepocet v Amperech: 0.85 Merene napeti: 37mV , prepocet v Amperech: 1.12 Merene napeti: 42mV , prepocet v Amperech: 1.27 Merene napeti: 47mV , prepocet v Amperech: 1.42 Merene napeti: 57mV , prepocet v Amperech: 1.73 Merene napeti: 62mV , prepocet v Amperech: 1.88 Merene napeti: 72mV , prepocet v Amperech: 2.18 Merene napeti: 76mV , prepocet v Amperech: 2.30 Merene napeti: 81mV , prepocet v Amperech: 2.45 Merene napeti: 86mV , prepocet v Amperech: 2.61 Merene napeti: 91mV , prepocet v Amperech: 2.76 Merene napeti: 96mV , prepocet v Amperech: 2.91
Hallův senzor proudu WCS1700 je šikovný malý modul, se kterým můžeme jednoduše měřit elektrický proud procházející vodičem. V případě měření střídavého proudu se jedná o hodnotu RMS, zatímco při měření stejnosměrného proudu získáme i údaj o směru proudu. Správný měřící směr je také naznačen na měřícím elementu pomocí šipky ven z modulu. Tento senzor lze použít při vytváření měřících přístrojů pro měření spotřeby v domácnosti či informace o činnosti daných zařízení. Je však důležité dbát na to, aby senzorem procházel vždy pouze jeden vodič. Pokud povedeme senzorem jak kladný, tak záporný vodič, naměříme špatnou hodnotu, respektive nulu díky chování proudu v elektrických obvodech.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/7710-halluv-senzor-proudu-wcs1700.html