• Most regisztráltál, de nem tudsz privát üzenetet küldeni?

    Kérjük olvasd el milyen korlátozások vonatkoznak rád, miután regisztrációd jóvá lett hagyva.
    Regisztrációs korlátozások

Építsünk akváriumvezérlőt Arduino-ból

Üdv!
Van egy LED-es világításom amit eddig Tc420-al vezéreltem, de valami már nem igazán működik vele jól, mert a tápegység elromlik tőle. Először csak zúgott aztan tönkre is tette, raktam be új tápot, de azzal is zúg mintha túl terhelné(20A a tápegység a lámpa pedig ~7A fogyaszt) szóval kikötöttem a rendszerből és most egy sima időkapcsolóra van kötve és nem zúg semmi. Most ezt szeretném kiváltani Arduino-val és ezzel szeretném megoldani a növény táp(3) adagolást, CO2 vezérlést és a szűrők(2) lekapcsolását esetéskor x időre gombnyokassal. Segítséget szeretnék kérni hogy miket kellene vennem? Régen tanultam programozast, de az keves lesz ide. Majd az unalmas téli estéket erre szeretném rászánni hogy felelevenítsem a dolgokat és megtanuljam jobban, csak addigra szeretném hogy meglegyenek a dolgok.
Köszönöm!

Szia!
Szerintem csak egy picit kellene visszaolvasnod. :(
Kellenei fog: Arduino UNO vagy MEGA (ha bővíteni akarod később) vagy DUE (ha gyorsabb, erősebb rendszerre vágysz), 4 vagy 8 csatornás alap nyitott relé modul (millió féle van, én 5V optoisolált szilárdtest relét ajánlanék), 2 csatornás alap zárt relé modul (szűrőknek), nyomógomb, ellenálás, némi vezeték, tápadagoláshoz pedig perisztaltikus pumpák. Tápellátáshoz 12V táp, DC-DC LM2596 konverter (9V ardunak), 5V táp ha 5V-os reléket használsz. Kell még DS 3231 óra modul és egy kijelző (16x2 vagy 20x4 i2C LCD, esetleg nextion - én ezt preferálom mostanság), de ez nem feltétel.
Ha a világítás is erről megy akkor kelleni fog még valamilyen mos-fet modul is (ha fényerőt akarsz szabályozni), csatornák száma tőled függ (IRF 520). Ha csak ki-be kapcsolgatod akkor ezekhez is számolj csatornánként egy-egy relét és akkor mos-fet nem kell. Ha a világításod fényerejének maxát is be akarod lőni és nem érintős (nextion) kijelzőt használsz, akkor kelleni fog egy(vagy több) potméter vagy rotary encoder is (ez már programozás függő lesz).
Ha az értékeket át is akarod írni menet közben és nem érintős(nextion) kijelzőt használsz, akkor több nyomógombra is szükséged lehet (vagy olyan gombsorral szerelt lcd-re).
Mindent beszerezhetsz kínai barátainktól az E vagy A betűs aukciós oldalakról a hazai árak töredékéért.
 
Utoljára módosított:
Üdv!
Van egy LED-es világításom amit eddig Tc420-al vezéreltem, de valami már nem igazán működik vele jól, mert a tápegység elromlik tőle. Először csak zúgott aztan tönkre is tette, raktam be új tápot, de azzal is zúg mintha túl terhelné(20A a tápegység a lámpa pedig ~7A fogyaszt) szóval kikötöttem a rendszerből és most egy sima időkapcsolóra van kötve és nem zúg semmi.
Ja a tápod valszeg FET - el is zúgni fog, de ezt majd az elektromosságban jártasabbak megerősítik vagy cáfolják. De ha jól emlékszem a ledszalagos topikban a közelmúltban szó is volt róla hogy miért van ez a jelenség.
 
Ja a tápod valszeg FET - el is zúgni fog, de ezt majd az elektromosságban jártasabbak megerősítik vagy cáfolják. De ha jól emlékszem a ledszalagos topikban a közelmúltban szó is volt róla hogy miért van ez a jelenség.
Köszönöm a segítséget!
Az a baj hogy félek visszarakni a vezérlőt, mert akkor egyből zúg a táp, vezérlő nélkül pedig semmi hangja amíg ~13v alatt vagyok. Fél évig semmi baja nem volt aztán elkezdett zúgni/sercegni és két nap múlva tönkre is ment a táp, aztán az újjal is zúgott és nem erőltettem megint, valami nem jó a vezérlővel szerintem.
Tetszik ez a nextionos dolog, bele kell mélyülnöm a dolgokba, mert így a LED vezérléssel megbonyolítva már nem tűnik olyan "egyszerűnek". Csak tápozás, szűrő megállítása még annyira nem tűnik komplikáltnak, vagy csak nem látom át eléggé a dolgokat.
 
Köszönöm a segítséget!
Az a baj hogy félek visszarakni a vezérlőt, mert akkor egyből zúg a táp, vezérlő nélkül pedig semmi hangja amíg ~13v alatt vagyok. Fél évig semmi baja nem volt aztán elkezdett zúgni/sercegni és két nap múlva tönkre is ment a táp, aztán az újjal is zúgott és nem erőltettem megint, valami nem jó a vezérlővel szerintem.
Tetszik ez a nextionos dolog, bele kell mélyülnöm a dolgokba, mert így a LED vezérléssel megbonyolítva már nem tűnik olyan "egyszerűnek". Csak tápozás, szűrő megállítása még annyira nem tűnik komplikáltnak, vagy csak nem látom át eléggé a dolgokat.

A led vezérlés is épp olyan egyszerű a nextionnal mint bármelyik másik funkcióé. A nextiontól az ardu csak kiinduló adatokat kap (fel/lefutás időtartama, kezdés, befejezés időpontja, max fényerő, stb), a lényeget az ardu végzi :). Ha színkeverés sémákat is akarsz menteni, akkor javasolt lehet még esetleg egy eeprom ilesztése is a rendszerbe.

Visszatérve az alkatrészlistához, most vettem észre, hogy a két szűrőhöz nem feltétlen kell 2 relé, mert valszeg az etetés miatt mind a kettőt le akarod majd kapcsolni egyszerre, így felesleges külön kezelni őket.

Lassan részesedést kellene kérnem, mert lehet növekednek a nextion eladások.... ;)
 
Visszatérve az alkatrészlistához, most vettem észre, hogy a két szűrőhöz nem feltétlen kell 2 relé, mert valszeg az etetés miatt mind a kettőt le akarod majd kapcsolni egyszerre, így felesleges külön kezelni őket.

Nálam is egy relé van a két szürőre, pontosabban arra a konnektorra amibe be vannak dugva, illetve még a külső fűtőt is erről megy. Viszont ide szerintem jobb választás egy hagyományos kétállású relé mint egy SSR. Nálam is így van, és a szűrők az alapban zárt oldalra vannak kötve, ezért a reléket elég csak arra az időre kapcsolni amíg az etetni szeretnénk.
Említetted még a DUE-t, én nem javasolnám mert 3 voltos a működési feszültsége, és csak bonyolítaná a dolgot ;)
 
Nálam is egy relé van a két szürőre, pontosabban arra a konnektorra amibe be vannak dugva, illetve még a külső fűtőt is erről megy. Viszont ide szerintem jobb választás egy hagyományos kétállású relé mint egy SSR. Nálam is így van, és a szűrők az alapban zárt oldalra vannak kötve, ezért a reléket elég csak arra az időre kapcsolni amíg az etetni szeretnénk.
Említetted még a DUE-t, én nem javasolnám mert 3 voltos a működési feszültsége, és csak bonyolítaná a dolgot ;)

SSR ből is van alap zárt (Low Level Trigger), azt használok én is, így fenntartom a javaslatom :).
A DUE miatt egykicsit jobban oda kell figyelni (sok könyvtár nem szereti), illetve ha valaki azt használ (ahogy én is), akkor azokhoz a panelekhez, melyek nem mennek 3,3V-ról jelszintillesztőt kell használni. Jelenleg még a saját vezérlőm PH szondájával küzdök, az valahogy nem akar még összeállni (MEGA-val tök jól ment, DUE-val meg leginkább sehogy).
 
Sziasztok,

8520as ledszalagot próbálnék dimmelni FET-tel.
Ha jól tudom pwm jel 0-250ig terjed. Ha beállítom 250-re (100%) akkor 12V van a kimeneten. Elvileg ha 125-re állítom (50%) akkor 6V-nak kellene lennie. Ehelyett 7,70V van.
Akkor most, hogy is van ez?

A segítséget köszönöm elöre is.
 
Sziasztok,

8520as ledszalagot próbálnék dimmelni FET-tel.
Ha jól tudom pwm jel 0-250ig terjed. Ha beállítom 250-re (100%) akkor 12V van a kimeneten. Elvileg ha 125-re állítom (50%) akkor 6V-nak kellene lennie. Ehelyett 7,70V van.
Akkor most, hogy is van ez?

A segítséget köszönöm elöre is.
Szia!

Mivel méred a 7,70V-t?
 
Szia,

Multiméterrel.

Tapatalkkal küldve az én GT-I9295 eszközömről
Nem vagyok szakértő, de nekem eddig úgy tűnt, hogy az impulzusszélesség-moduláció (PWM) lényege, hogy állandó feszültség és áramerősség mellett tudja szabályozni a teljesítményt azzal, hogy nagyon rövid időkre "megszakítja" a tápot. Szóval elvileg nem releváns az a feszültség, amit a multiméterrel mérsz, és igazából 12 voltnak kellene lenni végig. A ledek nem halványulnak amikor lejjebb veszed a teljesítményt? Milyen fet modult használsz?
 
Szia,

Multiméterrel.

Tapatalkkal küldve az én GT-I9295 eszközömről
Jó, jó, de milyen multiméterrel? Digitálissal? Milyen típussal? Mert az olcsó DMM-ek (jellemzően 20e Ft alatt) csúcsfeszültséget mérnek, és a színusz feszültség effektív értékét mutatják. Tehát a négyszög feszültség mérésénél szinte értelmezhetetlen a mutatott érték.
Használj valódi effektív érték mérő DVM-et (az van ráírva hogy True RMS) vagy nézd meg oszcilloszkóppal a jelalakot!
 
Nem vagyok szakértő, de nekem eddig úgy tűnt, hogy az impulzusszélesség-moduláció (PWM) lényege, hogy állandó feszültség és áramerősség mellett tudja szabályozni a teljesítményt azzal, hogy nagyon rövid időkre "megszakítja" a tápot. Szóval elvileg nem releváns az a feszültség, amit a multiméterrel mérsz, és igazából 12 voltnak kellene lenni végig. A ledek nem halványulnak amikor lejjebb veszed a teljesítményt? Milyen fet modult használsz?

Én is ezt linkeltem ugyebár.........
 
Jó, jó, de milyen multiméterrel? Digitálissal? Milyen típussal? Mert az olcsó DMM-ek (jellemzően 20e Ft alatt) csúcsfeszültséget mérnek, és a színusz feszültség effektív értékét mutatják. Tehát a négyszög feszültség mérésénél szinte értelmezhetetlen a mutatott érték.
Használj valódi effektív érték mérő DVM-et (az van ráírva hogy True RMS) vagy nézd meg oszcilloszkóppal a jelalakot!

Igen, olcsó DMM.
Akkor felesleges is méregetnem.


Köszi a segítséget!
 
Nem vagyok szakértő, de nekem eddig úgy tűnt, hogy az impulzusszélesség-moduláció (PWM) lényege, hogy állandó feszültség és áramerősség mellett tudja szabályozni a teljesítményt azzal, hogy nagyon rövid időkre "megszakítja" a tápot. Szóval elvileg nem releváns az a feszültség, amit a multiméterrel mérsz, és igazából 12 voltnak kellene lenni végig. A ledek nem halványulnak amikor lejjebb veszed a teljesítményt? Milyen fet modult használsz?

Szia!

IRF540N-t használok. De halványulnak, úgy ahogy azt kell.

Mint elektroruditól megtudtam, felesleges méregetnem egy mezei DMM-el.

Köszi!
 
Sziasztok!

Különösebb információtartalom nélkül, csak úgy bedobnám ide, hogy elkészült az első változata az arduinós led vezérlőmnek:
IMG_20171028_232054.jpg
Nagyon ideiglenes benne minden, gondolkoztam is, hogy lehet hogy a kókány topikban jobb helye lenne. :)
A vezérlést egy nanó látja el, a feszkót a led táptól lopja egy L7805CV-vel, a lámpa 5-6A-es áramát pedig egy IRFZ44N mosfet kapcsolja, ami bár egyáltalán nem melegszik kapott egy röhejesen túlméretezett hűtőbordát (később még pár ilyet rá szeretnék csavarozni). A mosfetet inkább forrasztottam, úgy gondolom, hogy a próbapanel és ezek a pici jumper kábelek nem bírnának ekkora áramot. Később majd a végleges változathoz csinálok egy nyákot vagy ráforrasztom egy protoshield-re, ha ráfér minden.

A progi annyit tud, hogy PWM-mel kapcsolgatja a lámpát kellemes átmenetekkel, plusz a végén (22:30-kor) még egy órát hagyja 1-es erősségen derengeni, amolyan szegény ember moolight ledje stílusban. És van rajta egy gomb, amivel 100%-ra fel lehet tolni a fényerőt bármikor (matatás, fényképezés, ilyesmi esetén). Kell még csiszolni a kódon, de ha készen lesz, mindenképp szeretném közzétenni.

És a lényeg, hogy nélkületek eszembe nem jutott volna, hogy ilyesmivel kísérletezzek, pedig nem áll tőlem távol a dolog, és most, hogy kicsit beleástam magam, nagyon élvezem! Szóval kedves @Victor nagyon szépen köszönöm a téma indítását (így 4 év után is), és a remek leírásokat, és mindenki másnak is aki hozzászólt az évek során!

És még kiegészíteném annyival, hogy nagyon kíváncsi lennék, hogy ti hogyan oldottátok meg a projektek véglegesítését, hogy néz ki egy befejezett, összerakott vezérlődoboz hozzáértőbb embereknél. :)
 
Üdv!
Kezdenek megérkezni az alkatrészek Kínából a vezérlőhöz. Valaki megtudna velem osztani egy programot esetleg? Könnyebb lenne megindulnom, mint nulláról. Növénytáp adagoló lesz benne, DS 3231 óra modul, szűrő stop funkció és co2 mágnesszelep lesz benne amiket egyenlőre működésre szeretnék bírni. Az óramodul része érdekelne inkább és a tápadagoló, de egy komplett programot se utasítok vissza :) Köszönöm!
 
Szia @Imi93!

Épp elkészültem az első csomaggal, ami a gombok vezérléséhez ad némi segítséget. Olyan segédprogramot szerettem volna csinálni, amit nagyon könnyen, akár programozási tudás nélkül is lehet használni.

A lényege, hogy egy sima nyomógombbal tudsz ki és bekapcsolni bármit - pl. lámpát, vagy épp az etetéshez a szűrők leállítását. Az benne az extra, hogy be tudsz állítani egy időzítőt is, ami után automatikusan lekapcsolódik a dolog, ha addig kézzel nem kapcsolnád ki. Pl beállítasz 5 percet a szűrő stophoz, vagy 1 órát a lámpa max fényerőhöz, és így nem fogod véletlenül bekapcsolva felejteni az egész hétvégére...

A csatolt AutoSwitch fájlt csomagold ki, és a benne lévő könyvtárat másold be az arduino sketch könyvtárad alatt lévő libraries könyvtárba! Erről bővebben itt olvashatsz: https://www.arduino.cc/en/Guide/Libraries

Ha megvan a lib, és újraindítottad az arduino programot, akkor ki tudod választani a menüből a File/Examples/AutoSwitch alatt lévő példaprogramokat.

A bekötés ugyanaz, mint az input pullup példaprogramnál. Nincs szükség ellenállásra sem, mert a beépítetteket használjuk pinMode(2, INPUT_PULLUP).
inputPullupButton.png
Ha esetleg még nem lenne nyomógombod, akkor két sima patchkábel összeérintésével is tudod szimulálni. :)

Ide is bemásolom az egyik példát, magyar kommentekkel:
Kód beillesztése:
#include <AutoSwitch.h>

// Itt hozzuk létre a gomb objektumot. A LedButton név lehet bármi más, pl SzuroStop vagy amit épp gondolsz. A változónevekben ékezetek ne használjunk.
AutoSwitch LedButton;

void setup() {
  // A beépített ledet fogjuk használni. Később itt adod meg azt a pint amire a relédet vagy a mosfet-et akarod kötni
  pinMode(LED_BUILTIN, OUTPUT);

  // A gomb beállításai. A 2-es pint fogjuk használni, és 10 másodperc után kapcsoljon majd le magától.
  // A lekapcsolást mindig sec-ben kell megadni, szóval 1 óra 3600 lesz stb stb.
  LedButton
    .setPin(2)
    .setAutoOff(10);
}

void loop() {
  // Kiolvassuk az épp aktuális állapotot. Itt HIGH vagy LOW értéket fogunk visszakapni, de egyébként ez a rész kezeli le a gombnyomásokat is.
  int buttonState = LedButton.getState();

  // Végül beállítjuk a kimenetet
  digitalWrite(LED_BUILTIN, buttonState);
}

Ha több gombra van szükséged, akkor több objektumot kell más-más néven létrehozni, de a működési elv ugyanaz továbbra is.
A programban egyébként nincs delay(), hanem millis()-t használ, és van benne debounce védelem is.
 

Attachments

  • AutoSwitch.zip
    6.2 KB · Megtekintések: 14
És elkészült az időzítő lib is!
Ezt is ugyanúgy kell telepíteni, ahogy a többi library-t. A működéséhez szükség lesz az Adafruit féle RTClib-re is, ez segít az óra modullal való kommunikációban, ezt is mellékelem. Megírtam a példákat DS1307-re és DS3231-re is, az examples könyvtárban találjátok.

Először egy nagyon egyszerű példát mutatnék, pl: fénycsöves világítás ki-be kapcsolásához (ahol nem kell dimmelni), DS3231-el:
Kód beillesztése:
#include <RTClib.h>

// Itt mondjuk meg neki, hogy milyen órát használjon, ezt még a timer #include-ja előtt meg kell tenni!
#define WITH_DS3231        
#include <AquaTimer.h>

// A pin száma ami pl. a reléhez megy
const int LIGHTS_PIN = 6;  

// Ez nagyon fontos, hogy pontosan 'rtc' nevű változó kell a timernek, hogy be tudja olvasni az időt
RTC_DS3231 rtc;           

// Itt definiáljuk a timer objektumot, a paraméterek: PIN száma, bekapcs, kikapcs
// Fontos, hogy String-ben kell megadni a be és kikapcsolási időket, és az órákat is ki kell egészíteni 2 számjegyre, 
// vagyis "6:00" nem jó, hanem "06:00" kell! - De ki akarna olyan korán világítani? :)
AquaTimer LedTimer(LIGHTS_PIN, "14:00", "22:00"); 

void setup() {
  // Óra modul indítása
  rtc.begin();
  if (rtc.lostPower()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  // ez a sor pedig kiírja a megadott pinre az adott időnek megfelelő értéket
  LedTimer.write();
}


Itt pedig egy példa 3 tápadagoló időzítéséhez. A kimenetek (6,7,8) relékkel, vagy mosfetekkel vezérlik a pumpák motorjait. A hardveres részt itt nem részletezném, a lényeg inkább a kód:
Kód beillesztése:
#include <RTClib.h>
#define WITH_DS3231
#include <AquaTimer.h>

RTC_DS3231 rtc;

// Ugyanaz, mint fent, csak egymás után több kimenetet kapcsolunk különböző időpontokban
// PIN, bekapcs, kikapcs
AquaTimer Micro(6, "13:40:00", "13:40:04");
AquaTimer Macro(7, "13:40:20", "13:40:24");
AquaTimer Carbo(8, "13:40:40", "13:40:44");

void setup() {
  rtc.begin();
  if (rtc.lostPower()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() { 
  // Külön-külön meg kell hívni az egyes kimenetekre a kiíratást
  Micro.write();
  Macro.write();
  Carbo.write();
}


És végül egy kicsit komplettebb példa, ahol már van led átmenet, holdfény effekt, szűrő kikapcs, és 4 tápadagoló:
Kód beillesztése:
#include <RTClib.h>
#include <AutoSwitch.h>

#define WITH_DS3231
#include <AquaTimer.h>

RTC_DS3231 rtc;

const int LED_PIN = 6;
const int FILTER_PIN = 7;

// A világítás bekapcsoló gombja, egy óra után kikapcsolja magát
AutoSwitch LedButton(2, 3600);
// A szűrő stop etetéshez, ami 5 perc után újraindítja a szűrőt
AutoSwitch FilterStopButton(3, 300);

AquaTimer LedTimer;
AquaTimer Micro(8, "13:40:00", "13:40:04");
AquaTimer Macro(9, "13:40:20", "13:40:24");
AquaTimer Carbo(10, "13:40:40", "13:40:44");
AquaTimer Phosphate(11, "13:41:00", "13:41:04");

void setup() {
  pinMode(FILTER_PIN, OUTPUT);
  rtc.begin();
  if (rtc.lostPower()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  // Világítás beállításai. A sok paraméter miatt metódus láncolással, hogy olvashatóbb legyen
  // A LED dimmeléséhez a PWM kimenet miatt relé helyett itt egy MOSFET-re lesz szükség!
  LedTimer
  .setPin(LED_PIN)
  .setOn("14:00")         // bekapcs
  .setTransition("30")    // átmenet ideje percben
  .setOff("22:00")        // kikapcs
  .setMoonDuration("60")  // holfény derengés ideje percben, a kikapcs után
  .setMaxVal("75%")       // a teljes fényerő dimmeléséhez. Ha 100% kellene, akkor elhagyható
  .setMoonVal(1);         // a holfény fényereje. Itt szándékosan van int, a lehető legkisebb fényerő kedvéért
}

void loop() { 
  // Tápadagolók
  Micro.write();
  Macro.write();
  Carbo.write();
  Phosphate.write();

  // Világítás a teljes fényerő gombbal
  int buttonState = LedButton.getState();
  LedTimer.write(buttonState);

  // Szűrő stop -  a relén a NC (Normally Closed) kimenetre érdemes kötni a szűrő konnektorát
  int filterStopState = FilterStopButton.getState();
  digitalWrite(FILTER_PIN, filterStopState);
}

Ez a kód egyébként csak 29%-ot használ el egy UNO memóriájából, szóval a maradék 10 szabad lábra még bőven lehet konfigurálgatni hőmérőt, kijelzőt, etető automatát, twinstart, vagy amit épp gondoltok.

Jó kódolást!
 

Attachments

  • AquaTimer.zip
    7 KB · Megtekintések: 21
  • RTClib.zip
    27.9 KB · Megtekintések: 23
Köszönöm a sok programot!
Sajnos még se relé panelem se semmim, csak maga az Uno. Remélem a jövőhéten megjön a többi dolog is és több időm lesz próbálkozni. Egyenlőre úgy érzem nem lesz kis feladat még az óra modult se életre kelteni és a tápadagolókat kapcsolgatni. Majd ha meglesz minden és meglesz az első sikerélmény hátha több önbizalmam lesz, de jelenleg egyre bonyolultabbnak néz ki ahogy egyre többet olvasok.
 
Back
Oldal tetejére