Close

posjirka

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 391. až 420. (celkem z 481)
  • Autor
    Příspěvky
  • odpověď na: Řídící jednotka pro peletový kotel #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.

    odpověď na: Podmínka IF s D3231 #6386
    posjirka
    Účastník

    tak ti asi nikdo neodpoví. Zkus nahodit jednoduchý příklad co to má dělat a k tomu dej svůj kod, kam až ses dostal. Určitě ti pak můžeme pomoci. Jinak dostaneš pouze hordu odkazů bez jakékoliv myšlenky.

    odpověď na: Řídící jednotka pro peletový kotel #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.

    posjirka
    Účastník

    děkuji ti za sdílení informací a zkušeností. To je důvod, proč jsou tyto fóra oblíbená a využitelná i pro laiky. Máš problém, vyřešil si jej a dáváš nám řešení do placu. Držím palce a kdybys něco potřeboval ozvi se …

    odpověď na: Řídící jednotka pro peletový kotel #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
    	}
    }
    odpověď na: Řídící jednotka pro peletový kotel #6364
    posjirka
    Účastník

    možná mám někde chybku já. budu si muset nadatvit simulator a zjistit kde je chyba.

    Proč trápit spirálu? Práv když nevíš kolik je tam pelet, tak zkusit zapálit a když nic tak je tam naládovat. ta podmínka vypnutí termostatu po zapálení a následně 1 min. hoření, vypnutí … těch proměnných a podmínek je tam pak vcelku dost.

    asi opustíme tuto myšlenku a necháme to na původní funkci regulace. Opravdu se to pak dá dodělat, jen bych rád udělal 1 fuknční kus a ten pak vylepšoval. kotel a zbytek HW je na tento proces připraven, tak by to neměl být problém. mohl bys sem dát jak ta stávající regulace vypadá? celkem by mě zajímalo co má za signalizaci na sobě a jaké má možnosti nastavení. je dobré vycházet z typového řešení…

    odpověď na: Řídící jednotka pro peletový kotel #6361
    posjirka
    Účastník

    a byl by problém kdyby spirála žhavila třeba 5 minut bze peletek,
    Napadlo mě udělat zapalovací proces ve 3 stupních.
    1, zapni spirálu a zkus do 5 minut zapálit peletky.
    2, nepovedlo se? tak tak 12s naláduj pelekty a zkus to znovu
    3, add.2,
    Když ani te´d nic tak spus´t alarm a ukonči vše,

    odpověď na: Řídící jednotka pro peletový kotel #6359
    posjirka
    Účastník

    je to otázka co je žádáno.
    Dá se udělat proměnná, která bude řešit jednotlivé stupně procesu a když termostat vypne + zapne, tak se vrátí k poslednímu stupni a bude pokračovat dál. V tu chvíli je nutné si říct nějáké podmínky za kterých se má k tomu stupni vrátit a v případě nepslnění podmínek sjet o stupeň dolu.
    Už je to pak o více potřebných informacích :
    – mám v kotli dost peletek na zapálení?
    – nehoří mi už zbytek peltek = je nutené tam cpát 12s plnou dávku pelet?
    – …

    Tohle všechno už moc nesouvisí s programováním, ale s tzv. procesním algoritmem.
    Jeho funckí je popsat všechyn možné a nemožné stavy zařízení a reakce na ně.
    Vracíme se zpět k tomu diagramu co jsem tady dávali do kupy …

    Ve výsledku bych být tebou poslat reakce stvávající regulace a „pouze“ ji zkopíroval. čas na vylepšení je vhodné využit na již fungující platformě.
    jinak se zasekneš na banalitě a celek tím bude trpět…

    Dej si tedy dohromady funkcionalitu stávající regulace v jednotlivých provozních režimech + reakci na nenadálé situace a jdeme na to.
    Základ si myslím, že už máš ….

    odpověď na: Řídící jednotka pro peletový kotel #6357
    posjirka
    Účastník

    add 1, co by to mělo dělat, když se vypne termostat? nezapomeń, že máš nasypané peletky a žhavíš spirálu….
    add 2, to pujde dodělat. 3,5min může být bu´d nesprávnou frekvencí Arduina (mělo s tím prlbémy moje Arduino u verze IDE tuším 1.0.3). Dej si jednoduchý příklad, rozsvi´t LED na 10s, pak 10s zhasni. No a změř si čas stopkama.
    add 3, to else je tam proto, že když vypne termostat kotle, nebo prostorový termostat nebo zmizí plamen, tak automaticky ukončuje „nekonečnou“ smyčku udržení hoření. No a jelikož jsem to nechtel koplikovat tak jsem dal jednu stopku do každé podmínky když se nesplní.

    Tu upravu zvládneš sám, nebo jí tam mám dát?

    odpověď na: Řídící jednotka pro peletový kotel #6354
    posjirka
    Účastník

    je myslím čas začít řešit poruchy.
    Navrhuji použít „registr poruch“.
    uděláš si proměnnou typu byte :
    byte porucha = 0; // registr poruch

    proměnná typu byte má velikost 8 bite. tzn. 8x pozice 1 nebo 0 pro záznam poruchy.
    Můžeš totiž přistupovat ke každému bitu zvlášť a zároveń jej brát jako číslo.
    Myslím to tak, že budeme mít 2 typy poruch:
    – drobné
    – vážné
    Přiřadíme si ke každému typu 4 pozice (nikdy nevíš kolik jich budeš potřebovat)
    takže bite 0 až 3 budou drobné poruchy – třeba zhasnul plamen během hoření
    a bite 4 až 7 budou závažné poruchy – nepodařilo se mi zapálit peletky

    Je to super, že máš kam zapisovat chyby, zároveň si je můžeš zobrazit i třídit.
    Navíc, pokud se nejedná o závažnou chybu můžeš pokračovat dál.

    if(porucha < 8) { 
      // když jsou poruchy pouze drobné pokračuj dál ...
    }
    odpověď na: Řídící jednotka pro peletový kotel #6353
    posjirka
    Účastník

    sakryš, nepodařilo se mi nahrát soubor. no nic vložím ho tedy sem:

    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 15_3_2016_a
    
    #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
    long cas=13000;
    int smycka1 = 0; // pomocna smycka - zapálení
    int smycka1max = 120; // max.pomocne smycky
    int smycka2 = 0; // pomocna smycka - udržení hoření
    int smycka2max = 2; // max.pomocne smycky
    
    void setup() {
      pinMode(davkovaniPelet, OUTPUT);
      pinMode(spirala, OUTPUT);
      pinMode(ventilator, OUTPUT);
      pinMode(alarm, OUTPUT);
      pinMode(prostorovyTermostat, INPUT);
      pinMode(kotlovyTermostat, INPUT);
      pinMode(fotobunka, INPUT);
      // vsechno vypni
      digitalWrite(davkovaniPelet, LOW); //vypni dávkování
      digitalWrite(spirala, LOW); //vypni žhavení
      digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    
    void loop() {
      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 (smycka1 = 0;  smycka1 <= smycka1max; smycka1 ++){
            if(digitalRead(fotobunka) == HIGH){ //pokud fotobuňka vidí plamen
              digitalWrite(spirala, LOW); //vypni žhavení
              delay(5000); //čekej 5s
              smycka1 = smycka1max; // ukonči smyčku
            }
            delay(1000);
          }
          // 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(millis() >= cas+60000){ //délka žhavení 60s po uplynutí 13s od spuštění/resetu
    //  cas = millis();
    //  digitalWrite(spirala, LOW); //po vypršení času vypni žhavení(pokud už není vypnuté)
    //  }
    //  if(digitalRead(fotobunka) == HIGH){ //pokud fotobuňka vidí plamen
    //  digitalWrite(spirala, LOW); //vypni žhavení
    //  delay(5000); //čekej 5s
    //  }
    //  while(digitalRead(fotobunka) == HIGH && digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){ //dokud fotobuňka vidí plamen+prostorový+kotlový termostat jsou zapnuté
    //  digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    //  delay(1000); //počkej 1s
    //  digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    //  delay(1000); //počkej 1s
    //  }
    //  if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){ //pokud vypne prostorový nebo kotlový termostat
    //  digitalWrite(davkovaniPelet, LOW); //vypni dávkování pelet
    //  delay(84000); //počkej 84s
    //  digitalWrite(ventilator, LOW); //potom vypni ventilátor
    //  }
    }
    odpověď na: Řídící jednotka pro peletový kotel #6348
    posjirka
    Účastník

    nejedeš podle diagramu … je potřeba vložit jednu podmínku do druhé a když se poruší tak z ní hend vypadnout.
    Upravil jsem ti to podle se …. nezapomeň na verzování a kod vkládej buď jako soubor (díky moc admine) nebo do párových zanček CODE. Je to to tlačítko vedle UZAVŘÍT ZANČKY.

    odpověď na: Řídící jednotka pro peletový kotel #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 …

    odpověď na: Řídící jednotka pro peletový kotel #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.

    odpověď na: Řídící jednotka pro peletový kotel #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:
    odpověď na: Řídící jednotka pro peletový kotel #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:
    odpověď na: Řídící jednotka pro peletový kotel #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 …

    odpověď na: Řídící jednotka pro peletový kotel #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);
      }
    }
    odpověď na: Ovládání serva #6275
    posjirka
    Účastník

    napadlo mě udělat to pomocí funkce map().
    Mám na mysli:
    aktuální uhel je 10st. chci 30st.
    rozdělíš si to na lineární stupnici o 10 hodnotách a pak z ní uděláš logaritmickou.

    ideově asi takto:

    val = map(value, 10, 30, 1, 10); // (vstupni hodnota, před, po, min.krok, max, krok)
    servo1 = 7*val; // nastav na 70%
    delay(500); // pauza 0.5s
    servo1 = 9*val; // nastav na 90%
    delay(500); // pauza 0.5s
    servo1 = 10*val; // nastav na 100%
    delay(500); // pauza 0.5s

    šlo by to ?

    odpověď na: Meteostanice Žamberk #6272
    posjirka
    Účastník

    tohle jsou krásné projekty. Taky chceme s hasičama postavit malou meteostanici. Tento tvůj projekt je velmi dobrou inspirací. Máš někde na WEBu vizualizaci? Nenašel jsem jí tam, pouze měsíční statistiky. S Exosite jsem ještě nepracoval a nejdřív zvažují co všechno měřit. Neměl jsi tam i měřič srážek ?

    odpověď na: Attiny 85 i2v lcd IDE 1.6.7 #6271
    posjirka
    Účastník

    poradím ti jedinou věc. Kašli na ATTiny.
    Neušetříš nic, budeš se trápit s knihovnami a vymýšlet vymyšlené.
    Taky jsem touto cestou chtěl párkrát jít a vždy jsem se vrátil k ATMEGA328.
    Dost místa na cokoliv, neřešíš složitá připojení, dostatek pinů téměř na cokoliv a dostupné, hromadně používané odzkoušené knihovny.
    Nemluvím ještě o paměti typu RAM, která u ATTINY není nekonečná a rychle se zaplní.

    posjirka
    Účastník

    asi bych šel cestou mít 4 drátové připojení přímo v měřícím přístroji + 1 kanál si vyčlenit na bezdrátové čidlo s možností jej přiřadit ke kanálu č.1 (např.).
    Když máš LCD 2×16 zn tak by to mohlo mít přibližně tyto stavy:

    0123456789012345
    1:1000C 2:1000C
    3:1000C 4:1000C

    V:1000C 2:1000C
    3:1000C 4:1000C

    V:ERROR 2:ERROR
    3:ERROR 4:ERROR

    Obávám se, že při použití 4 bezdrátových čidel budeš mít rozdílené výsledky (napětí baterie) nebo vůbec žádné (jedno čidlo zaruší druhé).
    Máš na výber bud bluetooth (seriová linka), NRF24l01 (SPI na 2,4Ghz), 433MHz (pouze vysílač/přijímač seriové linky)- WIFI ti nabízet nebudu, protože předpokládám, že né vždy budeš mít k dispozici WIFI sí´t, a k ní hesla.
    433MHz není na přesné logované měření, občas se ti zaruší a tím paralela více čidel není ideální. Na meteostanici nevadí, když minutu nedostane správnou teplotu, tady by ti to asi vadilo.
    Bluetooth je super, seriová linka jen ten dosah dost hapruje. 1 zařízení není problém, ale víc jsem nikdy nezkoušel.
    nrF24L01 je bluetooth v jiném kabáťě s vlastní modulací.

    Asi bych ti doporučil 433MHz. To není tak složité, dá se ověřit správnost dat a vše je levné a dostupné. Dosah je závislý na napájení vysílače.

    odpověď na: Ovládání serva #6261
    posjirka
    Účastník

    v podstatě ne, protože neovládáš servo. Přesněji říkáš mu na jaký uhel má přejít, nikoliv jak rychle. To si řídí servo samo. Má vlastně na rotoru potenciometr, který udává aktuální uhel , ty pošleš požadovaný uhel a jeho vlastní elektronika si tyto srovnává svuj uhel s nastaveným….

    Takže ne neovlivníš, leda bys mi postupně měnil uhel. Tedy né dát mu chci 90st. ale chci 85, 88, 89, 90, …s nějákým intervalem třeba 500ms aby měl téměř stopku. Opakovací frekvence signálu je 50 Hz. Doba přejetí serva je závisla na použitém modelu. U profi regulačních servech třeba na aramtury se udává doba přejetí 0-180st. třeba 240s. U tebou použitého serva bys to musel změřit a myslím, že bude závislá na zátěži. Asi ti nezbude nic jiného než experiment ….

    odpověď na: Osvětlení akvaria Led pásky #6258
    posjirka
    Účastník

    koukám, že hexfety výrazně zlevnili. Pamatuju, že stáli přes 200 kč /ks.
    Proto jsem se jim vyhýbal. Za tu cenu je to super a plný souhlas, včetně zapojení.

    odpověď na: Osvětlení akvaria Led pásky #6252
    posjirka
    Účastník

    a po jake době zežloutne/zčerná?n Můžeš sem dát schéma a popis funkcí.
    Možná by to pomohlo v začátcích …

    odpověď na: Osvětlení akvaria Led pásky #6249
    posjirka
    Účastník

    Souhlas, nicméně 60W na 12V = 5A.
    Při rozdělení na 2 sekce po 2,5A bude např.IRF530 využita na 15%.
    Jeho Ugs je 20V i přes to při napětí 5V má max. proud 20A.
    Jeho vnitřní odpor rozhodně nebude 1 Ohm ale i kdyby byly aby to výkonová ztráta 2,5W, na což stačí malý chladič ve tvaru U. Při chladiči 20K/W a okolí teplotě 30 st.C by mělo mít pouzdro teplotu max. 80 st C. To je k jeho max. 150 st.C hodně vzdálené :).
    Stačí při návrhu PCB počítat s malým chladičem, rozdělit to na 2-3 sekce v tu chvíli jde o minimální proud a tudíž i výkonovou ztrátu.

    Tahle potvůrka malá má 13,5K/W
    http://www.gme.cz/v4330n-p620-008

    max. teplota pouzdra při použití 2 sekcí (2 chladiče, 2 tranzistory) bude max. teplota pouzdra cca 63 st.C.
    A to je to drobek 3x2x1 cm …

    odpověď na: Osvětlení akvaria Led pásky #6233
    posjirka
    Účastník

    jak říká kolega, MaR jsou nedostudovaní elektrikáři. Nezvládli víc než 24V 🙂
    měl jsem na mysli toto např.:
    http://2.bp.blogspot.com/-6SwMWGU5bNg/T1KLpEr6d_I/AAAAAAAAAUE/Jq26WyCZavw/s1600/pwm-mosfet.png

    Prostě výkonový tranzistor spíná LED pásek a pomocí PWM (pulzně šířková modulace) ti může regulovat výkon od 0 do 100% po 255 krocích. Linearita není ideální ale mnohem lepší než podobné řízení LED žárovek na 230V.

    Není to složité.

    Tady je základní tutorial jak to funguje:
    https://www.arduino.cc/en/Tutorial/Fade

    Vlastně ti periodicky bude pomalu rozsvěcet a zase zhasínat LED diodu.
    Když dáš delay na třeba 100 ms bude to od 0-100% trvat 25500ms = 25s.
    Tam už uvidíš jak to vypadý v jednotlivých krocích.

    MOSFET nebo obecně FET tranzistor se používá protože má nízký odpor v sepnutém stavu a tak nepotřebuje složité chlazení a nedochází ke zbytečným ztrátám.
    Jen pozor na statickou elektřinu. Ta jej může zničit. Takže nepájet trafopájkou ale mikropájkou, nebo dát do tišťáku patici/svorkovnici a do ní dát nožičky tranzistoru.

    odpověď na: Osvětlení akvaria Led pásky #6230
    posjirka
    Účastník

    z mého pohledu je mnohem efektivnější a hlavně BEZPEČNĚJŠÍ použít zdroj 12V, čímž oddělíme tu nebezpečnou část pro lajka od té bezpežné (stačí zdroj pro LED pásky), ten by napájel jak arduino tak LED. LED pásky bych spínal přes MOSFET tranzistor a máte 255 stupňové spínán, bez nebezpečí dotyku s 230V. Uvědomte si, že jste blízsko akvária a tam není prostor na hrdinství. Radši ať shoří zdroj, než aby to někoho zabilo.

    Není to finančně náročné a přitom relativně BEZPEČNÉ řešení.
    Když to shrnu finančně.
    zdroj 50VA cca 400kč, arduino 250Kč, univers.deska + mosfet cca 100 Kč, Ledpásek 200 Kč (dá se koupit i 5m za 150 Kč ale je to o štěstí). K tomu pár drátků, odpor, … celkem cca 950 kč.

    Pokud nejste elektrikář s pár lety praxe, NEPOUŠTĚJTE SE DO PRÁCE S NEBEZPEČNÝM ELEKTRICKÝM PROUDEM.

    posjirka
    Účastník

    4 ten driver pro termočlánky využívá SPI rozhraní.
    Otázka zní jak přpeínat termočlánky.
    Kdyby s epoužilo 4x tento driver, tak je to vcelku finanční zátěž ale elekgantní přepínání měření.
    Při přepínání pomocí relé, nebo cmos obvodů je to finanční méně náročné ale rozhodně to bude přesnější. Doba na zotavení po přepnutí, atd…
    Na tom samé SPI portu bude i čteška SD karet.
    Nevím ale tuší, že na spi rozhraní je možno navěsit max. 4 zařízení. Je třeba se podívat na možnosti zda exituje „virtuální SPI“.
    Lepší by bylo I2C rozhraní pro termočlánky.
    LCD 2×16 je v pohodě.
    počty pinů:
    LCD 6 pinů
    SD 4 piny
    termočlánky 4 piny (přepínání)
    tlačítka 2 piny
    LED diody 2 piny (šlo by součit s tlačítky).
    RTC modul (I2c) 2 piny – neví jestli bude potřeba
    Celkem mi to vychází na 18-20 pinů.

    Pamě´t na tento program by mohla stačit 23kb.

    Takže podle I/O a paměti by ti mohlo stačit Arduino UNO.
    Když si nejsi jistý kup Arduino MEGA, tam je všeho dost.
    Na Ebay stojí cca 350 kč, u nás 500-1000 kč,
    http://aukro.cz/funduino-mega-2560-r3-kabel-avr-arduino-i6015916346.html
    k tomu rovnou koupit universální PCB:
    http://aukro.cz/prototyp-shield-dps-arduino-mega2560-plosny-spoj-i6020062810.html
    Na něj dáš jak LCD tak tlačítka, led a nejspíš i Drivery.
    256kb paměti bude aboslutně dostačující a nelimitující.
    Kompatk ti už předurčuje i mechanické řešneí , můžeš to napájet čím chceš 7-12V (7-9V doporučeno) nebo přes USB. Přes něj to inaprogrmauješ amůžeš postupně oživovat.

    Jinak termočlánek typu „k“ je vlastně označení charakteristiky anemyslím si, že by se měnil podle výrobců.

    odpověď na: Rozsvícení větší LED #6228
    posjirka
    Účastník

    není zač …

Aktuálně je na stránce zobrazeno 30 příspěvků - 391. až 420. (celkem z 481)