Obousměrný DC ampermetr s Node-red na Raspberry 2WH
Ampermetr
Obousměrný DC ampérmetr s Node-red na Raspberry 2WH
se zobrazením na Androidu a/nebo OLED displeji 128x64 (0,96")
26.12.2024
Videa a obrázky
Ostatní videa a obrázky v textu.
Pro účely tohoto článku používám:
IP 192.168.0.14
hostname: ampermetr
user: Karel
user: Karel
password: a
Koncept
Kontrola nabíjecích nebo vybíjecích proudů záložních akumulátoru pomocí smarfounu (nebo OLED displeje anebo obojím)-
INA219 -> Raspberry IC2 -> Node-red -> Android (OLED)
Napájení: =5V / 200mA
Rozsah: +/- 150A
Rozlišení: 1A
Pro instalaci a testování
PC / notebook se čtečkou SD karet
Laboratorní zdroj (dle možností - nejlépe alespoň s výstupem 5A a proudovým omezením 0-max)
Nějaký akumulátor s kapacitou kolem 12V/7Ah
Multimetr, WiFo
a drobný elektronický materiál, páječka, cín, nářadí...
(uvedené linky (krom bočníku) nejsou doporučením)
Software
Raspberry Pi OS Bookworm, released:2024-11-19
Node-Red 4 (node js 20LTS - 20.18.1 / npm 10.8.2)
pro instalaci také:
Hardwarové úpravy
Tento proudový senzor má rozsah 3,2A (při max. 26V). Na jeho výstupu je měřený proud v miliampérech. Protože jsem potřeboval měřit proud v desítkách ampér, musel jsem nahradit vestavěný bočník R100. Viz obrázek 2. Rezistor R100 jsem odpájel a pomocí (co nejkratších) vodičů jsem vstupy V+ a V- připojil na svorky bočníku 150A. Tyto dva kabely by měly být co nejkratší a odpovídajícího průřezu (kvůli úbytku napětí na nich - já použil CYA 0,5 mm2. Aby výsledná polarita byla ve shodě s měřenými hodnotami na displejích, je třeba vstup senzoru V- zapojit tak, aby "byl na svorce + akumulátoru". Kdybychom totiž kabely vstupů prohodili, ampérmetr by při nabíjení akumulátoru ukazoval mínusové hodnoty. Z "druhé" strany se senzor připojuje na I2C sběrnici Raspberry. Propojíme příslušné piny (Vcc na 3,3V, GND na GND, SDA na SDA a SCL na SCL). Než tak ale učiníme, musíme si vyrobit pro OLED displej, který se rovněž na tyto vstupy Raspberry připojuje, kabelové propojky, jakési kabelové kšandy. Jeden konec připojíme k Raspberry a druhé dva konce na INA219 a OLED displej - viz obrázek 3.
Jak už jsem zmínil, zařízení běží na Raspberry Pi Zero 2 WH, na kterém je instalován Node-red. Instalace a nastavení zabere jedno odpoledne, zvlášť instalace na Zero je zdlouhavá. Zero jsem zvolil proto, že má daleko nižší spotřebu oproti ostatním verzím. Je koncipován jako trvale běžící systém. Jeho spotřeba se pohybuje od 120 do 200mA - tedy od 0,6 do 1W.
Protože provoz Raspberry bude headless (bez periferií), vlastní instalace probíhá pomocí vzdáleného přístupu - Putty a VNC Viewer, které jsou nainstalované na PC/notebooku. Je tedy dobré si tyto dva programy předem nainstalovat. Zrovna tak i Raspberry Pi OS Imager.
Samotné programování v Node-red probíhá na PC ve webovém prohlížeči. Samozřejmě, že se Raspberry Zero a PC musí nacházet ve stejné WiFi síti (a být připojeni). Rovněž uvádím i verze Raspberry OS a Node-red, na kterých jsem vše testoval (jsou to ty k datu nejnovější verze).
1. Instalace Raspberry OS - Bookworm 64b
2. "Ladění systému" viz video nahoře
3. Instalace Node-red
4. Instalace potřebných uzlů v Node-red
5. Vytvoření a úprava toku (flow) v Node-red
6. Testování
1. Instalace Raspberry OS - Bookworm 64b
2. Nastavení Raspberry Pi OS
viz video nahoře
(povolení I2C, lolakizace, update)
Po té připojíme INA219 a OLED k Raspberry a v terminálu (příkazové řádce) zadáme:
i2cdetect -y 1
a v dalším okne by se nám mělo objevit připojení INA219 na adrese 40 a OLED displeje na adrese 3c.
Viz obrázek. Tyto hodnoty pak budeme zadávat do uzlů v Node-red.
3. Instalace Node-red
Spustíme čerstvě nainstalovaný Raspberry. Na PC spustíme VNC Viewer (PC a Raspbery se musí nacházet ve stejné WiFi síti). Ve VNC Viewer vytvoříme nové spojení. zadáme IP adresu, uživatelské jméno a heslo a pak poklepem na ikonku a otevře se nám pracovní plocha Raspberry. Do terminálu (příkazové řádky) a zadáme:
sudo apt update
pak
sudo apt upgrade
a nakonec
reboot
Nyní si nainstalujeme Node-red. Do příkazového řádku zadáme:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
dvakrát potvrdíme Enter a začne instalace. Po instalaci ještě několikrát potvrdíme nastavení konfiguračaního souboru. Aby Node-red automaticky startoval při každém restartu systému, zadáme na řádku ještě:
sudo systemctl enable nodered.service
Tím je instalace Node-red hotova a můžeme ještě jednou restartovat
reboot
Po restartu v okně webového prohlížeče do vyhledávací řádky zadáme:
(formát příkazu je: IP_vašeho_raspi_v_síti:1880, v mém uváděném případě tedy:)
192.168.0.14:1880
a otevře se nám okno s pracovním prostředí Node-red.
4. Instalace uzlů v Node-red
Pro fungovaní zařízení potřebujeme v Node-red tzv. uzly. Uzly (nodes) jsou jakési "balíčky se softwarem". Většinou mají vstup, kam posíláme data a pak mívají jeden nebo více výstupů, odkud upravená vstupní data vystupují na další zpracování nebo zobrazení. My budeme potřebovat tyto uzly:
node-red-contrib-easybotics-ina219-sensor
node-red-contrib-ui-artless-gauge
node-red-dashboard
node-red-contrib-oled (ve videu je špatně node-red-contrib-oled-i2c)
node-red-contrib-os
Jak nainstalovat uzly? Zde.
5. Vytvoření a úprava toku (flow) v Node-red
Tok s INA219
Protože jsem v senzoru vyměnil bočník , musí se celé měření překalibrovat. Vytvořil jsem si podle obrázku 4 testovací zapojení a při různých proudech bočníkem jsem sledoval, jaké hodnoty jsou na výstupu senzoru. Při proudech 1/5/10 a 15A jsem dostal hodnoty 60/289/600/872. Což je poměr 1:58 (zhruba - pro moje hrubé potřeby je linearita dostačující). Zařadil jsem tedy za uzel INA219 uzel s funkcí, která měřené hodnoty dělí 58. Za tento uzel jsem ještě zařadil jinou funkci, která ořezává desetinná čísla. Výstup pak může jít rovnou do uzlu "gauge", tedy grafického měřidla.
Tok s OLED displejem
Pro OLED uzel musíme nejprve data převést na řetězec (string) a ještě data "graficky" naformátovat. Proto jsem vložil do cesty displeje dvě funkce. Ta první převádí data právě na datový typ "string" a ta druhá popisuje, jak velké číslice (size) a kde na displeji (x, y) se budou zobrazovat.
6. Testování
Pokud chceme měřidlo zobrazit na telefonu, PC, tabletu etc., zadáme do vyhledávací řádky
192.168.0.14:1880/ui
Údaje na OLED displeji se zobrazí okamžitě (:o)) po naběhnutí systému.
1. stáhneme soubor do PC, rozbalíme.
2. Rozbalený soubor překopírujeme do Raspberry (pomocí FilleZilla např.) do složky:
/home/Karel/.node-red/lib/flows
a v Node-red ho pak importujeme do flow (Menu/Import/Local).
Anebo na PC otevřeme soubor do Notepadu, vybereme obsah pomocí Ctrl+A a zkopírujeme Ctrl-C do paměti. V node-red ho pak importujeme na plochu (Menu/Import/Clipboard).
##################################
Zdroje:
Fórum Node-red, repozitář Node-red, Github, internet