Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'Manipulator'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 19 wyników

  1. Cześć, od dawna zajmuję się zagadnieniami związanymi z silnikami BLDC i ostatnio przyszedł mi do głowy manipulator o trzech stopniach swobody. Kończę studia, praca magisterska była gotowa i miałem trochę wolnego czasu - nie było powodów, by tego nie robić. Przeszukałem składzik z gratami, wybrałem trochę części i zabrałem się za projektowanie. Aby manipulator wyróżnił się pośród innych opisywanych w internecie chciałem zastosować napęd bezpośredni - ramie przymocowane bezpośrednio do wirnika silnika. Napędy muszą mieć całkiem spory moment obrotowy jeśli nie stosujemy przekładni dlatego wybrałem największe silniki jakie miałem - iFlight iPower ex-8 105KV, znacznie tańsze kopie używanych w dużych wirnikowcach T-Motor U8. Dzięki swojej budowie (płaska konstrukcja i duża średnica) pozwalają one wygenerować szczytowo 2Nm momentu obrotowego. Mając w głowię gotową wizję robota wykonałem projekt tak aby całość można było wydrukować na drukarce 3D. Wszystkie silniki umieściłem możliwie blisko podstawy a przeniesienie napędu na ostatni człon ramienia realizowane jest przez przekładnię pasową. Wykorzystałem do tego najpopularniejszy pasek zębaty do drukarek 3D i koła pasowe 18T. Części wydrukowałem na drukarce Creality CR-10S z filamentów Spectrum PLA (1, 2). Złożony manipulator prezentuję się następująco: Jak realizowane jest sterowanie? Aby zmienić silnik BLDC w serwonapęd potrzebna jest specjalna elektronika. W pracy miałem pod ręką wolne sterowniki MAB driver. Wykorzystane układy komunikują się przez protokół CAN, mamy możliwość zarówno zadawania położenia, prędkości i momentu, jak również ich odczyt. Jako jednostkę sterującą całością wybrałem Husarion Core2-ROS, którego dostałem kiedyś na zawodach robotycznych. Jego zaletą w tym przypadku jest fakt, że posiada interfejs CAN. Pozwoliło to szybko uruchomić działanie manipulatora. Ponieważ w układach MAB Driver jedną z opcji jest impedancyjne sterowanie przegubami, w bardzo prosty sposób można zadać trajektorię napędom przez regulator PD, którego wyjściem jest moment. Taka technika sterowania sprawia także, że manipulator nie trzyma się sztywno pozycji, ale zachowuje się jakby silniki były sprężynami torsyjnymi. Parametry można regulować podając wprost stałe sprężystości i tłumienia, razem z pozycją zadaną. Do zasilania napędów użyłem najmniejszą baterię jaką miałem pod ręką - litowo-polimerową, 4 celową, o pojemności 6750mAh(polecam na podróże samolotem za granicę, równo 99,9Wh). W takiej konfiguracji uruchomiłem ruch robota (podobny do tego na filmie niżej) i napięcie na celach baterii po około 8h pracy spadło z 4.15V do 3.82V Przewodów komunikacyjnych i zasilających było całkiem sporo. Dla większego porządku jak również zmniejszenia ryzyka awarii umieściłem je w oplotach. Na koniec film z działania robota. Macie jakieś pomysły dot. tego co ciekawego i nietypowego mógłbym założyć na końcówkę robota? Chętnie powiem więcej o szczegółach technicznych. Zadawajcie pytania!
  2. Manipulator "Copernicus" to mój najnowszy projekt, model 4-osiowego robota przemysłowego z ssawką podciśnieniową jako efektorem. Bezpośrednim przyczyną rozpoczęcia budowy był zachwyt nad tego typu profesjonalnymi konstrukcjami, typu Kuka, ABB, Fanuc itd., a które można podziwiać między innymi na różnych targach przemysłowych Robot powstawał w ekspresowym jak dla mnie tempie, około 2 miesięcy, a jego budowa nie byłaby możliwa bez wsparcia sponsorów, którym chciałbym w tym miejscu serdecznie podziękować: Agencji Pracy MONDI Polska, która w ramach programu stypendialnego Mondi Wspiera Talenty sfinansowała większość niezbędnych elementów i części; Firmie IGUS Polska, która jako próbkę udostępniła mi przekładnię ślimakową RL-D-30; Firmie STMicroelectronics, dzięki której otrzymałem płytkę Nucleo; Zespołowi Szkół Łączności im. M. Kopernika w Poznaniu, również za pomoc finansowo-merytoryczną. Dobrze, na początek kilka zdjęć ogólnie przedstawiających robota - przepraszam za nienajlepsze tło, zdecydowanie lepiej ideę pracy robota wyjaśniają filmy Konstrukcja jest trójmodułowa, pierwsze cztery zdjęcia ilustrują właściwego robota, piąte przedstawia stację generującą podciśnienie, dwa ostatnie to sterownik robota Mechanika Podstawę robota stanowi prostokąt plexiglass'u 10mm. Pierwsza oś swobody jest pryzmatyczna, składa się z dwóch prowadnic liniowych ø10 i listwy zębatej. Następnie, na wózku z łożyskami liniowymi DryLin, również firmy Igus, znajduje się pierwsza oś obrotowa z wspomnianą już przekładnią ślimakową. Następnie, trzecią oś swobody, a drugą obrotową stanowi silnik z przekładnią planetarną oraz paskiem zębatym HTD. Ostatnią, czwartą oś, służąca ustawieniu ssawki prostopadle do powierzchni, stanowi ssawka podciśnieniowa Festo, bezpośrednio obracana przez silnik krokowy NEMA17. Taki sam silnik napędza przekładnię ślimakową, natomiast w pierwszej i trzeciej osi wykorzystałem, jak wspomniałem, silniki z wbudowaną przekładnią planetarną. Elektronika Sterownik robota jest trójpoziomowy - na pierwszym z nich znajduje się gniazdo trapezowe, sygnalizatory napięć i 2 zasilacze - 24V/8,5A oraz 12V/5A. Ten pierwszy zasila tylko silniki, natomiast drugi - pompkę podciśnieniową, elektrozawór i wszystkie pozostałe elementy, wykorzystując w tym celu przetwornicę step-down (dającą na wyjściu 5V DC - Nucleo wykorzystuje własny, znajdujący się na płytce stabilizator 3,3V). Na drugim poziomie znajdziemy wspomniane Nucleo F103 i przetwornicę, 2 przekaźniki do sterowania pompką i elektrozaworem, płytkę dystrybuującą zasilanie oraz 4 sterowniki silników krokowych TB6560. Na trzecim poziomie - przycisk bezpieczeństwa i 2 wentylatory. Płyty w sterowniku wykonane są również z plexi 5mm. Do połączeń sterownik-robot-stacja generująca podciśnienie używam w większości złącz wielopinowych dedykowanych automatyce. Robot posiada czujniki krańcowe, potrafi się zerować. Oprogramowanie Napisałem program w Arduino IDE, który zawiera kinetykę odwrotną liczoną z zależności geometrycznych oraz korzystając z biblioteki AccelStepper() steruje "na sztywno" wszystkimi czterema silnikami krokowymi. Następnie wpisałem kilkanaście punktów, i tak robot układa krążki i rozkłada, i tak w pętli... Osiągnięcia, dalsze plany i film Aktualnie, robot może pochwalić się wzięciem udziału w RoboDay 2019 (pokazy na Politechnice Poznańskiej) i II miejscem na µBot (zawody organizowane przez V LO Kraków). Projekt jest aktualnie zamknięty, ale myślę nad rozwojem konstrukcji, na przykład dodaniem kamery PixyCam2. Opis jest dość zwięzły - gdybyście mieli jakiekolwiek pytania, chętnie dopowiem szczegóły Pozdrawiam, wn2001
  3. Witam! Dzisiaj chciałbym zaprezentować Wam mój projekt wykonany w celu obrony inżynierskiej. Jest to mój pierwszy tak rozbudowany projekt, jak i za razem pierwszy wpis na Forbocie, więc od razu przepraszam wszystkich za wszelakie poważne błędy, które mogłem popełnić. Pomysł na niego zrodził się na 3 roku studiów na kierunku Inżynierii Biomedycznej za sprawą mojego promotora dr inż. Jarosława Zubrzyckiego, któremu chciałbym bardzo serdecznie podziękować za poświęcony czas oraz użyczenie drukarek 3D. Całość składa się ze zrobotyzowanego ramienia o sześciu stopniach swobody wraz z osobnym, prostym kontrolerem. Na ramię robota składa się: konstrukcja mechaniczna wykonana z materiału ABS na drukarce 3D Zortrax M200, uPrint SE Plus oraz taniej Creality 10S, małe łożyska kulkowe o średnicy zewnętrznej ∅13 mm i wewnętrznej ∅5 mm, śrubki oraz nakrętki o wielkości metrycznej od M2,5 do M5, część napędowa, na którą składają się serwomechanizmy: TowerPro MG-946R, TowerPro SG-5010, PowerHD HD-1501MG, TowerPro SG92R. Na kontroler składają się: obudowa wykonana z materiału ABS na drukarkach 3D wymienionych wyżej, płytka Arduino UNO Rev3 (klon zakupiony na Allegro), nakładkaprototypowa do Arduino Uno z przylutowanymi komponentami, takimi jak, przewody wyprowadzające potencjometry, LED'y, rezystory, kondensatory oraz stabilizator napięcia L7805CV, oraz sterownik serwomechanizmów Pololu Mini Maestro 12-kanałowy. Serwomechanizmy dobrałem biorąc pod uwagę ich specyfikację (napięcie zasilania) oraz opinię użytkowników wykorzystujących je w swoich projektach. Z racji wykorzystania platformy jaką jest Arduino, jak i tego, że na pracę magisterską planuje ulepszyć projekt , postanowiłem ograniczyć efektor ramienia do postaci prostego chwytaka. Następna wersja projektu zostanie wyposażona w płytkę Raspberry Pi 4B wykorzystującą efektor w postaci teleskopu z podstawową kamerą i diodą doświetlającą. Sterownik serwomechanizmów Pololu Mini Maestro wybrałem ze względu na bardzo prostą obsługę napędów i świetną współpracę układu z Arduino za sprawą dedykowanej biblioteki udostępnionej przez producenta. Sterowanie ramieniem postanowiłem zrealizować dzięki zastosowaniu kontrolera w fizycznej obudowie z zastosowaniem potencjometrów obrotowych, liniowych o wartości 20 kΩ. Dzięki takiemu rozwiązaniu można w prosty sposób zasymulować pracę podstawowego trenażera. Do sygnalizowania trybu pracy ramienia użyłem 2 LED'ów (zielonego i czerwonego) sygnalizujące podłączenie do zasilania (czerwona) oraz możliwość zmiany położenia wałów serwomechanizmów, czy też brak takiej możliwości (zielona). Sterowanie trybem pracy umożliwia przełącznik z zastosowaniem prostego filtru RC eliminującego drgania styków. Wszystkie komponenty zostały przylutowane do nakładki prototypowej, z zastosowaniem przewodów połączeniowych do płytek stykowych (wiem, nie najlepsze rozwiązanie, ale poganiający czas zrobił swoje ). Cały projekt zasilany jest za pomocą zasilacza impulsowego 12 V/ 2,5A CZĘŚĆ MECHANICZNA Po dobraniu wszystkich komponentów i upewnieniu się, że będę miał dostęp do drukarki, niezwłocznie przystąpiłem do projektowania części konstrukcyjnych w oprogramowaniu Autodesk Inventor 2018. Zamierzony projekt prezentował się następująco: Podczas projektowania efektora (chwytaka) zastanawiałem się nad zastosowaniem gotowego rozwiązania, lecz z uwagi na to, że większość znalezionych przeze mnie rozwiązań składało się z wielu komponentów, lub po prostu wizualnie mi nie odpowiadały zaprojektowałem swoje własne (trochę ułomnie, po mechanizm zębaty został zaprojektowany bez użycia modułu wbudowanego w program, ani bez przeprowadzenia potrzebnych obliczeń, ale jak na pierwszy raz nie jestem zawiedziony ). Podstawa ramienia składa się z dwóch części: statycznej oraz ruchomej. Pierwsza jest przymocowana do podstawy przy użyciu 4 wkrętów do drewna M4 i osadziłem w niej jeden z serwomechanizmów. Początkowo planowałem zastosowanie łożyska kulkowego wzdłużnego do wsparcia konstrukcji, ale po "dogłębnej" analizie konstrukcji (czyt. oszczędzanie pieniążków) osadziłem część ruchomą bezpośrednio na wale serwomechanizmu (przy użyciu aluminiowego orczyka). W części ruchomej umieściłem kolejne, dwa, serwomechanizmy odpowiedzialne za sterowanie odpowiednio ramieniem i przedramieniem manipulatora. Ruch z podstawy na przedramię przekazywany został dzięki zastosowaniu ogniwa łączącego "bark" z "łokciem". W "łokciu" osadziłem kolejny serwomechanizm odpowiedzialny za ruch obrotowy przedramienia wokół własnej osi. Na końcu przedramienia, w nadgarstku umieściłem mały serwomechanizm odpowiedzialny za ruch nadgarstka oraz takie same serwo sterujące efektorem (chwytakiem). Przed przystąpieniem do druku 3D elementów ramienia przeprowadziłem analizę MES konstrukcji manipulatora. Manipulator obciążyłem siłą działającą pionowo w dół o wartości 1,5 N, przymocowaną do ramion chwytnych efektora, co symbolizowało obciążenie o wadze około 150g. W efekcie uzyskałem wynik dający wskaźnik bezpieczeństwa konstrukcji w wysokości powyżej 11 (0 fatalnie, 15 max), co świadczy o tym że zaprojektowana konstrukcja jest sztywna i wytrzymała na trwałe odkształcenia. Największe naprężenia wystąpiły na ramionach chwytnych efektora i wynosiły 1,55 MPa. Obudowę kontrolera podzieliłem na 3 części, aby było łatwiej ją wydrukować na drukarce 3D. W panelu górnym umieściłem sześć otworów montażowych na potencjometry liniowe oraz dwa na kolorowe LED'y i jeden większy na przycisk. Dolna część obudowy podzielono na 2 elementy. W jednym z nich umieszczono otwory umożliwiające dostęp do złącz płytki Arduino oraz podłączenie serwomechanizmów do sterownika. UKŁAD STEROWANIA Realizację układu sterowania rozpocząłem od zaprojektowania schematu działania konstrukcji oraz schematu podłączenia wszystkich elementów: Mając gotowy schemat przystąpiłem do realizacji fizycznego układu. Całość prezentuje się następująco: Kod sterujący projektem został napisany w środowisku Arduino IDE, z wykorzystaniem dedykowanej biblioteki do sterownika serwomechanizmów Pololu Mini Maestro: #include <PololuMaestro.h> #include <SoftwareSerial.h> #define pot1 0 //podstawa #define pot2 1 //bark #define pot3 2 //staw łokciowy #define pot4 3 //przedramie #define pot5 4 //ndagarstek #define pot6 5 //chwytak #define sw1 9 //przycisk #define led_g 8 //zielona dioda SoftwareSerial sterownikSerial(10,11); //obiekt treansmisji szeregowej (pin 10 RX, pin 11 TX) MiniMaestro sterownik(sterownikSerial); //obiekt umozliwiający komunikacje ze sterownikiem int val1 = 0; int angle1 = 0; int w1 = 0; int val2 = 0; int angle2 = 0; int w2 = 0; int val3 = 0; int angle3 = 0; int w3 = 0; int val4 = 0; int angle4 = 0; int w4 = 0; int val5 = 0; int angle5 = 0; int w5 = 0; int val6 = 0; int angle6 = 0; int w6 = 0; //===================================PĘTLA KONFIGURACYJNA=================================================== void setup() { //Serial.begin(9600); //urochomienie transmisjii szeregowej w razie potrzeby komunikacji z komputerem sterownikSerial.begin(9600); //uruchomienie transmisjii szeregowej w celu komunikacji ze sterownikiem pinMode(led_g,OUTPUT); pinMode(sw1,INPUT); //brak konieczności zastosowania trybu INPUT_PULLUP ze względu na zastosowanie w układzie rezystora podciągającego digitalWrite(led_g,LOW); //dioda zielona domyślnie jest zgaszona } //========================================PĘTLA GŁÓWNA======================================================= void loop() { val1 = analogRead(pot1); //odczyt danych z potencjoetrów oraz mapowanie otrzymanych wartości angle1 = map(val1,0,1023,2000,10000); //na zakres ruchu poszczególnych serwomechanizmów (jednostka: 0,25us) val2 = analogRead(pot2); angle2 = map(val2,0,1023,2000,10000); val3 = analogRead(pot3); angle3 = map(val3,0,1023,2000,10000); val4 = analogRead(pot4); angle4 = map(val3,0,1023,2000,10000); val5 = analogRead(pot5); angle5 = map(val3,0,1023,2000,10000); val6 = analogRead(pot6); angle6 = map(val3,0,1023,2000,10000); if(digitalRead(sw1) == 0){ //Jeżeli przycisk jest wciśnięty, zielona dioda się świeci oraz digitalWrite(led_g,HIGH); //możliwe jest sterowanie serwonapędami. if(abs(angle1 - w1) < 15) //Jeżeli różnica pomiędzy dwoma kolejnymi wartościami jest mniejsza o 15 jednostek sterownik.setTarget(0,0); //to sygnał nie jest wysyłany do sterownika. else{ sterownik.setTarget(0,angle1); w1 = angle1;} if(abs(angle2 - w2) < 15) sterownik.setTarget(1,0); else{ sterownik.setTarget(1,angle2); w2 = angle2;} if(abs(angle3 - w3) < 15); //sterownik.setTarget(2,0); else{ sterownik.setTarget(2,angle3); w3 = angle3;} if(abs(angle4 - w4) < 15) sterownik.setTarget(3,0); else{ sterownik.setTarget(3,angle4); w4 = angle4;} if(abs(angle5 - w5) < 15) sterownik.setTarget(4,0); else{ sterownik.setTarget(4,angle5); w5 = angle5;} if(abs(angle6 - w6) < 15) sterownik.setTarget(5,0); else{ sterownik.setTarget(5,angle6); w6 = angle6;} } else{ //Jeżeli przycisk nie jest wciśnięty, następuje zgaszenie zielonej diody, a sterowanie digitalWrite(led_g,LOW); //serwomechanizmami jest niemożliwe. } } PREZENTACJA DZIAŁANIA Poniżej zamieszczam krótkie wideo przedstawiające działanie całej konstrukcji. PODSUMOWANIE Tak prezentuje się wykonany przeze mnie projekt. W przyszłości planuje wymienić płytkę Arduino UNO na Raspberry Pi 4, serwomechanizmy na silniki krokowe, efektor w postaci chwytaka na wysuwany teleskop z kamerą na jego końcu oraz drastyczną przebudowę konstrukcji mechanicznej . Jestem świadomy wszystkich uproszczeń jakie popełniłem i na pewno niektóre kwestie mogłem wykonać lepiej (lub po prostu inaczej), lecz z powodu małego zasobu czasowego lub pod wpływem bliżej nieokreślonych emocji postawiłem na rozwiązania zaprezentowane wyżej. Z góry dziękuję za konstruktywną krytykę i cenne uwagi i wskazówki na przyszłość. Pozdrawiam mocno!
  4. 1) Wstęp Postępujący w ostatnich dziesięcioleciach rozwój przemysłu spowodował potrzebę podnoszenie efektywności produkcji przy jednoczesnym obniżaniu kosztów. Naturalnym następstwem jest pojawianie się różnego typu maszyn, urządzeń i instalacji zastępujących pracownika tam, gdzie wykonywana praca jest w pełni powtarzalna pozwalając na wprowadzenie automatyzacji. Jednym z jej owoców są manipulatory – roboty, które działaniem przypominają ludzką kończynę górną. Ich efektorem (końcówką roboczą) może być na przykład chwytak (przenoszenie przedmiotów), wrzeciono frezujące bądź inne elektronarzędzie (obróbka) czy głowica spawalnicza (spawanie). Celem projektu było zbudowanie mini-systemu segregującego krążki na białe i czarne z manipulatorem opartym na projekcie EEZYbotARM https://www.thingiverse.com/thing:1015238 w roli głównej. Kolor krążków miałby być rozpoznawany za pomocą czujnika odbiciowego CNY70 (dioda IR + fototranzystor). Podczas pojedynczego cyklu, wyzwalanego za pomocą przycisku START, robot segregowałby 8 elementów, przekładając je do odpowiednio białego i czarnego pojemnika. Oprócz wspomnianego przycisku, na interfejs użytkownika składałyby się linijka ośmiu diód LED RGB oraz brzęczyk. 2) Parametry modelu Wymiary [cm]: 40x25x20 Kontroler: Arduino Uno R3 + Arduino Sensor Shield V5.0 Zasilanie: Zasilacz DC 5V 4A Czas cyklu: <1min; maximum 8 krążków Czujnik odbiciowy: CNY70 Ruch krążków: Wymuszony grawitacyjnie, szyna ustawiona pod kątem 30° Dodatkowe funkcje: Brzęczyk, przycisk START, 8 diód sygnalizujących RGB 3) Teoria Serwomechanizm modelarski to urządzenie, które sterowane sygnałem prostokątnym PWM pozwala na obrót wału w zakresie 180°. W manipulatorze wykorzystano cztery serwa, trzy główne SG-92R oraz jedno sterujące chwytakiem SG-90. Rozpoznawanie koloru krążka odbywa się poprzez czujnik odbiciowy – powierzchnia biała odbija wiele światła, oświetlając tym samym fototranzystor, co nie ma miejsca przy powierzchni czarnej. Po naciśnięciu przycisku START czujnik rozpoznaje kolor, zwraca informację do sterownika, a ten steruje serwami tak, aby krążki przekładane były do odpowiednich pojemników. Kolejność, w jakiej krążki były ułożone na szynie jest zapisywana na linijce LED. Podstawę stanowi frezowana płyta z mlecznej plexy o grubości 5mm. Pozostałe części wykonano z wykorzystaniem druku 3D, wspomagając się programem Google SketchUp. Rysunek techniczny 2D podstawy, niezbędny do jej późniejszej obróbki na ploterze frezującym CNC, opracowano w programie SolidEdge ST8. Wsad Arduino liczy 170 linijek kodu. Wykorzystano bibliotekę VarSpeedServo.h, która pozwala na zadanie kąta obrotu wału serwa oraz prędkości, z jaką ma ono nastąpić. 4) Film 5) Schemat blokowy i ideowy elektroniki 6) Główny fragment programu for(int x=0; x<8; x++) { //Powtórzenie 8-krotne linijka.setPixelColor(x, linijka.Color(255, 255, 0)); //Sygnalizacja kolorem żółtym, który krążek jest właśnie rozpoznawany linijka.show(); if (analogRead(A0)>=500) //Ocena, czy krążek jest biały (pomiar napięcia na fototranzystorze czujnika CNY70) { BASE.slowmove(50,50); //Ruchy serwomechanizmów RB.slowmove(120,50); RS.slowmove(90,50); GRIP.slowmove(pozycja1,100); delay(1000); GRIP.slowmove(0,100); delay(1000); BASE.slowmove(50,20); RB.slowmove(70,20); RS.slowmove(140,20); delay(1000); BASE.slowmove(10,50); RB.slowmove(110,20); delay(1000); GRIP.slowmove(pozycja2,100); delay(1000); linijka.setPixelColor(x, linijka.Color(255, 255, 255)); //Sygnalizacja kolorem białym, właśnie przełożony krążek był biały linijka.show(); } else if (analogRead(A0)<500) //Analogicznie dla krążków czarnych {...} Podsumowanie Wszystkie początkowo zakładane wymagania i cele zostały osiągnięte. Co ważne, na podstawie kilkudziesięciu prób można stwierdzić, że instalacja cechuje się wysoką niezawodnością – skuteczność w rozpoznawaniu detali wynosi 100%, nie dochodzi również do zacięć czy w samym działaniu mechaniki i elektroniki. Model budowałem hobbystycznie, natomiast później prezentowałem go na różnych pokazach itd. oraz konkursie innowacji technicznych, gdzie reprezentowałem szkołę. Pozdrawiam Zapraszam do pozytywnej krytyki PS. Kilka zdjęć (dwa ostatnie zdjęcia pokazują spód modelu, który stoi na pomarańczowych "nóżkach")
  5. Witam wszystkich, od mojego ostatniego postu tutaj minęło sporo czasu ale wcale nie porzuciłem robotyki. Jak wszyscy wiemy życie po studiach zaczyna zjadać coraz więcej czasu. Prawie 4 lata temu wrzuciłem tutaj post z moją konstrukcją robota typu delta (Delta Robot). Mam wrażenie, że bardzo fajnie się przyjął i tamta konstrukcja (jak wspominałem 4 lata temu) była prototypem, na którym zaczynałem się uczyć. Cztery lata rozwoju nie tylko mnie ale też dostępnej technologii jak np. druk 3D i mocniejsze mikrokontrolery niż poczciwa Atmega pozwoliły mi rozwinąć skrzydła. Ale przechodząc do meritum, przedstawiam moją następną wersję robota typu delta: Robot składa się w tym momencie z: ramienia, taśmociągu, systemu wizyjnego. systemu generującego podciśnienie 1.Mechanika Do zrobienia tego robota wykorzystałem tyle części z poprzedniej konstrukcji ile się dało. Ale ze względu na postęp techniki i moje większe możliwości finansowe większość przeprojektowałem w SolidWorksie i wydrukowałem na własnej drukarce 3D. Ramiona zamontowane są na podwójnie łożyskowanym wale, który napędzany jest poprzez pasek zębaty, a ten z kolei przez silnik krokowy z zamontowanym 12bitowym enkoderem. Taśmociąg także sam zrobiłem z profilu aluminiowego z Allegro oraz silnika DC z przekładnią. Pas kupiłem z profesjonalnej firmy na zamówienie. Może to brzmi groźnie i drogo ale tak nie jest. Pas kosztował 110 zł brutto. robot posiada 4 osie, dokładnie tak jak poprzednia konstrukcja. 2. Elektronika Najważniejszym układem scalonym jest mikrokontroler TEENSY 3.6 (link) zajmuje się: sterowaniem silnikami krokowymi, obsługą enkoderów silników jak i taśmociągu, komunikacją z komputerem, zapisem programów, punktów oraz wszelkich ustawień na karcie SD Jest to kontroler kompatybilny z bibliotekami Arduino i szczerze dla całego projektu zbawienne było to, że miałem gotowe biblioteki dla wielu rzeczy i nie musiałem się uczyć tego procka wraz z wszystkimi rejestrami, algorytmami zapisu na kartę SD, protokołu SPI oraz obsługi wielu peryferii jak sterowniki silników krokowych (o tym za chwilę) oraz np. ekranu LCD. Mogłem się skupić na moim celu czyli aplikacji, która ma spełniać moje założenia. Dodatkowo w kontrolerze, a także w ramieniu znajdują się: Teensy 3.2 - obsługa ESTOP, IO (wejść/wyjść), obsługa LCD oraz pomost w komunikacji pomiędzy głównym prockiem, a Arduino w ramieniu, Arduino Nano - obsługa PID taśmociągu, sterowanie serwochwytakiem ( kontroler Pololu Maestro), sterowanie pompą podciśnienia oraz elektrozaworem, Arduino Nano - komunikacja z komputerem poprzez zTCP/IP Silniki wyposażone są w enkodery absolutne AMS AS5045, które dostałem za darmo. Robot wyposażony jest w 4 wejścia oraz 4 wyjścia 24V (standard przemysłowy). W celu testowania czy wszystko dobrze działa zrobiłem dodatkowo prosty panel z 4 diodami oraz 4 przyciskami do testowania czy wszystko dobrze działa. Silniki sterowane są poprzez sterownik silników krokowych AMIS-30543 (link), który pozwala na konfiguracje poprzez magistralę SPI, a także na sterowanie z mikrokrokiem x32, które to sterowanie tutaj wykorzystuję. Dodatkowo jak widać na zdjęciach zaprojektowałem oraz zmontowałem (po dostaniu od Satlandu) płytki, które pozwoliły wszystko spiąć ze sobą. Nie będę wrzucał schematu PCB, bo nie jest to nic interesującego. 3. System wizyjny Robot skalibrowany został z systemem wizyjnym OpenMV (link). Kamera została zaprogramowa w języku Python i jej zadaniem jest w zadanym czasie (komunikat wysłany po uart) zrobić zdjecie i zliczyć bloby o odpowiedniej wielkości. Kamera wurzyca po porcie uart dane do mikrokontrolera głównego w postaci NUMER/X/Y/KĄT/ już we współrzędnych robota. Po dostaniu danych do tablicy punktu dodawana jest aktualna pozycja taśmociągu. Dzięki temu robot jest w stanie trafić w detal podczas ruchu taśmy. 4. System sterowania Całość oparta jest na matematyce, mikrokontroler oblicza zadanie proste oraz odwrotne kinematyki (dla pozycji oraz prędkości). W przeciwieństwie do starej konstrukcji układ sterowania naprawdę bierze pod uwagę pozycję oraz prędkość, dzięki temu robot porusza się bardzo płynnie oraz może zachować określoną prędkość liniową punktu TCP (Tool Central Point). Algorytmy pozwalając na poruszanie się w trybach: JOINT - ruch obliczany jest tak, aby każda oś zakończyła pracę w tym samym czasie, LINEAR - ruch lionowy punktu TCP z określoną prędkością liniową, TOOL - ruch liniowy ale zgodny z układem współrzędnych narzędzia CONV - tryb ruchu liniowego z załączonym śledzeniem taśmy, Cały program posiada w tym momencie jakieś 6 tys linijek kodu i pozwala na pracę w trybie automatycznym jak i ręcznym robota. Całość jest napisana w języku C/C++. 5.Program na PC Program napisany w C# w środowisku VisualStudio. Pozwala na: załączenie silników (przekaźnik odcinający na linii 24V), Zwolnienie napędów (enable na sterowniku krokowców) ułatwia ręczne uczenie punktów, Resetowanie błędów, Sterowanie robotem w trybie ręcznym, Uczenie punktów, Edycję ręczną zapisanym punktów na robocie, ustawienie układu TOOL oraz pozycji domowej robota, pisanie prostych programów w skryptowym języku podobnym do BASICA (jestem w trakcie prac) uruchamianie programów w trybie automatycznym, deklarowanie konkretnych działań pod wejścia oraz wyjścia np. cykl start na wejściu 1 podgląd pozycji robota, podgląd IO robota, sterowanie taśmociągiem, zapisywanie oraz sczytywanie ustawień robota oraz punktów z/do pliku na PC po połączeniu z robotem automatyczne sczytanie ustawień oraz punktów z karty SD w kontrolerze. 6.Filmiki Wiem, że to tylko krótki post na temat tego robota i w temacie dla zainteresowanych jest znacznie więcej do opowiedzenia dlatego jak ktoś ma jakieś pytania to zapraszam do komentarzy oraz wiadomości
  6. Jakiś czas po tym jak na światło dziennie wystawiłem z warsztatu moje poprzednie ramię zdałem sobie sprawę, że w rzeczywistości jest niezbyt praktyczne. Moment, w którym po długich miesiącach zastanawiania się nad modelem i idealizowania go w głowie dochodzimy do wniosku, że to nad czym pracowaliśmy jest zwyczajnie "ograniczone" bywa rozczarowujący... Każdy kto choć raz doświadczył tego uczucia zapewne wie o co chodzi. Tak czy inaczej mając do wyboru zwinąć się w kulkę i gorzko zapłakać a stworzyć kolejny, inny, a być może nawet lepszy pod wieloma względami model nie zastanawiamy się długo. Przynajmniej ja. I taka właśnie jest geneza powstania tego co widzicie - sześcioosiowego ramienia z PF tworzonego na wzór fabrycznych robotów produkcyjnych. Pisząc ograniczone w powyższym paragrafie miałem na myśli w szczególności zakres ruchów mojego poprzedniego robota. Był bardzo ograniczony, głównie ze względu na to, że w pierwszej kolejności skupiłem się na budowie dłoni, przedramienia i nadgarstka pozostawiając największe partie (tylną część ramienia i podstawę) bez "interwencji automatyka". Miało to oczywiście swoje plusy, nie musiałem przecież tworzyć mocno obciążonych dodatkowych osi obrotu w okolicach barku, co i tak pewnie dla wielu wydałoby się niemożliwe. Ciekawszym rozwiązaniem później wydało mi się wówczas stworzenie mniej humanoidalnej a bardziej robotycznej ręki, na której można by było odtworzyć znacznie szerszy wachlarz sztuczek typu: zabawa z jabłkami i przenoszenie technicowych kół. Takim idealnym wzorcem są oczywiście, pewnie większości znane manipulatory wieloosiowe. Są to maszyny najczęściej wykorzystywane jako roboty produkcyjne do pracy w fabrykach ze względu na swoją uniwersalność. W ogóle Technica odziwo spotkałem się z dosyć małą liczbą tego typu konstrukcji, a te, które widziałem najczęściej nie budziły we mnie większego wow. Ale ponieważ w wielu przypadkach wyjątek potwierdza regułę, tak i w tej dziedzinie na uwagę niewątpliwie zasługuje robot azjatyckiego konstruktora akiyuky: Nie szukając dalej, zacząłem budować. Początkowo segment umiejscowiony bezpośrednio za chwytakiem, który niejako mieścił w sobie 3 pomocnicze osie, a później przyszły zamówione obrotnice i zabrałem się za całą resztę. O ile na początku było łatwo, później, w szczególności wtedy gdy do gry weszły większe obciążenia zabawa się skończyła a zaczęła agonia zmieniania ogólnej struktury i metod poruszania poszczególnymi sekcjami. Początkowo chciałem do tego wykorzystać jedynie silniki z solidnie przyłączoną przekładnią ślimakową, ale naprężenia stały się tak duże, że nawet ku mojemu zdziwieniu ślimak z zębatką 24z zamknięty w jednoczęściowej obudowie nie pomógł... A wszędzie tam gdzie fizyka nie pozwala, trzeba po prostu zmienić plany. I tak ostatecznie zdecydowałem się na użycie siłowników śrubowych. Wspominałem już, że nawet wtedy w wyniku przeciążenia uszkodził mi się jeden z większych silników jakie miałem. Koniec końców, powstał model, który zaliczyłbym raczej do konstrukcji prezentacyjnych, ale nadal mniej praktycznych na co wpływa m.in. uszkodzenie silnika podczas budowy - w jego wyniku musiałem się zdecydować napędzać funkcję ręcznie co trochę trwa. Podobna sytuacja wynikła też z kompresorem do chwytaka - po paru próbach zdecydowałem się na osobną pompkę z zewnętrznym zaworem. Ciekawych doświadczeń przysporzyło też modelowanie robota. A ponieważ w dużej mierze mechanika modelu mimo faktu wystąpienia wszystkich sześciu osi i chwytaka kasku nie urywa, postanowiłem, że robot będzie przynajmniej wyglądać dobrze, w końcu model jak zakładam, będzie mi służył głównie do celów prezentacyjnych. Film: Zdjęcia:
  7. Witam, cieszę się, że istnieje takie forum dla zapaleńców robotyki i w ogóle automatyzacji. Chciałem Wam przedstawić mój najnowszy projekt pt. Robot z drewna Tak naprawdę tylko ramiona są wykonane z drewna, sterowanie jest oparte o RasPi3, mikrokontrolery atmega8 (na każde serwo jedna atmega, jest pięć serw) i kilka innych elementów elektronicznych. Koła zebate są wykonane z aluminium i starałem się, aby w miarę możliwości co się da, było wykonane z niego. Projekt ten jest rozwojowy, chodzi o opracowywanie z mojej strony algorytmu nauki ruchu ramieniem robotycznym i ogólnie napisaniu aplikacji sterującej wszystkimi procesami robota. Oprogramowanie napisane jest w środowisku Lazarus, jest to odmiana języka Object Pascal. Atmegi oprogramowałem w Bascomie.RasPi komunikuje się z atmegami po protokole i2c, choć przyznaję, że lepszym jest wykorzystanie rs485. Padło na i2c bo dotychczas niewiele miałem z nim do czynienia i zwyciężyła ciekawość. Ramię ma (lub wkrótce będzie miało) możliwość wykonywania zaprogramowanej w trybie online trajektorii przemieszczenia efektora końcowego, czyli przemieszczaniu jednego serwa lub kilku na raz. Tworzenie tej trajektorii polega na zapamiętywaniu pozycji enkoderów i w ten sposób tworzenia punkt po punkcie ścieżki. Pozdr, Marcin
  8. Witam, Przedstawiam ostatnio zbudowanego przeze mnie robota, a mianowicie manipulator 5 osiowy + chwytak. Nadarzyła się okazja na kupno kilku elementów, więc nie zastanawiając się zbytnio, zakupiłem je i przystąpiłem do budowy owego ramienia. Podstawę zrobiłem z profilów aluminiowych, które zmontowałem na stalowej tarczy. Wszystkie osie napędzane są przez serwa KS-35 18 (15kg/cm), natomiast do chwytaka założyłem Hitec hs-322hd. Da pierwszej osi zrobiłem łożysko z dwóch krążków z plexi, które sam ręcznie frezowałem. Pomiędzy krążkami jest koszyczek z kulkami z jakiejś starej mikrofalówki . Całe łożysko oparte jest na podporach również z profili aluminiowych. Stelaż pozostałych czterech osi zmontowałem z omówionych wcześniej części. Chwytak wydrukowałem na drukarce 3D i zamontowałem go do reszty na płaskownikach aluminiowych. Serwa zasilam z akumulatora żelowego 6V/14Ah. Płytą główną kontrolera jest płytka M0 zgodna z Arduino IDE. Ma po prostu większą pamięć operacyjną i wewnętrzną. Pozycje serw reguluje za pomocą potencjometrów. Sygnał przesyłam za pomocą kabla RJ-45. Poza manualnym sterowaniem robot ma funkcję zapamiętywania pozycji i odtwarzania ich w pętli. Kontroler zasilam z Powerbanka. Poza działaniem chciałem żeby był dość mobilny i estetycznie wykonany, więc zrobiłem do niego futerał. Poniżej przedstawiam kilka fotek do oceny, a za niedługo wstawię filmik z działania. Pozdrawiam
  9. To co tutaj widzicie, winien byłem pokazać Wam już od dawna, jednak z powodu braku możliwości do swobodnego stworzenia nagrania pokazującego funkcje robota (oraz konta na forum), przeleżał on jakiś czas kurząc się w moim warsztacie, aż do teraz... prawie miesiąc po tym jak go ukończyłem. Tak więc, lejdis end dżentelmen, prezentuję wam to oto robotyczne ramię wykonane z Lego: Przechodząc do konkretów zabrzmię może trochę dziecinnie mówiąc, że owe ramię zostało w pełni skonstruowane z oryginalnych części Lego (włącznie z elektryką i pneumatyką), a jedynymi nieoryginalnymi elementami są linki służące do zginania palców i garść gumek recepturek wykorzystanych do ich wyprostowywania oraz wiązania przewodów. Tak czy inaczej, tą konstrukcję możemy w całości zaliczyć do budowli z klocków, czy tego chcecie, czy nie. Oczywiście, oprócz "zwykłych" i często powielanych w oficjalnych zestawach części, mamy tu sort elementów obwodu elektrycznego i całkiem rozbudowany układ pneumatyczny. A te dwa właściwie wzajemnie się uzupełniają, tzn. mamy: - 2 czujniki podczerwieni, umożliwiające zdalne sterowanie; - 6 silników, z których jeden napędza kompresor; - 7 siłowników pneumatycznych; - 4 siłowniki śrubowe; - 6 zaworów doprowdzających powietrze do każdego siłownika; - pompę kompresora napędzaną jednym wyżej wymienionych silników; - wyłącznik ciśnieniowy, który odłącza kompresor, gdy w układzie zapanuje zbyt duże ciśnienie Skoro zapoznaliśmy się już z bill of material, pora przyznać się co skłoniło mnie do budowy. Otóż, pomysł narodził mi się w głowie jakieś 5 i pół roku temu jak natknąłem się na ten Jak na tamten czas obejrzana koncepcja wydawała mi się bardzo ciekawa, genialna wręcz w pomyśle i zastosowanych rozwiązaniach. Dodatkowo należy zwrócić uwagę na fakt, że autor wstawił dostępną dla wszystkich instrukcję budowy w opisie filmu, co może się przydać jeśli komuś z was przyszedł by pomysł, aby podjąć się budowy modelu o własnych siłach, ale nie będę dłużej kusił. Ja sam po latach miałem przyjemność zrekonstruować owe ramię, w dosyć dokładny sposób, natomiast szczerze zawiodłem się na działaniu. Duże obciążenia i sztywność niektórych części powodowały przerwy w działaniu, a czasem nawet blokowały zakres ruchów (szczególnie dłoni i nadgarstka). Ponadto, niektóre łączenia wymagały wzmocnienia, bo zdarzało się nie raz, że dana część się odczepiła, a oczywiście można było temu zapobiec. Pytacie skąd taka ocena? Te spostrzeżenia wyrobiłem sobie, ponieważ w ostatnim czasie otrzymałem zaproszenie na jeden festiwal popularnonaukowy, a szukając inspiracji z czym mógłbym tam pojechać pomysł od razu wpadł mi do głowy. Co prawda istniały różnice pomiędzy tym co było na filmie, a tym co osobiście zbudowałem i taką rzeczą były np. przewody, bo (ze względu na koszty) użyłem sztywniejszych poliuretanowych zamiast silikonowych jak w oryginale, a piszę to tym właściwie tylko dlatego, że niby taka mała zmiana a nastręczyła sporych problemów. Bo założenie ich na legowe siłowniki, zawory i rozdzielniki wymagało niemałej siły, dlatego też szybko po pierwszych próbach zacząłem stosować patent z rozpychaniem ich gwozdziem, a do tego oczywiście bez smaru się nie obyło. Po godzinach spędzonych na ich łączeniu odciski na palcach były okropne... Tak więc, mając to wszystko na uwadze, wyznaczyłem sobie za cel zbudowanie tego lepiej, mocniej i bardziej kompaktowo (bo co prawda o tym nie wspomniałem, ale pierwotne ramię było dość duże z nieproporcjonalnie wręcz wielką dłonią). Pomysł miałem cały czas gdzieś z tyłu głowy, zbudowałem jeden moduł służący do obrotu pozniejszego przedramienia gdzieś na początku tego roku, a reszta prac ruszyła właściwie po tym jak dowiedziałem się o trzeciej już edycji konkursu organizowanego przez PB: El-Robo-Mech. Tym sposobem dalsze prace potoczyły się gładko i zwięzle. Całokształt ramienia miałem właściwie gotowy czwartego dnia budowy o ile dobrze pamiętam, a całość zajęła trochę dłużej niż tydzień, no może dwa Najwięcej roboty, co już chyba przywykło do większych modeli było z przewodami. Tym razem, na szczęście już silikonowymi, dlatego łatwiej było je zakładać i nie były takie sztywne. Za to było ich tyle, że w konstrukcji ramienia jak i przedtem musiałem przewidzieć specjalne szyby dla nich, w przeciwnym wypadku wystawałyby za model niszcząc jego estetykę. Jednak to nie przewody miały być innowacyjnością w tej koncepcji. Tak naprawdę, główną różnicą, która zaważyła na prostocie działania, wielkości dłoni, a co za tym idzie i całego ramienia była budowa palców poruszanych dwoma siłownikami poprzez system linek, zakładanych na podobieństwo ścięgien w ludzkiej dłoni. Ten zabieg pozwolił znacznie odchudzić dłoń, nadając jej tym samym bardziej realistyczny wygląd.Co do działania, będę trochę leniwy w opisie, co nie znaczy, że opiszę je powierzchownie. Po prostu, poniżej macie w większości skopiowany tekst z mojej prezentacji (choć może nie powinienem tego pisać, bo teraz nie będzie chciało się wam czytać :3), która chyba nie jest taka zła skoro zakwalifikowała się jak na razie do pierwszego etapu konkursu No i oczywiście film: Opis ogólny Robot posiada dwie funkcje elektryczne i sześć pneumatycznych. Funkcje w pełni elektryczne obejmują dwie możliwości ruchu przedramienia: zginanie wokół stawu łokciowego oraz obrót nadgarstka o 90 stopni wokół osi wzdłużnej przedramienia. Obie są sterowane pilotem na podczerwień dzięki czujnikom umieszczonym na cięższym końcu ramienia. Wśród funkcji pneumatycznych mamy natomiast te typowe dla motoryki małej człowieka. Są nimi: ruch nadgarstka wokół osi poprzecznej przedramienia oraz funkcje odpowiedzialne za chwyt i ułożenie palców. Ruchy te są wykonywane dzięki siłownikom pneumatycznym, z których każdy podłączony jest do oddzielnego zaworu. Te z kolei – wszystkie napędzane są jednym kompresorem poprzez wyłącznik ciśnieniowy. Układ elektryczny W skład całego modelu wchodzą łącznie: 2 pojemniki na baterie, 2 czujniki podczerwieni sterowane pilotem, 5 silników o momencie 3,6 N*cm i jeden mocniejszy o momencie 14,5 N*cm (uwzględniając w tym ich redukcję wewnętrzną). Słabsze silniki wykorzystane są do napędzania funkcji elektrycznych: cztery z nich, parami sprzężone na sztywno odpowiadają za zginanie ramienia wokół łokcia, a ostatni z nich, piąty został użyty do jego obrotu. Szósty, największy silnik natomiast został wykorzystany do napędzania kompresora. Cały obwód jest zasilany napięciem 9V. Układ pneumatyczny W skład tego układu wchodzą: kompresor z pojedynczym tłokiem o średnicy d=16 mm i takim samym skoku (s), wyłącznik ciśnieniowy, 6 zaworów, 2 siłowniki o d=16, s=48, 4 siłowniki o d=16, s=28 oraz 2 miniaturowe siłowniki o d=8, s=16. Wygląda to w ten sposób, że spora część jak i „serce” całego układu w postaci kompresora znajduje się poza ramieniem, a wszystkie komponenty są z nim połączone poprzez silikonowe przewody o średnicy wewnętrznej 2 mm. Układ oparty jest o jednokierunkowy przepływ powietrza, tzn. powietrze jest zawsze wpompowywane w każdy siłownik niezależnie od tego czy się wysuwa czy wsuwa. Całość działa pod względnie niewielkim ciśnieniem. Funkcja 1: Obrót przedramienia wokół jego własnej osi Ten ruch jest możliwy dzięki konstrukcji, w której ruchoma część przedramienia jest osadzona na obrotnicy o średnicy 56 mm napędzanej pojedynczym silnikiem poprzez parę zębatek walcowych i przekładnię ślimakową. To ułożenie daje nam ostatecznie 338,8 N*cm momentu siły z jaką ręka wraz z dłonią oraz chwytanym przedmiotem będzie się obracać. Jest to całkiem sporo nawet jeśli uwzględnimy straty sprawności wynikające z tarcia i chociażby sztywność przewodów, które lekko hamują rękę w nadgarstku, gdzie są skumulowane. Funkcja 2: Podnoszenie i opuszczenie przedramienia Druga i ostatnia zarazem funkcja sterowana w pełni elektrycznie to najprościej mówiąc ruch góra-dół przedramienia wraz z dłonią w oparciu o staw łokciowy. Ruch ten zawdzięczamy czterem silnikom o łącznym momencie 14,5 N*cm, z których każdy przyłączony jest do jednego siłownika śrubowego o wysięgu 40 mm. Właśnie przez te siłowniki, silniki są parami sprzężone ze sobą na sztywno, a w praktyce wygląda to tak, że po prostu sumuje się ich siła. Staw łokciowy w celu zminimalizowania tarcia oraz zwiększenia precyzji ruchu oparty jest na dwóch ulokowanych symetrycznie obrotnicach o d=56 mm. Funkcja 3: Zmiana nachylenia dłoni w nadgarstku Czynność ta odbywa się za pośrednictwem dwóch siłowników pneumatycznych o łącznej sile nacisku 59,6 N. Ze względu na sam ciężar dłoni, można zauważyć, że szybciej wykonuje ona ruch w przód, ale nie odgrywa to większej roli w sposobie poruszania się modelu. Dzięki tej funkcji motoryka dłoni wydaje się być jeszcze bardziej naturalna. Funkcje 4 i 5: Zginanie palców dłoni Zginanie poszczególnych palców odbywa się za pomocą dwóch kolejnych siłowników pneumatycznych podłączonych do różnych zaworów, a co za tym idzie – sterowanych osobno. Innymi słowy: po przesunięciu jednej dźwigni zaworu zegną się lub wyprostują dwa palce: wskazujący i środkowy albo serdeczny i mały. Mamy więc do dyspozycji dwie dźwignie, a więc i dwie funkcje, które zdecydowałem się w tym miejscu opisać jako jedną, bo przecież chodzi nam najczęściej o jedno i to samo: aby robot uchwycił i przemieścił jakiś przedmiot. Patrząc pod tym względem jest to spore ułatwienie, ponieważ wykonując domyślnie prostą czynność nie musimy zawracać sobie głowy ułożeniem poszczególnych palców i ich segmentów. Robot zrobi to za nas dobierając odpowiednią siłę nacisku w każdym segmencie dzięki sprytnemu ulokowaniu recepturek i linek napinających. Funkcje 6 i 7: Ruch kciuka Na ostateczne położenie przeciwstawnego palca w tym modelu wpływają dwa siłowniki, takie same jakie wykorzystałem do zmian nachylenia dłoni, czyli o d=16 i s=28. Pierwszy z nich widoczny jest na zewnętrznej stronie dłoni i odpowiada za ruch kciuka do przodu i w tył. Dzieje się to za pomocą przeniesienia siły wysięgu przez pojedyncze cięgno o łączeniach kulowych i długości między środkami łączeń l=40mm (ciemnoszare na zdj.) do części właściwej kciuka zamocowanej na osi pod kątem 53 stopni względem linii zgięcia dłoni. Drugi siłownik jest umieszczony w ten sposób, że jego dolna nasada znajduje się praktycznie przy samym zakończeniu kciuka. Jest odpowiedzialny za ruch palca do środka bądź na zewnątrz dłoni. Oba z nich są sterowane osobno. Funkcja 8: Rozpostarcie palców Ten ruch rozumiemy przez swobodne odchylanie palców, tak aby każdy znajdował się bliżej lub dalej od sąsiada na płaszczyźnie wyprostowanej dłoni. Zależnie od tego czy chcemy uchwycić duży czy też mały przedmiot, możemy zmienić szerokość „luk” pomiędzy palcami poprzez rozpostarcie ich. Za tę niewinną funkcję odpowiada najmniejszy z zastosowanych w modelu siłowników pneumatycznych o d=8 i s=16 umieszczony po zewnętrznej stronie dłoni. Przy pełnym rozpostarciu nieco spada nam napięcie linek odpowiadających za zginanie małego i serdecznego palca, ale nie zmienia to faktu, że ta czynność dalej jest w pełni możliwa. Słowami zakończenia, z tego miejsca muszę wam szczerze pogratulować, że doszliście do tego miejsca, bo sam pisząc to nie wiedziałem do końca, że tak dużo mi to zajmie. W sprawach dalszego rozwoju mogę powiedzieć tyle, że planuję dalej rozwijać projekt, a pierwsze pomysły na to już padły. Przede wszystkim zacznę od przejścia z trybu ręcznego sterowania zaworami do zaworów sterowanych serwomechanizmami, np. przez laptop i płytkę Arduino, gdzie po wpisaniu odpowiednich komend będziemy mogli otwierać i zamykać poszczególne dopływy powietrza. W czym to ma niby pomóc? Otóż, nieraz sterując ramieniem ręcznie musimy przełączać więcej niż jedną dźwignię w celu wykonania prostej czynności. W domniemanym przypadku np. po wpisaniu komendy „catch” system sam odpowiednio dobierze, które porty zostaną otwarte, a z czasem może ich się zrobić nawet sporo... Co więcej, gdy będziemy mieli już płytkę Arduino w układzie, będę mógł poszerzyć model o zaprojektowany własnoręcznie cyfrowy miernik ciśnienia, który będzie przydatny do monitorowania jak zmienia się ciśnienie w obwodzie oraz system pomiaru ciężaru i wielkości chwytanych obiektów. W planach mam także rozbudowanie ramienia o odporny na działanie dużych sił staw barkowy, który znacznie poszerzyłby zakres ruchu robota. Kontakt: psor2.0@gmail.com
  10. Jakiś czas temu obudziłem się rano z przeświadczeniem, że koniecznie muszę zbudować robota w konfiguracji delta. Postanowiłem spróbować spełnić ten kaprys przy pomocy tego, co akurat miałem w domu pod ręką -- czyli serw i spinaczy do papieru: To niestety nie zadziałało za dobrze -- haczyki, które w teorii powinny stanowić przeguby, w praktyce miały tendencję do haczenia się i generalnie ustawiania w pozycjach, w których nie dało się nimi ruszać. Zdecydowałem, że trzeba podejść do sprawy bardziej profesjonalnie i użyć przegubów kulowych. Ruszyłem zatem do ulubionej chińskiej strony zakupowej w poszukiwaniu mosiężnych koralików. Niestety okrągłe koraliki sprzedawane były wyłącznie w ilościach od tysiąca sztuk w górę -- co prawda za grosze, ale co ja mam potem z resztą robić? Natomiast przy szukaniu koralików wpadły mi w oczy popychacze modelarskie z tak zwanymi "snapami" -- czyli tak naprawdę gotowymi przegubami kulowymi. Postanowiłem pójść na łatwiznę i zamówiłem. Kilka dni temu popychacze przyszły. Trochę się zdziwiłem, że są większe niż się spodziewałem, ale nie szkodzi -- zrobię większego robota, użyje większych serw, które leżą już w szufladzie ładnych parę lat. Zacząłem się zastanawiać z czego zrobić pozostałe mechaniczne części robota i oczy moje padły na stertę płytek PCB, które zamówiłem do jednego z prototypów mich robotów -- teraz już zastąpione nowszą wersją. Płytki te stanowią ciało robota, więc mają odpowiednie otwory do przykręcenia orczyków serw -- to, czego potrzebuję. Postanowiłem wykorzystać je jako materiał budulcowy, po uprzednim pocięciu ich na odpowiedniej wielkości kawałki dremelem: Trochę więcej pracy wymagało zrobienie głowicy robota, ale tutaj z pomocą przyszły porzucone uprzednio spinacze do papieru -- okazuje się, że całkiem dobrze dają się lutować do tych kawałków płytek, zatem zlutowałem je w odpowiedni kształt. Podstawę robota zrobiłem z pozostałych płytek PCB, skręcając je razem śrubami. Serwa przymocowałem najpierw po prostu taśmą dwustronną, ale potem przylutowałem do płytek uszka ze spinaczy, do których przykręciłem serwa śrubami. I to tyle, jeśli chodzi o mechanikę. Za mózg posłużyło ciało jednego ze starszych i pozbawionych już nóg prototypów moich kroczących robotów. ESP8266 i sterownik serw PCA9685, do tego bateria LiPo do zasilania -- nic skomplikowanego. Czas zabrać się za programowanie. Dużo słyszałem narzekania na złożoność kinematyki odwrotnej robota w układzie delty, więc zostałem miło zaskoczony kiedy usiadłem do tego z papierem i ołówkiem i okazało się, że jest to prostsze niż przy tradycyjnym ramieniu. Wszystko, co muszę obliczyć to odległości punktu docelowego do poszczególnych serw, a następnie kąty, pod jakimi te serwa muszą się ustawić, żeby ich dźwignie właśnie w takich odległościach się ustawiły. To ostatnie daje się łatwo policzyć z prawa kosinusów, aczkolwiek przy pierwszym podejściu trochę sobie niepotrzebnie utrudniłem zadanie: Otóż uwzględniłem w obliczeniach wielkość głowicy. Potem okazało się jednak, że niepotrzebnie, bo można ją z łatwością usunąć z równania, jeśli tylko przesuniemy o tę wielkość serwa -- w końcu kąt się wówczas nie zmienia. Ostatecznie, dwie krytyczne funkcje w moim programie to: def arm_ik(self, distance): alpha = math.acos( (self.BASE_LENGTH - self.HUB_LENGTH) / (distance) ) beta = math.acos( (distance ** 2 + self.ARM_LENGTH ** 2 - self.ROD_LENGTH ** 2) / (2 * self.ARM_LENGTH * distance) ) return math.pi - alpha - beta def robot_ik(self, x, y, z): return tuple(math.sqrt( (self.BASE_X[arm] - x) ** 2 + (self.BASE_Y[arm] - y) ** 2 + z ** 2 ) for arm in (0, 1, 2)) Na razie testy wypadają pomyślnie -- udało mi się narysować na trzymanej kartce kółko. Co prawda kółko miało mieć promień 5cm, a ma ~2cm -- zapewne gdzieś zrobiłem jakiś błąd przy wymiarowaniu. Będę jeszcze się tym bawił. Niestety, precyzja tego robota pozostawia wiele do życzenia. Stawy kulowe popychadeł modelarskich mają drobne luzy, które powodują chybotanie się głowicy -- nie jest ona idealnie poziomo. Dodatkowo luzy w samych serwach są dość spore i powodują niedokładności w pozycjonowaniu głowicy. Ogólnie, jest to raczej zabawka edukacyjna niż cokolwiek z poważnym zastosowaniem, ale i tak jestem z niego dosyć zadowolony. [ Dodano: 18-03-2017, 21:45 ] No i siedziałem nad tym i siedziałem aż wysiedziałem. Nie da się wyliczyć poprawnie kąta ramienia tylko z odległości punktu docelowego, bo koniec popychacza musi jeszcze dodatkowo wskazywać w kierunku tego punktu -- zatem niezbędna jest jeszcze znajomość wysokości. Nie zauważyłem tego, bo zawsze rysowałem ramię w tej samej pozycji, w której akurat przypadkiem wysokość się zgadzała z kierunkiem. Dodanie do obliczeń kinematyki odwrotnej ramienia wysokości znacząco poprawiło wyniki: def arm_ik(self, distance, z): alpha = math.asin(z / distance) beta = math.acos( (distance ** 2 + self.ARM2ROD2) / (2 * self.ARM_LENGTH * distance) ) return math.pi - alpha - beta def robot_ik(self, x, y, z): return tuple(math.sqrt( (self.BASE_X[arm] - x) ** 2 + (self.BASE_Y[arm] - y) ** 2 + z ** 2 ) for arm in (0, 1, 2)) def move_to(self, x, y, z): for arm, distance in enumerate(self.robot_ik(x, y, z)): self.move(arm, self.arm_ik(distance, z))
  11. Witam, przedstawiam moją nową konstrukcje jest to manipulator sterowany za pomącą joystick-a zbudowanego z potencjometrów. Użyte elementy to: 6 Serw modelarskich, licząc od strony chwytaka: 2x SG90(micro),1x S3003RC(standard),3x MG996R(standard) . łożyska kulkowe; płyta plexi 3mm; pudełko plastikowe na śniadanie (10x10cm); regulowane przetwornice DC/DC; Arduino; Trochę elektroniki(potencjometry itp); A więc do dzieła Robot został wykonany w celach hobbistycznych, ramiona zostały wycięte ze płyty plexi 3mm. Serwa zostały w nieznacznym stopniu przerobione tj, na przeciwko wału zostały zamontowane łożyska kulkowe (za pomocą śruby i przewiercenia dna obudowy serwa). Na dnie pudełka śniadaniowego, które pełni rolę podstawy ramienia (czarne z niebieskim paskiem na dole) zostało zamontowane łożysko kulkowe o średnicy wew.35mm- cały ciężar spoczywa właśnie na nim, pod spodem jest serwo obracające ramieniem, a na wierzchu drewniany sześcian do którego przymocowane jest następne serwo( pierwsze serwo od lewej). Maksymalna rozpiętość chwytaka ok.6cm, na jednej szczęce zamontowana jest krańcówka, która ma za zadania blokować dalsze zaciskanie szczęk jeśli chwyciły już one przeszkodę. Trochę statystyk: Maksymalna rozpiętość ok 30cm. (wraz z długością chwytaka). Maksymalne obciążenie przy wyprostowanym ramieniu ok 150-200g. (można zwiększyć to ponieważ serwa zasilane są 5V, z noty producenta można wyczytać że mogą również być zasilane z 7V, co zwiększa ich moc, jednak narażone mogą być bardziej na uszkodzenie). Maksymalne obciążenie przy ramieniu do połowy wyprostowanym ok. 400g. Sercem całego Ramienia jest Aruino, zasilane z osobnego zasilania, niż serwa. Program stosunkowo łatwy ( obsługa ADC oraz PWM dla serw) do nauki na kursie arduino Zdjęcia: Film: Podsumowując całość zajęła mi trochę czasu, wykonanie nie było aż tak trudne jak przypuszczałem, a myślę że wyszło bardzo dobrze. Oczywiście jest kilka wad jak nierówne długości ramion itp. jednak przy tej konstrukcji nie ma to większego znaczenia
  12. Cześć Chciałbym podzielić się moim projektem, który już jakiś czas temu ukończyłem. Głównym założeniem było stworzenie robota, którego będzie można sterować ręcznie (myszką) lub sam będzie znajdował przedmiot do podniesienia za pomocą kamerki. Do obróbki obrazu wykorzystałem Matlaba oraz komunikację szeregową. Poniżej zamieszczam filmik prezentujący ogólną zasadę działania robota oraz demonstrujący jego możliwości, dostępne są napisy po polsku i angielsku: Zanim przejdziemy dalej - jeżeli uważasz, że ten robot to ciekawy projekt, proszę zostaw łapkę w górę pod filmikiem, biorę udział w konkursie orgznizowanym przez Matlaba, w którym 40% puli punktów pochodzi z wyświetleń i łapek w górę pod filmikiem konkursowym. Tryb ręczny Do obsłużenia myszki komputerowej wykorzystałem tę bibliotekę oraz ten schemat podłączenia. Całość jest całkiem prosta, jedynym kłopotem jest dostanie się do przewodów w kablu myszki, są strasznie cienkie i łatwo je uszkodzić. Tryb automatyczny Niestety - ten manipulator potrafi znaleźć przedmiot tylko jeżeli ten leży w jednym z trzech wcześniej zdefiniowanych miejsc. Może kiedyś przyjdzie czas na rozszerzoną wersję Jak już wspomniałem - do zadania obróbki obrazu z kamerki wykorzystałem Matlaba. Pierwszym komentarzem jest zazwyczaj zwrócenie uwagi na prostsze alternatywy, np. OpenCV, ale z Matlabem mam już jako takie doświadczenie, dobrze mi się w nim pracuje i chciałem nauczyć się czegoś nowego. Aby połączyć kamerkę internetową z Matlabem, musimy ściągnać specjalne rozszerzenie, w górnym pasku ikon klikamy Add-Ons, wybieramy Get Hardware Support Packages, wybieramy Install from Internet i szukamy USB Webcams. Na filmiku krok po kroku omówiłem co dzieje się w algorytmie obróbki obrazu, teraz chciałbym wspomnieć o kilku najważniejszych funkcjach, które wykorzystałem: snapshot - robi zdjęcie aktualnego kadru z kamerki rgb2gray - konwertuje obraz na odcienie szarości bwareaopen - usuwa zakłócenia z obrazu binarnego regionprops - mierzy naszą ostateczną białą plamę (taśmę), umożliwia wyznaczenie jej środka, który bezpośrednio przekłada się na położenie taśmy przed robotem. Pozostało przyporządkować wyznaczone położenie do jednego z trzech wcześniej zdefiniowanych i wysłać numer lokacji do Arduino za pomocą funkcji fprintf. MATLAB Support Package for Arduino Hardware Matlab posiada również specjalną paczkę umożliwiającą programowanie Arduino z poziomu Matlaba lub Simulinka. To całkiem ciekawa możliwość, mamy wtedy dostęp do podstawowych funkcji Arduino takich, jak digitalWrite czy analogRead oraz całego arsenału funkcji Matlaba. Niestety to rozwiązanie uniemożliwia w prosty sposób korzystanie z zewnętrznych bibliotek Arduino - dlatego zdecydowałem się na zwykłą komunikację szeregową. Niemniej jednak, ta nakładka jest bardzo ciekawa i chciałbym wspomnieć o jej przykładowym wykorzystaniu. Jakiś czas temu pracowałem nad regulatorem PID na wzmacniaczach operacyjnych. W domowych warunkach nie miałem pomysłu na obserwowanie odpowiedzi skokowej mojego układu. Z pomocą przyszło Arduino i Matlab wraz z omawianą paczką. Wystarczyło podłączyć interesujący mnie sygnał do wejścia analogowego Arduino oraz napisać kilka linijek kodu: a=arduino; i = 1; tic while (toc<10) b(i) = a.readVoltage(0); plot(b); drawnow; i=i+1; end Odpowiedź skokowa regulatora PID: Odpowiedź skokowa układu z wyraźnym przeregulowaniem: Zoptymalizowana odpowiedź skokowa układu: Oś poziomą można oczywiście zamienić na czas, a nie próbki, ale to nie było konieczne do stworzenia prostego narzędzia debugującego mój układ Jeżeli masz jakiekolwiek pytania lub chciałbyś, abym coś lepiej wyjaśnił - zapytaj. Chętnie podzielę się zdobytym doświadczeniem. I pamiętaj o łapce w górę pod filmikiem!
  13. Witam, pragnę zaprezentować serwomechanicznę ramię nad którym pracowałem przez jakiś czas, zdaje sobie sprawę iż nie jest doskonałe i wymaga jeszcze dopracowania wielu szczegółów, poniekąd jestem konstruktorem amatorem lecz to co robię sprawia mi wielką przyjemność i poczucie osiągania danego celu poprzez naukę, cierpliwość i wytrwałość Serworamię V.1.0. zbudowane jest na podstawie plastikowej obudowy w której zamieszczony jest transformator wraz z przetwornicą napięcia do której to przytwierdzone jest jedno z wielu serw mg995 towerPro dzięki temu obrot ramienia wynosi niemal 230 stopni :-> Wysięgnik ramienia oraz 2 moduł ramienia napędzany jest przez sprzężone serwa mg995 przez co siła uciągu jest podwójna - zapewnia to stabilność oraz znaczne zwiększenie siły wykonywanej pracy. Ostatni moduł ramienia oraz chwytak to spreparowane gotowe konstrukcje zakupione w sklepie botland również napędzane przez serwa mg995 Ogolnie całość napędza 7 serw mg995, zasilacz 150W/12V wraz z przetwornicą 300W step down nastawioną na 6V za bezpieczeństwem odpowiada moduł czujnika temperatury i wentylatora na przetwornicy który pokazuje aktualną temperaturę stabilizatora napięcia. Prąd jaki osiąga podczas pracy przy dużym oporze to blisko 8 Amper. Sterownik jaki zastosowałem obecnie to serwokontroler Polulu mini Maestro 12 kanałowy lecz nie jest on wystarczający do takich prac z powodu częstego "gubienia" zapisanych sekwencji pracy, przez co odtworzenie przynosi wiele uśmiechu myslę o zastosowaniu Arduino w celu tworzenia skryptu oraz przekaźników do zasilania serw - całość będzie bezpieczna, gdyż styki na mini maestro przy gniazdach GoldPin praktycznie się stopiły od prądu przez nie płynącego. z pewnościa konstrukcja wymaga poprawek i wielu modyfikacji, lecz sam nie ukrywam nie mam wystarczająco wiele czasu by działać z tym na bieżąco. zapraszam na film: (video od polowy filmu) __________ Komentarz dodany przez: Treker Następnym razem pamiętaj o dodaniu zdjęć o proporcjach ~3:2 w załączniku (jest one wyświetlane w katalogu robotów). Teraz poprawiłem to za Ciebie
  14. Przedstawiam mój projekt który zrealizowałem w ostatnim czasie, jest to prosty manipulator osadzony na platformie mobilnej. Założeniem tego projektu było maksymalne uproszczenie konstrukcji i sterowanie jej za pomocą kontrolera od Playstation 3. Całość miała też po naciśnięciu przycisku wykonywać określone funkcje automatycznie. Konstrukcja jest rozwojowa, będzie wyposażona w kamerkę bezprzewodową i dodatkowe czujniki. Konstrukcja to zmaterializowane pomysły z głowy. Przebieg budowy był improwizacją, aczkolwiek niektóre elementy były projektowane. Podwozie zostało zaprojektowane od podstaw, manipulator to zmodyfikowany projekt dostępny w sieci. Podwozie: Manipulator: BUDOWA MECHANICZNA Większość elementów konstrukcyjnych to wydruki 3D. Gąsienice i koła to produkcja LEGO, koła zostały odpowiednio zmodyfikowane przez wklejenie w nie łożysk tocznych. Naciąg gąsienic zrealizowany jest za pomocą podwójnego mimośrodu w tylnych kołach. Wszystkie śruby, nakrętki i podkładki są oczywiście nierdzewne. W każdym połączeniu ruchomym ramienia znajduje się tulejka mosiężna. Nakrętki samochamowalne. ELEKTRONIKA Podwozie napędzane jest przerobionymi serowomechanizmami TowerPro MG995, manipulator wyposażony w TowerPro MG90, tryby metalowe. Do zasilania zastosowano pakiet Litowo-polimerowy 7,4V 1300mAh, na pokładzie znajduje się przetwornica obniżająca odpowiednio napięcie do pracy serw. Mózgiem Jest Arduino UNO z USB host shieldem + Bluetooth. Użytkownik informowany jest o napięciu pakietu i w odpowiednim momencie też ostrzegany sygnałem dźwiękowym za pomocą testera. Na przodzie umieszczono dwie diody led. Podsumowując: - 2x TowerPro MG995 - 3x TowerPro MG90 - Pakiet LiPo 7,4V 1300mAh - Przewornica 3/5A - Arduino UNO - USB Host Shield 2.0 - USB Bluetooth - LiPo tester - 2x LED STEROWANIE Zgodnie z założeniami całość sterowana jest za pomocą Kontrolera od PS3. Lewy analog odpowiada za jazdę, prawy analog obsługuje ramię główne i ramię manipulatora. Przycisk analogowy R2 odpowiedzialny jest za uchwyt. Przycisk R1 powoduje zapamiętanie uścisku, czyli trzyma przedmiot beż konieczności trzymania przycisku R2. Kolejno, przycisk L1 pozwala włączyć oświetlenie LED na przodzie. START uruchamia pętle z programikiem który ma za zadanie podnieść przedmiot oddalony o 15cm przed obrócić się o 180 stopni, położyć przedmiot przed sobą, ponowne naciśnięcie tego przycisku wychodzi z pętli. Czas obrotu dobrany empirycznie. Powtarzalność miejsca uzyskana na poziomie 0,5cm (zadowalająca) SELECT służy do włączenia testu wszystkich serw, ustala określone pozycje, wyjście z pętli po ponownym naciśnięciu przycisku. Podsumowując: - LEWY ANALOG -> jazda - PRAWY ANALOG -> manipulator - R2 -> uchwyt manipulatora - R1 -> zapamiętanie uchwytu - L1 -> włączenie oświetlenia - START -> program wykonujący przenoszenie obiektu (w pętli) - SELECT -> Program testujący pracę serw (w pętli) OPROGRAMOWANIE Program dla płytki mikrokontrolera napisany został w środowisku Arduino IDE, zmodyfikowano w dużym stopniu przykład PS3BT. EFEKTY Zdjęcia: Aktualizacja 29.02 Platforma posiada kamerkę bezprzewodową przekazującą kolorowy obraz i dzwięk. Film: Pierwsze testy sterowania padem: https://www.youtube.com/watch?v=ACa2hxboEXs
  15. Witam ponownie Chciałbym przedstawić własnej konstrukcji manipulator, który ze względu na kinową premierę nosi nazwę "Terminator_Hand". Robot posiada funkcję sterowania ręcznego oraz gotową funkcję "idź,złap-przenieś-upuść". Układ składa się z: - Atmega644P 16MHz, - 3x serwo TowerPro SG-5010 standard, 50Hz, - 1x serwo TowerPro SG-92 micro, 50Hz, - przerobiony ATX PowerSupply 420W z użyciem wszystkich wiązek 3,3V(16A); 5V(16A); 12V(15A), PS-ON zwarte przez włącznik I/0, - stabilizator liniowy 7805 pod wiązką 12V, - klawiatura złożona z 13 przycisków typu microswitch. Zasilanie układu: 1. 3,3V - Zasilanie diod sygnalizacyjnych pojawienie się napięcia w układzie. Funkcja bezpieczeństwa. 2. 5V - Zasilanie serwomechanizmów. Łączny pobór prądu przez wszystkie 4 silniki wynosi max. 3A. Zasilanie filtrowane dla każdego silnika po 100nF. 3. 12V - Zasilanie układu logicznego. Napięcie zostało obniżone do 5V(1A) po użyciu stabilizatora liniowego 7805 z parą kondensatorów 100nF. Układ logiczny: 1. Zasilanie filtrowane przy pinach VCC-GND i AVCC-GND przez pary kondensatorów 3,3uF(elektrolit) i 100nF(ceramik). 2. RST podciągnięte do VCC przez rezystor 10K. 3. Wyjścia MISO, MOSI, SCK, RST posiadają stałą możliwość korzystania z programatora. 4. Nieużywane piny zaprogramowane jako wejście ze stanem wysokim dla wytłumienia zakłóceń. Oprogramowanie: 1. Tryb FastPWM korzystający z dwóch rejestrów kontrolnych TCCR1A/B. 2. Sterownik działa programowo, cały kod wykonuje się przerwaniu. Zastosowano wektor przerwania TIMER_OVF_VECT. 3. Całość wykonano w języku C. Wykonany został na zapotrzebowanie koła naukowego PO jako praca dyplomowa. Jest to moja pierwsza taka konstrukcja, w przyszłej fazie rozwoju robot będzie grać w kółko/krzyżyk, warcaby, jeśli starczy czasu i sił, to może i szachy. Konstrukcja może nie jest zbyt skomplikowana, lecz jest podwaliną do ciągłego rozwoju. Robot powstał dzięki ogromnej pomocy, którą otrzymałem, m.in, na tym forum. Z tego powodu, jeśli któryś z użytkowników zechce zbudować podobnego robota, chętnie udostępnię cały kod oraz pomogę w problemach, przez które prawie wyłysiałem Tymczasem, chciałbym was zapytać o wasze uwagi dotyczące tego projektu. Wszelka krytyka mile widziana Film: Zdjęcia:
  16. Witam! Od kilku miesięcy robię ramię robota sterowane bezprzewodowo (RF 433Mhz) korzystając z Arduino. Praca jest na zaliczenie inzynierki z Informatyki. Ramię jest juz praktycznie skończone, zostało tylko kilka poprawek. Cała konstrukcja jest zrobiona na maszynach przeze mnie jedynie chwytak był kupiony na botlandzie. Konstrukcja oczywiście aluminiowa, wysokość ok 60cm z podstawą. Całość napędza 7 serv: 4 Mg995, 1 S8801, 2x PowerHD HD-1250MG. Pilotem prócz sterowania zdalnego konstrukcji możemy włączyć/wyłączyć diode która oświetla przestrzeń roboczą w nocy i dwoma przyciskami mozna sterować szybkość ruchów ramion. Poniżej załączam krótki filmik pokazujący działanie projektu. Podkreślam, że dopiero od niedawna interesuje sie robotyką i jest to mój pierwszy taki projekt Jak wrócę z pracy to udostępnie jeszcze kilka zdjęć z jego budowy itp... Proszę o opinie jak wam się to podoba i ew czego tam może brakować Pierwsza wersja manipulatora po 2 dniach zabawy z aluminium Początki ostatecznej wersji w warsztacie podczas montażu Pierwsza elektronika - pierwsze próby sterowania
  17. Witam, chciałbym zaprezentować manipulatora mojej konstrukcji. Głównymi założeniami projektu były: - Zbudowanie manipulatora o 6 stopniach swobody, - minimalne rozmiary z zachowaniem jak największej funkcjonalności oraz podobieństw do tych pracujących w przemyśle, - zachowanie szeroko pojętej estetyki. Na sam początek przeprowadziłem parę prób co do sterowania silnikami dc (bo takie planowałem użyć (cena)). Następnie zabrałem się za rysowanie modelu CAD robota, który powstał w programie Catia V5. Dodatkowo przeprowadziłem symulację ruchów manipulatora, co zapobiegło kilku błędom. Jako materiały do budowy brałem pod uwagę PMMA, stal oraz aluminium. Są one stosunkowo łatwe w obróbce i ogólno dostępne. Ważnym kryterium przy projektowaniu było zapewnienia odpowiedniej sztywności całej konstrukcji oraz fakt że w czasie projektowania i budowania nie miałem dostępu do frezarki/drukarki 3D, przez co całość musiała być tak zaprojektowana abym był w stanie wykonać wszystkie części samodzielnie. Robot jest łożyskowany w osiach 1-4. Końcowo ze stali wykonane są osie obrotowe 1-2, 2-3, 3-4. Z aluminium platforma obrotowa, mocowanie ramienia i kilka mniejszych części. Elementy z PMMA to większość konstrukcji głównie z płyt 2 i 4 mm wycinane na waterjet'cie. Kształtowanie polegało na podgrzewaniu hot air’em, następnie nadawaniu kształtu na kancie biurka. O samym "procesie" wytwarzania części mógłbym dużo pisać bo praktycznie wszystko robiłem samodzielnie w mniej lub bardziej elegancki sposób, dlatego najlepiej będzie odpowiadać na Wasze pytania (jeśli będą). Sam chwytak powstał trochę później, głównie dlatego że nie był niezbędny do funkcjonowania manipulatora a trzeba było ciąć koszty. Model chwytaka też powstał w Cati (razem z symulacją ruchu) i w tym przypadku został on wydrukowany z racji bardzo małych kształtów. Problematyczne okazało się znalezienie odpowiednio małego napędu, przekładni, łożysk. W środku znajdują się dwa przyciski krańcowe, a sterowanie jest siłowe. Za ruch ramion odpowiadają silniki DC z przekładniami. Silniki osi 1 -3 pochodzą z rozmontowanych drukarek, a przekładnie do nich otrzymałem z demontażu serw modelarskich. W osiach 4-6 zamontowane są silniki z dedykowaną przekładnią. Jako sprzężenie zwrotne wykorzystałem enkodery optyczne które też pochodzą z drukarek. Rozdzielczość dla każdej z osi wynosi >=0.1. Pracę silników kontrolują regulatory PID. Nad pracą robota czuwa ATxmega 128A1. Początkowo w ramach testów układ powstawał na płytce uniwersalnej. Ostatecznie płytkę PCB zaprojektowałem w AD13 w ramach pracy przejściowej. Może nie będę rozpisywał się za bardzo nad elektroniką w załącznikach jest schemat. Elektronika zasilana jest z 12 VDC w środku znajdują się 2 przetwornice na 3,3V oraz 5V (na schemacie sa LM317). Kod napisany w środowisku eclipse w C. Pisanie oprogramowania było najbardziej czasochłoną czynnością. Standardowo DMA, ADC, PWM, WDT, USART, PLL, Timery. Całość zamknięta jest w metalowej obudowie gdzie na górnej części umieszczony jest grzybek, wyświetlacz, 4 przyciski, oraz 3 diody. Na przednim panelu jest złącze DB15 służy do programowania, oraz podłączania dodatkowych urządzeń (wyprowadzono z niego kilka pinów uC i wszystkie napięcia). Następnie mamy złącze zasilania 12V DC, złącze usb służące do podłączenia do PC, bezpiecznik oraz włącznik zasilania. Po przeciwnej stornie znajdują się złącza do podłączenia manipulatora. Przez robota przeprowadzonych zostało 38 przewodów z czego 34 są używane reszta to nadmiar. Od spodu sterownika znajduje się wentylator. Obecnie mamy 3 możliwości kontrolowania manipulatora. - Poprzez PC (RS-232), powstała dedykowana aplikacja napisana w Lazarusie (Delphi). Umożliwia ona pełną kontrolę manipulatora, pomiar prądu silników, wymuszeń skokowych, tworzenie sekwencji ruchowych, modyfikację wzmocnień regulatorów PID, kalibrację itp. - Poprzez Smartphonea, powstała aplikacja na androida napisana w AppInventorze. Umożliwia kontrolę każdej osi manipulatora, kalibrację, odtwarzanie sekwencji oraz wysyłanie pojedynczych rozkazów. - Poprzez przyciski znajdujące się na obudowie sterownika. Dają takie możliwości jak sterowanie każdą z osi oraz wybór sterowania tzn. Aby sterować poprzez inne źródło najpierw musimy włączyć tą opcję na sterowniku. Jakby nie było ciężko napisać że projekt jest "skończony". W dużym stopniu udało mi się zbliżyć do manipulatora przemysłowego, a co za tym idzie można na nim testować przeróżne algorytmy, sposoby sterowania, kinematyke itp. z tą różnicą że nie kosztuje 100 tys. pln, a całe oprogramowanie jest "wymienne". Jeśli chodzi o koszty to: - elektronika ok. 700 zł, - mechanika ok. 1550 zł (650 zł to chwytak). Suma: 2250 zł (to ta optymistyczna wersja Smile). jak na przeciętnego studenta to dość sporo jak na zabawkę Smile. Pewnie pojawi się pytanie "kraj taki piękny, unia europejska, manna z nieba nie da się otrzymać jakiegoś dofinansowania na tego typu projekty ?." - Niestety nie, lub po prostu zbyt dużo papierków, chodzenia, proszenia i czekania. Jak napisałem we wstępie, manipulator stał się podstawą mojej pracy magisterskiej, która polegała na zbudowaniu systemu sterowania z wykorzystaniem logiki rozmytej. Końcowym efektem było zmniejszenie przeregulowań napędów o 64,5% w stosunku do tradycyjnego regulatora PID. Praca w załączniku. Podsumowując projekt uważam za udany nauczył mnie wielu rzeczy z różnych dziedzin nauki i to jest najcenniejsze, ale jak to przy takich projektach bywa teraz zrobiło by się pewne rzeczy inaczej/lepiej. Chciałbym też podziękować za pomoc kilku pracownikom wydziału MT oraz Elektrycznego. NIE JESTEM AUTOREM PLATFORMY JEZDEJ Kilka filmików z działania manipulatora, miłego oglądania. Zachęcam do zadawania pytań. Manipulator - code C.zip Manipulator - App lazarus.zip Schematic.PDF PDM_MarekSliz.pdf
  18. Witam, jako że od obrony trochę minęło chciałem się z wami podzielić owocem mojej ponad rocznej pracy. Po projekcie Trihex chciałem zmienić trochę podejście i zrobić coś innego ale dalej będącego w polu moich zainteresowań. Przeglądając katalogi robotów przemysłowych natknąłem się na konstrukcję typu Delta i to też postanowiłem zrobić. Celem pracy było zaprojektowanie oraz stworzenie robota o równoległej strukturze kinematycznej typu Delta wraz z system sterowania. W ramach pracy wykonałem: - Projekt robota w programie Catia V5 - Projekt sterownika silnika prądy stałego (DC) opartego na algorytmie PID, - Projekt sterownika głównego robota opartego na mikrokontrolerze Atmel AVR Xmega256A3Bu, - Moduł optoizolowanego układu I/O, - Projekt kontrolera robota - Program na środowisko Windows umożliwiający w łatwy sposób wyznaczać parametry Kp, Ki oraz Kd algorytmu PID, Obliczenia: - Zadanie proste kinematyki, oraz zadanie odwrotne kinematyki dla pozycji, prędkości oraz przyspieszeń, - Wyznaczenie przestrzeni roboczej robota, Algorytmy: - Generator trajektorii liniowej z parabolicznymi przejściami pomiędzy punktami, - Algorytm sprawdzający czy robot znajduje się w przestrzeni roboczej, - Obsługa komendy "Hold" zatrzymującej robota w dowolnym momencie pracy, - Obsługa emergency stop wraz z bezpiecznym powrotem do pracy manipulatora, - Sterowanie wejściami/wyjściami, - Realizacja zadanej trajektorii w trybie automatycznym, - Ruch robota w trybie ręcznym, - Wgrywanie nowych punktów dojazdowych do pamięci µC, - Program komputerowy sterujący robotem, a także pozwalający programować robota prostym językiem blokowym. Napędy: W robocie zastosowałem szczotkowe silniki prądu stałego z zamontowaną przekładnią planetarną o przełożeniu 100:1 oraz enkoder o rozdzielczości 64 impulsów na obrót wału silnika. Są to zwykłe ogólnodostępne silniki firmy Pololu (wybrałem je ze względu na cenę - były stosunkowo tanie). Jedyna zmiana to zmiana standardowej przekładni zębatej na przekładnię planetarną zapewniającą znacznie mniejsze luzy. Czwarta oś także oparta jest o silnik prądu stałego, jednak przekładnia zastosowana już jest mniejsza, a także sam enkoder mniej dokładny. Konstrukcja mechaniczna ramienia: Robot posiada 4 DOF, czyli może się poruszać w przestrzeni XYZ oraz posiada jeden obrót zapewniony przez napęd na kiści. Ramiona robota zostały wykonane z laserowo ciętego pleksiglasu oraz rurek z włókna węglowego. Przeguby kulowe zostały zmodyfikowane w taki sposób aby możliwe ich było rozczepianie. Pozostałe elementy zostały wykonane ze stali oraz aluminium. Długości ramion dobrałem tak aby zoptymalizować przestrzeń roboczą manipulatora. Wyznaczyłem przestrzeń roboczą jaką posiadał będzie mój robot. Kalkulacje zostały przeprowadzone metodą numeryczną. Wyniki widać poniżej - ładna trójtarcza charakterystyczna dla tego typu konstrukcji. Elektronika: W celu komunikacji z użytkownikiem oraz w celach sterowania zrobiłem panel przedni znajdujący się na kontrolerze. Zawiera on: - Emergency Stop - Włącznik robota, - Diody led pokazujące obecny stan pracy - Złacze USB - Ekran informujący o pracy kontrolera, - Przycisk reset, - Przełącznik kluczykowy „HOLD” Konstrukcja kontrolera oparta została o obudowę komputerową Fractal Design Core 1000. Źródłem zasilania dla robota są dwa przemysłowe zasilacze impulsowe 12V oraz 5V. O mocach odpowiednio 180W oraz 15W. Kontroler posiada dwa główne układy sterujące pracą robota: - Sterowniki silników oparte zostały na mikrokontrolerze AtMega88-AU pracujący z częstotliwością 20 Mhz. - Sterowniki główny oparty został na mikrokontrolerze XMega256A3BU pracujący z częstotliwością 40 Mhz. Sterowniki silników komunikują się z układem głównym poprzez protokół RS232. Komunikacja jest obustronna, a kolejne ramki danych wysyłane są co 5ms. Jest to wystarczająca prędkość do tej konkretnie konstrukcji. Dodatkowo każdy z kontrolerów silników na bieżąco sprawdza prąd jaki pobiera silnik, którym steruje, następnie wysyła to do kontrolera głównego. Ze względu na brak czasu nie zdążyłem napisać algorytmu wykrywania kolizji ramienia z otoczeniem . Całość programów została napisana w języku C. Robot jest w stanie reagować na moduł wejść/wyjść. Zaprogramowałem możliwość sterowania dwa wejściami oraz wejściami cyfrowymi. Można dzięki nim podłączyć np. elektrozawór do chwytaka podciśnieniowego. Program komputerowy: Do sterowania robotem napisany został program komputerowy na środowisko Windows w języku programistycznym C#. Program pozwala na automatyczne znajdowanie podłączonego kontrolera do komputera. Dodatkową funkcjonalnością jest wykrywanie wyłączenia kontrolera lub odłączenie kabla USB. Program umożliwia: - Sterowanie robotem w trybie ręcznym – ruch realizowany jest w przestrzeni kartezjańskiej lub przegubowej z określoną prędkością liniową lub procentem maksymalnej prędkości w trybie uczenia, - Tworzenie prostych programów do pracy automatycznej, możliwość wyboru punktów dojazdowych, prędkości oraz dokładności dojazdu, sterowania wyjściami. - Wgrywanie napisanego programu (prosty język blokowy), - Włączenie trybu pracy automatycznej, - Zatrzymanie robota w dowolnym momencie pracy, - Resetowanie błędu opuszczenia przez robota przestrzeni roboczej. Algorytmy: System sterowania oparłem o model kinematyczny manipulatora. Z tego względu konieczne było wyznaczenie równań prostego jak i odwrotnego zadania kinematyki, a także ich pochodnych (Matlab FTW ) Aby zapewnić płynność pracy robota stworzyłem także generator trajektorii, który umożliwia wybór dokładności przejścia pomiędzy punktami. Na procentowo określoną odległość przed nauczonym punktem robot zaczyna "skracać" sobie trasę przez to niwelować zbędne siły bezwładności i redukować potrzebne momenty na silnikach. Końcowym elementem który chciałem opisać jest algorytm łagodnego startu. Aby robot nie wykonywał nagłego oraz nieprzewidywalnego ruchu po załączeniu trybu automatycznego wprowadzono algorytm łagodnego startu. Robot przed rozpoczęciem pracy odczytuje swoją aktualną pozycję, a następnie generuje liniową trajektorię do pierwszego punktu wgranego programu. Prędkość oraz dokładność dojazdu do punktu startowego jest taka sama jak w pierwszym kroku zaprogramowanego programu. Po prawej widać działanie opisanego algorytmu. Film pokazujący pracę robota oraz sterowanie wyjściami w czasie pracy: W ramach pracy wykonałem także bardzo dużo innej roboty ale to co opisałem powyżej myślę, że zgrubnie opisuje tę konstrukcję. Oczywiści jakby się jakieś pytania nasuwały chętnie odpowiem. Pozdrawiam, Eukaryota
  19. Projekt wykonywany był na Politechnice Gdańskiej na wydziale Elektrotechniki i Automatyki jako temat inżynierskiej pracy dyplomowej. Tematem pracy było zaprojektowanie, wykonanie i uruchomienie sterowanego ramienia robota poruszanego za pomoca silników krokowych i sterowanego za pomoca mikroprocesora ATmega128. Ramię robota wykonane zostało z aluminium. Jedynie jedna z osi napędowych zrobiona była z pręta stalowego. Do poruszania ramieniem wykorzystane zostały silniki krokowe unipolarne i bipolarne. Do sterowania silnikami zaprojektowano i wykonano dedykowany sterownik. Przeniesienie napędu odbywa się za pomocą stalowych kół zębatych, aluminiowych kół zębatych i współpracujących z nimi pasków zębatych. Wszystkie osie są obustronnie łożyskowane za pomocą łożysk kulkowych. Do sterowania silnikami wykorzystano układ ULN2803 (dla silników unipolarnych) i L293D (dla silników bipolarnych). Oba układy sterowane są bezpośrednio przez procesor ATmega128. Do procesora podłączone są również czujniki krańcowe ograniczające zakres ruchu ramienia. Całość zasilana jest z transformatora toroidalnego 230V/18V. Wykonany został również zasilacz z 6 niezależnymi stopniami wyjściowymi regulowanymi w zakresie 12-24V (1,5A) dodatkowo zamontowano zasilacz 5V (1A) do zasilania procesora i układów logicznych. Całość sterowana jest za pomocą pad'a do gier komputerowych. Wykorzystano joysticki potencjometryczne go intuicyjnego i łatwego sterowania poszczególnymi ramionami. Poniżej zdjęcia przedstawiające wykonane urządzenie wizualizacje oraz film przestawiający działanie ramienia robota. Dzięki pomocy promotora Pana dr. inż. Jarosława Guzińskiego udało się osiągnąć zamierzone cele za co chciałem serdecznie podziękować. Film z pracy urządzenia:
×
×
  • Utwórz nowe...