Osvětlení akvaria Led pásky
Úvodní stránka › Fórum › Vaše projekty › Arduino › Osvětlení akvaria Led pásky
- Toto téma obsahuje celkem 62 odpovědí. Do diskuze (9 diskutujících) se naposledy zapojil uživatel Nasranek a poslední změna proběhla před 8 roky a 1 měsícem.
-
AutorPříspěvky
-
17.11.2015 v 21:58 #5192vnouzirozbijskloÚčastník
Zdravim a zároveň prosím o radu.
Na úvod bych chtěl uvést, že nejsem žádný programátor, a tohle je můj první projekt, takže prosím o schovívavost.Cílem bylo vytvoření řízení osvětlení akvaria pomocí arduina a časem řízeným DS 3231.
Nastavení času rozvícení a zhasnutí. Přes tranzistor pak postupné stmívání a rozednívání. V tom nebyl zas takový problém. V 9 hodin by se akva rozednilo během 15 minut a od 21 by zase postupně zhaslo.
Problém nastal, když jsem si chtěl pojistit případ vypnutí proudu a restart. Jakmile by totiž bylo více než 9, akva by se nerozsvítilo. Snažil jsem se to vyřešit složenými podmínkami, ale stejně to nefunguje tak jak má. OD 9-21 svítí bez problémů. při vypnutí proudu se opet rozední v jakoukoliv denní dobu a v 21 postupně zhasne. po zhasnutí ale dojde opět k plnému rozsvícení a pozvolnému zhasínání . Dokola. Určitě to jen jenom prkotina ale už i moje mysl se zacyklila:)díky za pomoc
přikládám kod:
`#include „Wire.h“
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}
int svetlo1 = 9;
int sviti = 0;
int den = 0;
int jas = 0;byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
void setup()
{Wire.begin();
Serial.begin(9600);
// set the initial time here:
// DS3231 seconds, minutes, hours, day, date, month, year
//setDS3231time(30,27,19,7,15,11,15);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=pondeli, 7=nedele)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());}
void displayTime()
{
;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
// send it to the serial monitor
Serial.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
Serial.print(„:“);
if (minute<10)
{
Serial.print(„0“);
}
Serial.print(minute, DEC);
Serial.print(„:“);
if (second<10)
{
Serial.print(„0″);
}
Serial.print(second, DEC);
Serial.print(“ „);
Serial.print(dayOfMonth, DEC);
Serial.print(„/“);
Serial.print(month, DEC);
Serial.print(„/“);
Serial.print(year, DEC);
Serial.print(“ Day of week: „);
switch(dayOfWeek){
case 7:
Serial.println(„nedele“);
break;
case 1:
Serial.println(„pondeli“);
break;
case 2:
Serial.println(„utery“);
break;
case 3:
Serial.println(„streda“);
break;
case 4:
Serial.println(„ctvrtek“);
break;
case 5:
Serial.println(„patek“);
break;
case 6:
Serial.println(„sobota“);
break;
}
}
void loop()
{pinMode(svetlo1,OUTPUT);
displayTime(); // display the real-time clock data on the Serial Monitor,
delay(1000); // every secondbyte s, m, h, dvt, dvm, mesic, r;
readDS3231time(&s, &m, &h, &dvt, &dvm, &mesic, &r);if (h >= 9 && h < 21) den = 1; // nastaveni intervalu sviceni
else den = 0;
for (byte brightness = 0; den == 1 && sviti == 0 && brightness < 255; brightness ++) {
analogWrite(svetlo1, brightness);
jas = brightness;
delay(3500);
}
if(jas > 0) sviti = 1; // zjisteni stavu osvetlenifor (byte brightness = 255; den == 0 && sviti == 1 && brightness >= 0; brightness –) {
analogWrite(svetlo1, brightness);
jas = brightness;
delay(3500);}
if(jas < 1) sviti = 0;}
18.11.2015 v 21:19 #5229vnouzirozbijskloÚčastníkzměna void loop. ted to vypada slibně…opět
{
pinMode(svetlo1,OUTPUT);
displayTime(); // display the real-time clock data on the Serial Monitor,
delay(1000); // every secondbyte s, m, h, dvt, dvm, mesic, r;
readDS3231time(&s, &m, &h, &dvt, &dvm, &mesic, &r);if (h >= 9 && h < 21) den = 1; // nastaveni intervalu sviceni
else den = 0;
for (byte brightness = 0; den == 1 && sviti == 0 && brightness < 255; brightness ++) {
analogWrite(svetlo1, brightness);
if(brightness == 255) sviti = 1;
delay(3500);
}for (byte brightness = 255; den == 0 && sviti == 1 && brightness > 0; brightness –) {
analogWrite(svetlo1, brightness);
if(brightness == 0) sviti = 0;
delay(3500);}}
6.1.2016 v 18:22 #5676dragowasabiÚčastníkZdravím. Mám na vás dotaz. Přibližně něco podobného bych chtěl vytvořit i ve svém akváriu-teráriu. Moje představa je taková, ze mám tři žárovky a ty by se mi v průběhu dne postupně rozsvěcovaly a zhasinaly. Tzn., že ráno se postupně rozsvítí první – krajní žárovka, v poledne se postupně rozsvítí druhá – prostřední žárovka a ta první se bude postupně zhasínat a to samé se bude dít i s třetí žárovkou navečer s tím, ze pak postupně zhasne. Tím bych chtěl vytvořit simulaci postupu slunce. Mé dotazy jsou takové: Lze pro arduino použít klasické žárovky na 220V a další je takový, jestli by jste mi prozradil, co všechno bych potřeboval za komponenty. Děkuji za odpověď.
6.1.2016 v 18:28 #5677Zbyšek VodaÚčastníkDobrý den, to by mělo jít.
Budete potřebovat ke každé žárovce SSR relé (elektromechanické by rozhodně nezvládlo plynulou regulaci jasu) a nějaký zdroj času (ať už například RTC, nebo modul pro připojení ke zdroji času přes internet – ESP8266/Ethernet shield…).6.1.2016 v 18:45 #5678dragowasabiÚčastníkDěkuji za rychlou odpověď. Nevíte náhodou jaký typ toho rele a kde by se dal koupit. Popřípadě bych byl rád za podrobnější popis zapojeni všech součástek. Pokud je to možné. Děkuji
6.1.2016 v 19:50 #5679Zbyšek VodaÚčastníkJe celá řada různých relé: http://www.gme.cz/products/search?term=ssr
Zapojení je popsáno v dokumentaci každého.Nakonec asi nejjednodušší by ale bylo koupit nějaký již hodový modul – například tento: http://www.sainsmart.com/sainsmart-4-channel-5v-solid-state-relay-module-board-omron-ssr-avr-dsp-arduino.html
6.1.2016 v 20:30 #5680dragowasabiÚčastníkPokud to chápu správně, tak by mi stačil ten modul z druhého odkazu na ty tři žárovky a ještě by mi zbyl jeden výstup k dobru, třeba pro noční svícení. A měl bych ještě dotaz, jaký typ arduina byste mi doporučil? Mam v planu dodat do akvária ještě vodotěsný teploměr a k tomu displej.
6.1.2016 v 23:45 #5681Zbyšek VodaÚčastníkNa to by mělo stačit i UNO.
Chcete-li mít ale jistotu, sáhněte po Mega a neuděláte chybu.
Obzvlášť pokud použijete LCD s více piny (a ne například s I2C řadičem, kterému stačí tři piny).7.1.2016 v 1:00 #5682dragowasabiÚčastníkDobře, takže budu potřebovat ardiono, rtc modul, modul s relé, eventuelně teploměr a displej. Mělo by to být vše nebo mi chybí ještě nějaké součástky? Každopádně vám děkuji za vaší ochotu a čas. Docela bych vás někdy chtěl vidět při praci. To musí byt koncert
7.1.2016 v 10:07 #5683dragowasabiÚčastníkDobrý den. trochu jsem se porozhlédl po netu a našel jsem toto video:
je k tomu i odkaz na koupení toho ovládacího modulu na ebayi, takže jsem hledal i vetší a našel jsem toto:
Jen nevím jestli tento relé dělá to samé jako ten, co jste mi doporučil vy a který je levnější.
Respektive mohl bych použít třeba tento relé modul?Děkuji za odpověď
7.1.2016 v 10:37 #5684Zbyšek VodaÚčastníkDobrý den,
ten poslední modul (http://www.ebay.com/itm/5V-4-Channel-LED-Indicator-Light-PLC-Relay-Module-Circuit-Board-Blue-for-Arduino-/321493316614?hash=item4ada7eb406:g:-RoAAOSwLVZVlcaA) má na sobě již zmiňovaná mechanická relé – takže u nich byste mohl ovládat maximálně vypnuto-zapnuto.Ten předchozí modul by měl jít použít (http://www.ebay.com/itm/4CH-AC-LED-Light-Dimmer-Module-Controller-Board-ARDUINO-RASPBERRY-Compatible/121752461158?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20131003132420%26meid%3D24efa532ac8b4d51b2ccc92ea32c4c1d%26pid%3D100005%26rk%3D3%26rkt%3D5%26sd%3D111764492631).
Budete potřebovat ArdUino, RTC modul, modul s relé, teploměr a displej
Dále také potenciometr k displeji (k nastavení kontrastu – ne u všech je ale potřeba). Potom možná pár rezistorů – třeba u 1-Wire sběrnice, kterou se připojuje teploměr DS18B20 potřebujete 4.7 kohm rezistor. Komponenty kolem ale hodně závisí na použitém typu modulu/displeje/teploměru…7.1.2016 v 11:19 #5685dragowasabiÚčastníkDěkuji za vyčerpávající opověď. Porozhlédnu se po netu na nějaké slušné ceny. Teď už si jen hrát s programováním. to bude také zážitek.
7.1.2016 v 11:28 #5686Zbyšek VodaÚčastníkNení zač, držím palce 🙂
7.1.2016 v 17:21 #5704dragowasabiÚčastníkZdravím. Bavil jsem se s elektrikáři v práci a ti jsou na pochybách ohledně toho modulu s relé. Tvrdí,že umí jen zapínat a vypínat,ale ne stmivat a rozednivat. Doporučili mi spse tyristory. Tak teď opravdu nevím.:/
9.1.2016 v 21:59 #5709Zbyšek VodaÚčastníkDobrý den,
bavíme-li se o tomto modulu: http://www.ebay.com/itm/4CH-AC-LED-Light-Dimmer-Module-Controller-Board-ARDUINO-RASPBERRY-Compatible/121752461158?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20131003132420%26meid%3D24efa532ac8b4d51b2ccc92ea32c4c1d%26pid%3D100005%26rk%3D3%26rkt%3D5%26sd%3D111764492631Z jeho popisu mi vyplývá, že by měl stmívání umět. Když se ale dívám na videa s ukázkami, vypadá to spíše na opak. Je to zmatečné.
Každopádně… pokud máte na blízku někoho, kdo se elektronikou živí, rozhodně bych dal spíše na jeho radu 🙂 Já jsem taky jenom amatér!
Přes tyristory to také určitě půjde!
9.1.2016 v 22:09 #5710dragowasabiÚčastníkDobrý den. co jsem se bavil s elektrikáři v práci, tak mi říkali, že tento modul by to umět měl, protože tam má dodaný triaky, který právě dokážou regulovat tok napětí a tudíž i stmívání/rozednívání. takže toto mám již vyřešené. horší to bude s programem. z prvního příspěvku tady ve vlákně si jakžtakž dokážu odvodit kód pro časové spínání, ale nevím přes jaké příkazy zprovoznit změnu jasu přes tyto moduly
2.3.2016 v 16:53 #6222BreakerÚčastníkDobrý den, mám v plánu osvětlení akvária led pásky a chtěl bych je řídin pomocí arduina – rozednívání , stmívání. Problem je v tom že jsem uplný začátečník a nevím si vůbec rady jak začít. Na osvětlení akvaria použiju asi 60w, ale takový příkon asi pwm výstup z arduina nezvládne. Proto bych chtěl pásek rozdělit na cca 5 sekcí a jen jednu z nich ovládat přes pwm. Ostatní by se připojovaly pomocí relátek.
Potřebuji poradit ohledně typu arduina, které pro mě bude nejvhodnější, dále jaký vybrat obvod realného času a lcd display. Má představa je taková že bych mohl pomocí displaye a tlačítek nastavovat který den se má v kolik hodin rozsvěcet a zhasínat, abych v případě potřeby nemusel upravovat samotný program.
Uvítám jakoukoliv radu.3.3.2016 v 17:20 #6230posjirkaÚčastníkz 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.
3.3.2016 v 22:24 #6232BreakerÚčastníkDobrý den, děkuji za odpověď. Jsem elektrikář ale se slaboproudem nemám moc velké zkušenosti. S mosfet tranzistory jsem nikdy nepracoval. Co se týče arduina tak jsem absolutní začátečník, zvládnu čtení analogové hodnoty digitální spínání pinů, výppis údajů na display a další drobnosti. V arduinu vidím velký potenciál a tak bych ho chtěl využít pro to stmívání akvária jen si nevím rady jak přesně na to. Jak přesně by to fungovalo s tím mosfetem ? Pokud by bylo možné plynule regulovat jak celého osvětlení zároveň (60w) bylo by to super. Prosím o rozvedení myšlenky pro amatéra. Děkuji
4.3.2016 v 8:48 #6233posjirkaÚčastníkjak ří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.pngProstě 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/FadeVlastně 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.4.3.2016 v 12:32 #6243Jarda_1Účastníkale pozor na výběr Mosfetu, obvzláště při zapojení dle schématu z předchozího příspěvku, Mosfet potřebuje k plnému otevření a k tomu nízkému odporu nějaké napětí na Gate, toto napětí lze vyčíst z datasheetu příslušného tranzistoru, a většinou hodnoty bývájí udávány při napětí na Gate kolem 10V. Z výstupu PWM u Arduina bude maximálně 5V a dle uvedeného schématu ho navíc snížíte napěťovým děličem, takže důsledně vybrat Mosfet nebo zapojení upravit.
4.3.2016 v 15:28 #6249posjirkaÚčastníkSouhlas, 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-008max. 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 …4.3.2016 v 18:06 #6251vnouzirozbijskloÚčastníkJá osobně to mám tak, že arduinem přes PWM řídím dva tranzistory, na něj jsou napojený 12V zdroj a led pásky celkem asi 2x 5 metrů. Doporučuji vysoce svítivé led pásky s čipy 5630.
Nezapomenout je dostatečně chladit a jestli máte na akvátku krycí skla, určite bych nebral pásek zalitý do silikonu. Teplotou zežloutně až zčerná.4.3.2016 v 19:17 #6252posjirkaÚčastníka 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 …4.3.2016 v 20:16 #6254Jarda_1ÚčastníkTo: posjirka
já bych tento tranzistor nepoužil a když tak s předřadným tranzistorem, cena bude menší než uvedený chladič který nebude potřeba a ušetří se i místo na desce.
Určitě bych takové experimenty nedoporučoval začátečníkům, tranzistor nebude plně otevřen, bude se zbytečně hřát.
A nevidím žádný důvod proč nevěnovat pozornost správnému výběru tranzistoru (označení : Logic-Level Gate Drive). Z dostupných s velkou rezervou např: IRL3803, v GME za 40,-Kč4.3.2016 v 20:31 #6255Jarda_1ÚčastníkZapojení
(oba odpory lze vynechat)Attachments:
4.3.2016 v 21:02 #6258posjirkaÚčastníkkouká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í.4.3.2016 v 21:51 #6259Jarda_1Účastníkano, ceny jsou super a výběr velký, celý pásek lze spínat bez problémů jedním tranzistorem
2.6.2016 v 7:58 #7196letakpÚčastníkDobrý den. Jsem akvarista amatér a toto téma mně chytlo a chtěl jsem vyzkoušet to stmívání a rozednívání LED pásků. Proto jsem otevřel toto téma a nahrál program do programu a projel test. Při tomto jsem zjistil pár drobných chybiček, ty jsem opravil a program mi v seriovém monitoru nezobrazuje aktuální čas a datum. vypisuje mi pouze tuto hlášku každou vteřinu: 45:165:85 165/165/165 Day of week:
Chtěl jsem se zeptat, co mám špatně. Mám RTC DS3231 a klon NHduino UNO. Děkuji za odpověď.
Pavel2.6.2016 v 11:44 #7200posjirkaÚčastníkMožná to nebyly chybičky ale jiná verze knihovny.
Pošli sem tvuj program a uvidíme. -
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.