Skocz do zawartości

Tablica liderów


Popularna zawartość

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

  1. 89 punktów
    Prezentuję moją najnowszą konstrukcję. Jest to robot klasy minisumo "Jeżyk". Jest to robot napędzany dwoma mocnymi silnikami firmy Dunkermotoren, poruszający się na gąsienicach i wyposażony w 8 czujników linii, 16 czujników przeciwnika, enkodery, układy do pomiaru poboru prądu i napięcia oraz ciekawy interfejs użytkownika. Robot posiada zwartą, solidną konstrukcję i estetyczny wygląd. PROJEKT: Projekt robota jak większość moich projektów wykonany został przy pomocy dwóch programów: Autodesk Inventor oraz Altium Designer. Nie będę się tu rozpisywał na temat projektu, przedstawię tylko efekty mojej pracy oraz przedstawię kilka pomysłów, które wykorzystałem. Płytki zderzaków oraz płytki boczne robota zostały ukształtowane tak, aby robot nie tracił przyczepności nawet gdy zostanie uniesiony. Płytki boczne dodatkowo ukształtowane są tak, że chronią gąsienice i utrudniają zaklinowanie koła klinem przeciwnika (rysunki poniżej). Na rysunku poniżej widać jak dzięki projektowaniu trójwymiarowemu i przeniesieniu całego projektu z Inventora do Altium Designera (a później z powrotem do Inventora) mogłem bardzo dokładnie rozmieścić elementy. Widać jak blisko są elementy umieszczone silników i przekładni. Czujniki linii zostały rozlokowane po dwa na każdym narożniku robota (strzałki wskazują czujniki na rysunkach poniżej). Dzięki czemu uzyskałem dużą odporność na uszkodzenia mechaniczne czujników, jak jeden zostanie uszkodzony to działa jeszcze drugi. Jeden z czujników został umieszczony pod kątem, dzięki czemu wykrywa on białą linię o kilkanaście milimetrów wcześniej niż czujnik skierowany prostopadle do podłoża. Pozwala to na osiąganie przez robota większych prędkości, ponieważ zwiększa się odległość jaką może wykorzystać robot na wyhamowanie przed krańcem ringu. Robot został wyposażony w 12 czujników Sharp GP2Y0D340K. Rozlokowane zostały ona tak, że każdy kolejny czujnik obrócony jest względem poprzedniego o 30 stopni. Tak duża ilość czujników pozwala zminimalizować martwą strefę, czyli powierzchnię ringu na, której może znajdować się robot przeciwnika niezauważony przez mojego robota. Ponieważ czujniki z przodu i z tyłu robota zostały umieszczone dość wysoko (ok 35mm, w przeciwieństwie do czujników umieszczonych bardzo nisko po bokach między kołami), robot został wyposażony w dodatkowe cztery czujniki przeciwnika zbudowane na bazie układów Sharpa IS471F umieszczonych na płytkach zderzaków nisko z przodu i z tyłu robota. Rozmieszczenie czujników przedstawione jest na rysunkach poniżej. Zderzaki robota zostały zaprojektowane tak, aby można było na nich zamontować kliny w formie blachy jak i w wformie kolców (widok poniżej). Przedstawione poniżej projekty płytek drukowanych mają na celu zaprezentowanie jak dokładnie można odwzorować w projekcie rzeczywisty układ (i przy okazji pochwalenie się efektami mojej pracy ) Płyta główna: Na płycie głównej robota zostało umieszczonych większość elementów: procesor, układ zasilania, mostki H, większość czujników, układ pomiaru prądu i napięcia, akcelerometr, odbiornik IR, klawiatura, złącza do pozostałych modułów (płytek), złącze programowania (tylko 4 styki), diody RGB, złącza do silników i włącznik. Płyta główna mocowana jest do robota za pomocą czterech czernionych śrubek M2. Do płytki przylutowane zostały 4 kabelki silikonowe zakończone konektorami (osłonięte koszulkami termokurczliwymi) do podłączenia silników. Moduł: Płytka modułu mieszczonego nad płytą główną została zaprojektowana tak, aby w jej miejsce można było zaprojektować inny moduł,. Np. Zwiększający możliwości robota lub z wyświetlaczem OLED. Na górnej stronie płytki umieszczone zostało 10 diod RGB oraz zbudowane z pojedynczych czerwonych diod LED 3 wyświetlacze siedmiosegmentowe. Na spodzie płytki umieszczony został moduł Bluetooth BTM-220 wraz z anteną. Płytki boczne: Płytki boczne zostały zaprojektowane tak, że lewa i prawa płytka są identyczne. Zostały na nich umieszczone dwa czujniki linii zamontowane na brzegu płytki i umieszczone pod kątem 45 stopni do podłoża, czujniki optyczne przetwornika obrotowo-impulsowego oraz jeden czujnik przeciwnika. Na płytce tej przewidziane zostały również otwory do zamontowania silników oraz miejsca na wlutowanie nakrętek M2 do których przykręcona zostaje płyta główna oraz klapka akumulatora. Zderzaki: Na płytach zderzaków zostały umieszczone dwa czujniki IS471F wraz z diodami nadawczymi oraz dwa czujniki linii. Dodatkowo na płytce umieszczone zostały pola lutownicze do których przylutowane zostały nakrętki M2, do których z kolei przykręcane są kliny robota. Klapka akumulatora: Efekt po wyeksportowaniu płytek z Altium Designer z powrotem do Inventora: ELEKTRONIKA: Do sterowania robotem wybrałem jeden z najnowocześniejszych mikrokontrolerów ośmiobitowych, mikrokontroler firmy Atmel z serii AVR ATXmega128A1. Wyposażony jest on w 128 kilobajtów pamięci flash, 8 kilobajtów pamięci SRAM oraz 4 kilobajty pamięci EEPROM. Zasilany jest napięciem z zakresu 1,6-3,6 wolta i może pracować z częstotliwością do 32 MHz. W projekcie wykorzystana została wersja mikrokontrolera w stu pinowej obudowie TQFP. Posiada on 78 programowalnych linii wejścia/wyjścia które w całości zostały przeze mnie wykorzystane. Mikrokontroler ten programowany jest poprzez interfejs PDI, który wymaga tylko podłączenia dwóch pinów mikrokontrolera (RESET/PDI_CLOCK oraz PDI_DATA) oraz zasilania (Vcc i GND). Do zasilania robota został wybrany akumulator o napięciu nominalnym 11,1 V, zbudowany z trzech ogniw litowo-polimerowych. Akumulator został umieszczony pomiędzy silnikami robota i mocowany jest przy pomocy przykręcanej klapki wykonanej z laminatu. Współcześnie większość elementów elektronicznych wykorzystywanych w zastosowaniach amatorskich (amatorskim zastosowaniem jest właśnie robot minisumo) zasilanych jest napięciem 3,3 V lub 5 V. W zbudowanym robocie wykorzystywane zostały elementy zasilane zarówno napięciem 3,3 V (m.in. mikrokontroler) jaki i 5 V (m.in. czujniki Sharp). Aby zminimalizować straty mocy podczas obniżania napięcia zasilania w układzie zasilacza zastosowane zostały przetwornice impulsowe. W układzie zasilania pracują dwie przetwornice ST1S10, jedna obniża napięcie do wartości 5V druga zaś do wartości 3,3 V. Przetwornica ST1S10 pracuje z częstotliwością nominalną 900 kHz i ma sprawność do 90%. Do współpracy z przetwornicami wybrane zostały kondensatory tantalowe low ESR (low Equivalent Series Resistance) oraz ceramiczne w obudowach SMD. Z każdą przetwornicą współpracują po dwa kondensatory tantalowe o pojemności 100 μF i ceramiczne o pojemności 22 μF. Napięcie wyjściowe przetwornicy ST1S10 ustalane jest za pomocą dzielnika rezystorowego. Wartości rezystorów (rezystory R68 - R70 widoczne na rysunku poniżej) zostały dobrane według wzorów podanych w nocie katalogowej układu ST1S10. Równolegle do rezystorów R68 i R70 podłączone zostały kondensatory ceramiczne o pojemności 4,7 nF. Kondensatory te są potrzebne gdy do wyjścia przetwornicy podłączona jest pojemność powyżej 100 μF i zabezpieczają układ przed zadziałaniem zabezpieczenia zwarciowego przetwornicy podczas włączania zasilania. Do włączania układu zasilania, a co za tym idzie całego robota wykorzystane zostały wejścia Enable układów, do których podłączony został niewielki przełącznik suwakowy. Poniżej przedstawiony został jeden z dwóch identycznych układów sterowania silnikiem prądu stałego. Jest to schemat przerysowany bez zmian z noty katalogowej układu VNH3SP30. W kodzie źródłowym programu robota (w załączniku) można znaleźć gotową napisaną przeze mnie bibliotekę obsługi dwóch układów VNH3SP30 dla mikrokontrolerów z z serii Xmega. Robot wyposażony został w układy pomiaru napięcia akumulatora oraz pomiaru pobieranego z akumulatora prądu. Pomiar napięcia dokonywany jest przy pomocy wbudowanego w mikrokontroler przetwornika ADC, który mierzy napięcie na wyjściu dzielnika (rysunek poniżej). Do pomiaru prądu wykorzystany został układ ACS715. MECHANIKA: Napęd robota stanowią dwa silniki komutatorowe prądu stałego (G30.2) wraz z przekładniami planetarnymi (PLG30) firmy Dunkermotoren (zdjęcie poniżej). Podstawowe parametry napędu: -waga 140 gram -moment znamionowy 4,05 Ncm -moment trzymający 11,34 Ncm -prąd znamionowy 0,6 A -prąd zwarciowy (rozruchowy) 1,4 A -napięcie znamionowe 12 V -znamionowa prędkość obrotowa (na wyjściu przekładni) 644 obr/min Jako koła wybrałem stosowane w przemyśle do przenoszenia napędu koła zębate 16T2.5 40/2F (zdjęcie poniżej). Koła te musiałem podtoczyć aby dopasować do projektu oraz aby zmniejszyć ich wagę. Gąsienice wykonałem z paska zębatego T2.5 o długości 200mm i szerokości 7mm. Pasek obkleiłem przy pomocy kleju cyjano-akrylowego paskiem gumy modelarskiej o grubości 1mm. Główny szkielet robota stanowią silniki wraz z przekładniami połączone płytkami laminatu (rysunek poniżej). Koła napędowe mocowane są do osi przekładni za pomocą dwóch śrubek umieszczonych w piaście koła. W koło wolne zostały wbite dwa łożyska kulkowe. Koło wraz z łożyskami umieszczone jest na wytoczonej z aluminium osi, która przykręcona została do silnika (mocując jednocześnie płytkę drukowaną) i zabezpieczone pierścieniem segera (rysunek poniżej). PROGRAM: Kod źródłowy programu znajduje się w załączniku. Program napisany został w darmowym środowisku programistycznym ECLIPSE, a do kompilacji programu posłużył darmowy kompilator GCC WinAVR. Kod programu odpowiedzialny za obsługę scalonych mostków H i pośrednio za sterowanie silnikami został napisany w formie biblioteki dołączonej do głównego programu. Dzięki czemu może być wykorzystany w innych projektach wykorzystujących dwa scalone mostki H VNH3SP30. Do obsługi przetworników ADC w które wyposażony jest mikrokontroler ATXmega128A1 (czyli pośrednio do obsługi czujników linii i przetworników obrotowo impulsowych) wykorzystane zostały gotowe biblioteki (www.atmel.com). Obsługa czujników przeciwnika odbywa się poprzez zwykłe odczytywanie stanu portów wejściowych do których podłączone zostały czujniki. Do sterowania diodami wykorzystane zostało sześć sygnałów PWM generowanych przez liczniki wbudowane w mikrokontroler. Ogólna struktura programu jest wspólna dla wszystkich dla wszystkich algorytmów walki i została przedstawiona w formie schematu blokowego na rysunku poniżej. Mikrokontroler po włączeniu i ustabilizowaniu się napięcia zasilającego przechodzi do wykonywania programu. Pierwszą czynnością mikrokontrolera jest ustawienie taktowania. Domyślnie mikrokontroler taktowany jest z wewnętrznego oscylatora 2MHz. Natomiast w programie taktowanie przełączane jest na wewnętrzny kalibrowany oscylator RC o częstotliwości 32MHz. Procedura przełączania źródła taktowania wygląda następująco: 1. włączenie oscylatora 32 MHz, 2. ustawienie dzielnika częstotliwości dla oscylatora 32 MHz, 3. oczekiwanie na ustabilizowanie się oscylatora 32 MHz, 4. zmiana źródła taktowania z oscylatora 2 MHz na oscylator 32 MHz, 5. wyłączenie oscylatora 2 MHz, 6. auto kalibracja wewnętrznego oscylatora RC 32 MHz. Po ustawieniu taktowania konfigurowane są porty oraz peryferia mikrokontrolera, a także układ przerwań. Następnie program oczekuje na wciśnięcie przycisku START. Jeżeli przycisk START zostanie wciśnięty i przytrzymany dłużej niż 1 sekundę program przejdzie do funkcji diagnostycznej, w której odczyty z czujników przeciwnika oraz linii można zaobserwować na diodach LED, a na wyświetlaczach siedmiosegmentowych wyświetlane jest napięcie akumulatora. Jeżeli przycisk START zostanie wciśnięty na czas krótszy niż jedna sekunda program przejdzie do odliczenia pięciu sekund i do wykonywania algorytmu walki. W ramach opracowywania programu dla robota powstały dwa algorytmy walki. Jako pierwszy powstał prosty algorytm decyzyjny realizujący prostą funkcję sterowania nadążnego. Uproszczona struktura algorytmu w formie schematu blokowego przedstawiona została na rysunku poniżej z lewej. Po rozpoczęciu odliczeniu pięciu sekund robot wykonuje krótkie szarpnięcie do przodu i do tyłu aby rozłożyć kliny. Następnie program wchodzi w główną pętle w której realizowana jest strategia walki. W pętli wykonywane są kolejno poszczególne elementy programu. Sprawdzane są wyniki konwersji przetwornika ADC. Jeżeli biała linia została zauważona czyli wynik jednego z pomiarów przetwornika ADC był poniżej założonego progu program przechodzi do funkcji obsługi czujników linii. Funkcja obsługi linii w zależności od tego w którym kierunku jechał robot i którym czujnikiem zauważył białą linię wykonuje kolejno: hamowanie, zmiana kierunku jazdy na przeciwny i skierowanie robota w kierunku środka ringu a następnie wraca do głównej pętli programu. Robot kierowany jest na środek ringu aby znaleźć przeciwnika i jednocześnie aby znaleźć się jak najdalej od krawędzi ringu tym samym utrudniając przeciwnikowi zepchnięcie z dohyo. Przetwornik ADC pracuje w trybie free run czyli kolejno wykonuje pomiary napięcia na wyjściu wszystkich czujników linii. Przetwornik taktowany jest z częstotliwością 250 kHz. Taka częstotliwość taktowania pozwala na wykonywanie pomiarów z częstotliwością 62,5 kHz (4 takty na pomiar) co dla ośmiu czujników linii sprawia, że każdy czujnik sprawdzany jest co 128 μs. Dla robota jadącego z prędkością 1m/s daje to około ośmiu pomiarów każdego czujnika na każdy milimetr przejechany przez robota. Jest to wystarczająca wartość aby robot był w stanie wykryć linię z minimalnym tylko opóźnieniem i wykorzystać to do wyhamowania i zmiany kierunku jazdy. Kolejnym etapem jest odczytanie stanu portów do których dołączone zostały czujniki przeciwnika i w zależności od tego czy przeciwnik został zauważony wykonywana jest odpowiednia reakcja lub program powraca do swobodnej jazdy po ringu. Funkcja wykonująca reakcję robota na zauważenie przeciwnika w zależności od tego który czujnik wystawił na wyjściu stan aktywny wykonuje obrót robota o odpowiedni kąt, tak aby robot ustawił się przodem lub tyłem na wprost przeciwnika. Jeżeli przeciwnik zostanie zauważony środkowym tylnym lub przednim czujnikiem robot z maksymalną prędkością zaczyna jechać (w przód lub w tył) aby uderzyć w przeciwnika.Ostatnią rzeczą wykonywaną w pętli głównej programu jest wyświetlenie na diodach stanu czujników oraz sprawdzenie czy nie wystąpiły zdarzenia mające zatrzymać robota. Robot może zostać zatrzymany na dwa sposoby. Poprzez naciśnięcie przycisku START w trakcie walki lub po odebraniu sekwencji impulsów z pilota sterującego. Jeżeli robot zostanie zatrzymany to program zatrzyma silniki, wejdzie w nieskończoną pętlę i będzie oczekiwać na wyłączenie zasilania. Drugim napisanym algorytmem sterowania robota w trakcie walki jest automat również realizujący funkcję podążania nadążnego Po rozpoczęciu walki robot rozkłada kliny i wchodzi do głównej pętli programu (rysunek poniżej z prawej). W pierwszej kolejności sprawdzane są stany portów do których podłączone są czujniki przeciwnika. Jeżeli przeciwnik zostanie zauważony z przodu lub z tyłu na wprost robota to program zapętla się. Ignorowane są wtedy odczyty czujników linii oraz pozostałych czujników przeciwnika. Ma to na celu zabezpieczenie przed zmyleniem robota gdy ten np. przechyli się na bok podczas przepychania przeciwnika i boczne czujniki zostaną skierowane w kierunku powierzchni dohyo lub gdy robot najedzie na klin przeciwnika i czujniki linii zwrócą wartość odpowiadającą najechaniu na białą linię. Podczas przepychania przeciwnika zmieniana jest prędkość obrotowa silników, ma to na celu zwiększenie przyczepności robota. Działa to w ten sposób, że współczynnik tarcia znacznie zmniejsza się gdy gąsienica zaczyna ślizgać się po ringu, zmniejszenie prędkości ma na celu zmniejszenie lub wyeliminowanie poślizgu i zwiększenie współczynnika tarcia. Uwzględnione zostało to, że robot może zauważyć przeciwnika więcej niż jednym czujnikiem na raz. Gdy robot nie widzi przeciwnika na wprost siebie sprawdzane są czujniki białej linii i wykonywana ewentualna reakcja (taka sama jak w algorytmie prostym). Jeżeli robot zauważy przeciwnika jednym (lub więcej) czujnikiem i nie znajduje się on na wprost robot wykona obrót o odpowiedni kąt tak aby jak najszybciej przeciwnik znalazł się na wprost z przodu lub z tyłu robota. Odczyt napięcia z czujników linii odbywa się w przerwaniu przetwornika ADC. Aby odciążyć program i zmniejszyć czas wykonywania się głównej pętli programu obsługa przycisku zatrzymującego robota oraz odbiornika podczerwieni odbierającego sygnały z pilota zostały umieszczone w procedurze obsługi przerwania. OSIĄGNIĘCIA: I miejsce na zawodach "Robomaticon" w Warszawie II miejsce na "Trójmiejskim Turnieju Robotów" na Politechnice Gdańskiej II miejsce na zawodach "RoboXY" na Politechnice Gdańskiej IV miejsce na zawodach "Robocomp" w Akadami Górniczo Hutniczej w Krakowie Robot brał również udział w Największych zaodach autonomicznych robotów mobilnychj w Europie „RobotChallenge the European championship for self-made, autonomous, and mobile robots”. Na mistrzostwach tych po przejściu dwóch faz eliminacyjnych wszedł do fazy finałowej do której dostało się tylko 16 najlepszych robotów z całej europy. Niestety z powodu awarii akumulatora robot przegrał pierwszą walkę fazy finałowej i odpadł z rozgrywek DODATKI: Robot powstawał z przerwami od 2008 roku. Powstało kilka prototypów. Prezentowany w tym temacie robot jest czwartą wersją Jeżyka. Poniżej dwa zdjęcia z budowy prototypów. Filmik z walkami jeżyka z zawodów RoboXY 2011: W załączniku znajduje się kod źródłowy programu. Jest w nim całkiem sporo komentarzy, więc mam nadzieję, że będzie on zrozumiały. Załączam również wyeksportowany z Inventora projekt w formacie STEP. Jest to okrojony ze szczegółów projekt 3D. Nie załączam projektów robota w Inventorze i w Altiumie ponieważ każdy z nich zajmuje kilkadziesiąt MB. Jeśli ktoś chce to mogę wyciąć z projektu w Altiumie schematy i projekty płytek (bez modeli 3D) i wstawić. robot z klapkami.rar Program.rar
  2. 64 punktów
    Tematyką micromouse interesowałem się od dawna, jednak dopiero w czerwcu tego roku postanowiłem spróbować swoich sił w tej właśnie kategorii. Devil jest moim pierwszym robotem tego typu, konstruując go, chciałem wypróbować parę pomysłów oraz nauczyć się o co tak naprawdę chodzi w micromouse... Konstrukcja i napęd Tutaj liczyła się przede wszystkim masa i wymiary, dlatego zrezygnowałem z obudowy. Rolę konstrukcji nośnej pełni główny obwód PCB na laminacie 1,5mm wykonany w firmie Satland Prototype. Jako napęd wybrałem mikrosilniki Pololu HP z przekładnią 50:1 i podwójną osią. Na osiach silników zamontowano tarczki z trackballa, które wraz z czujnikami optycznymi z myszy kulkowej pełnią rolę enkoderów. Napędy pracują w zamkniętej pętli sprzężenia zwrotnego z rozdzielczością 4800 impulsów/obrót koła. Przy zastosowanych kołach Pololu o średnicy 32mm daje to 0,0209 mm/impuls Trzeci punkt podparcia stanowi ball caster Pololu umieszczony na przodzie. Elektronika Mikrokontroler - wybór padł na 16-bitowy dsPIC33FJ64MC204. Posiada dużą liczbę peryferiów wspierających tego typu aplikacje, między innymi dwa sprzętowe interfejsy do obsługi enkoderów inkrementalnych, 6-kanałowy generator PWM z regulowanym dead-time, szybki przetwornik ADC z 4 układami Sample&Hold, DMA, a dzięki pętli PLL może pracować z częstotliwością 80MHz wykorzystując wewnętrzny oscylator. Przy tym zegarze ma wydajność 40 MIPS. Czujniki - rolę dalmierzy pełnią diody nadawcze sparowane z fototranzystorami pracujące w paśmie podczerwieni (odpowiednio L-53F3C i L-53P3BC). Światło dzienne eliminowane jest poprzez sprzętowy filtr górnoprzepustowy. Mostek H - tutaj nie ma niespodzianki, tak jak w większości konstrukcji tak i tutaj siedzi TB6612 firmy Toshiba Jeden układ spokojnie wystarcza do sterowania dwoma silnikami. Zasilanie - źródłem energii dla robota jest litowo-polimerowy pakiet modelarski 2s 500mAh. Mostek H zasilany jest bezpośrednio z niego, cała reszta elektroniki poprzez przetwornicę opartą na układzie MC34063A. Przewody zasilające pełnią dodatkowo rolę "uszka" koniecznego do awaryjnego wyciągnięcia robota z labiryntu. W załączniku zamieszczam schemat ideowy. Interfejs użytkownika Do komunikacji pomiędzy robotem a użytkownikiem służą 3 przyciski, buzzer oraz graficzny wyświetlacz z telefonu Nokia 3410 o rozdzielczości 96x65 pikseli. Wyświetlane na nim menu pozwala na kalibrację czujników, zmianę nastaw prędkości, wybór trybu działania, a w trakcie mapowania i jazdy po labiryncie rysowany jest rozkład ścianek z zaznaczeniem odwiedzonych komórek oraz planowanej ścieżki przejazdu. Oprogramowanie W związku z ciągłym rozwojem, wersji oprogramowania było kilka. Najistotniejsze zmiany zostały wprowadzone przed zawodami we Wrocławiu, mianowicie udało się "nauczyć" Devila przeszukiwania labiryntu bez postojów co komórkę. Do algorytmu floodfill, odpowiedzialnego za rozwiązywanie labiryntu, został wprowadzony system wag, dzięki czemu robot analizuje ścieżkę nie pod względem długości ale pod względem prędkości przejazdu. Podsumowanie Konstrukcja w pełni spełniła moje oczekiwania i udało mi się dzięki niej osiągnąć więcej niż przypuszczałem Przede wszystkim dała mi pojęcie na co trzeba zwracać uwagę w robotach tego typu, a wyniesioną naukę postaram się przełożyć na jeszcze lepszą konstrukcję nowej myszy Galeria Osiągnięcia I miejsce w kategorii MicroMouse na zawodach Sumo Challenge 2011 w Łodzi I miejsce w kategorii MicroMouse na zawodach Robotic Arena 2011 we Wrocławiu Pozdrawiam, Grabo Devil_sch.pdf
  3. 46 punktów
    Witam, jest to pierwszy mój robot. Wykonałem go wraz z GROM'em (Grupą Robotycznie Opętanych Maniaków) a prace nad nim rozpoczęły się ok. 10 miesięcy temu. Robot wiele razy był modyfikowany, na dzień dzisiejszy wygląda tak. I etap założenie konstrukcyjne: -stworzenie robota klasy MiniSumo, -o jednostce napędowej 4*silnik Pololu, -zasilany pakietem Li-Pol, -rama stalowa, -niski środek ciężkości, -zastosowanie czujników optycznych cyfrowych oraz analogowych, -konstrukcja ma być Lansiarska. II etap dobór teoretyczny podzespołów: -Silniki Pololu HP*4szt. z przełożeniem 50:1 ze względu na odpowiednie: napięcie zasilania = 3-9V, wymiary = 24 x 10 x 12 mm, moment obrotowy = 1,4 kg*cm (0,137 Nm) oraz masę = 10g. -Mostek H L298 ze względu na odpowiednią: liczbę kanałów = 2 oraz szczytowy prąd na kanał = 2A (silniki są sprzężone ze sobą tak, że jeden kanał odpowiada za sterowanie silnikami z jednej strony). -Pakiet LiPol 3E Model 1300mAh 7,4V ze względu na odpowiednią: wydajność prądową = 15C oraz rozsądny stosunek wymiarów pojemności i wagi (69 x 32 x 14,5 mm, 1300mAh, 58,7 g). -Czujniki cyfrowe 2* Sharp 40cm GP2Y0D340K oraz Sharp analogowy czujnik odległości o zasięgu 4-30cm. III etap zamówienie najważniejszych podzespołów i wykonanie ramy: -Zamówienia były realizowane w polskich sklepach z elektroniką, mającą zastosowanie w robotyce. -Stal, z którego została wykonana rama to St37K, ze względu na łatwość w obróbce mechanicznej. -Pług został wykonany ze stali C45, ze względu na dobrą wytrzymałość, -Obudowa oraz felgi zostały wykonane z aluminium PA6, ze względu na łatwość w obróbce mechanicznej. -Konstrukcja ma wymiary 99,5mm szer. 99,5mm dł. i 47mm wys. IV etap wykonanie płytki elektronicznej: -Elementy zastosowane na płytce zostały wykonane w technologii SMD, -Głównym elementem jest procesor z rodziny AVR (to ośmiobitowe mikrokontrolery produkowane przez firmę Atmel.) -Na płytce znajdują się 4*czujniki optyczne KTIR0711S, po jednym w każdym rogu płytki. V etap oprogramowanie układu: -Program został napisany w języku C, w środowisku AVR STUDIO 4. -Do zaprogramowanie mikrokontrolera użyto programator AVR PROG III STK 500v o standardowym interfejsie KANDA. -Za pomocą programu AVR8 Burn-O-Mat ustawiono fusebit’y mikrokontrolera oraz funkcje zegara taktującego. VI etap testy. VII etap poprawki: -Trwa do dnia dzisiejszego. Wprowadzane zmiany mają na celu usprawnienie robota oraz poprawę wyglądu, aby w końcu robot stał się naprawdę LANSIARSKI. Kosztorys w wielkim przybliżeniu: -silniki 200zł -aku 50zł -czujniki 100zł -elektronika 50zł -materiał 50zł -czas setki godzin (bezcenny ) suma= 450zł + praca własna. Osiągnięcia: III miejsce na Trójmiejskim Turnieju Robotów Robo3DVision w Gdańsku, I miejsce Astor Robot Challenge w Sosnowcu, I miejsce ROBOTIC TOURNAMENT 2012 (deathmatch). kilka fotek: CzubuŚ w akcji: https://www.youtube.com/watch?v=lmA0dDbnaxk&feature=player_embeddedhttps://www.youtube.com/watch?v=F5Wag1FwfG0&feature=player_embedded https://www.youtube.com/watch?v=9BDRPZQyC_o&feature=player_embeddedhttps://www.youtube.com/watch?v=RhVnyrBopDc Nocne manewry: Warunki, w jakich powstawał robot i krótki komentarz https://www.youtube.com/watch?v=GKBGS_0rsSc&feature=player_embedded#!https://www.youtube.com/watch?v=IzAEKrbH_Os&context=C37662d1ADOEgsToPDskJdneyJvuh4wWlNUYFwDYbI Robot po za tym, że jest zawodnikiem kategorii MS, ma również inne zadania: -jest projektem na zaliczenie przedmiotu "mobilne układy robotyki" na Politechnice Opolskiej. Zaliczenie polega na stworzenie robota w rzeczywistości i opisanie go. Ocena jest uzależniona od czau przejazdu, przez labirynt. CzubuŚ oczywiście zaliczył przejazd na 5. -robot jest omawiany na zajęciach dydaktycznych jakie GROM prowadzi dla szkół i placówek oraz na zajęciach edukacyjno-promocyjnych na Politechnice Opolskiej (filmik wkrótce), -jest częścią pracy dyplomowej, której zadaniem jest stworzenie dwóch drużyn robotów, grających w piłkę. Roboty komunikują się z sobą oraz jednostką sterującą za pomocą UART'u. CzubuŚ ma wyprowadzenia na taki układ, będzie on podłączany jedynie do gry (filmik wkrótce). Artykuły: http://www.nto.pl/apps/pbcs.dll/article?AID=/20110606/AKADEMICKA01/339321214 http://opole.gazeta.pl/opole/1,35114,9701862,Robot_studentow_PO_trzeci_w_kraju.html http://www.astor.com.pl/centrum-prasowe/informacje-prasowe/2338-sukces-astor-robot-challenge-2011.html http://www.nto.pl/apps/pbcs.dll/article?AID=/20110531/AKADEMICKA01/856663250 PS. mało cosik ostatnie czasy MS się opisuje.
  4. 42 punktów
    Cześć, mam przyjemność przedstawić Wam moją najnowszą konstrukcję - robota klasy Femtosumo. Maleństwo nazywa się Felek. Zgodnie z wymogami klasy Femtosumo robot mieści się w sześcianie o krawędzi 10mm. Jego masa to 1,9g. Felek jest całkowicie autonomiczny. Posiada wszystkie niezbędne elementy jakie powinien mieć robot sumo. Konstrukcja robota nie jest bardzo skomplikowana. Przód robota. Od dołu widzimy czujnik linii GP2S60 Sharp'a, silnik przedni, koło lewe, dalmierz SFH7773 firmy OSRAM, żółty kondensator tantalowy, płytkę PCB. Na PCB od lewej taka wystająca miedziana blaszka to reset (tymczasowy), gniazdo programatora. Lewa strona robota. Na dole widzimy lewe koło i tył tylnego silnika, trochę wyżej pomiędzy nimi kondensator 100nF. Nieco głębiej widać mikrokontroler ATMEGA8 w obudowie TQFP32. uC jest odwrócony do góry nóżkami. Na nim znajduje się kilka elementów biernych i akumulator li-pol 8mAh 3V7 (takie duże, srebrne). Na samej górze płytka PCB. Robot widziany od tyłu. Widoczny jest tylny silnik, prawe koło, mikrokontroler i akumulator. Bardziej spostrzegawczy forumowicze pewnie zauważyli, iż wyprowadzenia uC są zlutowane parami, a do nich podłączony jest silnik. Otóż ATMEGA8 pracuje również jako sterownik silników. Cztery pary wyprowadzeń tworzą dwa mostki-H dla silników. PWM realizowany jest programowo. Prawa strona Felka. Z ciekawych rzeczy widzimy dwa miedziane przewody po lewej stronie biegnące od mikrokontrolera w górę na PCB. To linie z zewnętrznego kwarcu 16MHz, który znajduje się na górze konstrukcji. Rozwiązanie mało profesjonalne, ale zdaje egzamin. Widok od spodu. Widzimy tylny silnik i prawe koło, przedni silnik z lewym kołem oraz czujnik linii. Takie rozmieszczenie silników to jedyny sposób, aby zmieścić dwa tak duże napędy. Silniki pochodzą z wibracji nieznanych mi telefonów komórkowych. Koła odlane są z poliuretanu. Felgi wykonałem z kawałka czarnego plastiku pochodzącego z listwy goldpinów. Robot posiada tymczasowo jeden czujnik linii, ponieważ miałem tylko jeden sprawny. Felek widziany z góry. Na dole widoczne są wyprowadzenia akumulatora, nad nimi odwrócony do góry padami kwarc. W lewym górnym rogu zdjęcia widzimy gniazdo USB. Po prawej reset i dwa konektory służące do włączenia zasilania. Aby uruchomić robota należy przez nie przełożyć drutek. Konektorki wyjęte zostały z wnętrza pinu podstawki precyzyjnej dla układów w obudowach DIP. Oprogramowanie dla Felka zostało napisane w języku C. Nie ma w nim nic odkrywczego. Programowanie odbywa się z wykorzystaniem bootloadera USBasp ze strony: bootloader Rozwiązanie to nie jest najlepsze, ale podczas konstruowania robota nie miałem możliwości wykorzystać interfejsu UART. Na przyszłość polecam programowanie za pomocą UART. Felek wraz ze starszymi braćmi. Robot wymaga wymiany tylnego silnika, ponieważ czasem odmawia on posłuszeństwa. Podczas montażu musiał się przegrzać. Po wymianie silnika wrzucę filmik pokazujący jak Felek radzi sobie na ringu. Zbudowałem robocika w ciągu jednego weekendu. Elementy zakupiłem przez Internet. Są dostępne od ręki. Małe silniczki wibracyjne można czasem dostać na serwisach aukcyjnych. Więcej informacji gdzie kupić elementy można uzyskać na stronie . Zachęcam wszystkich do zbudowania robota klasy Femtosumo. Felek ucieszy się z przeciwnika w swojej klasie.
  5. 39 punktów
    Akumulator litowo-polimerowy (potocznie li-po, li-pol, li-poly) to chyba najczęstszy wybór robotyków i modelarzy, szukających wydajnego zasilania do swoich konstrukcji. Posiada on wiele zalet, które czynią go niezastąpionym elementem wielu konstrukcji. Jeżeli szukasz odpowiedniego źródła zasilania do swojego robota, a nie jesteś jeszcze zdecydowany, lub gdy szukasz informacji, jak bezpiecznie korzystać z akumulatorów tego typu, to ten artykuł jest dla ciebie! [blog]https://forbot.pl/blog/akumulatory-litowo-polimerowe-li-po-kompendium-id291[/blog]
  6. 39 punktów
    Przedstawiamy robota klasy Line Follower o nazwie Impact. Jest to ulepszona wersja poprzedniej konstrukcji opisanej na największym forum polskiej robotyki amatorskiej . Robot powstał w 2011 roku, do tej pory był zwycięzcą wszystkich zawodów, w jakich brał udział. Największym sukcesem jest niewątpliwie pierwsze miejsce w międzynarodowym turnieju robotów w Wiedniu, nazywanych przez wielu nieoficjalnymi mistrzostwami Europy. Robot składa się z dwóch modułów: płytki głównej oraz płytki z czujnikami, połączonych ze sobą za pomocą lekkich listew węglowych. Masa całości z akumulatorem to 105 g. Moduł z czujnikami Jest to element najdalej wysunięty od środka obrotu. Moment bezwładności jest stosunkowo duży (masa pomnożona przez kwadrat odległości od środka obrotu), dlatego też aby móc wysunąć daleko czujniki, masa płytki powinna być możliwie najmniejsza. W poprzedniej wersji zastosowaliśmy 19 czujników, z czego 16 ułożonych w łuk, 4 wysunięte odpowiednio do przodu oraz do tyłu. Na płytce znajdowały się także komparatory i potencjometr do ustawiania wartości progowej (Rys. 1). Rys. 1 Układ czujników w poprzedniej konstrukcji. W nowym module zastosowaliśmy 14 sensorów, umieszczonych w większych odległościach od siebie. Dzięki temu rozpiętość skrajnych czujników pozostała bez zmian. Zlikwidowane zostały czujniki wysunięte do przodu. Okazało się, że przy dużych prędkościach, biorąc pod uwagę bezwładność napędu, robot nie był w stanie efektywnie zareagować na sygnał z nich pochodzący. Dzięki zmniejszeniu liczby czujników, pojawiła się możliwość skorzystania z wbudowanego w mikrokontroler przetwornika analogowo-cyfrowego (16 multipleksowanych wejść), pozwoliło to zrezygnować z komparatorów. Bez tych dodatkowych układów, rozmiary płytki uległy zmniejszeniu. Zmieniliśmy także grubość laminatu 1,5mm na 0,8mm. Zabiegi te doprowadziły do dwukrotnego obniżenia masy płytki z 8 do 4g. Wygląd modułu przedstawiony na rysunku 2. Rys.2 Widok płytki z czujnikami w aktualnej, nowej wersji robota. Do wykrywania linii użyte zostały transoptory odbiciowe KTIR0711S . Podłączone w grupach: szeregowo po 3 czujniki z rezystorem. Na płytce zostały umieszczone pady dla cyfrowego czujnika odległości Sharp 40cm. Moduł główny Płytka jest zarówno obwodem drukowanym jak i podwoziem konstrukcji. Oprócz układów elektronicznych umieściliśmy na niej silniki napędowe oraz napęd tunelowy. Udało się znacznie zmniejszyć moduł w stosunku do poprzedniej wersją. Wymiary wynoszą: 140 mm x 60mm. Elektronika Sercem robota jest mikrokontroler z rodzimy STM32. Silnikami sterują mostki H TB6612. Tor zasilania składa się z przetwornicy impulsowej 5V oraz stabilizatora liniowego 3,3V. Mikrokontroler - 32-bitowy STM32F103RBT6 z rdzeniem firmy ARM Cortex-M3 posiadający miedzy innymi: 128kB Flash, 20kB RAM, USB, CAN, UART, I2C,SPI, ADC, DAC w obudowie LQFP64, spełnia następujące zadania: odczyt stanów portów wejściowych, przetwarzanie sygnału analogowego na postać cyfrową, generowanie sygnału PWM, sterowanie mostkami H – generowanie odpowiednich sygnałów, realizacja algorytmu sterownia, komunikacja z modułem LCD, sterowanie diodami LED. Sterowniki silników - dwa dwukanałowe mostki H Toshiba TB6612, umożliwiające: kontrolę prędkości obrotowej za pomocą sygnału PWM, zmianę kierunku obrotów silnika przy pomocy zmiany stanów dwóch wyprowadzeń, szybkie hamowanie. Aby zabezpieczyć się przed uszkodzeniem układu przy poborze maksymalnego prądu przez silniki (1600mA) kanały A i B mostków zostały połączone (wydajność prądowa wzrosła do 2A). Mostki zostały podłączone w sposób pokazany na rysunku 3. Rys. 3 Schemat podłączenia sterownika silników. Kontrola zdalna Ze względu na osiągane wysokie prędkości podczas przejazdu utrudnieniem staje się zatrzymywanie robota w sposób ręczny. Uruchamianie i zatrzymywanie odbywa się w sposób bezprzewodowy, z wykorzystaniem podczerwień. Zastosowany układ ATtiny13 odpowiedzialny jest za dekodowanie sygnału z pilota, który nadaje sygnał w standardzie RC5. Rozwiązanie opracowane przez firmę Philips zwiększa odporność na zakłócenia z otoczenia oraz stwarza możliwość użycia uniwersalnych i ogólnodostępnych pilotów. Kolejnym atutem jest łatwość wykorzystania dodatkowych przycisków znajdujących się na pilocie. Dodatkowy procesor został użyty ze względu na wysokie wymagania co do niezawodności działania zdalnego zatrzymywania, np. w sytuacjach awaryjnych. Napęd Napęd stanowią dwa silniki Pololu HP z przekładnią 10:1 o następujących parametrach technicznych: Obroty na biegu jałowym przy zasilaniu 6V: 3000 obr./min, Prąd biegu jałowego (6V): 120mA, Prąd szczytowy: 1600mA, Moment obrotowy: 0,3 kg*cm (29 mNm), Wymiary: 24 x 10 x 12 mm, Masa: 10g. Koła składają się z felg wytoczonych z tworzywa sztucznego poliamid oraz specjalnie dobranych opon. Felga jest ciasno pasowana na wał silnika oraz zabezpieczona klejem cyjanoakrylowym (Rys. 4) Rys. 4 Koła wytoczone z poliamidu wraz z oponami Mini-Z. Przetestowane zostały rożne rodzaje ogumienia. Najlepszym wyborem okazały się opony stosowane w modelach samochodów Mini-Z. Są to opony o szerokości 12mm i grubości 3 mm. Kolejnym parametrem jest twardość, która wynosi 20° (w skali 10°-60°). Opony o mniejszej twardości charakteryzują się większą przyczepnością, jednak szybciej się zużywają. Średnica felgi z oponą to 27mm. Bardzo ważną kwestią jest również czystość opon. Przed każdym przejazdem są one czyszczone w celu usunięcia drobinek kurzu, które powodują utraty przyczepności i mają negatywny wpływ na osiągi. Teoretyczna maksymalna prędkość liniowa robota w granicy 3m/s. W zależności od trasy, uzyskiwane średnie prędkości wynoszą 2,3-2,5 m/s. Napęd tunelowy Ważnym elementem jest napęd tunelowy EDF. Jest to turbina, taka jaką stosuje się w modelach latających, jednak zamontowana odwrotnie. Element ma za zadanie wytworzyć dodatkową siłę docisku, która pomaga robotowi utrzymać się na trasie w zakrętach przy dużych prędkościach (powyżej 2m/s). Turbina wyposażona jest w silnik bezszczotkowy ( 11000 obr./min. pobór prądu około 4A), którym steruje kontroler firmy Dualsky. Rys. 5 Napęd tunelowy EDF27 z sterownikiem silnika. Zasilanie Do zasilania robota użyty został pakiet Litowo-Polimerowy Dualsky 220mAh 25C 7,4V (Rys. 6). Prąd ciągły jaki jest w stanie zapewnić pakiet to 5,5A, natomiast szczytowy to 11A co w zupełności wystarcza do poprawnego zasilania. Akumulator pozwala na ok. 30 sekund optymalnej jazdy, po tym czasie napięcie zasilania spada co negatywnie wpływa na dynamikę i prędkość maksymalną robota. W trakcie zawodów wymiana akumulatorów następuje z reguły co 2 przejazdy co pozwala na wykorzystanie pełnej mocy silników. Duży wpływ na zastosowanie tak małego pakietu miała masa, która wynosi ok. 16 gram. Rys. 6 Zastosowany akumulator Dualsky 220mAh . Bezpośrednio z akumulatora zasilane są silniki oraz napęd tunelowy. Elementy elektroniczne wymagające napięcia 5V zasilane są napięciem stabilizowanym przy pomocy regulowanej przetwornicy ST1S10PHR o wydajności prądowej do 3A. Zasilanie procesora czyli 3,3V pochodzi z liniowego układu LDO (low-dropout) LF33CT, którego napięciem wejściowym jest pochodzące z przetwornicy 5V. Schemat zasilania przedstawiony na rysunku 7. Rys. 7 Schemat blokowy toru zasilania. Interfejs użytkownika Ustawianie regulatora wymaga częstych zmian parametrów takich jak: maksymalna prędkość obrotowa silników napędzających, prędkości wirnika turbiny czy wzmocnień regulatora PID. Podłączanie robota do komputera po każdym przejeździe, szczególnie na zawodach gdzie stanowiska serwisowe znajdują się w pewnych odległościach od trasy było bardzo uciążliwe. Powstał moduł z wyświetlaczem LCD do podglądu ustawień oraz przyciskami do ich regulacji. Jak wspomniano wcześniej masa jest parametrem kluczowym dlatego układ jest osobnym modułem, łączącym się z robotem za pomocą interfejsu UART. Głównymi funkcjami modułu są: wybór nastaw regulatora, wybór prędkości maksymalnej, wybór prędkości obrotowej wirnika turbiny napędu tunelowego, sprawdzenie poprawności działania czujników, podgląd danych wyjściowych regulatora PID, ustawienie wartości napięcia progowego dla czujników odbiciowych. Rys 8. Moduł z wyświetlaczem LCD. Oprogramowanie Oprogramowanie zostało napisane w języku C przy użyciu bibliotek udostępnionych przez firmę STM: STM32F10x_StdPeriph_Lib_V3.5.0 . Algorytm sterowania to PID z pewnymi modyfikacjami. Dotychczasowe osiągnięcia: 1. miejsce T-BOT – Wałbrzych - 2012 1. miejsce Robomaticon – Warszawa - 2012 1. miejce Robot Challenge – Wiedeń - 2012 1. miejsce Trójmiejski Turniej Robotów - Gdańsk - 2012 1. miejsce CybAirBot - Poznań - 2012 Zdjęcia Filmy Autorzy: Bartosz Derkacz Szymon Mońka KNIM - Politechnika Wrocławska
  7. 38 punktów
    Feniks3, to mój trzeci z kolei linefollower, opisy dwóch poprzednich można znaleźć również na forum (linki znajdują się w podpisie). Konstrukcja ta powstawała kilka tygodni, ostateczne złożenie całości zajęło mi tydzień. Robot miał wystąpić po raz pierwszy na zawodach z Łodzi, ale niestety nie mogłem się na nich pojawić. Konstrukcja z założenia miała być lekka i w miarę możliwości szybka. Pierwszy raz użyłem turbiny, więc był to swego rodzaju eksperyment. Elektronika Elektronika składa się z dwóch płytek - główna z elektroniką sterującą oraz mniejsza z czujnikami. Główny procesor to Atmegas128, do którego przez komparatory podłączone jest 20 czujników KTIR ułożonych w półokręgu. Całość zasilana jest z pakietu Li-po 2S przez przetwornicę, która tym razem sprawdziła się znakomicie. Nad bezpieczeństwem akumulatora czuwa dzielnik napięcia oraz jeden z kanałów ADC. Silnikami Pololu HP steruje jeden mostek TB6612 zamontowany razem z całym modułem z Pololu. Sterowaniem turbiny 27mm zajmuje się regulator zakupiony w HK, dzięki temu kontrola nad EDF'em stała się bardzo prosta. Płytki wykonane oczywiście w Satland Prototype W robocie znajduje się również małą płytka z Atmegą8, która odpowiada za obsługę RC5, dzięki któremu można startować i bezpiecznie zatrzymywać robota pilotem. Pojawiła się ona dopiero później (dorobiłem ją na kilka dni przed zawodami) dlatego wygląda jak wygląda Mechanika Konstrukcja mechaniczna składa się z dwóch płytek z elektroniką, oraz mostka z cienkiego laminatu, który je łączy. Napędem robota są dwa silniki Pololu HP z przekładniami 10:1 oraz standardowe koła 32mm. Cała konstrukcja waży około 140g razem z akumulatorem. W konstrukcji tej zrezygnowałem z ballcasterów - głównie z powodu wagi. Była to dobra decyzja, nie odczułem żadnych problemów z czujnikami z tego powodu. Program Program napisany został w C, był to mój pierwszy większy program na uC stworzony w tym języku i teraz śmiało mogę powiedzieć, że nie było to takie straszne jak się wydawało. Robotem steruje regulator PD. Człon całkujący był zaimplementowany jednak nie miałem czasu, aby go przetestować. Tak na prawdę robot ruszył w pełni swoich sił dosłownie w noc przed zawodami dzięki pomocy udzielonej przez Bartka i Szymona z BotlanTeam'u Podsumowanie Budując konstrukcję wzorowałem się głównie na robotach GreenNight oraz jego następcach W planach mam już kolejną wersję konstrukcji - mam nadzieje, że będzie jeszcze szybsza. Robot zajął drugie miejsce na zawodach Robotic Arena 2011. FIlmy Testy: Jazda testowa: https://www.youtube.com/watch?v=wY2SOvzZ748 Zawody: https://www.youtube.com/watch?v=pfQAMkp_rls https://www.youtube.com/watch?v=AdCOYfMPBYQ Ogólnie cała konstrukcja jest dość prosta, dlatego czekam na ewentualne pytania, ponieważ nie wiem co jeszcze może Was interesować. Schematów i PCB nie podaję, ponieważ nie są zrobione poprawnie, mówiąc wprost - są brzydkie Zachęcam do opisywania swoich robotów, nagrody czekają
  8. 34 punktów
    Przedstawiamy naszego Line Followera o nazwie Impact. Projekt robota powstał w tegoroczne wakacje, a pierwszy start miał miejsce na zawodach Sumo Challenge 2011 w Łodzi. A teraz kilka słów o samej konstrukcji. Elektronika Robotem steruje mikrokontroler firmy Atmel z rodziny AVR ATmega128A . Rolę sterowników silników, podobnie jak w naszych poprzednich konstrukcjach pełnią dwukanałowe mostki H TB6612 . Po jednym mostku na jeden silnik (kanały zostały połączone w celu uzyskania większej wydajności prądowej). Silnikiem bezszczotkowym znajdującym się w napędzie tunelowym steruje gotowy moduł zakupiony w sklepie HK. Regulatorem napięcia jest układ przetwornicy step-down (ST1S10PHR) . Stabilizatory impulsowe charakteryzują się wyższą sprawnością niż ich liniowe odpowiedniki. Do wykrywania linii użyte zostały czujniki KTIR0711S (15 czujników ułożonym po okręgu oraz dwa wysunięte do przodu i dwa do tyłu po bokach). Analogowy sygnał z sensorów zamieniany jest na cyfrowy przy użyciu komparatorów LM339 następnie podawany na piny mikrokontrolera. Na płytce z czujnikami umieszczony został także czujnik odległości. Do komunikacji z modułem LCD oraz komputerem został wyprowadzony interfejs UART, który jest również złączem do programowania mikrokontrolera. Pozwoliło to zaoszczędzić miejsce na płytce oraz ilość wyprowadzeń mikrokontrolera. Drugi mikrokontroler wraz z odbiornikiem podczerwieni, służące do dekodowania sygnału z pilota (RC5) znajdują się na płytce, która tworzy most łączący czujniki z płyta główna. Zostało na niej także przewidziane miejsce na żyroskop. PCB wykonane w firmie Satland Prototype. Mechanika Konstrukcja oparta jest na laminacie, dodatkowo do łączenia czujników z płytką główną wykorzystane zostały listwy węglowe. Robot napędzany jest przez dwa silniki Pololu HP 10:1. W celu uzyskania dodatkowego docisku zastosowana została turbina z silnikiem bezszczotykowym - EDF27. Koła składają się z felg wytoczonych z poliamidu oraz opon Mini-Z. Płytka z czujnikami podparta została przez dwa Ball Castery 3/8". Konstrukcja wraz z baterią waży ok. 140g. Zasilanie i soft Całość zasilana jest z pakietu Li-Pol 2S 7,4V, jego poziom kontrolowany jest przez ADC oraz wyświetlany na LCD. Program został napisany w języku C. Do sterownia wykorzystywany jest algorytm PD. Regulator silnika bezszczotkowego obsługuje się w sposób bardzo podobny do obsługi serw modelarskich (f=50Hz, regulacja obrotów w zakresie 1-2 ms). Wszystkie ważne parametry są wyświetlane oraz ustawiane (zapisywane w pamięci EEPROM) przy pomocy modułu wyświetlacza LCD wyposażonego w 4 przyciski. Osiągnięcia 3. miejsce - Sumo Challenge 2011 Łódź - Line Follower 2. czas - Sumo Challenge 2011 Łódź - Line Follower z przeszkodami (poza konkurencją) 2. miejsce - ASTOR Robot Challenge - Line Follower 3. miejsce – Robotic Arena 2011 – Line Follower Zdjęcia Kilka zdjęć wykonanych z pomocą mikroskopu: Filmy https://www.youtube.com/watch?v=wydRW_vmjWUhttps://www.youtube.com/watch?v=RDJmhSkCdxc
  9. 32 punktów
    Robot jak większość najszybszych LF'ów jest wyposażony w turbinę (GWS 64). Pozwala osiągnąć ona wysokie prędkości. Projekt powstawał 3 miesiące. Elektronika jest zaprojektowana tak aby robot nie miał problemów z zbyt wolnym procesorem. Elektronika Najbardziej skomplikowaną częścią robota jest zasilanie. Dla elektroniki zasilanie jest połączone kaskadowo - przetwornica LM2676 -> LF50 -> LF33. Do procesora jest oddzielny stabilizator LP2985 - 3.3v. Robot jest oparty o procesor STM32F103RB (Cortex M3). Taktowany zegarem 72MHz. Z uruchomieniem procesora ani programu nie miałem żadnego problemu. Do sterowania silnikami służą 2 mostki TB6612. Czujniki odczytywane są przez bardzo szybkie komparatory MCP6564. Do startowania i zatrzymywania robota służy oddzielny procesor attiny13 który odbiera i dekoduje sygnał z TSOP34836. Na ramieniu z czujnikami jest złącze do modułu z dalmierzem Sharp 340k. Turbina sterowana jest sygnałem pwm poprzez mosfet IRFR2405. Do kontroli napięcia na pakiecie służy komparator LM358. Jako ,że turbina jest okropnie prądożerna (~10A) robot zasilany jest z pakietu Turnigy nano-tech 460mAh. Czujniki W robocie jest 19 czujników KTIR0711s. Listwa jest bardzo szeroka dzięki niej robot jest w stanie wyłapać najostrzejsze zakręty. Czujniki ułożone są w linię. Według mojego doświadczenia jest to niezawodne ułożenie czujników. Napęd Jako napęd służą 2 silniki Pololu 30:1 HP. Z standardowymi kołami 32mm. W najbliższym czasie prawdopodobnie koła się zmienią. Program Do programowania procesora używam środowiska KEIL. Program to samo P ale sprawdza się dosyć dobrze. Program do Tinny13 napisany jest w bascomie. Schemat Płytka Płytka została zamówiona w firmie Satland Prototype. Zdjęcia Film Osiągnięcia II miejsce w kategorii Line Follower na zawodach Sumo Challenge 2011 III miejsce w kategorii Line Follower z przeszkodami na zawodach Sumo Challenge 2011 IV miejsce W kategorii Line Follower na zawodach Robotic Arena
  10. 31 punktów
    Witam. Po pierwszej konstrukcji jaką był linefollower postanowiłem zrobić coś ambitniejszego. Wybór padł na robota typu micromouse. Praktycznie wszystkie części zostały zasponsorowane prze moją szkołę. Elektronika Robotem steruje mikrokontroler z rodziny stm32f103 taktowany kwarcem 8Mhz i z włączoną wewnętrzną pętlą PLL, która mnoży zegar x9, taktując ostatecznie procesor 72MHz. Jako mostki do silników zostały użyte 2x tb6612, po jednym na silnik. Jako czujniki początkowo używane były sharpy 5 i 10 cm a od niedawna są to analogowe dalmierze zbudowane z diody ir i fototranzystora. Do zasilania używam akumulatora modelarskiego typy li-pol 2 celowego o pojemności 500mAh. Silniki są zasilane bezpośrednio z akumulatora przez diodę zapobiegająca uszkodzeniu mostków na skutek błędnego podłączenia akumulatora. Elektronika również jest zasilana przez połączone kaskadowo stabilizatory 5V i 3.3V które też są zabezpieczone osobną diodą. Mechanika Podstawą jest płytka drukowana wykonana z laminatu 1.5mm wykonana w firmie Satland Prototype . Silniki to Pololu HP 30:1 z przedłużona osią. Jako enkodery początkowo służyły wydrukowane tarcze 5 czarnych pół i po dwa czujniki TCRT1000 dając 20 impulsów na obrót wału silnika. Obecnie są to enkodery wymontowane z myszki kulkowej. Oprogramowanie Cały program został napisany w języku C w środowisku Atollic TrueSTUDIO. Mysz posiada algorytm mapowania oraz rozwiązywania labiryntu, jednak wykonywanie korekcji wobec ścian nie jest tak skuteczne aby przejechanie dużego labiryntu obyło się bez dotknięcia ściany. Obsługa enkoderów jest wykonana sprzętowo przy użyciu jednego timera na każdy enkoder w specjalnym trybie przeznaczonym do obsługi enkoderów kwadraturowych. Filmy i zdjęcia wersji z sharpami i enkoderami wydrukowanymi na papierze - stan na Robotic Arena 2011 https://www.youtube.com/watch?v=kMqzrvSACqc Aktualny stan - dalmierze i enkodery z myszki - Robotic Tournament 2012 https://www.youtube.com/watch?v=Kcb8uWGm-as Podziękowania dla użytkownika Matmaniak za filmik z zawodów Istrobot 2012: https://www.youtube.com/watch?v=FSQFybaACO0https://www.youtube.com/watch?v=qSlVX2fVSts Płynne skręty, nowy labirynt i parę innych rzeczy. https://www.youtube.com/watch?v=rufoc3rPTvI Udział w zawodach: Robotic Arena 2011 - 4. miejsce. Robotic Tournament 2012 - 4. miejsce. Istrobot 2012 - 1. miejsce. Roboxy 2012 - 2. miejsce. Pozdrawiam
  11. 29 punktów
    Korzystając z wolnej chwili, nadszedł czas na opisanie robota Thunderstorm na łamach portalu Forbot. Konstruktorami tego robota jestem ja oraz mój kolega Adam Fleszar. Na początku marca robot ten będzie obchodził swoje pierwsze urodziny. Zapraszamy do zapoznania się z jego opisem. Mechanika Konstrukcja robota Thunderstorm opiera się na korpusie wydrukowanym w technologii 3D z tworzywa ABS. Projekt tego elementu powstał w programie Autodesk Inventor 2012, kształt tej części jest zaprojektowany zgodnie z naszą intuicją i nie był optymalizowany pod żadnym kątem. Do korpusu przykręcony jest biały przód wykonany w tej samej technologii, do którego przymocowana jest płytka z 19-nastoma czujnikami rozmieszczonymi po łuku. Płytki PCB przymocowane są do wydrukowanych na korpusie kominków. Jako napęd zastosowaliśmy modelarskie silniki DC. Koła zębate użyte w przekładni pochodzą z serw TowerPro. Mocowania przekładni w postaci płaskowników aluminiowych zostały wykonane na mojej obrabiarce CNC. Oś koła stanowi pręt o średnicy 3mm wymontowany z napędów CD/DVD, nagwintowany na jednym z końców gdzie osadzona jest zębatka napędzająca koło. Na osi znajduję się również tarcza enkodera wymontowana z myszki kulkowej. Koła zastosowane w robocie pochodzą z modeli RC. Thunderstorm wyposażony został w turbinę, która przysysa robota do trasy. Napędzana jest ona silnikiem BLDC o mocy 200W sterowanym za pomocą regulatora 3F Jeti Advance 18 Pro. Jako ślizgacze zostały użyte trzy plastikowe kulki z ASG o średnicy 6mm. Elektronika Projektowana elektronika została podzielona na dwa współpracujące ze sobą systemy. Pierwszym z nich jest moduł mostka H sterujący silnikami napędowymi. W robocie znajdują się dwa takie układy, pracujące przy każdym kole niezależnie od siebie. Ich zadaniem jest dokładne kontrolowanie prędkości obrotowej kół na podstawie sygnałów z enkoderów zamocowanych na osi każdego koła. Drugim modułem jest układ, którego głównym celem jest odczyt linii i wygenerowanie odpowiedniego sterowania niezależnie dla lewego i prawego koła w robocie. Ponadto układ ten umożliwia komunikację z pilotem stosując gotowe moduły transmisji radiowej TLX905 oraz ma możliwość generowania sygnału o zmiennym wypełnieniu, koniecznym przy sterowaniu regulatorem prędkości obrotowej turbiny. Płytka z czujnikami znajduje się w przedniej części robota, a sygnały, które z niej wychodzą są podpięte do płytki kontrolującej linię przy pomocy dwóch tasiemek 12-żyłowych każda. Płytki PCB zostały wykonane w firmie Satland Prototype. Moduł sterownika silnika DC wyposażony jest w mikrokontroler ATmega88PA pracujący z częstotliwością 20MHz. Sam mostek H zbudowany jest z czterech tranzystorów IRF6668 w obudowach DirectFET sterowanych dwoma układami IR2104S. Częstotliwość sygnału PWM sterującego silnikiem wynosi 19,5kHz. Sterownik ten otrzymuje sygnał kroku i kierunku z kontrolera linii. Jedno zbocze narastające sygnału kroku odpowiada za obrót osi koła o jedną jednostkę enkodera w stronę wyznaczoną przez sygnał kierunku obrotu. Kontroler linii zbudowany jest w oparciu o mikrokontroler ATmega128A @ 16MHz. Sygnał z czujników linii KTIR0711S podawany jest na komparatory LM339 a następnie w postaci sygnału logicznego na wejścia mikrokontrolera. Moduł sterownika linii generuje dwa sygnały o zmiennej częstotliwości sterujące prędkością obrotową lewego i prawego koła jednocześnie. Do zasilania tego modułu jest wykorzystana przetwornica impulsowa zbudowana na układzie MAX5035, ale ze względu na zastosowanie regulatora 3F, który posiada wbudowany układ BEC nie jest ona wykorzystywana podczas jazdy, część cyfrowa jest wtedy zasilana bezpośrednio z regulatora 3F. Programy Programy na mikrokontrolery użyte w obu modułach napisane są w języku C. W mostkach sterujących silnikami DC działa algorytm PID, zaś w jednostce kontrolującej linię algorytm PD. Zasilanie Do zasilania robota stasowane są zamiennie akumulatory Turnigy nano-tech 850mAh 3S 25~40C lub 350mAh 3S 65~130C Lipo Pack. Osiągnięcia :arrow:1. miejsce – Robotic Tournament 2012 w Rybniku – Linefollower :arrow:3. miejsce – Trójmiejski Turniej Robotów 2012 w Gdańsku – Linefollower :arrow:3. miejsce – Trójmiejski Turniej Robotów 2012 w Gdańsku – Linefollower PRO :arrow:2. miejsce – Festiwal Robotyki CybAirBot 2012 w Poznaniu - Linefollower :arrow:1. miejsce – Roboxy 2012 w Gdańsku - Linefollower :arrow:1. miejsce – Robocomp 2012 w Krakowie – Linefollower :arrow:2. miejsce – Robocomp 2012 w Krakowie – Linefollower Enhanced :arrow:1. miejsce – ASTOR Robot Challenge 2012 w Sosnowcu – Linefollower :arrow:1. miejsce – ASTOR Robot Challenge 2012 w Sosnowcu – Linefollower Enhanced :arrow:1. miejsce – Sumo Challenge 2012 w Łodzi – Linefollower :arrow:3. miejsce –Robotic Arena 2012 we Wrocławiu – Linefollower Filmy z testów i zawodów Nowy film z ostatnich zawodów!
  12. 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:
  13. 26 punktów
    Rapid jest moją drugą konstrukcją micromouse. Zawiera ona kilka poprawek względem pierwszej (robot Wariat), z których najważniejszą jest użycie żyroskopu. Konstrukcja mechaniczna i zasilanie Robot zbudowany jest na płytce PCB, która stanowi jego podwozie. Założeniem projektu było uzyskanie nisko położonego środka cieżkości oraz jak najmniejszej masy. Dodatkowym atutem robota miała być jego mała szerokość, która pozwalałaby na poruszanie się po "skosie". Napędem robota są silniki Pololu 10:1 sterowane przez dwa mostki TB6612. Jako zasilanie wykorzystywane są akumulatory litowo-polimerowe o jak najmniejszym rozmiarze i niewielkiej masie. Z powodu małych pojemności konieczna jest częsta wymiana i ładowanie pakietów. W robocie używane są różne pakiety, różnych producentów. Mikrokontroler Sercem robota jest mikrokontroler STM32F405RGT6. O wyborze zdecydowała chęć nauki programowania mikrokontrolerów STM32 z najpotężniejszym rdzeniem Cortex-M4F oraz najmniejsza obudowa spośród wszystich procesorów rodziny STM32F4. Najważniejszymi cechami mikrokontrolera są: taktowanie 168MHz, 192kB RAM, 1MB flash, bardzo duża liczba timerów (m.in. ze sprzętową obsługą PWM oraz wyjść kwadraturowych enkoderów), wiele kanałów przetwornika ADC, DMA, sprzętowa obsługa liczb zmiennoprzecinkowych, wiele dostępnych interfejsów komunikacyjnych. Czujniki W robocie wykorzystano trzy rodzaje czujników: dalmierze optyczne, enkodery oraz żyroskop. Jako czujniki odległości wykorzystano diody SFH4511 oraz fototranzystory TEFT4300 (podłączenie takie samo jak w przypadku robota MIN7 autorstwa Ng Beng Kiat). Diody są sterowane impulsowo, każda z osobna. Wybranym żyroskopem jest analogowy czujnik ISZ-650 firmy Invensense. Jego zakres pomiarowy to +-2000st/s. O jego wyborze zdecydowała głównie dostępność i cena podczas zakupu. Podczas testów robota uszkodzono sensor, dlatego konieczna była wymiana. Zdecydowano się na moduł z żyroskopem L3GD20. Do podłączenia wykorzystano miejsce na wyświetlacz N3310 wraz z wyprowadzonym interfejsem SPI. Zamontowanie enkoderów obrotowych z magnesami na osiach silników powodowałoby poszerzenie całej konstrucji, więc zdecydowano się na użycie enkoderów liniowych wraz z odpowiednimi magnesami. Wykorzystane enkodery AS5304 oraz zamocowane magnesy na kołach robota przedstawiono na rysunkach poniżej. Użyte enkodery pozwalają uzyskać rozdzielczość 3520 impulsów na obrót koła, co daje w wyniku 0.028 mm/impuls. Interfejs użytkownika Założeniem projektu było wykorzystanie joysticka oraz wyświetlacza z telefonu Nokia 3310. Obecnie oprogramowanie nie zawiera obsługi wyświetlacza, dlatego nie jest on zamontowany. Do wyboru prostych komend służy joystick oraz zamontowany buzzer. Buzzer służy także jako powiadomienie o charakterystycznych sytuacjach w labiryncie, np. wykrycie ścianki, dojechanie do środka labiryntu. Oprogramowanie Program opiera się o cykliczne wywoływanie funkcji z częstotliwością 1kHz. W funkcji tej wykonywane są pomiary czujników, aktualizowana jest pozycja robota oraz wyliczane są wartości współczynnika wypełnienia PWM na silniki. Robot posiada trapezoidalny profil sterowania prędkością. Implementacja i zasada działania jest bardzo podobna jak w artykule [Programowanie] Sterowanie robotem mobilnym klasy (2,0). Przeszukiwanie robota odbywa się z użyciem algorytmu floodfill. Po znalezieniu środka labiryntu, robot rozpoczyna wyznaczanie najszybszej ścieżki. Do tego celu użyto zmodyfikowanego algorytmu floodfill, którego wagami jest czas przejazdu. Podsumowanie Robot Rapid zachowuje się w labiryncie dosyć stabilnie i przewidywalnie. Jest to bardzo ważna cecha, ponieważ pozwala na dalszą pracę nad konstrukcją oraz rozwijanie oprogramowania. Pomysłów na poprawienie działania robota jest wiele. Ograniczeniem jest jedynie poświęcony temu czas. Galeria Osiągnięcia I miejsce w kategorii Micromouse na zawodach Robotic Arena 2012 II miejsce w kategorii Micromouse na zawodach Robomaticon 2013 I miejsce w kategorii Micromouse na zawodach Trójmiejski Turniej Robotów 2013 I miejsce w kategorii Micromouse na zawodach ROBO~motion 2013
  14. 26 punktów
    Przedstawiam mojego najnowszego LineFollowera, którym jest Silver. Prace nad robotem zostały rozpoczęte po RoboticArenie, jednak ostateczne uruchomienie robota było możliwe dopiero na kilka dni przed jego pierwszymi zawodami czyli T-BOT 2012. Jest to dość standardowa konstrukcja jak na ostatnie linefollowery, głównym założeniem jaki sobie postawiłem projektując konstrukcję była jak najmniejsza masa. Elektronika sterująca robotem jest dość prosta: 20 czujników KTIR + komparatory, do tego ATmega128, mostek TB6612, sterownik dla turbiny i to właściwie wszystko. Całość zasilana jest z pakietu 2S 350mAh. Konstrukcja mechaniczna składa się z jednej głównej płytki drukowanej wykonanej w firmie SatlandPrototype, do tego dwa silniki Pololu 10:1HP oraz koła wytoczone z aluminium przez hungrydevil'a. Mam też inny komplet, na którym testowałem odlewanie ogumienia z innych materiałów (głównie silikony), jednak ostatecznie zostałem na oponach mini-z. Program napisany jest w C, odczyty czujników cyfrowe, zaimplementowany PD, jednak praktycznie na wszystkich zawodach jeździł wyłącznie na samym członie P. Osiągnięcia: - finał na T-BOT 2012 - finał na RobotChallenge 2012 - FTL i FTL z przeszkodami - 3 miejsce na Robomaticonie 2012 Podsumowanie - ogólnie z konstrukcji jestem niezadowolony. Sprawiła mi sporo problemów i ostatecznie nie osiągnęła tyle ile mogła. Teraz skupiam się na całkowicie innym sofcie do robota oraz dobrym "debugowaniu" co ogromnie ułatwia i przyspiesza pracę. Płytek, schematów oraz kodu nie udostępniam. Nie wiem co może Was jeszcze zainteresować, więc czekam na ewentualne pytania.
  15. 25 punktów
    Opiszę robota o nazwie Sarmatic, zwycięzcę konkurencji ”Puck Collect” na konkursie RobotChallenge 2012! Jako, że jest to mało popularna dyscyplina w Polsce, cały projekt powstawał od zera. Na początku nie mieliśmy żadnych informacji o tym jaki typ konstrukcji będzie najlepszy. Powodem czego były długie rozmyślania, projektowanie i ciągłe ulepszanie Sarmatica. Do marca 2012 roku robot ten powstawał przez dwa lata. Postaram się opisać wszystkie rozwiązania jakie zostały użyte podczas startów na konkursach RobotChallenge 2011 i 2012. Puck Collect - Dokładny opis zasad jest przedstawiony tutaj . Konstrukcja została stworzona prawie w całości z tego co udało się zakupić w Castoramie. Aluminiowe kątowniki, ceowniki, masa śrubek i nakrętek. Robot obudowany jest w karton z tworzywa o nieznanej mi nazwie, jednakże jest on bardzo lekki a zarazem odporny na uderzenia. Wymiary: 49 x 49 x 12cm, maksymalnie robot może mieć 50x50cm, a wysokość nieograniczoną. Zdecydowaliśmy się jak najbardziej zwiększyć powierzchnię, aby zbierać naraz jak największą liczbę krążków podczas przejazdu. Napęd Robot napędzany jest dwoma silnikami 37ZYJ002B, 150RPM, 12V. Koła śr.100mm. 2x Hitec HS-1425CR – sortowanie krążków 1x Hitec HS-322 HD – sterowanie bramą wypuszczającą krążki Elektronika Całość jest sterowana przez komputer jednopłytkowy z Windowsem. Obsługa silników, serwo i czujników odbywa się poprzez elementy Phidgest. Są to gotowe urządzenia posiadające porty USB, sterowane bezpośrednio z komputera. Sarmatic posiada: Kontroler silników: PHI-1064 Kontroler serwo: PHI-1061 Kontroler czujników: PHI-1018 Wyświetlacz + kontroler czujników: PHI-1203 Czujnik przestrzenny 3/3/3: PHI-1056 Dodatkowo czujniki podłączone do kontrolerów czujników: 6x Sharp GP2D12 – 2 przód, 2 tył, po 1 na bok 5 czujniki światła: PHI-1127 2 czujniki odbiciowe 5mm: PHI-1102 Oraz: Mysz komputerowa w technologii Bluetrack Zasilanie Całość zasilana z pakietu Li-pol 4S 14.8V 4000mAh + 2 zasilacze, po jednym na komputer i silniki. Program Program został napisany w C#, niestety tyle z mojej wiedzy, ja odpowiadam tylko za konstrukcję, a kumpel programuje. Jakby były jakieś pytania to mu je przekażę Droga krążka 1. Brama ”Tesco” – czerwone elementy na górze obrazka poniżej – zasada działania jest analogiczna do wózków przejeżdżających przez bramki w sklepach samoobsługowych. => Krążki, które zebrał Sarmatic, już nie są dostępne dla przeciwnika. 2. Lejki – żółty kolor – sprowadzają krążki do miejsca sortowania. Dlaczego dwa? – 2x szybsze sortowanie umożliwia szybsze wykonanie zadania. 3. Sortowniki – zielony kolor a) czujnik odbiciowy 5mm sprawdza obecność krążka, b) dwie niebieskie diody oświetlają obiekt i czujnik światła sprawdza jego kolor, c) krążki są rozdzielane na kolory, taki system sortowania w Sarmaticu jest 2x szybszy niż w innych konstrukcjach, ponieważ po przejściu jednego pucka, sortownik jest gotowy do ponownego działania, bez powrotu do pozycji początkowej. Prędkość jaką udało się osiągnąć to 1 krążek/ 0,75 sekundy! Mając 2 sortowniki, nasz robot jest w stanie posegregować wszystkie 20 krążków około 8 sekund : ) (oczywiście najpierw musi je zebrać…) 4. Pojemniki – niebieski – dzielą się na krążki koloru robota (środkowy) oraz krążki koloru przeciwnika (zewnętrzne). 5. Brama – czerwony kolor - Krążki są punktowane wtedy gdy leżą na bazie i nie są przykryte żadną częścią robota, więc wypuszczanie pucków przeciwnika jest zbędne. Dlatego ruchoma brama została zamontowana tylko dla środkowego pojemnika. Rozwiązania GPS – dzięki połączeniu myszy komputerowej z żyrokompasem i kilkoma funkcjami trygonometrycznymi, Sarmatic w każdej chwili zna swoje położenie na planszy. Dzięki temu chcąc dojechać do np. na pole startowe, wyznacza odpowiedni azymut i podąża po linii prostej do celu, nie błądząc, szukając odpowiednich ścian i koloru podłoża. Ślimak – nasz as z rękawa. Stosowany podczas walki tylko z niektórymi przeciwnikami. W kilka sekund robot potrafi zebrać dużą liczbę pucków. Ślimak został zaprezentowany na jednym z filmów. System antyzderzeniowy – kontrolując odczyty z czujników odległości robot potrafi rozróżnić podczas przejazdu czy spotkał przeciwnika, czy dojechał do bandy. W zależności od tego jaki obiekt widzi, wykonuje inne czynności. System odblokowania – uruchamia się, jeśli po krótkim czasie robot nie zmienia położenia na planszy (przyblokowany przez przeciwnika i / lub bandy). Następnie wykonuje sekwencję ruchów pozwalających się oswobodzić do czasu odzyskania całkowitej sprawności w poruszaniu się. 11 krążków – system oparty na matematyce i logicznym myśleniu : ). Zasada działania jest prosta: po zebraniu 11 krążków (czerwonych i niebieskich) można odwieźć swoje pucki na bazę i zakończyć przejazd. Przeciwnikowi w takim przypadku zostaje 9 krążków, w skład których wchodzi mniejsza ilość pionków jego koloru, niż nasz robot pozostawił na polu startowym. Blokowanie bazy przeciwnika – po zebraniu 11 krążków, Sarmatic udaje się na pole przeciwnej drużyny, by ją zablokować. Przeciwnik wtedy ma małe szanse na zdobycie jakichkolwiek punktów. Kontrola zablokowanej bazy – byliśmy przygotowani również na to, że przeciwnik także może zastosować wcześniejszy podpunkt. Sekwencja ruchów i kontrola czujników odległości pozwala na zdiagnozowanie zablokowanego pola. Sarmatic w takim przypadku podjeżdża tyłem na bazę, dopychając przeciwnika do bandy (odsłania kawałek bazy), a następnie podjeżdża do przodu, wypuszcza krążki i ponownie przepycha tyłem, tym razem pucki na pole punktowane. Osiągnięcia 1. miejsce - RobotChallenge 2012 - Puck Collect 2. miejsce - RobotChallenge 2011 - Puck Collect 3. miejsce - Roboxy 2012 - Freestyle Ciekawostki RC 2012 -Warto dodać, że tak dopracowany Sarmatic podczas startu w Wiedniu w 2012 roku odniósł w każdej walce zwycięstwo! - Podczas całych zawodów, nasz robot prawidłowo odwiózł do swojej bazy 73 krążki, tracąc przy tym zaledwie 2 krążki! - W fazie grupowej, najgorszym wynikiem jaki uzyskał Sarmatic to 5:0, a wszystko, przez walkower – przeciwnik nie przystąpił do walki… Reszta walk zakończyła się: 6:0, 6:0 oraz 8:0. tabela finałowa RC 2012 Zdjęcia Filmy Zwykły przejazd: Ślimak: Blokowanie bazy przeciwnika: Mały bonus - dachowanie Autorami Sarmatica są dwaj 18-latkowie, członkowie drużyny R-BOT: Aleksander Szulc - programista Maciej Ziółtkowski - konstruktor
  16. 24 punktów
    Witam Chciałbym przedstawić wam robota Silver Shaft klasy line follower (nazywany też SS skrót powstał podczas bardziej luźnych rozmów na chacie ). Postęp prac można było śledzić w worklogu. Prace nad robotem zacząłem w sierpniu 2011 roku, później prace mocno spowolniły z powodu braku czasu. Od połowy lutego tego roku wziąłem się do pracy zrobiłem płytkę, którą już wcześniej zaprojektowałem, polutowałem, napisałem pierwszą wersję programu i przeprowadziłem pierwsze próby. W marcu wystartował w zawodach Robomaticon zajmując 13 miejsce, co i tak było sukcesem jak na 3 dni (a właściwie popołudnia) na napisanie programu od podstaw i przeprowadzenie pierwszych prób. Szczerze mówiąc robot zaczął przyzwoicie jeździć w dzień zawodów ok.2 w nocy . Od tego czasu wprowadziłem kilka modyfikacji, zarówno sprzętowych jak i programowych. Kończąc wstęp, przejdźmy do konkretów. SPECYFIKACJA Wymiary: 120x80x32mm Waga samego robota: 75g Waga robota z akumulatorkiem: 86g Średni pobór prądu logiki: 130mA Średni pobór prądu logiki bez czujników linii: 45mA Coś dla miłośników anaglifów: Proces lutowania: MECHANIKA Konstrukcja mechaniczna jest bardzo prosta i powiedziałbym typowa dla robotów tej klasy. Robot składa się z trzech płytek drukowanych, głównej, płytki z czujnikami linii i z cyfrowym dalmierzem. Płyta główna ma 1,5mm grubości, pozostałe są jednostronne i mają grubość 0,8mm. Płyta główna jest jednocześnie podwoziem robota. Wykonanie płytki głównej zajęło mi dużo czasu z powodu złych ustawień drukarki (Pierwsza płytka dwustronna na nowej drukarce). Po zmianie ustawień i zmarnowaniu 3 płytek wielkości robota, płyta główna wyszła idealnie, bez żadnych zerwanych ścieżek i tylko z jednym, w sumie nieistotnym zwarciem przy podświetleniu led, oraz przesunięciem między warstwami <0,5mm, które jak na trzecią dwuwarstwówkę było i tak niewielkie. Napęd robota stanowią dwa silniczki pololu HP z przekładnią 30:1 wraz ze standardowymi kołami 32mm. i mocowaniami, które swoją drogą były kompletnym niewypałem (łącznie złamały się 8 razy, za każdym razem w innym miejscu). Rolę podpory przodu stanowi plastikowa kulka 3/8 cala. MONTAŻ Płytka została pocynowana „mechaniczne”, własnej roboty pasta + tasiemka odsysająca + trochę cyny i wprawy. Większość elementów typu rezystory, czy kondensatory są w obudowach 0805, wyjątek stanowią 4 rezystory 330R ograniczające prąd diod Ir w transoptorach. Pierwotnie były tam rezystorki o mniejszej wartości, jednak z powodu grzania się KTIR’ów zostały wymienione, a jako, że nie miałem odpowiedniej ilości w 0805, zostały zastąpione większymi wersjami 1206. Całość polutowana grotówką. Płytka z czujnikami została zamontowana na stałe i trzyma się na listwie goldpin, która jednocześnie stanowi połączenie elektryczne między nią a płytą główną. ZASILANIE Całego robota zasila pakiet Li-Pol 2s zlutowany z dwóch pojedynczych ogniw 450mAh firmy Batimex. Tu chciałem zaznaczyć, że wiem o istnieniu pakietów 2s. Złożyłem je sam, ponieważ potrzebowałem pakietu o nietypowych wymiarach, a nie miałem czasu na zamawianie w HK. Logika zasilana ze stabilizatora LM1117 na 5V, silniki z przetwornicy ST1S10PHR ustawionej na 6V, lub bezpośrednio z pakietu (wybór zworką). W tylnej części płytki mieści się wyłącznik zasilania z sygnalizacją włączenia i układ pomiaru baterii z diodą led informującą o spadku napięcia poniżej ok.6,6v – wtedy to na wyjściu przetwornicy napięcie zaczyna spadać poniżej 6v. Akumulator starcza na ok. 15-20 min testów. ELEKTRONIKA Schemat i wzór pcb eksportowany z programu EAGLE. Mózgiem robota jest ATMega32 taktowana zegarem 16MHz. Rolę czujników linii stanowi 8 transoptorów odbiciowych KTIR0711S, odczyt na wbudowanym w atmege adc.Tu muszę zaznaczyć, że trafiłem na wadliwą sztukę KTIR’a miał lekko zdeformowane „szybki” pod diodą Ir i fototranzystorem, i dawał zawyżone wartości (ok. 150 więcej 10 bitowego adc) mała korekta w programie zniwelowała rozbieżności, niemniej uważam, że czujniki są świetne. Sterowanie silnikami odbywa się za pomocą mostka H TB6612 jeden na oba silniki. Pwm o częstotliwości trochę ponad 7Khz. Na przodzie robota znajduje się zamontowany stosunkowo niedawno dalmierz cyfrowy sharp 10 cm GP2Y0D810Z0F. Nie spotkałem się z nim w żadnym innym lf’ie. Przyznam, że wątpiłem w jego praktyczną użyteczność, okazało się jednak, że robot jest w stanie wyhamować z pełnej prędkości w ok. 2-3cm, a czujnik działa na tyle szybko, że mam jeszcze spory zapas przed przeszkodą. Czujnik może pełnić dwie funkcje (wybierane zworką). Chamowanie i wznowienie jazdy dopiero po usunięciu przeszkody, lub omijanie jej. Dzięki temu, robot może startować w konkurencji line follower z przeszkodami. Do komunikacji użytkownik – robot, zamontowane zostały dwie diody led, dwa przyciski, odbiornik Ir TSOP4836, oraz złącze 10 pinowe na którym poza wyprowadzeniem zasilania i spi do programowania jest I2C i uart, umożliwiające podpięcie dodatkowych modułów (w tej kwestii wypowiem się, gdy napiszę i opublikuje pewien artykuł ) PROGRAM Program napisany w Bascomie, na dzień dzisiejszy zawiera nieco ponad 600 linijek kodu i jest to 6 wersja programu, zajmuje 10% z 32KB pamięci Flash. Program można podzielić na dwie główne części: 1.Część odpowiedzialną za jazdę a.Sprawdzenie stanu dalmierza b.Odczyt analogowy z czujników linii c.Konwersja wartości analogowych na binarne d.Wyliczenie położenia linii metodą średniej e.Przekazanie uchybu regulatorom f.Naniesienie korekty pwm na silniki 2.Część serwisowa a.Wyłączenie podświetlenia, wprowadzenie mostka w stan stanby b.Wysłanie zapytania i oczekiwania na odpowiedź po uart z aplikacji PC c.W razie braku odpowiedzi, przejście do trybu konsolowego d.Oczekiwanie na id zmiennej i jej wartości e.Zapis nowej wartości zmiennej do pamięci Regulator Proporcjonalno Różniczkujący, z czego człon D wymaga jeszcze dopieszczenia. Pojawił się już w 2 wersji programu, jednak do niedawna bardziej przeszkadzał, niż pomagał, dlatego podczas większości testów był wyłączany. Aktualizacje w kolejnych wersjach: 1.-; 2.Dodanie regulatora D, trybu serwisowego, odliczania przed startem, 3.Naprawienie błędu uniemożliwiającego pokonanie kąta prostego, efekty led przy starcie i zatrzymywaniu 4.Dodanie obsługi dalmierza 5.okiełznanie D, dynamiczne omijanie przeszkód, 6.poprawa wydajności programu - uproszczenie liczenia uchybu, integracja z programem PC w planach: Ulepszenie D, rozwinięcie możliwości komunikacji z PC, płynne i łatwo regulowane omijanie przeszkód, optymalizacja kodu oraz coś o czym dowiecie się przy publikacji artykułu OSIĄGNIĘCIA 13 Miejsce na Robomaticonie 2012 w kategorii Line Follower. Kilka zdjęć i filmików z robotem. Silver Shaft na starszym bracie "drewnobocie" Ok godziny po pierwszej jeździe z czujnikami: 3 dni później: Jazda próbna na torze Robomaticonu w Warszawie: Jedna z ostatnich jazd: Tor w wersji z przeszkodami- przy drugim okrążeniu lekko zawadził o przeszkodę, ale wielkość łuku była podyktowana wielkościami pierwszej trasy, i jest "na styk": (nagrywał sosnus) PODZIĘKOWANIA Dziękuję wszystkim, którzy przedstawili sugestię i krytykę, w worklogu. W szczególności Sabre, oraz jego robotowi Tsubame, który był poniekąd inspiracją dla tego lf'a. Dziękuję osobom z chatu za pomoc w mniejszych problemach, np. grzanie się ktirów, czy problem z komunikacją po spi, przede wszystkim bobb'iemu i KD93. Dziękuję Turlaczowi za "troskę" i codzienne pytanie "jak tam SS?" Dziękuję Sosnusowi, za pomoc w teoretycznych aspektach dokładności liczenia uchybu, wspólne testowanie robota i zmian w programie, oraz mile spędzony weekend. Czekam na słowa krytyki, oceny i pytania. Dziękuję
  17. 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
  18. 21 punktów
    Przedstawiam robota typu linefollower, którego razem z kolegą wykonaliśmy w ramach projektu "Roboty mobilne" na PWr. Cechą odróżniającą go od innych konstrukcji tego typu jest możliwość zapamiętywania trasy. Robot wykonuje pierwszy przejazd ze stosunkowo wolną prędkością i dla każdego punktu trasy oblicza maksymalną możliwą prędkość, która pozwoli na przejazd bez poślizgu. Wiedza ta jest używana w celu zoptymalizowania czasu przejazdu podczas drugiego pokonywania trasy. Sercem robota jest mikrokontroler STM32F103RBT6. Do napędu służą silniki Pololu 10:1 HP (przy okazji - są beznadziejne) wspomagane enkoderami AS5040. Do wykrywania linii przewidziano 12 czujników KTIR, przy czym aktualnie używanych jest 8 (resztę przyjarałem hotem podczas lutowania i nie działają ). Napięcie 3,3V dla logiki pochodzi z przetwornicy MCP16301, natomiast silniki są zasilane bezpośrednio z akumulatora poprzez mostek MC33932. Oprócz tego na płytce zainstalowany jest akcelerometr/żyroskop MPU6050 (aktualnie niewykorzystany), 4 ledy, 3 przyciski oraz wyprowadzone złącza UART i SPI (dla modułu radiowego NRF24L01). Algorytm sterowana obejmuje regulatory PID dla prawego i lewego koła oraz regulator PID dla rotacji. Wartość translacji jest ustalana na sztywno lub jest uzależniona od aktualnego położenia robota na trasie (w przypadku drugiego przejazdu). Jazda ze sztywno zadaną prędkością, zdaje się 1,8m/s Zapamiętywanie trasy (film zawiera lokowanie produktu) Jeśli chodzi o robota to jestem bardzo pozytywnie zaskoczony działaniem zapamiętywania trasy. Do zrobienia pozostało uwzględnianie przyspieszeń liniowych przy wyznaczaniu profilu przejazdu, gdyż aktualnie obliczane jest tylko przyspieszenie dośrodkowe. Głównym problemem przy konstrukcji robota były notorycznie palące się silniki. Dwa spaliły się całkowicie, w jednym wytarła się zębatka, a szczotki były wymieniane chyba z pięć razy. W następnych konstrukcjach mam zamiar używać tylko silników BLDC. edit: Schemat Layout płytki głownej bom.txt
  19. 20 punktów
    W końcu mamy chwilę czasu na opisanie robota:) Robot stworzony wspólnie z użytkownikiem Maszto. Najpierw zastrzeżenie - więcej zdjęć dołożymy jak będę miał do nich dostęp, teraz wrzucam tylko te, które mam przy sobie (niestety większość słabej jakości). A więc, jak można się domyślić, robot powstawał jako projekt inżynierski. We wrześniu byliśmy pewni, że będziemy go mogli robić. Tak więc od października projekt ruszył pełną parą. Zbieraliśmy informacje, porównywaliśmy datasheety różnych elementów, sprawdzaliśmy różne diody nadawcze i fototranzystory w paśmie IR. W listopadzie powstał pierwszy proto-prototyp:) W sumie w segmencie mieścił się na styk, ale był stworzony do celów testowych -> współpraca silnik - enkoder - czujniki - ATmega32A. Testy przyniosły nową wiedzę, potwierdziły pewne przypuszczenia, pewnych nie. Tak więc bogatsi o nowe doświadczenia rozpoczęliśmy pracę nad prototypem właściwym. Zdjęcie z 17 listopada: Ta masa kolorowych kabelków z tyłu służyła do tymczasowego podłączenia mostka L293D w zastępstwie TB6612 z pololu, który uległ uszkodzeniu. Po małym zwarciu:D. Na tym prototypie widać początkowe ułożenie sensorów z przodu, które nie okazało się optymalne. Nie mam teraz zdjęć, ale została zmieniona strona, na którą pary nadajnik-odbiornik wskazują. (Czyli te dwie pary z przodu zostały przekręcone na boki, a te boczne do przodu) A po dodaniu pięterka, głównie dla celów diagnostyki przez LCD: Jedna rzecz, która na pewno musi się znaleźć w następnej myszy, to wyświetlacz graficzny. Jak widziałem jak to u Graba działało, to mi się odechciało już wyświetlania na LCD 2x16 . Wypisywanie 256 elementowej macierzy trochę trwa... No właśnie, skoro już jesteśmy przy konstruktorze Devila, to muszę mu bardzo podziękować za pomoc przy ogarnianiu zespołu enkoder-silnikDC. Gdyby nie on, pewnie by tak ładnie nie jeździła:). Sensoryka: - 2 Sharpy 5 cm; - 4 diody SFH4550; - 4 fototranzystory BPW77; - 2 czujniki Halla AS5145B (enkodery). Z enkoderów jestem zadowolony, diody i fototranzystory IR również doskonale spełniają swoje zadanie. Na początku nie używałem w ogóle Sharpów, ale później zostały użyte do dodatkowego wspomagania kalibracji ruchu. Mechanika: Laminat jednostronny kupiony w pobliskim sklepie, trawiony w domu. 2 silniczki z pololu 50:1 HP. Jako podpory - 2 diody. Elektronika: - ATmega32A; - 2x ATtiny13A (do obsługi enkodera - dorabiane na szybko i elegancko;-) ); - TB6612 z Robodudes (dzięki, MirekCz, za szybką pomoc); - stabilizator L7805 dla elektroniki; - stabilizator L7809/L7808/L7806/L7805 dla zasilania silników(wymienne); - stabilizator L7808/L7806/L7805 dla zasilania diod IR(wymienne). Zasilanie: Li-pol 1000 mAh 3S... Tak, zdecydowanie przesadziliśmy. Wnioski: - Po zamianie li-pola na 2S i mniejszej pojemności, jednym potrzebnym stabilizatorem (lub przetwornicą) będzie ten dla elektroniki. Diody i silniki polecą prosto z baterii. - Gotowy moduł z mostkiem TB6612 jest dużo wygodniejszy jeśli chodzi o wymianę w razie awarii; - Diody najlepiej jeśli mają malutki kąt świecenia i dużą moc. Fototranzystory jak najmniejszy kąt widzenia; - Jeśli robot na początku jeździ szybko i nie wpada na ścianki, to prawdopodobnie w labiryncie jest za dużo ścian:> Na zawodach może tak różowo nie być. Historia rozwoju: 22 listopad: Pierwszy filmik 29 listopad: Zamknięte sprzężenie zwrotne 30 listopad: Bez korekcji 5 grudnia: Korekcja 9 grudnia: Przed zawodami RA2011 Filmik z zawodów, dzięki uprzejmości Grabo: W sumie był to pierwszy (i na razie jedyny) występ Inżyniera, ale zajęcie II miejsca nas bardzo ucieszyło. Jest to nasz drugi robot, pierwszym był ALF. No trochę przeskok to był Jesteśmy zdecydowanie zadowolenie, zwłaszcza, że np. programować mikrokontrolery tak naprawdę zacząłem we wrześniu;-). Trzeba przyznać, że bardzo dużo się przy tej myszy nauczyliśmy. Jeśli o czymś zapomniałem lub macie pytania, walcie śmiało Edit: Dodatkowa atrakcja: 3d Model z RA2011
  20. 19 punktów
    Witam! Chciałbym wam przedstawić mojego drugiego robota klasy linefollower. Teraz jest on na trochę większym poziomie niż Wolverine. Ogólnie koncepcja nowego robota powstała po zawodach T-Bot, na których zobaczyłem po raz pierwszy robota Botland Teamu. Decyzja padła szybko i była jednoznaczna. Zamawiam turbinę. I tak z kolegą, Harnasiem na następny dzień po powrocie do domów z zawodów zamówiliśmy potrzebne nam rzeczy z HK. I tutaj był największy problem. Na turbinę czekałem praktycznie 3 miesiące... No ale... teraz już robot ma wszystko co było przewidziane. Tutaj również dodam że to moja ostatnia konstrukcja z wykorzystaniem AVRów. Na filmie nie widać aby Turbinowiec był szybki lecz PWM wynosi już 230/255, a winą takiej jazdy jest przysysanie trasy do wirnika turbiny przez co hamuje i to dość znacznie. Postaram się nagrać coś na innym podłożu lub zawodach. Elektronika Robot posiada 2 mikrokontrolery, zaraz mi ktoś powie z oburzeniem " po co?! " Już tłumaczę. ATMega16 odpowiedzialna jest tylko i wyłącznie za odczyt z komparatorów, za obliczenia dotyczące regulatora PD oraz wysterowanie silników. Natomiast ATMega8 obsługuje TSOP'a, obsługuje sterownik do napędu tunelowego, załącza diody LED znajdujące się pod robotem oraz wysyła sygnały do "głównego" procka, no i oczywiście obsługa przycisków jest na nim ATMega16 jest taktowana kwarcem 16 MHz, natomiast ATMega8 napędzana jest z wewnętrznego oscylatora 1 MHz. Nie ma potrzeby „rozpędzania go” do większych prędkości. Mostki H w robocie to nic innego jak już sprawdzone nie jeden raz TB6612FNG z którymi nigdy nie miałem problemów. Do stabilizacji napięcia logiki jest wykorzystany L7805AC2T, natomiast dla silników przetwornica LM2576S, również z nią nigdy nie miałem problemów, tylko raz poszła z dymem, ale spełniała moje oczekiwania Program Cały kod napisany w C. Powstał bardzo szybko i dobrze spisywał się dla prędkości rzędu 1,5m/s, gdy nie było turbiny. Teraz z turbiną muszę zmieniać współczynniki, ale kiedyś dojdzie do perfekcji tak jak Wolverine. Czujniki Transoptory to już wszystkim znane i myślę że lubiane KTIRy0711s, jest ich 16, ułożone w linie prostą. Myślałem nad dołożeniem jeszcze trzech czujników na około 3cm przed robota aby robot mógł szybciej hamować, ale zrezygnowałem z tego. Przy poprzedniej konstrukcji mówiłem że nigdy nie dam mniej niż 16 czujników, a będę dawał ich więcej. Niestety ale pozostałem przy 16 czujnikach. Myślę że można z nich wyciągnąć przyzwoitą rozdzielczość i nie ma potrzeby stosowania więcej. Sygnał analogowy wychodzący z czujników jest podawany na komparatory LM339 a następnie trafia już do ATMegi16. Robot ma również wyprowadzone pady dla sharpa 340k, ale nie jest zamontowany, gdyż nie było takiej potrzeby. Wątpię w jego przydatność na tym poziomie. Płytka PCB Robot składa się z jednej płytki pcb, z czarną soldermaską. Płytka wykonana w firmie Satland Prototype, która dała mi bardzo duży rabat. Laminat ma grubość 1,5mm. Zastanawiałem się długo nad zastosowaniem laminatu 1mm ale bałem się że pęknie pod wpływem działania turbiny. Silniki Tutaj nic specjalnego, Pololu 10:1 w wersji HP. Myślę że do takiej konstrukcji nic więcej nie potrzeba. Pod silnikami znajdują się podkładki z laminatu, niestety wycinane krzywo w domu i pomalowane czarnym sprayem, kompletnie zapomniałem o nich w czasie projektowania PCB. Napęd tunelowy Tutaj też bez żadnych nowości. Zgapiony EDF 27 wraz z rekomendowanym regulatorem do niego 10A. Przed zbyt mocnym wygięciem płytki chronią diody 3mm, laminat ma 1,5mm grubości więc nie powinien pęknąć, w sumie to musi wystarczyć. Programowanie Tutaj do obu procków zastosowałem 1 złącze 10 pinowe IDC w standardzie Kanda. Za pomocą zworki ustalam który procesor ma być programowany. Zworka przerywa sygnał SCK, co w zupełności wystarcza do wygodnego działania. Wyprowadzony jest także USART, ale tylko z ATMega16. Myślałem nad „takim czymś” do zmieniania współczynników za pomocą drugiego uC. Na razie składam następnego robota i za bardzo nie mam czasu się tym zająć. Tutaj starszy filmik, pierwszy jedzie Wolverine, później Turbinowiec bez turbiny https://www.youtube.com/watch?v=fq4pDa_FbLs&feature=my_liked_videos&list=LLLl83Q1iIMDCwv97ZFhlsrg Tutaj najnowszy filmik: __________ Komentarz dodany przez: Treker Usunąłem zbędne sztuczne łamanie linii.
  21. 19 punktów
    Infinitum to trzeci robot w mojej karierze i najlepszy jaki udało mi się zbudować do tej pory. Robot powstawał stosunkowo długo (ponieważ w tym roku matura), jednak najwięcej do zrobienia było przed RoboticArena 2011, gdy na PCB wkradł się błąd, który oczywiście został usunięty. Robot powstawał przy współpracy z firmą Woszym , która zajmuje się montażem obwodów drukowanych. Również pomogli w krytycznej sytuacji. Elektronika: Standardowo użyłem mikrokontrolera firmy atmel- Atmega16, mostki to dwa TB6612, stabilizator L7805 wersji SMD, za oczy robią cyfrowe Sharpy GP2Y0D340K, komparator LM339D oraz KTIR0711S plus pozostałe drobne elementy. Robota wyposażyłem w LCD 8x2- jednym się ten pomysł podobał, innym nie, ale ja jestem zadowolony bo spełnił swoją funkcję- można sprawdzić aktualny stan aku, ustawić PWM jak i zobaczyć, za ile zacznie się walka Program: Program powstał w środowisku eclipse, napisany został w C, którego się dopiero zacząłem uczyć, więc jest to pierwszy mój program w tym języku. Nie wiedziałem, że jest taki fajny. W robocie jest przewijane menu, które obsługuje się trzema przyciskami - jeden enter, a dwa pozostałem służą do przewijania. Żeby wyjść do głównego menu trzeba przytrzymać te dwa przyciski do przewijania przez 3s. Mechanika: Obudowa Infinitum została wcięta z aluminium i profesjonalnie polakierowana przez lakiernika. Po walkach odprysków praktycznie nie ma więc się postarał . Silniki to HP 50:1 z pololu. Robot na zawodach ważył około 375g. Podsumowanie: Jak wspominałem jestem z niego bardzo zadowolony-udało się wyjść z grupy na RA11! Dla ciekawych nazwa wzięła się stąd, że były roboty Inferno i Mefisto to stwierdziłem, że musi być coś anty(w Google translator można sprawdzić ). Konstrukcja ma tylko 3 minusy: przyczepność, ilość śrubek i umiejscowienie włącznika – przy następnych konstrukcjach zwrócę na to większą uwagę . Filmiki: Znajdują się tu niektóre z wygranych walk https://www.youtube.com/watch?v=uGfYsFS2aMw
  22. 19 punktów
    Hej. Przedstawiam swoją kolejną dziwną konstrukcję. Pomysł podpatrzony w jednej z polskich firm oraz na pololu. Zrobiłem go w celach pokazowych. Chciałem mieć pająka, ale taki na 18 serwach to by mnie przerósł i finansowo i intelektualnie więc zrobiłem takiego prostego. Do sterowania wykorzystałem aplikacją w Javie którą od lat mam do takich rzeczy. Wysyła pojedyncze znaki po naciśnięciu lub puszczeniu klawisza lub joysticka. Jako BT użyłem najtańszego chińskiego modułu. W procek mam wgrany BL megaload co umożliwia automatyczne ładowanie nowego softu po naciśnięciu przycisku reset przez BT. - imie - strzeliłem, wszyscy nadają, dziwnie by mój post wyglądał więc i ja nadałem - konstrukcja - elementy wycięte cnc z laminatu 1,5mm - serwa - standard, miałem pod ręką 2szt tp 5010 i 1 conrad ES 030 - nogi - na 12 łożyskach 8x4x3 - zasilanie - 4 x nimh 1400mAh - sterownik - własny projekt małego sterowniczka specjalnie do niego na atmega328 - sterowanie przez port szeregowy (BT) - demo Napisany w Bascomie program steruje serwami w zależności od otrzymanej po uarcie komendy lub załącza demo powodujące długie tuptanie pająka w miejscu. Chciałem dołożyć mu obracany na serwie sonar ultradźwiękowy ale już chyba tego nie zrobię. Prędkość jego poruszania się jest tak niewielka że zanim by doszedł do jakiejś przeszkody żeby ją ominąć minełyby wieki. Więc taki pewnie zostanie. Kilka fotek oraz film Pozdro Sławek
  23. 18 punktów
    Cześć, chciałabym przedstawić swoją konstrukcję - robota klasy microsumo. Zaczynał swoją karierę już w Wiedniu, jednak dopiero teraz znalazłam czas na opisanie go na tym forum. Na początek parę słów o nazwie Go. Wzięła się ona stąd, że wcześniej planowałam zbudować robota klasy sumo, jednak koło naukowe odrzuciło mój wniosek. Sumo miało nazywać się Godzilla. Po zmniejszeniu rozmiaru robota zmniejszeniu uległa też nazwa robota. Jeśli chodzi o mnie, to jestem studentką Automatyki i Robotyki na Politechnice Wrocławskiej, a swoją przygodę z kołem naukowym KoNaR zaczęłam półtora roku temu. Go powstawał od czerwca zeszłego roku i zajmował już wysokie miejsca na zawodach w Polsce. W planach mam stworzenie podobnej konstrukcji, mając na uwadze wszystkie poprzednie błędy i potknięcia, które nierzadko przytrafiały mi się jako początkującej. 1. Konstrukcja mechaniczna Projekt mechaniczny wykonałam w programie Autodesk Inventor. Biblioteki niektórych części, na przykład silników znalazłam na forum elektroda.pl, resztę zaprojektowałam sama. Podwozie jest wykonane z mosiądzu (w celu obniżenia środka ciężkości), a do niego przyczepiony jest pług. Przyznam, że ta część konstrukcji była wyzwaniem. Jak zmieścić zawiasy mając do wykorzystania zaledwie 2 mm miejsca? Po długich poszukiwaniach znalazłam odpowiednie zawiasy modelarskie, bardzo cieniutkie, które sprawdzają się idealnie. Pochyła przednia ścianka obudowy pozwala na stabilne oparcie pługu, ale krzywizna jest na tyle mała, aby po gwałtownym skręcie ten mógł opaść. Pomimo maksymalnego upakowania elementów uważam, że ta część konstrukcji posiada swoją zaletę. W prawie wszystkich walkach pług zdołał opaść i robot skierowany na przeciwnika zawsze "zabierał" go ze sobą. Na początku pług miał długość 45 mm, bo "zawsze można skrócić". Niestety, w Wiedniu okazało się, że po wypchnięciu przeciwnika, a raczej w trakcie wypychania dotykał on podłoża, co powodowało wygraną przeciwnika. Nie przejęłam się tym za bardzo, ponieważ to i tak były pierwsze zawody Go. W tej chwili pług jest długości około 25 mm i sprawdza się doskonale. Dalsza część konstrukcji to koła Pololu o średnicy 32 mm. Nie jest to najlepsze rozwiązanie, ponieważ mogły być dużo mniejsze, ale nie pomyślałam o tym, aby znaleźć kogoś, kto by mi takie felgi wytoczył. Opony były odlewane z poliuretanu, żeby miały lepszą przyczepność. Obudowa robota to wyfrezowane kawałki laminatu z otworami na czujniki. Nadają one Go wygląd creepera. Najgorsze i najbardziej beznadziejne rozwiązanie, którego absolutnie nie polecam to składanie robota w "kanapkę". Cztery śruby mocowały do podwozia 2 płytki z elektroniką oraz silniki. Złożyłam robota raz i mam szczęście, że jeszcze nic się nie zepsuło na tyle, aby to rozkładać ponownie. Jakość wykonania ręcznie robionych obejm z laminatu jest słaba na tyle, że wszystko wchodzi dosłownie na wcisk, jest krzywe i trzeba całą tę "kanapkę" stabilizować i podtrzymywać podkładkami i nakrętkami , których wkręcenie zajmuje wieczność. Silniki zostały przylutowane do płytek z laminatu. W silnikach Pololu HP z przekładnią 50:1 zastosowano patent z odwróconą przekładnią, przez co można je było umieścić obok siebie. Obie płytki z elektroniką zostały połączone długimi goldpinami. Oczami robota jest pięć cyfrowych sharpów GP2Y0D340K - 40-centymetrowych czujników odległości. Dodatkowo, w podwoziu zamontowano 4 czujniki białej linii KTIR0711S, ale ostatecznie ograniczyłam się do dwóch z przodu (trzeci się zepsuł, a czwarty nie działał ...). Każdy z czujników odbiciowych był przylutowany do osobnej płytki o wymiarach 4x9 mm, które robiłam własnoręcznie. Z główną płytką są połączone kablami. Na wierzchu widoczny jest też konarowy moduł startowy bezpośrednio przylutowany do goldpinów, a także dociążenie z postaci płatków ołowiu bezpośrednio przyklejone do czujnika. Nie jest to zbyt eleganckie rozwiązanie, ale powstało na szybko na ostatnich zawodach. Waga robota to 98g. 2. Elektronika Schemat stworzony został w programie Altium Designer. Całością zarządza mikrokontroler ATmega88. Do sterowania silnikami wykorzystałam popularny podwójny mostek H - TB6612. Jak już wcześniej wspomniałam, czujniki znajdują się na osobnych płytkach, natomiast na głównej są tylko złącza. Poza tymi od czujników jest też złącze do programowania i zasilające. Silniki są zasilane bezpośrednio z baterii. Natomiast cała logika oraz czujniki są zasilane ze stabilizowanego 5V. Wykorzystałam w tym celu 2 stabilizatory: MCP1825S-5002E/DB (czujniki) oraz TC1185-5.0VCT713. Robot jest bardzo szybki i wiele razy uciekał z ringu, dlatego wygodnym jest zdalne włączanie go, a zwłaszcza wyłączanie. Wadą jest brak komunikacji z robotem - przeoczyłam wyprowadzenie złącza do UARTa. Ponieważ miejsca pomiędzy podwoziem a silnikami jest bardzo mało (8 mm) dopiero po paru miesiącach udało mi się zakupić ogniwa Li-Polymer o wymiarach 3x15x20 mm sztuka i napięciu 3.6V. Pojemność 120mAh jest wystarczająca do stoczenia 3 walk po 3 rundy. 3. Oprogramowanie Kod programu został oparty o program CeBOTów - robotów microsumo stworzonych jako prezentacja KoNaRu na targach CeBIT 2013. Autorem programu jest Bartosz Wawrzacz (Baton). Nie ma w nim niczego skomplikowanego, po prostu algorytm: "znajdź i wypchnij, a jeśli zobaczysz białą linię - uciekaj". 4. Podsumowanie i wnioski Budowa Go nauczyła mnie budowy robota od podstaw - od obsługi programów typu Altium Designer lub Autodesk Inventor po praktyczne zastosowanie elektroniki, czego nie uczą nas na studiach. Robienie czegoś tak małego było sporym wyzwaniem. Na początku projektowania musiałam sobie zrobić sześcian o boku 5 cm z papieru, żeby uświadomić sobie skalę przedsięwzięcia. Jestem bardzo zadowolona też z tego, że moja konstrukcja pomimo wielu błędów i pomyłek jest w stanie mierzyć się z innymi i w dodatku wygrywać. Moje najbliższe cele to dopracować projekt i zbudować nowego robota tej samej klasy. A później może spróbować zmniejszyć jeszcze rozmiar, może w nanosumo. Albo femtosumo, żeby Felek miał z kim walczyć. Sukcesy Go to jak na razie: RobotChallenge 2013 (Wiedeń)- 1/8 finału - poniżej najważniejsza finałowa walka, widać na niej, że pług jest ewidentnie zbyt długi, przez co Go przegrał. Robo~motion 2013 (Rzeszów) - 2. miejsce Walka z ruchomym przeciwnikiem: Z nieruchomym też daje radę: A tutaj jeszcze widać, że niezbyt boi się białej linii, co też muszę poprawić: Robocomp 2013 (Kraków) - 1. miejsce, ale muszę przyznać, że konkurenci nie dopisali. Będę wdzięczna za wszelkie uwagi.
  24. 18 punktów
    Witam! Chciałbym opisać robota Trifle, którego stworzyliśmy z kolegą Jarkiem. Jako, że jest to mój pierwszy post i nasz pierwszy robot liczę na wyrozumiałość. Projekt i konstrukcja powstawały od września do połowy listopada. Trifle miał swój „debiut” na zawodach w Sosnowcu. Mechanika Konstrukcja robota opiera się na dwóch płytkach PCB wykonanych metodą termotransferu i wyciętych własnoręcznie. Napęd stanowią dwa silniki Pololu HP 30:1 oraz koła z modelu-zabawki o średnicy 34mm. Z przodu zamocowany jest Ball Caster 3/8’’. Całość wraz z baterią i wyświetlaczem waży około 330g. Elektronika Projekt płytki PCB powstał w programie KiCad. Płytki są jednostronne ze względu na użycie stosunkowo dużych elementów przewlekanych, przez co nie jest konieczne użycie połączeń po obu stronach płytki.Mikrokontroler sterujący robotem to Atmega32A firmy Atmel. Pracuje on z częstotliwością 18,432 MHz, co zapewnia odpowiedni podział częstotliwości ze względu na wykorzystanie interfejsu USART. Interfejs ten wykorzystywany jest do szybkiej zmiany parametrów robota z wykorzystaniem USB w PC, bez konieczności wgrywania programu od nowa. Mostki użyte do sterowania silnikami to L298N. Połączenie kanałów miało na celu zwiększyć wydajność prądową, lecz prąd okazał się za duży, co powodowało szybkie przepalanie się szczotek i konieczność wymiany silników. Błąd udało się naprawić wykorzystując ograniczenie prądowe zbudowane na nieużywanych komparatorach. Czujniki linii to 11 układów KTIR0711S wraz z czterema komparatorami LM339. Sygnał z fototranzystora KTIR0711S jest podciągnięty do +5V a następnie podany na wejście nieodwracające układu LM339. Tam jest porównywane ze napięciem wygenerowanym przez procesor (PWM i układ RC) a sygnał wyjściowy z komparatora trafia bezpośrednio do procesora na wejścia logiczne. Zmienne napięcie odniesienia generowane przez procesor umożliwia w łatwy sposób dopasowanie się czujników do aktualnego oświetlenia jak i jasności trasy. Nasz robot wyposażony jest w wyświetlacz LCD 2x16 dla lepszego zobrazowania pracy procesora, nie jest on konieczny w trakcie samego przejazdu trasy. Procesor ma również możliwość odczytywania komend sygnału RC5 z wykorzystaniem układu TSOP2236, które mogą włączyć bądź wyłączyć tryb jazdy. Na płytce jest również miejsce na czujnik odległości Sharp GP2Y0D340K, ale jak dotąd nie był on wykorzystywany. Program Algorytm sterujący robotem jest napisany w języku C i opiera się głównie na regulatorze PID, z czego część całkująca ma bardzo niewielkie znaczenie i jest używana tylko wtedy, gdy jest to konieczne. W robocie jest również zaimplementowany algorytm wykrywania kątów prostych, co poprawia prędkość na trasie z takimi kątami. Ponadto w programie jest algorytm kalibracji czujników KTIR0711S do aktualnych warunków na trasie oraz możliwość sterowania włącz/wyłącz za pośrednictwem pilota do TV. Zasilanie Całość zasilana jest z pakietu Li-pol 3S 11.1V 1000mAh Podsumowanie Podsumowując, naszą pierwszą konstrukcję uznajemy za w miarę udaną. Staraliśmy się wzorować na najlepszych konstrukcjach przedstawianych na forum. Dzięki niej przetestowaliśmy i zweryfikowaliśmy różne rozwiązania i zdobyliśmy doświadczenie niezbędne do budowy nowych lepszych konstrukcji, co bylo głównym celem budowy robota. Osiągnięcia 4. miejsce - ASTOR Robot Challenge - Line Follower 8. miejsce – Robotic Arena 2011 – Line Follower Zdjęcia Filmy
  25. 17 punktów
    Malutki robocik kroczący "Gramek" to konstrukcja którą zbudowałem "for fun" w ciągu jednego dnia, z rzeczy które miałem pod ręką. Robot zbudowany jest z trzech 9-gramowych mikroserw Turnigy TG9e, baterii Li-ion Nokia BL-5C (bardzo popularna) o pojemności 1020mAh która robi jednoczesnie za podstawę robota, oraz płytki "teensy 2.0" na której znajduje się atmega32u4. 6 nóg robota zrobionych jest z odpowiednio wygiętych 3 spinaczy biurowych, na które nałożyłem rurkę termokurczliwą (kilka warstw rurek różnej grubości znajduje się na "stopach"). Nogi są przyklejone do orczyków na HotGlue. Serwa połączone są ze sobą grubą, gąbkowatą, dwustronną taśmą klejącą, a całość jest przyklejona do baterii taśmą izolacyjną. Jednym słowem wszystko na klej/taśmę, bez żadnej ramy czy śrubek. Zastosowałem płytkę Teensy ponieważ po pierwsze miałem ją w domu do testów, po drugie ma malutkie wymiary (30x18mm) i idealnie pasowała do tego projektu, a po trzecie dzięki użyciu "teensyduino" mogłem używać środowiska Arduino w którym bardzo szybko napisałem kod. Żeby Gramek był robotem, a nie jedynie zdalnie sterowaną platformą, musiał mieć czujniki - w domu miałem tylko 2 fotorezystory (w dodatku o innych charakterystykach...), więc w ten sposób powstał kroczący światłolub:) Na początku chciałem zastosować czujnik odległości zrobiony z diody IR i fototranzystora, ale "na pająka" ciężko to było zrobić, więc pozostałem przy fotorezystorach, które są bezpośrednio przylutowane (na długich nogach) do padów w Teensy, dzięki temu, poza Teensy, nie musiałem robić żadnej dodatkowej płytki. Teensy nie ma regulatora, dlatego zarówno serwa jak i płytka zasilana jest bezpośrednio z baterii. Programowanie odbywa się poprzez gniazdo miniUSB znajdujące się na płytce, przy użyciu bootloadera w atmedze32u4. Parę fotek: Oraz kilka filmików: Niestety gdy jest jasno, to są kłopoty z odpowiednim sterowaniem (mam na myśli światło), tym bardziej że na filmiku używałem słabej diodowej latarki. W ciemności działa zdecydowanie lepiej, ale za to na filmiku nic nie widać, więc nie wrzucałem. Inspiracją do budowy tego robota był "Pololu Micro Maestro Hexapod" który został zbudowany przez tą firmę w celu prezentacji możliwości sterownika serw MicroMaestro. Filmik prezentujący oryginalnego hexapoda Pololu: Jest kilka zasadniczych różnic pomiędzy moim robotem, a pololu: Gramek nie używa sterownika Maestro, zamiast tego używa Teensy. Gramek używa fotorezystorów (jest światłolubem), zamiast cyfrowych sharpów. Bateria również jest zupełnie inna, zresztą samo umiejscowienie elementów jest różne. Mój robot ma mniejsze nogi, przez co mieści się w dłoni i zgrabniej wygląda, ale niestety jest wolniejszy. W zasadzie mógłby być szybszy - ograniczenie wynika po pierwsze z zasilania serw bezpośrednio z 3,7V zamiast 6V, a po drugie napisałem "chód" w ten sposób, że w danym momencie czasu w ruchu są maksymalnie 2 serwa jednocześnie, a nie wszystkie 3, przez co, cała "ramka" chodu trwa dłużej. Nie chciałem ruszać 3 serwami jednocześnie by nie przeciążać baterii, która jest bardzo kiepska - nie mierzyłem co prawda prądów, ale bałem się, że 3 serwa naraz to będzie za dużo dla bateryjki z telefonu komórkowego. Dodatkowo, pomiędzy poszczególnymi ruchami serw, w kodzie zdefiniowane są opóźnienia, bo bez nich, robot śmiesznie skakał, jak ten hexapod pololu co widać na filmiku - trochę nie naturalnie to wygląda. Koszt: - bateria: free (ze starego telefonu) - serwa: 3x12zł - teensy: free (nie liczę tej płytki jako koszta, bo miałem ją dużo wcześniej do testów, zresztą po rozebraniu robota nadal mogę ją wykorzystać, ale kosztuje $16) - spinacze biurowe: free:) - 2 fotorezystory, 2 oporniki, mikro-włącznik: <2zł - rurki termokurczliwe: 2zł Wymiary robota: - z nogami: 7 x 9 x 5 cm (dług x szer x wys) - bez nóg: 6 x 4x 4 cm (dług x szer x wys) Waga: - 64g (z akumulatorem) Podsumowując, jestem bardzo zadowolony z tej konstrukcji, pomimo tego, że powstała w jeden dzień. Zbudowałem chyba najprostrzego możliwego robota kroczącego bardzo tanim kosztem, ucząc się przy tym programowania chodu dla tego typu konstrukcji, co nie jest takie trywialne jak się mogło wydawać, nawet dla tak prostego robota, zbudowanego z 3 serwomechanizmów.
  26. 17 punktów
    Przedstawiam Wam robota „Rush” klasy minisumo. Prace nad nim rozpocząłem w listopadzie w 2012r. i po ok. 5 miesiącach konstrukcja była gotowa. Pierwszym turniejem robota miał być Robomaticon, lecz z powodu awarii silnika nie mogłem wystartować. A teraz kilka słów o nim... Elektronika Całość elektroniki znajduje się na jednej płytce, która stanowi jednocześnie podstawę konstrukcji. Mózgiem robota jest procesor Atmega32 o taktowaniu zewnętrznym 16MHz. Jako czujnik przeciwnika wykorzystane zostały czujniki cyfrowe Sharp o zasięgu 40cm, ułożone w półokręgu, jeden patrzący w przód, dwa pod kątem 45° i 2 patrzące na boki. Do wykrywania linii służą cztery KTIRy, dwa z przodu i dwa z tyłu, podłączone do procesora przez komparator. Do zatrzymywania robota służy odbiornik TSOP. Sterowaniem silników zajmują się dwa mostki TB6612, po jednym na silnik. Robot zasilany jest z pakietu Li-pol 2S 700mAh. Płytka została wykonana w firmie Satland Prototype. Mechanika Podstawą konstrukcji jest płytka z elektroniką o grubości 1,5mm, do której przymocowane są silniki i metalowa obudowa. Robot napędzany jest dwoma silnikami Pololu HP 30:1. Koła składają się z felg wykonanych metodą druku 3D oraz opon odlanych z silikonu. Robot waży 470g. Program Program napisany został w bascomie. Robotem steruje regulator P. Osiągnięcia 3. miejsce – ROBO~motion 2013 Rzeszów Podsumowanie Ogólnie jestem zadowolony z konstrukcji, choć zawiera ona kilka niedociągnięć. Założenia zostały spełnione, nabrałem nowego doświadczenia, które na pewno przyda się przy budowie kolejnego robota. Zapraszam do zadawania pytań. Zdjęcia Filmiki (po więcej filmików zapraszam na kanał)
  27. 17 punktów
    Witajcie, jest to ulepszona pod każdym względem wersja mojej pierwszej machiny MacLiner. Początkowy zarys konstrukcji pojawił się w mojej głowie po zawodach Sumo Challenge 2011, w których brałem udział (zająłem wtedy przedostatnie miejsce). Ta sytuacja bardzo zmotywowała mnie do stworzenia czegoś szybszego, zwinniejszego. Tak powstał MacLiner 2.0. Chciałbym serdecznie podziękować użytkownikowi Sabre, dzięki któremu mogłem liczyć na szybkie przesyłki z Chin i nieocenioną pomoc w innych przelewach. Dziękuje także Firmie SALTAND Prototype, która udzieliła mi ogromnej zniżki na obwody drukowane. Model w Inventorze Dzięki zastosowaniu najnowszych technologii jakie daje Pakie AutoCAD, mogłem z bardzo wielką dokładnością określić położenie wszystkich elementów. Plik w formacie .dwg został przekonwerowany za pomocą programu DXF2SCR na format, który mogłem w dalszym etapie otworzyć w EAGLE i takim sposobem miałem gotowy zarys obu płytek. Takie wariacje pomogły mi także w doborze frezów pod Enkodery. Do tego ostatniego z pewnością wrócę pod koniec opisu. Szkic z projektu zawarty na rysunku 1. rys.1 Model LF w programie Inventor Moduł Listwy z Czujnikami Jak dobrze wiadomo jest to element, na który działa największa siła bezwładności. W tej wersji zastosowałem parzystą liczbę czujników. Jest ich aż 20. Część osób pewnie stwierdzi, że jest ich dość sporo i tutaj się z Wami zgodzę, trochę przerost formy nad treścią, aczkolwiek ważne, że się sprawdza. Poniżej (rysunek 2) zamieściłem fotografię, na której widać rozstawienie sensorów linii (KTIR0711S). Pewnie zapytacie z czego zrobione są podpory, otóż jest to zwyczajna taśma izolacyjna - działała wyśmienicie . Dodatkowo robot został zaopatrzony w czujnik zderzeniowy (GP2Y0D340K). Posiada on zasięg 40cm. Robot jadąc z predkością powyżej 2m/s potrzebuje z dużym wyprzedzeniem określić gdzie znajduje sie przeszkoda(cegła). rys.2 Moduł listwy z czujnikami Zasilanie W przpadku użycia robota z turbiną oczywiste staje się, że trzeba zastosować źródło napięcia o dość dużej wydajności prądowej. Wybór padł na pakiet Li-Pol(rysunek 3) o napięciu znamionowym 7.4v, pojemności 300mAh i wydajności prądowej równej 13.5A. Masa pakietu wynosi 23 gramy. Musiałem go troszkę zmodyfikować, a konkretnie złącze, ponieważ w pierwotnej postaci łatwo było o pomyłkę. rys.3 Pakiet Li-Pol Dualsky (zdjęcie pochodzi ze strony Botland.com.pl) Bezpośrednio z pakietu zasilane są silniki oraz napęd tunelowy. Większość elementów (mikrokontroler, czujniki, logika stopnia mocy oraz moduł bluetooth) wymagały napięcia 5V. Postanowiłem zastosować do tego celu przetwornicę ST1S10PHR. Bardzo zdziwił mnie fakt, że dość spora liczba osób skarżyła się na ten element. Przykładem może być "strzelająca turbina", o której sporo czytałem na forum. Osobiście wszystkie ścieżki poprowadziłem zgodnie z notą katalogową i do tej pory nie mam z nią najmniejszych problemów. Wyjątkiem jest moduł Bluetooth, który na płytce posiada stabilizator liniowy Low Dropout na 3.3v(LM1117), lecz zasilam go z układu BEC wbudowanego w sterownik silnika 3F(tego od napędu tunelowego). Poniżej przedstawiam schemat blokowy całego zasilania (rysunek 4). rys.4 Schemat blokowy zasilania Chassis - czyli bazowy element Główna płyta(rys.5):parametry: laminat FR-4, grubość 2mm, na której umieszczone są elementy take jak : Mikrokontroler ATmega 128, moduł TB6612, komparatory LM339D, przetwornica ST1S10PHR, odbiornik TSOP2236, złącze programatora. Zdecydowałem sie na użycie tak potężnego 8 bitowego procesora z paru względów: ogromna ilość wejść/wyjść (53), dobre ułożenie pinów, interface UART połączony z liniami programatora, 8 przerwań zewnętrznych. Nie zastosowałem 2. procesora do dekodowania kodu RC5 ponieważ, wydawało mi się to zbędne. Płytka powinna mieć grubość 1.5mm, tak jak było to w planach (ale wiadomo firma także może się pomylić ). rys.5 Chassis Stopień mocy - TB6622FNG Jako sterownik silnikami zastosowałem gotowy, dwukanałowy moduł wyprodukowany przez firmę Pololu(rysunek 6). Doszedłem do wniosku, że nie warto stosować wiecej niż 1 mostek (przynajmniej na razie ). Wydajnośc prądowa tego układu to 1A na kanał. Zdażały się sytuacje, gdzie robot w fazie testów zwyczajnie uderzał w elementy przed nim (np. ściana), lecz mostek za każdym razem wytrzymywał. ATmega komunikuje się z mostkiem za pomocą 7 linii(4-odpowiedzialne za kierunek, 2- sygnały PWM, STBY- wyłączenie układu). rys.6 Stopień mocy Bluetooth- czyli zapanuj nad bestią Na pokładzie robota znajduje się moduł bluetooth (BTM-222). Jak juz wczesniej wspomniałem, zasilany jest on z układu BEC. Jego zadaniem jest zdalne startowanie i zatrzymanie robota. Robot dzięki temu może zostać "sterowny" z poziomu np. telefonu, komputera. Układ zamontowany jest na baterii za pomocą rzepu przemysłowego. Na rysunku 7 zamieszczona jest mozaika ścieżek. rys.7 Moduł Bluetooth Aplikacja na telefon została napisana przeze mnie w środowisku NetBeans w języku Java. Program przystosowany zarówno na telelefon zaopatrzony w ekran dotykoy jak i pospolitą klawiaturę. Rysunek 8 zawiera screen z aplikacji. rys.7 MacLiner 2.0 APP Turbina- Up to 2m/s Napęd tunelowy jest teraz nieodzownym elementem każdego szybkiego robota. To dzięki niemu robot jest w stanie utrzymać się na torze przy prędkościach 2m/s. Poszedłem utartą scieżką i postanowiłem zakupić EDF27. Silnik, który znajduje się w turbinie potrafi rozpędzić wirnik do zawrotnych prędkości (prędkość łopaty zwiększa się o 11000 obrotów na każdy wolt). Niestety zapłaciłem najwyższą cenę przed zawodami Sumo Challenge 2012. Podczas testów do turbiny dostało sie ciało obce, w wyniku czego wirnik wpadł w oscylacje scierając się o tunel turbiny. Oczywiście na kolejne zawody zaopatrzyłem sie w kolejną. Silnikiem steruje regulator PLUSH 6A. Poniżej (rysunek 8) zdjęcie popularnego napędu tunelowego. rys.8 Turbina EDF27 Napęd i Koła Robota *Napęd tworzą dwa silniki Pololu HP 10:1(wraz z tylną osią) *Parametry techniczne: *Obroty na biegu jałowym przy zasilaniu 6V: 3000 obr./min; *Prąd biegu jałowego (6V): 120mA; *Prąd szczytowy: 1600mA; *Moment obrotowy: 0,3 kg*cm (29 mNm); *Wymiary: 24 x 10 x 12 mm; *Masa: 10g Jako kół postanowiłem użyć znanych z mojej wcześniejszej konstrukcji - Pololu 32mm. Enkodery - Szósty zmysł W robocie zostało przewidziane miejsce na enkodery optyczne wymontowane z myszki. Będą one w przyszłości służyły do mapowania trasy oraz jednej ciekawej rzeczy(Wizja podczas snu ). Jeśli projekt z dodaniem enkoderów się uda, z pewnością się nim podziele. Program Program został napisany w języku C w środowisku AVR-Studio. Zaimplementowany algorytm proporcjonalno-rózniczkujący pozwolił na płynną jazdę z dużą prędkością. Częstotliwość wykonywania pętli głównej 90-100Hz. W przyszłości kod zostanie przepisany na jezyk niskiego poziomu jakim jest Asembler. Osiągnięcia III miejsce Line Follower z Przeszkodami Sumo Challenge 2012 (bez Turbiny) VII miejsce Line Follower Sumo Challenge 2012 (bez Turbiny) VII miejsce Line Follower Robotic Arena 2012 • I miejsce Line Follower Robo-NET 2013 Tips- porady Podczas zawodów przez przypadek można dojść do paru fajnych odkryć. Szczotki- powszechnie stosowane jako "magnes" na zanieczyszczenia kół. Mi osobiście wpadł także całkiem ciekawy pomysł. Stało się podczas Robotic Arena 2012. Moje włosy zawsze wymagały ułożenia przed jakimkolwiek wyjściem. Dlatego zawsze biorę ze sobą pojemnik z gumą do stylizacji włosów . W czasie poszukiwania lustra dostałem olśnienia- Dlaczego nie użyćby tego specyfiku do czyszczenia bieżnika opon przed startem...? Pomysł okazał sie strzałem w dziesiątkę! Filmy:(bez Turbiny) Galeria A tutaj zbiór fotografi: Płyta_Główna_Schemat.pdf Płytka_Czujniki_SCHEMATIC.pdf Program_Java.rar Płyta_Główna_PCB.rar Płyta_Czujniki_PCB.rar Bluetooth_Schemat_PCB.rar
  28. 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
  29. 15 punktów
    Witam. Po dłuższym czasie mojej nieobecności na forum postanawiam przedstawić mojego (z kilku na które przyjdzie czas by je zaprezentować ) robota. Zwie się on FRodo i jest robotem o niekonwencjonalnej budowie. Strona techniczna FRodo posiada przekładnię Tamiya i gąsienice pololu. Mimo tak słabego napędu robot mało co nie rwie gruntu dzięki ustawieniu go na najmniejsze przełożenie i dołożenie mu mocniejszych silników. Podwozie to płyta główna na której znalazły się tradycyjne mostki L293Dx2, sharp 340K oraz atmega32. Brakuje tam czujnika odbiciowego ale to sprawia że robot niczego się nie boi. Nad podwoziem znajduje się owa przekładnia ,bateria(500mAh) ,trochę ołowiu i coś czego jeszcze nie było w żadnej maszynie czyli podnośnik. Znajduje się tam także 3-kierunkowy przełącznik z cd-roma do wcześniejszego wpisania do pamięci gdzie znajduje się przeciwnik. Podnośnik i wola powstania Siedząc raz na lekcji wpadłem na pomysł jak przeważyć na przeciwnikiem przy użyciu serwa i kawałka laminatu. Wykonałem na szybko płytę główną. Ze złomu znalezionego z rozebranych starych robotów zmontowałem nowe podwozie o wysokości 3,5cm i zainstalowałem serwo po czym doczepiłem do niego kawałek laminatu.Tak oto powstał FRodo wtedy jeszcze figurujący pod nazwą player1. Po kłopotach z silnikami w przekładni oraz znacznej modyfikacji tej maszyny nazwałem go FRodo. Tryb koło włącznika funkcjonuje jako łożysko do podnośnika aby serwo zbytnio się nie męczyło. Oprogramowanie Soft został napisany w bascomie zajmuje on 25% pamięci. Kod ma ponad 550 linijek i zakłada on wliczanie kontu przyłożenia oraz tworzy tablicę obecności przeciwnika właśnie z takiego powodu mam tylko jeden czujnik ponieważ przy większej ilości musiał bym strwożyć nowe tablice danych a gromadzenie większej ilości danych zabiera takty procesora i wymaga bardziej rozbudowanego kodu. Skrypt ten zastosowałem w obydwu moich nowych minisumo i obydwa nie powalają sposobem wykonania ale za to dostały się do półfinałów. Pod podnośnikiem znajduje się deska rozdzielcza na której znajdują się złącza jednym z nich jest rs232. Podłączam do niego moją elektroniczną ściągę i mogę zmieniać wypełnienie PWM oraz wprowadzać wartości rożnych zmiennych takich jak współrzędne na dohyo. Wnioski z budowy robota Ogólnie jestem zadowolony z maszyny. Fakt że wydałem na niego tylko 60zł jest tym śmieszniejszy że odbywając 3 walki z robotem Enova wygrałem 2 więc śmiało stwierdzam że ta maszyna jest czarnym koniem zawodów w Rzeszowie. W przyszłości dołożę więcej czujników i wymienię podnośnik na metalowy. Poniżej dodaję zdjęcia.
  30. 15 punktów
    Siemka! Dziś chciałbym przedstawić Wam moją najnowszą konstrukcję - robocika nanosumo. Robot powstawał w sumie przez może półtora tygodnia, nie licząc dni przerwy, przesyłki itp. W większości został zbudowany z elementów które miałem pod ręką, więc koszt to jakieś śmieszne 30zł za serwa i li-pole z Hk. Elektronika: - Procesor to atmega8 taktowana wewnętrznym oscylatorem 8Mhz - mostki si9986cy sterowane ok 70%wypełnienia PWM - dwa czujniki linii ktir0711s - dwa czujniki przeciwnika na tsopach i diodach ir - akku li po 3,7v 240mah Co ciekawe musiałem spiłowaćdiody 3mm do ok 1mm ( prawie samych blaszek) a i tak ładnie działają ( robot obejmuje swoim zasięgiem ok 3/4 ringu. Kolejna przeróbka była przeprowadzona na tsopach ( http://www.vishay.com/ppg?81781 ). Ich soczewka za bardzo wystawała, a że nie mogłem jej zeszlifować, gdyż zrobiłaby się matowa, po prostu ją ukruszyłem, i zdjąłem blaszkę widoczną w linku powyżej. Mechanika: Są to w sumie dwa silniczki od mikro serw i dopasowana do nich przekładnia zębata, przyczepiona do laminatowych wsporniczków za pomocą osi. Chyba najlepiej zilustrują to zdjęcia : Programowanie: cały kod został napisany w C (Eclipse), jest bardzo prosty, nic odkrywczego - robot kręci się wokół własnej osi dopóki nie zauważy przeciwnika, atakuje gdy go zobaczy, a gdy najedzie na linię cofa się na środek ringu, czyli standard. Galeria i filmik : Starsza wersja robota: I nowa wersja, póki co jeszcze nie dokończona pod względem estetyki, ale jak moja siostra wróci z zagranicy to pewnie strzeli mi co,ś ładnego na zderzakach (aha i jeszcze odlutuję złącza do programowania ) i dwa filmiki : Zakończenie: Ogólnie jestem zadowolony z robota, ładnie spycha "przeciwników", i jest całkiem szybki. Jedyne co mi się nie podoba to złącze do programowania, ale to już nie jest taki wielni problem. Mile widziane komentarze i krytyka Pozdrawiam
  31. 15 punktów
    Vampire2 to moja druga konstrukcja micromouse. W porównaniu z pierwszą konstrukcją (Vampire) wprowadzono pewne zmiany mechaniczne jak dodanie żyroskopu, zmiana enkoderów oraz zmniejszenie wymiarów płyty PCB. Konstrukcja mechaniczna i zasilanie Podwoziem robota jest płyta PCB wykonana w firmie Satland Prototype. Napędem są silniki Pololu 30:1 sterowane za pośrednictwem mostka TB6612. Koła standardowe Pololu. Ostatecznie udało się uzyskać myszkę o wymiarach maksymalnych 95x75mm, co pozwala poruszanie się po skosie. Prześwit robota został ustawiony dla bezpieczeństwa na 4mm. Maksymalna prędkość jaką udało mi się uzyskać na tych silnikach to 1.6m/s. Robot zasilany jest z akumulatora litowo-polimerowego. W tej chwili jest to Pakiet LiPol Dualsky 150mAh 7.4V. Pakiet spokojnie wystarcza na wykonanie przejazdów podczas zawodów. Elektronika Mózgiem robota jest mikrokontroler STM32F407VGT6. Głównymi cechami są: taktowanie 168 MHz, 192kB RAM, 1MB flash, duża liczba peryferii z czego wiele ze wsparciem DMA, sprzętowa obsługa wejść kwadraturowych, wiele dostępnych interfejsów komunikacyjnych. Model ten stosowany jest w płytce ewaluacyjnej Discovery, dzięki czemu po testach z płytką ewaluacyjną kod nie wymagał żadnych zmian aby przenieść go na robota. W konstrukcji użyto enkodery magnetyczne AS5306 oraz magnesy zamocowane na obręcze kół z 72 polami magnetycznymi. W rezultacie z enkoderów otrzymujemy 5700 imp/obrót co daje dokładność 0,017 mm/imp. Jako dalmierzy użyto diod podczerwieni SFH4511 w parze z fototranzystorami TEFT4300. Diody sterowane są poprzez układ ULN2003, każda osobno. Dalmierze zapewniają dość dobrą charakterystykę w zakresie 0-20 cm. Robot wyposażony jest w żyroskop cyfrowy L3GD20. Posiada on bardzo mały dryf, zakres do +-2000st/s oraz interfejs SPI. Interfejs użytkownika Do wybierania trybów pracy wykorzystano 4 przyciski. Na płycie są również 4 diody. Płyta posiada wyprowadzenie dla wyświetlacza z telefonu Nokia 3310, który obecnie nie jest zamontowany. Wyprowadzony został również interfejs UART do komunikacji z PC. Oprogramowanie Oprogramowanie w dalszym ciągu jest rozwijane. W aktualnej wersji uzyskano stabilną jazdę w labiryncie. Algorytm pozwala na przeszukiwanie labiryntu pole po polu z zatrzymywaniem się na każdym polu. Wyszukiwanie trasy przy użyciu algorytmu floodfill z dodanymi różnymi wagami dla prostych i zakrętów, odpowiednio 1 i 3. Sterowanie dynamiką bazuje na pomyśle opisanym w [Programowanie] Sterowanie robotem mobilnym klasy (2,0) . Podsumowanie Robot spełnił moje oczekiwania. Pierwszy cel, czyli stabilne i przewidywalne zachowanie w labiryncie, został osiągnięty. Trwają prace nad rozwojem algorytmu przeszukiwania aby możliwe było przeszukiwanie bez zatrzymywania się, a w przyszłości również wymiana i przystosowanie robota do silników z przekładnią 10:1. Galeria Osiągnięcia I miejsce w kategorii MicroMouse na zawodach Robomaticon 2013 w Warszawie Pozdrawiam
  32. 15 punktów
    Witam, jest mój pierwszy temat na forum więc proszę o wyrozumiałość. Chciałbym w skrócie opisać efekt (mojej oraz mojego kolegi) pracy inż. Robot został nazwany "TriHex" porusza się w trybie trójpodoporowym. Założeniami projektu było: - poruszanie się w trudnym terenie, - brak zdefiniowanego przodu, - zastosowanie kinematyki odwrotnej. 1.Mechanika: Robot został zaprojektowany w programie Catia V5. Elementy zostały wykonane z laminatu szklano-epoksydowego oraz giętego aluminium. Napędy to 12 serw TowerPro 995 (mają swoje zalety i wady) oraz 6 serw TowerPro 5010. Każda z nóg wyposażona jest w krańcówkę. Umożliwia to robotowi badanie terenu po jakim się porusza, a przez to dostosowanie ułożenia nóg do terenu. Konstrukcja nogi wygląda następująco: 2. Elektronika: Robot wyposażony jest w dwie płytki PCB. Jedna oparta o mikrokontroler Atmega8 odpowiada za: - pomiar stanu akumulatorów Li-Pol o łącznej pojemności 4400 mAh, - wyświetlanie wyników pomiaru na ekranie lcd. Druga płytka oparta została o układ Atmega32, odpowiada za: - obliczenia kinematyki, - wysyłanie poleceń do kontrolera serw (układ Pololu - sterownik Maestro18), - sprawdzanie stanów krańcówek oraz interpretację poleć wysyłanych przez bluetooth (robot wyposażony jest w prosty układ bluetooth działający jak zwykły RS-232) Oba mikrokontrolery pracują z częstotliwością 16 MHz. Zastosowano również układ BEC do zmiany napięcia akumulatorów z 7.4V na 6V. 3.Sterowanie: Robot sterowany jest zdalnie przy pomocy protokołu bluetooth. Posiada pewną autonomię ze względu na własne algorytmy znajdywania podparcia dla nogi oraz porusz się chodem trójpodporowym. Wszelkie obliczenia kinematyki oraz trajektorii ruchu nóg są obliczane na bieżąco w Atmedze32 (obawiałem się, że może nie wyrabiać ale się udało ) W ramach projektu została także napisana prosta aplikacja na środowisko Windows do obsługi robota. 4.Dalsze etapy rozwoju: W ramach rozwijania projektu chcemy zastosować akcelerometr, aby robot mógł utrzymywać poziom niezależnie od podłoża, zastosować inne typy chodu, a także zastosować dlamierze na korpusie, aby robot zyskał jeszcze większą autonomię. 5.Galeria o raz film: fot. Aneta Regulska Na zakończenie chciałem podziękować za tak przydatne artykuły znajdujące się na tym forum. Okazały się bardzo pomocne w konstrukcji naszego robota. __________ Komentarz dodany przez: Bobby Poprawiłem film na przyszłość - używaj tagów [youtube ]
  33. 15 punktów
    Witam Prezentuję mojego drugiego robota, jakiego zbudowałem w mojej karierze robotyki. Robot jest następcą Nany_1, który oczywiście został przedstawiony na forum. Prezentowany robot to platforma wielozadaniowa o nazwie Nana_2. Powstał specjalnie na potrzeby mojej pracy dyplomowej: "Projekt i badanie podstawowych układów elektronicznych robota mobilnego". Szybkie streszczenie budowy robota: Konstrukcja: - "pleksa", aluminium, - wymiar ramy podwozia: 35x25 cm - masa: 2kg Napęd: - 4 zmodyfikowane serwomechanizmy modelarskie Tower Pro SG-5010 - koła: prawdopodobnie pololu 90 mm Czujniki: - HC-SR04, ultradźwiękowy czujnik odległości 2-300cm - sharp analogowy GP2Y0A21YKOF 10-80cm - czujnik odbiciowy IR fala modulowana, detektor TSOP1736 - 2x czujnik odbiciowy IR (fototranzystor, dioda IR) fala niemodulowana - sharp cyfrowy GP2Y0D810Z0F 10cm - czujnik linii (3xTCRT5000) - czujnik temperatury, DS18B20 - czujnik światła, fotorezystor - moduł odbiornika GPS, FGPMMOPA2-P - akcelerometr, MMA 7361 (pulpit sterujący) Dodatkowe elementy: - 2x serwomechanizmy Tower Pro SG-5010 do obracania dalmierzami - 2x Mostek H (zmodyfikowana wersja z Nany_1) - odbiornik kodu RC5 TSOP32136 - moduły radiowe 2.4 GHz RFM70 - wyświetlacz graficzny, 128x64 KS0108 Układy logiczne: - główny mikrokontroler ATmega16 - mikrokontroler pomocniczny ATmega88 (wymiana informacji poprzez interfejs SPI) - mikrokontroler pulpitu sterującego ATmega16 Realizowane funkcje: - zdalne sterowanie podczerwienią - zdalne sterowanie za pomocą transmisji radiowej i akcelerometru - śledzenie linii - poruszanie autonomiczne - zbieranie informacji z czujników, oraz prezentowanie ich na pulpicie sterującym Filmik, mam nadzieję że nie usuną z powodu muzy;-) Przyszłość ?? hmmm. Zmiana napędu na wydajniejszy, wykorzystanie modułu GPS do autonomicznego odnajdywania wskazanego położenia geograficznego. Zobaczymy co z tego będzie. Pozdrawiam serdecznie
  34. 15 punktów
    Przedstawiamy naszego pierwszego robota. Przygodę z robotyką zaczęliśmy 1 marca z zerową wiedzą na temat elektroniki i programowania. Po niespełna dwóch miesiącach wystartowaliśmy na pierwszych zawodach w Gdańsku (TTR 2012). W przerwie między zawodami (Gdańsk-Poznań) robot został wyposażony w nową płytkę oraz pakiet Li-pol. Wykorzystując zaoszczędzone miejsce po bateriach R6 i płytce DIP udało się zamknąć wszystko pod daszkiem. Mechanika: -Korpus wykonany z laminatu, zlutowany i polakierowany, wszystko w kuchni studenckiego mieszkania. -Silniki: 4x Pololu 50:1 HP. -Koła: 4x Solarbotics RW2i, aktualnie silikonowe odlewy. Elektronika: -Czujniki 4x Sharp GP2Y0D810Z0F (10cm), 1x Sharp GP2Y0D340K (40cm). 3x TCRT7000 (czujniki linii). -Mikrokontroler Atmega 32 -Mostek L298 -Komparator LM339 -Zasilanie pakiet Li-pol Dualsky 7,4V 800mAh 20C. Wnioski: -Koła Solarbotics... Nędza. -Konstrukcja z opadającym grawitacyjnie klinem - bez szans na zwycięstwo z szybkimi przeciwnikami. -Zbyt wysoko położony środek ciężkości (w drugiej wersji poprawione). -Jeden mostek L298 to zbyt mało na cztery silniki. -Słaby program. -Plątanina kabli ujmuje wizualnie i praktycznie. Pomimo wielu niedociągnięć jesteśmy dumni ze swojej konstrukcji. W kwietniu wystartowaliśmy w zawodach, gdy na początku marca nie mieliśmy kompletnie pojęcia o podstawach elektroniki i programowaniu mikrokontrolerów. Z pewnością największym sukcesem robota jest masa wiedzy i doświadczenia, które pozwolił nam zdobyć. Mamy nadzieję, że następny zawodnik minisumo dostarczy również radości z wyników na zawodach. __________ Komentarz dodany przez: Treker Poprawiłem post zgodnie z wymogami działu (zdjęcie jako załącznik, brak grafik na początku, proszę o tym pamiętać następnym razem).
  35. 15 punktów
    Po długim czasie postanowiłem w końcu opisać szerszemu gronu moją pierwszą poważną konstrukcję (pomijając LFa sprzed roku, robiącego teraz za płytkę uniwersalną z przetwornicą). Postaram się zgrubnie opisać konstrukcję, a szczególny nacisk położyć na szereg popełnionych błędów i spostrzeżeń powstałych podczas konstrukcji i programowania. Robot "IPreferPI" powstał w ramach warsztatów rekrutacyjnych Koła Naukowego Robotyków KoNaR na PWr. Gdy zaczynałem nad nim pracę, Devil jeszcze nie istniał, a inne myszy startujące w zawodach (chyba w Krakowie już wtedy była kategoria MM) przeważnie obijały się o ściany i raczej do żwawych nie należały. Celem projektu było... cóż, skopanie im tyłków. Dlatego też w założeniach miała to być lekka, zwrotna i szybka mysz o sensoryce, napędzie i płynności ruchów (choć niekoniecznie prędkości) robotów japońskich. Częściowo udało się to osiągnąć, lecz w trakcie programowania trafiłem na problem z enkoderami, którego nie udało się rozwiązać - szczegóły niżej. Mechanika Cała mechanika oparta jest o płytkę laminatu grubości 1,5mm. Bezpośrednio do niej przykręcone się silniki, od spodu na taśmę izolacyjną przyklejona jest kulka podporowa. Z powodu zastosowania enkoderów magnetycznych mocowanych na zewnątrz kół konieczne było wyrzeźbienie odpowiednich stelaży. Magnesy zostały wklejone w "kołpaki" wycięte z laminatu, a te przyklejone kropelką do felgi. Mimo że wszystko robione było na oko - magnesy zostały umieszczone idealnie nad środkiem enkodera i nie przemieszczają się w trakcie obrotu koła. Montaż kulki podporowej Szczegóły montażu enkodera W teorii jest to konstrukcja bardzo prosta, ale jednak popełnionych zostało sporo błędów: [*]nie przewidziano miejsca na otwory pod śruby mocujące kulkę podporową, przez co jest ona przyklejona taśmą izolacyjną. Ma to też swoje zalety - mocowanie takie dobrze tłumi drgania i ewentualne nierówności podłoża; [*]diody IR oraz fototranzystory użyte w roli czujników odległości wychodzą poza obrys płytki, przez co każde zderzenie ze ścianą, których ciężko uniknąć podczas początkowego pisania oprogramowania robota, skutkuje ich wyginaniem i koniecznością ponownego ustawiania w poprawnej pozycji; [*]tylna oś została umiejscowiona za daleko względem środka robota, przez co czasem podczas robienia obrotu o 180° robot zahacza przodem o ściankę - no i mamy bubę opisaną wyżej, albo po prostu nie robi całego zwrotu; [*]nie przemyślano sposobu wygodnego i bezpiecznego mocowania ogniw dostarczających zasilania - z pomocą znów musiała ruszyć taśma izolacyjna; [*]nie przewidziano mechanicznego wyłącznika odcinającego zasilanie, zgodnie z naszą akademikową tradycją uznanego za zbędny - a potem trzeba się było szarpać z kablami. Robot napędzany jest przez silniki Polulu HP z przekładnią 30:1, jeździ na oponach Solarbotics, które mi akurat bardzo się podobają (choć musiały zostać przyklejone do osi klejem na gorąco, bo firmowa śrubka się luzuje i generalnie jest beznadziejna). Elektronika Silniki zasilane są bezpośrednio z baterii. Cała logika oraz diody IR dostają 5V ze stabilizatora LM1117. W układzie wydzielone zostały 3 pola masy - cyfrowa (procesor i logika mostka H), analogowa (diody sygnalizacyjne i czujniki) oraz przeznaczona dla silników. Łączą się one tuż przy baterii i kondensatorze 220uF. Całość działa pod kontrolą ATMegi1284P. Wersja -4 głównie z racji na przerwania zew. na wszystkich pinach, a pamięci taki ogrom, gdyż inne były w trakcie konstrukcji niedostępne. Mikrokontroler taktowany jest przez kwarc 20MHz. Mysz wyposażona została w odbiornik podczerwieni TSOP4840 umożliwiający zdalny start/stop. Bardzo udanym pomysłem było wyprowadzenie złącza interfejsu UART, który poprzez moduł BT został wykorzystany do bezprzewodowej kontroli myszy w trakcie pisania oprogramowania i pierwszych chwil w labiryncie - bardzo polecam takie rozwiązanie, choć niestety nie da się w ten sposób wizualizować danych w matlabie (po prostu nie da się wykorzystać połączenia COM tworzonego przez BT w komputerze - potwierdzone przez pracownika na forum Matlaba). IPreferPI z zainstalowanym modułem BT Sensory zostały oparte na bazie diod IR SFH4550 oraz fototranzystorów BPV11. Diody uruchamiane są impulsowo poprzez układ ULN2003. Rozwiązanie to jest wyjątkowo skuteczne - byłem zaskoczony jak czysty, niezaszumiony i łatwy w interpretacji daje to odczyt. Rezystory między emiterami fototranzystorów a masą zostały dobrane doświadczalnie i z pewnością nie jest to 470Ohm jak na rysunku poniżej - zatrzymałem się chyba w okolicach pojedynczych kiloomów, nie mam teraz myszy pod ręką, żeby to sprawdzić. Diody IR połączone są bezpośrednio z driverem, bez oporników - zapalane są na ułamki sekund, a pozwoliło to na zwiększenie odległości i czułości czujników. Wykorzystane enkodery to AS5040 firmy AMS. Mysz zasilana jest z dwóch ogniw LiPo kupionych kiedyś-gdzieś o pojemności 250mAh. Są wystarczające do dość długiego szperania po labiryncie, a ważą niewiele i zajmują mało miejsca. Schemat ideowy elektroniki robota Oprogramowanie I tu pojawił się problem. W skrócie - ATMega najwyraźniej nie jest w stanie wyrobić się z liczeniem impulsów z enkodera. Poniżej zamieszczam najlepszy kod, jaki byłem w stanie wymyślić, ale nadal nie pozwał on na poprawną obsługę enkoderów. Objawy były następujące - przy zadaniu przejechania np. 1000 tików enkodera z prędkością powiedzmy 250 tików na sekundę robot przemieszczał się o 50 jednostek. Gdy natomiast miał przemieścić się o 1000 tików, ale z prędkością 500t/s, to jechał oczywiście szybciej, ale na odległość znacznie większą - np. 75 jednostek. Wniosek jest prosty - im szybciej jechał robot, tym więcej tików zostawało pominiętych, przez co kontrola odległości ze zmienną prędkością jazdy była niewykonalna. Byś może dałoby się to rozwiązać wykorzystując interfejs SPI w enkoderach, dokładając tam jakiś układ poboczny zajmujący się tylko obsługą enkoderów albo stosując inną sztuczkę, ale prawdę mówiąc po wykryciu źródła problemów zostałem bardzo zniechęcony do dalszej walki. Pomimo tych problemów udało się zaimplementować w miarę sensowne poruszanie się po labiryncie - chyba jedyny istniejący filmik zamieszony jest na dole. Ponieważ jednak z racji na problemy z enkoderami nie dało się polepszyć parametrów jazdy, np. wprowadzić łagodnego pokonywania zakrętów, pełen algorytm przeszukiwania algorytmu nigdy nie został do końca zaimplementowany. Zamiast tego zaczęła powstawać nowa konstrukcja, pozbawiona wszystkich wymienionych błędów, która mam nadzieję zawojuje RA2012 ISR(PCINT2_vect) // aktualna wartość enkoderów w globalnych int enkoderL, enkoderP { enkl = (PINC & (3 << 0)) >> 0; // enkodery podłączone do pinów 0,1,2,3 portu C enkp = (PINC & (3 << 2)) >> 2; // enkl - akt. stan lewego , penkl - poprzedni if(enkl != penkl) { if( (penkl & 1) ^ ((enkl & 2) >> 1) ) enkoderL--; else enkoderL++; } if(enkp != penkp) { if( (penkp & 1) ^ ((enkp & 2) >> 1) ) enkoderP--; else enkoderP++; } penkl = enkl; penkp = enkp; } Podsumowując, budowa IPreferPI przyniosła głównie olbrzymią dawkę doświadczenia jeśli chodzi o budowę, działanie i wymagania robota klasy MM. Plany były ambitne, rzeczywistość dość je unormowała, ale z pewnością całość pracy zaprocentuje w trakcie tworzenia TAU, myszy która już jest w budowie. Starałem się wspomnieć o wszystkim, co zasługuje na uwagę, ale chętnie odpowiem na wszelkie pytania i wysłucham krytyki Sabre Podążanie za kartką: Jedyny film z "labiryntu": Szczerzy kły!
  36. 14 punktów
    Ze względu na spore problemy początkujących związane z budową tzw. "Waldemara Światłoluba", postanowiłem zaktualizować informacje ze starego artykułu (znajdującego się pod tym samym adresem), poprawić błędy w nim zawarte, wzbogacić treść o większą liczbą zdjęć i schematów oraz zamieścić FAQ obejmujące najczęściej pojawiające się pytania. Do wszystkich czytających mam dużą prośbę - zanim napiszecie post z opisem problemu, jeszcze raz starannie przeanalizujcie ten tekst. Na 90%, odpowiedź na dany problem została już udzielona w samym artykule lub na forum, dlatego pamiętaj, aby używać wyszukiwarkę. Przypominam również, że nie jest to kurs podstaw elektroniki! Przed rozpoczęciem jakichkolwiek prac, proszę o dokładne zapoznanie się z tym wcześniej przygotowanym poradnikiem, który wyjaśnia wiele kwestii niezrozumiałych dla początkujących oraz o zastosowanie się do zawartych tam wskazówek. W przypadku pytań, proszę także skierować swoją uwagę na FAQ dla zielonych! Życzę miłej lektury, Damian Nowak (Nawyk) [blog]https://forbot.pl/blog/artykuly/podstawy/jak-zrobic-robota-od-zoltodzioba-do-pierwszego-swiatloluba-id4785[/blog] PCBs.pdf
  37. 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
  38. 14 punktów
    Witam, Przedstawiam naszego pierwszego robota – Outsider. Jest to robot humanoidalny którego zaprojektowanie oraz wykonanie zajęło nam nieco ponad rok. Natchnieniem do zbudowania robota była seria artykułów użytkownika mog123. Robota wykonywaliśmy we dwójkę. Ja zająłem się częścią projektową i mechaniczną, natomiast Uczony zajął się elektroniką oraz oprogramowaniem robota i aplikacją komunikacyjną z PC. w założeniach miał być stosunkowo tani, nie chcieliśmy na niego wydawać grubych tysięcy, nie wiedząc czy w ogóle będzie działał zgodnie z założeniami, jak się później okazało nie minęliśmy się z prawdą. Mechanika : Projekt robota został wykonany w programie Inventor 2013, oraz Autocad 2013. Był on wykonywany stopniowo, najpierw zaprojektowałem i wykonałem nogi. Proste szeregowe połączenie 6 serw na nogę i jednego serwa na obrót korpusu. Następnie przyszedł czas na korpus oraz ręce-po 3 serwa na rękę (Rys2). Do połączenia korpusu z nogami oraz rąk z korpusem użyłem igiełkowych łożysk wzdłużnych. Po złożeniu robota w całość przyszedł czas na pierwsze testy. Niestety okazało się że nie otrzymaliśmy zadowalających efektów, gdyż szeregowa konstrukcja nóg generowała luzy w 4 miejscach (połączenie kolana z kostką i biodrem) co sumarycznie generowało duży luz i uniemożliwiało wygenerowanie chodu robota w sposób zadowalający. Przeprojektowałem więc nogi wzorując się na strukturze robota IGNIS bazującej na dwóch czworobokach przegubowych w kolanie połączonych odpowiednio z kostką i biodrem. Rozwiązanie to pozwoliło zachować ruchliwość nóg usztywniając jednocześnie konstrukcję. Nie odbyło się jednak bez wad. Zwiększyło się skomplikowanie konstrukcji i jednocześnie waga robota, która i tak była już za duża (końcowa waga to 2535g). Robot napędzany jest serwami modelarskimi TowerPro SG5010 (3 sztuki) orz TowerPro MG995 (16 sztuk) , wybrałem je ze względu na niską cenę i niską wagę. Początkowo napęd opierał się tylko na SG5010 lecz ze względu na niewystarczający moment wymieniłem je. Napędy te pozostawiają wiele do życzenia. Generowany moment jest zbyt niski i serwa pracują przy znacznym obciążeniu , co powodowało w skrajnych przypadkach (przy nagrywaniu ruchów robota), wysoki i długotrwały pobór prądu skutkujący spaleniem się mostków serw. Łącznie poległo ich 3 (..RIP..). Połączenia ruchome realizowane są przez tuleje z tworzywa wpuszczane w element aluminiowy (rysunek poniżej). Rozwiązanie to jest lekkie jednak generuje luzy i wymaga stosowania środków zabezpieczających gwint przed rozkręcaniem –Loctite. Powstałe luzy wynikają z faktu stosowania cięcia wodnego na dwóch różnych maszynach, dokładność wykonania elementów na pierwszej maszynie umożliwiała ciasne pasowania tulei, niestety reszta elementów wykonana była w innym zakładzie i błędnie założyłem taką samą dokładność wykonania. Elementy korpusu są wykonane wspomnianą wcześniej metodą cięcia wodnego, z blach aluminiowych o grubości 0.8, 2, 3, i 5 mm. Część elementów została wygięta na wcześniej zrobionej giętarce. Elementy o złożonym kształcie, nieprzenoszące obciążeń (m. in. głowa, część korpusu serwa ) zostały wykonane na uczelni przy pomocy druku 3d (abs), i następnie zostały pomalowane. Elektronika Wszystkim steruje serwokontroler oparty o mikrokontroler AVR, a dokładniej o AT90USB647. Wybrałem go z powodu możliwości realizacji sprzętowego interfejsu USB. Układ posiada 64kB pamięci FLASH, która pomimo niewielkiej pojemności była wystarczająca do nagrania kilkudziesięciu sekwencji ruchów. Taktowany jest rezonatorem kwarcowym 16 MHz, czyli pracuje z maksymalną częstotliwością, mimo to po podłączeniu do komputera poprzez USB widoczne są nieregularne, lekkie drgania poszczególnych serwomechanizmów (mniej więcej co sekundę), co może wskazywać na niedobór mocy obliczeniowej procesora. Sterowanie serwami odbywa się programawo za pomocą 2 timerów. Położenie kątowe opis Sterownik posiada 24 kanały PWM oraz 24 multipleksowane tory pomiarowe wykorzystywane do odczytu bieżących pozycji serw (stąd 4 kable zamiast 3 – widoczne na zdjęciu poniżej). Konieczne jest zastosowanie multipleksowania, ponieważ przetwornik ADC jest 8 kanałowy. Do tego celu wykorzystywane są analogowe muxy/demuxy. Aby zwiększyć dokładność przetwornika ADC pin AVCC podpiąłem do zasilania przez filtr LC oraz zastosowałem zewnętrzne, regulowane układem potencjometr-dzielnik źródło napięcia odniesienia TL432ACD. PCB zaprojektowałem w programie DipTrace, gdyż jego obsługa wydała mi się intuicyjna. Niestety pomysł z ,,uczeniem” robota poprzez próbkowanie napięć ze środkowych wyprowadzeń potencjometrów znajdujących się w serwach z częstotliwością 50 Hz legł w gruzach. O ile sama charakterystyka pozycji kątowej względem napięcia na tym wyprowadzeniu jest liniowa, o tyle rozbieżności pomiędzy poszczególnymi serwami wymaga kompensacji. Na tym etapie uznałem, ze jest to gra nie warta świeczki (nie ze względu na skomplikowanie, bo jest to dość proste, ale na czasochłonność). Poza tym, w tak prostej konstrukcji nie ma to sensu ze względu na jakość napędów. Logika jest zasilana z 5V poprzez stabilizator(zielona dioda sygnalizuje podłączenie), a same serwa z BEC-a przy 6V. Komunikacja z komputerem odbywa się poprzez wyemulowany przez mikrokontroler wirtualny port szeregowy RS-232 przy podłączeniu kablem USB. Robot jest sterowany poprzez bezprzewodowy kontroler z PS2. Do komunikacji wykorzystuję napisany przeze mnie w C# program. Posiada on możliwość sterowania każdym z serw na bieżąco (nie jest to czas rzeczywisty, ale wystarcza) oraz opcje zapisywania, odczytywania i generowania z różnymi prędkościami pozycji i sekwencji ruchów. Podsumowanie W tym miejscu pragniemy podziękować użytkownikowi mog123 za ,,zarażenie'' nas tematyką robotów humanoidalnych oraz za wsparcie merytoryczne. Ostatecznie po modyfikacjach robot prezentuje się tak: Filmik przedstawiający możliwości robota:
  39. 14 punktów
    Witam wszystkich, chciałbym Wam dzisiaj zaprezentować mojego pierwszego robota. Wstęp Swego czasu obejrzałem parę filmików na yt z ciekawymi konstrukcjami robotów, które wyglądem (a czasem zachowaniem) naśladują owady, zwierzęta lub obce formy życia, no i akurat mnie też nagle wzięło i postanowiłem też coś takiego zbudować. Gdy mój robot przybrał już ostateczną formę to uznałem, że podobny jest do jakiegoś pędraka czy czegoś w tym stylu . A że "Larwa" brzmi wdzięcznie więc wybór padł na nią. Szczegóły techniczne 1. Szkielet robota stanowią elementy wycięte z płyty 5mm wykonanej z tworzywa PETg, takie płyty są niestety bardzo niedostępne. Materiał ten jest przejrzysty jak szyba szklana, i jest bardzo wytrzymały, nie pęka i nie łamie się jak plexi, ma wysoką udarność. Do połączenia wyciętych elementów użyłem śrub i nakrętek samokontrujących M3 + podkładki, oraz kleju cyjanoakrylowego. Dodatkowo użyłem tzw. drutu pamięciowego (sprężynowego) jako części kończyn przednich i tylnych oraz krążki gumowe jako stopy. Elektronikę przymocowałem, obejmami, gumkami i malutkimi wkrętami. 2. Elektronika robota wygląda następująco: 2 przerobione serwa modelarskie Turnigy Tg9e do napędu przednich nóg; akumulator li-pol 7,4v Zippy 1000mAh 15C; ATmega162 - mózg robota ; stabilizator 7805; sterownik silników l293d; czujniki do wykrywania przeszkód CNY70; diody led białe jako oświetlenie przednie; diody zielona, czerwona i niebieska jako lampka rgb; buzzer do przyszłych zastosowań; wskaźnik napięcia akumulatora hextronik; różne rezystory, kondensatory itp. 3. Program sterujący robotem na razie raczkuje i wykonuje podstawowe funkcje jak chodzenie, wykrywanie i omijanie przeszkód oraz sterowanie lampką rgb. Będę starał się go rozwijać. Galeria Utworzyłem taki sam temat niedawno na elektrodzie ponieważ moje konto na forbot.pl nie chciało działać, nie mogłem się zalogować a w efekcie zablokowało się na dobre i dopiero niedawno admin mi je odblokował. Uznałem więc, że warto a nawet trzeba też tutaj pokazać. Czekam na Wasze komentarze .
  40. 14 punktów
    Pierwszy post, więc bez powitania się nie obejdzie Hej wszystkim Elektronika to pewien dział który od zawsze mnie fascynował, co oczywiście jest wciąż kultywowane (uczęszczam do technikum elektronicznego). Tworzenie układów i sprawdzanie swych możliwości było czymś co dawało mi pełnię szczęścia. O robotyce zbyt dużego pojęcia nie miałem, praktycznie wcale (tylko elektronika), lecz stworzenie czegoś poruszającego się i wykonującego określone zadanie, czasem nie dawało mi spokoju. Tak, więc pewnego razu powstał pomysł po obejrzeniu filmiku pojazdu podążającego za linią. Ograniczyłem się tylko do myśli, od razu poszedłem za ciosem i postawiłem określone cele, mianowicie żelazną zasadą było NIE DOWIADYWAĆ SIĘ ŻADNYCH RZECZY NA TEMAT LF, tzn. schematy, układy, elementy itp, druga zasada to LF MA JEŹDZIĆ POWOLI, hmm każdy ma jakieś dziwne zachcianki , trzecia zasada to ROBOT MUSI POSIADAĆ BIEGI, czwarta zasada to CAŁOŚĆ MA BYĆ ZBUDOWANA BEZ uC, cóż, musi być ciężej, a tym samych chciałem pokazać, że w zwykłej cyfrówce drzemie ogromny i niezauważalny potencjał… No dobra, po przydługim wstępie czas zacząć Mechanika Napędem robota są dwa serwomechanizmy HS-311 (zasada druga została spełniona). Za obudowę posłużyła mi pleksa która została odpowiednio docięta i skręcona w małe pudełeczko. Czujniki No tu oczywiście nie miałem pojęcia... jakoś to musi widzieć, coś świecić, coś odbijać, trafiłem na nazwę transoptor odbiciowy, obejrzałem notę katalogową i poszło. Oczywiście w sklepie elektronicznym nie mieli pojęcia co to jest, więc poszła improwizacja, mianowicie dioda IR i fototranzystor. Oddzielania ich od siebie czy też nakładania czarnej obwódki nie było potrzebne ponieważ działa bez zarzutu. Czujników jest 4, po dwa na stronę z rozstawem dobranym na zasadzie: chyba tak będzie dobrze (wiem, wiem, no ale pierwsza zasada…) Płytki Całość „myśląca” składa się z trzech (dokładnie czterech) płytek (element wykonawczy, płytka z czujnikami i tzw kierunkowskazy, ale o tym później). Z przodu kulka podporowa która okazała się dużo lepszym rozwiązaniem niż przeróżne pseudo podpórki… Płytki robione własnoręcznie, malowane markerem, akurat wtedy jeszcze nie poznałem termo transferu… Jaki ja byłem wtedy głupi chociaż niekoniecznie, odpowiednio wykonane, zaznaczam odpowiednio, mogą wyjść znacznie lepiej niż metodą żelazkową. Zasilanie Akumulatorek firmy Shark 7,2V 1,1A, hmm to zostawmy bez komentarza Zdjęcia Nie posiadam zbytnio nawyku do dokładnego dokumentowania prac, no ale coś jednak się uchowało, trochę słaba jakość, coś za coś Filmy Schemat i projektowanie W oczach niektórych może to być uznane za porażkę a u innych odwrotnie. Krótko mówiąc: schematu nie ma i nie było wcale. Wszystko zostało namalowane w głowie, jedynie jakieś szczątkowe moduły na kartce. Jeżeli będzie wiele próśb rozrysuje i zamieszczę. Większym wyzwaniem jednak było projektowanie, ponieważ jak coś zaprojektować nie mając na czym bazować. Cóż, lubię wyzwania. Elektronika Czyli wisienka na torcie Jest to połączenie elektroniki analogowej z cyfrową, co ostatecznie skutkuje świetną symbiozą. Pozostały dwie zasady. Jak wykonać biegi? Pomysłów było wiele, od stopniowych zmian napięcia (stabilizator regulowany) do bardziej wymyślnych sposobów dzielenie napięcia, wzmacniacze operacyjne badanie różnych sygnałów, czyli cuda i wydziwianie. Pozostałem przy starych i zawsze potrzebnych bramkach. Co mi się pierwsze kojarzy z tym tematem? Tablice Karnaugha. Jest to świetna metoda która pozwala na zminimalizowanie odpowiedniej funkcji. Mamy 4 czujniki czyli 16 kombinacji. Muszą być biegi, więc wybrałem ostatecznie rozwiązanie: pełna moc, połowa i jej brak. No dobra, ale co jeśli wszystkie czujniki najadą na linię? Następna możliwość, więc niech LF się powoli toczy. Po rozrysowaniu tego dostałem kilka/kilkanaście różnych bramek, lecz ja posiadam tylko NAND, cóż trzeba przerabiać. Całość rozłożyła się na 4 scalaki, każdy po 4 bramki, czyli trochę ich jest. No dobra, ale jak to dokładnie działa? Jak zauważyłem czujnik (fototranzystor) nie widzi dokładnie poziomu logicznego 1 czy 0 ponieważ jest analogowy, ta wartość jest zmienna co może powodować przekłamania. Dysponując dwoma napięciami w układzie (przed i za stabilizatorem) na wejście bramki podaje napięcie dużo wyższe. No wszystko ładnie i pięknie, ale one się mogą uszkodzić. Fakt, wiem o tym, ale nie ma tu samej technologii TTL. Bramki które idą na pierwszy ogień, czyli przyjmują dane z czujników są CMOS czyli takie napięcie im nie groźne, a dokładniej to one lepiej pracują przy napięciu wyższym. Zamieniam analogowy sygnał z czujników na najzwyklejszą cyfrówkę. Mózg (płytka sterująca) bada jaki czujnik widzi linię i dostosowuje odpowiednią moc na serwomechanizmy. Kierunkowskazy to bardziej część ozdobna niż funkcjonalna chociaż nie do końca. Dzięki nim można zobaczyć co widzi robot, na którym „biegu” on aktualnie jedzie, i jak zachowuje się fototranzystor (z przymrużeniem oka). Podsumowanie Robot jeździ i działa, w sumie tak bym mógł zakończyć, ale wypadałoby coś jeszcze dodać. Zadowolony jestem z własnego małego sukcesu, ponieważ bez wiedzy z dziedziny robotyki, udało się stworzyć. Po wszystkich doświadczeniach, odkryłem masę popełnionych błędów konstrukcyjnych, no ale to można usprawiedliwić… nieeee, można było się bardziej przyłożyć i bez gadania Uważam, że ten projekt był świetnym wprowadzeniem i motywacją do dalszych działań.
  41. 13 punktów
    Większość osób myśląc o cyfrowej telekomunikacji, myśli o współczesne mikroelektronice: smartfonach, komputerach i Internecie. Nie każdy zdaje sobie sprawę z tego, że idea przesylania informacji zakodowanej w ciągach zer i jedynek jest dużo, dużo starsza. Pierwszym urządzeniem tego rodzaju był telegraf skonstruowany przez Emille'a Baudot w latach siedemdziesiątych XIX wieku. Urządzenie po stronie nadajnika posiadało klawiaturę złożoną z pięciu przycisków, które operator musiał wciskać w różnych kombinacjach. Urządzenie wysyłało na linię ciąg impulsów, odpowiadających wciśniętej kombinacji. Odbiornik interpretował ten sygnał drukując na papierowej taśmie odpowiednią literę lub cyfrę, w jej naturalnej formie. Na początku XX wieku idea to została udoskonalona. Nadajnik został wyposażony w klawiaturę podobną do tych stosowanych w maszynach do pisania. Tak narodził się dalekopis. Transmisja danych pomiędzy tymi urządzeniami przypominała standardowy interfejs szeregowy. Z tą różnicą, że z przeciwieństwie do TTL UART-a czy RS323 poszczególne stany logiczne nie były kodowane przez wartości napięć, ale przez fakt przepływu (bądź nie) prądu w obwodzie. Normalnie przez linię płynął prąd o ustalonej wartości (zazwyczaj 60, 40 lub 20 mA). To był stan domyślny. Rozpoczęcie nadawania kolejnego znaku wymagało nadania bitu startu, czyli chwilowego przerwania obwodu. Potem nadajnik oczekiwał na pięć bitów z kodem znaku w alfabecie Baudot (zwanym także międzynarodowym alfabetem telegraficznym). Na końcu pojawiały się bity stopu w trakcie których odebrany znak był drukowany na papierze. Ktoś zapewne zauważył już, że używając pięciu bitów można było zakodować maksymalnie 32 znaki - zdecydowanie za mało, aby pomieścić wszystkie litery alfabetu, cyfry i znaki interpunkcyjne. To prawda. Stosowano pewną sztuczkę - dwie kombinacje bitów były zarezerwowane do przełączania pomiędzy dwoma rejestrami zawierającymi litery oraz cyfry i inne znaki. Ne stosowano także rozróżnienia na male i duże litery. Dalekopis chociaż w pełni cyfrowy, był urządzeniem elektromechanicznym, radzącym sobie bez pojedynczego tranzystora (chociaż oczywiście w latach osiemdziesiątych i dziewięćdziesiątych produkowano nowoczesne, elektroniczne wersje). Dalekopisy były powszechnie używane do przesyłania wiadomości przez wojsko i państwowe służby. Poczta wykorzystywała je do transmisji telegramów. Stosowano je także w roli terminali komputerowych, przed pojawieniem się monitorów CRT. Ślad tej zaszłości historycznej zachował się w nomenklaturze stosowanej w systemach uniksowych, gdzie terminal jest oznaczany skrótem TTY - od angielskiego słowa "teletype", czyli właśnie dalekopis. Przepraszam za ten przydługi wstęp, nie byłem jednak pewien, czy wszyscy będą jeszcze kojarzyć o jakie urządzenie chodzi... Przechodząc do sedna sprawy. Na co dzień pracuję w krakowskim Muzeum Inżynierii Miejskiej. Jakiś czas temu został nam przekazany dalekopis T100, wyprodukowany w latach siedemdziesiątych w Czechoslowacji, na licencji Siemensa. Ponieważ posiadaliśmy już taki eksponat, zostałem poproszony o sprawdzenie możliwości uruchomienia go i wykorzystywania w roli interaktywnej instalacji, zamiast "martwego" eksponatu ukrytego w muzealnej gablocie. Tak rozpoczęły się moje eksperymenty. Najpierw skonstruowałem prosty interfejs USB, oparty na starym mikrokontrolerze AT89C2051 i układzie FTDI. Do generowania pętli prądowej 40 mA używałem zestawu kilku baterii 9V oraz rezystorów o dużej mocy. Komunikacja z dalekopisem ruszyła bez problemu - pojawiła się jednak inna trudność. Okazało się, że uszkodzony jest moduł wzywaka - urządzenia odpowiedzialnego m.in. za zdalne włączanie silnika dalekopisu przy połączeniu przychodzącym, sygnalizowanym odwróceniem kierunku przepływu prądu w linii. Naprawa tego modułu okazała się bardziej skomplikowana niż początkowo sądziłem, ostatecznie postanowiłem więc wymontować wadliwą część i sterować silnikiem za pomocą przekaźnika, zamontowanego w moim interfejsie. Finalna wersja interfejsu zawiera mikrokontroler PIC32MX270F256B oraz moduł GSM SIM800L. Wykorzystałem także 2MB pamięć SPI flash, do wykonywania elektronicznej kopii przychodzących wiadomości. W osobnej obudowie znajduje się generator pętli prądowej, złożony z zasilacza transformatorowego oraz zestawu kondensatorów. Całość można obecnie oglądać na wystawie "Uwaga! Nieprzyjaciel podsłuchuje." w Muzeum Inżynierii Miejskiej w Krakowie. Po wysłaniu SMS-a na podany numer można oglądać dalekopis podczas pracy.
  42. 13 punktów
    Ten artykuł jest tłumaczeniem (za zgodą autora) na język polski artykułu napisanego przez Paula Stoffregena, dostępnego pod adresem: https://www.pjrc.com/how-to-get-tech-help-from-strangers-on-the-internet/. Internetowe fora techniczne mogą być bardzo onieśmielające. Trzy proste zasady mogą znacznie ułatwić ci życie i zwiększyć szansę na uzyskanie pomocy, niezależnie od poziomu twoich umiejętności. Dobre Pierwsze Wrażenie — aby ludzie chcieli ci pomóc, Wyjaśnij Kontekst — aby ludzie zrozumieli czego potrzebujesz, Podaj Szczegóły — aby ludzie mogli ci pomóc, Poziom 1: Aby dostrzegli twój problem, Poziom 2: Aby mogli go powtórzyć. Dobre Pierwsze Wrażenie "Nie ma drugiej szansy na zrobienie pierwszego wrażenia" to ponadczasowe powiedzenie. Obcy ludzie błyskawicznie wyrabiają sobie o tobie opinię zaledwie na podstawie słów, obrazów lub nagrania w twoim komunikacie. Niech te słowa zadziałają! Największy wpływ na ludzką chęć do pomocy ma pokazanie, że sam włożyłeś wysiłek w rozwiązanie problemu. Ale jaki to może być wysiłek jeśli dopiero zaczynasz? Łatwo jest skorzystać z wyszukiwarki internetowej używając słów ze swojego pytania. Wielu ekspertów nie zdaje sobie jednak sprawy jak trudno jest znaleźć zrozumiałą i istotną informację gdy nie zna się właściwej terminologii, lub gdy te same słowa używane są także w niezwiązanych z twoim problemem dziedzinach. Zatem napisanie czego próbowałeś szukać i jakie wyniki są dla ciebie niezrozumiałe lub nie na temat może pomóc doświadczonym ekspertom w zrozumieniu twojej sytuacji. To nie wyniki są tutaj istotne, ale twój osobisty wysiłek. Szczera chęć nauki także zazwyczaj sprawia dobre wrażenie. Nawet parę słów pokaże twoje podejście. Bycie zniecierpliwionym, ale zdecydowanym na naukę na błędach robi dobre wrażenie. Inteligentni ludzie, którzy mogą pomóc, często doceniają szczere i uczciwe postawienie sprawy. Oczywiście jeśli już rozpocząłeś swój projekt i pracujesz nad nim, wspomnij o tym. Albo nawet lepiej, pokaż czego już próbowałeś. Zrzuty ekranu, zdjęcia, a nawet krótkie nagranie mogą doskonale zaprezentować co już zrobiłeś i upiec dwie pieczenie na jednym ogniu, jednocześnie komunikując i robiąc dobre wrażenie. Nawet kilka prostych słów dodanych do pytania, pokazujących że szczerze się starasz i chcesz się uczyć będzie mieć duży wpływ na odpowiedź, jaką otrzymasz. Kontekst Umożliwia Zrozumienie Istoty ludzkie mają niesamowitą umiejętność dogłębnego zrozumienia. Eksperci mogą zastosować swoją ogromną wiedzę do wypracowania twórczych pomysłów rozwiązujących twój problem... pod warunkiem, że będą wiedzieć czego tak naprawdę potrzebujesz. Kluczowe jest wyjaśnienie kontekstu pytania. Co chcesz osiągnąć? Jak twoje pytanie jest z tym związane? Jakie rozwiązanie byłoby dla ciebie idealne? Dlaczego? Kiedy zajmujemy się techniczną stroną zagadnienia, łatwo jest skupić się tylko na bezpośrednim problemie. Pamiętaj, że przyjaźni ludzie o ogromnej wiedzy i doświadczeniu regularnie czytają fora tylko dlatego, że lubią pomagać. Kiedy piszesz swoje pytanie, nie zapomnij opisać kontekstu. To może zmienić odpowiedź z technicznie poprawnej ale całkowicie bezużytecznej informacji, na rzeczywiście przydatną radę. Diabeł Tkwi w Szczegółach Współczesne zagadnienia techniczne często zawierają oszałamiającą ilość szczegółów. Ile informacji powinno zwierać twoje pytanie? Zanim je wyślesz, zastanów się nad tymi dwoma kwestiami: Czy czytelnik będzie mógł zrozumieć istotę twojego problemu? Czy będzie mógł go odtworzyć? Łatwo jest sobie zakpić "był jakiś błąd, ale zamknąłem go bez czytania", ale bądźmy poważni, minimalny poziom detali pozwoli czytelnikom zrozumieć problem. Zrzut ekranu lub dokładna kopia tekstu błędu, plus dokładna informacja o użytym oprogramowaniu, wersjach, sprzęcie oraz przedsięwziętych kroków to absolutna podstawa umożliwiająca czytelnikowi w ogóle dostrzec problem tak, jak ty go widzisz. W idealnej sytuacji ludzie czytający twoje pytanie powinni móc powtórzyć twój problem. Taki poziom szczegółowości nie zawsze jest praktyczny, ale jeśli dostarczysz wystarczająco dużo informacji, to szanse na rozwiązanie problemu znacznie się zwiększają. Pytania na temat programowania powinny zawsze zawierać cały kod źródłowy, a nie tylko wycięte fragmenty. Często problem ukrywa się w subtelnych szczegółach w definicjach zmiennych daleko od właściwego kodu. Doświadczeni programiści wiedzą czego szukać i potrafią dostrzec takie błędy natychmiast, jeśli tylko pokażesz cały swój kod. Nie zapomnij także poinformować jakich dokładnie bibliotek używasz. Zagadnienia dotyczące sprzętu elektronicznego często nie obejdą się bez zdjęć albo szczegółowych schematów połączeń, oraz linków do użytych części, lub ich symboli katalogowych. Nieśmiałość i niechęć do opisywania szczegółów swojego projektu na forum są powszechne. Nie wstydź się! Eksperci czytający forum naprawdę chcą pomóc. Pokaż dość szczegółów, wyjaśnij kontekst i pokaż, że się starasz, a oni z pewnością pomogą. Częste Błędy Fora nie zawsze działają idealnie. Powyższe trzy kroki najczęściej zadziałają, ale należy też pamiętać o kilku powtarzających się błędach: Zbyt Wiele Zgadywania Rozwiązywanie technicznych problemów polega na obserwacji i dedukowaniu przyczyn. Całkowicie normalne jest, że kiedy jesteśmy na tym skupieniu, to piszemy w zasadzie tylko na podejrzewanych przez nas przyczynach, a zapominamy opisać zaobserwowane efekty. Krótka przerwa przed napisaniem pytania często tutaj pomaga. Kiedy piszesz, staraj się myśleć z punktu widzenia czytelnika. Czy na pewno prosisz o pomoc w problemie, czy tylko chcesz, aby potwierdzili to co sam już odgadłeś? Z drugiej strony, opisanie jak doszedłeś do swoich wniosków może pomóc uniknąć niepotrzebnego powtarzania tego samego toku rozumowania. Nie ma idealnej metody. Po prostu pamiętaj, że zbytnie skupianie się na wnioskach może powstrzymać ludzi od pomocy. Dawanie Upustu Frustracji Szczerze mówiąc niektóre problemy są bardzo trudne i niesłychanie irytujące. Kiedy jesteś zły, dawanie upustu emocjom jest całkowicie naturalne. Zanim wyślesz wiadomość na forum, robiąc tak istotne pierwsze wrażenie, przeczytaj ją przynajmniej raz. Pewien poziom emocji jest normalny i może nawet pomocny. Pokazuje, że naprawdę się starasz. Ale strzeż się częstego błędu, gdy twoja wiadomość jest odbierana jako narzekanie a nie prośba o pomoc. Brak Odpowiedzi Nawet w idealnej sytuacji czasem nie dostaniesz odpowiedzi. To może rozczarować i przygnębić. Postaraj nie dać się ponieść tym emocjom i nie domagać się odpowiedzi. Jest lepszy sposób. Wysiłek jest istotny. Jeśli minęły całe dnie lub tygodnie od wysłania pierwszej wiadomości, to zapewne w tym czasie włożyłeś w swój projekt trochę więcej pracy? Nawet jeśli bezowocny, ten wysiłek jest czymś, czym warto się podzielić, aby przyciągnąć ludzi. Zdjęcia lub kod, albo inne efekty twojej pracy mogą bardzo pomóc. Czasem bardzo trudne i szczegółowe pytania pozostają bez odpowiedzi, bo po prostu nikt jej nie zna. Albo nikt nie jest pewien. W tej sytuacji dobrze jest zapytać o opinie albo sugestie w którym kierunku szukać odpowiedzi, aby usprawnić rozmowę. Ponownie, pokazanie wysiłku jest kluczowym czynnikiem zachęcającym ludzi do pomocy. Większość forów zniechęca lub nawet zabrania wysyłania wielokrotnie tej samej wiadomości czy "krospostowania". To prawie nigdy nie działa. Eksperci, którzy regularnie czytają fora — ludzie najbardziej skłonni do pomocy — na pewno to zauważą. Masz tylko jedną szansę na zrobienie dobrego wrażenia. Natomiast po dłuższym czasie bez odpowiedzi, ponowienie pytania, najlepiej z linkiem do poprzedniej wiadomości i dodatkowym wyjaśnieniem, nie musi być źle odebrane. Nierzetelni Uczniowie Na każdym forum zdarzają się leniwi uczniowie domagający się odrobienie za nich pracy domowej. Eksperci czytający fora regularnie są zalewani takimi marnymi pytaniami. Nie chcesz, aby twoje pytanie zostało potraktowane jak spam i zignorowane. Jeśli twój projekt jest robiony w ramach zajęć, to najlepiej jest szczerze się do tego przyznać (oraz do terminów) i upewnić się, że widać jednak twój własny wkład. Rzetelny wysiłek i szczera chęć nauki wyróżniają dobrych uczniów. Zastrzeżone Projekty Kiedy nie możesz podzielić się kodem źródłowym albo innymi szczegółami technicznymi, pomoc na forum rzadko będzie dobra. Zazwyczaj musisz poświęcić dodatkową pracę aby wydzielić problematyczny fragment z reszty projektu, aby móc go opublikować. Jeśli tego nie zrobisz i po prosty spytasz "czy ktoś spotkał się kiedyś z takim problemem", to traktujesz ludzi jak wyszukiwarkę internetową. Czasem może się udać, ale naprawdę trudno jest zgadywać na ślepo rozwiązania trudnych technicznych problemów. Jeśli twój pracodawca lub organizacja kategorycznie nie zgadza się na publikowanie kodu lub szczegółów, niezależnie jak drobnych, być może zamiast szukać darmowej pomocy na forum powinieneś użyć komercyjnych produktów, które zapewniają kontraktowo wsparcie, albo zatrudnić eksperta z firmy konsultingowej. Kiedy Otrzymasz Odpowiedź Najlepszym sposobem na wyrażenie wdzięczności jest wskazanie osoby, która udzieliła poprawnej odpowiedzi. Wielu ekspertów poświęca niezliczone darmowe godziny swojego czasu pomagając obcym na forach tylko dlatego, że lubią pomagać. Bycie docenionym jest miłą nagrodą. Kiedy twój problem jest rozwiązany, pamiętaj, że wielu innych ludzi trafi do tego wątku szukając rozwiązania podobnego problemu jeszcze wiele lat później. Najlepiej więc jest napisać na koniec krótką wiadomość podsumowującą poprawne rozwiązanie. Jeśli pytałeś w wielu miejscach, to wypada teraz odwiedzić każde z nich i podlinkować do wiadomości z odpowiedzią. O Tym Artykule (i Autorze) Przez ostatnie 6 lat odpowiedziałem 18620 razy na forum PJRC i nawet więcej na innych forach. Udało nam się w tym czasie stworzyć całkiem dobrą społeczność i pomóc w projektach wielu tysiącom ludzi. Obserwowałem i próbowałem się nauczyć co działa i jak możemy dokonać ulepszeń. Oczywiste stało się, że wielu ludzi potrzebuje nieco wsparcia w zadawaniu dobrych pytań. Najbardziej liczą się tu nie technikalia, ale subtelne czynniki ludzkie. Mam nadzieję, że wszystkie fora techniczne się poprawią. Proszę podzielcie się tym artykułem. — Paul Stoffregen
  43. 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
  44. 13 punktów
    Poniższy artykuł dotyczyć będzie podstaw programowania robota typu linefollower w języku C. Omówiony zostanie kompletny program pozwalający na całkiem przyzwoitą kontrolę nad LFem oraz wskazane zostaną miejsca, w których inwencja programisty może w wyraźny sposób poprawić pracę robota. Tekst można podzielić na dwie części - konfigurację wszystkich wymaganych do pracy peryferiów (porty I/O wraz z przerwaniem zewnętrznym, timer generujący sygnał PWM oraz przerwanie co określony czas, ADC) oraz przedstawiającą właściwy algorytm jazdy po linii. [blog]https://forbot.pl/blog/algorytm-linefollowera-c-poczatkujacych-id2722[/blog] scr.zip
  45. 13 punktów
    Dawno nie opisywałem na forum moich robotycznych wypocin, więc łącząc przyjemne z pożytecznym chciałbym opisać robota, którego stworzyłem jakiś czas temu, na potrzeby pewnego artykułu, do którego link znajdziecie na samym dole. Założenia były proste - miałem do dyspozycji trochę podzespołów rodem z Pololu i musiałem z tego złożyć coś, co każdy będzie mógł sam złożyć w swoim domu korzystając z tego samego zestawu części. "Każdy" - mowa przede wszystkim o ludziach nieobeznanych w światku elektroniki, a preferujących "łatwiejszą" drogę do celu, kosztem zasobów portfelowych. Chodziło oczywiście o platformę rozwojową, która dostarczy nieco więcej zabawy i pozwoli stopniowo zgłębiać tajniki podstaw programowania i elektroniki, przy czym należało (w miarę możliwości) unikać zabaw z klejami, spawarkami i innymi narzędziami, poza tymi najbardziej podstawowymi - śrubokrętami, lutownicą, piłą/nożem i (mini)wiertarką. Zdecydowałem, że zadaniem robota miało być - w miarę możliwości - płynne omijanie przeszkód. Zacznę może od zaprezentowania efektu końcowego, a później opiszę co, jak i dlaczego. Tak robot wygląda: A tak jeździ: Chciałbym też w tym miejscu podziękować sklepowi KAMAMI za zasponsorowanie większości części: 1. Sterownik Zacząłem od szukania odpowiedniego sterownika. Do wyboru były osobne moduły mostków i moduły z uC, ale po podliczeniu kosztów zdecydowałem się na gotową płytkę Orangutan SV-328. Cena, na pierwszy rzut oka, może zniechęcać, ale wystarczy porównać możliwości płytki np. z modułami Arduino: Arduino Uno + Arduino Motor Shield + moduły z buzzerami, wyświetlaczem LCD, przyciskami itd. Co prawda Orangutana programuje się inaczej, bo przez standardowe 6-pinowe złącze ISP, ale programiści Pololu przygotowali specjalne biblioteki do darmowego środowiska Atmel Studio 6, które niesamowicie upraszczają całą sprawę. Po pierwsze - nie martwimy się o konfigurację i inne czysto sprzętowe zagadnienia, bo wszystko jest już gotowe. Nie przypisujemy żadnych pinów, nie zastanawiamy się który port co robi, tylko po prostu programujemy. Przykładowy kod do obsługi silników wygląda tak: set_motors(255, 127) Co oznacza tyle, że jeden silnik obraca się o połowę wolniej od drugiego (tzn. w przybliżeniu, silnik nie ma liniowej charakterystyki obroty-napięcie). Jeśli damy wartości ujemne, to silniki będą się obracać w przeciwnym kierunku. Obsługa serwa też jest śmiechu warta, bo wystarczą dwie linijki: set_servo_speed_b(0, 100); set_servo_target_b(0, 1300); Pierwsza linia to wybór kanału (0) i prędkość obrotu serwa, druga to wybór kanału i pozycja. W podobny sposób można obsłużyć wszystkie podzespoły - szybko, łatwo i przyjemnie. Gdy już nabierze się wprawy, wystarczy zrezygnować z bibliotek i tworzyć program samemu od zera, zgodnie ze "sztuką" - mamy do dyspozycji schematy i pełną dokumentację. 2. Podwozie Postawiłem na gąsienicowe podwozie Zumo i dwa popularne mikrosilniki Pololu z przekładnią 150:1. Wybór podwozia w owym czasie nie był łatwy (albo było drogie, albo nie było dostępne) i być może dzisiaj wybrałbym nieco inaczej - skusił mnie wbudowany koszyk na baterie; kombinowałem, że pozwoli to uprościć całą konstrukcję... Później okazało się, że i tak 4 baterie AA to jednak trochę za mało, a do koszyka ledwo mieściły się dwa ogniwa LiPo. To, co mnie pozytywnie zaskoczyło, to przyczepność ogumienia - guma jest bardzo miękka, podobna w dotyku do tej na popularnych oponach z Pololu. Silniki okazały się minimalnie za szybkie, ale ograniczyłem ich prędkość w programie i ostatecznie wszystko było ok. Moment obrotowy i przyczepność sprawia, ze robota bardzo trudno jest zatrzymać. Do podwozia musiałem dorobić z laminatu uchwyt na mikroserwo modelarskie, które miało później obracać "głową" robota. 3. Czujniki Czujniki są tylko dwa (nie licząc przycisków...), a wolne porty uC zachęcają do dalszych eksperymentów. Nie mniej jednak dwa dalmierze optyczne GP2Y0A41SK0F okazały się wystarczające, by robot podołał zwojemu zadaniu. Dlaczego dwa, a nie jeden? Dalmierze pracują w sposób "różnicowy" - program ciągle porównuje który sygnał wyjściowy jest większy i dzięki temu wie, po której stronie od robota znajduje się przeszkoda. Umieszczenie ich na orczyku serwa umożliwiło dodatkowo poszerzenie kąta widzenia niewielkim kosztem. Robot został zaprogramowany w sposób opisany w punkcie pierwszym, cały kod, wyjaśnienia i ogólnie opis budowy są przedstawione na portalu mikrokontroler.pl: http://mikrokontroler.pl/content/robot-orangutan-budowa-krok-po-kroku Mam nadzieję, ze robot się spodoba
  46. 13 punktów
    Dane techniczne: Robot czteronożny o konstrukcji aluminiowej (własnego projektu) – waga 670 gramów. Wymiary nogi robota w stanie rozłożonym od osi serwa do końca nogi to 19 cm. Body o wymiarach 8 x 8 cm. A na pokładzie mamy: - Kontroler robota to Baby Orangutan B-328 Robot Controller – programowany w oparciu o dobrze znane nam środowisko Arduino wersja 0021. - 2 x sterowniki serw Pololu Micro Serial Servo Controller do sterowania serwami, - 12 mini serwomechanizmów Tower Pro MG-16R – mocne serwa metalowe o momencie ok. 2,7 kg / cm, - 4 Sharp’y GP2Y0A21YK0F – jako czujniki odległości. Zasięg prezentowany przez producenta to 10-80cm. W rzeczywistości spokojnie można sobie analizować otoczenie powyżej 1 m. - Czujnik przyspieszeń MMA7341L 3-Axis Accelerometer ±3/11g z własnym regulatorem napięcia, - 4 czujniki dotyku w oparciu o włączniki, - MOBOT-RCR-V2 -Moduł radiowy 868MHz – do połączenia bezprzewodowego z rękawicą. - Robot jest zasilany z Pakietu LiPol 3E Model 1300mAh 11,1V 15C, - Regulator Pololu Step-Down Voltage Regulator D15V35F5S3 do zasilania serw, - Stabilizator AVT MOD13 do zasilania elementów nie posiadających własnego regulatora. Sterowanie robotem poprzez rękawicę ( w fazie testów) zawierającą na swoim pokładzie: - Kontroler Orangutan SV-328 z wyświetlaczem LCD - MOBOT-RCR-V2 -Moduł radiowy 868MHz – do połączenia bezprzewodowego z robotem. - Czujnik przyspieszeń MMA7341L 3-Axis Accelerometer ±3/11g z własnym regulatorem napięcia za pomocą, którego są prowadzone odczyty. Robot obecnie przeszedł pozytywnie fazę testów poszczególnych elementów po złożeniu i jest oprogramowywany. Przewidziano 2 podstawowe typy pracy: 1. Sterowanie z rękawicy – tj. odczyty z czujnika przyspieszeń przekazywane są do robota za pomocą modułu radiowego gdzie następuje zaprogramowana reakcja. 2. Praca autonomiczna – robot dokonując odczytów ze swoich czujników reaguje na zmiany otoczenia podczas poruszania się.
  47. 13 punktów
    Witam, Zebrałem się i postanowiłem napisać conieco o mojej nowej konstrukcji. Generalnie już od jakiegoś czasu buduję roboty ale na forbocie nic jeszcze nie umieściłem. Mam do zaprezentowania robota typu hexapod, 6-nożna maszyna krocząca jakby ktoś niezbyt orientował się w systematyce. Dlaczego hexapod? Zabrałem się za tą konstrukcję po porażce w minisumo. Stwierdzam że nie lubię zbytniego "upychania" elektroniki w robocie. Platforma hexapoda daje dość dużo możliwości rozmieszczenia elektroniki, o zasilanie też nie trzeba się martwić ze względu na duży udźwig. Krótko o budowie: Projekt: Konstrukcję zaprojektowałem w programie CorelDraw. Projekt dawał mi nieco możliwości manipulowania nogami zwłaszcza w płaszczyźnie poziomej. Części: zostały wycięte laserem na bazie projektów w Corelu. Plexy 3mm kolory czarny i żółty. Planowałem 6mm ale niestety zakład takowego materiału nie posiadał. 3mm na korpus starczy ale na nogi niezabardzo. Robot posiada jak wspomniałem spory udźwig testowałem z grubym słownikiem ale 3-5kg pewnie by jeszcze podniósł, za to z przepychaniem ma problemy, nogi się troszkę wyginają... Robot się ślizgał, założyłem mu ogumienie - wałki z drukarki atramentowej. Silniki: 18 serw TowerPro mg995. Mają swoje wady i zalety. Zalety: kosztują około 30 zł/szt, metalowe tryby, łożyska kulowe, dobra obudowa. Wady: kupując 18 sztuk 5 obraca się odwrotnie niż pozostałe. W programie obracając serwa np o +50* z krokiem co 1 te serwa "unikatowe" muszę obracać na -50... Problematyka dobrze widoczna na schemacie. Zasilanie: serwa zasilam z akumulatora żelowego 6V, 4.5 Ah. Przy zakładanym poborze prądu 18* 0.5A mamy 9A. Akumulator podziała więc niecałe 30 min ale jest to przy maksymalnym obciążeniu - serwa mają pobór maksymalny przy gwałtownych obrotach u mnie jest to wyeliminowane, serwa działają maksymalnie płynnie z przeskokiem o 1° co 5 - 15ms. Logika ma narazie zasilanie przez usb, 3m kabla więc nie jest źle, planuję dodać bardziej mobilne źródło. Ewentualnie druga opcja bardziej ryzykowna żeby podłączyć logikę do żelka... podobno maksymalne rozładowanie jest dość duże. O tym jeszcze pomyślę. Logika: Arduino Mega 2560. Płyta zdrowo nad wyrost, ale co tam szkodzi ;] używaj z 10% pamięci... Sterowanie: klawiatura PS2 kablowa z nieco innym złączem (brakowało mi gniazda więc byłem zmuszony do użycia innego). Zasadniczo wczoraj kupiłem moduł BT (temat może komuś znany). Niedługo robot będzie sterowany poprzez BT i androida. Robot dość dobrze radzi sobie z nierównościami. Nie mówię tu o bardziej ekstremalnych nachyleniach. raczej o nierównej powierzchni, zabrudzenia stołu, długopisy, kawałki kartonu itp. Mając klawiaturę PS2 mam dość dużo możliwości ruchu robota. znaki 0 - 9, ! - ) + [ , ] pozwalają mi na zmianę wychylenia serw o 5* +/-. Ta sama kombinacja lecz z { , } zmienia wychylenie wszystkich 6 serw. Dość dobre narzędzie do tworzenia sekwencji. do poruszania przewiduję w,a,s,d. Narazie robot chodzi tylko przód - tył. Robot zna poza tym kilka tricków - chwieje się na boki, macha przednimi nogami itp... Program sam w sobie jest banalny. Serwa steruję bibliotekami, PS2 też ma bibliotekę. Kiedyś miałem bardzo złą opinie o Arduino; jest to dla laików, nie trzeba nic umieć, nie daje takich możliwości co sam C i własny układ. Możliwe ale do tego projektu nie ma sensu stosować inny zestaw. W dodatku kod jest naprawdę obszerny (900 linijek), pisanie tego było by pewnie trudniejsze w samym C. Cena: plexy + cięcie: 260zł serwa: 540zł arduino: 120zł BT: 60zł śruby, nakrętki, rurki alu: 20zł żelek: 20zł prąd: niewiele czas: bezcenny części z recyklingu: 0zł koszty przesyłki inne Wychodzi 1000zł ale w połączeniu z innymi kosztami wychodzi troche więcej więc szacujęże 1100zł. Plany na przyszłość: -sterowanie BT -ruch na boki, skręcanie -kilka innych tricków -przyspieszenie ruchów -mobilne zasilanie logiki -szczypce -kamera -czujniki zbliżeniowe -wzmocnienie nóg Jak wspomniałem będę pisać aplikację na Androida. Posiadała by wirtualną klawiaturę do sterowania. Myślałem również o podłączeniu kamerki do Arduino (posiada 3 porty komunikacji) i wysyłaniu obrazu na telefon. Czujnik zbliżeniowy, myślałem nad trickiem macham ręką przed robotem a on wstaje to mogło by być dość efektowne. Ewentualnie inna opcja. że po wykryciu czegokolwiek robot wstaje a po upłynięciu kilku sekund siada. Mając takiego stwora w domu można by wpaść w paranoję A oto kilka zdjęć: pierwsze modele z papieru, schemat serw, przebieg prac. Myślę że opisałem wszystko co nadaje się do opisania. Jest to mój pierwszy artykuł tego typu więc proszę o wyrozumiałość w przypadku pewnych niedociągnięć. Zapewne kogoś zastanowiło imię robota. Niestety jeszcze takowego nie wymyśliłem aczkolwiek myślałem dość długo. Edit1: Był kabel i nie ma kabla. Robot jest teraz w pełni mobilny. Ma przenośne zasilanie i moduł Bluetooth którym łączę się z androidem. Do sterowania używam aplikacji BlueTerminal. A oto nagranie pokazujące działanie nowego sterowania: __________ Komentarz dodany przez: Nawyk Dodałem zdjęcie w formie załącznika (żeby się wyświetlało na stronie głównej)
  48. 13 punktów
    Lizard 2 jest następcą swojej pierwszej wersji - Lizarda. W robocie głównym założeniem była jak najmniejsza masa. Elektronika Robot oparty jest o procesor STM32F103VCT6 o taktowaniu 72MHz. Czujnikami linii jest 20 transoptorów odbiciowych KTIR0711s. Jako komparatory zostały zastosowane MCP6564 . Mostki zastosowane w robocie to 2x TB6612. Do zatrzymywania robota służy odbiornik TSOP wraz z procesorem Atmega8. Robot ma możliwość rozbudowy o czujniki przeszkody. Jak widać na zdjęciach robot wyposażony jest w enkodery AS5145B o rozdzielczości 12bitów. Robot zasilany jest z pakietu 370mAh 2s. Jest to w zupełności wystarczająca rozdzielczość do zamocowania magnesu na kole. Płytka została wykonana w firmie Satland Prototype. Program W robocie zastosowany jest algorytm P. Wylicza on prędkości które są podawane do kolejnych regulatorów p które kontrolują prędkość silników. Silniki pracują w zamkniętej pętli sprzężenia zwrotnego wykonywanej co 1ms. Mechanika Robot jest wyposażony w 2 silniki pololu 10:1 HP wraz z kołami pololu. Robot gotowy do jazdy waży 125g. Zdjęcia Osiągnięcia -IV miejsce na zawodach Trójmiejski Turniej Robotów 2012 -finał Robomaticon 2012
  49. 12 punktów
    Witam. Chciałbym Wam przedstawić mojego pierwszego robota klasy LineFollower o nazwie Turtle. Robot składa się z dwóch modułów. Po raz pierwszy zaprezentował się na zawodach ROBOmotion 2013 w Rzeszowie. Moduł czujników W module zastosowałem 5 transoptorów CNY70. Początkowo zostały one ułożone w linii prostej. Po pierwszych zawodach zmieniłem ich ułożenie poprzez przesunięcie 2 skrajnych sensorów w stronę modułu głównego. Czujniki są podłączone do kolejnych portów ADC mikrokontrolera. Wymiary modułu czujników to: 90 x 40mm. Moduł czujników połączony jest za pomocą listewek węglowych z modułem głównym. Moduł główny Płytka modułu głównego spełnia dwie podstawowe role: jest ona podwoziem dla robota oraz obwodem drukowanym. Wymiary: 90 x 70mm. Za przetwarzanie sygnału analogowego z czujników na postać cyfrową, realizacje algorytmu jazdy LineFollowera, a następnie sterowanie mostkami H i generowanie sygnału PWM odpowiedzialny jest mikrokontroler Atmega8 Jako sterownik silników zastosowany został moduł TB6612FNG. Jeden moduł odpowiedzialny jest za sterowanie dwóch silników. Do zasilania robota używam pakietu Li-Pol Turnigy nano-tech 300mAh. Bezpośrednio z akumlatora zasilane są silniki natomiast stabilizowane napięcie 5V w celu zasilenia pozostałej elektroniki zostało uzyskane dzięki przetwornicy S7V7F5. Napęd Napęd robota stanowią dwa silniki Pololu HP z przekładnią 30:1 na które zamontowane są koła wraz z oponami firmy Pololu o średnicy 32mm. Program Program został napisany w języku C. Zaimplementowany został algorytm PID z pewnymi modyfikacjami. Osiągnięcia 1 miejsce - Robocomp 2013 w Krakowie - LF Light Filmy Zamieszczam również dwa filmy które zostały nagrane u mnie w domu na prowizorycznej trasie. Za kilka dni postaram się dodać kilka nagrań z uczelni.
  50. 12 punktów
    Mój robot dosyć mocno odbiega od tego co publikujecie na forum, ale zaryzykuję - w końcu większość problemów z jakimi się zmagamy jest podobna. AutoPitLot z założenia ma być uniwersalnym sterownikiem robotów z naciskiem na roboty latające. Moim marzeniem jest zrobotyzowany szybowiec autonomicznie szukający i centrujący kominy termiczne, ale na razie jestem na etapie prostych testów i skupiam się na wielowirnikowcach jako platformach łatwych w testowaniu. Tak wygląda sterownik zamontowany w quadrokopterze: Sam sterownik jest konstrukcją modularną. Płytka główna zawiera kontroler ARM, dystrybucję zasilania, sterowanie 12 serwomechanizmami, pamięci konfiguracji i komunikatów głosowych, baterię zegara, 3-kolorowego LEDa, gniazd karty microSD, USB wejście odbiornika RC, wejścia czujników pomiaru prędkości obrotowej i złącza do modułów wewnętrznych i zewnętrznych. Tak wygląda goła płyta główna: Dopiero do tej płyty umieszczonej w hermetycznej i pancernej obudowie montuje się moduły z czujnikami. Są dwa rodzaje modułów: wewnętrzne w formie płytek ze złączami szpilkowymi oraz moduły zewnętrzne. Moduły wewnętrzne komunikują się z kontrolerem szybką magistralą SPI (8MHz) i I2C (400kHz). Zawierają czujniki jednostki inercyjnej, moduł pneumatyczny, rozszerzenia wejść-wyjść. Na razie jest tylko tyle, myślę że w miarę potrzeb czujników będzie przybywało. Na zdjęciu poniżej jest AutoPitLot w obudowie z zamontowanymi modułami wewnętrznymi Moduły zewnętrzne podłączane są do 4 gniazd z interfejsami typu UART i wolno taktowany I2C (40kHz). Służą do podłączania takich rzeczy jak odbiornik GPS z opcjonalnym magnetometrem, radiomodemy, czy moduł komunikacyjny bluetooth. Listę na razie domykają dwa typy OSD pozwalające nakładać własne informacje takie jak sztuczny horyzont czy pomiary z czujników na obraz radiowo transmitowany obraz z pokładowej kamery. Od strony programowej jest tam jednostka inercyjna dająca informację od katach pochylenia, przechylenia i odchylenia platformy a moduł pneumatyczny daje informację o wysokości, prędkości wznoszenia i prędkości postępowej względem powietrza. Te informacje wchodzą jako sygnały pomiarowe na układ kaskadowo połączonych regulatorów PID. Wartości zadane na razie ustawiam z aparatury RC, takiej zwykłej do sterowania modelami latającymi. W tej chwili liczę na bieżąco 8 PIDów. Tak wygląda schemat połączenia regulatorów: Sygnały wyjściowe z regulatorów trafiają do miksera, gdzie w zależności od konfiguracji platformy latającej rozdzielane są na serwa czy w przypadku wielowirnikowca na regulatory silników bezszczotkowych. W tej chwili mam tylko oprogramowany mikser dla 4-wirnikowca w układzie X, ale z biegiem czasu będę dodawał kolejne platformy. To co na razie jest trudno nazwać robotem, bo jeszcze nie porusza się autonomicznie, jedynie samo się stabilizuje, ale powoli będę rozbudowywał to o funkcje nawigacyjne. Obecnie tak to się porusza: Jednym z ostatnich większych sukcesów było takie oprogramowanie karty SD aby dało się jej używać w locie. Chodzi o to że karta potrafi zablokować kontroler swoją bezczynnością na setki milisekund co dla platformy posiadającej 6 stopni swobody jest śmiertelnie niebezpieczne a mnie udało się podzielić jej pracę na elementy pierwsze sekwencyjne wywoływane z pętli głównej. Teraz jednocześnie steruję i rejestruję dane takie jak te: http://www.pitlab.pl/autopitlot/log/Kop20_04.log Łączne może być logowane 140 parametrów. Obecnie pracuję nad metodyką strojenia regulatorów PID. Roboty z tym jest bardzo dużo, ale mamy oprogramowane przez kolegę wygodne narzędzie w postaci wykresów gdzie można sobie wyświetlić przebieg działania wszystkich regulatorów (łącznie 5 parametrów dla każdego z 8 PIDów).
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...