Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 05.04.2014 we wszystkich miejscach

  1. 27 punktów
    Cześć, przedstawiamy Wam naszego pierwszego robota zbudowanego w ramach drużyny Magnat Cyber Forge Team. W skład drużyny wchodzą: mechanik Mateusz Piotrzkowski, elektronik Szymon Zagórnik oraz programista Piotr Krzemiński. Konstrukcja powstawała przez prawie 2 lata - od pierwszej burzy mózgów i szkiców na komputerze, przez zbieranie funduszy, wykonanie elementów, montaż, programowanie, aż do pierwszego startu w konkursie. Robot ma już swoje lata, lecz mimo to postanowiliśmy go tu opisać. Koncepcja i napęd robota Panujący obecnie w robotach sumo trend skłania do wyboru konstrukcji z dwoma kołami napędowymi. Roboty o takiej strukturze napędu są tanie w budowie, a przy tym zapewniają dobre przyleganie krawędzi tnącej ostrza do podłoża. Problemem w ich przypadku jest nieoptymalne przeniesienie ciężaru robota na podłoże oraz duży moment bezwładności robota. Konstrukcja z czterema kołami napędowymi jest mało popularna lecz rozwiązuje wiele problemów robotów wyposażonych tylko w dwa koła. Pierwszą zaletą jest możliwość zapewnienia przeniesienia prawie całego ciężaru robota przez opony. Kolejną zaletą jest przesunięcie środka obrotu robota do przodu oraz łatwość wpadania w poślizg robotem. Zalety te są nieznaczące w obliczu problemów z zamocowanym nieruchomo ostrzem. W przypadku gdy koła stanowią trzy niezbędne punkty podparcia bardzo trudno jest zamocować ostrze z taką dokładnością aby przylegało do podłoża. Zdecydowaliśmy się zaryzykować. Wybór padł na konstrukcję z czterema kołami oraz ruchome mocowanie ostrza - tak aby połączyć zalety struktur napędu z dwoma i czterema kołami. Szukając silników napędu kół robota wybór ograniczyliśmy do 3 firm oferujących jakościowo najlepsze mikrosilniki elektryczne na świecie - firm Maxon, Faulhaber i Portescap. Głównym ograniczeniem determinującym wybór silników do robota minisumo jest ich maksymalna długość. Zdecydowaliśmy że każde z kół będzie napędzane niezależnie, więc długość silnika wraz z przekładnią i enkoderem nie mogła przekroczyć 50 mm. Po przejrzeniu ofert wymienionych firm okazało się że najmocniejszą konfiguracją o wymaganych wymiarach są silniki Faulhaber 1717 006 SR wraz z przekładnią 16/7 14:1 oraz enkoderami IE2. Silniki te są marginalnie mocniejsze od popularnie stosowanych mikrosilników firmy pololu, lecz mają wielokrotnie większą żywotność. Zdarzały nam się sytuacje całkowitego zatrzymania wszystkich 4 silników na regulaminowe 3 minuty walki a silniki dalej pracują jak nowe. Mechanika Konstrukcja robota składa się z 11 elementów. Siedem z nich zostało zoptymalizowanych pod kątem wykonania metodami skrawania z aluminium, stali oraz węglika wolframu. Pozostałe 4 elementy zostały wydrukowane w technologii PolyJet. Głównym elementem konstrukcyjnym jest płyta centralna. Przykręcone do niej są: tulejki mocujące silniki, element mocujący ostrze, mocowania czujników robota przeciwnika oraz płytka drukowana sterująca robotem. Poniżej znajduje się jeden z siedmiu rysunków wykonawczych tego elementu. Element mocujący ostrze wykonano ze stali 40 HM utwardzonej do wartości 50 HRC. Dzięki temu wypolerowana powierzchnia trudno się rysuje, a przeciwnicy gładko prześlizgują się na zamocowane wyżej rogi. Element ten posiada oś obrotu oraz jest dociskany dwoma sprężynami - niezależnie z każdej strony. Sprawia to że ostrze dociśnięte jest równomiernie do podłoża. Ostrza które stosujemy są wykonane dla nas na zamówienie z węglika wolframu. Poniżej zdjęcie porównawcze tego ostrza ze starą wersją zintegrowaną z mocowaniem do płyty centralnej. Felgi robota mają średnicę 24 mm. Posiadamy kilka kompletów z poliamidu i kilka z aluminium. Nie zauważyliśmy większej różnicy w działaniu robota na różnych kompletach. Opony mają zewnętrzną średnicę 30 mm co daje grubość opon równą 3mm. Przetestowaliśmy wiele materiałów na opony od firmy Smooth-On: Mold Star 15, Mold Star 30, Mold Max 20, Vyta Flex 10, Vyta Flex 30, Vyta Flex 20. Ten ostatni wykazał najlepsze własności mechaniczne i jest przez nas aktualnie stosowany. Do mieszanki dodajemy czarny barwnik, co zwiększa nieco nieco lepkość opon. Waga robota waha się w zależności od zastosowanych felg i baterii od 460 do 495 gramów. Elektronika Płyta sterowania robota to laminat FR4 o grubości 0.8mm. By spełnić wymagania związane z fizycznym rozmieszczeniem układów na płytce, wykorzystaliśmy technologię produkcyjną umożliwiającą nam użycie ścieżek o szerokości 0.2mm oraz rastrze podobnej szerokości. Znajdujące się na płytce układy zapewniają prawidłową pracę robota w trybie domyślnym tj. walka na ringu (bez opcji wybierania taktyki i różnych trybów). Program robota wykonywany jest przez wcześniej wspomniany 32-bitowy mikrokontroler ST32F107R8T6. Został on wybrany ze względu na aż cztery dostępne timery, które są niezbędne do obsługi sygnałów z enkoderów silników. Na płycie sterowania znajdują sie również cztery mostki H, złącza od czujników przeciwnika sześć transoptorów i dwa stabilizatory napięcia na 3.3V i 5V. Moduł interakcji użytkownika z robotem stanowi płytka drukowana umieszczona pod górną pokrywą robota. Jest ona w znacznym stopniu mniej skomplikowana od płytki sterującej, niemiej jednak zawiera ona oddzielny mikroprocesor STM32F103CVT. Obsługuje on wyświetlacz OLED o rozdzielczości 128x64 piksele poprzez interfejs SPI. Wykrywa on również sygnał z zmieszczonego na płytce odbiornika podczerwieni oraz czterech przycisków stykowych. Dzięki przyciskom lub bezprzewodowo z pomocą pilota RC5 użytkownik jest w stanie włączyć robota i wybrać algorytm pracy robota wyświetlany na wyświetlaczu OLED. Komunikacja między górnym i dolnym mikroprocesorem odbywa się za pomocą interfejsu UART. Obie płytki drukowane są połączone ze sobą taśmą FFC. Zasilanie Zastosowaliśmy dwukomorową baterię litowo-polimerową, która przy maksymalnym naładowaniu daje 8.4V. Nie wyróżnia się ona niczym szczególnym poza rozmiarem i kształtem, który jest idealnie dopasowany do konstrukcji robota i wewnętrznego rozmieszczenia elementów. Pojemność baterii to 900 mAh Czujniki Sensorami umożliwiającymi wykrywanie przeciwnika są popularne Sharpy GP2Y0D340K. Są to czujniki IR o zasięgu do 40 cm. Są cyfrowe, tj. wskazują pojawienie się obiektu lub jego brak. W środku sensora umieszczony jest układ cyfrowy kondycjonujący otrzymaną wiązkę podczerwieni oraz emitujący cyfrowy sygnał wykrycia do mikrokontrolera. Zasilany jest wyłącznie 5V więc sygnał Vout również jest na tym poziomie. Fakt ten nie komplikuje układu, gdyż użyty mikrokontroler ma wejścia kompatybilne z 5V mimo, że sam jest zasilany na 3.3V. W celu skutecznego wykrywania przeciwnika umieszczono aż 6 sensorów ułożonych w konfiguracji: 2 patrzące do przodu, 2 pod skosem 45 stopni oraz 2 patrzące na boki robota. Jednostki obliczeniowe Dolna płytka zawiera główny procesor STM32F107 taktowany zegarem o częstotliwości 72 MHz. Zajmuje się przetwarzaniem informacji z czujników linii oraz przeciwnika, a także wysterowuje silniki korzystając z wbudowanych fabrycznie enkoderów magnetycznych i regulatora PID. Na górnej płytce znajduje się drugi procesor STM32F103 (również 72 MHz) zajmujący się obsługą wejścia/wyjścia czyli przycisków, wyświetlacza i wbudowanego odbiornika podczerwieni. Taki podział zadań pomiędzy dwa procesory wydaje się zbędny/przesadzony, lecz jest to pozostałość z pierwszych wersji robota.. Programowanie Do komunikacji z robotem użyto dwóch interfejsów: SWD (Serial Wire Debug) – szeregowa odmiana popularnego interfejsu JTAG. Umożliwia on programowanie oraz debugowanie mikrokontrolera sterującego. Do komunikacji między dwoma modułami (mikroprocesorami) oraz komunikacji komputer – mikroprocesor użyto interfejsu UART. Fizyczne połączenie robota z komputerem stanowi złącze MicroHDMI. Zostało ono wybrane ze względu na liczbę dostępnych pinów oferowane przez standard HDMI, trwałość mechaniczną i dostępność. Medium łączące wymienione interfejsy i komputer jest przejściowa płytka drukowana z standardowymi złączami dla programatorów. Rysunek poniżej przedstawia omawianą „przejściówkę”. Oprogramowanie Program dla robota pisany jest w języku C, z użyciem Standard Peripheral Library. W newralgicznych miejscach, aby przyśpieszyć kod, wykonywane są operacje bezpośrednio na rejestrach - dzięki temu został zachowany balans między czytelnością a wydajnością kodu. Jeśli chodzi o IDE, początkowo wykorzystywane było TrueSTUDIO Lite, lecz ze względu na swój limit wielkości programu wynikowego (32 kB?) byliśmy zmuszeni do przejścia na CoIDE. Silniki wysterowywane są regulatorem PID, lecz tak naprawdę tylko człon P jest aktywny. Zaimplementowany został pełny regulator PID, lecz okazało się, że na członie P robot zachowuje się dobrze i nie ma potrzby uaktywniać pozostałych współczynników. Magnetyczne enkodery wbudowane w silnik dostarczają aż 7168 impulsów na obrót, co zapewnia wysoką dokładność. Został wykorzystany wbudowany w STM32F107 interfejs dla enkoderów, dzięki czemu zliczanie impulsów sygnału kwadraturowego odbywa się niejako "w osobnym wątku" - nie są potrzebne przerwania, wystarczy odczytywać położenie koła ze wskazanego rejestru. Dzięki czterem czujnikom linii z przodu, możemy obliczyć w przybliżeniu kąt pod jakim podjeżdżamy do linii. Wystarczy prosta trygonometria - znamy odległość między czujnikami, znamy też dystans jaki robot przejechał od momentu zobaczenia linii zewnętrznymi czujnikami do momentu zauważenia jej czujnikami wewnętrznymi. Znając kąt pomiędzy osią robota a linią, możemy odpowiednio wykonać manewr wycofania się ku środkowi planszy. Odbiornik podczerwieni na górnej płytce służy nam głównie do odbierania sygnałów z pilotów sędziowskich. Zastosowaliśmy własny odbiornik przede wszystkim aby zaoszczędzić na miejscu, lecz również aby móc odbierać niestandardowe komendy dla robota, np. wskazówki dotyczące taktyki. Dzięki "deweloperskiej" wersji aplikacji Sumo Remote możemy wysyłać w zasadzie dowolny kod do robota - po dopracowaniu funkcja ta będzie dostępna publicznie. Monochromatyczny wyświetlacz OLED o rozdzielczości 128x64 umieszczony na górnej płytce umożliwia wybór taktyk, a także wyświetlanie informacji testowych. Nie posiada on wbudowanej czcionki, więc konieczna była implementacja wyświetlania własnych czcionek/obrazków. Aby zaoszczędzić miejsce w pamięci Flash procesora, obrazy kompresowane są algorytmem RLE za pomocą konwertera w postaci aplikacji na PC, po czym na robocie dekompresowane są w locie. Dzięki temu możemy użyć dużych i czytelnych czcionek, czy też schematycznych ikon obrazujących manewry robota. Krótkie demo działania wyświetlacza: (muzyka niestety nie jest odtwarzana z robota ). Po więcej szczegółów zapraszamy na naszą stronę: http://mcft.eu/_portal/page/knowledge_base/cat/6/Enova_MiniSumo#art_Enova_MiniSumo. Osiągnięcia Sezon 2013/2014: 1. miejsce na Roboxy 2014 w kategorii Minisumo 1. miejsce na Trójmiejskim Turnieju Robotów 2014 w kategorii Minisumo Deathmatch 3. miejsce na Trójmiejskim Turnieju Robotów 2014 w kategorii Minisumo 1. miejsce na Cyberbot 2014 w kategorii Minisumo Deathmatch 2. miejsce na Cyberbot 2014 w kategorii Minisumo 1. miejsce na Robot-SM 2014 w Göteborgu w kategorii Minisumo 1. miejsce na Ogólnopolskich Zawodach Robotów ROBOmotion 2014 w kategorii Minisumo 1. miejsce na Ogólnopolskich Zawodach Robotów ROBOmotion 2014 w kategorii Minisumo Deathmatch 1. miejsce na Robotic Tournament 2014 w kategorii Minisumo 1. miejsce na Robotic Tournament 2014 w kategorii Minisumo Deathmatch 1. miejsce na Copernicus Robots' Tournament 2014 w kategorii Minisumo 1. miejsce na Copernicus Robots' Tournament 2014 w kategorii Minisumo Deathmatch 1. miejsce na Robotic Arena 2013 w kategorii Minisumo Debel (z robotem Mirror Mateusza Paczyńskiego) 2. miejsce na Robotic Arena 2013 w kategorii Minisumo Enhanced 2. miejsce na Robotic Arena 2013 w kategorii Minisumo Classic 2. miejsce na Sumo Challenge 2013 w kategorii Minisumo+ 1. miejsce na Sumo Challenge 2013 w kategorii Minisumo 1. miejsce w konkursie robotów Gdańskich Dni Elektryki Młodych 2013 w kategorii Minisumo Sezon 2012/2013: 1. miejsce na Leś-Tech 2013 w kategorii Minisumo 1. miejsce na Roboxy 2013 w kategorii Minisumo 1. miejsce na CybAiRBot 2013 w kategorii Minisumo 1. miejsce na Robocomp 2013 w kategorii Minisumo 1. miejsce na ROBOmotion 2013 w kategorii Minisumo Deathmatch 1. miejsce na ROBOmotion 2013 w kategorii Minisumo 1. miejsce na Copernicus Robots Tournament 2013 w kategorii Minisumo Deathmatch 1. miejsce na Copernicus Robots Tournament 2013 w kategorii Minisumo 3. miejsce na Trójmiejskim Turnieju Robotów 2013 w kategorii Sumo² 1. miejsce na Trójmiejskim Turnieju Robotów 2013 w kategorii Minisumo 1. miejsce na Robotic Tournament 2013 w kategorii Minisumo 1. miejsce na RobotChallenge 2013 w Wiedniu w kategorii Minisumo 1. miejsce na Robomaticon 2013 w kategorii Minisumo 1. miejsce na T-BOT 2013 w kategorii Minisumo 1. miejsce na Robotic Arena 2012 w kategorii Minisumo Enhanced 2. miejsce na Robotic Arena 2012 w kategorii Minisumo Poniższy film prezentuje walki Enovy na konkursie RobotChallenge 2013 w Wiedniu: A tutaj kompilacja walk Enovy z konkursu Robocomp 2013 w Krakowie:
  2. 21 punktów
    Przedstawiam mojego najnowszego robota klasy LineFollower Standard "Fuzzy". Z opisywaną konstrukcją pojawiam się na większości zawodów jakie organizowane są w ostatnim czasie. W porównaniu do moich poprzednich robotów Fuzzy nie został wyposażony w napęd tunelowy. Powodem tej decyzji była chęć testowania nowych algorytmów. Efekty mojej pracy łatwiej zauważyć na robocie bez docisku, ponieważ jest on trudniejszy to wysterowania przy większych prędkościach. Konstrukcja mechaniczna Robot standardowo wyposażony został w dwa silniki Pololu 10:1 HP z obustronnym wałem, na którym zamocowane zostały magnesy od enkoderów. Podwozie stanowi płytka PCB wykonana w Satlandzie. Czujniki wysunięte zostały do przodu na węglowej listewce. Koła wytoczone zostały na zamówienie. Całość, zależnie od dobranego akumulatora waży 70-100g. Elektronika Prezentowana konstrukcja to czwarty prototyp robota. Głównymi elementami części elektronicznej są: mikrokontroler STMF103RBT6, enkodery AS5040 oraz mostek TB6612. Konstrukcja może obsługiwać do 16 czujników KTIR. Po przeprowadzonych testach pozostałem jednak przy 8 transoptorach. Pozostałe połączenia z czujnikami pozwalają na wizualizację ich stanów poprzez diody LED. Schemat prototypu Prototyp W poprzedniej konstrukcji do komunikacji z otoczeniem wykorzystywałem złącza typu Goldpin o rastrze 0.5mm. Częste podpinanie i odpinanie dodatkowego osprzętu sprawiło, że złącza te szybko uległy uszkodzeniu wprowadzałem spore problemów. Dlatego w nowej wersji zastosowałem złącza firmy HARTING Flexicon, które rozwiązały mój problem. Szczerze mogę je polecić, nie miałem żadnych problemów od kiedy je stosuję. Ostateczna wersja elektroniki ze złączami HARTING Flexicon Oprogramowanie Program napisany został w języku C z wykorzystaniem biblioteki dostarczanej przed producenta STMów. Kod w głównej mierze składa się z dwóch części. Pierwsza odpowiedzialna jest za komunikację z otoczeniem, druga za podążanie za linią. Kontroler robota Robot może komunikować się z komputerem lub specjalnym kontrolerem za pomocą interfejsu USART. Możliwa jest również komunikacja przez moduły Bleutooth. Całość obsługiwana jest przez własny, prosty protokół do komunikacji. Algorytm pakuje wszystkie dane w ramki oraz oblicza sumę kontrolną. Rozwiązanie takie pozwoliło na bezbłędne przesyłanie wymaganych danych. Prototyp z modułem BlueTooth Podążanie za linią wykonane zostało w oparciu o 3 regulatory: PD - podążanie za linią, sprzężenie zwrotne od czujników 2x PID - sterowanie faktyczną prędkością silników, sprzężenie zwrotne od enkoderów magnetycznych Efekty Szczególną wagę przykładałem do precyzji przejazdu, która moim zdaniem jest zadowalająca - szczególnie na kątach prostych. Robot wygrał wszystkie zawody w kategorii LineFollower Standard w jakich brał udział. Zdarzyło mu się przegonić również niejednego robota z turbiną. W optymalnych, domowych warunkach średnia prędkość robota, to ponad 2m/s. Poniżej filmik z zawodów RoboMotion z prędkością około 1,4 m/s - nie był to najszybszy przejazd. Ostateczny wygląd robota W chwili obecnej konstrukcja różni się od powyższej jedynie kolorem opon i długością listewki od czujników. Później postaram dodać więcej zdjęć - szczególnie jeśli będzie z Waszej strony zainteresowanie czymś konkretnym. Podziękowania W tym momencie chciałbym podziękować firmom HARTING oraz TME, które wspierały pracy przy tym projekcie. Zachęcam do zadawania pytań, odpowiem praktycznie na każde
  3. 15 punktów
    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
  4. 14 punktów
    Cześć! Mimo że Forbota przeglądam od dawna, to jako użytkownik raczej się nie udzielałem, tak więc witam wszystkich. Przyznam się bez bicia że post ten powstał za sprawą konkursu z Proxxonem w roli głównej ^^. Nie jestem pewny czy prezentowana konstrukcja nadaje się na to forum, bo ani toto nie jeździ, ani nie działa na pilota, ale pomyślałem sobie: pokażę, w końcu ma silniki . Chciałbym przedstawić Wam Wykresiarkę - prosty ploter powstały z zalegających w domu "śmieci". Jak sugeruje nazwa, przeznaczony jest głównie do rysowania wykresów do szkoły, ale jego możliwości są nieco większe. Na wstępie zaznaczę, że maszynka cechuje się dość nietypowymi rozwiązaniami: zrezygnowałem z używania "oklepanego" oprogramowania sterującego i dedykowanych sterowników dla silników krokowych. Zamiast tego wykorzystuję własną aplikację okienkową (głównie ze względu na projektowanie wykresów), a całe sterowanie mechaniką zostawiłem dla ATmegi16 i najprostszych końcówek mocy (ULN2803 i L293D). Na początek kilka fotek gotowej maszynki oraz krótka prezentacja działania: Mechanika Zaczęło się od zbierania różnych "przydasiów" wymontowanych ze starych drukarek i skanerów. Trochę to trwało, ale ostatecznie zebrałem: jeden silnik unipolarny, jeden bipolarny, do tego elektromagnes z dźwignią i zasilacz dwunapięciowy (16V i 32V). W przypadku silników konieczne było odszukanie takich ze zintegrowaną przekładnią i paskiem napędowym. Musiały też mieć taką samą rozdzielczość na wyjściu - w przypadku starych skanerów jest to zazwyczaj 300dpi. Mając to wszystko, zaprojektowałem model i na jego podstawie zleciłem elementy montażowe do wycięcia laserem w pleksi 3mm. Wykorzystałem kulkowe prowadnice do szuflad o długości około 310 mm, które po zmianie smaru zaczęły jako tako chodzić. W roli krańcówek osi X i Y użyłem zwykłych przycisków od myszek komputerowych. Na zdjęciu widać także laminat bez miedzi, który przydał się do przyciskania krańcówek, wyrównywania kartki i innych. Całość została zamontowana na płycie meblowej, a do przytrzymywania kartki użyłem folii magnetycznej (takiej na reklamy samochodowe) i małych magnesów neodymowych. Jeśli chodzi o samą budowę, to nie chcę zanudzać. Ogólnie nie mam zbyt dobrze wyposażonego warsztatu, więc musiałem całość rozplanować tak by można to było łatwo zmontować. Elementy kleiłem na super glue, wikol lub żywicę epoksydową. Oczywiście nie zabrakło też starego dobrego "termogluta"... Sterownik Tak jak wspominałem, wszystkim steruje ATmega16. Przede wszystkim zajmuje się ona sterowaniem silnikami krokowymi (poprzez scalaki ULN2803 i L293D) i elektromagnesem osi Z (przez MOSFET z logiką 5V, dokładniej IRLML2502). Poza tym musi też obsługiwać krańcówki, LCD (służył głównie do debugowania) czy komunikację z komputerem. W przypadku tej ostatniej wykorzystałem sytuację do napisania czegoś w rodzaju protokołu (mopsioCODE ), który pozwala zarówno na przesyłanie komend, jak i surowych danych. W wielkim skrócie, dzięki kontroli CRC16 umożliwia automatyczną retransmisję w przypadku błędu transmisji; obsługuje również kody błędów, a także wartości zwrotne które funkcja może odesłać do komputera. Więcej można o tym poczytać w pliku README w kodzie źródłowym. Komunikacja odbywa się przez UART z zastosowaniem scalaczka FT232RL. Postanowiłem też użyć separacji galwanicznej przez 2 transoptory TCMT1109 dla lepszego bezpieczeństwa układu (raz w trakcie testów spaliłem uC). Aplikacja na PC Ten program to mój debiut w Visual C# Express 2010, więc na pewno nie jest idealny. Jego głównym przeznaczeniem jest projektowanie wykresów i automatyczne ich rysowanie (wysyłanie odpowiednich komend do maszyny). Program zajmuje się też parsowaniem plików HPGL, więc można coś narysować w Inkscapie a potem wysłać to do plotera. Obsłużyłem tylko podstawowe komendy, więc pliki generowane przez inne programy mogą nie być poprawnie interpretowane, ale nic nie stoi na przeszkodzie by dopisać resztę. Podsumowanie Ogólnie problemów było dużo, a całość nie działa idealnie. Taki sposób sterowania nakłada pewne ograniczenia, np. rozdzielczość przekładni musi być identyczna. Sterowanie silnikami przez tranzystory i mostek H nie jest zbyt efektywne - mały prąd przy większych częstotliwościach ogranicza prędkość maksymalną, z kolei przy mniejszych prędkościach wydziela się dużo ciepła. Jednak tak jak wspomniałem, projekt powstał w celach edukacyjnych, żeby zobaczyć jak to wygląda w praktyce - samemu napisać skalowanie osi, komunikację, sterowanie i aplikację do projektowania. Tak więc śmiało można powiedzieć że liczyłem się z takim rezultatem i nie jestem zaskoczony... Niemniej jednak ploter sprawuje się całkiem dobrze: spełnia swoje zadanie i jest tani. Osobiście zmieściłem się w 60 złotych - głównie było to wycinanie pleksi, prowadnice i folia magnetyczna pod kartkę. W załącznikach dodaję wszystkie materiały - pliki EAGLE'a dla sterownika, kod źródłowy ATmegi w C, aplikacja sterująca oraz jej kod w Visual C#. Dzięki za uwagę i zapraszam do dyskusji! Jeśli macie jakieś pytania to chętnie odpowiem . Pozdrawiam mopsiok //dodane 03.04.15 Wykresiarka_pliki.rar
  5. 13 punktów
    Witam po dłuższej przerwie, z tego co kojarzę to mój pierwszy post na Forbocie - wcześniej pisałem jeszcze na dioda.com.pl. Przedstawiam projekt inteligentnej kawalerki oparty o Raspberry Pi i kilku modułów pracujących w magistrali I2C i 1wire. Umożliwia on na automatyzację instalacji elektrycznej mieszkania poprzez m.in. sterowanie oświetleniem przez dedykowaną aplikację www, rozszerzenie funkcji przycisków światła w mieszkaniu poprzez niezależne przypisywanie funkcji np.gaszenie wszystkich świateł włącznikiem przy łóżku, a zapalanie tylko oświetlenia dodatkowego. Monitorowanie temperatury w pomieszczeniu i na zewnątrz, oraz informowanie komunikatami głosowymi o zdarzeniach. System jest elastyczny i modyfikowany w zależności od zachcianek użytkownika, dzięki czujce ruchu, możemy np. w zaprogramowanych nocnych godzinach delikatnie rozjaśniać światła dekoracyjne, nie oślepiając zaspanego nocnego marka. Innym przykładem który pojawił się podczas używania systemu, było wysłanie diodą IR sygnału do włączenia się telewizora po wejściu do mieszkania, lub w przypadku braku użytkowników w mieszkaniu i zwiększonym zużyciu prądu (np zostawione żelazko) - poinformowanie i wyłączenie sprzętów. Ilość możliwych funkcji do zrealizowania jest ogromna niestety każda kolejna powoduje dodatkowe koszty. O ile część modyfikacji można wykonać małym kosztem - jak wspomniane sterowanie ir, to już realizacja pomysłu zabezpieczenia łazienki przed zalaniem poprzez sensor wody i elektrozawór na głównym przyłączu wodociągowym wiąże się z dodatkowym nakładem pracy. W projekcie użyłem popularnych i wspieranych przez społeczności użytkowników części oraz oprogramowania. W krótkim wstępie nie sposób wymienić wszystkich funkcjonalności i drobnych smaczków o których sam dopiero sobie przypominam. W dalszej cześci opiszę działanie całego systemu od strony programowej i sprzętowej oraz udostępnię kody źródłowe strony www i skryptów odpowiedzialnych za automatykę wraz z obrazowym poradnikiem jak to wszystko uruchomić. Mam nadzieje że dam radę bo trochę tego się uzbierało, na początek film z działania: Część sprzętowa. Pierwszym etapem prac było przerobienie instalacji elektrycznej w mieszkaniu. Tutaj głównym założeniem było wykorzystanie standardowych pojedynczych bistabilnych przycisków i pociągniecie wszystkich przewodów włączników i punktów oświetleniowych do jednego punktu. Gniazda zasilające zostały podzielone na 3 sekcje - kuchnia, sprzety rtv, łazienka. Punktów oświetleniowych jest 5, włączników razem z dzwonkiem na zewnątrz również 5. Do włączników został pociągniety przewód 2 x 1.5mm2, tak aby w przypadku demontażu systemu, można było podłączyć wszystko na stałe. Przewody do punktów oświetleniowych 3x1.5mm2, 3 linie gniazd zasilających 3x2.5m + dodatkowy przewód 5x2.5mm2 do trójfazowego zasilania kuchni. Do centralnego punktu zostało doprowadzone 5 sztuk skrętki cat.5 i wyprowadzone odpowiednio do: łazienki, kuchni, routera, oraz dwóch rogów pomieszczenia. Skrętka umożliwia podłączanie do całego systemu np. czujników w magistrali 1-wire, czy sterowanie sygnałem PWM układami mocy oświetlenia ledowego. Łacznie wykorzystałem około 150metrów przewodów. W skrzynce rozdzielczej zamontowane zostały zabezpieczenia oraz listwy rozdzielcze umożlwiające podłączanie urządzeń do układów wejść - wyjść. Poniżej zdjęcia z procesu wymiany instalacji elektrycznej. Cześć sprzętowa - elektronika. Tutaj zastosowane zostały: - Raspberry Pi - jako główny mózg całego systemu - Moduł 8 wejść - wyjść firmy Kamami. - Moduł przetwornika A/C firmy Adafruit. - Moduł 16 wyjść PWM firmy Adafruit. - 2 Czujniki temperatury DS18B20 - Konwerter napięć 3.3 <> 5V - Moduł 4 przekaźników. - 2 Moduły transystorów mosfet do sterowania ledami. - Głośniki komputerowe zasilane z USB Wszystkie podłączenia wykonane zgodnie ze standardowymi przykładami danych modułów czy czujników nie ma tu jakiś skomplikowanych połączeń - wszystkie moduły pracują na magistrali I2C przy zasilaniu 5V - dlatego potrzebny był dodatkowy konwerter napięć tak aby można było podłączyć magistralę do 3.3 woltowego Raspberry Pi. Czujniki na magistrali 1wire spokojnie dają radę przy 15 metrowej skrętce podłączone bezpośrednio pod RPI. Wykorzystane oprogramowanie. - Framework WebIOPi. Głównym frameworkiem użytym w projekcie jest WebIOPi. Jest to gotowa aplikacja dedykowana dla komputera RaspberryPi pozwalająca na sterowanie podłączonymi do niego urządzeniami za pomocą strony internetowej lub skryptów działających w tle. Framework dostępny jest w postaci gotowej paczki instalacyjnej dla systemu linux. Aplikacja uruchamia na komputerze serwer www, na którym możemy uruchomić stronę internetową, a z jej poziomu sterować poszczególnymi urządzeniami. WebIOPi pozwala na sterowanie i monitoring ponad 30 urządzeń pracujących zarówno na magistrali I2C jak i 1-Wire. Framework rozdziela układ sterowania na dwa podstawowe elementy – część sterowania i monitoringu dostępną z poziomu przeglądarki dla użytkownika oraz część komputera, pracującą niezależnie. Skrypty wykonywane na komputerze napisane są w języku Python. Framework pozwala na pracę wielu skryptów jednocześnie. Od strony przeglądarki wykorzystana jest technologia jQuery. Użyłem wersji 0.7 webiopi. Więcej na temat samego farameworka znajdziecie tutaj: http://webiopi.trouch.com/ -Framework Bootstrap - strona www w PHP Bootstrap to środowisko służące do budowania responsywnynych stron internetowych, pozwala na bardzo dokładne dopasowanie do stron własnych potrzeb. Zawiera 12-kolumnową siatkę, zarówno w wersji ze stałą jak i z automatyczną szerokością. Posiada bogaty pakiet UI - począwszy od typografii,poprzez formularze, tabele, po nawigacje i ikonki. Całość dopełnia kolekcja skryptów JS pozwalająca na obsługę animacji ekranu. System operacyjny: Komputer Raspberry Pi działa pod kontrolą systemu operacyjnego Raspbian. Baza danych: Baza danych wykorzystana w projekcie to MySQL w wersji 5.5.41. Baza ta służy do rejestracji wszystkich zdarzeń. Pozwala na długoterminową rejestrację temperatury, napięć i prądów w całym systemie. Zapis danych realizowany jest za pomocą skryptów powłoki systemu (Bash) uruchamianych w określonym czasie za pomocą systemowego narzędzia Cron. Dane z bazy pozwalają na późniejsze tworzenie wykresów poszczególnych parametrów na stronie www. Sporą częścia projektu jest strona www - aplikacja internetowa, stąd wykorzystanie bazy MySQL i frameworka PHP, nie chciałbym się rozpisywać na temat samego pisania i uruchamiania strony www bo ta może mieć dowolną formę. Z poziomu systemu wbudowanego chodzi o to, że strona www wywołuje funkcję javascriptową frameworka webiopi, np. po wciśnięciu przycisku wywoływana jest funkcja zmiany stanu wejścia z "0" na "1" lub funkcja okresowo sprawdzająca dane z czujnika temperatury. Dzięki wykorzystaniu frameworka korzystamy praktycznie z gotowego rozwiązania które realizuje dwukierunkową komunikację www - raspberry. Uruchomienie systemu - nie jest to poradnik krok po kroku jednak przedstawia gotowy przepis. - Instalacja i podstawowa konfiguracja raspbian - tutaj odsyłam do poradników w internecie - Instalacja fail2ban Ten etap nie jest konieczny jednak ze względu na mnóstwo botów próbujących dostać się do raspberry podłączonego do internetu polecam użycie tego programu. Pozwala on na dodawanie reguł blokujących połączenia z Internetu po ustalonej liczbie nieudanych logowań. Zapobiega to atakom typu brute-force. W pliku konfiguracyjnym pakietu, dostępne są m.in. ustawienia monitorowanego portu, maksymalna liczba nieudanych prób połączenia, czas blokowania danego adresu IP . Ze względu na powtarzające się przypadki uzyskania próby dostępu do komputera ilość możliwych prób dostępu to 3, a czas blokady 30 dni. Ponieżej zrzut ekranu pokazujący adresy IP zablokowane w ciągu zaledwie jednego dnia. Potwierdza to tylko konieczność stosowania tego typu zabezpieczeń, oraz nie używania prostych haseł do tego typu systemów. Oczywiście nie raz zdarzyło się mi zablokować samego siebie - jednak w przypadku fizycznego dostępu do RPI nie stanowi to większego problemu. Po zabezpieczeniu dostępu do komputera, kolejnym krokiem jest instalacja pakietu i2ctool. Jest to pakiet dzięki któremu możliwa jest obsługa i diagnostyka magistrali I2C. Po zainstalowaniu pakietu możemy sprawdzić podłączone urządzenia za pomocą polecenia i2cdetect –y 1. Wyświetli nam ono listę podłączonych urządzeń w formie matrycy adresowej. Adresy wyświetlane są w formie szesnastkowej. Adresy poszczególnych urządzeń konfigurowane są za pomocą odpowiednich połączeń wyprowadzeń na danych modułach. W prezentowanym rozwiązaniu pod adresem 20 znajduje się moduł 8 wejść – wyjść. Adres 40, to układ 16 wyjść PWM. Adres 48 zajmuje przetwornik analogowo – cyfrowy. W celu umożliwienia sterowania magistralą niezbędne jest też dodanie użytkownika do grupy i2c. Po poprawnym zainstalowaniu I2C widoczny jest taki wynik polecenia i2cdetect: Obsługa magistrali 1-wire, nie wymaga instalacji dodatkowego oprogramowania w systemie. Lista podłączonych urządzeń wraz z ich adresami dostępna jest po sprawdzeniu zawartości katalogu systemowego /sys/bus/w1/devices/, wynik polecenia ls dla tego katalogu został przedstawiony na zdjęciu poniżej. Do magistrali zostały podłączone dwa czujniki temperatury DS18B20. Dla najnowszego raspbiana powyższy opis może być trochę przekłamany, ja korzystałem z dystrybucji pobranej w styczniu 2015 roku, ostatnio przy zabawie z raspberry i uzyciu najnowszego systemu konieczne jest dopisanie linijki w pliku konfiguracyjnym. Opisane jest to m.in tutaj: http://osworld.pl/raspberry-pi-obsluga- termomertrow-ds18b20/ Głównym etapem jest instalacja najważniejszego frameworka, pakietu WebIOPi. Instalacja polega na pobraniu spakowanej paczki ze strony autora i uruchomieniu skryptu instalacyjnego. Tutaj żeby nie kopiować internetu również odsyłam na stronę gdzie opisana jest cała instalacja: http://webiopi.trouch.com/INSTALL.html Dostępne sa tam również przykłady dla konkretnych urządzeń oraz dokumentacja pozwalająca zrozumieć zasadę działania. W dalszej części przedstawie fragmenty swoich skryptów, dla konkretnego rozwiązania. Początek etapu instalacji: Po zainstalowaniu pakietu. I wydaniu polecenia startowego /etc/int.d/webiopi start, możemy za pomocą przeglądarki internetowej otworzyć domyślną stronę internetową frameworka WebIOPi. Adres strony to numer IP komputera oraz domyślnie port :8000. Po wpisaniu adresu, strona będzie wymagała uwierzytelnienia w postaci domyślnego hasła. Widok domyślnie hostowanej strony został przedstawiony na zdjęciu poniżej. Są to podstawowe elementy frameworka umożliwiające sprawdzenie jego działania w tym przypadku działania układów wejść -wyjść. Po sprawdzeniu działania podstawowych funkcji frameworka, należy za pomocą pliku konfiguracyjnego określić sposób jego działania. Polega to na dopisaniu wszystkich adresów urządzeń które mają być obsługiwane. W projekcie będą to 3 urządzenia w magistrali i2c, opisane jako adc, mcp oraz pwm. A także 2 urządzenia magistrali 1-wire opisane jako temp1 oraz temp2. Każde ze zdefiniowanych urządzeń prezentuje na stronie diagnostycznej rejestrowane parametry oraz jeżeli jest to możliwe, przyciski do sterowania testowania i zadawania wartości. Na tym etapie możliwe jest dokładne sprawdzenie działania wszystkich podzespołów. Po zakończeniu testów, w pliku konfiguracyjnym należy podać ścieżkę docelowej strony sterującej, oraz dodać aplikację do skryptów startowych systemu. Dokładny opis: http://webiopi.trouch.com/Tutorial_Basis.html Kolejnym krokiem jest instalacja serwera apache wraz z modułami bazy danych mysql potrzebnymi do jej obsługi. Po instalacji wymagane jest stworzenie bazy danych, potrzebnej do rejestracji parametrów z czujników. Instalacja serwera FTP, znacznie ułatwia wymianę plików z komputerem, oraz późniejsze edytowanie skryptów odpowiedzialnych za działanie systemu. W prezentowanym rozwiązaniu został zainstalowany pakiet proftpd. Współpracuje on z programem fail2ban zabezpieczając dodatkowo zawartość przed niepowołanym dostępem. Wszystkie niezbędne pakiety zostały zainstalowane. Za pomocą protkołu FTP została wgrana strona www oraz skrypty sterujące do ścieżki wcześniej ustawionej w pliku konfiguracyjnym WebIOPi. Aplikacja internetowa: Aplikacja internetowa. Aplikacja internetowa w formie strony www została napisana wykorzystując języki HTML, CSS i JavaScript. Wykorzystanie skryptów JavaScript pozwoliło na wyświetlanie i sterowanie parametrami sterownika na stronie bez konieczności jej przeładowywania. Jednym z założeń było stworzenie strony działającej na urządzeniach mobilnych. Zostało to zrealizowane przy pomocy frameworka Bootstrap, który automatycznie dopasowuje jej zawartość do szerokości i proporcji ekranu. Interfejs aplikacji został zaprojektowany w formie prostokątnych kafli, z których każdy odpowiada za inną funkcję. Poniżej został przedstawiony widok strony startowej na komputerze z monitorem o rozdzielczości 1920x1080, oraz telefonu komórkowego o takiej samej rozdzielczości. Pomimo takiej samej rozdzielczości ekranu, strona została odpowiednio powiększona i dopasowana do komfortowego przeglądania jej na telefonie komórkowym. Poszczególne zakładki zostały ukryte w formie rozwijanego menu dostępnego pod jednym przyciskiem (prawy górny róg). Strona składa się z 4 głównych zakładek: monitoring, oświetlenie, diagnostyka oraz ustawienia. Pierwsza zakładka to jednocześnie strona startowa. Wyświetla ona najważniejsze rejestrowane parametry takie jak temperatura w pokoju dziennym, temperatura na zewnątrz, prąd pobierany przez cały obiekt, stan poszczególnych punktów oświetlenia, napięcie zasilania sterownika, oraz stan elementów nadzorujących bezpieczeństwo w obiekcie. Poszczególne kafelki wyświetlają informacje o tych parametrach oraz pozwalają na interakcję w postaci uruchamiania określonych funkcji. W przypadku przekroczenia nominalnej wartości danego parametru, np. temperatury w pokoju dziennym wyższej niż 22 stopnie Celsjusza, kafelek wyświetlający ten parametr zmienia kolor na pomarańczowy. Użytkownik zostaje również powiadomiony o tym fakcie, odtworzeniem informacji „Temperatura w pomieszczeniu jest za wysoka”, za pomocą podłączonych do komputera głośników. Odtwarzaniem dźwięku zajmują się niezależnie pracujące skrypty. Analogiczna sytuacja ma miejsce w przypadku zbyt niskiej wartości temperatury. Kafelek zmienia kolor na niebieski, a użytkownikowi zostaje odtworzony komunikat „Temperatura w pomieszczeniu jest za niska”. Aplikacja internetowa spełnia tylko rolę interfejsu komunikacyjnego z użytkownikiem, nie jest niezbędna do działania całego systemu, jednak pozwala na sterowanie systemem oraz podgląd zarejestrowanych parametrów. Kafelek odpowiedzialny za wyświetlanie temperatury, jest jednocześnie przyciskiem otwierającym okno wykresu, który generowany jest na podstawie ostatnich 200 pomiarów temperatury, rejestrowanych co 15 minut.: Wykres generowany jest za pomocą biblioteki Google Chart API, pozwalającą na dowolną konfigurację wyświetlanych elementów. Po kliknięciu na dany punkt wykresu, w prawym górnym rogu wyświetlana jest szczegółowa informacja o zarejestrowanym parametrze. Wykres jest animowany, pozwala na powiększenie danego fragmentu w celu dokładniejszej analizy, co w przypadku np. pomiaru prądu, umożliwia zlokalizowanie źródła zużycia energii elektrycznej. Poszczególne elementy kodu potrzebne do zrealizowania wykresu to skrypt rejestrujący temperaturę i datę wykonania pomiaru do bazy danych, oraz skrypt generujący wykres, korzystający z biblioteki Google Chart API. Aktualne parametry pobrane ze sterownika wyświetlane są na stronie www za pomocą java skryptu korzystającego z możliwości frameworka WebIOPi. Jako przykład zostanie przedstawiona funkcja odświeżająca wszystkie parametry na stronie startowej z interwałem 500ms. Jej kod jest zaprezentowany poniżej: Kolejną główna kartą aplikacji internetowej jest oświetlenie. Za pomocą tej podstrony możemy sterować wszystkimi punktami oświetleniowymi, oraz monitorować ich stan. W zależności od sprzętowej konfiguracji systemu wyświetlane są tu kafelki odpowiedzialne za włączanie lub wyłącznie oświetlenia, a także sterowanie jego jasnością. Kafelek w prawym dolnym rogu pozwala na włączanie lub wyłączanie wszystkich lamp w pomieszczeniu. Ikona żarówki podświetlona na żółto informuje o zapalonej danej lampie. Wyświetlany stan jest zależny od rzeczywistego stanu wyjścia przypisanego do sterowania danej lampy. Sterowanie fizycznymi przyciskami może odbywać się niezależnie od działania aplikacji internetowej. W przypadku włączenia światła przez użytkownika w pomieszczeniu przy wykorzystaniu fizycznego przełącznika, stan przycisku w aplikacji internetowej również ulegnie zmianie. Ostatnim elementem na stronie jest sterowanie jasnością oświetlenia LED. Odbywa się ono poprzez przesuwany pasek, który zadaje wartość z przedziału 0-100 w zależności od swojej pozycji. Jednocześnie wartość ustawiana jest na przypisanym wyjściu cyfrowym w module PWM, który generuje przebieg prostokątny o wypełnieniu procentowym z przedziału 0-100. Karta „diagnostyka” jest bardzo przydatna w procesie montażu i serwisowania całego systemu. Umożliwia wykonywanie niektórych komend systemu, bezpośrednio z poziomu przeglądarki, pozwala na sprawdzanie stanu i adresów podłączonych do magistral urządzeń, posiada opcje restartu lub wyłączenia systemu, oraz wykonuje testowe odtwarzanie komendy głosowej konieczne w przypadku regulacji nagłośnienia. Ostatnią zakładką jest zakładka „Ustawienia”, która docelowo ma służyć do ustawień wyglądu poszczególnych ekranów, wartości krytycznych dla danych parametrów, oraz włączania i wyłączania poszczególnych funkcji systemu. Programami nadzorującymi pracę systemu są skrypty wykonywane cyklicznie lub na żądanie użytkownika. Skrypty wykonywane cyklicznie w systemie, zostały napisane w jezyku powłoki Bash, zaś skrypty odpowiedzialne za działanie systemu w zależności od stanu poszczególnych urządzeń napisane są w języku Python. Skrypty te wykonują większość zadań całego systemu inteligentnego budynku i są podstawą jego działania. Cykliczne wykonywanie programów zrealizowane jest za pomocą systemowego narzędzia CRON, uruchamia on co 15 minut skrypt odpowiedzialny za pomiar temperatury z czujnika temperatury i zapis jego stanu do bazy danych. Dzięki temu możliwe jest generowanie przebiegów temperatury w aplikacji internetowej. Dla każdego czujnika istnieje osobny skrypt. Kod skryptu przedstawia się następująco: Programy realizujące poszczególne funkcje systemu to skrypty pracujące pod kontrolą frameworka WebIOPi. Pozwalają one na nadzorowanie np. stanu przycisków i w przypadku jego zmiany wykonanie określonej funkcji. Ze względu na możliwość sterowania oświetleniem zarówno z aplikacji internetowej, jak i fizycznych przycisków, pojawił się problem zmienionej pozycji przełącznika światła, w przypadku zgaszenia lampy z poziomu aplikacji internetowej. Przypisanie funkcji światła na stałe do przycisku, uniemożliwiło by sterowanie nim z innych źródeł. Rozwiązaniem tego problemu jest poniższy kod, reagujący tylko na zmianę stanu przycisku i zmieniający stan lampy w zależności od tego czy jest zapalona czy zgaszona. Innym przykładem funkcji systemu są funkcje realizowane poprzez wywołanie danego makra przez użytkownika. Po wciśnięciu przycisku z poziomu przeglądarki wywoływana jest funkcja frameworka, wykonująca dane makro napisane w języku Python. I tak makro „shutdown” wykonuje polecenie systemowe „reboot” po czym zwraca do funkcji wartość „Sterownik: system zostanie wyłączony”, dzięki czemu aplikacja może wyświetlić odpowiedni komunikat. Przykładowe funkcje przedstawia poniższy fragment kodu. Za pomocą opisanych skryptów możliwa jest realizacja dowolnej funkcji żądanej przez użytkownika. W prezentowanym rozwiązaniu zostały zaimplementowane m.in. takie funkcje jak gaszenie światła w całym mieszkaniu za pomocą włącznika przy łóżku, który jednocześnie zapala tylko lampkę nocną. Szybkie przełączenie przycisku przy drzwiach wejściowych wyłączające wszystkie światła, bez konieczności wyłączania wszystkich po kolei. Skrypty powiadamiające użytkownika za pomocą odtwarzanych komunikatów, realizują swoją funkcje tylko w przypadku odpowiedniej pory dnia. Czujnik ruchu niezbędny w skrypcie alarmowym, w przypadku rozbrojonego alarmu załącza z minimalną jasnością oświetlanie LED, umożliwiając dojście do łazienki bez konieczności zapalania świateł. Podwyższony pobór prądu, który w przypadku dłuższego braku ruchu w pomieszczeniu, pozwala na poinformowanie właściciela o włączonym odbiorniku energii elektrycznej. Nie jestem w stanie opisać całego kodu aplikacji - bo jest go sporo, zamieszczam źródła do przejrzenia - które raczej nie pozwolą na bezpośrednie uruchomienie systemu ale dla kogoś korzystającego z opisanych frameworków mogą być przydatne. Na koniec jeszcze film z testów czujnika temperatury. Inteligentna kawalerka.zip
  6. 12 punktów
    KTR-X1 8x8 To pojazd zdalnie sterowany do wykonywania zadań w bardzo trudnym terenie, charakteryzuje się prostotą konstrukcji, niskim środkiem ciężkości oraz uniwersalnością. KTR-X1 8x8 zbudowany jest z dwóch sekcji połączonych przegubem, dzięki temu każda sekcja jest niezależna, dodatkowo ruchome wahacze dają ogromne możliwości w pokonywaniu przeszkód w terenie. Pojazd obojętnie w jakim terenie się porusza,oraz jak stoi, zawsze ma doskonałą przyczepność na wszystkie 8 kół. Dzięki temu że KTR-X1 jest hybrydą można bez obaw wybrać się na dalekie wyprawy gdyż prądu nam nie zabraknie. Specyfikacja: Podwozie: rama stalowa z profila zamkniętego 30x30x1,5 spawana Wahacze: profil zamknięty 40x80x2 wspawane bloki łożyskowe Osie: stal utwardzana Poszycie: blacha aluminiowa 0.8mm wzmacniania kątownikami Przegub: blacha stalowa 10mm plus łożyska Przeniesienie napędu: przekładna łańcuchowa przełożenie1,5:1 Napęd: 4 silniki 24V / 450W każdy (moc znamionowa) 123 RPM Układ skrętu: pompa hydrauliczna 120 bar plus dwa siłowniki Sterownik silnika: Sabertooth 4x32A Sterownik pompy: Sabertooth 2x32A Zasilanie: Akumulatory kwasowe 12V 40Ah 2x Układ ładowania: silnik spalinowy 200c OHV plus alternator 28V 55A Koła: 145/70/6 Pilot sterowania: HK-T6 Oświetlenie: led 2x9W przód, 2x2W tył Układ chłodzenia: 2x wentylator 4800 RPM Przyłącza: szybkozłącze montażowe plus gniazdo zasilania Spalanie: 0,5-1,2l/mth Masa: 140Kg Prędkość max: 8km/h Wymiary: szer 90cm, dłu 192cm, wys 68cm, prześwit 27cm Dalsze plany: Pług do śniegu obrotowy (zrobiony) Zamiatarka (dalszy etap) Kosiarka (dalszy etap)
  7. 10 punktów
    The way I see it, if you're gonna build a line follower, why not do it with some style? W ten oto wyjątkowy dzień OCT 21 2015, chciałbym zaprezentować swoją najnowszą konstrukcję, na początek jednak please excuse the crudity of this model. I didn't have time to build it to scale or paint it - a tak na poważnie brak czasu i masa obowiązków a zostało trochę rzeczy do dopieszczenia m.in wydruki 3d. Tak więc dokumentacja, porządne zdjęcia, i filmy pokazujące pełne możliwości tej konstrukcji zostaną opublikowane w późniejszym terminie - a robot na bank pojawi się na Robotic Arenie we Wrocławiu (możliwe że gdzieś wcześniej). ELEKTRONIKA Projekt składa się z czterech płytek PCB zaprojektowanych w CadSoft EAGLE. Płyta główna - grubość 1mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. Sercem robota jest 32 bitowy PIC32MX270F512H, do jego dyspozycji jest również osobny 1mb pamięci NVSRAM z podtrzymaniem bateryjnym Microchip 23LCV1024 (np. zapamiętanie trasy w trakcie zmiany głównej baterii). Napięcie 5.9V zapewnia przetwornica ST1S10PHR, natomiast za 3.3V odpowiada Microchip MCP1826S. Do sterowania silnikami - Toshiba 6612FNG. Na płytce znajdują się również trzy rejestry przesuwne NXP 74HC595 do sterowania efektami świetlnymi. 3 przyciski w tym dwa maleństwa do obsługi tablicy. Możliwość odbioru IR przez Vishay TSOP34836. P-MOSFET IRLML6401 do ochrony wejścia przed odwrotną polaryzacją. Większość drobnicy w obudowach 0603 Płytka czujników - grubość 0.8mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. KTIR0711S oraz miejsce pod SHARP GP2Y0D340K. Płytka enkodera i płytka silnika - grubość 0.8mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. Płytka przeznaczona do podłączenia enkoderów AS5040 - z prawie lustrzanym odbiciem z obu stron w celu obsługi dwóch kół robota z wykorzystaniem jednego wykonania PCB dla obydwóch stron. Razem z płytką silników imituje "kominy" filmowego De Loreana. FLUX CAPACITOR - 12 białych diod LED (wlutowanych do góry padami) odpowiada za efekt pracy kondensatora strumienia. RADIATION METER - dzielnik rezystorowy + ADC -> pomarańczowa dioda 0603 zaczyna migać w momencie spadku napięcia baterii. TIME CIRCUITS - tablica z niezależnym podświetleniem każdej daty - dwoma przyciskami ustawiamy na niej przed jazdą tryb w jakim ma robot pracować. NEONY - 3 wytrawione na głównej płytce + cztery 3mm diody do podświetlenia rurek wychodzących od płyty głównej do płytki enkoderów. OUTATIME - element obowiązkowy MR FUSION - na spodzie - bateria, góra skrywa w sobie malutki włącznik. ŚWIATŁA niezależne sterowanie światłami: przednimi (osobno wewnętrzne osobno zewnętrzne) oraz tylnymi (stopy, migacze, wsteczny). LICZNIK - when this baby hits 88cm/s you gona see some serious shit - wskazuje prędkość, przy 88cm/s odpalają się neony. MECHANIKA CDN... __________ Komentarz dodany przez: Treker Ale kolega punktów w regulaminie działu złamał... Ciężko wyliczyć wszystkie... Jednak w związku z oryginalnością konstrukcji poprawiłem niezbędne minimum i opublikowałem
  8. 10 punktów
    Witam, chciałbym zaprezentować manipulatora mojej konstrukcji. Głównymi założeniami projektu były: - Zbudowanie manipulatora o 6 stopniach swobody, - minimalne rozmiary z zachowaniem jak największej funkcjonalności oraz podobieństw do tych pracujących w przemyśle, - zachowanie szeroko pojętej estetyki. Na sam początek przeprowadziłem parę prób co do sterowania silnikami dc (bo takie planowałem użyć (cena)). Następnie zabrałem się za rysowanie modelu CAD robota, który powstał w programie Catia V5. Dodatkowo przeprowadziłem symulację ruchów manipulatora, co zapobiegło kilku błędom. Jako materiały do budowy brałem pod uwagę PMMA, stal oraz aluminium. Są one stosunkowo łatwe w obróbce i ogólno dostępne. Ważnym kryterium przy projektowaniu było zapewnienia odpowiedniej sztywności całej konstrukcji oraz fakt że w czasie projektowania i budowania nie miałem dostępu do frezarki/drukarki 3D, przez co całość musiała być tak zaprojektowana abym był w stanie wykonać wszystkie części samodzielnie. Robot jest łożyskowany w osiach 1-4. Końcowo ze stali wykonane są osie obrotowe 1-2, 2-3, 3-4. Z aluminium platforma obrotowa, mocowanie ramienia i kilka mniejszych części. Elementy z PMMA to większość konstrukcji głównie z płyt 2 i 4 mm wycinane na waterjet'cie. Kształtowanie polegało na podgrzewaniu hot air’em, następnie nadawaniu kształtu na kancie biurka. O samym "procesie" wytwarzania części mógłbym dużo pisać bo praktycznie wszystko robiłem samodzielnie w mniej lub bardziej elegancki sposób, dlatego najlepiej będzie odpowiadać na Wasze pytania (jeśli będą). Sam chwytak powstał trochę później, głównie dlatego że nie był niezbędny do funkcjonowania manipulatora a trzeba było ciąć koszty. Model chwytaka też powstał w Cati (razem z symulacją ruchu) i w tym przypadku został on wydrukowany z racji bardzo małych kształtów. Problematyczne okazało się znalezienie odpowiednio małego napędu, przekładni, łożysk. W środku znajdują się dwa przyciski krańcowe, a sterowanie jest siłowe. Za ruch ramion odpowiadają silniki DC z przekładniami. Silniki osi 1 -3 pochodzą z rozmontowanych drukarek, a przekładnie do nich otrzymałem z demontażu serw modelarskich. W osiach 4-6 zamontowane są silniki z dedykowaną przekładnią. Jako sprzężenie zwrotne wykorzystałem enkodery optyczne które też pochodzą z drukarek. Rozdzielczość dla każdej z osi wynosi >=0.1. Pracę silników kontrolują regulatory PID. Nad pracą robota czuwa ATxmega 128A1. Początkowo w ramach testów układ powstawał na płytce uniwersalnej. Ostatecznie płytkę PCB zaprojektowałem w AD13 w ramach pracy przejściowej. Może nie będę rozpisywał się za bardzo nad elektroniką w załącznikach jest schemat. Elektronika zasilana jest z 12 VDC w środku znajdują się 2 przetwornice na 3,3V oraz 5V (na schemacie sa LM317). Kod napisany w środowisku eclipse w C. Pisanie oprogramowania było najbardziej czasochłoną czynnością. Standardowo DMA, ADC, PWM, WDT, USART, PLL, Timery. Całość zamknięta jest w metalowej obudowie gdzie na górnej części umieszczony jest grzybek, wyświetlacz, 4 przyciski, oraz 3 diody. Na przednim panelu jest złącze DB15 służy do programowania, oraz podłączania dodatkowych urządzeń (wyprowadzono z niego kilka pinów uC i wszystkie napięcia). Następnie mamy złącze zasilania 12V DC, złącze usb służące do podłączenia do PC, bezpiecznik oraz włącznik zasilania. Po przeciwnej stornie znajdują się złącza do podłączenia manipulatora. Przez robota przeprowadzonych zostało 38 przewodów z czego 34 są używane reszta to nadmiar. Od spodu sterownika znajduje się wentylator. Obecnie mamy 3 możliwości kontrolowania manipulatora. - Poprzez PC (RS-232), powstała dedykowana aplikacja napisana w Lazarusie (Delphi). Umożliwia ona pełną kontrolę manipulatora, pomiar prądu silników, wymuszeń skokowych, tworzenie sekwencji ruchowych, modyfikację wzmocnień regulatorów PID, kalibrację itp. - Poprzez Smartphonea, powstała aplikacja na androida napisana w AppInventorze. Umożliwia kontrolę każdej osi manipulatora, kalibrację, odtwarzanie sekwencji oraz wysyłanie pojedynczych rozkazów. - Poprzez przyciski znajdujące się na obudowie sterownika. Dają takie możliwości jak sterowanie każdą z osi oraz wybór sterowania tzn. Aby sterować poprzez inne źródło najpierw musimy włączyć tą opcję na sterowniku. Jakby nie było ciężko napisać że projekt jest "skończony". W dużym stopniu udało mi się zbliżyć do manipulatora przemysłowego, a co za tym idzie można na nim testować przeróżne algorytmy, sposoby sterowania, kinematyke itp. z tą różnicą że nie kosztuje 100 tys. pln, a całe oprogramowanie jest "wymienne". Jeśli chodzi o koszty to: - elektronika ok. 700 zł, - mechanika ok. 1550 zł (650 zł to chwytak). Suma: 2250 zł (to ta optymistyczna wersja Smile). jak na przeciętnego studenta to dość sporo jak na zabawkę Smile. Pewnie pojawi się pytanie "kraj taki piękny, unia europejska, manna z nieba nie da się otrzymać jakiegoś dofinansowania na tego typu projekty ?." - Niestety nie, lub po prostu zbyt dużo papierków, chodzenia, proszenia i czekania. Jak napisałem we wstępie, manipulator stał się podstawą mojej pracy magisterskiej, która polegała na zbudowaniu systemu sterowania z wykorzystaniem logiki rozmytej. Końcowym efektem było zmniejszenie przeregulowań napędów o 64,5% w stosunku do tradycyjnego regulatora PID. Praca w załączniku. Podsumowując projekt uważam za udany nauczył mnie wielu rzeczy z różnych dziedzin nauki i to jest najcenniejsze, ale jak to przy takich projektach bywa teraz zrobiło by się pewne rzeczy inaczej/lepiej. Chciałbym też podziękować za pomoc kilku pracownikom wydziału MT oraz Elektrycznego. NIE JESTEM AUTOREM PLATFORMY JEZDEJ Kilka filmików z działania manipulatora, miłego oglądania. Zachęcam do zadawania pytań. Manipulator - code C.zip Manipulator - App lazarus.zip Schematic.PDF PDM_MarekSliz.pdf
  9. 9 punktów
    Witam. Przedstawiam kolejną konstrukcję. Kilka lat temu pokazywałem pierwszego robota balansujacego. Dobre oprogramowanie takiej konstrukcji nie jest proste wiec teraz skorzystałem ze znalezionego w sieci projektu pod nazwą B-robot http://www.3ders.org/articles/20131029-b-robot-a-fully-3d-printed-self-balancing-arduino-robot.html Kolega który wcześniej go robił zmodyfikował soft z WIFI na BT, ja dorobiłem tylko jakieś oczy sygnalizujące słabą baterię. Moja konstrukcja względem oryginału nie ma serwa oraz ma wysoko baterię co znacznie podwyższa środek ciężkości. Oryginał znacznie ciekawiej przez nisko umieszczony SC się wychyla. Co do konstrukcji: - rama w całości narysowana i wydrukowana na własnym Reprapie - silniki - krokowe jaki były pod ręką - elektronika - arduino mini + 2xstepstick + mpu6050 - aplikacja stworzona w AppInventorze Kilka fotek Filmik (kręcony na dość grubym dywanie, na parkiecie czy zwykłym dywanie jeździ trochę szybciej i nie kołysze się na postoju): Pozdrawiam Sławek
  10. 8 punktów
    Od pewnego czasu na forum pojawiają się artykuły o możliwości wykorzystania nieco większych mikrokontrolerów w robotyce. Przez większe, rozumiem procedory ARM9, ARM11 lub Cortex-Ax. Niewątpliwą zaletą takich układów jest możliwość wykorzystania systemu operacyjnego z komputerów PC, a częstym wyborem jest Linux. [blog]https://forbot.pl/blog/artykuly/programowanie/linux-programowanie/sprawdz-jak-tanio-zbudowac-robota-z-systemem-linux-id7751[/blog]
  11. 8 punktów
    Odkryłem ciekawy sposób na darmowe płytki drukowane dla uczniów i studentów i postanowiłem się nim z wami podzielić. Najpierw podam instrukcje potem opiszę możliwości produkcyjne i otrzymane dzisiaj płytki. NIEAKTUALNE! NOWE INSTRUKCJE TUTAJ! Instrukcje: 1. Wchodzimy w link. Jest to mój reflink po rejestracji z którego dostajecie dodatkowe $5 na płytki (4 warstwy etc.). 2. Rejestrujemy się poprzez wyświetlony formularz. 3. Wysyłamy z konta e-mail na który się zarejestrowaliśmy maila do service@pcbway.com ze zdjęciem legitymacji uczniowskiej/studenckiej i informacją że chcemy skorzystać z http://www.pcbway.com/free_pcb.html. 4. Czekamy na odpowiedź. 5. Składamy zamówienie przez stronę, czekamy aż status zmieni się na "ready to pay" jeszcze nic nie płacimy. 6. Odpisujemy na ostatniego maila (z potwierdzeniem kwalifikacji do programy darmowych płytek) z prośbą o adres do zapłacenia kosztów przesyłki. 7. Płacimy podane koszty przesyłki na ten adres przez PayPal. Koszt przesyłki to $10 za 7 dni albo $25 za 3 dni. Do tego dochodzi czas produkcji - max. 4 dni. 8. Czekamy na płytki. Ograniczenia darmowych płytek: 1. Wielkość płytki 10cmx10cm. 2. Maksymalnie 2 warstwy. 3. Ilość kopii: 5 lub 10. 4. Minimalny rozmiar wiertła 0.3mm. 5. Minimalna szerokość ścieżki 6 mil. 6. Na jednej płytce maksymalnie jeden unikalny projekt. 7. Maksymalnie 30 płytek w zamówieniu (chodzi o panelizacje). 8. Kolor soldermaski: czerwony, niebieski, zielony, żółty. Ceny płytek poza programem studenckim to $13 za 2, $35 za 4 i $154 za 6 warstw. Za dodatkową opłatą można ominąć ograniczenia z powyższej listy. Za umieszczenie na ich stronie zdjęć otrzymanych płytek można dostać $5 do wydania u nich. Moje obserwacje: Zamówiłem u nich płytki 3x5cm, 10 sztuk. Otrzymałem je po 10 dniach pomimo wybrania tańszej przesyłki. Jakość moim zdaniem co najmniej równa Satland Prototype. Soldermaska idealnie ostra i równa, silk screen bardzo czytelny, nawet gdy bardzo mały (opisy pomiędzy padami elementu 1206). Wszystkie warstwy są dobrze nałożone, otwory wycentrowane. Dobrze się lutuje. Został dodany numer identyfikacyjny płytki na silk screenie pod elementem. Galeria: Skan gotowej płytki (białe wewnątrz otworów to tło skanera): Stosik otrzymanych płytek: Zlutowana płytka (będzie wkrótce osobno opisana):
  12. 8 punktów
    Ten robot był eksperymentem w kilku dziedzinach jednocześnie. Po pierwsze, jest to mój pierwszy skończony dwunożny robot kroczący. Po drugie, jako mózgu użyłem nowego wówczas układu ESP8266. Po trzecie, po raz pierwszy użyłem sub-micro-serwa zasilane napięciem 3V. Na koniec, nawet obudowa była eksperymentem, sprawdzającym jak dobrze plastik ze starych opakowań nadaje się do tego celu. Później dla tego własnie robota wytrawiłem swoją pierwszą płytkę drukowaną. Ostatnim eksperymentem, który się niestety już nie powiódł, było użycie optycznego cyfrowego czujnika odległości, który z jakiegoś powodu okazał się nie działać. Ale do rzeczy. Robot ten bardzo mocno bazuje na projekcie znanym ogólnie jako "Bob" (http://www.robotrebels.org/index.php?topic=11.0). W zasadzie jest to moje podejście do zrobienia jego miniaturoej, pomniejszonej wersji. Niestety nie posiadałem dostępu do drukarki 3D, żeby zrobić obudowę i szkielet, zatem podszedłem do tematu tak jak zwykle -- zlepiając ze sobą losowe części i lutując wszystko "na pająka". Wyszło mi coś takiego: Dużym wyzwaniem były gniazdka do serw, bo ich rozstaw nóżek to 1.27mm. Moduł ESP8266, którego użyłem, ma rozstaw padów 2mm, więc już trochę łatwiej. Diody świecące dodałem, żeby widzieć czy robot jest włączony czy nie. Stopy są wycięte ze starej karty kredytowej. Gumka recepturka przytrzymuje baterię. Zadowolony z tej konstrukcji, postanowiłem zrobić do niej obudowę ze starego opakowania (tak zwanego "blistera") po gamepadzie. Wyciąłem z niego kawałek w miarę płaskiego plastiku, narysowałem na nim siatkę pudełka, wyciąłem i skleiłem Kropelką. Po dopasowaniu do robota powycinałem otwory. Potem dokleiłem trochę kawałków starych zabawek do ozdoby... Z czasem wymieniłem stopy na wykonane z takiego samego materiału jak obudowa i dodałem robotowi moduł ładowania baterii (jest to pojedyncze LiPo, więc dość łatwo je ładować). Do programowania wykorzystałem powstający wówczas dopiero firmware NodeMCU dla ESP8266, który pozwolił mi oskryptować wszystko w Lua. Było to bardzo wygodne, gdyż mogłem na żywo testować kod w konsoli, na którą po prostu łączyłem się telnetem. Przy okazji próby używania PWM do kontrolowania serwomechanizmów, znalazłem dwa błędu w NodeMCU, które zostały szybko poprawione (https://github.com/nodemcu/nodemcu-firmware/issues?q=is%3Aissue+author%3Adeshipu+is%3Aclosed). Jest tu zastosowany jeden trik, gdyż NodeMCU obsługuje co najwyżej 3 kanały PWM (zrobili to do kontroli diody RGB), a ten robot ma 4 serwomechanizmy. Otóż dwa z tych serwomechanizmów sterowane są tym samym sygnałem i zawsze mają tę samą pozycję -- to nie przeszkadza przy tym sposobie chodzenia, jaki ma ten robot: W tym stanie robot postał na półce jakiś rok -- zabrałem go na dwie konferencje, żeby się pochwalić. Niestety, po powrocie z ostatniej przestał działać -- urwał się jeden z padów na ESP8266, do których przylutowane były druciki. Niestety nie dało się tego naprawić bez praktycznego przebudowania całego robota, więc robot sobie leżał i czekał na lepsze czasy. Lepsze czasu nadeszły, gdy kupiłem odczynniki do trawienia płytek i postanowiłem spróbować w tym swoich sił. Zrobiłem płytkę dla naszego bohatera: A w zasadzie całą serię płytek, gdyż nie udało mi się jej poprawnie wytrawić za pierwszym razem: W końcu udało się zrobić coś, co miało większość potrzebnych połączeń i wywiercić w tym otwory, łamiąc przy tym tylko trzy wiertła. Po zlutowaniu całości, tak jak wspomniałem wcześniej, czujnik odległości okazał się nie działać, ale robot nadal chodzi i do tego teraz może mrugać oczami: Być może jeszcze kiedyś wrócę do tego projektu i spróbuję uruchomić ten czujnik, albo użyć innego. Mógłbym też znacznie rozszerzyć jego repertuar zachowań, na przykłąd nauczyć go tańczyć. Ogólnie z robota jestem bardzo zadowolony, dostarczył mi naprawdę wiele zabawy przy budowie i nauczył przy tym dużo, choć jest to chyba projekt przy którym jak dotychczas napsułem najwięcej komponentów (w sumie dwie płytki esp8266, jeden sensor optyczny, który zniszczyłem przy lutowaniu, milion nieudanych płytek, wiertełka). __________ Komentarz dodany przez: Treker 1 - Poprawiłem temat, w którym nie działał encja µ. 2 - Typ robota należy wybierać z listy rozwijanej zamiast wpisywać go ręcznie. 3 - Opisy robotów muszą zawierać jedno zdjęcie w załączniku, które jest prezentowane w katalogu robotów oraz na stronie głównej. Tym razem poprawiłem, pamiętaj proszę na przyszłość o tych zasadach. [ Dodano: 14-10-2015, 11:06 ] 1 - Nie lepiej by było naprawić forum tak, żeby działała? 2 - Nie widziałem tam nigdzie listy rozwijanej. UPDATE: Już widzę, jest na szaro po stronie etykiety pola, musiałem jakimś cudem przeoczyć, przepraszam. Jakoś mogę to naprawić? 3 - Jestem pewien, że załączyłem jedno zdjęcie jako załącznik, własnie tak, jak piszesz. Nie mam pojęcia czemu się to nie pojawiło. Poprawiłem teraz.
  13. 8 punktów
    Witam. W wolnej chwili postanowiłem opisać konstrukcję diy segwaya. Myślę ze można go zaliczyć do kategorii robotów i opisać na tym forum. Zrobiliśmy z kolega 2 szt żeby nie było niejasności z prawami do użytkowania między nami. Wykonane zostały w tamtym roku i do tej pory jeżdżą. Krótki opis: - Konstrukcja stalowa, elementy wycinane laserowo z blachy ok 1,5mm. Całość ocynkowana. - Koła w jednym modelu od taczek , w drugim alusy od skutera - Elektronika - wheelie 2. Zmiany jakie wprowadziłem to dołożyłem i oprogramowałem wskaźnik baterii oraz zrobiony na nim balance indicator dzięki któremu zawsze w tej samej pozycji można na segwaya stanąć. Dodatkowo dołożyłem moduł BT żeby na bieżąco monitorować na laptopie parametry. Dodatkowo oprogramowałem czujniki prądu ACS ( w oryginale wcale nie są oprogramowane). Dzięki temu blokując koła nie palą się od razu tranzystory w driverach tylko płynie max koło 40A. Dodatkowo zamiast czujników hala na zębatkach zastosowałem zrobione z tcrt5000 czujniki optyczne włożone do wnętrza silnika. Doświadczalnie też dołożyłem żyroskop osi z i wstępnie oprogramowałem. Dzięki temu zjazd jednym kołem z jakiegoś krawężnika czy jakieś inne obniżenie czy podwyższenie stabilizuje obrót. - Drivery - również ze schematu wheelie 2 z lekkimi modyfikacjami. - Napęd - 2 tanie silniki 500W 24V napędzające poprzez przekładnie chyba 11/80 zębów i łańcuch. Testowaliśmy też z przekładniami zębatymi wykonanymi na laserze ale głośność i drżenie były poza granicami akceptowalności. - Zasilanie 2 akumulatory żelowe 12V 20Ah. Na początku planowaliśmy li-ion'y lub li-pol'e ale z racji ceny nie do pobicia stanęło na żelówkach. Co to dużo gadać. Zapraszam do oglądnięcia kilku fotek oraz filmiku.
  14. 7 punktów
    Robota chciałem opisać już od dłuższego czasu, jednak dopiero moje osiągnięcia na Robocompie 2014, pierwszych zawodach na jakich z nim byłem zmobilizowały mnie do stworzenia opisu. Osiągnięcia 1. Linefollower Light Robocomp 2014 3. Linefollower Standard Robocomp 2014 2. Robotic Tournament 2015 Konstrukcja mechaniczna Podwozie stanowi kawałek cienkiego laminatu, do którego przykręcone są silniki Pololu 30:1 wraz z enkoderami. Felgi od Solarbotics + odlane opony. Listwa czujników to Pololu QTR-8RC wysunięta na węglowej listewce. Elektronika Za zasilanie odpowiada pakiet Dualsky 7.4V, 150mAh. Jest on w zupełności wystarczający do robota bez turbiny. Sterownik silników to standardowo TB6612. Całość obsługiwana jest przez Arduino mini, czyli ATmega 328p. Do obniżenia napięć do wymaganych 5V służy stabilizator 7805. Napięcie silników nie jest w żaden sposób stabilizowane, więc obniża się wraz z rozładowywaniem pakietu. Dlatego trzeba go często doładowywać, żeby nastawy się nie rozjeżdżały. Oprogramowanie Program napisany w Arduino z użyciem biblioteki IRremote i QTR. Przed przejazdem odbywa się kalibracja czujników. Pilot służy tylko do załączania i wyłączania mostka. Podążanie za linią oparte jest na regulatorze PD. Zastosowanie takich, a nie innych podzespołów spowodowane było chęcią zrobienia w miarę lekkiego robota, z małą bezwładnością. Aktualnie jego waga to 97g. Filmik z jazd testowych
  15. 7 punktów
    Witajcie! Bolt to robot klasy Linefollower Standard. Został zaprojektowany, zbudowany oraz zaprogramowany przez kolegę Hubert.M oraz mnie. Jest on naszą najnowszą konstrukcją. Konstrukcja mechaniczna. Robot składa się z 2 płytek PCB, wykonanych przez firmę SATLAND Prototype. Płytki połączone są dwiema węglowymi listewkami, a z tyłu robota znajduje się aluminiowa podpórka zabezpieczająca przed przewróceniem się robota. Podpórkami listwy czujników są tranzystory w obudowie TO92. Silniki użyte w robocie to popularne Pololu HP 10:1. Koła wykonał dla nas hungrydevil. Masa robota z baterią wynosi 69 gramów. Elektronika. Zdecydowaliśmy się na mikrokontroler STM32F103C8T6. Silniki sterowane są układem TB6612. Zastosowane czujniki linii to KTIR0711. Czujników na chwilę obecną jest 9. Zastosowaliśmy moduł bluetooth HC-05. Zastosowanie modułu znacznie ułatwiło strojenie robota. Ponadto stan każdego czujnika jest odzwierciedlony diodą LED. Robot zasilany jest pakietem Li-pol o pojemności 150mAh. Część logiczna robota zasilana jest napięciem 3.3V. Program. Algorytm robota jest napisany w języku C. Zastosowano regulator PD. Dzięki modułowi BT wszystkie nastawy regulatora mogą być ustawiane bez ponownego programowania robota. Ponadto, program pozwala na np. zdalne sterowanie robota po połączeniu z komputerem. Do zażądania robotem napisaliśmy 2 aplikacje – na telefony z systemem android, aplikacja pozwala na wystartowanie robota, a także na jego zatrzymanie. Z Kolei aplikacja na PC oprócz podstawowej funkcjonalności pozwala na dobieranie nastaw robota. Ponadto można za jej pomocą rysować wykresy uchybu i pochodnej z uchybu. Bolt ma brata bliźniaka, o nazwie Bez Nazwy. Jest on nieco szybszy od Bolta (bo czerwony). Osiągnięcia i plany na przyszłość. - 2 miejsce na Konkursie robotów SEP Gdańsk 2015 - 4 miejsce na SUMO Challenge 2015 W robocie planujemy jeszcze bardziej poprawić jakość sterowania, oraz rozważamy wykonanie węższej listwy czujników z czujnikiem odległości, aby móc startować w kategorii LF Enhanced. Film z przejazdu:
  16. 7 punktów
    Witam. Nie było chyba na tym forum podobnej konstrukcji więc opiszę krótko efekt pracy "mojego zespołu". Mam nadzieję że moderator przepuści wątek z racji ciekawej konstrukcji mimo tego że wyszedł z tego pojazd zdalnie sterowany a nie robot. Założenia jak to zwykle u mnie - zabawka na pokazy. Trochę danych: Konstrukcja - frezowany laminat + elementy drukowane. Wszystko zaprojektowane przez współtwórcę w SW. Napęd - tanie żółte silniki z przekładniami z chin zamocowane w sposób sprężysty w konstrukcji. Koła - dekle wycięte laserem z aluminium, rolki wydrukowane + pokrycie rurką termokurczliwą. brak łożysk. Zasilanie - początkowo miały być koszyki na 6 paluszków ale start 4 silników powodował ogromne spadki więc wygrzebałem z gratów ogniwa od laptopa i podłączyłem jako 2s2p Elektronika - Arduino nano+najtańsze mostki z chin na L9110+sonar+odbiornik RC+BT Software - napisane w Arduino przez współtwórcę. Software na Smartfona - napisany po przeglądnięciu kursu na forbocie. Na chwilę obecną jest - Tryb demo - pojazd jakoś się tam porusza po kawałku w każdą stronę wracając do miejsca startu - Tryb RC - dzięki wbudowanemu odbiornikowi można go sterować z aparatury i jest to najfajniejszy tryb - Tryb z telefonu - możliwe jest sterowanie guzikami oraz wykorzystując akcelerometry położeniem telefonu - Tryb pomiaru odległości - odsyła na smartfona odległość od przeszkód. Chcieliśmy sonar wykorzystać podczas normalnej jazdy ale umieszczony w plastykowej obudowie czasami szaleje (bez obudowy działa dobrze) i nie chcieliśmy alby jego zwiecha zablokowała nam pojazd. Fajnie wszystko działa. Nawet lepiej niż zakładaliśmy. Spełnił nasz założenia choć oczywiście ma kupę wad. Największa to chińskie przekładnie. W tył kręcą inaczej niż w przód. Jedne startuje przy PWM=30% , inny przy PWM=50%. Dlatego kolega zaprogramował KickDown dającego kopniaka startującego silnik przy małym PWM. Nie polecam tych silników choć za 5zł nic lepszego nie znajdziemy z przekładnią. OK koniec pisania. Kilka fotek i filmik Pozdrawiam Sławek
  17. 6 punktów
    Witam! Na wstępie chciałbym podziękować użytkownikowi Hudyvolt, który zaraził mnie zamiłowaniem do robotyki oraz "za rękę" przeprowadził przez budowę pierwszej konstrukcji - Dziękuję! Chciałbym Wam przedstawić Pikę - mojego trzeciego i zarazem najmłodszego robota kategorii LF standard. Jest to udoskonalona wersja mojego poprzedniego flagowca - Dzidy, z którą udało mi się odnieść pierwsze zwycięstwo na zawodach. Konstrukcja mechaniczna Na budowę robota składają się standardowo 2 płytki PCB (homemade) - płyta główna stanowiąca jednocześnie podwozie robota oraz listewka z czujnikami. Spójność robota zapewnia pojedyncza listewka z włókna węglowego. Aluminiowe felgi zostały wykonane przeze mnie w technologii WEDM, opony natomiast zostały odlane z poliuretanu 30'. Jako ślizgacz zapobiegający unoszeniu się przodu robota podczas nagłych przyspieszeń zastosowałem kondensator ceramiczny - znakomita odporność na ścieranie! Z kolei przód opiera się na 2 spiłowanych koralikach, które znalazłem gdzieś w domu. Napęd 2x Silnik Pololu HP 10:1 - spisują się rewelacyjnie. Elektronika Za realizację programu odpowiada uC ATmega128, do której za pośrednictwem komparatorów analogowych podłączonych jest 14 czujników KTIR. Stan każdego z czujników wyświetlany jest na dedykowanej do tego diodzie LED. Pozwala mi to na błyskawiczną diagnozę poprawności odczytów - kilka razy uratowało mnie to przed żmudnym poszukiwaniem przyczyny dziwnego zachowania robota. Zdarzało się, że czujniki ulegały delikatnemu uszkodzeniu, mianowicie podawały fałszywy stan jedynie w przypadku delikatnego uderzenia co powodowało zamruganie diody wskazującej na wadliwy czujnik. Sterowanie silnikami odbywa się przy pomocy pojedynczego, dwukanałowego mostka H - Toshiba TB6612FNG. Na pokładzie znajduje się również moduł Bluetooh HC-05, który komunikuje się z uC poprzez interfejs UART. Do wysyłania i odbierania danych używam prostego a zarazem sprytnego terminala na androida - "Bluetooth spp pro". Zasilanie Energię, zależnie od charakteru trasy, dostarczają pakiety Li-Pol 7.4V firmy Dualsky o pojemnościach: 220mAh, 300mAh oraz 550mAh. Najczęściej stosuję akumulator o pojemności 300mAh - mam wrażenie, że robot jeździ na nim nieco szybciej, taki złoty środek pomiędzy masą a wydajnością. Stan naładowania pakietu jest ciągle wyświetlany na 3 diodach LED. Lekkiej modyfikacji poddałem również gniazdo zasilania w robocie - wiszące na oryginalnych przewodach często powodowało mi zwarcia przy samej PCB - przewody od ciągłych zmian pakietów ulegały przełamaniu. Wykorzystałem fabryczne gniazdo, które po delikatnym przycięciu wkleiłem na 2 delikatnie odchudzone goldpiny. Z tym rozwiązaniem nie miałem jeszcze żadnych problemów. Do zasilania części cyfrowej Piki zastosowałem tradycyjny stabilizator 5V, który przy tej ilości diod wyraźnie się grzeje, lecz jeszcze w granicach rozsądku Program Algorytm napisany został w języku C. Opiera się na regulatorze PD z kilkoma pomniejszymi modyfikacjami. Nowa regulacja obliczana jest z interwałami ok. 8ms. Do wprowadzania nastaw, jak już wcześniej wspominałem służy moduł Bluetooth - szalenie wygodne rozwiązanie. Osiągnięcia -I miejsce na zawodach CYBERBOT 2015 w kategorii LineFollower Standard -I miejsce na zawodach ROBO~motion 2015 w kategorii LineFollower Standard (Vmax= 2.70m/s, Vśr = 1.90 m/s) -I miejsce na zawodach Copernicus Robots Tournament 2015 w kategorii Linefollower -I miejsce na zawodach "Opolski Festiwal Robotów" w kategorii Balluf LineFollower -I miejsce na zawodach "Trójmiejski Turniej Robotów 2015" w kategorii Linefollower Standard -IV miejsce w turnieju ROBOXY 2015 w kategorii LineFollower
  18. 6 punktów
    Witam, chciałbym przedstawić wam jedną z moich ostatnich konstrukcji - robota wielozadaniowego. Prace nad robotem zacząłem około rok temu gdzie zaprojektowałem i wykonałem pierwszą jego "wersję". Przez następne 6 miesięcy stopniowo ją modernizowałem. W założeniach miała to być platforma czterokołowa wyposażona w manipulator, jednak stwierdziłem że trochę źle zaplanowałem kilka kwestii i robot zostanie już w aktualnym stanie a platformę z manipulatorem potraktuję jako osobną konstrukcję. W obecnym stanie robot pełni następujące funkcje: • bezkolizyjne poruszanie się, realizowane z pomocą dalmierza Sharp GP2Y0A21YKOF, na pewnym etapie używałem również ultradźwiękowego czujnika HC-SR04 ale nie wychodziło mi za bardzo łączenie dwóch pomiarów w programie i postanowiłem zostawić samego Sharpa. • radiowa komunikacja z pilotem sterowniczym • pomiar naświetlenia miejsca w jakim znajduje się robot i załączanie latarki • pomiar prędkości obrotowej dwóch przednich kół, za pomocą tarczy i transoptorów CNY70 (nie jest co prawda zbyt dokładny, ale jest) Krótki opis budowy robota : • Mikrokontroler główny to Atmega32 • Mikrokontroler nadajnika to Atmega16 • Zasilanie : Żelowy akumulator 12V , pojemność 2200 mAh , napięcie jest stabilizowane przez stabilizatory LM7805 oraz LM338 • Mostki H to scalone mostki L298 zabezpieczone diodami , jeden na tył i jeden na przód • LM339 jako komparator do 2 transoptorów CNY70 , pracujących jako enkodery • Napęd kół robota to 4 przerobione analogowe serwa CYS3600 • Serwo obracające czujnikiem Sharp to Tower Pro SG-90 • Serwo obracające latarką to Redox S90 • Moduł radiowej komunikacji to HM-R868S i HM-T868S • Wyświetlacze LCD 16x2 Mechanika Cała konstrukcja mechaniczna wykonana została z odpadów blachy aluminiowej o grubości 3mm. Podwozie , koła, mocowania serw, wsporniki i błotniki narysowane zostały w cadzie i wypalone laserem. Robot posiada lekko amortyzowane zawieszenie Amortyzator jest bardzo prostej budowy- w uchwycie serwomechanizmu wkręcone są dwie teflonowe tulejki które umożliwiają przesuwanie uchwytów po prowadnicach które wykonałem ze śrub M8x90 a na śrubach osadzone są sprężyny o średnicy 8mm które amortyzują przesuwający się uchwyt. Tarcie między tulejami a prowadnicami postarałem się wyeliminować poprzez zastosowanie smaru teflonowego. Możliwa jest regulacja długości rozstawu kół i wysokości zawieszenia. Pokrywa obudowy wykonana jest z przeźroczystej pleksi o grubości 4mm. Pokrywa miała służyć zamontowaniu na niej manipulatora . Aluminiowe błotniki stanowią ochronę razie upadku lub przewrócenia się robota oraz nadają konstrukcji trochę lepszy wygląd. Koła mają średnicę 120 mm i zostały wykonane z 3 sklejonych ze sobą blach aluminiowych o grubości 2mm. Jako oponkę zastosowałem zużyte paski rozrządu przyklejone Poxipolem. Koła zamontowane są do serw za pomocą orczyków. Elektronika Robot posiada kilka płytek modułowych wykonanych metodą termotransferu. Na każdej płytce zastosowałem złącza goldpin co umożliwia szybką zmianę podłączeń , modernizację lub wymianę płytek. Dzięki przeźroczystej pokrywie każda płytka jest dobrze widoczna i łatwo dzięki temu przedstawić komuś budowę robota. Jednym podoba się odsłonięta "kabelkologia" , inni jednak wolą gdy wnętrze robota jest zasłonięte, każdy ma swój gust . Wszystkie płytki rysowałem w programie Eagle. Zasilacz Jako osobną płytkę postanowiłem również wykonać sekcję zasilania. Użyłem dwóch stabilizatorów - do części elektronicznej LM7805 natomiast do zasilania napędów użyłem regulowanego stabilizatora LM338. Chłodzone są radiatorem i małym wentylatorkiem. Płyta główna Jest to płytka na której znajduję się główny mikroprocesor Atmega32 wraz z wyświetlaczem lcd. Na płytce umieszczone są również przyciski służące do zmiany parametrów jazdy, buzzer , złącze programatora oraz 3 diody sygnalizacyjne. Płytka posiada również 2 rzędy złącz goldpin zasilających. Płytki z mostkami H Jako że robot posiada 4 niezależnie napędzane koła użyłem dwóch podwójnych scalonych mostków L298. Zabezpieczyłem je diodami Schottky'ego 3A. W sumie standardowa konfiguracja, na wyjścia silników podłączyłem kondensatory 470uF. Płytka obsługująca enkodery Jako komparator analogowy zastosowałem LM339. Płytka posiada 4 gniazda do obsługi transoptorów. Ogólnie to pomiar za pomocą CNY70 i tarcz nie był zbyt dokładny, obecnie ta funkcja jest nieaktywna ale przynajmniej sporo się nauczyłem i wiem już co zmienić w nowej konstrukcji . Pilot sterowniczy Posiada wyświetlacz LCD 16x2 oraz mikroprocesor Atmega16. Do transmisji radiowej użyłem zestawu HM-R868S i HM-T868S . Transmisja nie jest co prawda zbyt dokładna, nie można nią przesyłać jakichś specjalnie dokładnych i ważnych danych ale do sterowania robotem, przesyłania wartości wypełnienia zestaw nadał się całkiem dobrze. Zasięg na jakim sprawdzałem działanie transmisji to około 120m (na osiedlu, ale między mną a robotem była otwarta przestrzeń). Dane wysyłam przez UART na prędkości 9600 bps. Pilot posiada również termometr , działający na czujniku LM35 podłączonym do przetwornika ADC. Konfigruacja podłączenia przycisków na pilocie jest możliwa dzięki złączom goldpin. Program Program w robocie jak i w pilocie sterowniczym jest napisany w Bascomie. Gdy zaczynałem pracę nad robotem potrafiłem programować tylko w tym języku, jednak zauważyłem wady i zalety tego języka i nastepna konstukcja napewno zaprogramowana będzie w języku C. Film : https://www.youtube.com/watch?v=aPf2Hxaa8Ck Wnioski Podsumowując , wiele rozwiązań wychodziło już podczas samych prac, modernizacji itp. więc nie wszystko pracuje tak jak powinno. Jest to w sumie moja pierwsza poważniejsza konstrukcja i dużo nauczyłem się przy jej budowie. Na obecnym etapie stwierdziłem że dalsze modernizację nie mają sensu i lepiej po prostu zacząć od nowa projektować nową platformę . Tym razem skupię się bardziej na projektowaniu mechaniki pod manipulator, lepszym napędzie, zastosowaniu kamery bezprzewodowej i analizie obrazu mniejszych płytkach i lepszej transmisji z robotem, chciałbym umożliwić sterowanie za pomocą aplikacji na Androidzie. Każda uwaga , krytyka i sugestia będzie mile widziana i przydatna przy projektowaniu następnej konstrukcji . Chciałbym również bardzo podziękować wszystkim którzy pomogli mi przy budowie robota, udostępnili materiały i narzędzia oraz służyli radą i krytyką Pozdrawiam
  19. 6 punktów
    Cześć wszystkim, Chciałbym przedstawić zrealizowany na Politechnice Śląskiej (w ramach trzech równoległych prac magisterskich) projekt grupowy. Jego celem było opracowanie stanowiska laboratoryjnego do badania systemów sterowania wielowirnikowych bezzałogowych obiektów latających. Docelowo systemów sterowania tolerujących uszkodzenia. Podział prac magisterskich: • zaprojektowanie i wykonanie platformy quadrocoptera o możliwości celowego wprowadzania wybranych uszkodzeń (moja część), • opracowanie aplikacji na urządzenie mobilne (tablet) umożliwiającej sterowanie platformą, zadawanie uszkodzeń oraz prowadzenie telemetrii, • wykorzystanie środowiska symulacyjnego (V-REP) do testowania zachowania platformy przy wprowadzanych uszkodzeniach oraz do testowania opracowanych algorytmów sterujących. W skrócie więc: platforma quadrocoptera wyposażona została w układy pozwalające na wprowadzanie trzech uszkodzeń (każde innego typu): uszkodzenie fragmentu śmigła, uszkodzenie sterownika silnika, utrata komunikacji. Wykorzystując tablet jesteśmy w stanie połączyć się z symulatorem quadrocoptera. Możemy sterować, wprowadzać uszkodzenia. Przy użyciu tego samego tabletu (bez konieczności modyfikacji aplikacji) łączymy się do rzeczywistej platformy, gdzie możemy zrobić dokładnie to samo plus dochodzi tutaj również telemetria. Po co wprowadzać uszkodzenia? W celu sprawdzenia jak zachowuje się obiekt pod ich wpływem. W trakcie przeprowadzania eksperymentów dane zapisywane są na zewnętrznym nośniku. Dane te mogą następnie zostać wykorzystane np. w Matlabie. Można na ich podstawie starać się opracować algorytmy, które będą tolerować uszkodzenia. Platforma quadrocoptera Quadrocopter został wykonany z użyciem zarówno gotowych jak i autorskich komponentów. Komponenty oznaczone jako dostępne są to układy, w które wyposażona jest większość platform multiwirnikowych. Wyjątkiem jest tutaj urządzenie mobilne, którego użycie nie byłoby możliwe bez opracowania własnych modułów. Ponieważ głównym celem pracy nie było opracowanie własnego kontrolera lotu, wykorzystano układ DJI Naza-M Lite (2). Do tego zaprojektowane zostały: moduł zasilający (4), moduł nawigacyjny (5) oraz moduł z czujnikami (6). Moduły te zaprojektowane zostały przy wykorzystaniu oprogramowania Altium Designer, a wyprodukowane dzięki uprzejmości gliwickiej firmy KONO, za co im serdecznie dziękuję. Moduł zasilający Jego zadaniem jest zasilanie modułu nawigacyjnego, modułu z czujnikami + 2 dodatkowe wyjścia. Wykorzystano tutaj dwie przetwornice ST1S10 które mogą mieć jedno wspólne, bądź dwa odrębne źródła zasilania. Uwzględnione zostało tutaj zabezpieczenie przed odwrotną polaryzacją zasilania. Istnieje również możliwość rozłączenia mas i zasilania (zworki). Napięcie wejściowe 10 - 20V i wyjściowe 5V. Moduł nawigacyjny Jest to brakujące ogniwo pomiędzy urządzeniem mobilnym a kontrolerem lotu. Wyposażony został w 32-bitowy mikrokontroler STM32F103 o maksymalnej częstotliwości taktowania 72 MHz. Na obwodzie znajduje się układ BTM-222, oraz wyprowadzone złącza UART dla modułu z czujnikami, oraz dodatkowe np. dla minikomputera. Telemetria (obecnie): stan naładowania akumulatora, orientacja platformy w przestrzeni (yaw, pitch, roll). Zapisywane dane na karcie SD: aktualny czas systemowy (uaktualniany przy nawiązywaniu połączenia z tabletem), komendy sterujące (z tabletu), orientacja platformy, stan naładowania akumulatora, stan poszczególnych uszkodzeń. Układ awaryjnego przejmowania kontroli: przy użyciu jednego z kanałów aparatury radiowej mamy możliwość przełączania użytkownika (np. gdy zawiesi się aplikacja tabletu, zerwana zostanie łączność Bluetooth). Funkcja ta została zrealizowana całkowicie w sposób sprzętowy, bez wykorzystania mikrokontrolera. Timelapse projektowania tego ukłądu: Moduł z czujnikami Układ ten wyposażony został w mikrokontroler STM32F407 o maksymalnej częstotliwości taktowania 168 MHz. Zaimplementowany został tutaj system operacyjny czasu rzeczywistego Free RTOS V8.2.1. Określanie orientacji platformy: realizowane na podstawie pracy doktorskiej pana S. O. Madgwicka. Aktualnie pracuje w konfiguracji czujnika IMU, tj. z wykorzystaniem akcelerometru i żyroskopu MPU6050. Na obwodzie znajduje się wyprowadzenie dla modułu GPS i kompasu (do dalszego rozwoju). Włączając do filtru dane z kompasu możliwe jest uzyskanie absolutnej wartości kąta yaw. Moduł jako kontroler lotu: obwód posiada również odpowiednie złącza sygnałów wejściowych i wyjściowych, dzięki czemu istnieje możliwość rozwoju algorytmów stabilizujących. Układ ten może zatem również pełnić rolę autopilota. Dodatkowe układy: zewnętrzna pamięć EEPROM, barometr, złącze dla czujnika ultradźwiękowego, podczerwonego, brzęczyka, diody RGB. Obecnie wykorzystywany jest jedynie ułamek możliwości tego obwodu. Timelapse projektowania tego ukłądu: Aplikacja mobilna Interfejs aplikacji mobilnej posiada trzy główne zakładki: zakładkę sterowania, zakładkę stacji naziemnej oraz zakładkę do zadawania uszkodzeń i telemetrii. Łączy się z modułem nawigacyjnym poprzez łączę Bluetooth. Aplikacja została napisana w języku Java z wykorzystaniem środowiska Eclipse dla systemu operacyjnego Android. Projektowana była na urządzenia o przekątnej ekranu powyżej 5 cali. Minimalną wersją Androida, którą obsługuje aplikacja, jest 4.2. Zakładka sterowania: Jednym z założeń było opracowanie interfejsu sterującego podobnego do aparatury radiowej. Aplikacja wysyła ramki sterujące z częstotliwością 50 Hz, podobnie jak w przypadku aparatury. Dane te zawierają procentowe wypełnienie każdego z czterech kanałów (yaw, throttle, pitch, roll) i w module nawigacyjnym konwertowane są na odpowiednie sygnały PWM. Ramki sterujące wysyłane są z częstotliwością 50 Hz, podobnie jak ma to miejsce w przypadku aparatury radiowej. Problemem występującym w przypadku sterowania z poziomu tabletu jest brak fizycznego czucia drążków sterujących, co powoduje konieczność odwrócenia wzroku od platformy raz na jakiś czas w celu spojrzenia na tablet. Może to być niebezpieczne Zakładka stacji naziemnej: ma na celu wizualizacje wzajemnej odległości pomiędzy quadrocopterem, a pilotem. Zakładka zadawania uszkodzeń: oprócz wizualizacji danych na wykresach, posiada funkcje umożliwiające zadanie uszkodzenia. Aktywowanie jednej z trzech kontrolek spowoduje pojawienie się okna dialogowego na którym można wybrać czas, po którym zostanie zadane i/lub anulowane uszkodzenie. Stanowisko badawcze Jednym z problemów było opracowanie odpowiedniego stanowiska do testowania platformy. Wprowadzanie uszkodzeń w powietrzu mogłoby się udać, ale byłyby to próby jednorazowe Wykorzystano imadło przegubowe, którego szczęki zastąpiono wydrukowanym na drukarce 3D elementem. Jest on przykręcany do dolnej płyty quadrocoptera. Stanowisko to posiada 3 stopnie swobody, umożliwiając obrót pitch i roll w zakresach ok. -40° ÷ 40° oraz nieograniczony obrót yaw. Możliwe jest również wykorzystanie zasilacza laboratoryjnego do prowadzenia testów/eksperymentów. Stanwoisko przedstawione zostało w filmach na końcu. To chyba tyle. Zamieszczony opis, zdjęcia i filmy nie oddają ilości czasu spędzonego przy tym projekcie, ani liczby wykonanych prototypów. Na PCB znalazłem tylko 2 niewielkie błędy, które udało się w prosty sposób naprawić. Wisienką na torcie z mojej perspektywy byłoby opracowanie własnego kontrolera lotu i pozbycie się gotowego - ale to może innym razem Jeżeli kogoś interesują szczegóły wprowadzania uszkodzeń, sterowania, protokołu komunikacyjnego, wyniki badań itp. to dołączam do załączników moją pracę magisterską (schematy na końcu). Autorzy projektu: Łukasz Szustak (symulator), Michał Stobiński (aplikacja mobilna), Grzegorz Wójcik (platforma quadrocoptera). PDM_Grzegorz_Wojcik.pdf
  20. 6 punktów
    Zbudowałem robotyczne auto. Części: - arduino mega2560 - Dwa serwa Standardowe przerobione tgy-s4505b - Dwa serwa mini(jedno skręca,drugie porusza czujnikiem) - Czujnik ultradźwiękowy - GY-271 - cztery koła 60mm - Baterie AAx4 Akumulatorki Samochód ma czujnik tak jak w moim skanerze obracającym się i skanującym otoczenie(tylko jedna warstwa). plany: A tu poukładane element w rzut pionowy: Kompas GY-271(do orientacji kierunku): Zdjęcia przyklejonych wydruków: W trakcie wycinania: Wycięte: Zdjęcia: I jego waga to 462.8g siła odpychająca od podłoża to 32N. Prawdopodobny czas jazdy około godziny. Worklog: https://www.forbot.pl/forum/topics53/robot-na-bazie-samochodu-vt10283.htm Filmiki:
  21. 6 punktów
    Katka to czworonożny robot kroczący z nogami w układzie ssaka. Jest to efekt moich dość wczesnych eksperymentów z budowaniem czworonożnego kroczącego robota o jak najniższej cenie całkowitej. Dzięki zastosowaniu ssaczej konfiguracji nóg możliwe było obliczenie kinematyki odwrotnej dla każdej z nóg pomimo tego, że mają one tylko po dwa serwomechanizmy -- po prostu współrzędne nóg ograniczone są do pionowej, dwuwymiarowej płaszczyzny. Pozwala to jednak na całkiem przyzwoitą kontrolę, a w szczególności, na przemieszczanie środka ciężkości i przesuwanie stóp w liniach prostych po ziemi, dzięki czemu możliwy jest statycznie stabilny chód bez poślizgów. Niestety, są też ograniczenia. Stopy mogą się przesuwać po ziemi jedynie w przód i w tył, zatem niemożliwe jest porządne skręcanie. Owszem, możemy nogami po jednej stronie robota iść szybciej, a po drugiej wolniej albo nawet w przeciwnym kierunku, na zasadzie skręcania czołgu na gąsienicach, ale wiąże się to z dość dużymi poślizgami stóp i w związku z tym sporą nieprzewidywalnością. W sytuacji prawdopodobnie mogłoby pomóc dodatkowe serwo w pasie, pozwalające na skęt tułowia, ale to wymagałoby całkowitej przebudowy robota, więc nie próbowałem tego. Robot jako mózg wykorzystuje Arduino Pro Mini, początkowo umieszczone na domowej roboty płytce z dodanym zasilaniem dla serw, później przełożone na płytkę drukowaną od mojego innego robota. Zasilanie zapewnia pojedyncze ogniwo LiPo z power banku USB, uzupełnione o dużo za duży kondensator elektrolityczny oraz moduł boost zwiększający napięcie do 5V. Elementy wykonawcze to cztery mikroserwa SG90, najtańsze jakie tylko istnieją. Odbiornik podczerwieni pozwala na zmianę trybów działania robota za pomocą pilota TV. Kilka listewek i dźwignie dołączone do serw posłużyły do zbudowania ciała i nóg robota. Elektronika i bateria są przypięte gumką recepturką. Ustawienie nóg nie jest optymalne pod względem ich zasięgu. Tylne nogi musiały zostać obrócone "tyłem naprzód" w stosunku do pierwotnego projektu (oraz w stosunku do tego, jak zazwyczaj wyglądają ssaki), aby uniknąć plątania się z przednimi nogami. Ten układ można jeszcze znacząco poprawić, niestety wymagałoby to przebudowania i przeprogramowania robota, na co nie mam raczej wystarczającej motywacji. Robot ten przez jakiś czas występował "w owczej skórze", wypychając pluszową zabawkę - owcę. Niestety, nie do końca dopasowane wymiary zabawki oraz ślizganie się owiniętych materiałem nóg znacznie pogarszały wydajność chodu, więc zrezygnowałem z tego rozwiązania. Filmik z chodzącym robotem:
  22. 6 punktów
    Witam! Chciałbym przedstawić swoje „dzieło” - robota klasy linefollower. W końcu siadłem i opisałem go. Bocik zwie się Typhoon, pomimo że nie rozwija jakichś zabójczych prędkości, choć na początku wydawało mi się, że jeździ w miarę szybko . Głównym założeniem było to, że robot miał działać i wykonywać swoje zadanie w miarę możliwości bezawaryjnie – udało się to spełnić Innym założeniem było to, aby wystąpić z robotem na zawodach Roboxy 2013. Od pomysłu do pierwszej jazdy minęło trochę ponad 20 dni. Uważam ten czas za błyskawiczny, jak na moje standardy Konstrukcje, które mnie zainspirowały przy tworzeniu to: Tsubame użytkownika Sabre Silver Shaft użytkownika Naelektryzowany Konstrukcja Dość standardowa, składa się z dwóch płytek – płytki głównej i płytki z czujnikami. Obie dwustronne, wykonane metodą termotransferu. Przód robota opiera się na dwóch małych kawałkach drewna przyklejonych do płytki z czujnikami. Robot jest napędzany dwoma silnikami Pololu HP z przekładnią 30:1, które są przymocowane za pomocą mocowań samoróbek, wykonanych z laminatu. Koła zostały wytoczone z ternamidu, oponki zostały wykonane z silikonu formierskiego. Koła z oponami mają średnicę 30mm, a ich szerokość to 18mm Wymiary: Długość - 11cm Szerokość - 10cm Masa z akumulatorem - 140g Masa bez akumulatora - 100g Elektronika Większość elementów jest montowana powierzchniowo. Mózgiem robota jest mikrokontroler ATmega16A, taktowany zewnętrznym kwarcem 16MHz. Posiada 8 czujników linii Ktir0711s oraz 1 czujnik przeszkód Sharp GP2Y0D810Z0F, o zasięgu 10cm. Silniki są sterowane za pomocą mostka H tb6612fng. Do komunikacji z użytkownikiem robot posiada 2 przyciski i 4 diody LED. Posiada również odbiornik podczerwieni TSOP, który dodałem podczas projektowania jako „może się przyda”, jednak nie wykorzystałem go do tej pory. Zasilanie Robot wozi na sobie akumulator Li-Pol Redox 500mAh 7,4V. Starcza on na dość długo. Silniki są zasilane z przetwornicy ST1S10PHR, ustawionej na 6V, zaś część logiczna zasilana jest ze stabilizatora 5V. Program Został napisany w języku C. Jest to prosty algorytm PD. Jeździ w miarę sensownie do wypełnienia PWM 180/255. Zdjęcia: Czujniki Mocowanie silników Całość Filmiki: Omijanie przeszkód. Stary algorytm, trochę wypada na zakrętach. Sukcesy? Typhoon na swoich debiutanckich zawodach – Roboxy 2013 zajął 3 miejsce. Należy tu jednak wspomnieć, że wszystkich robotów było 4 Nie mniej jednak i tak byłem zadowolony, że nie zajął ostatniego miejsca Podsumowując Robot sprawił mi wiele radości z projektowania, składania, programowania. Trochę się przy nim nauczyłem.
  23. 6 punktów
    Witam! Photon Interceptor to mój pierwszy robot z którym pojawiłem się ostatnio na Robotic Arena 2014. Nie jest to demon prędkości a konstrukcja została stworzona z myślą o poszerzeniu wiedzy i umiejętności z zakresu programowania mikro klocków oraz zabawy z różnymi peryferiami. ELEKTRONIKA Projekt składa się z 3 płytek PCB zaprojektowanych w CadSoft EAGLE: Płyta główna - konstrukcja oparta jest na 8 bitowym mikroprocesorze Microchip PIC16F887 taktowanym zegarem o częstotliwości 20MHz. Za starowanie silnikami odpowiadają 2 mostki Texas Instruments L293DNE z połączonymi kanałami - 1 układ na jeden silnik, zasilane ze stabilistora ST L7806CV-DG - 1.5A. Wejścia EN są podłączone do pinów CCP mikroprocesora i sterowane poprzez PWM. Napięcie 5V dla logiki zapewnia stabilizator Texas Instruments LM2940 CT5.0. Z przodu płytki jest złącze dla ultradźwiękowego czujnika odległości HC-SR04, pod spodem zostało wyprowadzonych 8 wejść ADC mikroprocesora. W tylnej części znajduje się ekran LCD Raystar Optronics RC0802A-TIY-CSV 2x8 znaków podłączony do PICa poprzez 4 bitowy interface oraz złącze ICSP do podłączenia PICkita. Na płytce znalazły się również 2 przyciski - jeden został użyty do wykonywania kalibracji czujników przed przejazdem, drugi służy jako przycisk start. Po bokach procesora występują 2 złącza (podłączenie płytki komunikacyjno-wizualnej): na jednym zostało wyprowadzone SPI, EUSART oraz pozostałe 2 wolne piny, na drugim wyprowadzone jest GND i 5V. PCB - grubość 1.6mm, pokrycie HASL bezołowiowy (plated gold), grubość miedzi 35um. Płytka komunikacyjno-wizualna - część wizualna składa się z 8 diod LED RGB podłączonych do 3 rejestrów przesuwnych NXP 74HC595D które komunikują się z procesorem poprzez SPI. W części wizualnej znajdziemy moduł bluetooth Microchip RN4020 podłączony do EUSARTa poprzez konwerter poziomów oparty na tranzystorach BSS138 i zasilany ze stabilizatora 3.3V Microchip MCP1825S-3302E/DB. Dodatkowo w projekcie jest możliwość odbioru sygnałów z pilotów podczerwieni 36kHz poprzez odbiornik Vishay TSOP34836. PCB - grubość 1.2mm, pokrycie ENIG, grubość miedzi 35um. Płytka czujników - mamy tu możliwość podłączenia 13 czujników na 7 liniach - Knightbright KTIS0711S, niestety popełniłem mały błąd tworząc bibliotekę do KTIRa i mam źle umiejscowione pady :/ więc była zabawa z lutowaniem i nie testowałem innego rozmieszczenia czujników niż linia prosta. PCB - grubość 0.8mm, pokrycie HASL, grubość miedzi 35um. MECHANIKA Napęd robota składa się z silników Pololu 50:1 MP podłączonych do kół Solarbotics. W przedniej części znajduje się ballcaster Pololu 1/2". Rama robota została zaprojektowana w AutoCAD 2014 i wydrukowana na drukarce 3d w czarnym PLA. Użyta bateria LiPol to Redox 500mA. OPROGRAMOWANIE Program do mikroprocesora został napisany w języku C w środowisku MPLABX z wykorzystaniem kompilatora XC8. Filmik prezentujący przejazd robota w strefie serwisowej Robotic Arena 2014 - KLIKNIJ Pliki źródłowe, schematy itp udostępnię dopiero po świętach - mam jeszcze trochę kodu do napisania (bluetooth, podczerwień) i muszę poprawić algorytm jazdy LFa gdyż był klepany w nocy przed RA i w trakcie zawodów.
  24. 6 punktów
    To ja będę pierwszy i (żeby nie pisać pochwalę się) zaprezentuję swoją drukarkę 3D. Jest to RepRap Prusa i2. Napęd standardowo w tej konstrukcji to 5 silników krokowych (1xX, 1xY, 2xZ, 1xE). Pole robocze: 170mm x 170mm x 100mm Stół podgrzewany płytą PCB 1R5, stół jest obecnie zasilany z zasilacza przemysłowego 250W, jednak czekam na transformator toroidalny 300VA, bo zasilacz jest bardzo głośny. Obecnie zamontowany hotend UDS4.5 z dyszą o średnicy 0.4mm na filament 1.75mm. Normalnie używałem hotenda na filament 3mm, ale ten się zepsuł, a miałem kiedyś kupiony na 1.75 to go założyłem. Elektronika Teensyduino (chyba dobrze napisałem ) z czytnikiem kart SD, wyświetlaczem 4x20 oraz impulsatorem. Zasilanie elektroniki, napędu i głowicy zrealizowane jest za pomocą zasilacza do Xboxa ~230W. Drukarka wstawiona jest do pudła z płyt meblowych i drzwiczek z pleksy, aby chronić wydruki przed zawirowaniami powietrza, a przede wszystkim przeciągami. Kilka przykładowych wydruków: No i przede wszystkim obudowa Antigi wyszła z tej drukarki Drukuję drobne zlecenia, kilku forumowiczów skorzystało. Chyba byli zadowoleni, reklamacji nikt nie zgłaszał
  25. 6 punktów
    Witam. Chciałbym Wam przedstawić mojego najnowszego robota klasy Line Follower Standard o nazwie "Pionier". Po raz pierwszy robot zaprezentował się na zawodach Robomaticon 2014 w Warszawie. Jest to moja druga konstrukcja tego typu. Konstrukcja mechaniczna Robot składa się z dwóch modułów: płytki z czujnikami oraz modułu głównego. Obie płytki w całości zostały wykonane przeze mnie. Oba moduły zostały połączone dwiema cienkimi listewkami z wytrawionego laminatu o grubości 1.6 mm. Koła jakie używam to standardowe koła Pololu oraz koła Solarbotics. Całość wraz z akumulatorem i kołami waży 137g. Średnia prędkość robota to 1 - 2 m/s w zależności od trasy. Moduł z czujnikami Starałem się by masa modułu była możliwie jak najmniejsza. Płytka została wykonana z laminatu o grubości 1 mm. Wymiary płytki to: 160 mm x 15 mm. W module zastosowałem 19 czujników KTIR ułożonych w łuk. Na płytce zostało umieszczone złącze dla cyfrowego czujnika odległości Sharp 40 cm. Moduł z czujnikami jest połączony z modułem głównym za pomocą złącz ZIF i taśmą FFC. Moduł główny Moduł główny jest podwoziem konstrukcji. Oprócz układów elektronicznych umieściłem na nim silniki napędowe, którymi są dwa silniki Pololu 10:1 HP. Podwozie zostało wykonane z laminatu o grubości 1.6 mm. Wymiary płytki: 130 mm x 60 mm. Elektronika Sercem robota jest mikrokontroler Atmega128. Procesor jest odpowiedzialny za odczyt stanów z czujników, realizację algorytmu i sterowaniem mostkami. Silnikami sterują dwa mostki H TB6612. Kanały w mostku zostały połączone dzięki czemu wzrosła wydajność prądowa mostka. Z innych elementów na płytce znajdują się: złącze programatora, wyprowadzenia do interfejsu USART, odbiornik podczerwieni TSOP2236, 2 przyciski, 4 diody led oraz kwarc 16 MHz. Zostały też wyprowadzane piny na enkodery magnetyczne AS5304, które zamierzam zamontować. Całość zasilana jest z pakietu Li-Pol Redox 3S 11.1V. Pakiet zamocowany jest na rzepy dzięki czemu nie ma problemów z jego wyjęciem, np. do ładowania. Zasilanie z Li-Pola trafia na dwa stabilizatory. Jeden z nich to stabilizator regulowany LM338T o wydajności 5A odpowiedzialny za zasilanie silników, drugi to stabilizator liniowy jednonapięciowy 78S05 odpowiedzialny za zasilanie procesora i reszty podzespołów. Oprogramowanie Program został napisany w języku C. Do podążania za linią używany jest regulator PD. Osiągnięcia - 6 miejsce Robomaticon Warszawa 2014 - kategoria Line Follower Standard (wtedy jeszcze pod starą nazwą) - 2 miejsce ROBO~motion Rzeszów 2014 - kategoria Line Follower Standard - 2 miejsce ROBO~motion Rzeszów 2014 - kategoria Line Follower Enhanced Zdjęcia i filmy Podsumowując jestem zadowolony z konstrukcji. Wiele się przy niej nauczyłem, wyeliminowałem błędy konstrukcyjne i programowe z pierwszego robota. Zachęcam do wyrażania opinii i uwag na temat robota jak i zadawania pytań.
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×