Popularny post Bartek_Kurosz Napisano Październik 4, 2015 Popularny post Udostępnij Napisano Październik 4, 2015 Witam wszystkich! =) Od dłuższego czasu zbieram się do opisu mojej pierwszej "poważniejszej" konstrukcji. Jako że semestr się dopiero zaczyna i jeszcze jest czas na cokolwiek, a na dodatek w ciągu ostatnich dni została otworzona kolejna edycja konkursu z Proxxonem, przyszedł czas na zrealizowanie tego planu. Tym samym z wielką przyjemnością prezentuję robota mobilnego klasy micromouse: Let Me Out 1. Pomysł Podczas zeszłorocznych wakacji moje zainteresowanie zostało skierowane w kierunku dwóch zagadnień: roboty klasy micromouse oraz silniki krokowe. Z tego pierwszego bardzo szybko podjąłem decyzję o budowie takiego robota. Interesując się zaganieniem drugim (silników krokowych), dowiadując się o ich możliwościach i ograniczeniach zacząłem się zastanawiać nad ich wykorzystaniem w robocie klasy micromouse. Niestety, przewalając internet dniami i nocami nie znalazłem żadnego sensownego opisu zrealizowanej i zbadanej konstrukcji napędu robota mobilnego opartego na silnikach krokowych. W ten sposób narodził się pomysł o zaprojektowaniu, zbudowaniu i przetestowaniu takiego rozwiązania. 2. Założenia projektowe • Spełnienie podstawowych warunków konstrukcyjnych oraz programowych zawartych w regulaminie konkurencji micromouse. Robot projektowany był tak, żeby mógł wziąć udział w zawodach w Polsce. • Oparcie projektu o procesor z rodziny AVR W tamtym momencie STM-y dopiero wynurzały mi się zza horyzontu, więc zdecydowałem się na popularnego AVR-a, którego już dobrze znałem i umiałem go programować. • Konstrukcja umożliwiająca poruszanie się po skosie labiryntu Aby móc zastosować bardziej złożone algorytmy przemierzania labiryntu. • Zastosowanie silników krokowych jako napęd główny robota • Umożliwienie bezprzewodowej komunikacji z robotem Głównie w celu odbierania danych o aktualnym stanie zmapowania labiryntu przez robota i możliwości wizualizacji aktualnej sytuacji na komputerze. • Zaprojektowanie płytki PCB w sposób umożliwiający wykonanie jej metodą fototransferu Oczywiście w celu zaoszczędzenia na czasie i funduszach, zdecydowałem się na warsztatową metodę wykonywania płytki. • Implementacja algorytmu pozwalającego na rozwiązywanie algorytmu metodą "floodfill" 3. Konstrukcja Mechaniczna 3.1 Napęd 3.1.1 Silniki Jako napęd zdecydowałem się na użycie silników krokowych. Zalety silników krokowych (+) Sterowanie pozycją - dokładne sterowanie w otwartej pętli sterowania (+) Silnik pracuje z pełnym momentem w stanie spoczynku (+) Żywotność silnika wyznaczona wytrzymałością łożysk i cewek - brak szczotek Wady silników krokowych (-) Przeznaczone do pracy z małymi prędkościami (-) Możliwość wystąpienia zjawiska "gubienia kroków" (-) Duża emisja ciepła (-) Duża masa i rozmiary (-) Skomplikowany sposób sterowania Ze wszystkich silników krokowych dostępnych na polskim rynku, silniki o kodzie producenta S20STH30-0604A firmy Pololu najbardziej nadawały się do projektowanej konstrukcji. Porównanie parametrów wybranych silników krokowych z popularnymi mikrosilnikami Pololu Parametr • Silnik krokowy • Mikrosilnik Pololu 30:1 Waga • 60g • 10g Wymiary • 20 x 20 x 30 mm • 10 x 12 x 24 mm Napięcie zasilania • 3.9 V • 3-9 V Pobór prądu • 600 mA • 120-1600 mA Moment obrotowy • 140 g*cm (0.017 Nm) • 600 g*cm (0.059 Nm) Średnica wału • 4 mm • 3 mm Cena • 100 zł • 70zł Sterowanie • Trudne • Proste Problemy do rozwiązania w projektowaniu napędu opartego o silniki krokowe: Problem: Silniki krokowe przeznaczone są do pracy przy niewielkich prędkościach obrotowych (zazwyczaj 4-10 RPS to ich maksymalne osiągi). Rozwiązanie: Zasilanie silników z dużo wyższego napięcia (w tym wypadku 24 V). Pozwala to na skrócenie czasu narastania prądu na cewkach, prez co można je przełączać częściej, w efekcie uzyskując wyższą prędkość obrotową. (Udało mi się rozkręcić te silniki do 45 RPS - w powietrzu, nie na jadącym robocie) Problem: W robocie potrzebne jest napięcie 24 V Rozwiązanie: Zasilanie silników z przetwornicy step-up, generującej 24 V z napięcia zasilania (7.4 V bądź 15.8 V) Problem: Zasilając silnik z wyższego napięcia, prąd na cewkach będzie proporcjonalnie większy, co po przekroczeniu wartości nominalnej (600 mA) prowadzić będzie do ich spalenia Rozwiązanie: Zastosowanie gotowego modułu sterownika silnika krokowego z ogranicznikiem prądu (funkcja Chopper) 3.1.2 Koła Jako koła wybrano gumowe koła firmy Solarbotics o średnicy 2.8 mm i szerokości 13 mm. Koła mają świetną przyczepność i doskonale nadają się do tego zastosowania. Jedyną jak dotąd zaobserwowaną wadą jest bardzo duża zdolność do zbierania kurzu i drobnych odpadów, przez co jazda po zabrudzonej powierzchni bardzo szybko doprowadza do zmniejszenia przyczepności kół. 3.1.3 Mocowania silników Niestety na rynku nie istnieją mocowania do silników krokowych w tym rozmiarze (Nema 8), więc musiałem takie mocowania wyprodukować sam. Mocowania silników zostały zaprojektowane w programie TinkerCad dostępnym w wersji przeglądarkowej. Zamówienie przyjęło i wykonało techniką druku 3D koło naukowe działające przy Politechnice Wrocławskiej "Rapid Troopers". Mocowania zawierają 4 otwory na śruby mocujące silnik do elementu, oraz 4 otwory na śruby służące do przytwierdzenia silnika wraz z mocowaniem do platformy. 3.1.4 Podwozie Jako podwozie wykorzystałem płytkę PCB z elektroniką, przedstawioną w dalszej części artykułu 4 Elektronika Schemat elektroniczny jak i płytka PCB zostały zaprojektowane w programie CadSoft Eagle. 4.1 Zasilanie Robot może być zasilany z jednego bądź dwóch (połączonych szeregowo) akumulatorów Li-Po 7.4 V o pojemności 250 mAh. Dwa akumulatory stosowane są w celu podwyższenia napięcia na wejściu przetwornicy, co skutkuje obniżeniem poboru prądu z akumulatora i wydłużeniem możliwego czasu działania robota. 4.1.1 Zasilanie silników Silniki zasilane są napięciem 24 V podawanym z przetwornicy step-up opartej o układ XL60098. Przy pracy pobierają 1 - 1.2 A. 4.1.2 Zasilanie logiki Wszystkie układy logiczne zasilane są napięciem 5 V uzyskiwanym z przetwornicy step-down D24V6F5. Powodem zastosowania przetwornicy zamiast stabilizatora liniowego jest różnica napięć na wejściu i wyjściu układu. Występuje tu obniżenie napięcia z ~16 V do 5 V, co przy stabilizatorze liniowym generowałoby bardzo duże ilości ciepła i mogłoby prowadzić do jego uszkodzenia lub poparzenia użytkownika podczas obsługi robota. 4.2 Procesor Jednostką sterująca całego robota jest ośmiobitowy procesor AVR Atmega 128 firmy Atmel, taktowany zewnętrznym kwarcem 16 Mhz. Procesor zasilany jest napięciem 5 V. W celu zmniejszenia rozmiarów robota, zastosowano procesor w obudowie TQFP64. 4.3 Czujniki odległości Jako czujniki odległości zastosowano diodę LED SFH4550 działającą w paśmie podczerwieni. W robocie umieszczono 6 takich zestawów. Dwa skierowane w przód, dwa na boki oraz dwa odchylone od diametralnej robota o 45°. Prąd płynący przez diody IR to 95 mA, co daje wystarczające natężenie światła do dokładnego odczytywania odległości przy jednoczesnym braku konieczności uważania na przepalenie się diody spowodowane długim świeceniem przy zbyt dużym prądzie. 4.4 Sterowniki silników Zastosowano sterowniki firmy Pololu oparte na modula A4988. Sterowniki pozwalają na pracę w trybach: pełnokrokowym, półkrokowym, ćwierćkrokowym, 1/8 oraz 1/16 kroku. Funkcja ograniczania prądu (chopper) pozwala sterować silniki wyższym napięciem bez ryzyka uszkodzenia cewek silnika. Kolejną zaletą zastosowania sterowników silników krokowych jest możliwość sterowania silnika za pomocą tylko jednego pinu (tylko jeden pin mikrokontrolera podaje sygnał częstotliwościowy odpowiedzialny za taktowanie silnika). W celu umożliwienia generowania sygnałów o różnej częstotliwości, każdy ze sterowników obsługiwany jest przez inny timer. Obydwa szesnastobitowe timery sterujące działają w sprzętowym trybie Clear on Compare Match. Pozwala to na automatyczne generowanie sygnału o zadanej częstotliwości bez udziału samej jednostki obliczeniowej. 4.5 Interfejs komunikacyjny Jako interfejs komunikacyjny robota służą dwie diody LED, buzzer, interfejs UART wraz z modułem bluetooth HC-05 oraz dwa przyciski. Programowanie robota realizowane jest poprzez interfejs SPI. 4.6 Płytka PCB Płytka PCB na której zostały umieszczone wszystkie elementy robota została zaprojektowana za pomocą programuy CadSoft Eagle. Długość: 101 mm Szerokość: 94 mm Płytka pełni jednocześnie funkcję podwozia robota. Takie wymiary pozwalają na swobodny obrót robota w miejscu między ścianami, oraz jazdę po skosie w labiryncie. Płytka w swoim kształcie jest symetryczna, lecz główna masa elementów skupiona została przy tylnej części. Powoduje to brak efektu kołysania się robota ze względu na dociśnięcie tyłu do podłoża. Płytka została stworzona metodą fototransferu oraz wytrawiona w warunkach domowych. Otwory wykonano na wiertarce stołowej. Prostokątny otwór na środku płytki jest miejscem na wystające elementy silników, w których znajdują się gniazda przewodów zasilających. Warstwa Top zawiera wszystkie układy scalone, czujniki, silniki, akumulatory i złącza. W przedniej części robota znajdują się czujniki, mikrokontroler, układ ULN2003 (sterowanie diodami LED) oraz jeden z akumulatorów. Z tyłu umieszczono sterowniki silników krokowych, obydwie przetwornice, moduł bluetooth, drugi akumulator oraz buzzer. Silniki znajdują się w osi symetrii robota Na dolnej stronie płytki umieszczono jedynie kilka rezystorów oraz slizgacz, znajdujący się w diametralnej robota, w jego tylnej części. Zdjęcie poniżej pokazuje stopień upakowania elementów i modułów w robocie. 5 Oprogramowanie Główną częścią projektu było rozwinięcie oprogramowania związanego z obsługą peryferii oraz algorytmem rozwiązującym labirynt. Program napisany został w języku C. 5.1 Pomiary odległości Pomiar z każdego z czujników dokonywany jest z częstotliwością 200 Hz. Zastosowano pomiar różnicowy z uśrednianiem wyników. 5.2 Sterowanie prędkością robota Prędkość robota sterowana jest częstotliwością sygnału podawanego na sterowniki silników. 5.3 Algorytm Zaimplementowany algorytm opiera się na algorytmie Dijkstry, służącym do znajdywania najkrótszej drogi w grafie. 6 Podsumowanie Projektowanie, budowa oraz zaprogramowanie robota zostały zrealizowane zgodnie z założeniami. Robot dobrze radzi sobie w labiryncie. 6.1 Sprawność silników krokowych w robocie mobilnym Podczas jazdy kroki są gubione dość rzadko, co pozwala na wystarczająco dokładne wysterowanie robota w otwartej pętli sterowania z kompensacją pozycji od czujników odbiciowych. Osiągane maksymalne prędkości podczas testów (oczywiście poza labiryntem i po prostej) sięgają 2 m/s. Głównymi wadami tych silników w robocie są ich masa, wielkość, konieczność stosowania sterowników silników krokowych oraz wyższego napięcia. Kolejną wadą jest konieczność ograniczania przyspieczeń, w celu zminimalizowania gubionych kroków. Zaletą stosowania silników krokowych jest brak konieczności stosowania sprzężenia zwrotnego w postaci enkoderów obrotowych. Sterowanie robotem klasy (2.0) w otwartej pętli regulacji Sterowanie w otwartej pętli regulacji z wykorzystaniem silników krokowych jest możliwe. Rozwiązanie to jest wygodniejsze i prostsze do zrealizowania, aczkolwiek posiada bardzo dużą wadę, w postaci braku informacji o gubionych ktokach. Cała kalibracja pozycji opierać musi się na odczytach z czujników odbiciowych. Budowa tego robota z pewnością przyczyniła się do znacznego poszerzenia mojej wiedzy na temat budowy robotów mobilnych, projektowaniu schematów elektronicznych oraz płytek PCB, kategorii micromouse oraz silników krokowych. Niestety nie miałem dostępu do pełnowymiarowego labiryntu, dlatego filmiki z testów są tylko na ćwiartce labiryntu. Robot jeździ wolno, bo w momencie kiedy zaczął działać i poprawnie rozwiązywać labirynt, semestr zaczął być tak gorący że musiałem porzucić prace nad jego rozwojem i zająć się studiami. Na pewno może jeździć o wiele szybciej - pozostaje tylko kwestia gubienia kroków. Zeby pokazać w sumie clue sprawy związanej z zastosowaniem silników krokowych, poniżej filmik na którym robot jedzie z wyłączonymi czujnikami, z wgraną na stałe sekwencją (prosto, prawo, lewo, prosto itp.) Widać jak dokładne może być pozycjonowanie się na silnikach krokowych (które i tak dobierane było "na oko"). Jazda bez sprzężenia od czujników A tutaj testy na labiryncie. Robot rozwiązujący labirynt Nie chcę się już bardziej szczegółowo rozpisywać na poszczególne tematy, żeby artykuł nie rozrósł się do rozmiarów nieczytelnych. Jeśli kogoś interesują detale budowy tego robota i używania tego napędu, zapraszam do dołączonej w załącznikach prezentacji oraz raportu z budowy robota. Jeśli jesteś zainteresowany schematami elektronicznymi tego robota - napisz w komentarzu. KoNaR - Bartlomiej Kurosz - Micromouse Let Me Out.pdf Zastosowanie silnikow krokowych w robotach mobilnych.pdf 15 Cytuj Link do komentarza Share on other sites More sharing options...
hob_bit Październik 4, 2015 Udostępnij Październik 4, 2015 Daję 5 za robota i ładny opis - plus jeden browarek 😉 Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Październik 5, 2015 Udostępnij Październik 5, 2015 Projekt bardzo ładny. ➕ Ale co do silników krokowych to tak. W PLUSach zapomniałeś o ich ważnej cesze, można bezproblemowo nimi hamować. Sterownie jako Minus to kwestia sporna bo tak, jakbyś chciał to robić programowo przez jakiś mostek H to owszem można się pogubić, ale jak stosujesz gotowy sterownik, to jest ono dziecinnie proste bo masz tylko sygnału CLK, DIR i ENable. Sama przyjemność właściwie. Nie są też takie wolne, spokojnie buszują do 200Hz, teoretycznie górna granica to 500Hz ale mi się nigdy tak szybko nie udało krokowego puścić, przy czym trzeba mieć wtedy dobre zasilanie. Moment silnika można nieco zwiększyć stosując sterowanie pół krokowe. Z drugiej strony porównujesz Pololu z przekładnia z łysym krokowym, jakby miał przekładnię to też wyglądałoby to nieco inaczej. Cytuj Link do komentarza Share on other sites More sharing options...
Sen Październik 5, 2015 Udostępnij Październik 5, 2015 Super Ci wyszedł robocik, wielkie gratulacje 🙂 Małe pytanie... Możesz zdradzić metodę tzn. jak dokładnie wykonywałeś ten fototransfer? Bo płytki wyszły idealnie tylko pozazdrościć. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Bartek_Kurosz Październik 6, 2015 Autor tematu Udostępnij Październik 6, 2015 Projekt bardzo ładny. ➕ Dzięki! =) Ale co do silników krokowych to tak. W PLUSach zapomniałeś o ich ważnej cesze, można bezproblemowo nimi hamować. W sumie nie pomyślałem że może to nie być oczywiste z tego co napisałem: "Silnik pracuje z pełnym momentem w stanie spoczynku" Jak najbardziej, jest to wielka zaleta. Sterownie jako Minus to kwestia sporna bo tak, jakbyś chciał to robić programowo przez jakiś mostek H to owszem można się pogubić, ale jak stosujesz gotowy sterownik, to jest ono dziecinnie proste bo masz tylko sygnału CLK, DIR i ENable. Sama przyjemność właściwie. Oczywiście że stosując sterownik jest do dziecinnie proste, ale jest to rozwiązanie problemu skomplikowanego sterowania, które kosztuje dość dużo miejsca na płytce, oraz zwiększa koszty robota. Porównując go do zwykłych mikrosilników: obydwa z nich da się sterować zwykłym mostkiem H, ale w przypadku silników krokowych będzie nas to kosztowało kilkadziesiąt dodatkowych linijek kodu (i ze trzy noce). Nie są też takie wolne, spokojnie buszują do 200Hz, teoretycznie górna granica to 500Hz ale mi się nigdy tak szybko nie udało krokowego puścić, przy czym trzeba mieć wtedy dobre zasilanie. Nigdzie się nie spotkałem z takimi prędkościami o których tutaj mówisz, a ich dokumentacji przeczytałem nie mało. (pisząc 200Hz masz na myśli 200 obrotów na sekundę?) Załączam poniżej zależności momentu od prędkości silników tego typu. Obydwa mają granicę w okolicach 20 - 60 RPS (Rotation Per Second) i to już po przewoltowaniu. (Silnik, którego zależność przedstawiona jest poniżej jako moment od PPS (Pulse per second) ma w wypadku sterowania pełnokrokowego 200 kroków na obrót [co oznacza że wartość 8000 PPS odpowiada 40 RPM (obrotom na sekundę)]). Moment silnika można nieco zwiększyć stosując sterowanie pół krokowe. Jak najbardziej - sterownik jak napisałem ma możliwość pracy w różnych trybach. Ja korzystam z ćwierćkrokowego. Z drugiej strony porównujesz Pololu z przekładnia z łysym krokowym, jakby miał przekładnię to też wyglądałoby to nieco inaczej. Oczywiście że wyglądałoby to inaczej, ale nie wygląda i porównuję to co jest. Jakby robot był linefollowerem to też wyglądałoby to inaczej 🙂 A kontynuując już temat przekładni: Mamy tu do czynienia z niskimi prędkościami obrotowymi i niskim momentem (a obydwie z tych wartości chcielibyśmy zwiększyć). Najprostsza z tego do zwiększenia jest prędkość obrotowa (w opisany już przezemnie sposób), tak więcj korzystając z tego, moglibyśmy spróbować zastosować przekładnię obniżającą obroty, co przełożyłoby się na zwiększenie momentu wypadkowego. Niestety znowu wrócilibyśmy do niskich obrotów, a całkowita sprawność napędu obniżyłaby się ze względu na straty na przekładni. Nie będę wspominał już o mechanicznym aspekcie umiejscowienia jej tam. Nie chcę napisać że się nie da, bo obok wydziału mechanicznego to nawet nie stałem, ale przy tych rozmiarach robota + wymiarach silników + stopniu upakowania elementów mniemam że znalezienie/zaprojektowanie odpowiedniej przekładni oraz zmieszczenie jej tam byłoby conajmniej bardzo trudne. Super Ci wyszedł robocik, wielkie gratulacje 🙂Małe pytanie... Możesz zdradzić metodę tzn. jak dokładnie wykonywałeś ten fototransfer? Bo płytki wyszły idealnie tylko pozazdrościć. Dzięki wielkie =) Fototransfer robiłem pierwszy raz w życiu z pomocą kolegi z KoNaRu (wszystkie moje poprzednie płytki robiłem żelazkiem). Schemat wydrukowany był na folii z pełnym wypełnieniem czerni. Następnie koperta z folii do naświetlarki wraz z płytką. Po 2 minutach na naświetlarce płytka trafiła do tego płynu, którego nazwy nie pamiętam 😋 (zmywa naświetlony lakier na płytce odkrywając powierzchnie do wytrawienia). Potem już standardowy wytrawiacz i już 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Październik 9, 2015 Udostępnij Październik 9, 2015 Przy tych 200Hz chodziło mi o częstotliwość podawaną na wejście CLK sterownika. Cytuj Link do komentarza Share on other sites More sharing options...
Bartek_Kurosz Październik 12, 2015 Autor tematu Udostępnij Październik 12, 2015 Przy tych 200Hz chodziło mi o częstotliwość podawaną na wejście CLK sterownika. W takim razie przy tym konkretnym silniku (200 impulsów/obrót) i tym konkretnym sterowniku, w trybie pracy pełnokrokowym, podawany na wejście sygnał 200 Hz odpowiada jednemu obrotowi na sekundę 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!