Plynula regulacia vykonu boilera

jumajazu
Příspěvky: 8
Registrován: úte kvě 17, 2022 7:57 am

Re: Plynula regulacia vykonu boilera

Příspěvek od jumajazu »

Lubik píše: pon dub 17, 2023 7:19 pm

Prevodnik PWM to 0-10V:

Kód: Vybrat vše

https://www.laskakit.cz/prevodnik-pwm-na-napeti-0-10v/
Rád by som sa ešte opýtal na tento prevodník, tiež som ho použil na prevod PWM z ESP32 na 0-10 V na ovládanie SSR relé. Všetko funguje, zatiaľ s manuálnym nastavovaním výkonu 0-100% z Home Assistenta, ale s týmto prevodníkom mám dva problémy:

- vysoká teplota, podľa termokamery má pri prevádzke až okolo 50 stupňov, aj na dotyk sa veľmi hreje. Je to rovnaké aj u teba a máš na ňom prípadne nejaké chladenie?

- výstupné napätie na prevodníku, tu je problém, že aj pri nastavení 100% duty cycle na PWM vstupe neviem na výstupe dostať vyššie napätie ako 8,7 V. Kalibrácia potenciometrom nepomáha, dá sa ním nastaviť stredná hodnota 5V pri 50 % PWM, ale na hornú úroveň potenciometer nemá vplyv. Prevodník má pre vstup PWM písané napätie od 4,5 V, ESP32 dáva 3,3 V a funguje to, neviem, či by nižšie napätie na PWM vstupe mohlo mať vplyv na maximálnu hodnotu na výstupe 0-10 V, predpokladám, že nie. Ty to máš tiež zapojené priamo na výstup ESP32, vieš na výstupe prevodníka dosiahnuť 10 V?
Lubik
Příspěvky: 22
Registrován: pon lis 01, 2021 3:40 pm
Výkon panelů v FVE [Wp]: 5390
Kapacita baterie [kWh]: 0

Re: Plynula regulacia vykonu boilera

Příspěvek od Lubik »

S prevodnikom nemam ziaden problem.
Funguje bez problemov v celom rozsahu 0-10V (0-100% PWM).
Po tvojom prispevku som siel skontrolovat aj teplotu - vsetko je Ok, nic nehreje.
PWM vstup prevodnika je priamo zapojeny na pin (23) ESP32.
Tiez doplnim, ze napajacie napatie prevodnika mam 24V (pozor na jumper).
Ongrid FVE - okres Bardejov. 14x385Wp + 2x "modrasek 2000W"
Lubik
Příspěvky: 22
Registrován: pon lis 01, 2021 3:40 pm
Výkon panelů v FVE [Wp]: 5390
Kapacita baterie [kWh]: 0

Re: Plynula regulacia vykonu boilera

Příspěvek od Lubik »

Update:

Vo vytazovaci, ktory riadi vykon boilera podla aktualneho odberu zo siete som presiel z Micropythonu na ESPhome.
Vyhody:
- zakladne rutiny ako sprava pripojenia k wifi, posielanie na MQTT, posielanie na Thingspeak su tu prakticky hotove, netreba vymyslat teplu vodu
- priamociara komunikacia s HomeAssistant
- ladenie, upravy a update kodu je mozne bez nutnosti fyzickeho pristupu k ESP32 (cez zerotier a HA)
Nevyhody:
- ?? :-)
Ongrid FVE - okres Bardejov. 14x385Wp + 2x "modrasek 2000W"
JiTr
Příspěvky: 2
Registrován: sob pro 25, 2021 6:47 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od JiTr »

To josse ... Jak dopadl pokus s VFD a odporovou zatezi?

Odesláno z mého SM-A346B pomocí Tapatalk

Mex
Příspěvky: 258
Registrován: pát zář 15, 2023 1:28 am

Re: Plynula regulacia vykonu boilera

Příspěvek od Mex »

U toho měniče snad není důvod, proč by to nemělo fungovat.
Nakonec se dá udělat jednoduchý pokus. Na výstup měniče připojit žárovku a sledovat, jak pěkně je možné regulovat jas.

Jsou tady tipy na převod PWM na analog 0-10V, a ten pak posílat do SSR, které z toho zase udělá PWM.
Proč neřídit rovnou výkonový spínací prvek nějakým ESP32 nebo třeba i nejhloupějším Arduinem?
To "analogové" SSR to zřejmě taky nedělá jinak.

Triak (s rozumně dimenzovaných chladičem), před něho optotriak, a ten se už dá honit přímo Arduinem/ESP32/RPi/co já vím čím vším.
Jen to chce ještě zpětnou vazbu přes další optron, aby spínající procesor věděl o průchodu nulou a mohl tak lineárně posouvat čas sepnutí triaku.
Jsou to součástky dohromady ani ne za stovku (bez toho Arduina/ESP32/...).
mopadzi
Příspěvky: 144
Registrován: čtv zář 02, 2021 9:23 am

Re: Plynula regulacia vykonu boilera

Příspěvek od mopadzi »

zajímá mne ta regulace měničem. Jak je nakonfigurovaný
na regulaci amlitudy s malým delta f?
kdo si hraje nezlobí

9xRenesola 240W+9x Benq 265, 10xAvancis 125W, 6x Leapton 450W, 2xStuder VT65 1xVT 80, 2x XTM4000-48, 40kW Lifepo4..vše ve výstavbě, hotovo 99%. BMW i3 BEV
https://www.lifepo4-shop.cz/
josse
Příspěvky: 871
Registrován: pon dub 19, 2021 10:37 am

Re: Plynula regulacia vykonu boilera

Příspěvek od josse »

JiTr píše:To josse ... Jak dopadl pokus s VFD a odporovou zatezi?

Odesláno z mého SM-A346B pomocí Tapatalk
Testy dobře, ale než jsem z nadety dostal správnou spirálu, v každé komunikaci jim píšu nebo do telefonu říkám, nechci 3x400, chci 3x230, jojo, všechno umíme, není problém, dvakrát poslali špatně, dvakrát jsem čekal 8 týdnů. Nakonec mi dali kontakt do firmy kde to vyráběli, po konzultaci jsem rozebrat a zapojil jak potřebuju... Naštěstí to šlo změnit z Y na D. Takže jsem test udělal krátký, někdy v září kdy už jsem moc přebytků neměl. Letovaný to je pájkou co teče propanem... Naštěstí. Konec odbočky.

Měl jsem zkušenost se stejným typem VFD s motory, to se chová k elektrárně korektně, nevýhoda je dimenzování proudu na účiník 0.7 to znamená cca 1.5x vodiče a jističe (VFD nemají PFC). Měnil jsem frekvenci, podle toho se mění výkon/příkon. Vybral jsem si vfd 4kW, 230/230. S kolegou v práci budeme zkoušet tlumivky před usměrňovač. Nějakou jsme našli a udělal jsem zlepšení PF z 0.66 na 0.72, bez měřitelné změny činného příkonu (sice je to další úbytek navíc, ale vyrovná se to snížení úbytku v VFD díky nižšímu proudu. Měřeno elektroměrem s rozlišením na jednotky W.

Víc jsem se tomu nevěnoval, velkou nádrž ještě nemám. Léto i podzim stejně skončili. Rozdíl v ceně VFD vs. SSR určitě je, ale ty fázové SSR taky nejsou nejlevnější a tohle má v sobě už modbus, měří to napětí DC a výstupní napětí a výstupní proud. Takže pro mě možná i výhodnější než to skládat, tepelná ochrana, ventilátor. Nevýhodu vidím v životností elektrolytických kondenzátorů, SSR žádné nemá. Uvidíme. U čerpadla už to je roky, je trvale pod napětím a zatím ok. Měnič neumí autotune do odporů když se mu nic netočí, ale není potřeba, funguje i s factory defaults.
3,6kWp GWL Poly + 8,82kWp Canadian Mono, 3x PIP4048MS, 3x80P14S 18650 (~640Ah/34kWh)
Elektrárna: https://emoncms.trenet.org/dashboard/view?id=3
TČ: https://emoncms.trenet.org/dashboard/view?id=21
josse
Příspěvky: 871
Registrován: pon dub 19, 2021 10:37 am

Re: Plynula regulacia vykonu boilera

Příspěvek od josse »

Mex píše:U toho měniče snad není důvod, proč by to nemělo fungovat.
Nakonec se dá udělat jednoduchý pokus. Na výstup měniče připojit žárovku a sledovat, jak pěkně je možné regulovat jas.

Jsou tady tipy na převod PWM na analog 0-10V, a ten pak posílat do SSR, které z toho zase udělá PWM.
Proč neřídit rovnou výkonový spínací prvek nějakým ESP32 nebo třeba i nejhloupějším Arduinem?
To "analogové" SSR to zřejmě taky nedělá jinak.

Triak (s rozumně dimenzovaných chladičem), před něho optotriak, a ten se už dá honit přímo Arduinem/ESP32/RPi/co já vím čím vším.
Jen to chce ještě zpětnou vazbu přes další optron, aby spínající procesor věděl o průchodu nulou a mohl tak lineárně posouvat čas sepnutí triaku.
Jsou to součástky dohromady ani ne za stovku (bez toho Arduina/ESP32/...).
Pro mě je velká výhoda ten modbus, má ho to od přírody, soc beru z balanceru taky komunikací... K SSR bych musel něco bastlit a byl jsem líný.
3,6kWp GWL Poly + 8,82kWp Canadian Mono, 3x PIP4048MS, 3x80P14S 18650 (~640Ah/34kWh)
Elektrárna: https://emoncms.trenet.org/dashboard/view?id=3
TČ: https://emoncms.trenet.org/dashboard/view?id=21
Mex
Příspěvky: 258
Registrován: pát zář 15, 2023 1:28 am

Re: Plynula regulacia vykonu boilera

Příspěvek od Mex »

josse píše: pon říj 23, 2023 8:16 pm ...
Měnič neumí autotune do odporů když se mu nic netočí, ale není potřeba, funguje i s factory defaults.
Autotuning má smysl při provozu měniče ve vektorovém režimu.
Ale pokud to má fungovat do odporů, tak je nutné použít skalární režim.
A tam je autotuning o ničem, tam nemá co tunit.

Používat factory defaults není (podle mě) dobrý nápad.
Chtělo by to nastavit minimálně max. napětí a proud, a taky případně ohnutí křivky U/f kolem nuly.
I když to ohnutí možná pro odpory nebude nutné a bude možné to provozovat s lineární závislostí.
josse
Příspěvky: 871
Registrován: pon dub 19, 2021 10:37 am

Re: Plynula regulacia vykonu boilera

Příspěvek od josse »


Mex píše:
josse píše: pon říj 23, 2023 8:16 pm ...
Měnič neumí autotune do odporů když se mu nic netočí, ale není potřeba, funguje i s factory defaults.
Autotuning má smysl při provozu měniče ve vektorovém režimu.
Ale pokud to má fungovat do odporů, tak je nutné použít skalární režim.
A tam je autotuning o ničem, tam nemá co tunit.

Používat factory defaults není (podle mě) dobrý nápad.
Chtělo by to nastavit minimálně max. napětí a proud, a taky případně ohnutí křivky U/f kolem nuly.
I když to ohnutí možná pro odpory nebude nutné a bude možné to provozovat s lineární závislostí.
Hmm, když mám 4kW měnič a 4kW odpory, co bych jako měl měnit na napětí a proudu? A proč bych to ohýbal, když chci lineární závislost?
3,6kWp GWL Poly + 8,82kWp Canadian Mono, 3x PIP4048MS, 3x80P14S 18650 (~640Ah/34kWh)
Elektrárna: https://emoncms.trenet.org/dashboard/view?id=3
TČ: https://emoncms.trenet.org/dashboard/view?id=21
mopadzi
Příspěvky: 144
Registrován: čtv zář 02, 2021 9:23 am

Re: Plynula regulacia vykonu boilera

Příspěvek od mopadzi »

přiznám se do hloubky jsem o tom nepřemýšlel. Ale představoval jsem si že nastavím nějaký menší rozsah frekvence a k tomuto rozsahu lineáení růběh výstupního napětí min-max. takže teoreticky by to mělo generovat sinusovku s proměnlivou amlitudou dle frekvence. Mýlím se?
kdo si hraje nezlobí

9xRenesola 240W+9x Benq 265, 10xAvancis 125W, 6x Leapton 450W, 2xStuder VT65 1xVT 80, 2x XTM4000-48, 40kW Lifepo4..vše ve výstavbě, hotovo 99%. BMW i3 BEV
https://www.lifepo4-shop.cz/
josse
Příspěvky: 871
Registrován: pon dub 19, 2021 10:37 am

Re: Plynula regulacia vykonu boilera

Příspěvek od josse »

mopadzi píše:přiznám se do hloubky jsem o tom nepřemýšlel. Ale představoval jsem si že nastavím nějaký menší rozsah frekvence a k tomuto rozsahu lineáení růběh výstupního napětí min-max. takže teoreticky by to mělo generovat sinusovku s proměnlivou amlitudou dle frekvence. Mýlím se?
To sedí. V/F je výchozí.

U motorů slouží jako ochrana vinutí, nám to na odporu udělá lineární změnu příkonu. (Asi nemám pravdu, viz níže)

Výstupní napětí je maximální, u motoru nominální, u odporu taky nominální. Pak už jen měním frekvenci. Když 50Hz==230V, pak 25Hz==115V. Teď mě napadá, že napětí je lineární, ale příkon ne, ten je na druhou. O to se ale postará pomalý PID regulátor, tomu to bude jedno jestli to je v první nebo druhé mocnině.
3,6kWp GWL Poly + 8,82kWp Canadian Mono, 3x PIP4048MS, 3x80P14S 18650 (~640Ah/34kWh)
Elektrárna: https://emoncms.trenet.org/dashboard/view?id=3
TČ: https://emoncms.trenet.org/dashboard/view?id=21
Lubik
Příspěvky: 22
Registrován: pon lis 01, 2021 3:40 pm
Výkon panelů v FVE [Wp]: 5390
Kapacita baterie [kWh]: 0

Re: Plynula regulacia vykonu boilera

Příspěvek od Lubik »

Pridavam yaml skript, ktory to teraz riadi.
Je to v stadiu "neustaleho vylepsovania" :D , aj ked je pravda, ze som do toho uz dlhsie nesahal. V pripade nejasnosti funkcionality konkretnych casti kodu, pytajte sa sem, pokusim sa odpovedat.

PS: Pozor na odsadenie riadkov.

Kód: Vybrat vše

esphome:
  name: esphome-web-07b4a4
  friendly_name: Vytazovac_EH

#esp32_ble_tracker:

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "121SMK+ddD8QCEOrlmjI9I7nS+pMQc9bV91hf6pHRwQ="

ota:


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-07B4A4"
    password: "56U1EfwQElyE"

mqtt:
  broker: mqtt.flespi.io
  port: 1883
  username: !secret mqtt_user
  password: !secret mqtt_password
  topic_prefix: "vytazovac_esphome"

captive_portal:

dallas:
  - pin: GPIO5

sensor:
  - platform: dallas
    address: 0x0f3c2de381621b28
    #index: 0
    id: teplota_boilera
    name: "Teplota boiler"

  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_menic"
    id: power_menic
    filters:
    - sliding_window_moving_average:
        window_size: 5
        send_every: 5
  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_boiler"
    id: power_boiler
    filters:
    - sliding_window_moving_average:
        window_size: 5
        send_every: 5
  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_siet"
    id: power_siet
    filters:
    - sliding_window_moving_average:
        window_size: 5
        send_every: 5
  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_bez_boilera"
    id: power_bez_boilera
    filters:
    - sliding_window_moving_average:
        window_size: 5
        send_every: 5

globals:
  - id: set_power_g
    type: int
    restore_value: yes
    #initial_value: '120'

  - id: temporary
    type: float
    restore_value: no
    initial_value: '0'

  - id: max_temp
  #teplota, pri ktorej sa znizi vykon zo siete na min.
    type: int
    restore_value: yes
    initial_value: '50'
    

output:
  - platform: ledc
    pin: GPIO23
    id: pwm_boiler
    frequency: "2000Hz"
    inverted: false
    min_power: 0
    max_power: 1

number:
  - platform: template
    id: number_nastav_vykon
    min_value: 100
    max_value: 2500
    #initial_value: 200
    restore_value: True
    step: 20
    name: Nastav vykon zo siete
    unit_of_measurement: "W"
    set_action:
      then:
      - lambda: |-
          id(set_power_g) = x;
          //id(set_power_g).publish_state(x);
          // pre rucne nastavenie vykonu priamo
          //float level = x / 2200;
          //id(pwm_boiler).turn_on();
          //id(pwm_boiler).set_level(level);


http_request:
  useragent: esphome/device
  id: http_request_data
  timeout: 1s

time:
  - platform: sntp
    on_time:
      # zverejnenie dat na MQTT
      - seconds: /3
        then:
          - mqtt.publish_json:
              topic: json_akt
              payload: |-
                root["teplota_boilera"] = id(teplota_boilera).state;
                root["power_menic"] = id(power_menic).state;
                root["power_boiler"] = id(power_boiler).state;
                root["power_siet"] = id(power_siet).state;
                root["power_bez_boilera"] = id(power_bez_boilera).state;
                root["set_power"] = id(set_power_g);
                root["set_boiler"] = id(temporary);
      
  - platform: sntp
    on_time:
      #nastav min vykon zo siete, ak je zapnuty dohrev zo siete vyssim vykonom a bola dosiahnuta max teplota (50~C)
      - seconds: 0
        minutes: /1
        then:
          - if:
              condition:
                and:
                  - lambda: return id(set_power_g) > 200;
                  - lambda: return id(teplota_boilera).state > 55;
              then:
                - lambda: id(set_power_g) = 100;

  - platform: sntp
    on_time:
      #dohrev plnym vykonom poobede o 15-tej
      - seconds: 0
        minutes: 0
        hours: 14
        then:
            - lambda: id(set_power_g) = 2500;


  - platform: sntp
    on_time:
      # nacitanie dat zo Shelly3em a riadenie vykonu boilera
      - seconds: /1
        #minutes: /5
        then:
          - http_request.get:
              url: http://192.168.88.10/status
              headers:
                Content-Type: application/json
              verify_ssl: false
              on_response:
                then:
                - if:
                    condition:
                      lambda: |-
                        return status_code == 200;
                    then:
                      lambda: |-
                        json::parse_json(id(http_request_data).get_string(), [](JsonObject root) {
                        float menic = root["emeters"][0]["power"];
                        float boiler = root["emeters"][1]["power"];
                        float siet = root["emeters"][2]["power"];
                        id(power_menic).publish_state(menic);
                        id(power_boiler).publish_state(boiler);
                        id(power_siet).publish_state(siet);
                        id(power_bez_boilera).publish_state(menic + siet - boiler);
                        float reg_odchylka = id(set_power_g) - siet;
                        float kp = 1.2;
                        float ki = 1;
                        float vykon_boilera = (kp * reg_odchylka) + (ki * id(temporary));
                        if (vykon_boilera > 2200) {
                          vykon_boilera = 2200;
                        }
                        if (vykon_boilera < 0) {
                          vykon_boilera = 0;
                        }
                        id(temporary) = vykon_boilera;
                        float pwm_level = vykon_boilera / 2200;
                        id(pwm_boiler).turn_on();
                        id(pwm_boiler).set_level(pwm_level);
                        });
                    #else:
                    #  - lambda: "id(emeters_json).publish_state(0);"
                
Ongrid FVE - okres Bardejov. 14x385Wp + 2x "modrasek 2000W"
_petronie_
Příspěvky: 1
Registrován: sob kvě 18, 2024 11:10 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od _petronie_ »

Ahoj, rozhodl jsem se inspirovat a na základě poskytnutého návodu replikovat poskytnutou regulaci vykonu bojleru, akorát jsem se rozhodl to "zesložitit" a chtěl bych tam dodat omezení výkonu topné spirály. Mám 3.3 kW tak bych ho chtěl mít možnost ho takto jednoduše omezit. Bohužel mám problém se samotnou regulací - dochází k častým změnám výkonu (neustálí se ani v případě přebytku). Nemá to náhodou někdo již řešeno a vyřešeno? Děkuji.

P.S: - bohužel SSR mi přestalo fungovat, takže aktuálně jsem bez jakékoliv regulace

Kód: Vybrat vše

esphome:
  name: esp32-fve-bojler
  friendly_name: ESP32-FVE-BOJLER

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino
      
# Enable logging
logger:
  #level: VERBOSE

# Enable Home Assistant API
api:
  encryption:
    key: "K7GWQodC/OptYbhLgcgSKfS4bFqGz/gBaKb83iSE25A="

ota:
  password: "dd0a388481157ffc73047665794e1af2"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
     # Optional manual IP
  manual_ip:
    static_ip: 192.168.20.193
    gateway: 192.168.20.1
    subnet: 255.255.255.0
    #musi byt funcni kvuli SNTP
    dns1: 8.8.8.8
    dns2: 1.1.1.1

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Fve-Bojler"
    password: "6gYeolv76F5p"

captive_portal:

  

web_server:
 port: 80

globals:
  #nominální výkon topne spiraly bojleru
  - id: max_power_g
    type: float
    restore_value: yes
    initial_value: '3300'

  - id: temporary
    type: float
    restore_value: no
    initial_value: '0'

#aktualni vykon stridace v pripade zaporu dodava do site
  - id: siet
    type: float
    restore_value: no
    #initial_value: '0'
  
  #minimalni zachovaný pretok pri zapnutem bojleru na který se reguluje výkon do bojleru
  - id: pretok
    type: float
    restore_value: yes
    initial_value: '-50'
    

  - id: max_temp
  #teplota, pri ktorej sa znizi vykon zo siete na min.
    type: float
    restore_value: yes
    initial_value: '70'
    
  - id: update_interval
    type: int
    initial_value: '5'  # Automation execution interval (seconds)ds)
    restore_value: yes  

output:
  - platform: ledc
    pin: GPIO8
    id: pwm_boiler
    frequency: "2000Hz"
    inverted: false
    min_power: 0
    max_power: 1

sensor:
  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
    name: "Bojler WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "Bojler WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "Signal %"
    entity_category: "diagnostic"
    device_class: ""   
 
# mereny vykon bojleru ze Shelly PM
  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_boiler"
    id: power_boiler
    filters:
    - sliding_window_moving_average:
        window_size: 2
        send_every: 2

  #vykon stridace v pripade zaporu dodava do site
  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_siet"
    id: power_siet
    filters:
    - sliding_window_moving_average:
        window_size: 2
        send_every: 2


  - platform: template
    device_class: "Voltage"
    unit_of_measurement: "V"
    accuracy_decimals: 3
    name: "PWM Boiler Voltage"
    id: pwm_boiler_voltage


  - platform: template
    device_class: "power"
    unit_of_measurement: "W"
    name: "Power_bez_boilera"
    id: power_bez_boilera
    filters:
    - sliding_window_moving_average:
        window_size: 2
        send_every: 2

  #teplota bojleru
  - platform: template
    device_class: "temperature"
    unit_of_measurement: "C"
    name: "teplota_boiler"
    id: teplota_boiler
    filters:
    - sliding_window_moving_average:
        window_size: 2
        send_every: 2


number:
  - platform: template
    #maximalní (instalovany) výkon spiraly
    id: number_nastav_vykon
    min_value: 0
    max_value: 3300
  
    #initial_value: 200
    restore_value: True
    step: 20
    name: Nastav maximalni vykon bojleru
    unit_of_measurement: "W"
    set_action:
      then:
      - lambda: |-
          id(number_nastav_vykon).publish_state(x);
          
          
          //float max_power_g = x;
          //ESP_LOGD("logger", "max_power_g slider Value: %f", id(max_power_g));
          //id(max_power_g).publish_state(x);
          //float max_power_g = number_nastav_vykon;
          // pre rucne nastavenie vykonu priamo
          //float level = x / 3300;
          //id(pwm_boiler).turn_on();
          //id(pwm_boiler).set_level(level);
          

http_request:
  useragent: esphome/device
  id: http_request_data
  timeout: 1s

time:
  - platform: sntp
    on_time:
      # nacitanie dat zo Shelly3em a riadenie vykonu boilera, musi mit SNTP funkcni
      - seconds: /2
        #minutes: /5
        then:
          #celkovy vykon stridace do site (zaporna hodnota)
          - http_request.get:
              url: http://192.168.20.160/status
              headers:
                Content-Type: application/json
              verify_ssl: false
              on_response:
                then:
                - logger.log:
                        format: 'Response status: %d'
                        args: [status_code]
                - if:
                    condition:
                      lambda: |-
                        return status_code == 200;
                    then:
                      lambda: |-
                        json::parse_json(id(http_request_data).get_string(), [](JsonObject root) {
                          float siet = root["total_power"];
                          id(power_siet).publish_state(siet); 
                                                                                                                 
                        });
          #vykon do bojleru
          - http_request.get:
              url: http://192.168.20.165/rpc/Switch.GetStatus?id=0
              headers:
                Content-Type: application/json
              verify_ssl: false
              on_response:
                then:
                - if:
                    condition:
                      lambda: |-
                        return status_code == 200;
                    then:
                      lambda: |-
                        json::parse_json(id(http_request_data).get_string(), [](JsonObject root) {
                          float boiler = root["apower"];
                          id(power_boiler).publish_state(boiler);   
                        });
          #teplota bojleru
          - http_request.get:
              url: http://192.168.20.165/rpc/Temperature.GetStatus?id=100
              headers:
                Content-Type: application/json
              verify_ssl: false
              on_response:
                then:
                - if:
                    condition:
                      lambda: |-
                        return status_code == 200;
                    then:
                      lambda: |-
                        json::parse_json(id(http_request_data).get_string(), [](JsonObject root) {
                         float teplota = root["tC"];
                         id(teplota_boiler).publish_state(teplota);
                        });
   

      - seconds: /5
        #minutes: /5
        then:               
          - if:
            #vypocet vykonu
              condition:
                #je splnena dodavka do site a teplota bojleru je pod maximem
                and:
                  - lambda: return id(power_siet).state < 0;
                  - lambda: return id(teplota_boiler).state < id(max_temp);
                  - lambda: return id(number_nastav_vykon).state > 40;
              then:
                lambda: |-     
                  float kp = 0.125;
                  float ki = 0.95;
                  
                  //float vykon_boilera =  abs(id(power_siet).state);
                  //float reg_odchylka = id(pretok) - id(power_siet).state + id(power_boiler).state;
                  float reg_odchylka = id(pretok) - id(power_siet).state - id(power_boiler).state;
                  //float reg_odchylka = id(pretok) - id(power_siet).state;
                  float vykon_boilera = (kp * reg_odchylka) + (ki * id(temporary));
                  //float vykon_boilera = id(pretok) - id(power_siet).state;
                  ESP_LOGI("logger", "Regulacni odchylka (prebytkovy vykon) je %f", reg_odchylka);


                  if (vykon_boilera > id(number_nastav_vykon).state) {
                    vykon_boilera = id(number_nastav_vykon).state;
                  }
                  //zaporna hodnota neni mozna 
                  if (vykon_boilera < 0) {
                    vykon_boilera = 0;
                  }

                  id(temporary) = vykon_boilera;               
                    ESP_LOGI("logger", "Vykon bojleru (po aplikaci horni hranice) je spocitany na %f", vykon_boilera);
           
                  if (vykon_boilera > 0) {
                    float pwm_level = vykon_boilera / id(max_power_g);
                    id(pwm_boiler_voltage).publish_state(pwm_level);
                    //float pwm_level = vykon_boilera / 3300.0;
                    
                    ESP_LOGD("logger", "max_power_g Value: %f", id(max_power_g));
                    ESP_LOGD("logger", "number_nastav_vykon  Value: %f", id(number_nastav_vykon).state);
                    ESP_LOGI("logger", "Uroven PWM je spocitana na %f", pwm_level);
                    id(pwm_boiler).turn_on();
                    id(pwm_boiler).set_level(pwm_level);
                  } else {
                    id(pwm_boiler).turn_on();
                    id(pwm_boiler).set_level(0); 
                    id(pwm_boiler_voltage).publish_state(0);  
                  }
                  
              else:
               -  lambda: id(pwm_boiler).set_level(0);
               -  lambda: id(temporary) = 0;
Přílohy
zapojeni.png
zapojeni.png (1.16 MiB) Zobrazeno 187 x
eduard22
Příspěvky: 1063
Registrován: ned čer 12, 2022 8:21 pm
Bydliště: Znojmo
Výkon panelů v FVE [Wp]: 8000
Kapacita baterie [kWh]: 23

Re: Plynula regulacia vykonu boilera

Příspěvek od eduard22 »

Já mám jen takovou teoretickou myšlenku: halogonová světla na jevišti na 230V/50Hz AC i o několika kW, se regulují puzně, ale v MHz , aby
světla neblikala a pulzy nerušily audio aparaturu a regulují se ručně potenciometrem. Tedy se ten pulzní regulátor řídí změnou DC napětí.

No ale výstup z měniče mění výkon, nikoliv napětí, to je stále 230V a AC. Co s tím?

No řítit ten pulzní regulátor DC napětím z panelů, které se mění od rána čili od nuly, přes nějakou max hodnotu vpolende či dle mraků až po nulu zase večer.

Nyní najít šikulu, co umí navrhnout takový vysokovfrekvenční pulzní regulátor a to výkonový (3kW) a pro AC 230V řízený DC napětím z panelů. 8-)
Samodomo "poloostrov" s Axpert King II - AC OUT 5kW/5kVA, PV IN 6kWp, 10x Longi 445Wp na sedlové střeše na východ a 10ks i na západ, aku 8x12V-240Ah levné olovo Varta+Banner trakční VRLA 23kWh (reálně využitelných často tak do 10kWh), Znojmo.
Cmrnda
Příspěvky: 664
Registrován: pát srp 19, 2022 4:42 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od Cmrnda »

_petronie_ píše: sob kvě 18, 2024 11:43 pm P.S: - bohužel SSR mi přestalo fungovat, takže aktuálně jsem bez jakékoliv regulace
SSR se dává 5x proudově silnější než jištění před spotřebičem jističem typu B. Bez toho se neobejdeš.Jestli použiješ na konec tranzistory, máš na problém zaděláno mnohem víc, než s tím triakem, nebo 2xty.

Mám běžný SSR, nikoli spínaný nulou, nebo frekvenční řízené napětím nebo proudem, či PWM, způsobující navíc akorát rušení a nestabilitu.
ESP32 je OK, stačí k tomu to relé a napáječ.
Proč něco dělat zbytečně složitě, když lepší výsledek bude s minimen součástek. :?: :?: :?:
Elektrárna optimalizována pro temnější období.
Panely jih: 3kWp
Panely západ: 3kWp
Panely hoře (top). 4kWp
Nabíječka: Upgrade PWM Volt Polska 24 000 Ap
Baterie: 6x startovací autobaterie 12V 45Ah
Měnič DC/AC: Easun 12 000 000 mWp
MaR: MainSystem
skybor
Příspěvky: 76
Registrován: úte kvě 02, 2023 5:50 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od skybor »

Mám rok v provozu něco podobného a žádný problém. SSR spínané v nule (PWM), které řídí PLC Siemens LOGO, ale asi je v principu jedno co jej řídí. SSR je na 40A (a je na chladiči) a řídí bojler 1,5kW. Ani o tom systému vlastně nevím. Je to zapnuté nonstotp, a když stoupne napětí na baterce nad nastavenou mez, tak to začne plynule regulovat výkon do bojleru, tak aby napětí na baterce neklesalo. Uvažoval jsem původně taky o tom fázově řízeném SSR, ale leží mi rok v šuplíku a asi jej už nepoužiju.

Dneska byl start ohřevu bojleru, kvůli horšímu počasí, trochu pozdější. Ale běžně v toto období bývá v poledne voda ohřátá. na 80°C.
SkyFVE 5 kWp (ve výstavbě) na výzkumné "chytré" chatě. 1x MPPT EASun 8048 80A, 2x MPPT EASun 6048 60A, Li-Ion 2x 12s 156Ah (13,7kWh/44V), NiCd 38s KPM 120P (5,2 kWh/48V), APC Smart-UPS 5000VA, SkyPowerBox LF 4810 1000VA + Siemens Logo! + RPi
Cmrnda
Příspěvky: 664
Registrován: pát srp 19, 2022 4:42 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od Cmrnda »

Chladič to chce, čím větší plocha, tím lepší. Pulz balancování je bez umělého zdržování, záleží jen na rychlosti procesoru, takže lze řídit i spotřebu bojleru od 1W do max.výše.
Elektrárna optimalizována pro temnější období.
Panely jih: 3kWp
Panely západ: 3kWp
Panely hoře (top). 4kWp
Nabíječka: Upgrade PWM Volt Polska 24 000 Ap
Baterie: 6x startovací autobaterie 12V 45Ah
Měnič DC/AC: Easun 12 000 000 mWp
MaR: MainSystem
skybor
Příspěvky: 76
Registrován: úte kvě 02, 2023 5:50 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od skybor »

A takhle nějak se to pak chová v praxi ...
Přílohy
FVE.jpg
FVE.jpg (219.76 KiB) Zobrazeno 78 x
regul.jpg
regul.jpg (188.83 KiB) Zobrazeno 78 x
bojlery.jpg
bojlery.jpg (143.7 KiB) Zobrazeno 78 x
SkyFVE 5 kWp (ve výstavbě) na výzkumné "chytré" chatě. 1x MPPT EASun 8048 80A, 2x MPPT EASun 6048 60A, Li-Ion 2x 12s 156Ah (13,7kWh/44V), NiCd 38s KPM 120P (5,2 kWh/48V), APC Smart-UPS 5000VA, SkyPowerBox LF 4810 1000VA + Siemens Logo! + RPi
Cmrnda
Příspěvky: 664
Registrován: pát srp 19, 2022 4:42 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od Cmrnda »

Já si monitoruju akorát energii kterou je možný dodat do bjleru podle předešlých výpočtů.
Bojler má svůj mechanický termostat, svůj mechanický teploměr, svojí kontrolku pro indikaci, zda se bojler nabíjí. Při omezené energii z hlediska malého výkonu na FVP je podle šířky střídy blikání poznat jak to vypadá venku. :lol: Tento stav je monitorován a nahráván, tedy pokuďje zapnuté nahrávání programu.

Nejdůležitější je stejně práce s časem, např. aby se bojler nenabíjel po 20hod do 6:30 ráno, ale aby byl v 8:00 nahřátý za každou cenu, a další indivuduální nastavení....

Jinak od začátku března se mi bojler nikdy nenabíjel ze sítě.
Elektrárna optimalizována pro temnější období.
Panely jih: 3kWp
Panely západ: 3kWp
Panely hoře (top). 4kWp
Nabíječka: Upgrade PWM Volt Polska 24 000 Ap
Baterie: 6x startovací autobaterie 12V 45Ah
Měnič DC/AC: Easun 12 000 000 mWp
MaR: MainSystem
eduard22
Příspěvky: 1063
Registrován: ned čer 12, 2022 8:21 pm
Bydliště: Znojmo
Výkon panelů v FVE [Wp]: 8000
Kapacita baterie [kWh]: 23

Re: Plynula regulacia vykonu boilera

Příspěvek od eduard22 »

Já ohřev limituju Tapo zásuvkama a krom omezení na den od 10.h a vždy po 1h s 1h mezerou dalšího pokusu , kdyby nesvítilo moc aby se doplnila aku a pak zase 1h a pak už vypne termostat, mám ještě odpoledne časy sepnutí dovoleny jen v čase NT a přes zimu , neníli navíc jasno nepovoluji ohřev dopoledne ale jen odpo s NT, kdyby musela vypomoci síť, tak alespoň za levněji.
Samodomo "poloostrov" s Axpert King II - AC OUT 5kW/5kVA, PV IN 6kWp, 10x Longi 445Wp na sedlové střeše na východ a 10ks i na západ, aku 8x12V-240Ah levné olovo Varta+Banner trakční VRLA 23kWh (reálně využitelných často tak do 10kWh), Znojmo.
Mex
Příspěvky: 258
Registrován: pát zář 15, 2023 1:28 am

Re: Plynula regulacia vykonu boilera

Příspěvek od Mex »

skybor píše: ned kvě 19, 2024 11:51 am Mám rok v provozu něco podobného a žádný problém. SSR spínané v nule (PWM), které řídí PLC Siemens LOGO, ale asi je v principu jedno co jej řídí. SSR je na 40A (a je na chladiči) a řídí bojler 1,5kW. Ani o tom systému vlastně nevím. Je to zapnuté nonstotp, a když stoupne napětí na baterce nad nastavenou mez, tak to začne plynule regulovat výkon do bojleru, tak aby napětí na baterce neklesalo. Uvažoval jsem původně taky o tom fázově řízeném SSR, ale leží mi rok v šuplíku a asi jej už nepoužiju.

Dneska byl start ohřevu bojleru, kvůli horšímu počasí, trochu pozdější. Ale běžně v toto období bývá v poledne voda ohřátá. na 80°C.
To "plynule regulovat" máš realizováno po jednotlivých sinusovkách (třeba jednu periodu 50Hz zapnuto, další 2 periody vypnuto) nebo to máš po delších úsecích?
Pokud po periodách - jak se to měniči líbí?
A máš to synchronizované na celé vlny, aby nevznikala zbytečně DC složka při spínání jen půlvln?
Díky.
Mex
Příspěvky: 258
Registrován: pát zář 15, 2023 1:28 am

Re: Plynula regulacia vykonu boilera

Příspěvek od Mex »

eduard22 píše: ned kvě 19, 2024 8:20 am Já mám jen takovou teoretickou myšlenku: halogonová světla na jevišti na 230V/50Hz AC i o několika kW, se regulují puzně, ale v MHz , aby
světla neblikala a pulzy nerušily audio aparaturu a regulují se ručně potenciometrem. Tedy se ten pulzní regulátor řídí změnou DC napětí.

No ale výstup z měniče mění výkon, nikoliv napětí, to je stále 230V a AC. Co s tím?

No řítit ten pulzní regulátor DC napětím z panelů, které se mění od rána čili od nuly, přes nějakou max hodnotu vpolende či dle mraků až po nulu zase večer.

Nyní najít šikulu, co umí navrhnout takový vysokovfrekvenční pulzní regulátor a to výkonový (3kW) a pro AC 230V řízený DC napětím z panelů. 8-)
Pokud to používá nějaké spínání na vysoké frekvenci, tak bych si tipnul, že to pojede z DC.
Tedy usměrní AC ze sítě a PWM regulací s filtrací (tedy DC-DC měničem) pak honí ta světla.
Jen bych si myslel, že to asi nebude v řádu MHz, ale spíš nějaké desítky kHz (nad slyšitelným pásmem). Když se mají spínat takové výkony.
To ale na věci nic nemění.

Píšeš, že výstup je zase AC. To víš nebo si to myslíš?
Jakou výhodu by mělo, kdyby to bylo AC (navíc na 50 Hz), které interferuje s kamerama?
Tady by podle mě naopak DC výstup (a tedy kontinuální svit bez blikání) byl určitě lepší.
skybor
Příspěvky: 76
Registrován: úte kvě 02, 2023 5:50 pm

Re: Plynula regulacia vykonu boilera

Příspěvek od skybor »

To "plynule regulovat" máš realizováno po jednotlivých sinusovkách (třeba jednu periodu 50Hz zapnuto, další 2 periody vypnuto) nebo to máš po delších úsecích?
Možná, že výraz "plynulá regulace" nebude úplně přesný, ale pro tyto ůčely je ta "plynulost" asi víc než dostatečná. Jde o 50 výkonových (poměrových) stupňů. Usek jedné sekundy rozdělený na 50 úseků v délce celé periody. Zatím s tím žádný měnič, se kterým jsem to zkoušel, problém neměl.
Přílohy
sinus100_per.png
sinus100_per.png (23.56 KiB) Zobrazeno 37 x
SkyFVE 5 kWp (ve výstavbě) na výzkumné "chytré" chatě. 1x MPPT EASun 8048 80A, 2x MPPT EASun 6048 60A, Li-Ion 2x 12s 156Ah (13,7kWh/44V), NiCd 38s KPM 120P (5,2 kWh/48V), APC Smart-UPS 5000VA, SkyPowerBox LF 4810 1000VA + Siemens Logo! + RPi
eduard22
Příspěvky: 1063
Registrován: ned čer 12, 2022 8:21 pm
Bydliště: Znojmo
Výkon panelů v FVE [Wp]: 8000
Kapacita baterie [kWh]: 23

Re: Plynula regulacia vykonu boilera

Příspěvek od eduard22 »

Mex píše: ned kvě 19, 2024 2:55 pm Pokud to používá nějaké spínání na vysoké frekvenci, tak bych si tipnul, že to pojede z DC.
Tedy usměrní AC ze sítě a PWM regulací s filtrací (tedy DC-DC měničem) pak honí ta světla.
Jen bych si myslel, že to asi nebude v řádu MHz, ale spíš nějaké desítky kHz (nad slyšitelným pásmem). Když se mají spínat takové výkony.
To ale na věci nic nemění.

Píšeš, že výstup je zase AC. To víš nebo si to myslíš?
Jakou výhodu by mělo, kdyby to bylo AC (navíc na 50 Hz), které interferuje s kamerama?
Tady by podle mě naopak DC výstup (a tedy kontinuální svit bez blikání) byl určitě lepší.
Už si to nepamatuju jestli do bylo na výstupu pro světla usměrněný to fakt už nevím :-/, ale tuším, že triaky byly tehdá dva proti sobě (asi pro každou půlvunu jeden) pulzovaly (řízené pulzy z IO NE555), asi tedy v kHz nad slyšitelným pásmem, už nevím kolik kHz a to bez ohledu na sinusoudu a její průchod nulou. A měnily poměr mezery a sepnutí v těchto rychlých pulzech právě i uprostřed sinusoudy. Asi jako když za socíku u staré vrtačky Narex na 230V/50Hz nebyl regulátor otáček a tak jsi jej simuloval rychlým opakováním mačkáním vypínače tzv. jsi jen brnkal. A proto ty kHz nad slyšitelným pásmem, jinak by to prskalo rušilo audioaparatůru :-(
Samodomo "poloostrov" s Axpert King II - AC OUT 5kW/5kVA, PV IN 6kWp, 10x Longi 445Wp na sedlové střeše na východ a 10ks i na západ, aku 8x12V-240Ah levné olovo Varta+Banner trakční VRLA 23kWh (reálně využitelných často tak do 10kWh), Znojmo.
Odpovědět

Zpět na „Automatizace, řízení“