Close

Řídící jednotka pro peletový kotel

Úvodní stránka Fórum Vaše projekty Arduino Řídící jednotka pro peletový kotel

  • Toto téma obsahuje celkem 112 odpovědí. Do diskuze (6 diskutujících) se naposledy zapojil uživatel johnyhol a poslední změna proběhla před 7 roky a 3 měsíci.
Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 113)
  • Autor
    Příspěvky
  • #6045
    johnyhol
    Účastník

    Zdravím všechny. Mám problém s řídící jednotkou u peletového kotle. Nová stojí 5-7 tis. Kč, tak mě napadlo, že bych si jí vyrobil z Arduina a ještě případně přidal další funkce (třeba zapínání kotle na dálku přes internet). Potřeboval bych ale potvrdit, že to pro tuto potřebu půjde zapojit a naprogramovat. Potřeboval bych aby fungovala tato logika(kotel je ovládaný/spínaný normálním prostorovým termostatem):
    1) sepne prostorový termostat -> šnekový podavač kotle začne sypat zapalovací dávku pelet do hořáku – cca. 2min.
    2) po nasypání pelet začne proces zapalování -> sepne zapalovací spirála na dobu cca. 8min.
    3) jakmile jsou pelety zapáleny (fotobuňka/fotorezistor uvidí plamen) -> vypne se spirála a začne proces rozhoření pelet – cca. 50sek.
    4) po uběhnutí doby rozhoření začne normální proces hoření/topení -> 10sek. dávkování pelet – 10sek. stání/hoření (fotobuňka stále hlídá plamen)
    5) když se kotel natopí na cca. 85° -> kotlový termostat vypne hořák a začne proces dohoření pelet – cca. 14min. (běží pouze ventilátor ve spalovací komoře hořáku)
    6) jakmile klesne teplota na kotli pod cca. 75° tak kotlový termostat opět zapne hořák a začne vše znovu od bodu 1) než vše vypne prostorový termostat

    Takže potřebuju do Arduina zapojit:
    – vstup 1: fotobuňka pro hlídání plamene (fotorezistor)
    – vstup 2: kotlový termostat (ovládání hořáku)
    – výstup 1: relé 1 – zapalovací spirála
    – výstup 2: relé 2 – ventilátor ve spalovací komoře hořáku
    – výstup 3: relé 3 – šnekový dopravník pelet
    – výstup 4: relé 4 – případné ovládání kotle přes internet

    Mám doma:
    – Arduino UNO – Ethernet Schield – relé modul 4x relé

    Je to tedy možné takto zprovoznit?

    Díky za reakce

    #6058
    posjirka
    Účastník

    přímo pro toto je arduino dělané. Jen pozor na to co to má vlastně dělat. Program je jen tak chytrý jak ojeho tvůrce. Nejdřív si nakresli smyčku jak to má fungovat a zvýrazni si poruchové stavy. Mám pocit že ta kotel mají něco aby se zastavil šroub když se kousne peletka., pro dálkové ovládání start/stop si vymez 2 digitální vstupy na nepotenciálové kontakty a jedno rele na stav poruchy. Hlavě ten princip udělej do detailu a pamatuj že není vhodné použít delay, protože potřebuješ reakce na poruchy a né čekat 14 min aby zareagovala porucha…

    #6063
    posjirka
    Účastník

    přímo pro toto je arduino dělané. Jen pozor na to co to má vlastně dělat. Program je jen tak chytrý jak ojeho tvůrce. Nejdřív si nakresli smyčku jak to má fungovat a zvýrazni si poruchové stavy. Mám pocit že ta kotel mají něco aby se zastavil šroub když se kousne peletka., pro dálkové ovládání start/stop si vymez 2 digitální vstupy na nepotenciálové kontakty a jedno rele na stav poruchy. Hlavně ten princip udělej do detailu a pamatuj že není vhodné použít delay, protože potřebuješ reakce na poruchy a né čekat 14 min aby zareagovala porucha…

    #6068
    johnyhol
    Účastník

    Tak to je paráda, díky za potvrzení. Teď už jenom někoho kdo by to naprogramovat a je to :-). Jelikož já jsem absolutní začátečník, tak toho budu muset nejdřív hodně načíst. Ohledně toho zastavení šroubovice když se sekne peletka, tak si nejsem jistý myslím, že je tam jenom nějaká spojka, jinak je tam jenom kabel který vede z motoru přímo na relé řídící jednotky. No a to zpoždění 14 min. je potřeba pro dohoření zbytku pelet po vypnutí hořáku. (natopení kotle)

    #6079
    posjirka
    Účastník

    já chápu k čemu je to zpoždění, chtěl jsem jen říct, že když budeš mít porouchovou hlášku o přetopení kotle tak nemůžeš čekat až ti doběhen nějáký čas amusíš hned odstavit kotel.
    Začátek bych viděl tak, že zkusíš blikání LED diody a postupně si vyzkoušíš jednotlivé funkce jako reakce na tlačítko, přes měření teploty.
    Pak si vem cokoliv na tvorbu diagramů a nakresli si co má jak fungovat a jaé to bude mít funkční a poruchové stavy + co s tím při poruše.
    Mít víc času tak ti pomůžu ale už jsem toho nasliboval dost a nestíhám to všechno plnit.

    #6313
    johnyhol
    Účastník

    Ahoj všem. Tak jsem se po dvou týdnech studií a zkoušení pustil do zkušebního zapojení a napsání programu pro řídící jednotku. Zatím jsem chtěl jenom vyzkoušet to, když stlačím tlačítko (prostorový termostat) a pokud bude druhý taky stlačený (kotlový termostat) tak se rozsvítí ledka (šnek začne dávkovat zapalovací dávku pelet). Takže pro začátek taková malá simulace toho, když zapne prostorák tak se spustí šnek a začne dávkovat pelety. Bez tý podmínky druhýho tlačítka to funguje, ale když přidám podmínku tak to pořád funguje stejně, stisk druhýho tlačítka nemá vliv.
    Tady pokus o program:
    [code]
    int cteni;
    int led=6; //zapalovací dávka pelet
    int led2=5; //spirála
    int led3=3; //ventilátor
    int tlacitko=12; //prostorový termostat
    int tlacitko2=2; //kotlový termostat

    void setup() {
    pinMode(led, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(tlacitko, INPUT);
    pinMode(tlacitko2, INPUT);
    }

    void loop() {
    cteni=digitalRead(tlacitko);

    if (tlacitko2 = HIGH){
    digitalWrite(led, cteni);

    }

    [/code]

    Poradíte prosím kde dělám chybu?
    Díky!

    #6314
    posjirka
    Účastník

    co ty na to?

    // regulace automaticky kotel
    // v01
    // autor Johnyhol
    // uprava by JP 2016
    
    // konstanty - pri kompilaci se nahradi v prikazech a nezabiraji misto v pameti
    #define zapalovaciDavka 6 //zapalovací dávka pelet
    #define spirala 5 //spirála
    #define ventilator 3 //ventilátor
    #define prostorovyTermostat 12 //prostorový termostat
    #define kotlovyTermostat 2 //kotlový termostat
    
    void setup() {
      // nastaveni vstupu/vystupu
      pinMode(zapalovaciDavka, OUTPUT);
      pinMode(spirala, OUTPUT);
      pinMode(ventilator, OUTPUT);
      pinMode(prostorovyTermostat, INPUT);
      pinMode(kotlovyTermostat, INPUT);
    }
    
    void loop() {
      // kdyz budou oba termostaty sepnute sepni zapalovaci davku
      if (digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){ 
        digitalWrite(zapalovaciDavka, HIGH);
      }
    }
    #6315
    johnyhol
    Účastník

    Výborně, díky moc!To už je veselejší 🙂 Ještě bych ale potřeboval poradit.
    Tady je další fáze:

    #define davkovaniPelet 6 //dávkování pelet – šnek
    #define spirala 5 //zapalovací spirála
    #define ventilator 3 //ventilátor
    #define alarm 10 //signalizace poruchy
    #define prostorovyTermostat 12 //prostorový termostat
    #define kotlovyTermostat 2 //kotlový termostat
    #define fotobunka 8 //fotobuňka pro kontrolu plamene

    void setup() {
    pinMode(davkovaniPelet, OUTPUT);
    pinMode(spirala, OUTPUT);
    pinMode(ventilator, OUTPUT);
    pinMode(alarm, OUTPUT);
    pinMode(prostorovyTermostat, INPUT);
    pinMode(kotlovyTermostat, INPUT);
    }

    void loop() {
    if (digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){
    digitalWrite(davkovaniPelet, HIGH);
    delay(12000);
    digitalWrite(davkovaniPelet, LOW);
    digitalWrite(ventilator, HIGH);
    digitalWrite(spirala, HIGH);
    delay(60000);
    digitalWrite(spirala, LOW);
    }

    if (digitalRead(fotobunka) == HIGH){
    digitalWrite(spirala, LOW);
    delay(5000);
    digitalWrite(davkovaniPelet, HIGH);
    delay(1000);
    digitalWrite(davkovaniPelet, LOW);
    delay(1000);
    }
    }

    Do prvních podmínek to takhle funguje jak má, ale potom bych potřeboval aby to při zapálení pelet (fotobuňka vidí plamen) vypnulo žhavící spirálu a po pauze 50s začalo dávkování pelet (10s běh dopravníku/10s stání) do doby než vypne kotlový termostat nebo prostorový. (časy v programu jsou 10x menší kvůli testování) Takhle jak to mám, mě to zapne dávkování pelet až vyprší čas (60000) žhavení, dá to jenom jednu dávku a vypne to dávkování.

    #6325
    posjirka
    Účastník

    gratuluju a myslím to vážně. našel jsi chybu a chceš jí řešit, resp. zjistil jsi že ti to nefunguje jak chceš. Teˇ%d přichází ta nudnější část, která je ovšem nejpodstatnější.
    Doporučuju si stáhnout toto:
    http://www.stahuj.centrum.cz/podnikani_a_domacnost/ostatni/diagram-designer/
    Je to program pro tvorbu diagramů. Já zkusím do toho předělat to co máš namyšlené a musíme to odladit.
    Pak jen uděláme progrma podle toho diagramu.
    Je to nutné pro odchytání funcke programu a jeho případných chyb. Dej mi chvliku času …

    #6326
    posjirka
    Účastník

    Tak jsem to hodil „na papír“ a je tam pár nejasností:
    Kdy sepne ventilátor?
    kdy sepne/vypne hořák? Nemáš jej na relé….
    hlídání plamene má digitální nebo analogový výstup?
    V popisu je … zapne kotlový termostat … a dál je řešeno hlídání teploty.
    Jak je hlídaná/měřená teplota?

    Budeš tam mít LCD display? Pak by to chtělo nějáký rozvrh obrazovky ….
    Jak budeš signalizovat poruchu, jak jí budeš kvitovat a co má dělat při poruše?

    určitě to bude chtít na začátku, při úplném zapnutí regulace, pauzu tak 10 minut ať má vše čas vychladnout. Resp. nevíš kdy ti vypnou elektriku, nebo se resetuje čip (přetížení, zasmyčkování ,…) tak ať neudělá nehodu.

    Attachments:
    #6328
    posjirka
    Účastník

    ještě jsem to poupravil, jak si myslím, že to asi funguje i když těch šedých míst tam je pořád hodně.
    Ještě jsem to rozdělil na jednotlivé funkční celky (funkce), které se dají odladit samostatně a následně doplnit do celku. navíc bude lepší přehled o tom co která část dělá….
    I přes to potřebuji vědět odpovědi na předešlé otázky

    Attachments:
    #6330
    johnyhol
    Účastník

    Moooc díky za snahu! Koukám že tě to taky chytlo 🙂
    Takže tady odpovědi:
    – Kdy sepne ventilátor? -> Momentálně spíná hned po startu hořáku, ale to je zbytečný, udělal bych to společně se spirálou
    – kdy sepne/vypne hořák? Nemáš jej na relé…. -> hořák spíná pokud je sepnutý prostorový termostat + kotlový termostat (teplota vody v kotli je menší než cca. 75°)
    – hlídání plamene má digitální nebo analogový výstup? -> analogový (je to fotobuňka – obyčejný fotorezistor), ale pro testování používám digitální (fotobuňku simuluju tlačítkem)
    – V popisu je … zapne kotlový termostat … a dál je řešeno hlídání teploty.
    Jak je hlídaná/měřená teplota? -> teplotu hlídá (řídí) kotlový termostat – pod 75°-> sepnutý, nad 85°-> vypnutý

    – Budeš tam mít LCD display? Pak by to chtělo nějáký rozvrh obrazovky …. -> momentálně ne, ale do budoucna možná bude, uvidím
    – Jak budeš signalizovat poruchu, jak jí budeš kvitovat a co má dělat při poruše? -> porucha se momentálně signalizuje pouze kontrolkou „ALARM“, ale do budoucna bych to chtěl vidět i na internetové stránce, kde bych chtěl kotel (hořák) i vzdáleně ovládat.
    Přikládám upravený diagram…

    Attachments:
    #6332
    posjirka
    Účastník

    mě to ani tak nechytlo, jako ti chci pomoct vyhnout se slepým uličkám.
    Nemám kotel na peletky a ani ho neplánuji …
    Nic méně, zkus se na to podívat sám. Z diagramu zjistíš, co vlastně potřebuješ.
    Funkce zapni, vypni a td jsou pouze digitalWrite(rele,1); nebo 0.
    kosočtverce jsou rozhodovací příkazy If(…).
    Pauza je vlastně delay(…) a smyčka je cyklus For(….);

    máš zadání, návod i princip. Já se jdu věnovat dalším věcem, ale rád ti pomůžu dál. jen čas na ostatní věci se mi trochu smrskl, tak musím pozornost na čas převést tam.
    Zkoušej ptej se, …. věřím že výsledek bude stát za to.

    jen drobná poznámka. Při delay(..); se ti na nastvenosu dobu „uspí“ procesor.
    proto je dobré řešit delší pauzy jäkou smyčka krátkých pauz. Máš totiž mezitím čas otestovat satv zařízení.
    navíc bude určitě nutné zapnout WATCHDOG na procesoru (hlídání zda se nezasekl).
    ten funguej tak, že nastavíš max. timeout a před vypršením tohoto času musíš resetovat jeho proměnnou. když to neuděláš, procesor je považován za zaseknutý a sám se resetuje. Jeho časy ovšem nejsou úplně variabilní a nejdelší timeout je tuším 8s. Při použití delay(..) délky třeba 10 minut ti ani deoběhne a sám procesor se resetuje. ještě můžeš použít externí obvod s delším časem, ale připadá mi to komplikované když máme all-in-one přímo od výrobce. Stačí to jen dobře uchopit.

    #6344
    johnyhol
    Účastník

    Jasně, chápu a ještě jednou děkuju za to cos pro mě do teď udělal. Spoustu věcí jsem si uvědomil(třeba s tím delay že to zastaví procesor-proto mě to pustilo k dalším povelům až po vypršení času) a jak mi vyjde čas (momentálně jsem na mateřský 🙂 – žena je po operaci) tak se na to zase vrhnu. Mám tu pořád hodně neznámých, ještě něco zkusím a pak napíšu výsledek.

    #6346
    posjirka
    Účastník

    ok … hlavně v klidu všechno rozmyslet, pořádně vyzkoušet, uložit novou revizi a pokračovat dál.
    držím palce …

Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 113)
  • Pro reakci na toto téma se musíte přihlásit.