top of page
Szukaj

Projektowanie ramienia robota planarnego oraz jego sterowanie za pomocą microkontrolera.

  • hderbis99
  • 18 lut 2023
  • 3 minut(y) czytania

Na przełomie lat 2022 oraz 2023 przystąpiłem do projektu budowy prototypu ramienia robota planarnego. Ideą było stworzenie projektu opartego na platformie Arduino Uno oraz platformie .NET.

Założenia projektowe:

- Stworzyć ramię robota z trzema ogniwami oraz efektorem końcowym w postaci chwytaka.

- Stworzyć algorytm sterowania oraz zaimplementować go na microkontrolerze.

- Stworzyć aplikacje do zapisu pozycji w jakiej aktualnie znajduje się ramię.


Projekt:

  1. Stworzenie platformy, na której będzie opierać się cały projekt:


Platforma, na której opiera się manipulator została zamodelowana w programie ArchiCad. Jest to kwadrat o wymiarach 20x20cm z otworem w środku, w który wchodzić będzie jedno z ogniw robota. Całość została wykonana ze sklejki o grubości 8mm.




Do projektu została również dołączona makieta. W powyższej makiecie będzie umieszczony wyświetlacz LCD 16x2 z wyświetloną pozycją w jakiej znajduje się manipulator oraz switch, który zabezpieczy ogniwa (serwomechanizmy) przed nie pożądanym działaniem użytkownika.



2. Schematy poszczególnych modułów:

- Moduł ogniw:


Za ogniwa w manipulatorze będą odpowiadać poszczególne serwomechanizmy przedstawione na powyższym schemacie. Zasilanie będzie doprowadzone przez stabilizatory napięcia, dzięki temu na wyjściu otrzymamy stabilne 5[V] zasilania.


- Moduł sterowania:

Sterować robotem będzie można za pomocą czterech przycisków oraz Joysticka, który przesuwa się względem osi X oraz Y. Za zwiększenie liczby wyjść cyfrowych w płytce Arduino UNO będzie odpowiadać układ PCF8574N, komunikacja między układem a microkontrolerem odbędzie się po magistrali I2C. Dodatkowo do układu został dołączony buzzer. Aby wzmocnić sygnał na wyjściu układu PCF, został dołączony tranzystor.


- Moduł bezpieczeństwa:

Za manualne zabezpieczenie konstrukcji będzie odpowiadać switch. Gdy przełącznik ustawi się w pozycję 1 dopiero zostanie podany sygnał PWM sterujący poszczególnymi ogniwami.


- Moduł wyświetlacza:

Do wyświetlenia aktualnej pozycji zostanie wykorzystany wyświetlacz LCD 16x2 przedstawiony na powyższym schemacie.


3. Projekt algorytmu sterowania:


Algorytm sterowania został stworzony na bazie diagramów stanu. Pełna implementacja w kodzie dostępna jest na moim github'ie (link poniżej).



Jeżeli użytkownik wychyli joystick w którąś ze stron, zmienia się wtedy wartość jaka jest odczytywana z wejścia analogowego, do którego jest podłączony joystick. Wtedy na podstawie tej wartości jest określany ruch, w którą stronę został wychylony powyższy kontroler. Gdy wiadomo, w którą stronę został wychylony joystick, algorytm zwiększa lub zmniejsza wartość zmiennej, która odpowiada za poruszanie się poszczególnych ogniw. Podobna sytuacja ma miejsce gdy, użytkownik naciśnie, któryś z czterech przycisków. Jeżeli dany przycisk zostanie wciśnięty, wartość zmiennej odpowiadającej za poruszanie się serw zostaje zwiększona lub zmniejszona natomiast gdy zostaną naciśnięte dwa wyznaczone przyciski jednocześnie, ogniwa ustawiają się do pozycji bazowej.


4. Projekt aplikacji opartej na platformie .NET


Aplikacja służąca do zapisu pozycji została wykonana za pomocą narzędzia Visual Studio. Jak można zobaczyć na poniższych rysunkach program dzieli się na trzy okienka:

Main, Configuration oraz Information.

- Main:

W tym oknie jest wyświetlana pozycja w jakiej znajduje się robot. Można również za pomocą przycisku "save position" zapisać aktualną pozycję. Taki plik zostaje zapisany w formacie .csv w folderze Data (główny katalog z programem).


- Configuration:

W tej zakładce użytkownik ma możliwość wpisania odpowiedniego portu pod którym znajduje się microkontroler. Cała transmisja jest realizowana za pomocą protokołu RS232.


- Information:

Zakładka ta zawiera informacje o autorze programu.




Kod aplikacji dostępny na platformie github (link poniżej).


5. Implementacja sprzętowa:

Cały projekt wygląda jak na zdjęciu poniżej. Do zasilenia makiety został użyty zasilacz laboratoryjny.

Film z działania robota, jest opublikowany na stronie.


6. Testy końcowe:

W trakcie pierwszego uruchomienia ramienia, robot wpadł w stan nie ustalony. Spowodowane było to zjawiskiem rezonansu mechanicznego, wykres poniżej:

Skąd pojawiło się owe zjawisko i jak do tego doszło? Otóż, w pierwotnej wersji konstrukcji, źle dopasowany był krok o jaki zmienia się pozycja serwa z każdym obiegiem pętli programu oraz częstotliwość odświeżania danej pozycji, co więcej nie było dodanego żadnego tłumienia na przeciwwadze ramienia oraz w miejscu styku pierwszego ogniwa z ramieniem. Skutkowało to tym, że z każdą zmianą pozycji dochodziło do przeregulowania układu. Po konfiguracji algorytmu oraz dodaniu tłumienia, manipulator po podaniu sygnału wejściowego odpowiadał zgodnie z przewidywaniami.









 
 
 

Komentarze


Informacje Kontaktowe

  • Facebook Social Ikona
  • Instagram

Dziękuję za przesłanie wiadomości!

©2023 by Hubert Derbis. Proudly created with Wix.com

bottom of page