Skocz do zawartości

Kasztan

Użytkownicy
  • Zawartość

    11
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Kasztan wygrał w ostatnim dniu 9 kwietnia

Kasztan ma najbardziej lubianą zawartość!

Reputacja

15 Dobra

O Kasztan

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Sorry ale na razie nie udostępniam plików stl. jeśli chodzi o kod to wrzuciłem całość.
  2. Cześć, W skrypcie "kp" oznaczyłem sobie jako kierunek obrotu pompki a "vp" jako prędkość 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
  3. Niestety po ustawieniu potencjometru leje do wszystkich kieliszków tak samo i nie rozróżnia pojemności kieliszka. Doświadczalnie ustaliłem zakres na potencjometrze od 10 do 50 ml.
  4. 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); }
  5. Szczerze to nie wiem, raczej długo - nie mierzyłem, kilka godzin testowałem w czsie budowy potem polewał na imprezie i w tym czasie raz ładowałem pakiet
  6. Niewykluczone Ja zastosowałem 8x akumulator AA 2600 mAh z założeniem długiego polewania. Myślę, że z takimi substancjami jak kakao może być problem z zachowaniem czystości układu a i ne wiem jak się wszystko zachowa jak dojdzie też temperatura bo sam nalewam tylko schłodzone trunki
  7. Tak średnica wewnętrzna 6mm. Użycie przetwornicy znacząco wpłynęłoby na żywotność baterii. Czujnik nacisku owszem... ale nie w konstrukcji takiej jak ta. Teraz tak myślę że spoko w moim robocie "Arduino samo sobie mierzy V", to można uzależnić czas lania od V. Powiem tak, po ostatnie 25 ml trzeba zajrzeć do butelki
  8. Magnesy neodymowe przydały mi się do składania podstawki pod kieliszki, na filmie jest jak na początku wszystko składam ze sobą, magnesy trzymają to wszystko razem. Przetestowałem kilka rożnych czujników i czujnik ultradźwiękowy okazał się najlepszy, po długich testach i owocnym nalewaniu na razie jest bezbłędny. Ważne żeby w robocie ustawić go w odpowiedniej odległości od kieliszka, gdy jest za blisko czujnik pokazuje złe wartości (ma zakres od 2 cm) a gdy jest za daleko może wykrywać kieliszek obok i nalewać w miejscu gdy go nie ma. Problemy: - trzeba kupić rurkę sylikonową która dobrze znosi ujemne temperatury, lane trunki zazwyczaj są zmrożone zamontowana wcześniej zamieniała się w twardy plastik - ewentualne wycieki z pompy mogą uśmiercić elektronikę - robot nalewa na podstawie zadanego czasu, gdy baterie się rozładowują nalewa coraz mniej, dodałem układ i warunek aby robot poniżej 8V stawał w pozycji startowej i załącza się czerwona lampka No nalewaniu whisky i nalewek przepłukiwałem układ wodą i to wystarczy, wódka jest bardziej wdzięczna. Uważam, że druga pompka jest zbędna, zabierze też miejsce w obudowie.
  9. Cześć, np. tutaj: - https://allegro.pl/oferta/pompa-membranowa-silnik-r385-12v-3w-mini-8590000609?reco_id=31240178-7a5a-11ea-917c-b02628cf00d0&sid=0e7a5475e04eefd78184d559df6fb9f87c889ad5ac94196dac75ac99722370c3&bi_s=archiwum_allegro&bi_c=Product&bi_m=reco& - https://allegro.pl/oferta/zawor-zaworek-zwrotny-kierunkowy-paliwa-6mm-9045843446
  10. Cześć, pewnie, robot poradzi sobie z każdym płynem byle nie gazowanym
  11. Cześć, pewnego razu na spotkaniu ze znajomymi okazało się, że na hasło „polej” nikt nie zareagował. Wtedy zrodził się pomysł, aby zaradzić takim przykrym sytuacjom w przyszłości postanowiłem stworzyć robota do nalewania alkoholi wysokoprocentowych. Z założenia robot miał nalewać alkohol do każdego kieliszka jaki się postawi oraz miał być zasilany przy pomocy baterii. Pierwsze prototypy zawierały prostą elektronikę opartą na czujnikach i przekaźnikach – jestem laikiem oraz samoukiem w kwestiach elektroniki. Projekty nie spełniały oczekiwań, ponieważ w normalnym użytkowaniu zawodziły. Około rok temu natknąłem się na Arduino i zacząłem pogłębiać swoją wiedzę w tym kierunku. Wydruki 3D wykonałem na swojej drukarce. Robot spełnił założenia. Poprzez zastosowanie czujnika ultradźwiękowego jest w stanie nalać do każdego kieliszka, a potencjometrem można ustawić ilość nalewanej wódki w zakresie około 10 - 50ml. Do zasilania użyłem 8 akumulatorów AA. Wykonałem obudowę z kilku elementów żeby mieć lepszy dostęp do podzespołów. Rynienka na pompce została stworzona po zalaniu układu... z wyciekiem sobie poradziłem ale dla pewności została Części których użyłem do budowy: Płytka stykowa 170 pól - 1 szt Stabilizator L7805CV 5V 1,5A – 1 szt Ultradźwiękowy czujnik odległości HC-SR04 2-200cm – 1szt Potencjometr liniowy 1K – 1 szt Wtyk DC 2,1/5,5mm z zaciskami skręcanymi – 1 szt Pompa membranowa - silnik R385+ - 12V - 3W - mini pompa wodna – 1szt Moduł sterownika L298N do silników DC – 1 szt Przełącznik kołyskowy 15x10mm – 1 szt Koszyk na baterie 8xAA (R6) – 1 szt Arduino Nano – 1 szt Uniwersalny Proto Shield do Arduino Nano – 1 szt Serwo TowerPro MG-995 – 1szt. Zawór zwrotny – 2szt. Moduł dioda LED RGB 5050 wspólna katoda – 1 szt. Magnesy neodymowe 10x5 – 8 szt Przycisk monostabilny – 1 szt. Rurka sylikonowa – 0,5m Rezystory Przewody połączeniowe Aby "polewacz" był mobilny jego elementy zaprojektowałem tak, aby zmieściły się w drewnianej skrzyni 30x20x15cm.
×
×
  • Utwórz nowe...