MiK
Vytvořené odpovědi
-
AutorPříspěvky
-
johnyhol
ÚčastníkTakže jsem udělal ten test s LEDkou a časy sedí. Tak nevím…
johnyhol
ÚčastníkTo by asi problém byl. Průměrná doba zapálení je cca. 6min. a proč trápit spirálu bez pelet? už tak jsem jednu po cca. pěti letech měnil. V návodu k hořáku (a taky nastavení z výroby) je doba pro zapálení pelet 7min. a když to nezapálí tak se konají ještě dva kompletní procesy zapalování. (jak jsem psal dřív, tak to znamená hromadu pelet a někdy přetopení kotle) Mně se osvědčilo nastavit čas pro zapálení pelet na 10min. a tak to poměrně spolehlivě fungovalo do doby než začala blbnout řídící jednotka. Takže bych asi vyzkoušel to samý nastavit i tady a zkoušet co to udělá. Případně aby to dalo (jak navrhuješ) po uplynutí času (10min.) ještě jednu menší dávku (12s) a opakovalo pokus o zapálení. Potom už bych to řešil vypnutím a alarmem. Jinak k tomu přerušení po vypnutí prostoráku bych to viděl asi takto:
1)pokud vypne během zapalování, tak pokračuj v procesu zapalování a po zapálení nech proběhnout řekněme 3x proces hoření (3x 10s dávkování + 10s stání), potom vypni dávkování a nech dohořet pelety (84s) a vypni ventilátor – tím se zabezpečí vyhoření zapalovací dávky pelet a zabrání se případnému přetopení kotle při dalším zapnutí
2)pokud vypne během normálního hoření, tak to nechat jednoduše tak jak to je momentálně, vypnout dávkování a nechat dohořet pelety (84s) a potom vypnout ventilátorTakže asi tak, jdu zkusit tu LEDku abych zjistil ten problém s časem(respektive kde se bere těch 3,5min)
posjirka
Účastníka 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,johnyhol
ÚčastníkNo momentálně je to tak jak jsem psal v prvním příspěvku. S tím, že když vypne prostorák, tak to prostě vypne hořák a je jedno jestli to zrovna topí nebo žhaví spirála. Takže když se to snaží zapálit a vypne to, tak tam prostě zbyde halda pelet a při opětovným zapnutí se přisypou další (zapalovací dávka). Což občas nedělá dobrotu, protože je to nastavený tak, že když to napoprvé nezapálí tak se proces opakuje ještě dvakrát a pak už je tam opravdu ohromná halda a někdy se kotel přetopí až vypadne tepelná pojistka. Což není dobrý a myslím že to proto musíme udělat jinak. Takže jsem o tom přemýšlel a myslím že bych to radši udělal tak, že když v průběhu zapalování vypne prostorák, tak to ještě nechá zapálit pelety, nějaký čas to poběží aby dohořely a pak by se to normálně vypnulo. Ještě to pořádně promyslím a ozvu se. Jinak už je to téměř dokonalý!
Díky!posjirka
Účastníkje 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áš ….johnyhol
Účastník1) Momentálně to dělá to, že když vypne prostorový termostat, tak to vypne komplet hořák (tzn. žhavení, šneka a myslím že i ventilátor, ale to si nejsem šur – zjistím) – je to sice na prd, když to pak zase sepne prostorák tak jsou tam rázem dvě zapalovací dávky pelet, ale ty pak nějak vyhoří – zkusím se ještě zamyslet jestli by to nešlo nějak vylepšit.
2) Nechám radši na tobě, nicméně to s tou LEDkou zkusímDíky!
posjirka
Účastníkadd 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?
johnyhol
ÚčastníkTak jsem to tvoje dílo hodil do stroje a je to téměř dokonalý! Seš opravdu jednotka! Jelikož je to pro mně už vyšší dívčí, tak bych potřeboval ještě pár maličkostí:
1) Pokud během procesu zapalování vypnu jeden z termostatů tak se nic neděje, resp. pořád to žhaví a běží ventilátor (ten vypne cca. po 3,5min., ale spirála žhaví dál)
2) Proces zapalování trvá cca. 3,5min., pokud se nezapálí pelety tak se pak všechno opakuje (začne se sypat zapalovací dávka, vypne ventilátor a po zpoždění 12s se zastaví sypání a zapne ventilátor) – nechápu kde se to zpoždění (3,5min.) pořád bere? -> potřeboval bych zpoždění zapalování cca. 10min
3) Nechápu proč je na konci smyčky „udržení hoření“ 3x po sobě „else“?Zatím díky moc!
posjirka
Účastníkje 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 peletkyJe 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 ... }
posjirka
Účastníksakryš, 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 // } }
johnyhol
ÚčastníkTen kód jsem zkoušel vkládat do „CODE“, ale bylo to stejný jako když jsem to dal bez nich. Nějak mně to blbne, vždycky když odesílám příspěvek tak se mi to na dlouhou dobu sekne. Jinak už jsem byl z toho zoufalej, tak jsem zkoušel všechny možný kombinace až z toho vzniklo to co jsem sem vložil.
posjirka
Účastníknejedeš 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.johnyhol
ÚčastníkTak si myslím, že jsem se právě dostal do tý slepý uličky a nevím jak ven. Momentálně to prakticky funguje jak bych chtěl, až na to, že když doběhne celý proces (rozpojím kotlový termostat, vypne dávkování, počká 84s a vypne ventilátor) tak když chci zapnout nový (zapnu kotlový termostat) tak to už nic nedělá. Ještě je problém, že na začátku by to po 12s mělo vypnout dávkování pelet, ale to běží pořád, dokud nesimuluju plamen. Pak to přestane dávkovat, vypne to správně spirálu a začne dávkování v nastaveným intervalu (1s/1s). Taky jsem řešil to zpoždění u žhavení a zatím jsem to udělal přes funkci millis, ale to bude do budoucna taky špatně, protože to funguje jenom po startu/resetu a já budu muset mít Arduino asi pořád zapnutý.
Tady je zatím poslední pokus:
#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;void setup() {
pinMode(davkovaniPelet, OUTPUT);
pinMode(spirala, OUTPUT);
pinMode(ventilator, OUTPUT);
pinMode(alarm, OUTPUT);
pinMode(prostorovyTermostat, INPUT);
pinMode(kotlovyTermostat, INPUT);
pinMode(fotobunka, INPUT);
}void loop() {
if(digitalRead(prostorovyTermostat) == HIGH && digitalRead(kotlovyTermostat) == HIGH){ //pokud je prostorový+kotlový termostat zapnutý
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í
}
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
}
}posjirka
Účastníkok … hlavně v klidu všechno rozmyslet, pořádně vyzkoušet, uložit novou revizi a pokračovat dál.
držím palce …johnyhol
ÚčastníkJasně, 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.
posjirka
Účastníkmě 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.johnyhol
ÚčastníkMoooc 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:
posjirka
Účastníkješ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ázkyAttachments:
posjirka
ÚčastníkTak 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:
posjirka
Účastníkgratuluju 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 …johnyhol
ÚčastníkVý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 plamenevoid 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í.
posjirka
Účastníkco 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); } }
johnyhol
ÚčastníkAhoj 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ý termostatvoid 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!antena
ÚčastníkDík za radu, já jsem původně touto cestou chtěl jít, nicméně pro tuto konstrukci potřebuji jeden digi výstupní pin, jeden analog vstupní a dva na i2c, přijde mi to jako plýtvání,
protože i kód zabere pár řádků. S ATMEGA328 by to bylo z tohoto pohledu knihoven jednodušší, nicméně pro jednoduchá zapojení jsou ATTiny dostačující a to je důvod dotazu.posjirka
Účastníknapadlo 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 ?
Diego
ÚčastníkDiky. Mam tam odkaz Aktualni data z meteostanice. Nebo mrkni sem http://elektronika2011.cz/pocasi
Srazkomer sem tam mel ale nakonec sem ho zrusil kuli chybamposjirka
Účastníktohle 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 ?
posjirka
Účastníkporadí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í.Zbyšek Voda
ÚčastníkTo vypadá dobře:)
Nimbus
ÚčastníkPřesně to mi taky napadlo 🙂 Díky, jsem o něco chytřejší
-
AutorPříspěvky