Skocz do zawartości
Kasztan

Robot do nalewania wódki

Pomocna odpowiedź

Takiego czegoś to każdy potrzebuje.

Mógłbyś podać wymiary wszystkich części obudowy oraz innych części lub projekt do wydrukowania?

 

Udostępnij ten post


Link to post
Share on other sites

&

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ą !!! 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Hej jest szansa na pliki do drukarki ?

Udostępnij ten post


Link to post
Share on other sites
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

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

to ja również zadam pytanie

jak sterujesz pompką , przekaźnik mostek H ?
 

Edytowano przez Kaj

Udostępnij ten post


Link to post
Share on other sites
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

Udostępnij ten post


Link to post
Share on other sites
(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.
IMG_20200530_225626.thumb.jpg.f4f1b8bb57a987ccabf93b7cc9488c77.jpgIMG_20200530_225607.thumb.jpg.b59e61f657d67e9898da6688b34e1ef4.jpg

Edytowano przez Kaj

Udostępnij ten post


Link to post
Share on other sites

A mógłbyś udostępnić pliki .stl do drukarki 3D oraz kod programu jaki należy wgrać w całość.

Udostępnij ten post


Link to post
Share on other sites

to jeszcze się pochwale działającym projektem Film

Udostępnij ten post


Link to post
Share on other sites

Tam gdzie ktoś nie pił porozlewał 😥 masz pomysł co zrobić żeby nie kapało?

Udostępnij ten post


Link to post
Share on other sites

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.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@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.

Udostępnij ten post


Link to post
Share on other sites

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. 

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

@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

Udostępnij ten post


Link to post
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...