• 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

Köszi! Elég sokat elszöszöltem vele, mire ilyen lett. :)

Hogyan oldottad meg a vízutántöltést? Vízszintkapcsolóval vagy ultrahangos távolságméréssel?
Mivel nem maradt már szabad portom, meg memória se igazán, ezért egy egyszerű úszókapcsolóval (Water Level Sensor), amit sorba kötöttem a pumpa 12V-os vezetékével. Szóval eleve csak akkor engedi tölteni, amikor nem éri el a szintet a víz. Nem valami elegáns, még agyalok valami dobozkán, ami eltakarja és nem enged be mást a vízen kívül az úszóhoz.
52mm-PP-Liquid-Water-Level-Sensor-Horizontal-Float-Switch-Down-Free-Shipping.jpg
Plusz a program is úgy működik, hogy napi egyszer tölti és kb annyit, amennyi el is párolog egy nap alatt. Elvileg így még úszó se kéne, de így biztonságosabb - amíg bele nem akad valami, vagy valaki ... :)

A dózispumpák nem "engednek" visszafelé? Hogyan rögzítetted csöveket az akváriumhoz?
Úgy tűnik, hogy nem, de még csak teszt üzemben van a dolog.
Aquarium Soft Hose Fixture Holder
Aquarium-Soft-Hose-Fixture-.jpg

A dobozt hol szerezted be?
Alin rendeltem, de Googolj rá: Waterproof Plastic Enclosure Project Box
Ezek mondjuk itthon se sokkal drágábbak, nem biztos, hogy érdemes kínából rendelni.


hogy-hogy a peresztatikus szivattyúkat Fet-elkel kapcsoltatod?
Mivel sima 12V-os motorokról van szó, fel sem merült bennem a relés megoldás. Reléket csak nagyfeszültséghez használnék, a Fetek sokkal gyorsabbak, semennyit sem fogyasztanak (az a szép kék relé nálam akár 1A-t is megeszik amikor behúz). Én nem PWM-ezem a pumpákat, mert a 200l-esbe kell táp bőven, de egy kisebb akiba elképzelhetőnek tartom, hogy a finomabb adagolás kedvéért előnyösebb lehet úgy.
 
Mivel sima 12V-os motorokról van szó, fel sem merült bennem a relés megoldás. Reléket csak nagyfeszültséghez használnék, a Fetek sokkal gyorsabbak, semennyit sem fogyasztanak (az a szép kék relé nálam akár 1A-t is megeszik amikor behúz). Én nem PWM-ezem a pumpákat, mert a 200l-esbe kell táp bőven, de egy kisebb akiba elképzelhetőnek tartom, hogy a finomabb adagolás kedvéért előnyösebb lehet úgy.
Köszi a választ, teljesen jogos, én is így fogom csinálni :)
 
Nálam is a vízutántöltést ilyen úszókapcsolók vezérlik. Szükség esetén este 8-kor tölt a, rendszer. Viszont mikor bead a kapcsoló, utána még 10 másodpercig rátölt, hogy ne a kapcsolási határon legyen az úszókapcsoló.
Táppumpákkal kapcsolatban nekem az a tapasztalatom, hogy az eredeti csővel visszaengedte a, tápot, mert elég vékonyfalú volt, amit a görgők nem tudnak tökéletesen összenyomni. Mikor cseréltem akkor ilyent nem kaptam csak picit vastagabb falut ,amivel már nincs ilyen probléma. Itt kérdés, hogy most milyennek szállítják, mert én több éve vettem ezeket az ebayen.
 
Én is úszó kapcsolóval oldottam meg de én programból megmondom neki hogy hány órától hány óráig nézheti a kapcsoló jelét pusztán azért hogy este ne csorogjon nekem a víz illetve be tudom állítani a szivattyú hány másodpercig mehet amikor megkapja a jelet ez azért jó mert ha beragad a kapcsoló vagy kifogy a víz nem lesz gond és a program aznapra kiált hibára hiába megy el a jel és jönne vissza.

Tapatalkkal küldve az én SM-A520F eszközömről
 
Köszi szépen, mindenkinek, meg is rendeltem a hiányzó dolgokat!

Úgylátom a dózispumpákkal elég vegyes a tapasztalat, majd le kell tesztelnem a sajátomat.
 
Utoljára módosított:
Üdv Mindenkinek!
A kérdésem nem szorosan a témához kapcsolódik,de Arduino. Van egy Wemos D1 mini modulom. Redőnyt működtet blynkkel, de sajnos az időzítés funkció nem megbízható.Ezért LDR-el szeretném megoldani. Úgy gondoltam, hogy pl. "sensorvalue >300" akkor meghúzna a fel relé kb. 13 sec ekkor felmegy háromnegyedig a redőny. Utána ezt már ne figyelje ,hanem a "sensorvalue<300" - nál meghúzzon a le relé, ez 16 sec lenne,hogy teljesen lemenjen és ez ismétlődne. Ebben kérnék segítséget. A loop-nak folyamatosnak kellene lennie mivel a blynket is használni szeretném. Segítséget előre is kösz.
 
Sziasztok!
Tegnap összeszedtem nagyjából mikre lesz szükségem az akva automatikámhoz, miket rendelnék:
1db Ardu Uno
2db Ds3231 rtc modul (elvileg akkuval)
5db Mosfet modul szimpla
2db Szilárdtest relés modul szimpla
4db Peresztatikus szivattyú
Az elkèpzelés egyenlőre: világítás kapcsolása (esetleg napfelkelte, naplemente szimulációval), "etetőgombos" időzített szűrésleállítás, mic-mac-carbo adagolás. A többletrendelés csak a bizalom miatt van a keleti dolgokkal, nameg magammal szemben :p Ha van a fentiekkel kapcsolatban észrevételetek, várom őket!

Ezenk kívül már rendeltem egy Uno-s kezdő szettet is, sokminden van benne, és elvileg küldenek hozzá egy jó kis oktatóanyagot is. Ahogyan elolvastam a leírását, ez pont egy ilyen zöldfülűnek való :troll:
 
Megérkezett az órapanelem végre. Órát beállítottam, működik is, viszont a programozással valami nem jól működik, de lehet eleve rossz a program. Elvileg 7kor be kellene kapcsolnia és 3mp-ig menni,aztán a másik pumpa 07:00:10 kor x mp-re és így a 3ik pumpa is. Most azt csinálja hogy napközben, jól működik (azaz nem megy :D ), de éjfél után bekapcsolgat reggel 7ig egy jó párszor, pontosan nem tudom. Párszor megébredem, hogy mennek az adagolók, de csak a megadott ideig aztán megint csend van. Reggelre vagy 50ml-t betolnak(még csak víz van bennük a teszt miatt). Valakinek valami tipp? A LOW és a HIGH azért van felcserélve, mert nekem LOW-ra huz be a relé, de ez gondolom nem szól bele.
Kód beillesztése:
if (hour*360+minute*60+second >= 2520 and hour*360+minute*60+second <= 2523)
{digitalWrite (relCarbo, LOW);}
else
{digitalWrite (relCarbo, HIGH);}

if (hour*360+minute*60+second >= 2530 and hour*360+minute*60+second <= 2533)
{digitalWrite (relProfito, LOW);}
else
{digitalWrite (relProfito, HIGH );}

if (hour*360+minute*60+second >= 2540 and hour*360+minute*60+second <= 2540)
{digitalWrite (relMacro, LOW );}
else
{digitalWrite (relMacro, HIGH);}

Amíg nem jött meg az órapanel addig siman delay-el mentek a pumpak és a végén 24óra-a pumpák műkodési ideje deley-el, hibátlanul csak ugye ha áramszünet van akkor elcsúsznak az idők, de ha egy powerbankon van az ardu ez is orvosolható. Ha valaki csak a tápadagolást akar és nem ért a programozáshoz szerintem tökéletes erre a célra.
 
Sziasztok!
Tegnap összeszedtem nagyjából mikre lesz szükségem az akva automatikámhoz, miket rendelnék:
1db Ardu Uno
2db Ds3231 rtc modul (elvileg akkuval)
5db Mosfet modul szimpla
2db Szilárdtest relés modul szimpla
4db Peresztatikus szivattyú
Az elkèpzelés egyenlőre: világítás kapcsolása (esetleg napfelkelte, naplemente szimulációval), "etetőgombos" időzített szűrésleállítás, mic-mac-carbo adagolás. A többletrendelés csak a bizalom miatt van a keleti dolgokkal, nameg magammal szemben :p Ha van a fentiekkel kapcsolatban észrevételetek, várom őket!

Ezenk kívül már rendeltem egy Uno-s kezdő szettet is, sokminden van benne, és elvileg küldenek hozzá egy jó kis oktatóanyagot is. Ahogyan elolvastam a leírását, ez pont egy ilyen zöldfülűnek való :troll:

Szia,

Én még tennék bele egy kijelzöt, és höméröt. A kijelzöt azért tartom fontosnak, hogy legalább látod az idöt, esetleg a hömérsékletet.

Ha ránézek a kjelzöre, látom legalább hogy az óra jól jár......:)
 
Megérkezett az órapanelem végre. Órát beállítottam, működik is, viszont a programozással valami nem jól működik, de lehet eleve rossz a program. Elvileg 7kor be kellene kapcsolnia és 3mp-ig menni,aztán a másik pumpa 07:00:10 kor x mp-re és így a 3ik pumpa is. Most azt csinálja hogy napközben, jól működik (azaz nem megy :D ), de éjfél után bekapcsolgat reggel 7ig egy jó párszor, pontosan nem tudom. Párszor megébredem, hogy mennek az adagolók, de csak a megadott ideig aztán megint csend van. Reggelre vagy 50ml-t betolnak(még csak víz van bennük a teszt miatt). Valakinek valami tipp? A LOW és a HIGH azért van felcserélve, mert nekem LOW-ra huz be a relé, de ez gondolom nem szól bele.
Kód beillesztése:
if (hour*360+minute*60+second >= 2520 and hour*360+minute*60+second <= 2523)
{digitalWrite (relCarbo, LOW);}
else
{digitalWrite (relCarbo, HIGH);}

if (hour*360+minute*60+second >= 2530 and hour*360+minute*60+second <= 2533)
{digitalWrite (relProfito, LOW);}
else
{digitalWrite (relProfito, HIGH );}

if (hour*360+minute*60+second >= 2540 and hour*360+minute*60+second <= 2540)
{digitalWrite (relMacro, LOW );}
else
{digitalWrite (relMacro, HIGH);}

Amíg nem jött meg az órapanel addig siman delay-el mentek a pumpak és a végén 24óra-a pumpák műkodési ideje deley-el, hibátlanul csak ugye ha áramszünet van akkor elcsúsznak az idők, de ha egy powerbankon van az ardu ez is orvosolható. Ha valaki csak a tápadagolást akar és nem ért a programozáshoz szerintem tökéletes erre a célra.


Szia,

Én is hasonló módszerrel próbálkoztam elöször.

Nem vagyok nagy programozó zseni, de
nem tudtam olyan nagy változót deklarálni (double a legnagyobb), amibe belefértek volna a napi másodpercek.

Aztán végül maradt a millis függvény.
 
Szia,

Én még tennék bele egy kijelzöt, és höméröt. A kijelzöt azért tartom fontosnak, hogy legalább látod az idöt, esetleg a hömérsékletet.

Ha ránézek a kjelzöre, látom legalább hogy az óra jól jár......:)
Igen, lehet a kontroll miatt megnyugtató lenne, csak mint írtam a programozáshoz egyenlőre lövésem sincsen :p A tanuló készletbrn viszont van kijelző, a hőmérőnek meg lehet Ardunál NTC-t használni? (Mondjuk 10k-sat?
 
Szia,

Én is hasonló módszerrel próbálkoztam elöször.

Nem vagyok nagy programozó zseni, de
nem tudtam olyan nagy változót deklarálni (double a legnagyobb), amibe belefértek volna a napi másodpercek.

Aztán végül maradt a millis függvény.

A double lebegőpontos számérték. Bőven elég a napi másodperceknek az unsigned long (0-tól 4 294 967 295-ig). A napi másodperc pedig ha igaz, akkor csak 86 400 van :).

Egyébként másodperc alapú időzítésnél az egy órán belüli másodperceket is elég alapul venni, mivel gondolom 60 percnél (3600 másodpercnél) további időzítéseket már nem másodperc alapon akarod beállítani. Ekkor pedig bőven elég az int vagy unsigned int változó.

Imi93, valószínüleg túlcsordul valamelyik változód, vagy különböző típusúak amikkel műveleteket végeztetsz és ez okoz(hat) némi zavart az időzítésedben.
 
Köszönöm a tippeket. Sajnos nem túl sok időm van jelenleg, de megpróbálom a millis függvényt, meg böngészek kódokat aztán hátha sikerül.
 
Sziasztok!
Tegnap összeszedtem nagyjából mikre lesz szükségem az akva automatikámhoz, miket rendelnék:
1db Ardu Uno
2db Ds3231 rtc modul (elvileg akkuval)
5db Mosfet modul szimpla
2db Szilárdtest relés modul szimpla
4db Peresztatikus szivattyú
Az elkèpzelés egyenlőre: világítás kapcsolása (esetleg napfelkelte, naplemente szimulációval), "etetőgombos" időzített szűrésleállítás, mic-mac-carbo adagolás. A többletrendelés csak a bizalom miatt van a keleti dolgokkal, nameg magammal szemben :p Ha van a fentiekkel kapcsolatban észrevételetek, várom őket!

Ezenk kívül már rendeltem egy Uno-s kezdő szettet is, sokminden van benne, és elvileg küldenek hozzá egy jó kis oktatóanyagot is. Ahogyan elolvastam a leírását, ez pont egy ilyen zöldfülűnek való :troll:
Bocsánat, hogy csak ilyen későn válaszolok, de megint csak azt erősíteném meg, amit korábban: ha új projektet kezdtek NE ARDUINO UNORA ÉPÍTSÉTEK! Kevés a memóriája, ha kicsit is többet szeretnétek egy-két alap dolognál, akkor már gondok lesznek! Válasszátok a ESP8266-ra épített lapokat, mint ez:
ESP8266-CH340G-.jpg
Ez konkrétan 2.8$-ba kerül az alin (ESP8266-ra vagy NodeMcu-ra keresve az elsők között van), és sokkal sokkal többet tud, mint egy Arduino. Viszont ugyanazokkal az eszközökkel lehet programozni, szóval minden más maradhat ugyanaz.

Egyébként én nem erőltetném a szimpla mosfet meg relé modulokat, ha van dupla vagy 4-es is. Lehet, hogy olcsóbb is, meg kevesebb helyet is foglal talán ha nem szimplákat veszel. A tápellátást kell még megoldanod valahogy, arról nem írtál. A motoroknak 12V-kell, az viszont kicsit talán sok az arduino pici fesz.szabályzójának, szóval érdemes elé tenni pl egy L7805CV ic-t, egy kicsi hűtőbordával, meg pár kondival. Ez 55Ft itthon is amúgy. Van erről rengeteg leírás, nem bonyolult. A másik opció valamilyen állítható feszültségkonvertáló modul, ilyenről Victor is írt korábban. Szerintem többet fogyaszt és zajos, de ugye ízlések és ficamok. :)

A rendeléshez még egy tipp: Látom a mikrokontrollerből csak egyet vennél, szerintem érdemes pont abból kettőt rendelni eleve. Egyrészt ha valahogy sikerülne megsütni (ami nem valószínű), másrészt ha már beépítetted az egyiket, de még akarsz valamit fejleszteni rajta, akkor tök jó, ha van egy tartalék, amit az asztalodon tuningolhatsz az "éles" rendszer piszkálása nélkül.
 
Megérkezett az órapanelem végre. Órát beállítottam, működik is, viszont a programozással valami nem jól működik, de lehet eleve rossz a program. Elvileg 7kor be kellene kapcsolnia és 3mp-ig menni,aztán a másik pumpa 07:00:10 kor x mp-re és így a 3ik pumpa is. Most azt csinálja hogy napközben, jól működik (azaz nem megy :D ), de éjfél után bekapcsolgat reggel 7ig egy jó párszor, pontosan nem tudom. Párszor megébredem, hogy mennek az adagolók, de csak a megadott ideig aztán megint csend van. Reggelre vagy 50ml-t betolnak(még csak víz van bennük a teszt miatt). Valakinek valami tipp? A LOW és a HIGH azért van felcserélve, mert nekem LOW-ra huz be a relé, de ez gondolom nem szól bele.
Kód beillesztése:
if (hour*360+minute*60+second >= 2520 and hour*360+minute*60+second <= 2523)
{digitalWrite (relCarbo, LOW);}
else
{digitalWrite (relCarbo, HIGH);}

if (hour*360+minute*60+second >= 2530 and hour*360+minute*60+second <= 2533)
{digitalWrite (relProfito, LOW);}
else
{digitalWrite (relProfito, HIGH );}

if (hour*360+minute*60+second >= 2540 and hour*360+minute*60+second <= 2540)
{digitalWrite (relMacro, LOW );}
else
{digitalWrite (relMacro, HIGH);}

Amíg nem jött meg az órapanel addig siman delay-el mentek a pumpak és a végén 24óra-a pumpák műkodési ideje deley-el, hibátlanul csak ugye ha áramszünet van akkor elcsúsznak az idők, de ha egy powerbankon van az ardu ez is orvosolható. Ha valaki csak a tápadagolást akar és nem ért a programozáshoz szerintem tökéletes erre a célra.
Egyrészt egy óra az 3600 másodperc, nem 360. Gondolom ez okozta, hogy többször bekapcsolt. Másrészt a Macrot valóban csak 1 sec-ig akarod járatni (2540 - 2540)?

Egyébként elvileg jónak tűnik, de szerintem nehéz átlátni, mert túl sok a változó. Én megpróbálnék egyetlen másodperc változót használni, valahogy így:
Kód beillesztése:
unsigned long secondsToday;
// itt lerkérdezem az órából az adatokat...
secondsToday = hour * 3600 + minute * 60 + second;

if (secondsToday >= 2520 && secondsToday <= 2523) {
  digitalWrite (relCarbo, LOW);
} else {
  digitalWrite (relCarbo, HIGH);
}

// stb
Arra is érdemes figyelni, hogy az órát ne kérdezgesse a rendszer folyamatosan, hanem csak percenként vagy még ritkábban. Közben a másodperceket lehet pl millis()-sel is léptetni. Egyrészt kicsit lassú az I2C-n a forgalom, másrészt akár be is fagyaszthatja a rendszert egy érzékenyebb modul, ha valami nagy zaj közben kérdezed le (pl amikor a motor jár).
Erre amúgy nagyon szép megoldás Paul Stoffregen Time libraryja: https://github.com/PaulStoffregen/Time
A letöltésben lévő DS1307RTC libbel tökéletesen működik a DS3231-is. Ez pontosan úgy működik, ahogy írtam fent, hogy csak 5 percenként kérdezi le az órától az időt, közben pedig maga intézi a másodpercek számolását. Elég sok helyet foglal mondjuk, de aki nem használ Blynk-et, ott valószínűleg el fog férni egy UNO-n is. :)
 
Utoljára módosított:
Inkább meg se szólalok!:confused::banghead: :):)

DS18B20-szenzort használok, nekem tökéletes!
Az a különbség, hogy a DS18B20 egy digitális hőmérő, ami ONE wire-t használ, vagyis digi lábra kell kötni, és kell hozzá a megfelelő lib, pl: https://github.com/milesburton/Arduino-Temperature-Control-Library
Az NTC meg csak egy ellenállás, amihez kell ADC hogy értelmezhesse a rendszer vagyis analóg bemenetre kell tenni. Gondolom ehhez is van jó lib, de ezekkel nincs tapasztalatom, nálam is egy vízálló DS18B20 dolgozik, teljesen rendben van eddig.

Ha kijelzőt is tennél bele, akkor én oled-eset javasolnék. Sokkal szebb, mint a nagy lcd-sek, és az U8g2 libbel gyerekjáték a programozása is.
De inkább használj esp-t és blynket! :)
 
Back
Oldal tetejére