Něco pro akvaristy

www
Odpovědět
Uživatelský avatar
Pete30
Moderátor
Moderátor
Příspěvky: 588
Registrován: 30. září 2020, 20:33
Dal poděkování: 22 poděkování
Dostal poděkování: 56 poděkování

Něco pro akvaristy

Příspěvek od Pete30 »

Dávkovací pumpa hnojiv.
Kdo provozuje rostlinné akvárium zajisté ví že stejně jako rostliny na zahrádce tak i ty akvarijní potřebují živiny
jako stavební kameny ke svému růstu.
K tomu účelu se zrodilo chytré dávkovací čerpadlo za zlomek ceny originálu, který je hloupý a pracuje na stejném principu.
Moje představa byla zakomponovat ho do Home Assistant, který to bude ovládat jak mu určíte a možnost i manuálního spuštění čerpadla v případě potřeb.
Podařilo se splnit všechny požadavky s možností dávkovat nezávisle dva roztoky.

Co jsem použil:
Krabičku https://www.hadex.cz/o220-krabicka-plas ... mi-panely/
Motor Shield L293D https://www.laskarduino.cz/doit-motor-s ... cu-lua-v3/
ESP8266 Lua NodeMcu V2 WIFI modul https://www.laskarduino.cz/iot-esp8266- ... l--tcp-ip/
Nízkoodběrové LED diody = 2x
Tlačítka = 2x
Odpory 4K7 = 2x
Peristaltické čerpadlo 12V = 2x https://www.laskarduino.cz/intllab-dp-3 ... padlo-12v/
Napájecí modul, step-down měnič 3A s LM2596 https://www.hadex.cz/m406-napajeci-modu ... -s-lm2596/
Napájecí zdroj 12V/5A (našel jsem ho doma)
Napájecí konektor DC do panelu
Pár mechanických drobností: distanční sloupky, šroubky a pár drátů
Vše nakoupeno v českém eshopu, pokud chcete čekat můžete objednat v Číně a pravděpodobně se cenově dostanete na polovinu.

Nebudu popisovat mechanickou montáž protože to záleží na každém kdo si to chce postavit, kam to umístí a jak to bude finálně vypadat.

A teď ta zábavnější část, když už je vše sestaveno.

Motor Shield L293D má dvě části:
řídící část kde je do patice na desce vložen ESP8266 Lua NodeMcu V2 WIFI modul
tato část je napájena 4,5 - 9V
druhá část je vlastní řízení motorů a je napájena 4,5 - 36V /600mA trvale na motor, nárazově 1,2A
při použití jednoho zdroje 12V byl instalován step-down měnič 3A s LM2596 kterým snížuji napětí pro nodemcu na 6V

Při dodávce čerpadel jsem zjistil že na štítku je 12V/5W a to zviklalo mou jistotu že to modul řízení dá :o a proto jsem provedl měření, které mě uklidnilo. Motor odebírá z 12V zdroje 180 mA.
Jen pro zajímavost: na výstupu z desky pro motor je snížené napětí na 10,5V, ale motorky makají v pohodě.

LED kontrolky zapnutí čerpadla jsou jen přes omezovací odpor paralerně ke každému motoru jedna.
Původní myšlenka byla že je budu řídit přes GPIO desky, ale tím bych se připravil do budoucna například o připojení zapouzdřeného Dallasu k měření teploty a něco dalšího(málo pinů)

Dvě tlačítka na zařízení jsou připojena na GPIO D5 a D6 a umožňují manuální dávkování.

K řízení motorků deska využíva piny D1 a D3 motor A, D2 a D4 motor B.
Nepotřebuji řídit směr a rychlost motoru proto jsem použil pouze D1 a D2 ke spuštění motorů.
V jednoduchosti je krása a zde je kód který jsem se snažil maximálně zjednodušit.
Vlastní motory:

Kód: Vybrat vše

output:  
  - platform: gpio
    pin: D1
    id: pwm_output_a
  - platform: gpio
    pin: D2
    id: pwm_output_b

switch:
  - platform: output
    name: "Hnojivo motor A"
    output: pwm_output_a
    id: sw_pump_a
  - platform: output
    name: "Hnojivo motor B"
    output: pwm_output_b
    id: sw_pump_b
Tlačítka:

Kód: Vybrat vše

binary_sensor:
  - platform: gpio
    pin:
      number: D6
      mode: INPUT_PULLUP
      inverted: True
    name: "Tlačítko pumpa A"
    on_state:
      then:
        - switch.toggle: sw_pump_a
  - platform: gpio
    pin:
      number: D5
      mode: INPUT_PULLUP
      inverted: True
    name: "Tlačítko pumpa B"
    on_state:
      then:
        - switch.toggle: sw_pump_b
Celý kód:

Kód: Vybrat vše

output:  
  - platform: gpio
    pin: D1
    id: pwm_output_a
  - platform: gpio
    pin: D2
    id: pwm_output_b

switch:
  - platform: output
    name: "Hnojivo motor A"
    output: pwm_output_a
    id: sw_pump_a
  - platform: output
    name: "Hnojivo motor B"
    output: pwm_output_b
    id: sw_pump_b
    
binary_sensor:
  - platform: gpio
    pin:
      number: D6
      mode: INPUT_PULLUP
      inverted: True
    name: "Tlačítko pumpa A"
    on_state:
      then:
        - switch.toggle: sw_pump_a
  - platform: gpio
    pin:
      number: D5
      mode: INPUT_PULLUP
      inverted: True
    name: "Tlačítko pumpa B"
    on_state:
      then:
        - switch.toggle: sw_pump_b
A teď vzhůru do HA a automatizace:
Pro dvě čerpadla vytvořte dva pomocníky číslo pojmenujte si je jak chcete a měrná jednotka ml, rozsah dávkování jak chcete(já dal 20 ml):

Kód: Vybrat vše

input_number.davkovani_a
input_number.davkovani_b
A teď se ponoříme do šablonování :o
Vytvořte šablonu kterou použijete v automatizaci a ta vám zajistí převod času na ml:

Kód: Vybrat vše

{{ states('input_number.davkovani_a') | round * 0.75 }}
samozřejmě pro druhé čerpadlo vytvoříte ještě jednu b
Jak vidíte v šabloně je číslo 0.75 a to zajišťuje správné dávkování v ml.
Pro kalibraci jsem použil číslo 1 = 10 vteřin je 10 ml teorie
Skutečnost: 10 vteřin = 13,5 ml proto jsem vzal 10s : 13,5 ml cca = 0,74 a použil hodnotu v šabloně 0,75 a výsledek dávkování 10s = 10 ml
to jen pro vysvětlení ;)
Potom vytvoříte automatizaci:

Kód: Vybrat vše

  alias: Ovládání pumpa A čas/ ml
  description: ''
  trigger:
  - platform: state
    entity_id: switch.hnojivo_motor_a
    to: 'on'
    for: '{{ states(''input_number.davkovani_a'') | round * 0.75 }}'
  condition:
  - condition: state
    entity_id: binary_sensor.tlacitko_pumpa_a
    state: 'off'
  action:
  - service: switch.turn_off
    target:
      entity_id:
      - switch.hnojivo_motor_a
  mode: single
Opět pro druhé čerpadlo vytvoříte ještě jednu.
Tato automatizace vám zajistí, aby čerpadlo nadávkovalo nastavené množství ml roztoku nastavené běžcem na kartě a vypnulo.
Podmínka v automatizaci je tlačítko na zařízení a zajišťuje pokud dávkujete manuálně, aby se čerpadlo nevypnulo na nastavené hodnotě, prostě to dávkuje dokud držíte tlačítko :o
karta čerpadel.png
Teď už jen zbývá vytvořit automatizaci čím to chcete spustit, například časem, úrovní osvětlení, to už je na každém jakou má představu, proto jí zde neuvádím (mám to řízené časem a testuji ;) ).
Časová náročnost na stavbu pokud máte vše potřebné je jedno klidné odpoledne a máte hotovo :roll:
Pár náhledů:
pohled na vnitřnosti
box zapojeni.jpg
Finální produkt:
box komplet.jpg
Ať vám to roste:
akva 350.jpg
Pokud nejsem přítomen tak jsem na rybách ;)

Uživatelský avatar
Pete30
Moderátor
Moderátor
Příspěvky: 588
Registrován: 30. září 2020, 20:33
Dal poděkování: 22 poděkování
Dostal poděkování: 56 poděkování

Re: Něco pro akvaristy

Příspěvek od Pete30 »

Jen doplnění:
Pokud budete mít nějaké návrhy na vylepšení kódu ESP, automatizace a další, neváhejte a pište.
Prozatím mám čerpadlo v testu a mohu cokoliv vyzkoušet a otestovat než to nasadím do běžného provozu ;)
Pokud nejsem přítomen tak jsem na rybách ;)

Uživatelský avatar
Pete30
Moderátor
Moderátor
Příspěvky: 588
Registrován: 30. září 2020, 20:33
Dal poděkování: 22 poděkování
Dostal poděkování: 56 poděkování

Re: Něco pro akvaristy

Příspěvek od Pete30 »

Trochu vylepšení pro dávkovací čerpadlo a ovládání přes nástěnný tablet.
Grafické běžce pro nastavení množství dávkování.
Grafické ukazatele odebraného množství roztoku.
Virtuální tlačítka ke spuštění jednorázového nadávkování.
V automatizaci je použito šablonování, které zajištuje odpočet roztoku a v případě změny množství dávkovaného roztoku upravuje odečítání.
Stupnice ukazují zbývající množství v zásobníku a při poklesu na určitou úroveň mění barvu a ikony.
Při poklesu pod určenou hranici HA oznamuje prostřednictvím TTS upozornění na nízkou hladinu roztoku ;)
ovladani davkovace2.png
Pokud nejsem přítomen tak jsem na rybách ;)

Uživatelský avatar
Pete30
Moderátor
Moderátor
Příspěvky: 588
Registrován: 30. září 2020, 20:33
Dal poděkování: 22 poděkování
Dostal poděkování: 56 poděkování

Re: Něco pro akvaristy

Příspěvek od Pete30 »

Nebo můžete mít zásobníky roztoku vertikálně ;)
vertical zasobnik.png
Pokud nejsem přítomen tak jsem na rybách ;)

Odpovědět