Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Budowa
- Krok 2: Okablowanie
- Krok 3: Teoria kontroli
- Krok 4: Korzystanie z MPU 6050
- Krok 5: Kodowanie
- Krok 6: Procedura strojenia PID
- Krok 7: Podsumowanie
Wideo: Dwukołowy samobalansujący robot: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Ten instruktaż przejdzie przez proces projektowania i budowy samobalansującego robota. Dla przypomnienia, chcę tylko powiedzieć, że samobalansujące roboty nie są nową koncepcją i zostały zbudowane i udokumentowane przez innych. Chcę skorzystać z okazji, aby podzielić się z Wami moją interpretacją tego robota.
Co to jest samobalansujący robot?
Robot samobalansujący to system, który wykorzystuje dane pomiarowe bezwładności, zebrane z czujnika pokładowego, do ciągłego dostosowywania swojej pozycji w celu utrzymania pozycji pionowej.
Jak to działa?
Prostą analogią do rozważenia jest odwrócone wahadło. Gdzie środek masy znajduje się powyżej punktu obrotu. Jednak w naszym przypadku ograniczamy wahadło do 1 stopnia swobody, mając jedną oś obrotu, w naszym przypadku oś obrotu dwóch kół. Ponieważ każde zakłócenie spowoduje upadek robota, potrzebujemy metody aktywnego utrzymywania robota w równowadze. W tym miejscu w grę wchodzi nasz algorytm pętli zamkniętej (regulator PID), wiedząc, w którym kierunku opada nasz robot, możemy dostosować kierunek obrotów naszych silników, aby utrzymać równowagę systemu.
Jak działa algorytm pętli zamkniętej?
Podstawową zasadą utrzymania równowagi robota jest to, że jeśli robot upada do przodu, kompensuje to przesuwając dolną część robota do przodu, aby złapać się i utrzymać w pionie. Podobnie, jeśli robot spada do tyłu, zrekompensuje to przesuwając dolną część robota do tyłu, aby się złapać.
Musimy więc zrobić dwie rzeczy, po pierwsze, musimy obliczyć kąt nachylenia (Roll), którego doświadcza robot, a co za tym idzie, musimy kontrolować kierunek obrotów silników.
Jak zmierzymy kąt nachylenia?
Do pomiaru kąta nachylenia posłużymy się bezwładnościową jednostką miary. Moduły te zawierają akcelerometr i żyroskop.
- Akcelerometr to urządzenie elektromagnetyczne, które mierzy właściwe przyspieszenie, czyli przyspieszenie ciała w ramce chwilowego spoczynku.
- Żyroskop to urządzenie elektromechaniczne, które mierzy prędkość kątową i służy do określania orientacji urządzenia.
Jednak problem z użyciem takich czujników polega na tym, że:
- Akcelerometr jest bardzo głośny, ale jest stały w czasie, kąt zmienia się wraz z nagłymi ruchami poziomymi
- Z drugiej strony wartość żyroskopu będzie się zmieniać z czasem, ale początkowo jest dość dokładna
Z tego powodu nie zamierzam wdrażać filtra, zamiast tego będę używać wbudowanego cyfrowego przetwarzania ruchu (DMP). Inni używali filtra uzupełniającego, aby uzyskać płynny sygnał, możesz wybrać dowolną metodę. ponieważ robot równoważy się z którąkolwiek z implementacji.
Kieszonkowe dzieci
Części:
- Arduino Pro Mini 3.3V 8 z 8 MHz ATMEGA328
- FT232RL 3.3V 5.5V Moduł adaptera szeregowego FTDI USB na TTL
- Moduł GY-521 z MPU-6050
- Para mikromotoreduktorów N20 6V - 300rpm
- Sterownik silnika L298N
- LM2596S Konwerter DC na DC buck
- Bateria (akumulator litowo-jonowy 9,7 V)
- Pasek baterii
- Dwie prototypowe płytki drukowane PCB
- Przewody połączeniowe męskie i żeńskie nagłówka
Narzędzia:
- Lutownica i lut
- Dystans dystansowy z nylonu sześciokątnego
- Zestaw wkrętaków precyzyjnych
- drukarka 3d
Krok 1: Budowa
Ponieważ miałem dostęp do drukarki 3D, postanowiłem wydrukować obudowę w 3D i połączyć wszystko ze sobą za pomocą łączników.
Robot składa się z 4 warstw
- Dolna warstwa łączy silniki i posiada punkty mocowania modułu sterownika silnika L298N
- Kolejna warstwa zawiera płytkę prototypową z Arduino pro mini i przylutowanymi do niej nagłówkami
- Trzecia warstwa montuje IMU
- Górna warstwa, którą nazywam „warstwą zderzakową”, zawiera baterię, konwerter buck i przełącznik monetarny
Moją główną zasadą projektowania było zachowanie modułowości. Powodem tego było to, że jeśli coś poszło nie tak z jednym z komponentów, mogłem go łatwo wymienić lub jeśli potrzebowałem komponentu do innego projektu, mogłem go łatwo wziąć, nie martwiąc się, że nie będę mógł ponownie korzystać z systemu.
Krok 2: Okablowanie
Przylutowałem kilka żeńskich pinów do płytki perforowanej, aby pasowały do pinów Arduino pro mini. Następnie przylutowałem na płytce piny męskiego nagłówka, aby umożliwić dostęp do wejść/wyjść. Pozostałe elementy zostały zamontowane na wydrukowanej w 3D ramie i połączone za pomocą przewodów połączeniowych.
Krok 3: Teoria kontroli
Teraz przechodzimy do sedna projektu. Aby utrzymać robota w równowadze, musimy wygenerować odpowiedni sygnał sterujący, aby napędzać silniki we właściwym kierunku i z odpowiednią prędkością, aby robot był zrównoważony i stabilny. W tym celu wykorzystamy popularny algorytm pętli sterowania znany jako regulator PID. Jak sugeruje akronim, w tym regulatorze są trzy wyrazy, są to wyrazy proporcjonalne, całkowe i pochodne. Każdej z nich towarzyszą współczynniki określające ich wpływ na system. Często najbardziej czasochłonną częścią implementacji sterownika jest dostrojenie wzmocnienia dla każdego unikalnego systemu w celu uzyskania najbardziej optymalnej odpowiedzi.
- Składnik proporcjonalny bezpośrednio mnoży błąd, aby dać wynik, więc im większy błąd, tym większa odpowiedź
- Składnik całkowy generuje odpowiedź opartą na akumulacji błędu w celu zmniejszenia błędu stanu ustalonego. Im dłużej system jest niezrównoważony, tym szybciej zareagują silniki
- Termin pochodny jest pochodną błędu, który jest używany do przewidywania przyszłej odpowiedzi, a tym samym zmniejsza oscylacje spowodowane przekroczeniem stanu ustalonego.
Podstawową zasadą tego algorytmu jest ciągłe obliczanie kąta nachylenia, który jest różnicą między żądaną pozycją a bieżącą pozycją, co nazywa się błędem. Następnie wykorzystuje te wartości błędów i oblicza sumę odpowiedzi proporcjonalnych, całkujących i różniczkujących w celu uzyskania wyjścia, którym są sygnały sterujące wysyłane do silników. W rezultacie, jeśli błąd jest duży, sygnał sterujący wysyłany do silników będzie obracał silniki z dużą prędkością, aby uzyskać zrównoważony stan. Podobnie, jeśli błąd jest mały, sygnał sterujący obróci silniki z małą prędkością, aby utrzymać równowagę robota.
Krok 4: Korzystanie z MPU 6050
Biblioteka MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Kalibracja offsetów Nie wszystkie czujniki są dokładnymi replikami siebie. W rezultacie, jeśli testujesz dwa MPU 6050, możesz uzyskać różne wartości dla akcelerometru i żyroskopu, gdy są umieszczone nadal na tej samej powierzchni. Aby przezwyciężyć to stałe przesunięcie kąta, musimy uczcić każdy używany przez nas czujnik. Uruchamianie tego skryptu:
www.i2cdevlib.com/forums/topic/96-arduino-…
napisany przez Luisa Rodenasa, otrzymamy offsety. Błędy przesunięcia można wyeliminować, definiując wartości przesunięcia w procedurze setup().
Korzystanie z cyfrowego procesora ruchu
MPU6050 zawiera DMP (Digital Motion Processor).
Co to jest DMP? Możesz myśleć o DMP jako o wbudowanym mikrokontrolerze, który przetwarza złożony ruch z 3-osiowego żyroskopu i 3-osiowego akcelerometru na pokładzie mpu6050, używając własnych algorytmów fuzji ruchu. Odciążenie przetwarzania, które w przeciwnym razie zostałoby wykonane przez Arduino
Jak tego użyć? Aby dowiedzieć się, jak korzystać z DMP, przejrzyj przykładowy szkic MPU6050_DMP6 dołączony do biblioteki MPU6050 (w Arduino IDE: File->Example->MPU6050->MPU6050_DMP6). Jest to również dobra okazja, aby sprawdzić, czy czujnik działa, a okablowanie jest prawidłowe
Krok 5: Kodowanie
Do programowania Arduino pro mini użyłem Arduino IDE i interfejsu FTDI.
Korzystając z przykładowego szkicu (MPU6050_DMP6), który jest dostarczany z biblioteką MPU6050 jako mój kod bazowy, dodałem funkcje PID() i MotorDriver().
Dodaj bibliotekę
- MPU6050: Aby korzystać z czujnika MPU6050, musimy pobrać bibliotekę programistyczną I2C od Jeffa Rowberga i dodać ją do folderu „biblioteki” Arduino w plikach programu na komputerze.
- Wire: Potrzebujemy również biblioteki Wire, aby umożliwić nam komunikację z urządzeniami I2C.
Pseudo kod
Uwzględnij biblioteki:
- Drut.h
- MPU6050
- I2Cdev.h
Inicjalizuj zmienne, stałe i obiekty
Ustawiać ()
- Ustaw tryb pin do sterowania silnikami
- Ustaw tryb pin dla diody LED stanu
- Zainicjuj MPU6050 i ustaw wartości przesunięcia
PID ()
Oblicz wartość PID
MotorDriver (odpowiedź PID)
Użyj wartości PID do sterowania prędkością i kierunkiem silników
Pętla ()
- Pobierz dane z DMP
- Wywołaj PID() funkcje MotorDriver()
Krok 6: Procedura strojenia PID
To najbardziej żmudna część projektu i wymaga odrobiny cierpliwości, chyba że masz dużo szczęścia. Oto kroki:
- Ustaw termin I i D na 0
- Trzymając robota, wyreguluj P tak, aby robot po prostu zaczął oscylować wokół pozycji równowagi
- Przy ustawieniu P zwiększ I, aby robot przyspieszał szybciej, gdy jest wytrącony z równowagi. Gdy P i I są odpowiednio dostrojone, robot powinien być w stanie samobalansować przez co najmniej kilka sekund, z pewnymi oscylacjami
- Na koniec zwiększ D, aby zmniejszyć oscylacje
Jeśli pierwsza próba nie przyniesie zadowalających rezultatów, powtórz kroki z inną wartością P. Pamiętaj również, że możesz później dostroić wartości PID, aby jeszcze bardziej zwiększyć wydajność. Wartości tutaj zależą od sprzętu, nie zdziw się, jeśli uzyskasz bardzo duże lub bardzo małe wartości PID.
Krok 7: Podsumowanie
Zastosowane mikromotoreduktory miały powoli reagować na duże zakłócenia, a biorąc pod uwagę, że system był zbyt lekki, nie było wystarczającej bezwładności, aby uzyskać pożądany efekt wahadła, więc jeśli robot pochyli się do przodu, po prostu przechyli się pod kątem i pędzi do przodu. Wreszcie, koła drukowane w 3D były złym wyborem, ponieważ ciągle się ślizgają.
Propozycje ulepszeń:
- Szybsze silniki o wyższym momencie obrotowym, tj. dla silników prądu stałego im wyższe napięcie znamionowe, tym wyższy moment obrotowy
- zdobądź cięższą baterię lub po prostu przesuń masę nieco wyżej
- Wymień koła drukowane w 3D na gumowe, aby uzyskać lepszą przyczepność
Zalecana:
Samobalansujący robot firmy Magicbit: 6 kroków
Self Balancing Robot From Magicbit: Ten samouczek pokazuje, jak zrobić samobalansującego robota za pomocą płytki deweloperskiej Magicbit. Używamy magicbit jako płytki rozwojowej w tym projekcie, który jest oparty na ESP32. Dlatego w tym projekcie można użyć dowolnej płytki rozwojowej ESP32
HeadBot – samobalansujący robot do nauki i pomocy w zakresie STEM: 7 kroków (ze zdjęciami)
HeadBot – samobalansujący robot do uczenia się i docierania do przedmiotów STEM: Headbot – wysoki na dwie stopy, samobalansujący robot – jest pomysłem South Eugene Robotics Team (SERT, FRC 2521), konkurencyjnego zespołu robotyki szkół średnich w PIERWSZEJ Konkurs robotyki z Eugene w stanie Oregon. Ten popularny robot terenowy sprawia, że re
Proyecto Laboratorio De Mecatrónica (Robot dwukołowy): 6 kroków
Proyecto Laboratorio De Mecatrónica (Robot z wyważaniem dwukołowym): En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "Robot dwukołowy". paso a paso y con explicación y concejos. Este es un sistema que conforme en que el robot no se debe caer, se debe de mantener en el
Samobalansujący robot wykorzystujący algorytm PID (STM MC): 9 kroków
Robot samobalansujący wykorzystujący algorytm PID (STM MC): Ostatnio wykonano wiele pracy w zakresie samobalansowania obiektów. Koncepcja samobalansowania zaczęła się od zrównoważenia odwróconego wahadła. Koncepcja ta rozszerzyła się również na projektowanie samolotów. W tym projekcie zaprojektowaliśmy mały mod
Samobalansujący robot: 6 kroków (ze zdjęciami)
Samobalansujący robot: w tej instrukcji pokażemy, jak zbudować samobalansującego robota, który stworzyliśmy jako projekt szkolny. Opiera się na kilku innych robotach, takich jak nBot i inny Instructable. Robotem można sterować za pomocą smartfona z systemem Android vi