30.3.14

Polievatko - verzia III.

Momentálne polievatko, ktoré som postavil s I2C adaptérom a relátkami má jednu zásadnú nevýhodu - umiestnenie.
Musí byť relatívne blízko k PC (maximálna dĺžka USB je niekde okolo 5 metrov), výstupy na jednotlivé ventily tiež nesmú byť nejako veľmi vzdialené. A tu je problém - polievam momentálne 5 vecí a tým pádom mi ide od čerpadla celkom 5 hadíc. A to je bordel, nepraktické a hlavne škaredé.

Našťastie, môj dnes už ex-kolega mi ukázal výhody zbernice s názvom RS-485.Ω
Je to vlastne jednoduchá sériová linka, ale dá sa predĺžiť až na 1.2km, čo je výrazne nad moje potreby.
Takže som začal uvažovať:

  • sériová linka a zdroj napätia, ktoré "pôjdu" s hadicou a ventily budú robené ako odbočky z hadice
  • centrálna jednotka, schopná zapnúť a vypnúť napätie na linke (tým aj natvrdo uzavrieť všetky ventily a šetriť prúd), prípadne ešte ovládať jeden základný ventil, ktorý zastaví prípadné drobné úniky vody po trase
  • na centrálnom mieste môžem spraviť aj meranie prietoku a tým budem mať presnú informáciu, koľko vody potrebujem na kvalitné polievanie záhrady
  • počet polievatok okolo pozemku je tým pádom ľubovolný - stačí pridať hadicu a predĺžiť linku k ďalšiemu ventilu a je to
Nápad dobrý, realizácia ťažšia.
V prvom rade - problém s napájaním.
Ventil potrebuje na svoju prácu 12V. Ovládacia logika ale pracuje len s 5V napätím.
Dosah linky - všetky bežne dostupné káble majú odpor cca. 0.2Ω na meter. To znamená, že na cca. 100m linky budem mať odpor 20Ω. Zdá sa to málo, ale odpor samotnej cievky ventilu je 90Ω, čo znamená, že na 100m kábla už nebude 12V, ale 9.8V. A aj to len v najlepšom prípade.
V realite je to ešte horšie - na cca. 100m telefónnom kábli boli na konci necelých 4V. Tragédia. Ale ten kábel som aj tak nechcel použiť.
Skúsil som teda cat.5 kábel (bežný ethernet). Ten bol na tom lepšie - na konci 70m dlhého kábla bolo okolo 7V, čiže minimálne riadiaca elektronika už fungovala, ventil to ale nezoplo.
Napadlo ma na samotne napätie použiť vždy pár vodičov, namiesto jedného. To pomohlo - na konci už bolo okolo 8V. Stále to ale bolo málo na zopnutie ventilu.
Spomenul som si ale na super fintu, ktorú som kedysi čítal niekde ešte v amatérskom rádiu - pridal som na vstup veľký kondenzátor (konkrétne 470uF). Ten sa krásne nabije za cca. 0.2 sekundy aj na takto dlhej linke a umožní ventilu zopnutie. Na udržanie ventilu v zopnutej polohe už potom stačí bohate aj 7V, čiže som v pohode.
No a teraz prišiel problém - celé to spraviť čo najlacnejšie.
Mám dobré skúsenosti s webshopom priemyselnydom.sk, takže som začal u nich.
  • Polievatko za 2.30EUR
  • Redukcia - keďže polievatko má 3/4 palcový závit a ventil má 1/2 palcový, za 0.53 EUR
  • Ventil - tých už mám 7, z toho 5 je už na súčasnom polievatku - za 7.17 EUR
  • Redukovaný T-kus - keďže ventil má 1/2" a nástavce na rýchlospojky majú pre zmenu 3/4" - za 0.82 EUR
  • Nástavec na rýchlospojku - potrebujem 2 kusy, ale jeden vymontujem z polievatka, keď tam budem nasadzovať namiesto neho ventil, čiže stačí jeden - za 0.3 EUR
Celková cena riešenia je teda 11.12 EUR.
Lenže do diskusie vstúpila Lucia a rozhodla, že polievatko, čo stále trčí nad zemou sa jej nepáči a chce také, čo keď nepolievajú, zalezú pod zem.
Čiže:
Celková cena stúpla síce na 12.77 EUR, ale je fakt, že to ďaleko ťažšie zničím kosačkou.
A ide sa na elektroniku.
Nevedel som, akú krabičku vymyslieť a ako spájať káble. Uvažoval som nad RJ45 (normálny ethernet konetkor), ale to by výrazne predražilo elektroniku a okrem toho by bolo extrémne ťažké spraviť to vodotesné.
Pozrel som sa lepšie na ten ventil.
Všimol som si, že medzi samotnou cievkou a stenou krabičky je medzera. Nie veľká, ale je.
Zmeral som ju a vyšlo to na 26mm na výšku, 24mm na šírku a 18mm na hĺbku.
To znie celkom pozitívne, až na drobný detail - výška sa mení na miestach, kde sú skrutky kontaktov skoro o 2mm, hĺbka kolíše a v najužšom mieste má len 8mm.

To už tak moc pozitívne nie je.
Ale nenechal som sa odradiť a skúsil som navrhnúť dosku a zapojenie.
Samotnú elektroniku som postavil na nepájivom poli, aby som mal 100% istotu, že to chodí (chodí).
Následne prišiel návrh zapojenia v programe Eagle. Toto je výsledok.

Z toho sa mi podarilo vyprodukoať doštičku, ktorá s odretými ušami vliezla do požadovaných rozmerov.
S odretými ušami znamená, že rozmerovo síce sedí, ale má hĺbkový problém - kondenzátor s dostatočnou kapacitou je príliš veľký (hrubý), konektor nemá priestor na samotný kábel a ten už nie je kam dať.
Našťastie som omylom vyrobil plošák, ktorý bol opačne. A z toho skrsla idea - integrované obvody dám na opačnú stranu dosky, konektor otočím a získam cca. 20mm miesta na zapojenie káblov a jediný problém bol kondenzátor.
Nasledoval nový test so 70m káblom, aby som si potvrdil, že aj 220uF to zvládne zopnúť. Zvládne.
220uF kondenzátor má len 6.3mm, namiesto 8mm pre 470uF. To už vôjde pod krytku.
Tak som to zletoval - mojou novou letovačkou a teda výsledok nie je nič moc, ale beriem to ako prvý pokus.
Uznávam, nie je to na víťazstvo v súťaži krásy, ale funguje to.
Takto to vyzerá priložené na správne miesto vo ventile.
A následne už len nasadím kryt a je to.
Na skompletovanom ventile nepoznať, že mu okrem napájania pribudlo aj rozhranie RS485 :)
Bude to viac vidno, keď tam spravím otvor pre 2 vodiče Cat.5, ale to nie je podstatné.
Podstatné je, že to následne celé môžem vyplniť silikónom a je to vodotesné.
Samozrejme, plošák z oboch strán ešte prejde kúrou nevodivého laku, len pre istotu.
A je to.

Čo sa programu týka, je to pomerne jednoduché - každý senzor počúva na svojej adrese, príkaz 1 očakáva parameter novej adresy, príkaz 2 očakáva parameter, ako nastaviť výstup.
V iniciálnom nastavení má každé čidlo adresu 255, čiže po pripojení mu musí riadiaca jednotka poslať jeden krát novú adresu - tá sa uloží do EEPROM a je pokoj.
Na zbernici tým pádom môže byť až 254 ventilov.
Konkrétny príklad, ako vyzerá príkaz:

  • príkaz pre ventil s adresou 1, povel "nastav výstup" (2), hodnota výstupu 1 (otvor ventil):
    1;2;1
  • ten istý ventil uzavriem príkazom
    1;2;0
  • a teraz zapojím nový ventil, ten automaticky dostane adresu 255, takže mu ju zmením na 2
    255;1;2
  • všetky príkazy sú následne od ventilu potvrdené kódom, kde ventil odpovedá, že rozumel príkazu
Teoretická rýchlosť zopínania je niekde okolo 100x za sekundu, čo je, samozrejme, úplne zbytočné.
Teraz už len postaviť riadiacu jednotku s USB rozhraním a preprogramovať domáce polievanie a je to :)