Przemek1967 Maj 3, 2020 Udostępnij Maj 3, 2020 & Dnia 10.04.2020 o 09:33, Gieneq napisał: Tak czytając ten temat przypomniał mi się film GreatScotta. Właśnie używa tu pompy perystaltyczne: Dzieki @Gieneq za podpowiedź o pompach perystaltycznych. To coś co jest mi akurat potrzebne. Użyję ją (już zamówiłem 2 w Chinach) do odprowadzania brudnej wody z doniczki spod kwiatków. Mam drzewko które wymaga dużo wody i często woda przelewa się do kamiennej doniczki w której stoi drzewko. Trudno tę wodę wylać bo drzewko sięga sufity i waży z 15 -20 kg z donicą. Próbowałem stosować pompę do odprowadzania wody ale kilka razy musiałem już ją rozkręcać i czyścić bo drobinki ziemi ją blokowały (pomimo filtracji przez gąbkę). Taka pompa jelitkowa jest dla mnie w sam raz. Zrobię sobie układ z Arduino który obsłuży pompę nawadniającą i opróżniającą !!! 1
Darsoon Czerwiec 2, 2020 Udostępnij Czerwiec 2, 2020 Dnia 29.04.2020 o 21:56, Kasztan napisał: Było to dla mnie największe wyzwanie, po wielu próbach wyszło mi coś takiego: #include <Servo.h> Servo myservo; #define kp 2 #define vp 3 #define czerwona 5 #define zielona 6 #define niebieska 4 #define start 7 #define Trig 8 #define Echo 9 #define serwo 10 #define bateria A0 #define potencjometr A2 int dystans; long duration; int a = 2; int b = 5; int pos = 0; int odczytanaWartosc = 0; int wartosc = 0; int czasOpoznienia = 300; void setup() { Serial.begin(9600); Serial.println("napięcie"); myservo.attach(10); pinMode(kp, OUTPUT); pinMode(vp, OUTPUT); pinMode(czerwona, OUTPUT); pinMode(zielona, OUTPUT); pinMode(niebieska, OUTPUT); pinMode(start, INPUT_PULLUP); pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(bateria, INPUT_PULLUP); pinMode(potencjometr, INPUT_PULLUP); } void loop() { int wartosc = analogRead(bateria); byte poziom = (wartosc / 204.8)*2.4; Serial.println(poziom); delay(50); if (poziom < 7) { myservo.write(0); digitalWrite(niebieska, LOW); digitalWrite(zielona, LOW); digitalWrite(czerwona, HIGH); } else { myservo.write(0); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); if (digitalRead(start) == LOW){ { myservo.write(14); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(28); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(45); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(62); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(80); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(99); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(120); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(140); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(158); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(174); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } } } } } int calculateDistance(){ digitalWrite(Trig, LOW); delayMicroseconds(2); digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); duration = pulseIn(Echo, HIGH); dystans = duration / 58; return dystans; } void lanie () { odczytanaWartosc = analogRead(potencjometr); odczytanaWartosc = map(odczytanaWartosc, 0, 1023, 5, 30); digitalWrite(niebieska, HIGH); digitalWrite(zielona, LOW); digitalWrite(czerwona,LOW); analogWrite(vp,200); digitalWrite(kp, 1); delay(100*odczytanaWartosc); analogWrite(vp,0); digitalWrite(kp, 0); digitalWrite(niebieska, HIGH); digitalWrite(zielona, LOW); digitalWrite(czerwona,LOW); delay(500); } Cześć czy możesz mi powiedzić co jest zdefiniowane w kodzie pod "kp" i "vp"? (analogWrite(vp,200); digitalWrite(kp,1); (domyślam się że chodzi o pomkę) jestem początkujący i byłbym wdzięczny za odpowiedź ps. super projekt i wykonanie
Kaj Czerwiec 3, 2020 Udostępnij Czerwiec 3, 2020 (edytowany) to ja również zadam pytanie jak sterujesz pompką , przekaźnik mostek H ? Edytowano Czerwiec 3, 2020 przez Kaj
Kasztan Czerwiec 4, 2020 Autor tematu Udostępnij Czerwiec 4, 2020 Dnia 2.06.2020 o 15:26, Darsoon napisał: Cześć czy możesz mi powiedzić co jest zdefiniowane w kodzie pod "kp" i "vp"? (analogWrite(vp,200); digitalWrite(kp,1); (domyślam się że chodzi o pomkę) jestem początkujący i byłbym wdzięczny za odpowiedź ps. super projekt i wykonanie Cześć, W skrypcie "kp" oznaczyłem sobie jako kierunek obrotu pompki a "vp" jako prędkość Dnia 3.06.2020 o 17:26, Kaj napisał: to ja również zadam pytanie jak sterujesz pompką , przekaźnik mostek H ? Przy pomocy takiego sterownika: https://botland.com.pl/pl/sterowniki-silnikow-moduly/3164-l298n-dwukanalowy-sterownik-silnikow-modul-12v2a.html?search_query=sterownik+silnika&results=96
Kaj Czerwiec 5, 2020 Udostępnij Czerwiec 5, 2020 (edytowany) @Kasztan Czyli mostkiem, a jak pompka membranowa reaguje na zmianę vp ?? można sterować prędkościową pompowania w miarę płynie ? Przyznam się ze twój projekt zainspirował mnie do zaczęcia zabawy z arduino i stworzenia czegoś podobnego na bazie silnika krokowego (zachowanie serwa po włączeniu niezbyt mi się podobało) enkodera i z wyświetlaczem LCD 2x16 oraz termometru brakuje mi tylko najwalniejszej części czyli pompki cześć "mechaniczna" oparłem o jakieś stare zestawy konstrukcyjne wsparte lekko wydrukami z drukarki 3d Ogólnie bardzo dziękuję za inspirację bo co innego wiedzieć arduino może robić wiele rzeczy a co innego dowiedzieć się że zrobienie ich nie jest wcale takie bardzo skomplikowane. Edytowano Czerwiec 5, 2020 przez Kaj
g00pher Lipiec 8, 2020 Udostępnij Lipiec 8, 2020 A mógłbyś udostępnić pliki .stl do drukarki 3D oraz kod programu jaki należy wgrać w całość.
Gieneq Lipiec 14, 2020 Udostępnij Lipiec 14, 2020 Tam gdzie ktoś nie pił porozlewał masz pomysł co zrobić żeby nie kapało?
szczawiosław Lipiec 14, 2020 Udostępnij Lipiec 14, 2020 Dodać czujnik poziomu cieczy i po skończonym polewaniu zmienić na chwilę kierunek działania pompki aby to co w wężyku cofnęło się. Nie naleje do pełnego i nie będzie strat w związku z kapaniem A po co termometr w zbiorniku? Może przegapiłem info w opisie. 1
Kaj Lipiec 16, 2020 Udostępnij Lipiec 16, 2020 @szczawiosław termometr jest czysto informacyjnie jak nic nie robi to wyświetla temperaturę w butelce @Gieneq @szczawiosław myślę nad tym pompkę mam z zaworkiem zwrotnym co jest wygodne bo ciecz się nie cofa ale w momencie kiedy poziom w butelce jest wyższy niż ujście wężyka nalewającego to samoczynnie wycieka zastanawiam się nad jakimś rozwiązaniem tego problemu ale nie chcę bym iść w stronę elektrozaworu ponieważ mogło by to podwoić koszy urządzenia zwłaszcza że całość jest na zasilaniu 5V arduino , silnik krokowy, wyświetlacz oraz pompka a to wszystko na przetwornicy step down 2A zasilanej dwoma ogniwami 18650 już teraz po włączeniu pompki przygasa wyświetlacz.
Przemek1967 Lipiec 16, 2020 Udostępnij Lipiec 16, 2020 Pompka perystaltyczna ma wprawdzie maly przeplyw ale elementy przepychajace ciecz moga dzielac jako zawory gdy pompa nie dziala. Sa do kupienia na 5V czy 12V. Moze to jest rozwiazanie.
ethanak Lipiec 16, 2020 Udostępnij Lipiec 16, 2020 Albo do wydrukowania - na thingiversie masz kilka modeli perystaltyków, na dobrą sprawę to pół godzinki w openscadzie i sam zrobisz projekt... tylko łożyska trzeba kupić, ale to groszowy wydatek.
Kaj Lipiec 17, 2020 Udostępnij Lipiec 17, 2020 @Przemek1967 @ethanak myślałem nad pompka perystaltyczną ale odrzuciłem pomysł właśnie ze względu na niska wydajność znalazłem na ali jakieś małe elektro zawory o dość małym poborze prądu w prawdzie są do powietrza ale może się nie rozpadną od razu. myślę też nad jakimś mechanicznym rozwiązaniem w coś w stylu niekapiącego keczapu czy kubka niekapka albo ewentualnego podniesienia polewacza powyżej butelki
Kasztan Lipiec 25, 2020 Autor tematu Udostępnij Lipiec 25, 2020 Dnia 8.07.2020 o 11:50, g00pher napisał: A mógłbyś udostępnić pliki .stl do drukarki 3D oraz kod programu jaki należy wgrać w całość. Sorry ale na razie nie udostępniam plików stl. jeśli chodzi o kod to wrzuciłem całość.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »