Regulace topení s Atmega, Ds18S20 (teď LM35) a GM37-14+L298N

A TÚV ako pripravuješ?
Máš bojler?
A ako ho máš zapojený?
V primárnom (kotlovom) okruhu samotiažou?

Relatko.

relátko: Pokud byla otázka na mě tak:
Mám akumulátor 1000l
Plynový kotel má svoje čerpadlo.
Popis zapojení by byl na hodně dlouhou dobu.
Ještě to stejně není finální verze ale už se tomu blíží.

Myslím, že topení na toto forum nepatří.
Jestli chceš tak ti udělám popis zapojení ale musíš mi dát čas.

Máš pravdu,ale vďaka za reakciu.
Poprosím Atlana o info na SZ.
Relatko

Zdravím.
Omlouvám se, že zase otevírám toto vlákno. Dělám něco podobného a potřeboval bych více teplotních čidel (cca 12, možná i více). Dalo by se to řešit LM35 s muxem 4051 viz schéma, nebo to je blost? Původně jsem přemýšlel o DS18B20, ale čtení teploty by zabralo strašnou dobu.

Ísť by to šlo. No pri týchto analógových teplomerov je veľká pakáreň s ich kalibráciou. Teda ak sa neuspokojíš s presnoťou cca +/-5°C.

Ďalšia vec je, že cez ne musí tiecť veľmi maličký prúd, aby sa teplomer v jeho dôsledku nezohrieval. To môže byť kľudne aj o 1-2°C. Ide o teplotu vnútorného čipu, nie o teplotu na povrchu čidla.

Po rôznych experimentoch pri trochu masovejšej výrobe som to vzdal a používam výhradne čidlá, ktoré komunikujú digitálne. Inak budeš furt pochybovať o tom, či ten či onen analógový teplomer je dobre nakalibrovaný.

A aj s tými digitálonymi treba opatrne. Napríklad v návode na SHT1x je vyslovene upozorňované na vlastný ohrev počas komunikácie.

Sice to nemám s LM35, ale přepínám bez problémů pomocí dvou kusů 4051 8 třídrátově připojených čidel KTY81 na vstupu operáku.

Tak nějak nechápu, proč by čtení 12-ti čidel DS18B20 mělo trvat strašnou dobu …

Ked niekto spusti konvrziu a potom testuje ci bola ukon ena aby mohol nacitat teplotu tak to trva. Treba obsluzit vsetki cidla najprv spuztit prevod teploty a kym obsluzi posledne na prvom moze ci tat teplotu. Osobne by som to riesil delenim v programe. Obsluzit displey, tlacidla a prve cidlo prevod, displey tlacidla a druhe cidlo prevod atd…

Koukal jsme znova do datasheetu DSka a nevím teda jestli jsem to pochopil správně. Jak je udáváno při 12 bitech (bude mi stejnak stačit asi jen 9 bitu) doba 750 ms, to je do ba za kterou dostanu data z každého čidla? Nebo to jen doba konverze teploty na data (za kterou všechny čidla převedou teplotu naráz) a + doba čteni dat z každého čidla? Potom by to tedy netrvalo takovou dobu jak jsem si myslel.

Atlan:
To rozdělení čtení čidla po čidle s obsluhou LCD a tlačítek je dobrej nápad. Chtěl jsem to číst všechny čidla naráz.

Přikládám i schéma co jsem si vyplodil z mé fantazie . Můžete mi prosím na to někdo mrknout jestli to je správně? Hlavně jestli to stačí odrušit od sítě jen varistorem, nebo by tam měli bejt nějaký kondenzátory, případně cívky. Na relátkach budou jen čerpadla (Alpha2) a na tyristorech směšováky zónové ventily (cca 10VA/ventil). Vydržel by ten MOC3041 spínat ten ventil (3 - 10VA) napřímo, bez toho silnějšího triaku? Že bych je neosadil a ušetřil tak pár peněz:-)

Schéma drive.google.com/file/d/0BxG-lcWG29W5RmNGalpzMWI4WFU/view?usp=sharing

Nie spustis prevod a pockas 750ms, potom das vycitat teplotu z cidla(pritom sa opytas ci prevod skoncil ( odpoved. Cidla bude na 99 ze ano) takze ti posle teplotu.
Uz som stym robil davnejsie, ale spustenie konverzie asi 12ms, a vycitanie 20ms? Nemam sajn. Teraz.
Iste je ze ked spustis konverziu a hned potom das vycitat teplotu, odpoved cidla bude ze konverzia prebieha a bude to stat v testovacej slucke 750ms a procesor nic nebude robit. Tak ze musi spustit konverziu v 1 cidle potom druhom az poslednom. A ked uz ubehlo na prvom 750ms tak mozes vycitavat teplotu z prveho potom druheho…
Precitaj si poznamku ohladom 1wire zbernice ake zapojenie pouzit ake BUDICE zbernice aby to chodilo.

Můžeš to klidně udělat tak, že vyšleš “Skip ROM” a “Start konverze” - tím spustíš konverzi na všech čidlech současně. Počkáš 750ms (nebo třeba celou vteřinu) a pak vyčteš teploty z jednotlivých čidel. Nepředpokládám, že bys tam dal takovou blbost jako Delay_ms(1000), ale že během té vteřiny program normálně poběží. Vyčtení všech čidel nelze udělat najednou, musíš je číst každé zvlášť pomocí ROM code. Jakmile vyčteš všechny hodnoty, vrátíš se zase na začátek. Zápis/čtení jednoho bitu trvá 60us + alespoň 1us jako mezibitová mezera => řekněme tedy 62us na 1 bit. Nejdelší paket je dlouhý 19 bytů - tedy 152 bitů. A to je adresace pomocí ROM code + vyčtení celého ScratchPad. Při 62us na bit to trvá 62152=9424us - tedy s rezervou 10ms na jedno čidlo. Na čtení teploty Ti stačí přečíst ze ScratchPad jen první 2 byty - tedy i s adresou to dělá 12 bytů - tedy 96 bitů. 6296=5952us => necelých 6ms na 1 čidlo. 12 čidel tedy přečteš za 72 ms. Navíc je nemusíš číst všechny v jednom bloku, ale v každé smyčce programu přečíst jedno.

Časy nejsou vymyšlené - všechno je vyčtené z datasheetu od DS18B20. A jsme zase u toho :

ČÍST DATASHEETY, ČÍST DATASHEETY, ČÍST DATASHEETY !!!

V tomhle jsem se potřeboval ujistit. Na poprvé jsem to pochopil blbě. Datasheety se snažím číst, ale moje cizí jazyky jsou na tom hodně bídně. Takže hojně využívám strýčka Googla a tam jsou někdy ty překlady docela (ne)logické. A tak většinou hodně hledám po netu, tady ve fóru a pak se teprve ptám.

Atlan: Na tom 1wire mi chybí pull-up, to sem si všim. Ale myslíš že bych to měl spíš hodit přes nějakej budič třeba 1wire/i2c? A tím to pro jistotu i oddělit od mcu? Nebo by stačilo dát 2 transily (Vcc/gnd a data/gnd) a na data dát do série odpor třeba 50 Ohmu?

Da sa to riesit napisanim programu tak aby sa zbernica natvrdo nabijala log1 a potom prepla na pullup. Ale pri chybnom naprogramovani mozes odpalit cidla. Kedze chces pouzit dost cidiel a este neviem na akom dlhom vedeni. Doporucujem ten 1wire driver usetris si starosti. Okrem odporu tam je aj kondenzator. Ak pouzijes budic v datasheete bude aj zapojenie na zbernicu aspon myslim. Nemam cas ani pristup k datasheetom teraz.

Robil som niečo podobné, pred časom na riadenie kotla na tuhé palivo. Použil som atmega8, lcd z Nokie, servo na klapku a ventilátor. Použil som tam klasický odporový senzor teploty a bol to boj s odčítaním teploty.

m.youtube.com/watch?v=mPeb151h520

Potom som robil peletový kotol a tam som použil atmega8, 7segment, servo, ventilátor a na snímanie teploty LM 35. Toľko probémov som mal s tím snimaním teploty, neustále kolísanie teploty. Nakoniec som to vyriešil v program s tím že teplota má odchylku ± 1 stupeň.

m.youtube.com/watch?v=fjJFsl_d7Ak

Teraz robím tretiu riadiacu jednotku a tam požívam tri senzory DS18B20 a max spokojnosť. Toľko moja skúsenosť.

Já jsem nakonec použil DS18B20. Minulý týden jsem zrovna dělal zkoušku na soustavě a nějak se mi to nechce načítat čidla. Když jsem to měl na stole, tak jsem to zkoušel s dvěma čidly hned v konektoru. To fungovalo. Pak jsem to zkusil v reálu se čtyřmi čidly na 3x cca 2metrových kabelech a jedno čidlo je na cca 6m dlouhém kabelu. Použil jsem utp kabely. A nějak mi to nechce čidla hledat, tak nevím, kde je zrada. Jestli v kapacitě kabelů, nebo v softu. Zatím používám knihovnu co jsem našel na netu. Tak jsem to zase zbalil a leží mi to na stolku a zatím jsem se k tomu nedostal. Navíc mám na výstupu pro čerpadla a směšováky stále napětí, i když triaky jsou vyplí. Když jsem to vzal do zkratu přes ampermetr proti nule, tak naměřím cca 0,7mA a při dotyku to jemně brní. Zjistil jsem, že mi to propouští ochranný kondíky za triakem. Tak nevím jestli je nevyhodím.

Používám DS18B20 na snímání venkovní teploty kvůli automatickému zapínání/vypínání kotelny. V podstatě jednoduchý termostat s ATmega8, jedním DS18B20, 2 relátky, 3-místným 7-segmentovým displejem a 4 tlačítky. Mám k čidlu asi 10m dlouhý kabel - klasická kulatá licna 3x1,5mm a chodí to bez problémů. Ale dával jsem tam tenkrát menší hodnotu na pull-up oproti datasheetu - 2k2 místo 4k7. Přesně už si to nemapatuju, přecijen jsem to stavěl před skoro 10 lety.

Co se softu týká, tak jsem trošku ve výhodě, protože jsem si ovládání čidel psal sám. Žádné cizí knihovny, takže přesně vím, co sw dělá a jak to dělá. Maximálně jsem testoval najednou 8 čidel, ale měl jsem je jenom na cca metrových kabelech do hvězdice, ale i s odporem podle datasheetu to chodilo dobře. Ale je fakt, že na větší vzdálenosti (dneska už asi i na těch 10m) bych to spíš řešil malým mcu přímo u teploměru a RS485 komunikace po UTP kabelu i s napájením.

Soft si budu muset napsat asi taky. Teď mám výstup čidla připojen přímo na vstup mcu, ale na desce mám osazenej i převodník (driver) I2C/1-wire, tak to zkusím s ním. Jen se děsím toho vyhledávání romcodu. Ale nevím kdy, blíží se jaro a s tím další etapa rekonstrukce baráku.

Bych se na tyhle sběrnice které jsou nevhodné na dlouhé dráty vykašlal a připojil to RS485 / CAN / WIRELESS …

Doporucujem romcode nevyhladavat na zbernici, ale nacitat ho na inom pine alebo externe a rom kod ulozit do programu alebo eeprom uP. Tak casto sa to nemeni zeby bola potreba a usetris starosti.

Thank you for your sharing :slight_smile: