Skocz do zawartości

Arduino Uno i sterowanie elektrozaworem


Miniek

Pomocna odpowiedź

Jako Pull-down możesz użyć rezystora 10k ohm lub nawet więcej.
Do wyliczeń używaj prawa Ohma R=U/I 
Moc to P=U * I

Dla R=10k oraz U=5V będziesz miał prąd I=U/R = 0,5 mA co da moc P=2,5mW = 0,0025W. Jak widzisz każdy rezystor możesz użyć.

Również rezystor podpięty pomiędzy Arduino i Mosfet może być dowolnie małej mocy bo prąd bramki jest pomijalny.

Edytowano przez Przemek1967
Link do komentarza
Share on other sites

@Miniek możesz to dość prosto wyliczyć. Albo w 2 etapach z prawa Ohma i wzoru na moc, albo z przekształconego już wzoru - ja osobiście nie pamiętam tych przekształconych wiec mam więcej pracy.

Masz tu jakiegoś MOSFETa, czyli do bramki płynie prąd jedynie podczas przełączania. Rezystor 270Ω jest po to żeby ograniczyć prąd podczas ładowania kondensatora, który w skrajnej sytuacji mógłby uszkodzić wyprowadzenia Arduino. Jego wartość dobiera się trochę na oko, większa spowolni ładowanie bramki.

Czyli masz tam UNO, dajmy 5V to z prawa Ohma R = U/I -> I = U/R czyli I = 5000mV/270Ω ≈ 20 mA Jest to blisko granicy, ale ładowanie trwa krótko i rzadko jest wykonywane więc nic się nie spali (jak chcesz policzyć ile czasu trwa, to też jest możliwe). Jaka jest zatem potrzebna moc? P=UI = R*I^2 = 270Ω * 20 * 20 * 10^-6 = 108 mW czyli nawet 1/8W się nada.

 

 

Link do komentarza
Share on other sites

Cóż, niezupełnie "na oko" a raczej tak aby nie przekroczyć nawet przez ten krótki czas możliwości wydajności prądowej pinu i zmieścić się w zakładanym czasie przełączania względem przewidywanej częstotliwości pwm na podstawie podanej przez producenta pojemności bramki, wszystko jest w DS. Trzeba też pamiętać przy tym o dwóch rzeczach: im większy prąd ( nawet chwilowy ) popłynie przez pin tym większy wpływ na jakość zasilania, więc teoretycznie im większy rezystor szeregowy na bramce tym lepiej bo przełączanie powoduje mniejszy szum ale jednocześnie prędkość przełączania mosfeta spada. Często z tego powodu stosuje się jako driver bramki osobny tranzystor bipolarny. Jeśli jednak prędkość przełączania nie ma  większego znaczenia można zastosować rezystancję z szerokiego przedziału wartości. Myślę, że te 220 ohm - 1k będzie rozsądnym wyborem.

Link do komentarza
Share on other sites

Moje spostrzeżenie jest takie, że większość przykładów, jakie obejrzałem w internecie, to rezystor, jaki był stosowany między bramką a source mosfet'a, to 10k. Dlatego zakupiłem ich kilka, ale nie zastosowałem, bo wszystko działało, jednak teraz wiem, że jednak dobrze jest je wykorzystać. Póki co, system działa od kilku dni, tylko jest problem z ciśnieniem. Wydaje mi się, że zasilacz 7,5V nie jest w stanie w pełni otworzyć zaworu. Zakupiłem już 12V, 1A, i będę przeprowadzał kolejne testy. Możliwe, że problem tkwi w średnicy węża, którego użyłem do testu. Zawór pracuje na 3/4 cala, a ja podłączyłem się do niego wężem 1/2" i za nim jest to samo do zraszacza. Zraszacz działa, ale nie obraca się, tylko stoi w miejscu i chlapie ledwo co przed siebie. Ciśnienie powinno być OK, ale kupię manometr i sprawdzę. Mam szlauch 3/4 cala i podłączony bezpośrednio do zaworu działa super, jednak przez wąż 1/2 cala, już jest gorzej. Jednak trzeba przetestować wszystkie możliwości.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Witaj w klubie 🙂
To znaczy wśród tych co nie tylko połknęli wiedzę teoretyczną i wydaje im się że mogą zrobić wszystko. Na YouTube jest wiele filmów gdzie wychodzi gość i opowiada o jednym układzie/module i wszystko mu pracuje. Wydaje się że jest "SPECEM".
Próbując coś zrealizować praktycznie okaże się że to wcale nie działa jak zakładałeś. Jak zaczniesz rozbudowywać układ o kolejne moduły (LCD, Termometr, Radio, Bluetooth) zaczną się pojawiać kolejne problemy. Ale nie martw się, z nimi też sobie kiedyś dasz radę. To wcale nie jest trudne i nie wymaga wiedzy specjalistycznej. 
Jak cię to nie zrazi to zaczniesz szperać dalej i dowiesz się kolejnych rzeczy czy zależności.

Mnie osobiście to właśnie kręci - zrobienie czegoś praktycznego. Szkoda tylko że nie mam więcej czasu na te zabawy.
 

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Witam wszystkich forumowiczów. Moja podlewaczka działa, jednak napotkałem problem tego typu, że jak wilgotność osiąga wartość, w której załącza się podlewanie, to woda leci na rośliny w pełnym słońcu. Pomyślałem sobie, że dobrze by było wyposażyć system w moduł RTC, tak żeby po osiągnięciu wartości podlewania, Arduino czekało na odpowiednią godzinę, np. 22 i dopiero wtedy się załączało. Jest to też konieczność, ponieważ wcześniej ciśnienie jest za małe i nawet zraszacze w pełni się nie wynurzają. Kod do podlewaczki wygląda tak:

#include <DS1307RTC.h>
#include <TimeLib.h>
#include <Wire.h>

void setup(){
    Serial.begin(9600);
    
    pinMode(2, OUTPUT); //Elektrozawór 1
    pinMode(3, OUTPUT); //Elektrozawór 2
    pinMode(4, OUTPUT); //Elektrozawór 3
    pinMode(6, OUTPUT); //Dioda czerwona
    pinMode(7, OUTPUT); //Dioda żółta
    pinMode(8, OUTPUT); //Dioda zielona
    pinMode(A0, INPUT); //Czujnik

    digitalWrite (2, HIGH);
    digitalWrite (3, HIGH);
    digitalWrite (4, HIGH);

 }
void loop() {

          int stan = analogRead(A0); //Odczyt stanu czujnika
      Serial.print("Wilgotnosc:");
      Serial.println(stan);
      delay(3000);

      int wilgotnosc = (stan,1023,0,0,100);
      
      
            if (stan <500) // dioda zielona
            {
                digitalWrite (6, LOW);
                digitalWrite (7, LOW);
                digitalWrite (8, HIGH);
            }
            
            if (stan >500 && stan <700) // dioda żółta
            {
                digitalWrite (6, LOW);
                digitalWrite (7, HIGH);
                digitalWrite (8, LOW);
      }
             
            if (stan >700) // dioda czerwona
            {
                digitalWrite (6, HIGH);
                digitalWrite (7, LOW);
                digitalWrite (8, LOW);
            }           
                       
            if (digitalRead(6) == HIGH) //Załączenie procedury podlewania
            {
                   
        digitalWrite (2, LOW); //Zawór 1
        delay(90000);
        digitalWrite (2, HIGH);
        delay(3000);

      
        digitalWrite (3, LOW); //Zawór 2
        delay(90000);
        digitalWrite (3, HIGH);
        delay(3000);

        digitalWrite (4, LOW); //Zawór 3
        delay(90000);
        digitalWrite (4, HIGH);
        delay(3000);
      }
  else {
    digitalWrite (2, HIGH);
    digitalWrite (3, HIGH);
    digitalWrite (4, HIGH);
    delay(3000);
  }
}

Można prosić o modyfikację kodu tak, aby spełniał moje założenia? Będę bardzo wdzięczny. Biblioteki już dodałem. W konstrukcji zrezygnowałem z MOSFETów, które po pewnym czasie przestały prawidłowo pracować, chyba się przegrzały, na rzecz przekaźników. Trochę się ciasno zrobiło w skrzynce, ale nie muszę nic lutować i działa.

Edytowano przez Gieneq
Link do komentarza
Share on other sites

@Miniek na githubie w Arduino IDE masz przykłady użycia. W jeden (set) ustawiasz czas swojego RTC, a w drugim (read) masz opisane jak odczytywać godzinę. Pewnie wystarczy żebyś odczytywał co jakiś czas godzinę i dał warunek na około tego odczytu wilgotności, w którym sprawdzasz czy jest godizna powiedzmy 22-24 i wtedy odbywa sie podlewanie.

 

Link do komentarza
Share on other sites

Proszę o modyfikację mojego kodu, bo nie potrafię tego zrobić, a dostaję linki do stron, na których już byłem. Gdy wklejam linijki do mojego kodu, to kompilator zgłasza mi błędy. Proszę o pomoc z kodem, a nie o wysyłanie linków, chyba, że gdzieś jest kod, który pasuje do mojego przypadku, to bardzo proszę.

  • Nie zgadzam się! 1
Link do komentarza
Share on other sites

ethank, bardzo mi przykro, że nie potrafię programować. wydaje mi się, że i tak dużo zrobiłem, jak na totalnego laika, ale mam chęci, żeby się tego uczyć. Niestety w tym momencie utknąłem i nie potrafię ruszyć z miejsca, a proszę jedynie o modyfikację mojego kodu, tak żeby współpracował z modułem RTC. Mam 46 lat i jestem już trochę zmęczony, zdrowia ubywa, a pracować trzeba i nie mam już tyle czasu, żeby siedzieć godzinami przed kompem i pracować metodami prób i błędów, mam też rodzinę, którą się zajmuję, ale wiem, że są ludzie, którzy potrafią robić takie rzeczy i i nie jest to dla nich problemem. Dzielę się moimi dokonaniami na forum, żeby ktoś mógł skorzystać z mojego projektu. Będzie miał wszystko podane na tacy. Jak wszystko będzie śmigać, to wrzucę jeszcze screen z Fritzinga, bo nie umiem robić schematów, żeby każdy mógł sobie coś takiego zrobić. Liczę, że ktoś poprze mój pomysł i mi pomoże. Dziękuję.

Link do komentarza
Share on other sites

Idealnym rozwiązaniem jest zastosowanie podlewania kropelkowego.Poczytaj w necie np

https://budujemytutaj.pl/wszystko-o-nawadnianiu-kropelkowym/.

Jeden metr kosztuje jakieś 0,4zł albo i mniej.Woda trafia tam gdzie trzeba czyli do korzeni  roślin.W ten sposób w sterowaniu niczego nie musisz zmieniać.Przy okazji trochę zaoszczędzisz wody.

Link do komentarza
Share on other sites

9 godzin temu, Miniek napisał:

ethank

Wiesz, Miniuk, chyba masz problemy z prawidłowym przepisaniem siedmiu liter, nie mówiąc o jakichś kodach...

9 godzin temu, Miniek napisał:

mam chęci, żeby się tego uczyć

Hm... wydaje mi się że niespecjalnie, bo w następnym zdaniu czytamy:

9 godzin temu, Miniek napisał:

nie mam już tyle czasu, żeby siedzieć godzinami przed kompem i pracować metodami prób i błędów

Więc chcesz się uczyć czy rzucać kostką i czekać aż wyjdzie program? A nie wpadłeś na pomysł, żeby nieco czasu poświęcić na naukę (polecam kursy Arduino na tym forum) a potem uzbrojony w tę wiedzę szybciutko machnąć kod? Uwierz mi, to tak działa.

9 godzin temu, Miniek napisał:

Mam 46 lat i jestem już trochę zmęczony

Jaka ta młodzież ostatnio chorowita... ciekawe co powiesz jak będziesz w moim wieku 🙂

9 godzin temu, Miniek napisał:

proszę jedynie o modyfikację mojego kodu, tak żeby współpracował z modułem RTC

Ale mając 46 lat powinieneś być na tyle dorosły, aby zdawać sobie sprawę z tego o co prosisz. Bo to jest tak, jakbyś chciał prosić kogoś o to żeby przerobił Ci rower na elektryczny, bo tam przecież tylko silnik trzeba dołożyć a silnik przecież już masz tylko nie wiesz gdzie go wsadzić...

Więc może Cię uświadomię:

To co napisałeś może i jakimś dziwnym trafem działa, ale jest napisane w sposób urągający wszelkim zasadom programowania. Czyli - do zaorania.

Zamiast określić dokładnie co program ma robić wymyślasz jakieś dziwaczne zasady  - np. "program ma sprawdzić czy jest za sucho ale ma czekać do 22". Po kiego grzyba? Nie lepiej o 22:00 sprawdzić czy trzeba podlewać? Po co sprawdzać w innych godzinach? Może więc jeśli nie napiszesz kodu - napisz przynajmniej algorytm działania. I nie na zasadzie "jeśli digitalRead(cośtam) jest takitoataki" tylko wyobraź sobie, że masz czujniki podłączone w tajemniczy sposób do jakiejś czarnej skrzynki, na skrzynce masz jakieś światełka, nie masz pojęcia co jest w środku, ale wiesz co ta skrzynka ma robić. Możesz to zrobić opisowo, możesz użyć tzw. pseudojęzyka (mój ulubiony sposób), np:
 

if (jest_po_22 && jeszcze_nie_podlewaliśmy && trzeba_podlać && nie_podlewamy) {
	zacznij_podlewanie();
}

Tyle możesz (w podtekście: musisz) zrobić sam. A jak to zrobisz, wtedy z chęcią wielu z nas pomoże Ci napisać kod. Ale uwaga: pomoże, a nie napisze za Ciebie.

No - chyba, że po prostu chcesz mieć sprawnie działającą podlewaczkę i nie będziesz się wygłupiał z jakimiś schematami czy kodami. Ale w takiej sytuacji to nie ten dział na forum - jest taki o pracy oferowanej.

  • Lubię! 1
Link do komentarza
Share on other sites

ethanak, zdarza się przy pisaniu "zjeść literkę",  przepraszam.  Dziękuję również za analizę mojej wypowiedzi i zbadanie mojego profilu psychologicznego, ale to chyba nie to forum? Podlewaczka bada wilgotność w sposób ciągły, bo jak byś nie zauważył na zdjęciach i w kodzie są do niej podłączone trzy diody, które informują o stanie gleby. Zaproponowany przez Ciebie sposób, też jest dobry, ale wtedy wilgotność będzie sprawdzana raz dziennie o 22, a ja mam takie widzimisię, że lubię patrzeć na te diody. Jeśli wrzuciłem mój kod z opisami który pin do czego, to chyba wiadomo, jak działa? Czy nie wiadomo, bo już sam się gubię, choć kod wydaje się krótki i przejrzysty. Mam do Ciebie jeszcze jedną prośbę, jeśli nie chcesz, lub nie umiesz mi pomóc, to nie pisz więcej, bo to do niczego nie prowadzi, nie ma sensu, jeśli to zrozumiesz, to będzie to z korzyścią dla nas obu.

Pozdrawiam.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.