Mam takiego YAMLa który obsługuje ADS 4 wejściowy i po dzielinikach napięcia mierzy napięcia na 4 akumulatorach. Na razie względem masy pierwszego. Chciałbym docelowo mieć encje, które pokaże różnicę wględem poprzedniego akumulatora, czyli tak naprawdę napięcie na każdy z akumulatorów oddzielnie. Ale najlepiej aby były to dodatkowe encje, bo do celów diagnostycznych/kalibracji, przyda się napięcie bezwzględme. Jak przerobić tego YAMLA, aby miec dodatkowe encje wyliczne z innych pomiarów? Jakiś prosty przykład? Albo wskazówka gdzie o takim rozwiązaniu poczytać? Wolałbym to zrealizować w ESPHome, a nie w HomeAssistant.
Najpierw wrzuć swojego YAMLa.
ads1115:
- address: 0x48
sensor:
- platform: ads1115
multiplexer: 'A0_GND'
gain: 4.096
name: "ADS1115 Channel A0-GND"
update_interval: 0.5s
web_server:
sorting_weight: 0
filters:
- median:
window_size: 52
send_every: 5
send_first_at: 1
# - lambda: return x * (19.21/0.907);
- calibrate_linear:
# - 0.0 -> 0.0
- 0.4095 -> 8.675
- 0.907 -> 19.21
- platform: ads1115
multiplexer: 'A1_GND'
gain: 4.096
name: "ADS1115 Channel A1-GND"
update_interval: 0.5s
web_server:
sorting_weight: 1
filters:
- median:
window_size: 20
send_every: 5
send_first_at: 1
# - lambda: return x * (19.20/0.959);
- calibrate_linear:
# - 0.0 -> 0.0
- 0.4336 -> 8.675
- 0.959 -> 19.21
- platform: ads1115
multiplexer: 'A2_GND'
gain: 4.096
name: "ADS1115 Channel A2-GND"
update_interval: 0.5s
web_server:
sorting_weight: 2
filters:
- median:
window_size: 20
send_every: 5
send_first_at: 1
# - lambda: return x * (19.21/1.27);
- calibrate_linear:
# - 0.0 -> 0.0
- 0.5756 -> 8.675
- 1.27 -> 19.21
- platform: ads1115
multiplexer: 'A3_GND'
gain: 4.096
name: "ADS1115 Channel A3-GND"
update_interval: 0.5s
web_server:
sorting_weight: 3
filters:
- median:
window_size: 20
send_every: 5
send_first_at: 1
# - lambda: return x * (19.21/3.262); # 13.57/2.314
- calibrate_linear:
# - 0.0 -> 0.0
- 1.489 -> 8.675
- 3.263 -> 19.21
Chcesz mieć w sumie tylko 4 encje pokazujące różnice czy 8 pokazujące napięcia+ różnice? Generalnie na pewno będziesz musiał skorzystać z template sensor z prosta matematyka
Osiem. O template sesnors poczutam / wroce do tematu za kilka dni.
Tego absolutnie bym nie zmieniał, projektowanie należałoby zacząć od noty katalogowej
moim zdaniem optymalny wybór to FSR = ±0.512V, a nie FSR = ±4.096V
(czyli gain bym zmniejszył z 4.096 na 0.512 uzasadnienie banalne - lepsza liniowość przetwarzania i optymalnie wysoka rezystancja wejściowa)
i pod to należałoby dobrać dzielniki napięcia.
A co do template to nigdy nie odejmowałem wartości sensora od wartości innego sensora (a świta mi, że jest z tym jakiś wałek), ale jakoś tak będzie trzeba to rozwiązać.
Dziękuję za wskazanie miejsca poszukiwań “Template”, co zaowocowało rozwiązaniem, które działa dla wyliczania różnicy temperatur (tutaj sprawdziłem konstrukcję programową, bo chwilowo nie mam dostępu do voltomierza znajdującego się w garażu (czasami gubi tam zasięg WiFi) dla temperatur wygląda to tak:
sensor:
- platform: template
name: "delta-zasilanie-powrot"
unit_of_measurement: "°C"
lambda: |-
return id(t_sht3).state - id(sens_t_09).state;
update_interval: 60s
- platform: sht3xd
temperature:
name: "SHT35-temp"
id: t_sht3
humidity:
name: "SHT35-hum"
address: 0x44
update_interval: 40s
- platform: dallas_temp
address: 0xd6011911eca5aa28
name: "T_09"
id: sens_t_09
filters:
- offset: -0.01
update_interval: 40s
Reasumując trzeba dla każdej encji, która nas interesuje do obliczeń nadać ID. A później metod id().state możemy wyciągnąć jej wartość.
Wracam do tematu, tym razem z próbą pomiaru różnicowego wg. schematu. Rezystory dobrałem, aby napięcia było 0-3.3V na wejściach. Ale intryguje mnie ta rezystancja wejściowa 100M dla Common-mode/FSR=0.512 gdzie ekstremalnie wzrosła, a dla differencjal mode trzyma się trendu, czyli im mniejszy FSR tym mniejsza rezystancja. Chcę aby to gadało z ESP więc zasilanie mu dam 3.3V a FSB się wacham pomiędzy 2.048 a 4.096 i chyba 2.048 do mnie bardziej przemawia, bo wykorzystam cały zakres. Gdzie w karcie katalogowej znalazłeś o zaletach niskiej wartości szumu własnego przy FSB 0.256, bo tutaj będzie niski, ale z dzielników będzie znacznie wyższy.
https://www.elektroda.pl/rtvforum/viewtopic.php?p=21646893#21646893
Myślisz, że pamiętam jakieś szczegóły prawie po 2 latach?
Nie sądzę aby szumy własne rezystorów miały tu jakiekolwiek znaczenie.
Natomiast liniowość przetwarzania może być istotna (ze względu na nieliniowe charakterystyki akumulatorów - najbardziej interesujące fragmenty są tam gdzie zmiany napięcia są bardzo małe).