Перейти до публікації
Пошук в
  • Додатково...
Шукати результати, які містять...
Шукати результати в...

ПВУ_DIY

yur43

Рекомендовані повідомлення

image.png.465ed4cf43ed0174f9eab29cc1cff0ea.png

для порівняння дані температури від датчиків DS і BME. Поки Далас одну сходинку родить, BME їх вже 6шт видає. Але є біда, вони трохи саморозігріваються, при малих протоках відчутно - до 0,15С.

image.png.249d469f0fab66a8fad3791cd87371ef.png

після калібрування Бош і Далас ідуть разом

Змінено користувачем yur43
Посилання на коментар
Поділитися на інших сайтах

10 годин тому, yur43 сказав:

image.thumb.png.6e7080e7316ff8e32e215b53ed9f6717.png

комфортне охолодження природною прохолодою працює чіткоimage.thumb.png.b2442c0112b161edfab3388669968242.png

Цікаві графіки, як кардіограма після бігу 😁

Але я по своїй вентиляції побачив що навіть без байпасу, якщо на виході теплообмінника є чуть не вулична температура (26-27С), то датчики по кімнатах як показували 22С +/-, так і показують, особливо нічого не змінюється. В зимовий період зворотня ситуація, коли в кімнатах 21-22С, а на подачі 17-18С, то температура в кімнатах також не опускається до рівня притоку. Тобто в кімнатах все рівно плюс-мінус стабільна температура.

Змінено користувачем TaurosRMK
Посилання на коментар
Поділитися на інших сайтах

41 хвилину тому, TaurosRMK сказав:

в кімнатах все рівно плюс-мінус стабільна температура.

Як каже мій товариш, то по суті автоматизований режим відкритого вікна. Хтось може поставити просто ЕС-вентилятор на кухонну витяжку і керувати його продуктивністю по температурі, ще хтось просто відкриє вікно і йому добре, я реалізував це використовуючи елементи вентиляції,

Коли ввечері сідає сонце і вмикається режим охолодження, ми з дружиною чітко відчуваємо цей момент, навіть засинати і спати приємніше.

Посилання на коментар
Поділитися на інших сайтах

23 години тому, yur43 сказав:

реалізував це використовуючи елементи вентиляції

Цікаво, а якщо вимикати витяжний вентилятор і хай приточний дує прохолодним повітрям, також буде режим охолодження. Це не повноцінний байпас, але ефект рекуперації буде дуже малий. По типу як зимою в режимі обмерзання, якщо є загроза, то приточний вимикається і теплообмінник прогріваєтсья витяжним повітрям. А літом зворотня дія, витяжний вимикається, а приточним буде охолоджується. В теорії вентилятор буде дути в приточні кімнати, далі повітря буде рухатися по інших кімнатах і направлятися в різні отвори, і більшість напевно піде у витяжні канали і на вулицю.

Хм, треба буде попробувати коли вентилятори заміню і дороблю автоматизацію.

Посилання на коментар
Поділитися на інших сайтах

6 годин тому, TaurosRMK сказав:

Цікаво, а якщо вимикати витяжний вентилятор і хай приточний дує прохолодним повітрям, також буде режим охолодження. Це не повноцінний байпас, але ефект рекуперації буде дуже малий. По типу як зимою в режимі обмерзання, якщо є загроза, то приточний вимикається і теплообмінник прогріваєтсья витяжним повітрям. А літом зворотня дія, витяжний вимикається, а приточним буде охолоджується. В теорії вентилятор буде дути в приточні кімнати, далі повітря буде рухатися по інших кімнатах і направлятися в різні отвори, і більшість напевно піде у витяжні канали і на вулицю.

Хм, треба буде попробувати коли вентилятори заміню і дороблю автоматизацію.

В мене майже герметичний будинок. І повітря проходить через рекуператор в будь-якому випадку. Через це штатна система попередження обмерзання (зупинкою проточного вітряка) толком і не працювала. Тому байпас - саме логічне рішення.

Посилання на коментар
Поділитися на інших сайтах

  • 4 тижні потому...

image.png.3b24ac33c50e902c8bf40bf947de2183.png

ще ілюстрація роботи системи охолодження в графіках, нижній графік - ефективність рекуперації. При мікрорізниці між температурами потоків результат розрахунку починає ковбасити. Дякую шановному volomoto що навчив як результат хоч в рамки загнати між 0 і 100%, бо раніше були викиди до тисяч %. 

Зауважу, що ПВУ оперує не зовсім кімнатною температурою (22-23С), а трохи гарячішим повітрям з під стелі (близько 24С), бо літом відчутний дизбаланс температури шарів над підлогою, під стелею, по середині висоти.

Змінено користувачем yur43
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

image.thumb.png.4c82cb42884ce3264d8ce0377579a83c.png

налаштував в ESP датчик рівня, завтра закину в криницю - буде міряти шо там є.

В модулі ПВУ повно вільних портів, підчепив сюди. А НА вже зможе по низькому рівню води вимикати насос і вмикати тривогу. Бо з цими поливами грядок хочеться бачити - динаміку рівня в криниці.

image.png.d5ec8a5d6b073a3a424d402e214e5e98.png

 

Змінено користувачем yur43
Посилання на коментар
Поділитися на інших сайтах

1 година тому, TaurosRMK сказав:

Що за датчик?

image.thumb.png.bc8136d8739c7244ad2206235766186d.png

на 5 метрів, 4-20 mA, дав йому 15в, поклав на дно колодязя

image.thumb.png.2eacbbf7aa2e73aa6022627bf6133902.png

  • Лайк 3
Посилання на коментар
Поділитися на інших сайтах

  • 2 тижні потому...

Все працює чудово.

Єдине, датчик СО2 недавно калібрував - показував 252ррм, коли нікого довго не було.

image.thumb.png.b4b28e9388b3d765409c9f9ac543cbd2.png

Посилання на коментар
Поділитися на інших сайтах

  • 2 тижні потому...
Прихований текст

esphome:

  name: hrv-kc868-a4

  friendly_name: HRV_kc868-a4

  on_boot:

    then:

      - number.set:

          id: dac_min

          value: 0.11

      - number.set:

          id: dac_max

          value: 0.35

      - number.set:

          id: dac_bal1

          value: 0.003

      - number.set:

          id: dac_bal2

          value: -0.01    

      - output.set_level:

          id: set_level

          level: 0.4

esp32:

  board: esp32dev

  framework:

    type: arduino

logger:

    level: ERROR

web_server:

  port: 80    

api:

  encryption:

    key: "V"

  services:

    - service: scd4x_calibrate_co2_value

      variables:

        co2_ppm: int

      then:

      - scd4x.perform_forced_calibration:

          value: !lambda 'return co2_ppm;'

          id: scd40

    - service: scd4x_factory_reset

      then:

      - scd4x.factory_reset: scd40

ota:

  - platform: esphome

    password: "b"

wifi:

  ssid: "WI"

  password: "2"

  reboot_timeout: 5h

  ap:

    ssid: "Hrv-Kc868-A4 Fallback Hotspot"

    password: "2"

rtttl:

  output: rtttl_out

  id: my_rtttl

number:

  - name: dac_min

    id: dac_min

    platform: template

    min_value: 0

    max_value: 0.3

    step: 0.01

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_max

    id: dac_max

    platform: template

    min_value: 0

    max_value: 0.6

    step: 0.01

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_bal1

    id: dac_bal1

    platform: template

    min_value: -0.01

    max_value: 0.01

    step: 0.001

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_bal2

    id: dac_bal2

    platform: template

    min_value: -0.01

    max_value: 0.01

    step: 0.001

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_power

    platform: template

    id: dac_power

    min_value: 0

    max_value: 1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: diagnostic

  - name: PID_power

    platform: template

    id: PID_power

    min_value: 0

    max_value: 1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: diagnostic

climate:

  - platform: bang_bang

    name: "cool_wind"

    id: cool_wind

    visual:

      min_temperature: 10

      max_temperature: 30

      temperature_step: 0.1    

    sensor: temp_ino

    default_target_temperature_low: 18.2 °C

    default_target_temperature_high: 19.5 °C

    cool_action:

      - switch.turn_on: cool_on

    heat_action:

      - switch.turn_on: cool_off

    idle_action:

      - switch.turn_off: cool_on

      - switch.turn_off: cool_off

  - platform: bang_bang

    name: "defrost"

    visual:

      min_temperature: 1

      max_temperature: 6

      temperature_step: 0.1

    sensor: temp_outR

    default_target_temperature_low: 2 °C

    default_target_temperature_high: 3 °C

    heat_action:

      - switch.turn_on: defrost_on

    idle_action:

      - switch.turn_off: defrost_off

      - switch.turn_off: defrost_on

    cool_action:

      - switch.turn_on: defrost_off

  - platform: pid

    name: "PID_CO2"

    id: PID_CO2

    visual:

      min_temperature: 500

      max_temperature: 1500

      temperature_step: 10

    sensor: CO2

    default_target_temperature: 850

    cool_output: PID_level

    control_parameters:

      kp: 0.003

      ki: 0

      kd: 0

i2c:

  sda: GPIO19

  scl: GPIO21

  scan: false

  id: bus_a

tca9548a:

  - address: 0x70

    id: multiplex0

    i2c_id: bus_a

    channels:

      - bus_id: multiplex0channel0

        channel: 0

      - bus_id: multiplex0channel1

        channel: 1

      - bus_id: multiplex0channel2

        channel: 2

      - bus_id: multiplex0channel3

        channel: 3

      - bus_id: multiplex0channel4

        channel: 4

      - bus_id: multiplex0channel5

        channel: 5

      - bus_id: multiplex0channel6

        channel: 6

      - bus_id: multiplex0channel7

        channel: 7

one_wire:

  - platform: gpio

    pin: 13

switch:    

  - platform: template

    name: "cool_on"

    id: cool_on

    turn_on_action:

      - switch.turn_off: cool_off

      - switch.turn_off: relay_2    

      - switch.turn_off: relay_4    

      - repeat:

          count: 33

          then:

            - switch.turn_on: relay_1

            - switch.turn_on: relay_3    

            - delay: 1.5s

            - switch.turn_off: relay_1

            - switch.turn_off: relay_3

            - delay: 140s

  - platform: template

    name: "cool_off"

    id: cool_off

    turn_on_action:

      - switch.turn_off: cool_on

      - switch.turn_off: relay_1

      - switch.turn_off: relay_3

      - repeat:

          count: 35

          then:

            - switch.turn_on: relay_2

            - switch.turn_on: relay_4

            - delay: 1.5s

            - switch.turn_off: relay_2

            - switch.turn_off: relay_4

            - delay: 140s    

  - platform: template

    name: "defrost_on"

    id: defrost_on

    turn_on_action:

      - switch.turn_off: defrost_off

      - switch.turn_off: relay_2    

      - repeat:

          count: 33

          then:

            - switch.turn_on: relay_1

            - delay: 1.5s

            - switch.turn_off: relay_1

            - delay: 150s

  - platform: template

    name: "defrost_off"

    id: defrost_off

    turn_on_action:

      - switch.turn_off: defrost_on

      - switch.turn_off: relay_1

      - repeat:

          count: 35

          then:

            - switch.turn_on: relay_2

            - delay: 1.5s

            - switch.turn_off: relay_2

            - delay: 150s          

  - platform: gpio

    name: "bypass_in_on"

    id: relay_1

    pin: 2

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_1

  - platform: gpio

    name: "bypass_in_off"

    id: relay_2

    pin: 15

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_2

  - platform: gpio

    name: "bypass_out_on"

    id: relay_3

    pin: 5

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_3

  - platform: gpio

    name: "bypass_out_off"

    id: relay_4

    pin: 4

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_4

sensor:

  - platform: adc

    pin: 34

    name: "water level"

    update_interval: 30s

    unit_of_measurement: m

    attenuation: 11db

    filters:

      - offset: -0.61

      - multiply: 1.66666

      - exponential_moving_average:

          alpha: 0.08

          send_every: 1

  - platform: pulse_counter

    pin: 14

    name: "fan1"

    filters:

      - multiply: 0.5

    update_interval: 30s

    accuracy_decimals: 0

    unit_of_measurement: "RPM"

    on_value_range:

      - below: 300

        then:

          - delay: 2min

          - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'

  - platform: pulse_counter

    pin: 27

    name: "fan2"

    filters:

      - multiply: 0.5

    update_interval: 30s

    accuracy_decimals: 0

    unit_of_measurement: "RPM"

    on_value_range:

      - below: 300

        then:

          - delay: 2min

          - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'

  - platform: dallas_temp

    address: 0xb401204ec799da28

    name: "temp_outR"

    accuracy_decimals: 2

    id: temp_outR    

    filters:

      - offset: -0.01  

  - platform: dallas_temp

    address: 0xce0000034b298828

    name: "temp_out"

    accuracy_decimals: 2

    id: temp_out

    filters:

      - offset: 0.08

  - platform: bme280_i2c

    i2c_id: multiplex0channel1

    address: 0x76

    temperature:

      name: "BME280 Temp_room"

      accuracy_decimals: 2

      filters:

        - offset: -0.1  

    humidity:

      name: "BME280 Humid_room"

      accuracy_decimals: 1

    update_interval: 3min        

  - platform: bme280_i2c

    i2c_id: multiplex0channel7

    address: 0x76

    temperature:

      name: "BME280 Temp_ino"

      id: temp_ino

      accuracy_decimals: 2  

    humidity:

      name: "BME280 Humid_ino"

      accuracy_decimals: 1

    update_interval: 30s

  - platform: bme280_i2c

    i2c_id: multiplex0channel6

    address: 0x76

    temperature:

      name: "BME280 Temp_in"

      id: temp_in

      accuracy_decimals: 2

      filters:

        - offset: -0.2

    humidity:

      name: "BME280 Humid_in"

      id: Humid_in

      accuracy_decimals: 1

    update_interval: 1min

  - platform: scd4x

    i2c_id: multiplex0channel6

    co2:

      name: "CO2"

      id: CO2

      filters:

        - exponential_moving_average:

            alpha: 0.12

            send_every: 1

    automatic_self_calibration: false

    altitude_compensation: 242m

    measurement_mode: low_power_periodic

    id: scd40

output:

  - platform: ledc

    pin: GPIO18

    id: rtttl_out

  - platform: esp32_dac

    pin: GPIO26

    id: dac_output1

  - platform: esp32_dac

    pin: GPIO25

    id: dac_output2

  - platform: template

    type: float

    id: set_level

    write_action:      

      - lambda: |-

          id(dac_power).publish_state(state);      

          auto v1 = id(dac_min).state + id(dac_bal1).state + (state * (0.9 + id(dac_bal2).state));

          auto v2 = id(dac_min).state - id(dac_bal1).state + (state * (0.9 - id(dac_bal2).state));

          id(dac_output1).set_level(v1);

          id(dac_output2).set_level(v2);

  - platform: template

    type: float

    id: PID_level

    write_action:      

      - lambda: |-

          if (id(fans).state) {

          // Fan is ON, do something here

          } else {

          // Fan is OFF, do something else here

          }

          id(PID_power).publish_state(state);  

          auto v = state * id(dac_max).state;

          if (!id(fans).state) {

          id(set_level).set_level(v);

          }

fan:

  - platform: speed

    output: set_level

    name: "fan"

    id: fans

    on_turn_off:

      then:

      - output.set_level:

          id: set_level

          level: 0.15

    on_turn_on:

      then:

      - delay: 60min

      - lambda: !lambda |-

          id(fans).turn_off();

time:

  - platform: sntp

    on_time:

      - minutes: /30

        then:

        - lambda: |-

            if (id(temp_in).state > 23 && id(temp_out).state < 22) {

            auto call = id(cool_wind).make_call();

            call.set_mode("HEAT_COOL");

            call.perform();          

            }

            else {

            if (id(cool_wind).mode != CLIMATE_MODE_OFF) {

            auto call = id(cool_wind).make_call();

            call.set_mode("OFF");

            call.perform();

            id(cool_off).turn_on();

            }}

- зміни стосуються оновленої версії ESPHOME

- доданий коефіцієнт для балансування вентиляторів, тепер bal1 балансує на низьких обертах, bal2 - на високих

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

26.06.2024 в 16:54, yur43 сказав:

балансування вентиляторів

А шо то балансування означає, підтримка однакових обертів? Тоді це балансуванням важко назвати 🙂

Посилання на коментар
Поділитися на інших сайтах

56 хвилин тому, TaurosRMK сказав:

А шо то балансування означає, підтримка однакових обертів? Тоді це балансуванням важко назвати 🙂

так, балансуванням можна змінювати бажані пропорції обертів, або по бажанню просто вирівняти оберти. Бо вентилятори можуть мати різні криві регулювання, і DAC виходи можуть бути з різними К.підсилення, адже вихід ESP потрібно підсилити для регулювання 0-10в.

image.thumb.png.103c5c5ba8c526ebf71591889f47f071.png

Спочатку планував додати диф.датчик тиску приміщення-вулиця, тоді економічна ефективність ПВУ стане максимальною через відсутність неконтрольованих потоків, але в будинку троє дверей з різних боків, і незрозуміло як воно буде в результаті.

Якщо є якісь пропозиції, озвучте.

Змінено користувачем yur43
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

Створіть акаунт або увійдіть у нього для коментування

Ви маєте бути користувачем, щоб залишити коментар

Створити акаунт

Зареєструйтеся для отримання акаунта. Це просто!

Зареєструвати акаунт

Увійти

Вже зареєстровані? Увійдіть тут.

Увійти зараз
×
×
  • Створити...