Контролер за водно подово отопление

Управлението на температурата в стая с водно подово отопление е едно от най-интересните неща. Заради инертността на материалите поддържането на температурата с малък хистерезис е сериозно предизвикателство. Това беше и основната причина, за да се захвана с този контролер. Допълнителната – да видя до колко мога да намаля разходите за отоплението.

Базиран е на ESPHome и е предназначен за работа с Home Assistant. Предпочитам да не използвам cloud услуги за подобни дивайси основно защото при липса на интернет оставаш и без управление.

Той използва PWM с голям период – 20 минути – за да държи температурата в помещението с точност до половин градус. Процесорният модул е на esp-wroom-32e, командва 8 броя 24V задвижки с пиков ток от 300mA и може да бъде разширен с още 8 канала.

За следене на актуалната температура в помещението разчита на външни температурни датчици, добавени в HA.

Заради инертността настройките му вървят малко бавно, но изглежда, че kp 8, ki 1600 и kd 0 дават доста добра стабилност на системата.

Dixcell IC100CX Home Assistant интеграция

След доста мъки най-накрая термопомпата в къщата се управлява почти както искам, остава да вкарам логиката за връзка между очаквана външна температура и изходяща температура на водата от нея.
Първо да спомена каква е тя – 12 киловата трифазна вода-вода на Geotok с управление Dixell ic100cx.
Комуникацията между нея и Home Assistant става през modbus, за целта е необходим XJ485CX – TTL/RS485 serial interface. В България можете да го закупите от Apogee99, обикновено дори го имат налично 🙂
(следващата стъпка е да го елиминирам и него, но комуникацията не е чист сериен интерфейс, има допълнителен сигнал, който се подава от този преходник към диксела. Още не ми е останало време да го дебъгна за съжаление)

От тук нататък е въпрос на лични предпочитания как да изградите комуникацията. При мен отива в Protoss-PE11 модбъс гейт и от там всичко тече по TCP/IP.

Регистрите, които основно ви трябват от modbus:
256 – текуща температура на изхода на термопомпата
258 – текуща температура на входа на термопомпата
260 – текуща температура на входа от сондажа
262 – текуща температура на изхода от сондажната вода
1145 – зададена температура при охлаждане
1148 – зададена температура при отопление
1280 бит 0 – статус на термопомпата, 1 – включена, 0 – stand-by. При писане на 1 в регистъра контролера минава в stand-by
1282 bit 6 – активен режим охлаждане. 1 – включен. Запис в 1282 на 0x4040 в регистъра я включва в режим охлаждане (само, ако преди това е била изключена – 0 в бит 0 на 1280)
1282 bit 7 – активен режим отопление. 1 – включен. Запис в 1282 на 0x8080 в регистъра я включва в режим охлаждане (само, ако преди това е била изключена – 0 в бит 0 на 1280)

Всички температурни стойности са цели числа, като последната цифра се възприема като десетична от самия контролер, примерно 351 означава 35.1 градуса

След като сме въоръжени с горните данни (отне ми доста време да успея да ги събера с reverse engineering, Copeland не ги дават на никого) нататък нещата са лесни.

Примерни конфигурации за HomeAssistant

modbus:
  - name: "TP"
    type: tcp
    host: XXX.XXX.XXX.XXX
    port: 502
    delay: 10
    message_wait_milliseconds: 100
    sensors:
      - name: tp_status_register_0
        data_type: uint16
        address: 1280
        input_type: holding
        slave: 1
	climates:
      - name: TP Target Temperature
        data_type: int16
        address: 256
        target_temp_register: 1148
        hvac_mode_register:
          address: 1282
          values:
            state_heat: 32896
	    state_cool: 16448
            
        max_temp: 55
        min_temp: 15
        precision: 1
        scale: 0.1
        temp_step: 0.1
        slave: 1
switch:
  - platform: template
    switches:
      heatingonoff:
        turn_on:
          - service: modbus.write_register
            data:
              address: 1282
              slave: 1
              hub: TP
              value: 0x8080
        turn_off:
          - service: modbus.write_register
            data:
              address: 1280
              slave: 1
              hub: TP
              value: 0x1
      coolingonoff:
        turn_on:
          - service: modbus.write_register
            data:
              address: 1282
              slave: 1
              hub: TP
              value: 0x4040
          - service: modbus.write_coil
            data:
              address: 1449
              slave: 1
              hub: PLC02
              state: false
        turn_off:
          - service: modbus.write_register
            data:
              address: 1280
              slave: 1
              hub: TP
              value: 0x1
          - service: modbus.write_coil
            data:
              address: 1449
              slave: 1
              hub: PLC02
              state: true

climate:
  - platform: generic_thermostat
    name: House Heating
    heater: switch.heatingonoff
    target_sensor: sensor.average_indoor_temperature
    min_temp: 15
    max_temp: 25
    target_temp: 20.5
  - platform: dual_smart_thermostat
    name: House HVAC
    heater: switch.heatingonoff
    cooler: switch.coolingonoff
    target_sensor: sensor.average_indoor_temperature
    heat_cool_mode: true
    min_temp: 15
    max_temp: 25

Също така е добра идея да синхронизираме статуса при старт на Home Assistant. За тази цел създаваме две нови автоматизации:

alias: Sync TP cooling mode
description: ""
trigger:
  - platform: homeassistant
    event: start
condition:
  - condition: numeric_state
    entity_id: sensor.tp_status_register
    below: 32880
    above: 16447
action:
  - service: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.coolingonoff
mode: single


description: "Sync Heat pump heat state at boot"
mode: single
trigger:
  - platform: homeassistant
    event: start
condition:
  - condition: numeric_state
    entity_id: sensor.tp_status_register
    above: 32898
action:
  - service: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.heatingonoff

Най обичам да ми е забавно рано сутрин …

След снощните проблеми с миксиращата глава, днес се събудих прекалено рано и реших да се хвана да оправя запушването. Разглобих цялата глава, оправих го, пуснах печат и … греда. Не съм съобразил положението на кабелите на нагревателя и температурната сонда 🙂 Резултат – пружината за натягане на ремъка забита в кабелния сноп и счупено краче на термосондата … 🙂
Краен резултат – сменена термосонда, настроени наново нива на главата … сега ще видим как ще работи 🙂

Леки тестове

Вчера пробвах материал от 3DLine – роден производител на нишки за 3д принтиране. Извън леко намаления диаметър на нишката – АБС-а им се оказа превъзходен 🙂 Цената също е доста атрактивна – към момента килограм ABS струва 25 лева 🙂
За момента може да се поръчва от тях само през OLX, но определено ги препоръчвам с две ръце – коректно отношение, бърза реакция, много добър материал.

Ел. подготовка :)

Последните два дни се забавлявахме с разчистването на мястото, където ще е “котелното” помещение на къщата … Оказа се, че стария котел на дърва, който е правен за локално парно, тежи толкова, че едва успяхме да го изнесем четирима човека …

Слава богу, времето поне беше хубаво, след изнасянето се получи съвсем прилично барбекю с бира – почерпихме се за добре свършената работа 🙂

Стойка за материал с ретракт

Вариант едно заминава към принтера 🙂 Прогнозно време за печат – 5 часа и половина 🙂

Дано да не забравя днес да мина и да купя два лагера SKF 626 …
Следващата стъпка е самата стойка, там много се чудя дали да вградя в нея заедно с водач за нишката и filament runout sensor …

Експерименти с пружини …

Тъй като за новия принтер ще ми трябва и стойка, която да може частично да навие обратно материал при смяна на нишката се заиграх с малко пружини от АБС …

Като за първи опит не е зле, но трябва да кажа на слайсера да вдига дюзата, когато минава над печата … 🙂

Да минем на три фази

Започвам малко от краката за главата но … бърза ретроспекция:
Преди около половин година с половинката най-накрая харесахме къщичка близо до София, преди около 3 даже успяхме и да я купим 🙂 Едно от първите неща, които задвижихме като пресни собственици беше прекарването на трифазно захранване. След стандартните два месеца за проучване и предлагане на договор за промяна на мощност вчера се сдобихме и с него – само 29 дни след подписването на договора Чез монтираха нови два стълба и опънаха трасе с ново табло за отчитане 🙂 Разбира се, и това не мина без ексцесии и доставка на кабела от таблото на стълба до имота до вътрешното табло буквално 5 минути след срока … 🙂 Но определено съм доволен спрямо очакванията ми, подозирах поне 6 месечен период на нерви след договора до пускането на захранване …

Мултифилмънт глава

Напоследък се заиграх с глава, която може да вкара до 6 различни материала в екструдера, за сега работи с един тип материал, имам проблем само с комбинацията PLA-PVA, PVA-то на моменти запушва, но с малко игра с температурите мисля, че ще го докарам 🙂