Spisu treści:

Robot samobalansujący - algorytm sterowania PID: 3 kroki
Robot samobalansujący - algorytm sterowania PID: 3 kroki

Wideo: Robot samobalansujący - algorytm sterowania PID: 3 kroki

Wideo: Robot samobalansujący - algorytm sterowania PID: 3 kroki
Wideo: Robot samobalansujący 2024, Listopad
Anonim
Robot samobalansujący - algorytm sterowania PID
Robot samobalansujący - algorytm sterowania PID

Ten projekt powstał, ponieważ chciałem dowiedzieć się więcej o algorytmach sterowania i jak skutecznie zaimplementować funkcjonalne pętle PID. Projekt jest nadal w fazie rozwoju, ponieważ nie został jeszcze dodany moduł Bluetooth, który umożliwi sterowanie robotem ze smartfona obsługującego technologię Bluetooth.

Zastosowane silniki N20 DC były stosunkowo tanie, a co za tym idzie mają w sobie spory luz. Prowadzi to do niewielkiego szarpnięcia, gdy silniki pokonują „luz”, który wywiera moment obrotowy na koła. W związku z tym osiągnięcie idealnie płynnego ruchu jest prawie niemożliwe. Napisany przeze mnie kod jest dość prosty, ale skutecznie demonstruje możliwości algorytmu PID.

Podsumowanie projektu:

Podwozie robota jest drukowane w 3D za pomocą drukarki Ender 3 i jest zaprojektowane tak, aby pasowało do siebie na wcisk.

Robot jest sterowany przez Arduino Uno, które pobiera dane z czujników z MPU6050 i steruje silnikami prądu stałego poprzez zewnętrzny sterownik silników. Działa na baterii 7,4 V, 1500 mAh. Sterownik silnika reguluje to do 5 V, aby zasilić Arduino i dostarcza 7,4 V do silników.

Oprogramowanie zostało napisane od podstaw przy pomocy bibliotek 'Arduino-KalmanFilter-master' i 'Arduino-MPU6050-master' z gitHub.

Kieszonkowe dzieci:

  • Części drukowane w 3D
  • Arduino UNO
  • Czujnik 6-osiowy MPU6050
  • Sterownik silnika prądu stałego
  • Silniki prądu stałego N20 (x2)
  • Bateria 9V

Krok 1: Budowa robota

Budowa robota
Budowa robota
Budowa robota
Budowa robota
Budowa robota
Budowa robota

Druk i montaż

Cała konstrukcja powinna być dobrze dopasowana, ale użyłem superglue, aby zabezpieczyć komponenty, aby zapewnić całkowitą sztywność robota podczas wyważania.

Zaprojektowałem części w Fusion 360 i zoptymalizowałem każdą część do drukowania bez podpór, aby zapewnić węższe tolerancje i czystsze wykończenie powierzchni.

Ustawienia użyte w drukarce Ender 3 były następujące: Wysokość warstwy 0,16 mm @ 40% wypełnienia dla wszystkich części.

Krok 2: Robot druku 3D

Robot druku 3D
Robot druku 3D

Podwozie (x1)

Lewe koło (x2)

Lewa obudowa silnika (x2)

Obudowa Arduino (x1)

Krok 3: Algorytm sterowania PID

Algorytm sterowania PID
Algorytm sterowania PID

Napisałem od podstaw algorytm sterowania PID, korzystając z bibliotek „Arduino-KalmanFilter-master” i „Arduino-MPU6050-master” z gitHub.

Założenie Algorytmu jest następujące:

  • Odczytaj surowe dane z MPU6050
  • Użyj filtra Kalmana do analizy danych z żyroskopu i akcelerometru, aby wyeliminować niedokładności w odczytach żyroskopu spowodowane przyspieszeniem czujnika. Zwraca to stosunkowo wygładzoną wartość nachylenia czujnika w stopniach do dwóch miejsc po przecinku.
  • Oblicz błąd w kącie, tj.: kąt między czujnikiem a wartością zadaną.
  • Oblicz błąd proporcjonalności jako (stała proporcjonalności x błąd).
  • Oblicz błąd całkowy jako sumę bieżącą (stała całkowania x błąd).
  • Oblicz błąd pochodnej jako stałą jako [(stała różniczkowania) x (zmiana błędu / zmiana w czasie)]
  • Zsumuj wszystkie błędy, aby uzyskać prędkość wyjściową, która ma zostać wysłana do silników.
  • Oblicz, w którym kierunku obracać silniki na podstawie znaku kąta błędu.
  • Pętla będzie działać w nieskończoność i będzie opierać się na danych wyjściowych, gdy dane wejściowe będą się zmieniać. Jest to pętla sprzężenia zwrotnego, wykorzystująca wartości wyjściowe jako nowe wartości wejściowe do następnej iteracji.

Ostatnim krokiem jest dostrojenie parametrów Kp, Ki i Kd pętli PID.

  1. Dobrym punktem wyjścia jest powolne zwiększanie Kp, aż robot oscyluje wokół punktu równowagi i złapie upadek.
  2. Następnie rozpocznij Kd przy około 1% wartości Kp i powoli zwiększaj, aż oscylacje znikną, a robot będzie płynnie ślizgał się po naciśnięciu.
  3. Wreszcie, zacznij od Ki około 20% Kp i zmieniaj, aż robot „przekroczy” zadaną wartość, aby aktywnie złapać upadek i powrócić do pionu.

Zalecana: