Typ urządzenia: edukacyjne ramię robotyczne SCARA 3 DOF + chwytak 2 DOF
Sterownik: ESP32 D1 Mini / WeMos D1 Mini ESP32
Sterowanie: kontroler Bluetooth + przyciski na płytce
Oprogramowanie: C++ / Arduino Framework / PlatformIO
Repozytorium: Attiny2313/SCARA-Robot-Controler-BT
SPIS TREŚCI
- CEL PROJEKTU
- CHARAKTERYSTYKA ROBOTA
- PARAMETRY TECHNICZNE
- BUDOWA MECHANICZNA
- UKŁAD NAPĘDOWY
- UKŁAD ELEKTRYCZNY I ELEKTRONICZNY
- ARCHITEKTURA STEROWANIA
- OPROGRAMOWANIE
- TRYBY PRACY
- STEROWANIE RĘCZNE – JOINT
- STEROWANIE RĘCZNE – TOOL
- KINEMATYKA
- POZYCJA HOME I HOMING
- FUNKCJA TEACH
- TRYB AUTO
- PRZEBIEG CYKLU AUTO
- REGULACJA PRĘDKOŚCI W AUTO
- ZABEZPIECZENIA PROGRAMOWE
- PROCEDURA MONTAŻU ELEKTRONIKI
- PROCEDURA URUCHOMIENIA
- TESTY ODBIORCZE
- BEZPIECZEŃSTWO
- KONSERWACJA
- MOŻLIWOŚCI ROZBUDOWY
- PRZYKŁADOWA SEKWENCJA PICK AND PLACE
- ZALEŻNOŚĆ PARAMETRÓW MECHANICZNYCH I PROGRAMOWYCH
- WERSJONOWANIE DOKUMENTACJI
- POCHODZENIE ELEMENTÓW PROJEKTU
- PODSUMOWANIE
1. CEL PROJEKTU
Celem projektu jest wykonanie, uruchomienie i zaprogramowanie edukacyjnego robota typu SCARA (Selective Compliance Assembly Robot Arm), przeznaczonego do nauki zagadnień z zakresu mechaniki, elektroniki, automatyki, robotyki, programowania oraz technologii druku 3D.
Robot umożliwia:
- ręczne sterowanie poszczególnymi osiami,
- sterowanie położeniem końcówki roboczej w układzie kartezjańskim,
- sterowanie chwytakiem,
- zapisywanie punktów metodą TEACH,
- automatyczne odtwarzanie zapisanej sekwencji ruchów,
- realizację zadań typu Pick and Place,
- dalszą rozbudowę o dodatkowe czujniki, system wizyjny i inne narzędzia robocze.
Projekt ma charakter edukacyjny i eksperymentalny. Nie jest urządzeniem przemysłowym ani certyfikowanym robotem przeznaczonym do pracy w środowisku produkcyjnym.
2. CHARAKTERYSTYKA ROBOTA
Robot jest manipulatorem typu SCARA, którego główna część wykonawcza składa się z:
- osi obrotowej ARM1,
- osi obrotowej ARM2,
- liniowej osi pionowej Z,
- serwomechanizmu obrotu chwytaka,
- serwomechanizmu otwierania i zamykania chwytaka.
Za ruch trzech głównych osi odpowiadają silniki krokowe NEMA 17. Ruch obrotowy chwytaka i jego otwieranie realizują serwomechanizmy.
Konstrukcja mechaniczna bazuje na rozwiązaniach projektu PyBot i wykorzystuje elementy wykonane metodą druku 3D oraz standardowe elementy mechaniczne stosowane m.in. w drukarkach 3D.
Sterowanie realizuje mikrokontroler ESP32 współpracujący z dedykowaną płytką PCB. ESP32 komunikuje się z bezprzewodowym kontrolerem poprzez Bluetooth i samodzielnie realizuje logikę sterowania, kinematykę, generację trajektorii PTP, obsługę TEACH/AUTO oraz zabezpieczenia programowe.
Komputer nie jest wymagany do normalnej pracy robota. Jest wykorzystywany do programowania, aktualizacji firmware oraz diagnostyki przez port szeregowy.
3. PARAMETRY TECHNICZNE
3.1. Parametry konstrukcji i sterowania
Parametr | Wartość |
Typ robota | SCARA |
Liczba głównych osi | 3 |
Osie robocze | ARM1, ARM2, Z |
Dodatkowe osie chwytaka | 2 |
Silniki główne | 3 × NEMA 17 |
Kąt pełnego kroku silnika | 1,8° |
Liczba pełnych kroków na obrót | 200 |
Mikrokrok | 1/16 |
Serwomechanizmy | 2 × klasy SG90/MG90/MG92R |
Sterownik główny | ESP32 D1 Mini |
Sterowniki silników | A4988 |
Środowisko programistyczne | PlatformIO / Visual Studio Code |
Framework | Arduino |
Język programu | C++ |
Komunikacja z padem | Bluetooth / Bluepad32 |
3.2. Parametry wykorzystywane przez aktualny firmware
Parametr | Wartość |
Długość członu ARM1 | 91,61 mm |
Długość członu ARM2 | 97,528 mm |
Przełożenie ARM1 | 4,5 |
Przełożenie ARM2 | 7,280 |
Skok śruby osi Z | 2,0 mm/obr. |
Przełożenie Z | 1,0 |
Zakres programowy ARM1 | −105° … +105° |
Zakres programowy ARM2 | −125° … +125° |
Zakres programowy Z | 0 … 300 mm |
Zakres obrotu chwytaka | 0 … 180° |
Zakres serwa chwytaka | 15 … 95° |
Prędkość ręczna ARM1 | 25°/s |
Prędkość ręczna ARM2 | 25°/s |
Prędkość ręczna Z | 3,0 mm/s |
Prędkość TCP w trybie TOOL | 20 mm/s |
Bazowa prędkość AUTO ARM1 | 20°/s |
Bazowa prędkość AUTO ARM2 | 20°/s |
Bazowa prędkość AUTO Z | 3,0 mm/s |
Override prędkości AUTO | 50…250% dla ARM1, ARM2 i Z |
Przyspieszenie ARM1 | 12000 STEP/s² |
Przyspieszenie ARM2 | 5000 STEP/s² |
Przyspieszenie Z | 6000 STEP/s² |
Liczba punktów programu TEACH | maks. 20 |
3.3. Parametry wymagające pomiaru rzeczywistego egzemplarza
Nie należy bez dodatkowych pomiarów przyjmować wartości deklarowanych dla bazowego projektu PyBot jako parametrów gotowego robota.
W szczególności wymagają pomiaru:
- rzeczywista masa robota,
- rzeczywista przestrzeń robocza,
- rzeczywista powtarzalność pozycjonowania,
- maksymalny bezpieczny udźwig,
- maksymalne praktyczne prędkości osi,
- dokładność pozycjonowania TCP.
Do czasu wykonania prób odbiorczych wartości te powinny być traktowane jako „do wyznaczenia”.
4. BUDOWA MECHANICZNA
4.1. Podstawa
Podstawa stanowi element nośny całej konstrukcji. Mocowane są do niej m.in.:
- prowadnice osi Z,
- napędy,
- elementy przekładni pasowych,
- elektronika sterująca,
- elementy zabezpieczające przewody.
Podstawa powinna zapewniać sztywność konstrukcji oraz możliwość stabilnego ustawienia robota na stanowisku.
4.2. Pierwszy człon ramienia – ARM1
Pierwszy człon łączy podstawę z centralnym przegubem robota. Jego ruch zmienia kierunek całego manipulatora w płaszczyźnie XY.
Napęd realizowany jest silnikiem krokowym poprzez przekładnię pasową.
4.3. Drugi człon ramienia – ARM2
Drugi człon łączy pierwszy człon z końcówką roboczą. Wspólnie z osią ARM1 określa położenie TCP w płaszczyźnie XY.
Ruch realizowany jest niezależnym napędem krokowym poprzez układ przekładni pasowych.
4.4. Oś pionowa Z
Oś Z realizuje ruch pionowy końcówki roboczej. Napęd odbywa się za pomocą silnika krokowego i śruby o skoku 2 mm/obrót.
Ze względu na dużą liczbę kroków przypadających na 1 mm ruchu oraz ryzyko gubienia kroków, oś Z pracuje z wyraźnie niższą prędkością niż osie obrotowe.
4.5. Chwytak
Chwytak jest wyposażony w dwa serwomechanizmy:
- serwo obrotu narzędzia,
- serwo otwierania i zamykania chwytaka.
Położenia serw mogą być zapisywane razem z punktami programu TEACH.
5. UKŁAD NAPĘDOWY
5.1. Silniki krokowe
Każda z trzech głównych osi korzysta z silnika NEMA 17 o kącie pełnego kroku 1,8°.
Pełny obrót odpowiada:
360° / 1,8° = 200 kroków
Przy zastosowaniu mikrokroku 1/16:
200 × 16 = 3200 mikrokroków na obrót silnika
Dodatkowo liczba kroków roboczych jest zależna od przełożenia danej osi.
Dla osi Z, przy skoku śruby 2 mm/obrót i mikrokroku 1/16:
3200 / 2 = 1600 kroków/mm
Wartość ta jest wykorzystywana przez firmware do przeliczania położenia osi Z.
5.2. Sterowniki A4988
Sterowniki A4988 odpowiadają za zasilanie i sterowanie silników krokowych. Każdy sterownik otrzymuje z ESP32 sygnały:
- STEP,
Należy prawidłowo ustawić prąd sterowników zgodnie z zastosowanymi silnikami i chłodzeniem.
Nie wolno podłączać ani odłączać silnika krokowego przy załączonym zasilaniu sterownika.
6. UKŁAD ELEKTRYCZNY I ELEKTRONICZNY
6.1. Główne elementy
- ESP32 D1 Mini,
- 3 sterowniki A4988,
- przetwornicę LM2596,
- złącza silników,
- złącza serwomechanizmów,
- przyciski TEACH i MODE,
- obwód E-STOP,
- diody sygnalizacyjne,
- wyświetlacz OLED SSD1306 128×64 I2C,
- złącza krańcówek,
- elementy bierne i zabezpieczające.
Dokumentacja płytki PCB znajduje się w katalogu PCB repozytorium.
6.2. Przypisanie wejść i wyjść ESP32
Funkcja | GPIO |
STEP ARM1 | 13 |
DIR ARM1 | 26 |
STEP ARM2 | 23 |
DIR ARM2 | 14 |
STEP Z | 18 |
DIR Z | 19 |
Servo ROTATE | 27 |
Servo GRIP | 32 |
TEACH | 25 |
MODE | 33 |
E-STOP | 39 |
Krańcówka Z | 34 |
Krańcówka ARM1 | 35 |
Krańcówka ARM2 | 36 |
LED Bluetooth | 4 |
LED ERROR | 16 |
LED STATUS | 17 |
I2C SDA (OLED) | 21 |
I2C SCL (OLED) | 22 |
6.3. Krańcówki
Płytka posiada wejścia dla krańcówek osi ARM1, ARM2 i Z.
W aktualnej wersji firmware krańcówki nie realizują automatycznego homingu. Wejścia zostały zachowane sprzętowo na potrzeby przyszłej rozbudowy.
6.4. E-STOP
E-STOP jest elementem bezpieczeństwa układu.
Po jego aktywacji firmware:
- natychmiast zatrzymuje generowanie kroków,
- blokuje sterowanie ręczne,
- ustawia program AUTO w stan FAULT,
- sygnalizuje błąd,
- wymaga restartu sterownika przed ponowną pracą.
Układ powinien być wykonany tak, aby E-STOP nie opierał się wyłącznie na programie, lecz dodatkowo ograniczał możliwość dalszego zasilania lub aktywacji napędów zgodnie z założeniami płytki sterującej.
6.5. Wyświetlacz OLED
Sterownik obsługuje wyświetlacz OLED SSD1306 128×64 podłączony przez I2C. Magistrala wykorzystuje GPIO21 jako SDA i GPIO22 jako SCL.
Podczas inicjalizacji firmware automatycznie sprawdza adresy 0x3C i 0x3D. Brak wyświetlacza nie blokuje pracy robota — informacja o problemie jest wysyłana przez Serial.
W czasie pracy OLED pokazuje m.in.:
- tryb MANUAL/AUTO i stan programu,
- stan połączenia Bluetooth,
- liczbę zapisanych punktów TEACH,
- override prędkości w AUTO,
- aktualne położenia ARM1, ARM2 i Z,
- pozycję TCP X/Y lub numer aktualnego punktu programu,
- stany błędów, w tym E-STOP i NUM ERR.
7. ARCHITEKTURA STEROWANIA
Rzeczywisty przepływ sterowania można przedstawić następująco:
Pad Bluetooth → Bluepad32 → ESP32 → logika sterowania → kinematyka / AUTO → FastAccelStepper → A4988 → silniki NEMA17
Równolegle:
ESP32 → ESP32Servo → serwo obrotu + serwo chwytaka
ESP32 pełni jednocześnie funkcję:
- odbiornika poleceń,
- sterownika osi,
- sterownika serw,
- układu kinematyki,
- generatora sekwencji AUTO,
- pamięci programu TEACH,
- modułu bezpieczeństwa programowego,
- układu diagnostycznego.
8. OPROGRAMOWANIE
8.1. Środowisko
Program sterujący został przygotowany w języku C++ z wykorzystaniem:
- Arduino Framework,
- PlatformIO,
- Visual Studio Code.
8.2. Główne biblioteki
Bluepad32
Biblioteka odpowiada za obsługę kontrolerów Bluetooth.
FastAccelStepper
Biblioteka generuje sygnały STEP dla trzech osi i umożliwia definiowanie prędkości, przyspieszeń oraz pozycji.
ESP32Servo
Biblioteka steruje serwomechanizmami chwytaka.
Preferences
Biblioteka obsługuje pamięć NVS ESP32. W pamięci zapisywany jest program TEACH, dzięki czemu punkty pozostają dostępne po wyłączeniu zasilania.
Adafruit GFX / Adafruit SSD1306
Biblioteki odpowiadają za obsługę wyświetlacza OLED SSD1306 128×64, prezentację stanu robota oraz podstawową diagnostykę.
9. TRYBY PRACY
Sterownik wykorzystuje dwa niezależne poziomy trybów.
9.1. Tryb pracy głównej
- MANUAL
- AUTO
9.2. Tryb sterowania ręcznego
W trybie MANUAL dostępne są:
- JOINT
- TOOL
Dzięki temu wybór JOINT/TOOL nie jest tym samym co wybór MANUAL/AUTO.
10. STEROWANIE RĘCZNE – JOINT
W trybie JOINT operator steruje bezpośrednio poszczególnymi osiami robota.
Aktualne mapowanie pada:
Element kontrolera | Funkcja |
Lewy analog X | ARM1 |
Lewy analog Y | ARM2 |
Prawy analog Y | Z |
Prawy analog X | obrót chwytaka |
A / B | otwieranie / zamykanie chwytaka |
START | JOINT / TOOL |
Wartości z analogów są normalizowane i posiadają martwą strefę, aby niewielkie odchylenia drążka nie powodowały ruchu robota.
Po połączeniu kontrolera robot nie zostaje od razu uzbrojony. Wymagane jest około 300 ms neutralnego położenia wszystkich elementów sterujących. Rozwiązanie to zapobiega niekontrolowanemu ruchowi tuż po sparowaniu pada.
11. STEROWANIE RĘCZNE – TOOL
W trybie TOOL operator nie steruje bezpośrednio kątami ARM1 i ARM2.
Lewy analog zadaje ruch końcówki roboczej w płaszczyźnie XY, a program oblicza wymagane kąty ramion za pomocą kinematyki odwrotnej.
Sterowanie osi Z i chwytakiem pozostaje analogiczne jak w trybie JOINT.
Jeżeli zadany punkt jest poza obszarem osiągalnym lub wymaga przekroczenia limitu osi, polecenie nie jest wykonywane i może zostać zasygnalizowany błąd.
12. KINEMATYKA
12.1. Kinematyka prosta
Dla dwóch ramion SCARA położenie TCP w płaszczyźnie XY wyznaczane jest z zależności:
X = L1·cos(θ1) + L2·cos(θ1 + θ2)
Y = L1·sin(θ1) + L2·sin(θ1 + θ2)
oraz:
Z = położenie osi Z
gdzie:
- L1 – długość pierwszego członu,
- L2 – długość drugiego członu,
- θ1 – kąt ARM1,
- θ2 – kąt ARM2.
W aktualnej konfiguracji:
- L1 = 91,61 mm,
- L2 = 97,528 mm.
12.2. Kinematyka odwrotna
W trybie TOOL zadawana jest pozycja (X,Y), a program oblicza kąty θ1 i θ2.
Najpierw obliczana jest zależność:
cos(θ2) = (X² + Y² − L1² − L2²) / (2·L1·L2)
Jeżeli wynik znajduje się poza zakresem −1…1, punkt leży poza geometrycznym obszarem pracy.
Następnie wyznaczane są kąty przegubów. Dla typowego robota dwuprzegubowego istnieją dwie konfiguracje geometryczne, odpowiadające położeniu „łokcia” po dwóch stronach.
Aktualny firmware wykorzystuje jedną z tych konfiguracji (ELBOW_UP).
Po obliczeniu kątów sprawdzane są również programowe ograniczenia zakresów ARM1 i ARM2.
13. POZYCJA HOME I HOMING
Aktualny robot nie wykonuje automatycznego homingu.
Pozycję HOME należy ustawić ręcznie przed włączeniem zasilania lub resetem ESP32.
Firmware przyjmuje następujące wartości startowe:
Oś | Pozycja HOME |
ARM1 | 0° |
ARM2 | 0° |
Z | 0 mm |
Obrót chwytaka | 90° |
Chwytak | 30° |
Po starcie licznik kroków każdej osi zostaje ustawiony na pozycję odpowiadającą HOME.
Jeżeli mechanika nie została rzeczywiście ustawiona w tej pozycji, wszystkie późniejsze obliczenia położenia będą obarczone błędem.
Automatyczny homing z wykorzystaniem krańcówek jest przewidywany jako możliwe przyszłe rozszerzenie.
14. FUNKCJA TEACH
Przycisk TEACH na płytce umożliwia zapis aktualnej pozycji robota.
TEACH działa tylko:
- w trybie MANUAL,
- przy zatrzymanych osiach,
- gdy E-STOP nie jest aktywny.
14.1. Krótkie naciśnięcie
Zapisuje kolejny punkt programu.
Każdy punkt zawiera:
- pozycję ARM1,
- pozycję ARM2,
- pozycję Z,
- pozycję serwa obrotu chwytaka,
- pozycję serwa chwytaka,
- czas postoju dwellMs.
Maksymalna liczba punktów wynosi 20.
14.2. Długie naciśnięcie
Przytrzymanie przycisku przez około 1,8 s usuwa cały zapisany program.
14.3. Pamięć
Program jest przechowywany w pamięci NVS ESP32. Dzięki temu nie jest tracony po wyłączeniu zasilania.
15. TRYB AUTO
Przycisk MODE przełącza pracę pomiędzy MANUAL i AUTO.
Zmiana trybu jest możliwa tylko przy zatrzymanych osiach.
W AUTO pad nie służy do bezpośredniego sterowania osiami.
Przycisk START realizuje funkcję:
- IDLE → START,
- RUN → PAUSE,
- PAUSED → RESUME.
AUTO odtwarza punkty zapisane wcześniej funkcją TEACH.
16. PRZEBIEG CYKLU AUTO
Dla każdego punktu programu wykonywane są następujące działania:
- ustawienie pozycji docelowych serwomechanizmów,
- wyznaczenie odległości do przejechania przez ARM1, ARM2 i Z,
- dobranie prędkości osi,
- rozpoczęcie ruchu PTP,
- oczekiwanie na zakończenie ruchu wszystkich osi,
- odczekanie zadanego czasu postoju,
- przejście do kolejnego punktu.
W aktualnej konfiguracji program pracuje domyślnie w pętli.
16.1. Typ ruchu
Obecna implementacja AUTO realizuje ruch PTP (Point To Point).
Oznacza to, że synchronizowane są czasy przejazdu osi, ale tor TCP pomiędzy punktami nie musi być linią prostą.
Interpolacja liniowa LIN jest przewidywana jako możliwe przyszłe rozszerzenie.
17. REGULACJA PRĘDKOŚCI W AUTO
W gałęzi dev dostępna jest regulacja prędkości całego ruchu w trybie AUTO.
D-pad | Funkcja |
góra | +10% |
dół | −10% |
lewo | powrót do 100% |
Zakres regulacji:
50% … 250%
Override skaluje bazowe prędkości wszystkich trzech osi: ARM1, ARM2 i Z. Przy 100% wartości bazowe wynoszą odpowiednio 20°/s, 20°/s i 3,0 mm/s.
Zmiana prędkości zaczyna obowiązywać od kolejnego ruchu PTP. Bieżący ruch nie jest przeliczany w locie.
18. ZABEZPIECZENIA PROGRAMOWE
Firmware zawiera kilka warstw zabezpieczeń i kontroli poprawności danych.
18.1. Limity pozycji
Polecenia ruchu są ograniczane do zakresów:
- ARM1: −105° … +105°,
- ARM2: −125° … +125°,
- Z: 0 … 300 mm.
18.2. Częstotliwość STEP i prędkość
Aktualny firmware nie stosuje dodatkowych twardych górnych limitów częstotliwości STEP. Częstotliwość STEP wynika z zadanej prędkości osi, przełożenia, mikrokroku oraz override AUTO.
W MANUAL prędkość jest ograniczana do skonfigurowanych prędkości JOG, natomiast w AUTO do bazowych prędkości AUTO pomnożonych przez override 50…250%. Przyspieszenia są realizowane przez FastAccelStepper.
18.3. Walidacja wartości numerycznych
Przed przeliczeniami i wydaniem części poleceń ruchu sprawdzane są wartości typu NaN i Inf. W przypadku wykrycia błędu firmware nie przekazuje nieprawidłowej pozycji do napędów, może zsynchronizować pozycję z licznikami kroków i zgłasza błąd przez Serial/OLED.
18.4. Walidacja programu TEACH/NVS
Podczas odczytu programu z NVS sprawdzany jest rozmiar danych oraz poprawność zapisanych punktów. Nieprawidłowy program, np. zawierający NaN, Inf lub pozycję poza zakresem osi, jest odrzucany i czyszczony.
18.5. Timeout pada
W MANUAL brak aktualnych danych z kontrolera przez określony czas powoduje zatrzymanie ruchu i rozbrojenie sterowania.
18.6. Neutralne uzbrojenie pada
Po połączeniu kontrolera wymagane jest neutralne położenie elementów sterujących przez około 300 ms przed uzbrojeniem ruchu.
18.7. Utrata kontrolera w AUTO
Rozłączenie kontrolera podczas aktywnego cyklu AUTO powoduje przejście programu w PAUSE.
18.8. E-STOP
E-STOP zatrzaskuje stan awaryjny do czasu restartu sterownika. Programowo zatrzymywane są generatory kroków, AUTO przechodzi w FAULT, a sterowanie ręczne pozostaje zablokowane.
19. PROCEDURA MONTAŻU ELEKTRONIKI
- Sprawdzić PCB pod kątem zwarć, uszkodzeń ścieżek i jakości lutowania.
- Zweryfikować polaryzację kondensatorów elektrolitycznych i diod.
- Sprawdzić orientację tranzystorów, układów scalonych i sterowników A4988.
- Zamontować ESP32 na przewidzianych złączach goldpin.
- Przed podłączeniem ESP32 i serw ustawić napięcie LM2596 na 5,0 V.
- Podłączyć przewody silników, serw i elementów panelu zgodnie ze schematem.
- Uporządkować przewody tak, aby nie kolidowały z ruchomymi częściami.
- Zapewnić luz przewodów w miejscach ruchu.
- Zapewnić wentylację A4988 oraz elementów wydzielających ciepło.
- Sprawdzić działanie E-STOP przed testami ruchu.
20. PROCEDURA URUCHOMIENIA
Przed pierwszym uruchomieniem:
- sprawdzić wszystkie połączenia mechaniczne,
- sprawdzić naciąg pasków,
- sprawdzić prowadzenie przewodów,
- sprawdzić poprawność zasilania,
- ustawić LM2596 na 5,0 V,
- sprawdzić ustawienie prądów A4988,
- upewnić się, że obszar pracy robota jest wolny,
- ręcznie ustawić robot w pozycji HOME,
- włączyć zasilanie,
- obserwować diody sygnalizacyjne i komunikaty Serial,
- połączyć kontroler Bluetooth,
- pozostawić analogi i przyciski w neutralnym położeniu do czasu uzbrojenia,
- wykonać krótkie testy pojedynczych osi przy małych wychyleniach analogów,
- sprawdzić kierunki ruchu,
- sprawdzić działanie E-STOP,
- dopiero po poprawnym wykonaniu powyższych testów przejść do pełnego zakresu pracy.
21. TESTY ODBIORCZE
Zamiast ograniczać testy do stwierdzenia „działa poprawnie”, zaleca się zapisywanie wyników pomiarowych.
21.1. Kontrola PCB
Kryterium: brak zwarć, zimnych lutów, błędnej orientacji i uszkodzeń.
21.2. Kontrola napięcia 5 V
Kryterium: napięcie LM2596 ustawione na 5,0 V przed podłączeniem odbiorników wymagających tego napięcia.
21.3. Test ARM1
Zadać ruch np. o 30°, 60° i 90° w obu kierunkach.
Sprawdzić:
- kierunek,
- płynność,
- brak gubienia kroków,
- zgodność kąta rzeczywistego z zadanym.
21.4. Test ARM2
Analogicznie jak dla ARM1.
21.5. Test osi Z
Wykonać przejazdy kontrolne np. 5 mm, 10 mm i 20 mm.
Pomiar wykonać suwmiarką lub czujnikiem zegarowym.
21.6. Test chwytaka
Sprawdzić:
- pełne otwarcie,
- pełne zamknięcie,
- brak mechanicznego blokowania,
- brak nadmiernego poboru prądu przy dojeździe do ograniczeń.
21.7. Test TEACH
Zapisać kilka punktów, wyłączyć zasilanie, uruchomić ponownie i zweryfikować obecność programu.
21.8. Test AUTO
Zapisać minimum 5 punktów i uruchomić wielokrotne odtwarzanie.
Sprawdzić:
- osiąganie wszystkich punktów,
- poprawną obsługę serw,
- czasy postoju,
- działanie START/PAUSE/RESUME,
- poprawne przejście do kolejnego cyklu.
21.9. Test utraty kontrolera
MANUAL
Rozłączenie pada powinno zatrzymać sterowanie.
AUTO
Utrata kontrolera podczas aktywnego cyklu powinna przełączyć program w PAUSE.
21.10. Test E-STOP
Po aktywacji E-STOP:
- wszystkie osie powinny zostać zatrzymane,
- stan AUTO powinien przejść w FAULT,
- dalsza praca powinna być niemożliwa do czasu restartu.
21.11. Test powtarzalności
Wybrać minimum trzy punkty w przestrzeni roboczej.
Dla każdego wykonać co najmniej 20 dojazdów i zmierzyć rozrzut pozycji TCP.
Na podstawie tych pomiarów można dopiero wpisać rzeczywistą powtarzalność robota.
21.12. Test długotrwały
Zaleca się wykonanie co najmniej 30-minutowej pracy cyklicznej.
Należy monitorować:
- temperaturę A4988,
- temperaturę silników,
- temperaturę LM2596,
- stabilność Bluetooth,
- ewentualne gubienie kroków,
- samoczynne resety ESP32.
22. BEZPIECZEŃSTWO
Podczas pracy nie wolno:
- wkładać rąk w obszar pracy robota,
- zatrzymywać ramienia ręką,
- dotykać poruszających się pasków,
- pracować z uszkodzonymi przewodami,
- podłączać i odłączać silników krokowych przy załączonym zasilaniu,
- pozostawiać robota bez nadzoru podczas testów,
- uruchamiać pełnej prędkości przed zakończeniem testów pojedynczych osi.
Przed pracami serwisowymi należy odłączyć zasilanie.
Ze względu na edukacyjny charakter urządzenia wszystkie testy powinny być prowadzone pod nadzorem osoby znającej budowę stanowiska.
- KONSERWACJA
Okresowo należy kontrolować:
- naciąg pasków,
- stan kół pasowych,
- stan łożysk,
- stan prowadnic,
- dokręcenie śrub,
- stan elementów drukowanych 3D,
- prowadzenie przewodów,
- temperaturę silników,
- temperaturę A4988,
- stabilność połączeń złączowych.
Szczególną uwagę należy zwracać na układ napędowy drugiego członu, ponieważ luz paska bezpośrednio wpływa na dokładność i powtarzalność robota.
24. MOŻLIWOŚCI ROZBUDOWY
Projekt może zostać rozwinięty o:
- automatyczny homing z wykorzystaniem krańcówek,
- interpolację liniową LIN w przestrzeni TCP,
- system wizyjny,
- kamerę do rozpoznawania obiektów,
- czujnik odległości,
- wykrywanie obecności detalu,
- elektromagnes,
- przyssawkę podciśnieniową,
- marker,
- dozownik,
- narzędzie pomiarowe,
- interfejs PC do edycji programów,
- zapis większej liczby programów,
- wybór programu z poziomu panelu,
- raportowanie pozycji i błędów przez Wi-Fi.
25. PRZYKŁADOWA SEKWENCJA PICK AND PLACE
Przykładowa sekwencja może wyglądać następująco:
START → pozycja bazowa → przejazd nad detal → Z w dół → zamknięcie chwytaka → Z w górę → przejazd nad miejsce odkładania → Z w dół → otwarcie chwytaka → Z w górę → powrót → STOP
Sekwencję można zapisać za pomocą funkcji TEACH, a następnie odtwarzać w trybie AUTO.
26. ZALEŻNOŚĆ PARAMETRÓW MECHANICZNYCH I PROGRAMOWYCH
Zmiana konstrukcji mechanicznej może wymagać modyfikacji firmware.
Przykładowo:
zmiana długości ramienia → zmiana parametrów kinematyki → zmiana obliczanych kątów → zmiana położenia TCP
Podobnie:
zmiana przełożenia → zmiana liczby kroków/stopień → błędna pozycja osi przy starych parametrach
Dlatego po każdej modyfikacji:
- długości ramion,
- kół pasowych,
- przełożeń,
- śruby osi Z,
- mikrokroku,
należy sprawdzić i w razie potrzeby zaktualizować parametry programu.
27. WERSJONOWANIE DOKUMENTACJI
Dokumentacja techniczna powinna zawsze wskazywać wersję firmware lub commit repozytorium, do którego się odnosi.
Jest to szczególnie ważne, ponieważ w trakcie rozwoju projektu zmieniały się m.in.:
- prędkości osi,
- przyspieszenia,
- zachowanie przycisków MODE i TEACH,
- obsługa utraty połączenia z padem,
- parametry AUTO,
- zabezpieczenia przed niekontrolowanym ruchem.
Przed wydrukowaniem dokumentacji zaleca się wpisanie:
- numeru rewizji PCB,
- nazwy gałęzi,
- hash commita,
- daty wersji,
- autora dokumentacji.
28. POCHODZENIE ELEMENTÓW PROJEKTU
Konstrukcja mechaniczna korzysta z rozwiązań i modeli projektu bazowego PyBot, natomiast układ sterowania, płytka PCB, konfiguracja ESP32 i aktualny firmware są rozwijane w ramach niniejszego projektu.
Przed publiczną dystrybucją kompletu materiałów należy zweryfikować warunki licencyjne modeli źródłowych oraz dodać do repozytorium odpowiednie informacje o licencjach i autorach.
29. PODSUMOWANIE
Projekt „Robotyka bez granic” stanowi kompletne edukacyjne stanowisko mechatroniczne łączące mechanikę, druk 3D, elektronikę, napędy, programowanie mikrokontrolerów, kinematykę robotów oraz zagadnienia automatyzacji.
Aktualna wersja robota umożliwia:
- sterowanie bezprzewodowe,
- ręczne prowadzenie osi w trybie JOINT,
- sterowanie TCP w trybie TOOL,
- zapisywanie punktów TEACH,
- automatyczne odtwarzanie programu PTP,
- regulację prędkości ARM1, ARM2 i Z w AUTO,
- bieżący podgląd stanu na wyświetlaczu OLED,
- trwałe przechowywanie programu w pamięci ESP32,
- zatrzymanie awaryjne oraz dodatkowe zabezpieczenia programowe.
Najważniejszymi dalszymi kierunkami rozwoju są automatyczny homing, interpolacja LIN, pomiar rzeczywistej powtarzalności i udźwigu oraz dalsza rozbudowa interfejsu operatora.
Тип пристрою: навчальна роботизована рука SCARA 3 DOF + захват 2 DOF
Контролер: ESP32 D1 Mini / WeMos D1 Mini ESP32
Керування: Bluetooth-контролер + кнопки на платі
Програмне забезпечення: C++ / Arduino Framework / PlatformIO
Репозиторій: Attiny2313/SCARA-Robot-Controler-BT
ЗМІСТ
- МЕТА ПРОЄКТУ
- ХАРАКТЕРИСТИКА РОБОТА
- ТЕХНІЧНІ ПАРАМЕТРИ
- МЕХАНІЧНА КОНСТРУКЦІЯ
- СИСТЕМА ПРИВОДІВ
- ЕЛЕКТРИЧНА ТА ЕЛЕКТРОННА СИСТЕМА
- АРХІТЕКТУРА КЕРУВАННЯ
- ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ
- РЕЖИМИ РОБОТИ
- РУЧНЕ КЕРУВАННЯ – JOINT
- РУЧНЕ КЕРУВАННЯ – TOOL
- КІНЕМАТИКА
- ПОЛОЖЕННЯ HOME І HOMING
- ФУНКЦІЯ TEACH
- РЕЖИМ AUTO
- ПЕРЕБІГ ЦИКЛУ AUTO
- РЕГУЛЮВАННЯ ШВИДКОСТІ В AUTO
- ПРОГРАМНІ ЗАСОБИ ЗАХИСТУ
- ПРОЦЕДУРА МОНТАЖУ ЕЛЕКТРОНІКИ
- ПРОЦЕДУРА ЗАПУСКУ
- ПРИЙМАЛЬНІ ВИПРОБУВАННЯ
- БЕЗПЕКА
- ТЕХНІЧНЕ ОБСЛУГОВУВАННЯ
- МОЖЛИВОСТІ РОЗШИРЕННЯ
- ПРИКЛАД ПОСЛІДОВНОСТІ PICK AND PLACE
- ВЗАЄМОЗВ’ЯЗОК МЕХАНІЧНИХ І ПРОГРАМНИХ ПАРАМЕТРІВ
- ВЕРСІОНУВАННЯ ДОКУМЕНТАЦІЇ
- ПОХОДЖЕННЯ ЕЛЕМЕНТІВ ПРОЄКТУ
- ПІДСУМОК
1. МЕТА ПРОЄКТУ
Метою проєкту є виготовлення, запуск і програмування навчального робота типу SCARA (Selective Compliance Assembly Robot Arm), призначеного для вивчення питань механіки, електроніки, автоматики, робототехніки, програмування та технологій 3D-друку.
Робот дає змогу:
- вручну керувати окремими осями,
- керувати положенням робочого органу в декартовій системі координат,
- керувати захватом,
- зберігати точки методом TEACH,
- автоматично відтворювати збережену послідовність рухів,
- виконувати завдання типу Pick and Place,
- надалі розширювати систему додатковими датчиками, системою машинного зору та іншими робочими інструментами.
Проєкт має навчальний та експериментальний характер. Він не є промисловим пристроєм або сертифікованим роботом, призначеним для роботи у виробничому середовищі.
2. ХАРАКТЕРИСТИКА РОБОТА
Робот є маніпулятором типу SCARA, основна виконавча частина якого складається з:
- обертальної осі ARM1,
- обертальної осі ARM2,
- лінійної вертикальної осі Z,
- сервомеханізму обертання захвата,
- сервомеханізму відкривання та закривання захвата.
За рух трьох основних осей відповідають крокові двигуни NEMA 17. Обертання захвата та його відкривання реалізуються сервомеханізмами.
Механічна конструкція базується на рішеннях проєкту PyBot і використовує елементи, виготовлені методом 3D-друку, а також стандартні механічні компоненти, що застосовуються, зокрема, у 3D-принтерах.
Керування реалізує мікроконтролер ESP32, який працює разом із спеціальною платою PCB. ESP32 зв’язується з бездротовим контролером через Bluetooth і самостійно реалізує логіку керування, кінематику, генерацію траєкторії PTP, обслуговування TEACH/AUTO та програмні засоби захисту.
Комп’ютер не потрібен для нормальної роботи робота. Він використовується для програмування, оновлення firmware та діагностики через послідовний порт.
3. ТЕХНІЧНІ ПАРАМЕТРИ
3.1. Параметри конструкції та керування
Параметр | Значення |
Тип робота | SCARA |
Кількість основних осей | 3 |
Робочі осі | ARM1, ARM2, Z |
Додаткові осі захвата | 2 |
Основні двигуни | 3 × NEMA 17 |
Кут повного кроку двигуна | 1,8° |
Кількість повних кроків на оберт | 200 |
Мікрокрок | 1/16 |
Сервомеханізми | 2 × класу SG90/MG90/MG92R |
Основний контролер | ESP32 D1 Mini |
Драйвери двигунів | A4988 |
Середовище програмування | PlatformIO / Visual Studio Code |
Framework | Arduino |
Мова програми | C++ |
Зв’язок із геймпадом | Bluetooth / Bluepad32 |
3.2. Параметри, що використовуються поточним firmware
Параметр | Значення |
Довжина ланки ARM1 | 91,61 мм |
Довжина ланки ARM2 | 97,528 мм |
Передатне відношення ARM1 | 4,5 |
Передатне відношення ARM2 | 7,280 |
Крок гвинта осі Z | 2,0 мм/об. |
Передатне відношення Z | 1,0 |
Програмний діапазон ARM1 | −105° … +105° |
Програмний діапазон ARM2 | −125° … +125° |
Програмний діапазон Z | 0 … 300 мм |
Діапазон обертання захвата | 0 … 180° |
Діапазон серво захвата | 15 … 95° |
Ручна швидкість ARM1 | 25°/с |
Ручна швидкість ARM2 | 25°/с |
Ручна швидкість Z | 3,0 мм/с |
Швидкість TCP у режимі TOOL | 20 мм/с |
Базова швидкість AUTO ARM1 | 20°/с |
Базова швидкість AUTO ARM2 | 20°/с |
Базова швидкість AUTO Z | 3,0 мм/с |
Override швидкості AUTO | 50…250% для ARM1, ARM2 і Z |
Прискорення ARM1 | 12000 STEP/с² |
Прискорення ARM2 | 5000 STEP/с² |
Прискорення Z | 6000 STEP/с² |
Кількість точок програми TEACH | макс. 20 |
3.3. Параметри, що потребують вимірювання реального екземпляра
Не слід без додаткових вимірювань приймати значення, заявлені для базового проєкту PyBot, як параметри готового робота.
Зокрема, потребують вимірювання:
- фактична маса робота,
- фактичний робочий простір,
- фактична повторюваність позиціонування,
- максимальна безпечна вантажопідйомність,
- максимальні практичні швидкості осей,
- точність позиціонування TCP.
До моменту проведення приймальних випробувань ці значення слід вважати такими, що підлягають визначенню.
4. МЕХАНІЧНА КОНСТРУКЦІЯ
4.1. Основа
Основа є несучим елементом усієї конструкції. До неї кріпляться, зокрема:
- напрямні осі Z,
- приводи,
- елементи пасових передач,
- керуюча електроніка,
- елементи захисту кабелів.
Основа повинна забезпечувати жорсткість конструкції та можливість стабільного встановлення робота на робочому місці.
4.2. Перша ланка руки – ARM1
Перша ланка з’єднує основу з центральним шарніром робота. Її рух змінює напрямок усього маніпулятора в площині XY.
Привід реалізований кроковим двигуном через пасову передачу.
4.3. Друга ланка руки – ARM2
Друга ланка з’єднує першу ланку з робочим органом. Разом з віссю ARM1 вона визначає положення TCP у площині XY.
Рух реалізується незалежним кроковим приводом через систему пасових передач.
4.4. Вертикальна вісь Z
Вісь Z забезпечує вертикальний рух робочого органу. Привід здійснюється за допомогою крокового двигуна та гвинта з кроком 2 мм/оберт.
Через велику кількість кроків на 1 мм руху та ризик пропуску кроків вісь Z працює зі значно нижчою швидкістю, ніж обертальні осі.
4.5. Захват
Захват оснащений двома сервомеханізмами:
- серво обертання інструмента,
- серво відкривання та закривання захвата.
Положення сервоприводів можуть зберігатися разом із точками програми TEACH.
5. СИСТЕМА ПРИВОДІВ
5.1. Крокові двигуни
Кожна з трьох основних осей використовує двигун NEMA 17 з кутом повного кроку 1,8°.
Повному оберту відповідає:
360° / 1,8° = 200 кроків
При використанні мікрокроку 1/16:
200 × 16 = 3200 мікрокроків на оберт двигуна
Додатково кількість робочих кроків залежить від передатного відношення конкретної осі.
Для осі Z, за кроку гвинта 2 мм/оберт і мікрокроку 1/16:
3200 / 2 = 1600 кроків/мм
Це значення використовується firmware для перерахунку положення осі Z.
5.2. Драйвери A4988
Драйвери A4988 відповідають за живлення та керування кроковими двигунами. Кожен драйвер отримує від ESP32 сигнали:
- STEP,
Необхідно правильно налаштувати струм драйверів відповідно до застосованих двигунів і способу охолодження.
Не можна підключати або відключати кроковий двигун при ввімкненому живленні драйвера.
6. ЕЛЕКТРИЧНА ТА ЕЛЕКТРОННА СИСТЕМА
6.1. Основні елементи
- ESP32 D1 Mini,
- 3 драйвери A4988,
- перетворювач LM2596,
- роз’єми двигунів,
- роз’єми сервомеханізмів,
- кнопки TEACH і MODE,
- коло E-STOP,
- сигнальні світлодіоди,
- OLED-дисплей SSD1306 128×64 I2C,
- роз’єми кінцевих вимикачів,
- пасивні та захисні елементи.
Документація плати PCB знаходиться в каталозі PCB репозиторію.
6.2. Призначення входів і виходів ESP32
Функція | GPIO |
STEP ARM1 | 13 |
DIR ARM1 | 26 |
STEP ARM2 | 23 |
DIR ARM2 | 14 |
STEP Z | 18 |
DIR Z | 19 |
Servo ROTATE | 27 |
Servo GRIP | 32 |
TEACH | 25 |
MODE | 33 |
E-STOP | 39 |
Кінцевий вимикач Z | 34 |
Кінцевий вимикач ARM1 | 35 |
Кінцевий вимикач ARM2 | 36 |
LED Bluetooth | 4 |
LED ERROR | 16 |
LED STATUS | 17 |
I2C SDA (OLED) | 21 |
I2C SCL (OLED) | 22 |
6.3. Кінцеві вимикачі
Плата має входи для кінцевих вимикачів осей ARM1, ARM2 і Z.
У поточній версії firmware кінцеві вимикачі не реалізують автоматичний homing. Входи збережені апаратно для майбутнього розширення.
6.4. E-STOP
E-STOP є елементом безпеки системи.
Після його активації firmware:
- негайно зупиняє генерацію кроків,
- блокує ручне керування,
- переводить програму AUTO у стан FAULT,
- сигналізує про помилку,
- вимагає перезапуску контролера перед повторною роботою.
Система повинна бути виконана так, щоб E-STOP не покладався виключно на програмне забезпечення, а додатково обмежував можливість подальшого живлення або активації приводів відповідно до концепції керуючої плати.
6.5. OLED-дисплей
Контролер підтримує OLED-дисплей SSD1306 128×64, підключений через I2C. Шина використовує GPIO21 як SDA і GPIO22 як SCL.
Під час ініціалізації firmware автоматично перевіряє адреси 0x3C і 0x3D. Відсутність дисплея не блокує роботу робота — інформація про проблему передається через Serial.
Під час роботи OLED показує, зокрема:
- режим MANUAL/AUTO і стан програми,
- стан Bluetooth-з’єднання,
- кількість збережених точок TEACH,
- override швидкості в AUTO,
- фактичні положення ARM1, ARM2 і Z,
- положення TCP X/Y або номер поточної точки програми,
- стани помилок, зокрема E-STOP і NUM ERR.
7. АРХІТЕКТУРА КЕРУВАННЯ
Фактичний потік керування можна подати так:
Bluetooth-геймпад → Bluepad32 → ESP32 → логіка керування → кінематика / AUTO → FastAccelStepper → A4988 → двигуни NEMA17
Паралельно:
ESP32 → ESP32Servo → серво обертання + серво захвата
ESP32 одночасно виконує функції:
- приймача команд,
- контролера осей,
- контролера сервоприводів,
- модуля кінематики,
- генератора послідовності AUTO,
- пам’яті програми TEACH,
- програмного модуля безпеки,
- діагностичного модуля.
8. ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ
8.1. Середовище
Керуючу програму підготовлено мовою C++ з використанням:
- Arduino Framework,
- PlatformIO,
- Visual Studio Code.
8.2. Основні бібліотеки
Bluepad32
Бібліотека відповідає за обслуговування Bluetooth-контролерів.
FastAccelStepper
Бібліотека генерує сигнали STEP для трьох осей і дає змогу задавати швидкість, прискорення та положення.
ESP32Servo
Бібліотека керує сервомеханізмами захвата.
Preferences
Бібліотека обслуговує пам’ять NVS ESP32. У пам’яті зберігається програма TEACH, завдяки чому точки залишаються доступними після вимкнення живлення.
Adafruit GFX / Adafruit SSD1306
Бібліотеки відповідають за роботу OLED-дисплея SSD1306 128×64, відображення стану робота та базову діагностику.
9. РЕЖИМИ РОБОТИ
Контролер використовує два незалежні рівні режимів.
9.1. Основний режим роботи
- MANUAL
- AUTO
9.2. Режим ручного керування
У режимі MANUAL доступні:
- JOINT
- TOOL
Таким чином, вибір JOINT/TOOL не є тим самим, що вибір MANUAL/AUTO.
10. РУЧНЕ КЕРУВАННЯ – JOINT
У режимі JOINT оператор безпосередньо керує окремими осями робота.
Поточне призначення органів геймпада:
Елемент контролера | Функція |
Лівий аналог X | ARM1 |
Лівий аналог Y | ARM2 |
Правий аналог Y | Z |
Правий аналог X | обертання захвата |
A / B | відкривання / закривання захвата |
START | JOINT / TOOL |
Значення з аналогових стиків нормалізуються та мають мертву зону, щоб невеликі відхилення стика не спричиняли рух робота.
Після підключення контролера робот не озброюється одразу. Потрібно приблизно 300 мс нейтрального положення всіх органів керування. Це запобігає неконтрольованому руху відразу після спарювання геймпада.
11. РУЧНЕ КЕРУВАННЯ – TOOL
У режимі TOOL оператор не керує безпосередньо кутами ARM1 і ARM2.
Лівий аналог задає рух робочого органу в площині XY, а програма обчислює необхідні кути плечей за допомогою оберненої кінематики.
Керування віссю Z та захватом залишається аналогічним до режиму JOINT.
Якщо задана точка знаходиться поза досяжною областю або потребує перевищення межі осі, команда не виконується і може бути сигналізована помилка.
12. КІНЕМАТИКА
12.1. Пряма кінематика
Для двох плечей SCARA положення TCP у площині XY визначається залежностями:
X = L1·cos(θ1) + L2·cos(θ1 + θ2)
Y = L1·sin(θ1) + L2·sin(θ1 + θ2)
та:
Z = положення осі Z
де:
- L1 – довжина першої ланки,
- L2 – довжина другої ланки,
- θ1 – кут ARM1,
- θ2 – кут ARM2.
У поточній конфігурації:
- L1 = 91,61 мм,
- L2 = 97,528 мм.
12.2. Обернена кінематика
У режимі TOOL задається положення (X,Y), а програма обчислює кути θ1 і θ2.
Спочатку обчислюється залежність:
cos(θ2) = (X² + Y² − L1² − L2²) / (2·L1·L2)
Якщо результат виходить за межі −1…1, точка знаходиться поза геометричною робочою областю.
Потім визначаються кути шарнірів. Для типового двошарнірного робота існують дві геометричні конфігурації, що відповідають положенню «ліктя» з двох боків.
Поточний firmware використовує одну з цих конфігурацій (ELBOW_UP).
Після обчислення кутів також перевіряються програмні обмеження діапазонів ARM1 і ARM2.
13. ПОЛОЖЕННЯ HOME І HOMING
Поточний робот не виконує автоматичний homing.
Положення HOME необхідно встановити вручну перед увімкненням живлення або скиданням ESP32.
Firmware приймає такі стартові значення:
Вісь | Положення HOME |
ARM1 | 0° |
ARM2 | 0° |
Z | 0 мм |
Обертання захвата | 90° |
Захват | 30° |
Після запуску лічильник кроків кожної осі встановлюється в положення, що відповідає HOME.
Якщо механіка фактично не була встановлена в це положення, усі подальші обчислення положення міститимуть помилку.
Автоматичний homing із використанням кінцевих вимикачів передбачений як можливе майбутнє розширення.
14. ФУНКЦІЯ TEACH
Кнопка TEACH на платі дає змогу зберегти поточне положення робота.
TEACH працює лише:
- у режимі MANUAL,
- при зупинених осях,
- коли E-STOP не активний.
14.1. Коротке натискання
Зберігає наступну точку програми.
Кожна точка містить:
- положення ARM1,
- положення ARM2,
- положення Z,
- положення серво обертання захвата,
- положення серво захвата,
- час паузи dwellMs.
Максимальна кількість точок становить 20.
14.2. Довге натискання
Утримання кнопки приблизно 1,8 с видаляє всю збережену програму.
14.3. Пам’ять
Програма зберігається в пам’яті NVS ESP32. Завдяки цьому вона не втрачається після вимкнення живлення.
15. РЕЖИМ AUTO
Кнопка MODE перемикає роботу між MANUAL і AUTO.
Зміна режиму можлива лише при зупинених осях.
У AUTO геймпад не використовується для безпосереднього керування осями.
Кнопка START реалізує функції:
- IDLE → START,
- RUN → PAUSE,
- PAUSED → RESUME.
AUTO відтворює точки, раніше збережені функцією TEACH.
16. ПЕРЕБІГ ЦИКЛУ AUTO
Для кожної точки програми виконуються такі дії:
- встановлення цільових положень сервомеханізмів,
- визначення відстані, яку мають пройти ARM1, ARM2 і Z,
- вибір швидкостей осей,
- початок руху PTP,
- очікування завершення руху всіх осей,
- очікування заданого часу паузи,
- перехід до наступної точки.
У поточній конфігурації програма за замовчуванням працює циклічно.
16.1. Тип руху
Поточна реалізація AUTO виконує рух PTP (Point To Point).
Це означає, що синхронізуються часи переміщення осей, але траєкторія TCP між точками не обов’язково є прямою лінією.
Лінійна інтерполяція LIN передбачена як можливе майбутнє розширення.
17. РЕГУЛЮВАННЯ ШВИДКОСТІ В AUTO
У гілці dev доступне регулювання швидкості всього руху в режимі AUTO.
D-pad | Функція |
вгору | +10% |
вниз | −10% |
вліво | повернення до 100% |
Діапазон регулювання:
50% … 250%
Override масштабує базові швидкості всіх трьох осей: ARM1, ARM2 і Z. При 100% базові значення становлять відповідно 20°/с, 20°/с і 3,0 мм/с.
Зміна швидкості починає діяти з наступного руху PTP. Поточний рух не перераховується в реальному часі.
18. ПРОГРАМНІ ЗАСОБИ ЗАХИСТУ
Firmware містить кілька рівнів захисту та перевірки коректності даних.
18.1. Межі положення
Команди руху обмежуються діапазонами:
- ARM1: −105° … +105°,
- ARM2: −125° … +125°,
- Z: 0 … 300 мм.
18.2. Частота STEP і швидкість
Поточний firmware не використовує додаткових жорстких верхніх обмежень частоти STEP. Частота STEP визначається заданою швидкістю осі, передатним відношенням, мікрокроком та override AUTO.
У MANUAL швидкість обмежується налаштованими швидкостями JOG, а в AUTO — базовими швидкостями AUTO, помноженими на override 50…250%. Прискорення реалізує FastAccelStepper.
18.3. Перевірка числових значень
Перед обчисленнями та частиною команд руху перевіряються значення типу NaN і Inf. У разі виявлення помилки firmware не передає некоректну позицію приводам, може синхронізувати позицію з лічильниками кроків і повідомляє про помилку через Serial/OLED.
18.4. Перевірка програми TEACH/NVS
Під час читання програми з NVS перевіряються розмір даних і коректність збережених точок. Некоректна програма, наприклад із NaN, Inf або позицією поза діапазоном осі, відхиляється та очищується.
18.5. Timeout геймпада
У MANUAL відсутність актуальних даних від контролера протягом визначеного часу спричиняє зупинку руху та роззброєння керування.
18.6. Нейтральне озброєння геймпада
Після підключення контролера необхідне нейтральне положення органів керування приблизно 300 мс перед активацією руху.
18.7. Втрата контролера в AUTO
Відключення контролера під час активного циклу AUTO переводить програму в PAUSE.
18.8. E-STOP
E-STOP фіксує аварійний стан до моменту перезапуску контролера. Програмно зупиняються генератори кроків, AUTO переходить у FAULT, а ручне керування залишається заблокованим.
19. ПРОЦЕДУРА МОНТАЖУ ЕЛЕКТРОНІКИ
- Перевірити PCB на наявність коротких замикань, пошкоджень доріжок і якість пайки.
- Перевірити полярність електролітичних конденсаторів і діодів.
- Перевірити орієнтацію транзисторів, інтегральних схем і драйверів A4988.
- Встановити ESP32 у передбачені роз’єми goldpin.
- Перед підключенням ESP32 і сервоприводів встановити напругу LM2596 на 5,0 В.
- Підключити проводи двигунів, сервоприводів і елементів панелі відповідно до схеми.
- Упорядкувати проводи так, щоб вони не заважали рухомим частинам.
- Забезпечити запас довжини проводів у місцях руху.
- Забезпечити вентиляцію A4988 та елементів, що виділяють тепло.
- Перевірити роботу E-STOP перед випробуваннями руху.
20. ПРОЦЕДУРА ЗАПУСКУ
Перед першим запуском:
- перевірити всі механічні з’єднання,
- перевірити натяг ременів,
- перевірити прокладання проводів,
- перевірити правильність живлення,
- встановити LM2596 на 5,0 В,
- перевірити налаштування струмів A4988,
- переконатися, що робоча зона робота вільна,
- вручну встановити робота в положення HOME,
- увімкнути живлення,
- спостерігати за сигнальними світлодіодами та повідомленнями Serial,
- підключити Bluetooth-контролер,
- залишити аналоги та кнопки в нейтральному положенні до моменту озброєння,
- виконати короткі тести окремих осей при малих відхиленнях аналогів,
- перевірити напрямки руху,
- перевірити роботу E-STOP,
- лише після успішного виконання наведених вище тестів перейти до повного діапазону роботи.
21. ПРИЙМАЛЬНІ ВИПРОБУВАННЯ
Замість обмеження тестів твердженням «працює правильно» рекомендується записувати результати вимірювань.
21.1. Контроль PCB
Критерій: відсутність коротких замикань, холодних пайок, неправильної орієнтації та пошкоджень.
21.2. Контроль напруги 5 В
Критерій: напруга LM2596 встановлена на 5,0 В перед підключенням споживачів, які потребують цієї напруги.
21.3. Тест ARM1
Задати рух, наприклад, на 30°, 60° і 90° в обох напрямках.
Перевірити:
- напрямок,
- плавність,
- відсутність пропусків кроків,
- відповідність фактичного кута заданому.
21.4. Тест ARM2
Аналогічно до ARM1.
21.5. Тест осі Z
Виконати контрольні переміщення, наприклад, 5 мм, 10 мм і 20 мм.
Вимірювання виконати штангенциркулем або індикатором годинникового типу.
21.6. Тест захвата
Перевірити:
- повне відкриття,
- повне закриття,
- відсутність механічного заклинювання,
- відсутність надмірного споживання струму при досягненні обмежень.
21.7. Тест TEACH
Зберегти кілька точок, вимкнути живлення, знову запустити систему та перевірити наявність програми.
21.8. Тест AUTO
Зберегти щонайменше 5 точок і запустити багаторазове відтворення.
Перевірити:
- досягнення всіх точок,
- правильну роботу сервоприводів,
- часи пауз,
- роботу START/PAUSE/RESUME,
- правильний перехід до наступного циклу.
21.9. Тест втрати контролера
MANUAL
Відключення геймпада має зупинити керування.
AUTO
Втрата контролера під час активного циклу повинна перевести програму в PAUSE.
21.10. Тест E-STOP
Після активації E-STOP:
- усі осі мають бути зупинені,
- стан AUTO має перейти в FAULT,
- подальша робота має бути неможливою до перезапуску.
21.11. Тест повторюваності
Вибрати щонайменше три точки в робочому просторі.
Для кожної виконати щонайменше 20 підходів і виміряти розкид положення TCP.
Лише на основі цих вимірювань можна вказати фактичну повторюваність робота.
21.12. Тривалий тест
Рекомендується провести щонайменше 30-хвилинну циклічну роботу.
Необхідно контролювати:
- температуру A4988,
- температуру двигунів,
- температуру LM2596,
- стабільність Bluetooth,
- можливі пропуски кроків,
- самовільні перезавантаження ESP32.
22. БЕЗПЕКА
Під час роботи заборонено:
- вводити руки в робочу зону робота,
- зупиняти плече рукою,
- торкатися рухомих ременів,
- працювати з пошкодженими проводами,
- підключати та відключати крокові двигуни при ввімкненому живленні,
- залишати робота без нагляду під час тестів,
- запускати повну швидкість до завершення тестів окремих осей.
Перед сервісними роботами необхідно відключити живлення.
Через навчальний характер пристрою всі тести повинні проводитися під наглядом особи, яка знає конструкцію стенда.
23. ТЕХНІЧНЕ ОБСЛУГОВУВАННЯ
Періодично необхідно контролювати:
- натяг ременів,
- стан шківів,
- стан підшипників,
- стан напрямних,
- затягування гвинтів,
- стан елементів, надрукованих на 3D-принтері,
- прокладання проводів,
- температуру двигунів,
- температуру A4988,
- стабільність з’єднань роз’ємів.
Особливу увагу слід приділяти приводу другої ланки, оскільки люфт ременя безпосередньо впливає на точність і повторюваність робота.
24. МОЖЛИВОСТІ РОЗШИРЕННЯ
Проєкт може бути розширений такими функціями:
- автоматичний homing із використанням кінцевих вимикачів,
- лінійна інтерполяція LIN у просторі TCP,
- система машинного зору,
- камера для розпізнавання об’єктів,
- датчик відстані,
- виявлення наявності деталі,
- електромагніт,
- вакуумна присоска,
- маркер,
- дозатор,
- вимірювальний інструмент,
- інтерфейс PC для редагування програм,
- зберігання більшої кількості програм,
- вибір програми з панелі,
- передавання положення та помилок через Wi-Fi.
25. ПРИКЛАД ПОСЛІДОВНОСТІ PICK AND PLACE
Приклад послідовності може виглядати так:
START → базове положення → переміщення над деталлю → Z вниз → закриття захвата → Z вгору → переміщення над місцем укладання → Z вниз → відкриття захвата → Z вгору → повернення → STOP
Послідовність можна зберегти за допомогою функції TEACH, а потім відтворювати в режимі AUTO.
26. ВЗАЄМОЗВ’ЯЗОК МЕХАНІЧНИХ І ПРОГРАМНИХ ПАРАМЕТРІВ
Зміна механічної конструкції може потребувати модифікації firmware.
Наприклад:
зміна довжини плеча → зміна параметрів кінематики → зміна обчислюваних кутів → зміна положення TCP
Аналогічно:
зміна передатного відношення → зміна кількості кроків/градус → неправильне положення осі зі старими параметрами
Тому після кожної модифікації:
- довжини плечей,
- шківів,
- передатних відношень,
- гвинта осі Z,
- мікрокроку,
необхідно перевірити та, за потреби, оновити параметри програми.
27. ВЕРСІОНУВАННЯ ДОКУМЕНТАЦІЇ
Технічна документація завжди повинна вказувати версію firmware або commit репозиторію, до якого вона належить.
Це особливо важливо, оскільки під час розвитку проєкту змінювалися, зокрема:
- швидкості осей,
- прискорення,
- поведінка кнопок MODE і TEACH,
- обслуговування втрати зв’язку з геймпадом,
- параметри AUTO,
- захист від неконтрольованого руху.
Перед друком документації рекомендується вказати:
- номер ревізії PCB,
- назву гілки,
- hash commit,
- дату версії,
- автора документації.
28. ПОХОДЖЕННЯ ЕЛЕМЕНТІВ ПРОЄКТУ
Механічна конструкція використовує рішення та моделі базового проєкту PyBot, тоді як система керування, плата PCB, конфігурація ESP32 і поточний firmware розробляються в межах цього проєкту.
Перед публічним розповсюдженням повного комплекту матеріалів необхідно перевірити ліцензійні умови вихідних моделей і додати до репозиторію відповідну інформацію про ліцензії та авторів.
29. ПІДСУМОК
Проєкт «Робототехніка без кордонів» є комплексним навчальним мехатронним стендом, що поєднує механіку, 3D-друк, електроніку, приводи, програмування мікроконтролерів, кінематику роботів та питання автоматизації.
Поточна версія робота дає змогу:
- бездротове керування,
- ручне керування осями в режимі JOINT,
- керування TCP у режимі TOOL,
- зберігання точок TEACH,
- автоматичне відтворення програми PTP,
- регулювання швидкості ARM1, ARM2 і Z в AUTO,
- поточне відображення стану на OLED-дисплеї,
- постійне зберігання програми в пам’яті ESP32,
- аварійну зупинку та додаткові програмні засоби захисту.
Найважливішими подальшими напрямами розвитку є автоматичний homing, інтерполяція LIN, вимірювання фактичної повторюваності та вантажопідйомності, а також подальший розвиток інтерфейсу оператора.