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 2 měsíci.
Aktuálně je na stránce zobrazeno 15 příspěvků - 31. až 45. (celkem z 113)
  • Autor
    Příspěvky
  • #6366
    johnyhol
    Účastník

    Tak znova:

    #6368
    posjirka
    Účastník

    smart rele od schneideru 🙂
    dalo se to čekat, je spolehlivé, jednoduše programovatelné a vcelku levné.
    Jinak to si můžeš naprogramovat sám pomocí kontaktových schémat …
    Používá se např. Siemens LOGO.
    Jen pozor na na digitální vstup – tady má hodnotu 24V !!!
    Já jsem zatím udělal toto:

    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 16_3_2016
    
    // changelog 16_3_2016
    // uprava podmínky smyček (zrušeno =)
    // posun zpoždění 5s z procesu zapálení na jeho konec
    // doplněna podmínka reakce na termostaty (kotlový/prostorový) v procesu zapálení
    // upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
    // nastavení poruchy a její kvitance tlačítkem na pinu 9
    
    #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
    #define trimr1 14 // nastaveni doby zapaleni  DI14 = A0 pro arduino UNO
    #define tlacitkoKvitance 9 // pin tlačítka kvitance poruchy
    
    long cas=13000;
    int smycka1 = 0; // pomocna smycka - zapálení
    int smycka1max = 600; // max.pomocne smycky - ted jiz nastavitelne trimrem na A1 60-600s
    int smycka2 = 0; // pomocna smycka - udržení hoření
    int smycka2max = 2; // max.pomocne smycky
    int smycka3 = 0; // pomocna smycka - počet pokusu o zapalení
    int smycka3max = 2; // max.pomocne smycky
    int porucha = 0; // proměnná pro záznam poruchy (zatím v režimu 0-1)
    
    void setup() {
    	pinMode(davkovaniPelet, OUTPUT);
    	pinMode(spirala, OUTPUT);
    	pinMode(ventilator, OUTPUT);
    	pinMode(alarm, OUTPUT);
    	pinMode(prostorovyTermostat, INPUT);
    	pinMode(kotlovyTermostat, INPUT);
    	pinMode(fotobunka, INPUT);
    	pinMode(trimr1, INPUT);
    	pinMode(tlacitkoKvitance, INPUT);
    	// vsechno vypni
    	digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    	digitalWrite(spirala, LOW); //vypni žhavení
    	digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    
    void loop() {
    	smycka1max = map(analogRead(trimr1), 0, 1024, 60, 600); // nastaveni dobz zapaleni trimrem na A0
    	if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    		if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    			// start
    			//------
    			digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    			delay(12000); //po dobu 12s
    			digitalWrite(davkovaniPelet, LOW); //potom vypni dávkování
    			digitalWrite(ventilator, HIGH); //zapni ventilátor
    			digitalWrite(spirala, HIGH); //zapni žhavení
    			// proces zapálení
    			//----------------
    			for (smycka3 = 0;  smycka3 < smycka3max; smycka3 ++){
    				for (smycka1 = 0;  smycka1 < smycka1max; smycka1 ++){
    					if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    						if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    							if(digitalRead(fotobunka) == HIGH){	//pokud fotobuňka vidí plamen
    								digitalWrite(spirala, LOW); //vypni žhavení
    								smycka1 = smycka1max; // ukonči smyčku1
    								smycka3 = smycka3max; // ukonči smyčku3
    								
    							}
    						} else {
    							smycka1 = smycka1max; // ukonči smyčku1
    							smycka3 = smycka3max; // ukonči smyčku3
    						}
    					} else {
    						smycka1 = smycka1max; // ukonči smyčku1
    						smycka3 = smycka3max; // ukonči smyčku3
    					}
    					delay(1000);
    				}
    				delay(5000); //čekej 5s
    			}
    			// porucha
    			if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    				if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    					if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    						// tzn. termostaty chteji topit, ale plamen se nezapalil
    						porucha = 1; // nastav poruchu
    					}	
    				}
    			}
    			// udržení hoření
    			//--------------
    			for (smycka2 = 0;  smycka2 < smycka2max; smycka2 ++){
    				smycka2 = 0; // vynuluj smyčku
    				if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    					if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    						if(digitalRead(fotobunka) == HIGH){	//pokud fotobuňka vidí plamen
    							digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    							delay(1000); //počkej 1s
    							digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    							delay(1000); //počkej 1s
    						} else {
    							smycka2 = smycka2max; // ukonči smyčku
    						}
    					} else {
    						smycka2 = smycka2max; // ukonči smyčku
    					}
    				} else {
    					smycka2 = smycka2max; // ukonči smyčku
    				}  
    			}
    			// dohoření
    			//---------
    			digitalWrite(davkovaniPelet, LOW); //vypni dávkování pelet
    			delay(84000); //počkej 84s
    			digitalWrite(ventilator, LOW); //potom vypni ventilátor
    		}
    	}
    	if(porucha > 0 ){	// když je porucha aktivní
    		while (digitalRead(tlacitkoKvitance) == HIGH) {	// zapni alarm a cekej na stisk tlačítka
    			digitalWrite(alarm, HIGH); // zapni alarm
    		}
    		digitalWrite(alarm, LOW); // vypni alarm
    		porucha = 0; // vynuluj poruchu
    	} else {	// jinak 
    		digitalWrite(alarm, LOW); // vypni alarm
    	}
    }
    #6383
    johnyhol
    Účastník

    Ahoj. Tak jsem to podrobil rozsáhlým testům a poznatky jsou následující:
    1) Proces zapalování je zdá se v pořádku, včetně nastavení max. zapalovací doby trimrem (mimochodem super nápad, není to sice moc elegantní – musel jsem si s tím trochu pohrát abych tam dostal těch 10min., ale účel to splní)
    2) Zkoušel jsem simulovat během zapalování vypnutí prostoráku a tady to ještě bude chtít odladit -> po vypnutí to pořád žhaví a točí se ventilátor, ten se po 84s vypne, ale spirála žhaví dál. Hlavně to vůbec nereaguje na fotobuňku.
    3) Zkoušel jsem taky simulovat ztrátu plamene během hoření a tady je to celkem v pořádku – přestane to podávat pelety, počká to 84s, pak vypne ventilátor a začne proces zapalování -> tady by to možná chtělo řešit poruchou, protože plamen by pokud se nezasekne peleta v dopravníku, nebo nedojdou pelety neměl zhasnout nikdy.

    Ještě k tomu Schneideru. Taky jsem si původně myslel, že tomu zkusím aspoň přehrát firmware, ale jenom kabel na připojení k PC stojí cca. 2tis. Tak proto jsem se rozhodl, že to zkusím s Arduinem a aspoň se něco přiučím.

    #6385
    posjirka
    Účastník

    podívám se na to.
    Programovatelné relé jako je ten schneider se dají naprogramovat i bez kabelu.
    Mám na mysli programování pomocí tlačítek. Dobře je to vidět tady:
    http://www.conrad.cz/ridici-releovy-plc-modul-eaton-easy-512-dc-r-274108-ip20-4x-rele-24-v-dc.k198179

    není to u všech modelů ale může to programovat tak, že se odstaneš do ručního programování a pomocí tlačítek tam nadatluješ „kontakové zapojení“.
    Pak to odzkoušíš a je to. Bez kabelů, bez SW, …

    Existuje i podobné vývojové prostředí free a pro mikroprocesory. jmenuje se to LDMICRO:
    http://cq.cx/ladder.pl
    V tom programu si napojíš na jednotlivé linie kontkty tak, že vlastně každý řádek je jedna podmínka. v ní se nachází stav vstupů (i virtuálních) zobrazen jako kontakty (zapni, vypni, hodnota, …) a ukončíš to výstupem nebo virtuální cívkou, která zase může ovládat další linie. Ten SW je včetně simulátoru, takže si to můžeš vyzkoušet dřív než to nahraješ. Výstup může být i pro arduino resp. pro mikročip ATMEGA328 🙂

    To jen pro úplnost. Večer se podívám na ty problémy a zkusím je poopravit.

    #6387
    johnyhol
    Účastník

    OK, díky!
    Ten Schneider právě nemůžu naprogramovat ani ručně, protože to má výrobce zamknutý. Dostanu se pouze do nastavení jednotlivých parametrů. (třeba jak dlouho to má sypat pelety, jakou dobu má běžet ventilátor, nebo jak dlouho má žhavit spirála) Ještě bych měl dotaz. Jak si psal, tak to má digitální vstupy 24V a do jednoho je napojená i fotobuňka. Respektive je napojená do silové jednotky a z ní pak leze do toho vstupu podle intenzity světla co vidí napětí v rozmezí 0-20V. Je to tedy tak v pořádku? Dají se nastavit ty vstupy, že reagují na určitý rozsah (hodnotu) napětí? a těch 24V je maximum co se tam dá poslat? Napadlo mě, jestli nemůže být problém v tý silový jednotce (že třeba dává menší napětí) a ta pak zblbne to program. relé.

    #6388
    posjirka
    Účastník

    Arduino má digitální vstupy a vyýstupy na všech pinech a to v napěťové hladině 5V.
    to je tedy pro něj max. napětí, pro které bylo stavěné. Některé modely jej mají snížené na 3,3V.
    Uno má navíc na 6 pinech analogový vstup pro 0-5V (hodnoty 0-1023). 24V je pro něj moc.
    Musíš jej snížit na 5V (nejčastěji stabilizátorem řady 78xx). To ovšem znamená, že i celá logika vstupů musí být na 5V. Předpokládám, že se vše odvijí od 24V zdroje a kotel je vybaven tzv. bezpotenciálovými kontakty = prostě kontakty ve vzduchu, s ničím nespojené. To je vcelku časté řešení. Pak by nebyl problém překopat to na 5V.
    Výstupy budou v každém případě pomocí relé (opět ze stejného důvodu). Předpokládám že budou místy spínat 230V ze sítě.
    Takže vstup bych dal na 5V logiku a výstupy přes relé.
    Ten foto odpor nevím jak je zapojený. Většinou je to formou napě´tového děliče, takže je někde již zapojený odpor.
    Pak budeš mít hodnoty třeba 0 – 4V (0 – 820 hodnoty převodníku).Nastavit si že plamen je cokoliv > 2V je úplně v pořádku. Nevím jaká je tam tedy logika. Jestli 0V je tma nebo plamen.

    #6389
    johnyhol
    Účastník

    Chápu že bych to musel předělat na 5V když bych tam chtěl dát Arduino tak jak to je momentálně, ale jde mi o to jak se chová stávající zapojení. Konkrétně jestli musí být na konkrétním digitálním vstupu přesně 24V aby to vykonalo požadovanou věc, nebo jestli tam jde nastavit ať to dělá něco v případě že je na vstupu např. > 0V. Protože pokud měřím ostatní vstupy, tak tam je právě těch 24V a ani se to nehne, kdežto u fotobuňky to kolísá. Jinak pokud se nám to podaří rozchodit s Arduinem tak to plánuju stejně komplet předělat (přepojit).

    #6396
    posjirka
    Účastník

    Je taková obecná poučka pro logické obvody.
    Rozděl si napětí zdroje na třetiny = 0 – 8 – 16 – 24V
    Takže 0-8V je logická nula
    16-24V je logická jednička
    8-16V je zakázáné/necitlivé pásmo = hazardní stav

    #6418
    posjirka
    Účastník

    1) Proces zapalování je zdá se v pořádku, včetně nastavení max. zapalovací doby trimrem (mimochodem super nápad, není to sice moc elegantní – musel jsem si s tím trochu pohrát abych tam dostal těch 10min., ale účel to splní)
    Právě že to máš vcelku jednoduché, buď ten pin dáš přímo na zem (1 minuta) nebo na +5V (10 minut)
    2) Zkoušel jsem simulovat během zapalování vypnutí prostoráku a tady to ještě bude chtít odladit -> po vypnutí to pořád žhaví a točí se ventilátor, ten se po 84s vypne, ale spirála žhaví dál. Hlavně to vůbec nereaguje na fotobuňku.
    Opraveno …
    3) Zkoušel jsem taky simulovat ztrátu plamene během hoření a tady je to celkem v pořádku – přestane to podávat pelety, počká to 84s, pak vypne ventilátor a začne proces zapalování -> tady by to možná chtělo řešit poruchou, protože plamen by pokud se nezasekne peleta v dopravníku, nebo nedojdou pelety neměl zhasnout nikdy.
    opraveno + doplněna porucha při ztrátě plamene při hoření.
    Zkusil jsem udělat takovou fintu: kontroluje že tam je plamen a pokud ne počká 1s a zkusí to znovu. Pak vyhlási chybu.

    Podívej se na to a vyzkoušej. Kod dám do dalšího příspěvku:

    #6420
    posjirka
    Účastník
    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 20_3_2016
    
    // changelog
    // v20_3_2016
    // sloučení podmíněných funkcí  
    // vypnuti zhaveni pri rozepnutí termostatů (kotlový nebo prostorový)
    // rozdeleni funkci do vlastnich funkcnich bloku
    // zapojeni seriove komunikace pro odladeni funkci 
    // v16_3_2016
    // uprava podmínky smyček (zrušeno =)
    // posun zpoždění 5s z procesu zapálení na jeho konec
    // doplněna podmínka reakce na termostaty (kotlový/prostorový) v procesu zapálení
    // upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
    // nastavení poruchy a její kvitance tlačítkem na pinu 9
    
    #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
    #define trimr1 14 // nastaveni doby zapaleni  DI14 = A0 pro arduino UNO
    #define tlacitkoKvitance 9 // pin tlačítka kvitance poruchy
    
    long cas=13000;
    int smycka1 = 0; // pomocna smycka - zapálení
    int smycka1max = 600; // max.pomocne smycky - ted jiz nastavitelne trimrem na A1 60-600s
    int smycka2 = 0; // pomocna smycka - udržení hoření
    int smycka2max = 2; // max.pomocne smycky
    int smycka3 = 0; // pomocna smycka - počet pokusu o zapalení
    int smycka3max = 2; // max.pomocne smycky
    int porucha = 0; // proměnná pro záznam poruchy (zatím v režimu 0-1)
    
    void setup() {
    	// nastav seriovou komunikaci na rychlost 9600 bd 
    	Serial.begin(9600);
    	Serial.println("Nastavuji vstupy/vystupy"); // ladici seriova komunikace
    	pinMode(davkovaniPelet, OUTPUT);
    	pinMode(spirala, OUTPUT);
    	pinMode(ventilator, OUTPUT);
    	pinMode(alarm, OUTPUT);
    	pinMode(prostorovyTermostat, INPUT);
    	pinMode(kotlovyTermostat, INPUT);
    	pinMode(fotobunka, INPUT);
    	pinMode(trimr1, INPUT);
    	pinMode(tlacitkoKvitance, INPUT);
    	// vsechno vypni
    	vypniVse();
    }
    
    void loop() {
    	Serial.println("Cekam na sepnuti termostatu ..."); // ladici seriova komunikace
    	smycka1max = map(analogRead(trimr1), 0, 1024, 60, 600); // nastaveni dobz zapaleni trimrem na A0
    	if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    		if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    			// startovaci davka pelet
    			//------------------------
    			zapalovaciDavkaPelet();
    			
    			// proces zapálení
    			//----------------
    			zapaleni();
    			
    			// test poruchy
    			// -----------------
    			testPlamene(); 
    			
    			// udržení hoření
    			//--------------
    			udrzujHoreni();
    			
    			// dohoření
    			//---------
    			dohoreni();
    		}
    	}
    	// kvitence pripadne poruchy
    	//-------------------------------
    	kvitancePoruchy();
    }
    
    void vypniVse() {
    	// funkce vypni vše
    	Serial.println("Vypinam vsechny rele ..."); // ladici seriova komunikace
    	digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    	digitalWrite(spirala, LOW); //vypni žhavení
    	digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    
    void zapalovaciDavkaPelet() {
    	// prvotni davkovani pelet pro zapaleni
    	Serial.println("Davkuji pelety pro zapaleni ..."); // ladici seriova komunikace
    	digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    	delay(12000); //po dobu 12s
    	digitalWrite(davkovaniPelet, LOW); //potom vypni dávkování
    	digitalWrite(ventilator, HIGH); //zapni ventilátor
    	digitalWrite(spirala, HIGH); //zapni žhavení
    }
    
    void zapaleni() {
    	// funkce zapaleni pelet
    	// 3 pokusy o zapálení
    	Serial.println("Spoustim zapaleni ..."); // ladici seriova komunikace
    	for (smycka3 = 0;  smycka3 < smycka3max; smycka3 ++){
    		// smyčka "1-10" minut zapalování
    		for (smycka1 = 0;  smycka1 < smycka1max; smycka1 ++){
    			Serial.print("Pokus "); // ladici seriova komunikace
    			Serial.print(smycka3); // ladici seriova komunikace
    			Serial.print("/"); // ladici seriova komunikace
    			Serial.print(smycka3max); // ladici seriova komunikace
    			Serial.print(" stav: "); // ladici seriova komunikace
    			Serial.print(smycka1); // ladici seriova komunikace
    			Serial.print("s/"); // ladici seriova komunikace
    			Serial.print(smycka1max); // ladici seriova komunikace
    			Serial.println("s "); // ladici seriova komunikace
    			if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){	// prostorovy  nebo  kotlovy termostat vypne
    				digitalWrite(spirala, LOW); //vypni žhavení
    				smycka1 = smycka1max; // ukonči smyčku1
    				smycka3 = smycka3max; // ukonči smyčku3
    				Serial.println("Rozepnuti termostatu ..."); // ladici seriova komunikace
    			}
    			if(digitalRead(fotobunka) == HIGH){	//pokud fotobuňka vidí plamen
    				digitalWrite(spirala, LOW); //vypni žhavení
    				smycka1 = smycka1max; // ukonči smyčku1
    				smycka3 = smycka3max; // ukonči smyčku3	
    				Serial.println(" hori ...");	 // ladici seriova komunikace				
    			} else {
    				Serial.println(" nehori ...");	 // ladici seriova komunikace	
    			}
    			delay(1000);
    		}
    		delay(5000); //čekej 5s
    	}
    }
    
    void testPlamene() {
    	// test plamene
    	Serial.println("Test plamene ...");	 // ladici seriova komunikace
    	if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    		delay(1000); // pocekej jeste 1s a zkus to znovu
    		if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    			if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    				if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    					// tzn. termostaty chteji topit, ale plamen se nezapalil
    					porucha = 1; // nastav poruchu	
    				}	
    			}
    		}
    	}
    	if(porucha == 1){
    		Serial.println("Test plamene ... porucha"); // ladici seriova komunikace
    	} else {
    		Serial.println("Test plamene ... ok"); // ladici seriova komunikace
    	}
    }
    
    void udrzujHoreni() {
    	// funkce udržení hoření
    	Serial.println("Udrzeni horeni ..."); // ladici seriova komunikace
    	for (smycka2 = 0;  smycka2 < smycka2max; smycka2 ++){
    		smycka2 = 0; // vynuluj smyčku
    		if(digitalRead(prostorovyTermostat) == HIGH  && digitalRead(kotlovyTermostat) == HIGH){	// prostorovy + kotlovy termostat je zapnuty
    			if(digitalRead(fotobunka) == HIGH){	//pokud fotobuňka vidí plamen
    				digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    				delay(1000); //počkej 1s
    				digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    				delay(1000); //počkej 1s
    			} else {
    				delay(1000); // pocekej jeste 1s a zkus to znovu
    				if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    					smycka2 = smycka2max; // ukonči smyčku
    					porucha = 1; // nastav poruchu
    				}
    			}
    		} else {
    			smycka2 = smycka2max; // ukonči smyčku
    		}  
    	}
    }
    
    void dohoreni() {
    	// funkce dohoreni
    	Serial.println("Dohoreni ..."); // ladici seriova komunikace
    	digitalWrite(davkovaniPelet, LOW); //vypni dávkování pelet
    	digitalWrite(spirala, LOW); //vypni žhavení - pro jistotu
    	delay(84000); //počkej 84s
    	digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    
    void kvitancePoruchy() {
    	// funkce kvitance poruchy
    	Serial.println("Kvitance poruchy ..."); // ladici seriova komunikace
    	if(porucha > 0 ){	// když je porucha aktivní
    		// vypni vse
    		vypniVse();
    		while (digitalRead(tlacitkoKvitance) == HIGH) {	// zapni alarm a cekej na stisk tlačítka
    			digitalWrite(alarm, HIGH); // zapni alarm
    			Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
    		}
    		Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
    		digitalWrite(alarm, LOW); // vypni alarm
    		porucha = 0; // vynuluj poruchu
    	} else {	// jinak 
    		Serial.println("Zadan porucha  ..."); // ladici seriova komunikace
    		digitalWrite(alarm, LOW); // vypni alarm
    	}
    }

    Je tam pro odladění nastavena komunikace po seriove lince.
    Po odladění jí můžeš smazat/zakomentovat. je dobře označena

    #6421
    johnyhol
    Účastník

    Takhle by to asi šlo, vyzkouším a dám vědět. Jenom u toho nastavení max. zapalovací doby mně to tak jak píšeš nefunguje. Když dám pin přímo na zem tak to běží cca. 3,5min. a když ho dám na 5V tak to běží cca. 21,5min. Takže když jsem dal 10K trimr na střed, tak mi to běželo cca. 12min a proto jsem to musel honit abych tam dostal těch požadovaných 10min.

    #6422
    posjirka
    Účastník

    to je fakt zvláštní. Jak budu mít trochu času a prostředků, tak to zkusím na normálním arduinu. Teď jedu přes simulátor. v příloze je hrubý diagram funkce …

    #6425
    johnyhol
    Účastník

    Zdravím, tak jsem to vyzkoušel a poznatky jsou následující:
    1) test zapálení, rozhoření, hoření, vypnutí jednoho z termostatů, dohoření -> OK
    2) test ztráty plamene během hoření -> tady je něco špatně. Pokud fotobuňka nevidí plamen, tak správně vypne dávkování pelet, ale potom běží čas na dohoření 84s a až pak to začne znovu dávkovat pelety a začne nový pokus o zapálení (respektive dva a pak to jede od znova pořád dokola) a hlavně to nesignalizuje chybu „Alarm“ na výstupu 10 – tady bych to řešil pouze vypnutím dávkování, mohl by ještě doběhnout ventilátor a pak by to zapnulo/ohlásilo poruchu. Jak jsem psal už dřív, tak se tato situace stává pouze když dojdou pelety, proto bych se tím zbytečně moc nezabýval.
    3) test vypnutí termostatu během zapalování -> vypne to spirálu a začne běžet dohoření. Taky bych to trochu poopravil, aby to nechalo žhavit po nastavenou maximální dobu (10min.), nebo pokud to nezapálí a pak aby to dalo řekněme dvě dávky paliva a začal proces dohoření. Tím by se vyřešil případný problém s kopou pelet v komoře hořáku při dalším zapálení/zapnutí termostatu.
    Díky!

    #6429
    posjirka
    Účastník

    zkus jestli se dostaneš sem:

    https://123d.circuits.io/circuits/1638547-regulace-pro-peletkovy-kotel

    Je tam celé zapojení + simulator včetně kodu.
    Autor jsem já, takže jen já mám právo změn, ale můžeš si to vyzkoušet a podívat se jak je co zapojený. Ať zbytečně zasaviníme toto forum …
    Když klikneš na součástku tak se ti ukáže co je to zač/co simuluje …

    #6438
    johnyhol
    Účastník

    Tak jsem na to koukal a mám to přesně tak zapojený jako je to tam. Je zajímavý, že tam ta ztráta plamene funguje tak jak jsem požadoval: vypne dávkování, zapne/ohlásí to poruchu a doběhne ventilátor. Po stisknutí tlačítka to opět normálně naběhne. (tzn. začne proces zapalování) Ty už jsi s tím něco dělal? Jinak ten bod tři z posledního příspěvku je i tam stejný jak píšu v předešlým příspěvku. Jo a jak píšeš, že když kliknu na součástku tak se ukáže popis, tak to nefunguje, ale to nevadí, dá se v tom v pohodě vyznat.

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