Skocz do zawartości

Marvit6

Użytkownicy
  • Zawartość

    4
  • Rejestracja

  • Ostatnio

Reputacja

7 Neutralna

O Marvit6

  • Ranga
    1/10

Ostatnio na profilu byli

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

  1. Wiem, wiem :D. Źle się wyraziłem, chodziło mi o to, że najpierw chciałbym ogarnąć kinematyke jak już to zrobię to pobawię się w stworzenie kilku wersji sterowania, w tym tą o której wspomniałeś. Obecnie nie mam nawet czasu siąść do raspberry
  2. Też nad tym myślałem. Jak uda mi się ogarnąć kinematyke w Pythonie to z chęcią coś takiego zrobię
  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!
×
×
  • Utwórz nowe...