Cześć, szukam rozwiązania, które pozwalało by mi monitorować stan naładowania akumulatra w UPS. Czy jest jakieś urządzonko które odczytuje napięcie w zakresie 0-20V i potrafi importować te dane do HA?
Chyba takie cos by starczyło razem z plytką
https://allegro.pl/oferta/modul-pomiaru-napiecia-pradu-natezenia-ina219-i2c-9727136791?utm_feed=aa34192d-eee2-4419-9a9a-de66b9dfae24&utm_content=supercena&utm_source=google&utm_medium=cpc&utm_campaign=_ELKTRK_PLA_Komputery&ev_adgr=Inne&ev_campaign_id=1434728395&gclid=CjwKCAjwybyJBhBwEiwAvz4G760YjGeZNlXtCgcVK-mHfyIdpsvbECthawggHlupoel-ALF4OtC00BoCMgEQAvD_BwE
i ESPhome:
Edit
tu masz tez wykorzystując tylko plytke i adapter zasilania, chyba sam sobie takie zrobie
Z ciekawości co dalej z tym zrobisz?
Ja mam zasilacz DC, z którego mogę wydobyć wszystkie informacje i chciałem jakoś go wpiąć pod NUT
Tak naprawdę, to nawet zewnętrzny układ ADC nie jest potrzebny, bo esp posiadają wejścia analogowe z przetwornikiem ADC i to zarówno ESP8266 (jedno) jak i ESP32 (kilka)
więc jedynie będzie potrzebny rezystorowy dzielnik napięcia (aby wykorzystać optymalnie dopuszczalny zakres sygnału wejściowego).
mózg paruje, jak czytam takie linki, nie jestem takim dobrym elektronikiem, więc wolę filmiki jak ktoś łopatologicznie coś pokazuje . Części z Ali już zamówione.
Idea jest taka
oraz strony 17 i głównie 18 datasheet’u
Dzielnik rezystorowy to np. 9k1 w górnej gałęzi i 1k8 w dolnej (jeśli napięcie mierzone ma sięgać 20V a dysponujesz płytką z wejściem na poziomie 3,3V czyli zasilana takim napięciem, jeśli masz “goły” moduł to napięcie wejściowe to 1V a nie 3V3 jak w gotowych płytkach).
teraz mogę zrobić automatyzację, żeby mnie informowało jak UPS będzie padać lub też żeby włączyło ładowanie jeżeli to jest możliwe itd…
Na zdjęciu urządzenia na dole to napewno układ Wemos D1 mini a na górze co za układ?
Power Shield V1.1.0 płyta rozwojowa dla Wemos D1
To zawiera sam zasilaczyk dla D1 (lub klonów) czy coś jeszcze?
Na zdjęciu wiele nie widać, ale zdaje się zastosowałeś po prostu rezystorowy dzielnik napięcia podpięty do A0? (jakkolwiek fotka wygląda dziwnie, bo "góra"powinna być podpięta do mierzonego napięcia, “dół” do masy, a wyjście dzielnika - “środek” - do A0)
A NUT go obsługuje?
Czy ktoś zrobił pomiar napięcie akumulatora 12V z wykorzystaniem ESPHome na bazie ESP32 i wejścia ADC? Przeszukuję dokumentację, ale nie bardzo rozumiem jak finalny kod yaml powinien wyglądać?
Z dzielnika napięcia mam:
Vin = Vout
12,2 = 2.18
4,53 = 0,814
3,3 = 0,593
Dzisiaj nie wiem, ale się dowiem
Sprawdź jaką masz wersję ESP32 i kiedy wyprodukowaną
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html#calibration-values
Będę teoretyzował
Jesli pomiar działa i problem dotyczy samej kalibraci, to zrób dwa pomiay raw - dla 0V i dla znanej wartosci odczytanej z multimetru.
Na tej postawie wyznaczysz współczynnik korekcji.
W tym problem, że mam dziwne odczyty ni nie mogę sobie z tym poradzić.
Górny zakres pomiarowy ADC mam raczej w tym modelu ESP - 3,17V.
Czy taki zapis z kalibracją liniową ma sens?
sensor:
- platform: adc
id: bat
pin: GPIO39
name: "bateria"
attenuation: 11dB
filters:
- calibrate_linear:
# Map 0.0 (from sensor) to 0.0 (true value)
- 0.0 -> 0.0
- 0.593 -> 3.3
- 0.814 -> 4.53
- 1.39 -> 7.8
- 2.18 -> 12.2
- 2.28 -> 12.85
- 2.67 -> 15.15
update_interval: 5s
Wyniki i tak wychodzą inne od oczekiwanych.
Trochę słabe, bo odczyty nie są liniowe w rzeczywistości.
A dasz radę zrobić zdjęcie z kodem 2D?
Swoją drogą nieco dziwny ten dzielnik napięcia (nieliniowy?)
Sugeruję nie robić pomiaru dla 0V , bo właśnie w okolicy 0V charakterystyka ADC jest nieliniowa (przyjmijmy, że pomiar liniowy zaczyna się od 0,2V).
ESPHome generalnie ma możliwość wykorzystania kalibracji liniowej (nawet wielopunktowej jeśli mamy lekką nieliniowość, to można użyć więcej punktów kalibracyjnych)
Prawdopodobnie to wpływ szumów - w tej samej dokumentacji, którą linkowałem wyżej jest rozwiązanie - kondensator 100nF na wejściu + multisampling
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html#minimizing-noise
możesz użyć np. tych filtrów
https://esphome.io/components/sensor/index.html#median
lub
https://esphome.io/components/sensor/index.html#sliding-window-moving-average
Jakie wartości rezystorów ma dzielnik i na czym mierzysz to napięcie?
Panowie od początku, mam odczyty z dzielnika napięcia wykonane multimetrem i w/g nich próbuje zapisać kalibrację zarówno liniową jak i wykładniczą ale odczyty nie zgadzają się z tym co mam na multimetrze. Więc problem jest z prawidłową konfiguracją ESPHome. Dodam, że wcześniej, identyczny moduł współpracował z tym dzielnikiem pod Tasmota i nie było problemów z kalibracją i właściwymi odczytami.
Oto kod YAML:
sensor:
- platform: adc
id: bat
pin: GPIO39
name: "bateria"
attenuation: 11dB
filters:
- calibrate_polynomial:
degree: 2
datapoints:
# Map 0.0 (from sensor) to 0.0 (true value)
- 0.0 -> 0.0
- 0.593 -> 3.3
- 0.814 -> 4.53
- 1.39 -> 7.8
- 2.18 -> 12.2
- 2.28 -> 12.85
- 2.67 -> 15.15
update_interval: 5s
Oto wynik odpowiednio dla kolejno napięć z dzielnika: 0.593
V ; 0.814
V ; 2.28
V
15:31:35][D][sensor:125]: 'bateria': Sending state 3.49213 V with 2 decimals of accuracy
[15:31:40][D][sensor:125]: 'bateria': Sending state 4.72022 V with 2 decimals of accuracy
[15:31:45][D][sensor:125]: 'bateria': Sending state 13.31863 V with 2 decimals of accuracy
Jak poprawić dokładność i odczyty przybliżyć do realnych mierzonych napięć?
Może zamiast kalibracji powinien być mnożnik multiply
?
Gdzie robię błąd, bo dokumentacja ESPHome jest pokrętna i niejednoznaczna.