Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 15.07.2006 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. 81 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
  3. 69 punktów
    To mój pierwszy post na tym forum ale od razu chciałbym przedstawić zbudowanego przeze mnie robota. Mimo że to pierwszy post to odwiedzałem to i inne fora wielokrotnie w poszukiwaniu przydatnych informacji i wykorzystując jedynie „magiczny” guzik szukaj udało mi się rozwiązać większość problemów z budową. To dla tych którzy nie chcą i nie lubią szukać… Wracając jednak do robota to został on nazwany X-walker i jest czteronożnym robotem kroczącym o symetrycznej konstrukcji. Został zaprojektowany jako robot którego zadaniem będzie przejście po nieznanym terenie przy jednoczesnym zachowaniu równowagi i odpowiednim położeniu korpusu. Prace nad robotem aktualnie się zakończyły, aczkolwiek temat jest obszerny i wiele można jeszcze ulepszyć albo dodać, więc w przyszłości robot zostanie poddany kolejnym modyfikacją. 1.Budowa mechaniczna Konstrukcja mechaniczna robota została zaprojektowana przy użyciu programu Autodesk Inventor 2010. Program ten umożliwił stworzenie wirtualnego modelu robota oraz przetestowanie zależności mechanicznych występujących pomiędzy jego elementami. Dzięki temu wybrano optymalne wymiary poszczególnych części. Poniżej na rysunku 1 zaprezentowano projekt robota z programu Inventor (bez elektroniki oraz okablowania): Na materiał konstrukcyjny wybrano aluminium jako, iż posiada odpowiednią wytrzymałość, jest przy tym lekkie i nadaje się do obróbki za pomocą prostych narzędzi. Zaprojektowane elementy wycięto przy pomocy lasera z 1.5mm i 2mm arkuszy aluminium. Poniżej przedstawiono wycięte elementy: Dalszy etap prac polegał na odpowiednim ukształtowaniu niektórych części. Proces ten odbywał się ręcznie przy udziale odpowiednich kopyt wykonanych z drewna bukowego i stali. Następnie dokonano montażu elementów przy pomocy różnego rodzaju łączników śrubowych o średnicach od 2 do 4mm. Dodano także inne elementy, takie jak tulejki dystansowe czy części składowe stóp ze zintegrowanymi czujnikami stykowymi. Na kolejnym rysunku przedstawiono złożonego robota: Poniżej przedstawiono szczegóły budowy stopy: Napęd robota stanowi 12 serwomechanizmów Power HD 1201 o parametrach przedstawionych poniżej (dane producenta): - moment 12.2/13.2 kg/cm - prędkość 0.16/0.14 sec/60° - napięcia 4.8/6.0 V - waga 60 g - wymiary 40.7 x 20.5 x 39.5 mm Niestety niektóre dane obiegają od wartości rzeczywistych, szczególnie wartość momentu, ale co ciekawe nawet wymiary nie są zgodne z rzeczywistymi. Podsumowując, konstrukcja mechaniczna robota posiada kilka charakterystycznych cech: - zwarta i solidna konstrukcja - podwójne łożyskowanie wszystkich stawów - zintegrowane czujniki stykowe w stopach - całkowita rozbieralność konstrukcji – tylko połączenia śrubowe - możliwie najmniejsze wymiary przy zastosowaniu danych elementów wyposażenia robota - liczne otwory odciążające konstrukcję 2. Elektronika Część elektroniczna robota posiada budowę modułową. Każdy moduł zawiera mikrokontroler AVR i pełni odpowiednie dla siebie funkcje. Każdy posiada także odpowiednio multipleksowane wyprowadzenie ISP, co pozwala programować moduły podczas ich działania. Moduły stanowią odrębne jednostki elektroniczne i można ich używać oddzielnie nie koniecznie w robocie X-walker. Do komunikacji między sobą wykorzystują SPI. Takie rozwiązanie nie ogranicza w dalszej rozbudowie robota i pozwala stale dodawać nowe elementy i funkcje. Poniżej scharakteryzowano poszczególne moduły. 2.1. Moduł sterujący „BRAIN” Jest głównym modułem w robocie, zawiaduje działaniem pozostałych. Został oparty na mikrokontrolerze ATmega 16A z kwarcem 16MHz. Posiada wyprowadzone piny z magistralą I2C i SPI, wyświetlacz LCD oraz 2 dodatkowe przyciski na potrzeby przyszłych funkcji. Poniżej krótka charakterystyka: - arbiter magistrali SPI - komunikacja z akcelerometrem i żyroskopem poprzez I2C - Realizacja filtru Kalmana w celu wyznaczenia aktualnego pochylenia robota - obsługa wyświetlacza LCD - nadzorowanie pracy innych modułów - formowanie odpowiednich ramek danych do komunikacji z PC 2.2. Moduły sterowników serw Robot posiada dwa takie same moduły sterowników serw, każdy obsługuje 6 serwomechanizmów, czyli 2 nogi robota. Moduły także oparte są o mikrokontroler ATmega 16A na kwarcu 16MHz. Najważniejszymi funkcjami tych modułów jest oczywiście generowanie odpowiedniego sygnału PWM dla serwomechanizmów, ale także obsługa czujników stykowych i pomiar napięć na potencjometrach serw (dodatkowy przewód wychodzący z każdego serwa). Ta ostatnia cecha służy sprawdzeniu czy serwomechanizm jest rzeczywiście wychylony od taką wartość jaką wyznacza sterowanie, co jest przydatne w pracy przy dużym obciążeniu. Należy dodać, że sygnały analogowe z potencjometrów przed dotarciem do tych modułów przechodzą przez filtr analogowy. 2.3 Moduł nadawczo odbiorczy „BT_RX_TX” Moduł ten jest odpowiedzialny za obsługę dwóch modułów bluetooth, jednego wysyłającego a drugiego obierającego dane z komputera. Dane przychodzące są odpowiednio filtrowane. W module zastosowano mikrokontroler ATmega 8A oraz kwarc 14.745MHz odpowiedni do transmisji szeregowej. Standardowo w module instaluje się dwa moduły bluetooth BTM-222. Poniżej zdjęcie przedstawiające moduł zamontowany w robocie: 2.4. Moduł zasilający "POWER" Robot jest zasilany dwoma zestawami akumulatorów. Pierwszy większy zestaw (2x LiPo 1850 mAh 7.4V) zasila serwomechanizmy, drugi mniejszy (LiPo 850 mAh 7.4V) zasila układy elektroniczne. Moduł zasilający monitoruje wartości napięć poszczególnych akumulatorów a także mierzy prąd jaki zużywają napędy robota. Zajmuje się także stabilizacją napięć – 5V dla elektroniki i poprzez stabilizator impulsowy (niewidoczny na zdjęciach) 5.3V lub 6V dla serwomechanizmów. Moduł zasilający posiada budowany układ dźwiękowy sygnalizujący niski stan napięcia w akumulatorach. Zajmuje się także monitorowaniem temperatury w istotnych miejscach robota za pomocą magistrali 1-wire oraz czujników DS18b20. Te miejsca to: stabilizator impulsowy dla serw, stabilizator liniowy dla elektroniki, temperatura w serwomechanizmie „udowym”, temperatura otoczenia. Zdjęcie użytego zasilacza impulsowego oraz zdjęcie robota po zamontowaniu modułu "POWER". Widoczny radiator stabilizatora liniowego elektroniki: 2.5 Pozostałe moduły Moduł żyroskopu Zawiera żyroskop cyfrowy L3G4200D oraz kilka elementów elektronicznych niezbędnych do jego działania . Na zdjęciu widać poprawiony błąd na PCB. Praktyczniej było to zrobić w ten sposób niż zmieniać całą płytkę bo wiązałoby się to z ponownym lutowaniem obudowy LGA żyroskopu. Moduł akcelerometru Zawiera akcelerometr (i magnetometr) cyfrowy LSM303DLH oraz tak jak moduł żyroskopu kilka elementów elektronicznych niezbędnych do jego działania. IMU - interial measurmet unit Moduł IMU czyli tzw. interial measurmet unit złożony i zamontowany w całości wraz z konwerterami napięć dla sygnałów magistrali I2C Moduł filtrów analogowych RC (2 sztuki) Filtruje napięcia na potencjometrach serw aby można było je prawidłowo zmierzyć poprzez wbudowane w mikrokontrolerach przetworniki ADC 3. Sterowanie X-walker jest sterowany za pomocą komputera PC i odpowiedniej aplikacji. Zastosowanie dwóch modułów Bluetooth pozwoliło na szybkie przekazywanie danych w obu kierunkach i uzyskanie kroku sterowania na poziomie 40ms. Czas ten nie jest niestety gwarantowany z racji zastosowania protokołu Bluetooth, aczkolwiek robot porusza się płynnie i reaguje błyskawicznie na zmiany sterowania. W jednym cyklu sterowania od robota odbierane są odpowiednie dane, wyliczane jest sterowanie i dane ponownie wysyłane są do robota. Na ekranie komputera możemy obserwować dane generowane przez wszystkie moduły robota jak również aktualne położenie środka ciężkości robota względem jego stóp z naniesionym wielokątem podparcia (obraz poniżej) Po wybraniu odpowiednich ustawień chodu robota oraz prędkości poruszania się następuję połączenie z robotem. O tej pory możemy nim sterować: chód przód, tył, na boki oraz obroty w lewo prawo. Wszystkie inne „akcje” związane z chodzeniem po trudnym terenie robot podejmuje sam. Na filmach poniżej można więc zaobserwować jak przekłada nogę w celu znalezienia odpowiedniego miejsca do położenia jej bądź też ratuje się przed wywrotką po obsunięciu się którejś z nóg. Innych elementów prawdopodobnie nie widać na filmach a mianowicie robot dba cały czas o odpowiednie usytuowanie środka ciężkości tym samym zapewniając sobie stabilność. Każdorazowo dobiera odpowiednie przemieszczenia nóg wzdłuż wszystkich osi oraz przemieszczenie korpusu. Korpus robota jest pozycjonowany automatycznie za sprawa sterowników PID które wyliczają sterowanie na podstawie danych z żyroskopu i akcelerometru przetworzonych przez filtr Kalmana. Wysokość korpusu nad ziemią także jest ustalana przez odpowiedni algorytm. Dodatkowo robot pilnuje aby każda noga która w danej fazie chodu ma spoczywać, w przypadku utraty podłoża „znalazła” nowe poprzez systematyczne obniżanie jej. Opis powyżej przedstawia pokrótce sposób w jaki sterowany jest robot, aczkolwiek nie zawiera wszystkich szczegółów. Zostały wymienione tylko główne funkcje algorytmów sterujących. Zdaje sobie sprawę że opis ten może być ciężki do zrozumienia, ale nigdy nie miałem talentu do opisywania tego co robie, więc śmiało można pytać i będę się starał rozwiewać wątpliwości oraz uzupełnić opis w miarę możliwości. Na koniec jeszcze kilka zdjęć i filmy: Kinematyka odwrotna: Kontrola przechyłu korpusu: Chodzenie po nierównym terenie: Chodzenie po ruchomej równoważni: I jeszcze coś w HD, łażenie po kamyczkach:
  4. 65 punktów
    Przedstawiamy konstrukcję dwukołowego robota typu line follower o nazwie GreenNight. Konstrukcja oparta jest w całości na laminacie 1,5mm. Jako napęd wykorzystane zostały dwa silniki Pololu HP 30:1. Dodatkowo w celu polepszenia docisku zastosowany został napęd tunelowy. Mechanika Pod tym względem konstrukcja jest bardzo prosta. Napęd stanowią dwa silniki Pololu HP 30:1. Podporą przednią jest ball caster plastikowy. Koła zostały wybrane metodą prób i błędów. Przetestowaliśmy różne modele (Koła solarbotics, koła Pololu , koła Lego). Ostatecznie wybraliśmy koła Lego. Mają one bardzo dobrą przyczepność, dodatkowo na rynku dostępnych jest wiele modeli o różnych średnicach opon co daje duże możliwości manewru. Ciekawostką jest zastosowany napęd tunelowy. Znacznie poprawia docisk co za tym idzie ułatwia dobór nastaw regulatora. Silnikiem napędzającym turbinę jest Graupner 280. Pomysł użycia napędu tunelowego zaczerpnięty z robota Hurricane chłopaków z Krakowa. Elektronika Robotem steruje mikrokontroler firmy Atmel z rodziny AVR Atmega128. Jako sterowniki silników wybrane zostały dwukanałowe mostki H TB6612. Po jednym mostku na jeden silnik(kanały zostały połączone). Takie rozwiązanie daje spory zapas prądowy (nie trzeba się martwić o zniszczenie układów). Napędem tunelowym steruje MOSFET z kanałem N IRL540N. Do którego poprzez wzmacniacz tranzystorowy poprowadzony został sygnał PWM z mikrokontrolera. Jako stabilizator napięcia na układy logiczne zastosowany został układ przetwornicy step-down (ST1S10PHR). Regulator impulsowy został wybrany ze względu na jego wysoką sprawność. Użycie stabilizatora liniowego spowodowało by sporą stratę mocy (Zasilanie 12V). Do wykrywania linii użyte zostały czujniki KTIR0711S (15 czujników ułożonym po okręgu oraz dwa wysunięte do przodu 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 przewidziane jest miejsce na czujnik odległości. Dodatkowo powstała płytka drukowana z przyciskami i wyświetlaczem LCD oraz pcb do obsługi pilota. Pierwsza służy do ustawiania parametrów oraz sprawdzania poprawności działania czujników oraz regulatora. Układ podpinany jest do robota poprzez 12-pinowe złącze. Na drugiej natomiast znajduję się dodatkowy mikrokontroler Atmega8 odpowiedzialny za dekodowanie sygnału z pilota (kodowanie RC5). Z procesorem głównym komunikuję się za pomocą jednej linii sygnałowej (generuje przerwanie). Płytki wykonane zostały w warunkach domowych. Sterowanie W robocie zaimplementowany został regulator PD. Do czujników zostały przypisane odpowiednie wartości błędów. Nastawy zostały dobrane doświadczalnie. Na tej podstawie algorytm wylicza korektę czyli sygnał PWM podawany na sterowniki silników. Podsumowanie Robot powstał w dwóch egzemplarzach różniących się miedzy sobą kolorem (zielony - GreenNight i czerwony riddle). Dwie takie same konstrukcje pozwoliły nam testować różne rozwiązania i porównać je miedzy sobą np. wybór opon, nastaw regulatora, moc turbiny. Masa robota bez baterii to 230 g. Realna średnia prędkość na trasie to 1,8 m/s. Koszt wykonania robota około 500zł. Filmy GreenNight - Robotchallenge Wiedeń 2011 GreenNight - Cybairbot Poznań 2011 riddle - Cybairbot Poznań GreenNight - Robo3DVision Gdańsk 2011 Film z turnieju Robo3DVision Gdańsk 2011 - finały Line follower od 4:10 GreenNight - Roboxy Gdańsk 2011 Przejazdy finałowe z turnieju Roboxy Gdańsk 2011 Zdjęcia: Osiągniecia: 2. Miejsce Międzynarodowy turniej robotów w Wiedniu - Robotchallenge 2011 1. i 2. Miejsce Międzynarodowy turniej robotów w Pradze - Czech Robotic Day 2011 2. Miejsce Turniej robotów w Krakowie - Robocomp 2011 1. i 2. miejsce Turniej Robotów w Poznaniu - Cybairbot 2011 1. Miejsce Turniej Robotów w Gdańsku - Robo3DVision 2011 1. i 2. miejsce Turniej Robotów w Gdańsku - Roboxy 2011 Autorzy projektu: - Szymon Mońka - Bartosz Derkacz main_sch.pdf czujniki_sch.pdf czujniki_pcb.pdf LCD.pdf tsop.pdf main_pcb.pdf
  5. 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
  6. 64 punktów
    Konstrukcja linefollowera jest oparta o laminat szklano-epoksydowy stanowiący jednocześnie płytkę drukowaną elektroniki. Konstrukcja przystosowana jest również do jeżdżenia po torach z przeszkodami. Robot posiada możliwość regulowania wysunięcia czujników linii, jak również wysokość czujników nad torem. Sterowany jest nowoczesnym mikrokontrolerem ATXmega128A1. Silniki pozwalają robotowi osiągać prędkości ponad 1,5m/s co stawia go w czołówce najszybszych polskich robotów typu Lf. Oryginalny design wraz z efektami świetlnymi powoduje, że robot świetnie się prezentuje na torze. Przedstawiam robota klasy Linefollower, którego wykonałem razem z TIMONKiem. Jak wszystkie moje konstrukcje robot po ustaleniu koncepcji i wszystkich założeń konstrukcji został zaprojektowany w programie Autodesk Inventor. Oto kilka renderów z Inventora a w załączniku plik złożeniowy wraz ze wszystkimi plikami. Dla tych co mają inną wersję Inventora lub używają innego programu załączam również plik .step: Elektronika robota składa się z dwóch płytek drukowanych i wyświetlacza. Obwody drukowane zostały zaprojektowane w programie Altium Designer. Poniżej kilka zrzutów ekranu. W załączniku dołączam schematy w formacie PDF oraz pliki Altiuma. Widok 3D płytki nie będzie działał, ponieważ projekt jest powiązany na stałe z plikami inventora. Po ominięciu kilku wyskakujących błędów powinien działać widok 2D obwodu. Kilka zdań o konstrukcji mechanicznej: Jak widać na zdjęciach robot składa się z dwóch płytek drukowanych, dzięki czemu możliwa jest regulacja odległości czujników od osi napędowej. Możemy w ten sposób ustalić empirycznie optymalną odległość między osią kół a czujnikami. Z naszych obserwacji wynika, że robot, który ma większą odległość czujników od kół lepiej sprawdza się na szybszych trasach, które mają łagodniejsze zakręty. Płytki są ze sobą połączone przy pomocy 20 żyłowej taśmy. Środek ciężkości robota został umieszczony w miarę nisko nad ziemią, ok. 6mm oraz w odległości około 14mm przed osią kół. Cała konstrukcja waży ok. 100g (dokładną wagę podam w przyszłym tygodniu). W Linefollowerze zostały zastosowane silniki z Pololu w wersji HP z przekładnią 30:1, ich specyfikacja dostępna jest tutaj: http://www.pololu.com/catalog/product/1093. Silniki zostały zamocowane na podstawkach wyciętych laserowo z plexi, tak aby środek ciężkości znajdował się jak najniżej i aby płytka z elektroniką była umieszczona równolegle do podłoża. Kulka podpierająca przód robota również została kupiona w sklepie Pololu. Zastosowane koła to kółka z mobot.pl po mojej małej przeróbce. Do robota pasują również koła z Pololu, które widać na niektórych filmikach i zdjęciach. Słów parę o elektronice: Na przedniej płytce znajduje się 16 transoptorów odbiciowych KTIR0711S, 4 diody LED, czujnik Sharp gp2y0d340k wraz z niezbędnymi elementami (filtr LC na zasilaniu, dzielnik rezystorowy na wyjściu oraz zworka do włączania czujnika), dwa kondensatory odsprzęgające napięcia +3,3V i +5V oraz 20-pinowe złącze taśmy. Na tylnej płytce: -układ zasilania złożony z dwóch połączonych kaskadowo stabilizatorów L7805ACDT (+5V) i LF33 (+3,3V). Przed stabilizatorami znajduje się dodatkowo włącznik i dioda prostownicza FR3 zabezpieczająca przed odwrotnym podłączeniem akumulatora. Ze stabilizatorami współpracują kondensatory tantalowe SMD. -procesor ATXmega128A1 wraz z ośmioma kondensatorami odsprzedającymi i dwoma filtrami LC filtrującymi napięcie dołączone do nóżek AVcc. -dwa mostki H VNH3SP30 sterujące silnikami. -komparator sygnalizujący rozładowanie akumulatora poniżej 50% poprzez zapalenie zielonej (zielona aby się wyróżniała) diody LED. Na wejścia komparatora podane są przez dzielniki rezystorowe napięcia akumulatora i napięcie ze stabilizatora +3,3V. Dodatkowo wyjście komparatora zostało podłączone do jednego z wyprowadzeń mikrokontrolera, aby można było programowo zareagować na rozładowanie akumulatora. -6-pinowe złącze programatora „micromatch” (wykorzystane tylko 4 piny) -scalony odbiornik podczerwieni TSOP32156, do współpracy z pilotem -złącze wyświetlacza LCD, na które wyprowadzony został cały port F (na schemacie jest narysowane tylko 7 linii, ale na płytce można podłączyć 8 linię robiąc małą zworkę z cyny), dzięki czemu złącze te może być wykorzystane również do rozbudowy robota. -trzy microswitche -3 czerwone diody sygnalizujące poprawne pojawienie się w układzie napięć: akumulatora, +5V, +3,3V. -dwie diody LED SMD RGB wraz z tranzystorami sterującymi. Diody zostały zamontowane od spodu robota i mają za zadanie oświetlanie toru (efekt wizualny). Tranzystory sterowane są sześcioma sygnałami PWM, dzięki czemu na diodach można uzyskać dowolny kolor bez obciążania procesora. -18 sztuk czerwonych diod LED SMD 0603, służących do generowania efektów wizualnych -20-pinowe złącze taśmy łączącej obie płytki Trasa: Trasa dla robota wykonana została z laminowanej płyty paździerzowej zakupionej w Castoramie. Płyta została pocięta na kawałki ok. 1x1m, a następnie skręcona przy pomocy stalowych płaskowników. Boki pociętej płyty zabezpieczyliśmy tzw. obrzeżami meblowymi. Linia po której jeździć ma robot wyklejona została izolacją o szerokości 19mm. Bandy toru wykonane zostały z samoprzylepnych klinów z gąbki. Filmiki z pierwszych testów: Drugie testy: Robot nie jeździ jeszcze z maksymalną prędkością, widać jak czasami wariuje na łączeniach płyt. Oprogramowanie jest cały czas rozwijane więc z czasem będzie jeździł szybciej. Ta odstająca do góry taśma jest tylko tymczasowo, później będzie założona taśma na wymiar. OSIĄGNIĘCIA: Inferno wraz z bratem bliźniakiem Mefisto wziął udział w zawodach LF i LF z przeszkodami na SumoChallenge w Łodzi oraz w zawodach LF na RoboticArena we Wrocławiu osiągając: Sumochallenge2010: 1. miejsce dla robota Mefisto w kategorii Linefollower. 2. miejsce dla robota Inferno w kategorii Linefollower. 1. miejsce dla robota Inferno w kategorii Linefollower z przeszkodami. 3. miejsce dla robota Mefisto w kategorii Linefollower z przeszkodami. Film z eliminacji na SumoChallenge: RoboticArena2010: 1. miejsce dla robota Inferno w kategorii Linefollower. Podsumowując: mój i TIMONKa debiut w kategorii Linefollowerów uznajemy za udany Film nagrany podczas dni otwartych Politechniki Poznańskiej 27 listopada: schematy.rar LF.rar LF.rar robot.rar
  7. 59 punktów
    Skarabeusz - robot kroczący typu hexapod, napędzany jest 12 serwami. Dwa serwa na nogę pozwalają na wysterowanie każdej nogi z osobna w dużym zakresie. Spośród innych robotów tego wyróżniają go przede wszystkim jego małe wymiary i to właśnie było głównym założeniem przy jego budowie. Dodatkowo jako jeden z nielicznych robotów 6 nożnych jest całkowicie bezprzewodowy, zasilany z akumulatora umieszczonego w robocie. Spowodowało to szereg trudności przy budowie, ale nie żałuję tego rozwiązania, bo mogę się dzięki niemu wykazać czymś oryginalnym. Dane techniczne - wymiary: ok 240x200x100mm* (bez wąsów) - waga ok. 400-500g - 12 mikro serwomechanizmów modelarskich - procesor ATmega168 20MHz - materiał: pleksi 4mm, łączenia śrubkami, tulejkami i klejem - komunikacja radiowa z dedykowanego pilota - możliwość modułowego montażu czujnika - zasilanie: pakiet li-po E-sky 7,4V 800mAh *zależne od wychylenia nóg, tu podane w trakcie stania robota Pomysł, projekt Pomysł na budowę nowego robota pojawił się już z początkiem roku. Po męczących bataliach z line followerami zdecydowałem, że zbuduję coś zupełnie innego. Hexapod wydawał się trudnym wyzwaniem, ale przy pewnej dozie szczęścia osiągalnym. Udało mi się zaoszczędzić taką ilość środków, że nie musiałem się obawiać że zabraknie funduszy (co miało się po czasie zmienić). Nie chciałem jednak, żeby był to kolejny "zwykły" robot kroczący - to i kilka innych argumentów, jak np. ceny serw, zadecydowały że będzie to robot o małych wymiarach. Pozostała kwestia doboru ilości serwomechanizmów: 12 czy 18? Zdecydowałem się na 12 z kilku przyczyn: prościej, taniej oraz nie potrzeba dodatkowego serwokontrolera (mało miejsca w robocie), a jedyne ograniczenie to brak możliwości chodu do boku. Trudno, może kiedyś... Jako materiał wybrałem pleksi, ponieważ jest łatwo osiągalny, lekki, w miarę sztywny, tani i dużo osób z niego korzysta. Grubość 4mm. Pleksi chyba najłatwiej obrabia się laserem, a w przypadku gdy potrzebujemy identycznych części dla 6 nóg jest to sposób niemal idealny, i jak się okazało bardzo tani. Pierwszą fazą pracy nad robotem był jego projekt wykonany w programie CAD - Solid Edge. Do projektowania w CADzie cały czas zachęcał mnie Bobby, ale okazało się to raczej koniecznością. Ma to wiele zalet - pozwala uniknąć wielu błędów już przy fazie projektowania, ma się na bieżąco podgląd robota, wiec nie ma zdziwienia po złożeniu robota "w realu". Tak więc projekt składał się z kilku części: górnej i dolnej części korpusu, łączników serw obrotu z serwami podnoszenia i dwuczęściowych nóg. Dodatkowo było potrzebne wymodelowanie akumulatora, serw, tulejek dystansowych i kilku innych szczegółów. Z gotowego projektu wyeksportowałem potrzebne części do rysunku, a później do pliku który wysłałem do firmy. Dzięki projektowi i laserowemu cięciu części nie miałem praktycznie żadnych problemów przy montażu, może oprócz wkręcania wkrętów (po nagrzaniu wkręta wchodzi bardzo prosto i trzyma dobrze). Dużo otworków było tylko "napunktowanych" laserem (d=1mm), a następnie rozwierconych wiertarką. Robot był identyczny z projektem - nie spodziewałem się że ten etap pójdzie tak łatwo. Niestety, na skutek pewnych niedogodności związanych z korzystaniem z programów komercyjnych, projekt przepadł (całe szczęście nie był mi już potrzebny). Pozostał mi jeden jedyny screen, w dodatku w marnej jakości. Mechanika, Napęd Tak jak już pisałem, obudowa zrobiona jest z 4mm pleksy ciętej laserowo. Użyte serwa to HXT900 - są tanie i można do nich dokupić zapasowe tryby za 5zł, niestety cena w tym przypadku idzie w parze z jakością. Póki działają to dobrze, ale cały czas mam wrażenie że któreś posypie się w najmniej odpowiednim momencie. Są one albo wkręcane do obudowy, albo do niej klejone - połączenie klejone trzyma bardzo dobrze, próba oderwania serwa zakończyła się złamaniem elementu z pleksi. 6 serw służy do obracania nóg, a następne 6 do ich ruchu góra/dół. Nogi zostały rozmieszczone po 3 z każdej strony robota. Nogi składają się z dwóch części skręconych przez tulejki dystansowe w celu wyśrodkowania punktów podparcia w osi robota. Części są przymocowane do orczyków również przy pomocy wkrętów odpowiednio przyciętych by nie wystawały. Niestety orczyki mają nieco luzów na wałku serwa, przez co konstrukcja jest nieco giętka, ale stabilna. Nogi nie posiadają żadnych antypoślizgowych nakładek, co prawda poprawiłoby to jego chód, ale utrudniło jednocześnie takie ruchy jak podnoszenie, opadanie czy nachylenia - pamiętajmy, że robot ma 12 serw i wykonywanie takich ruchów jest możliwe dzięki pewnemu poślizgowi nóg. Gdybym próbował je robić z nakładkami mógłbym uszkodzić serwa. Elektronika Najpierw dlaczego ATmega168: duże taktowanie, duża ilość pamięci flash i wystarczająca ilość pinów I/O wykorzystanych praktycznie maksymalnie , przez co niepotrzebnie nie komplikuję układu. Elektronika przysporzyła dość dużo problemów przy budowie. Pierwszy problem był taki, że płytka nie mogła przekroczyć 85x60mm, a miał się na niej znaleźć procesor z peryferiami, dwa stabilizatory, jakieś przyciski, diody, wyjście dla czujnika, modułu radiowego, UART i zasilania do programowania, kondensatory do filtrowania oraz wyprowadzenia dla 12 serw, każde po 3 piny. Oczywistą sprawą jest, że musiała być dwustronna, ale na szczęście miałem już trochę wprawy przy robieniu takich płytek przy "Bajtlu". Po długich i monotonnych godzinach spędzonych przy kompie udało mi się płytkę dokończyć. Po zrobieniu i polutowaniu wyglądała tak: Reszta elementów jest po drugiej stronie płytki. Przewody są podpięte do resetu i służą wgraniu bootloadera (reszta wyprowadzeń programowania ISP na wyjściach dla serw). Za jednym zamachem popełniłem czujnik, który nie zadziałał a w dodatku nie wpasowywał się ostatecznie do robota. Powstała druga wersja czujnika, której nie udało mi się uruchomić po dziś dzień Na płytce znalazło się kilka błędów, głównie przez moją nieuwagę, dlatego kilka ścieżek zostało przeciętych i poprowadzonych "na przewodach" - taki urok prototypów. Nie wygląda źle, a póki działa nie widzę potrzeby robienia nowej płytki. Zasilanie Chyba najbardziej kłopotliwe zagadnienie przy budowie. Źródłem jest akumulatorek li-po, ponieważ ma bardzo dużą wydajność prądową, przy czym jest lekki i mały. Serwa rozstawiałem tak, żeby mieścił się między nimi i nie trzeba go było dodatkowo mocować. Ponieważ serwa stwarzają duże zakłócenia w robocie, potrzebne było użycie dwóch stabilizatorów LDO - LM2940 w SMD wlutowany w płytkę oraz LM1084, wyprowadzony na przewodach. Duże zużycie prądu (podczas chodu 2,5A) wymusiło użycie dużego (jak na takiego robota) radiatora z wentylatorkiem, czego nie przewidziałem w projekcie. Bez wentylatorka radiator w 2min miał ponad 100st, co w przypadku robota z pleksy nie jest najlepszym rozwiązaniem. Udało mi się je dość dobrze ulokować z tyłu robota, przez co nie "straszą". Akumulatorek wystarcza na około 20 minut ciągłego chodu - przy oszczędnym użytkowaniu 30min. Nie dużo, ale pamiętajmy że modele RC mają nie więcej, więc nie załamuje mnie to. I pomyśleć, że te wszystkie problemy można pominąć, stosując zasilacz... Program Ponieważ znam tylko język BASCOM, to wyboru zbyt dużego nie miałem. Do procesora został wgrany bootloader, dzięki czemu mogę programować przy użyciu 4 pinów zamiast 6 - wbrew pozorom na takiej płytce jak moja to bardzo wielkie udogodnienie. Bardzo trudnym zagadnieniem przy budowie robota na tylu serwach jest ich wypozycjonowanie - od tego zależy stabilność chodu, to czy robot chodzi prosto, czy nie jest pochylony. Zaryzykuję stwierdzenie, że jest to równie trudne zagadnienie jak dobór współczynników w PID'zie - poprawiam to od początku istnienia robota, jest coraz lepiej ale ciągle wydaje mi się że to nie są idealne ustawienia. Może zwróciłeś Czytelniku uwagę na moje stwierdzenie na początku, że przy użyciu 12 serw nie potrzebuję dodatkowego serwokontrolera. Tak, wszystkie serwa są sterowane wspaniałą bascomową funkcją Config Servos! Nie napotkałem z nią najmniejszych problemów, a serwa można ustawiać z dużą rozdzielczością. To proste i skuteczne rozwiązanie ma wg mnie tylko jedną wadę: obsługuje do 16 serw - to jest jeden z głównych powodów dlaczego mój robot nie ma ich 18. O programie na razie nie ma zbytnio co pisać: nie ma kinematyki (jeszcze ), wychylenia działają na zasadzie wczytywania odpowiednich wartości dla serw, możliwa jest zmiana prędkości działania robota i jego maksymalnych wychyleń przy pomocy stałych definiowanych na początku programu. Praktycznie cały program to skoki pomiędzy poszczególnymi podprogramami, co nieco ułatwia pracę bo można poszczególne poprawiać i edytować bez obaw o całość działania programu. Program zajmuje na razie 70% pamięci flash, ale duża w tym zasługa tego że nie dbałem zbytnio przy pisaniu o jego optymalizację. W zamyśle mam całkiem nową koncepcję algorytmu, która powinna zająć dużo mniej pamięci. Robot porusza się chodem 3-podporowym. Czujniki Projekt przewidywał użycie czujnika optycznego na osobnym procesorze, mającego 3 diody nadawcze co pozwalałoby na obserwację otoczenia szerzej niż w przypadku powiedzmy Sharpów, a przy czym taniej. taki czujnik można będzie dodatkowo dopasować do własnych potrzeb. Ponieważ czujnika jeszcze nie uruchomiłem, a na zawody w Łodzi chciałem już mieć jakieś czujniki, wykorzystałem te najprostsze - krańcówki. Dlatego robocik ma teraz osobliwe "wąsy". Przedłużenia wykonałem z pręcików węglowych - jest to materiał idealny do tego zastosowania, bardzo giętki a nie odkształcający się, tani (2,50zł/m) i łatwy do nabycia w sklepach modelarskich. Przyznaję z bólem, że podpatrzyłem to rozwiązanie z robota Hexor II. Jeżeli komuś nie po drodze do modelarskiego, to takie pręciki używane są jako kile w spławikach wędkarskich, z tym że niestety koszt najtańszych spławików z węglowym kilem to 3-4zł/szt. Sterowanie Czyli jak zrobić żeby robot nie był robotem. Przeczytać świetny artykuł Elvisa, kupić tanie moduły HM-T868S i HM-R868S (ich dodatkową zaletą jest to, że są bardzo małe i bez problemu mieszczą się w moim robocie) i przeprowadzić transmisję. Nadajnik zabudowałem w pilocie, który zbudowałem specjalnie po robota. Steruje nim ATmega88, posiada 9 przycisków (5 do ruchu i 4 jako dodatkowe opcje) oraz potencjometr do regulacji prędkości (jeszcze nie uruchomiłem tej funkcji). Zasilany jest z 4 akumulatorków AA. Zabudowany został w kupionej obudowie, którą krzywo powierciłem (ale parszywie się w tym wierci...). Płytka drukowana również dwustronna, wklejona na... hot glue. Po skręceniu hot glue nie widać, myślę że pilot broni się estetyką dość dobrze. I wyjaśnijmy sobie jedną sprawę. Futerko nie ma konkretnych zastosowań, górny pasek maskuje otwór po cięciu obudowy pod miejsce na koszyk z bateriami, a te po bokach są ponieważ przyjemniej mi się trzyma niż goły plastik. Można je prosto odkleić, dlatego nie chciałbym aby ktoś oceniał robota pod kątem futerka na pilocie. Koszty No i najsmutniejsza kwestia. Podliczeń dokładnych nie zrobię, na robota wydałem dużo. Bez zgromadzenia 500zł nie ma się co zabierać za takie konstrukcje, no chyba że chce się odkładać projekt na półkę z powodu braku kasy. Tak, mogłem zaoszczędzić kupując serwa na HobbyKing, ale nie chciałem ryzykować pierwszym razem. -13 serw (jedno na zapas) + komplety naprawcze + wysyłki - 250zł -pleksa + cięcie - 50zł (w innej firmie zaoferowali mi.... 200zł ) -części elektroniczne - 200-250zł -wentylatorek - 30zł (był bardzo drogi ale nie miałem wyboru) -różne śrubki, kleje, inne pier... drobiazgi - 150zł -akku li-po z ładowarką już miałem, ale gdyby kupować: akku 30zł, ładowarka 30zł, zasilacz 20zł. Dodatkowo zaszalałem i dla uprzyjemnienia sobie pracy zakupiłem lutownicę Hot Air, koszt 300zł + pasta za 40zł. I jeszcze w końcu starego laptopa za 200zł na zawody. Ale to nie jest jednorazowa inwestycja. Przyszłość Uważam robota za rozwojowego. Oprócz stałego ulepszania kodu aż do kinematyki mam jeszcze pomysły na dodatkowe moduły i funkcje. Update'y będę zamieszczał w tym poście, a informował w temacie. Ponieważ mocowanie serw jest dość kłopotliwe, ich wymiana wiązałaby się z nową obudową (to na szczęście jest tanie), dla której musiałbym robić projekt w CAD'zie od początku - póki co o tym nie myślę. Podsumowanie Żaden robot dotychczas nie dostarczył mi tyle radości przy tworzeniu. Było to dla mnie dużym wyzwaniem, ale uważam że cel osiągnąłem. Poprzednie roboty działały, ten... żyje Jestem z niego bardzo zadowolony i uważam go za w pełni udaną konstrukcję. Pisanie programu to dla mnie świetna zabawa, bo to tak jakby go uczyć. Robot wystartował na zawodach w Łodzi, gdzie zajął niestety ostatnie 5 miejsce, ale cieszył się dużym zainteresowaniem, szczególnie dzieci (chociaż niektóre się go bały). Jeżeli ktoś dotarł do szczęśliwego końca moich wypocin, to wyjaśniam czemu tyle tego: żeby ograniczyć jak najbardziej ilość niepotrzebnych pytań w temacie. Jeżeli coś pominąłem, to proszę pisać, jednakże zastrzegam sobie prawo do niektórych tajemnic :-> Nie będę owijał w bawełnę, nie chciałbym aby ten projekt był kopiowany i zasypały nas mini hexapody na 12 serwach, bo spędziłem nad nim naprawdę dużo czasu, wydałem na niego dużo pieniędzy, nie należał do prostych i wydaje mi się że zachowanie pewnych informacji i projektów dla siebie nie zostanie odebrane źle. I na koniec bardzo ładne zdjęcie z zawodów w Łodzi, które znalazło się w jednej z galerii na Interii. UPDATE #1 14.11.2010 Robocik zajął 3 miejsce na zawodach Robotic Arena 2010. Dziękuję za wszystkie oddane głosy.
  8. 58 punktów
    Witam jest to mój pierwszy robot, nazwałem go IVAN, zbudowany w większości z aluminium jak widać na załączonych zdjęciach. Gąsienice wykonane z gumowych opasek na rękę. (bardzo dobra przyczepność). Zastosowałem 4 czujniki odległości SHARP2D120x (niestety analogowe i są dość wolne) (4-30cm) i 4 czujniki koloru QRD1114. Silniki to 6-ścio voltowe silniczki HL149 z przekładnią 21:1 silniki są dość ciężkie bo ważą razem190g a przy tej konstrukcji to był duży problem. (koła po odchudzeniu wyglądają jak ser!) Cały robot waży 497g. Na niektórych zdjęciach widać korpus z aluminium 2 mm potem w celu odchudzenia konstrukcji powstał jeszcze jeden z 1 mm. Robot atakuje stroną którą prędzej wykryje przeciwnika z dużą prędkością. Elektronika opiera się na procesorze Atmega32 program w C. W kodzie ma zaimplementowane komunikaty 'co się z nim w danym czasie dzieje' wysyłane są na port COM (w przyszłości planuje bezprzewodowo ale to już w wersji robota V2). Zasilanie lipo 400mah - bardzo mała pojemność wybrany ze względu na małą wagę 42g - ładowany ładowarką IMAX B6. Korpus wykonany na maszynie sterowanej numerycznie a koła wytoczone na tokarce – widać Niektóre śrubki zrobione z pręta aluminiowego w celu oszczędzenia wagi. Kosztorys (mniej więcej) Toczenie - free Wycinanie - free Aluminium na korpus i koła - free Aluminiowe profile – 20zł Akumulator - 40zł Ładowarka - 180zł Silniki - 25zł Czujniki odległości sharp – 200zł Płyta główna + regulator napięcia silników – free Czujniki podłoża - 12 zł ‘Gumki’ na gąsienice – free Śruby / drobiazgi – 15zł Łożyska - 4zł Jak coś pominąłem proszę pytać Zdjęcia z budowy i gotowego robota: Projekt sketchup: ...jeszcze 3 foty case-a robota No i film:
  9. 49 punktów
    Witam, tym razem chciałbym zaprezentować mojego najmniejszego do tej pory robocika klasy Nanosumo. Nazywa się „Mały”. W zasadzie wszystko w tym projekcie jest małe: µkontroler, akumulator, silniki, czujniki. Jedną wielką rzeczą była radość podczas pierwszej walki z kartonikiem, gdy to wszystko zadziałało. Idea zbudowania robota zrodziła się kilka lat temu. Od tego czasu trwało zbieranie odpowiednich elementów i informacji. Sama konstrukcja powstawała krótko, bo około 2 tygodnie. Robot mieści się w pudełku o wymiarach 15mm*15mm*15mm. Napędzany jest dwoma silnikami z wibracji Nokii 3310. Przekładnie wyjęte z małych serwomechanizmów. Sterownik silników MPC17C724 znajduje się na dwustronnej płytce PCB umieszczonej między kołami. Akumulator Li-pol 3,7V o pojemności 50mAh w zupełności wystarcza na 20min pracy. Mikrokontroler ATMEGA8L w obudowie MLF znajduje się na głównej płycie PCB pod akumulatorem. Taktowany jest z zewnętrznego generatora 12MHz, aby umożliwić programowanie, z wykorzystaniem bootloadera bezpośrednio z portu USB. Dzięki takiemu rozwiązaniu złącze programatora ma tylko 3 piny. Od spodu na przednim silniku umieszczone są 2 czujniki linii KTIR0711S. Musiały być odpowiednio zeszlifowane, aby szczelina między podłożem i czujnikami była większa od 0,9mm. Dalmierz oparty o APDS-9700 oraz HSDL-9100 idealnie nadawał się do tego robota. Największy problem podczas budowy sprawiło zablokowanie µkontrolera. Niezbędne było użycie Rezurektora AVR. Dzięki odpowiedniemu przygotowaniu innych problemów prawie nie było.
  10. 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.
  11. 43 punktów
    Kurs BASCOM - lekcja1-wstęp Kurs BASCOM - lekcja2 - pierwsze kroki Kurs BASCOM - lekcja3 - zaczynamy programować Kurs BASCOMZ powodu dużego zapotrzebowania na kurs programowania w języku ms basic postanowiłem napisać ciąg artykułów uczących podstaw programowania w tym właśnie języku. Artów będzie 3 lub 4 w zależności od tego jak podzielę materiał i jakim wolnym czasem będę dysponował. Kurs będzie dotyczył rodziny µC AVR. Jak wiadomo nie licząc robotów beam to robotyka by nie istniała bez programowania. Wiec każdy robotyk musi umieć programować chociaż w najprostszym języku jakim jest ten właśnie opisywany przeze mnie. Tak więc „Alea iacta est”(kości zostały rzucone). Zacznę od potrzebnego sprzętu: Programator: Na sam początek powinniśmy się zaopatrzyć w programator (my będziemy używać programatora isp). Najprostszy to cztery oporniki wtyk lpt i kawałek kabelka: Ale warto jest zabezpieczyć port lpt przed zepsuciem i zbudować bądź kupić stk200 : Są też programatory na port rs232 (com): Jeśli nie masz w komputerze portu lpt ani com co teraz jest coraz szerzej spotykanym zjawiskiem (niestety te dwa ważne porty dla elektronika powoli odchodzą w zapomnienie) Są też programatory pod usb. Na przykład usbasp którego można zobaczyć na tej stronie. Ale jeśli nie czujesz się na siłach aby coś takiego zbudować kup sobie programator, taki jak stk200 można w znanym serwisie aukcyjnym kupić już za 15 zł. To są tylko niektóre z programatorów, jest jeszcze ich wiele. Te które wymieniłem wydaja mi się najlepsze ale mogę się mylić ponieważ nie za wszystkich korzystałem-oparłem się na opinii użytkowników. Procesor: Ja proponuje na sam początek attinny2313. Czemu? Ponieważ jest wystarczający na rozpoczęcie przygody z mikrokontrolerami, jeżeli twój pierwszy program nie zmieści się w jego pamięci to mówię Ci mistrzu. Nie potrzebuje kwarcu- może pracować na wewnętrznym oscylatorze. Moim zdaniem na kilka pierwszych programów jest aż za dobry. W związku z pojawiającymi się wątpliwościami (wcześniej wydawało mi się to oczywiste) dodaje, że wyprowadzenia procesora podłączamy do tak samo nazywających się wyprowadzeń programatora. Kompilator: Kompilatorem języka ms basic którego będziemy używać będzie BASCOM-AVR. Można go pobrać z tej strony Obsługa programu: Po zainstalowaniu i uruchomieniu programu pokaże nam się okno główne: 1.Pasek menu 2.Pasek narzędzi 3.Lista zdefiniowanych etykiet 4.Lista zdefiniowanych procedur 5.”Nawigacja”mikroklocka 6.Pasek stanu 7.Obszar edytora kodu Funkcje ikon paska narzędzi: - nowy program - otwórz - zapisz - zapisz w nowym pliku - drukuj - podgląd wydruku - wytnij - kopiuj - wklej - wstaw wcięcie zaznaczonego fragmentu tekstu - usuń wcięcie zaznaczonego fragmentu tekstu - wyszukaj tekst - sprawdź poprawność programu - kompiluj - raport z kompilacji - symulator - uruchom programator - emulator terminala - zeruj układ - pomoc - exit Paweł “Ikar” Stankiewicz PS: jak zauważycie błędy to dajcie znać
  12. 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.
  13. 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]
  14. 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
  15. 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ą
  16. 36 punktów
    Od początku mojej przygody z robotyką chciałem zrobić niewielkiego linefollowera, który byłby w stanie konkurować pod względem prędkości ze znacznie większymi konstrukcjami. Powstało kilka mniej lub bardziej udanych płytek, ale żadna konstrukcja nie spełniała moich założeń w 100%. Po ukończeniu Stridera2 i poznaniu jego słabych stron wróciłem do pomysłu małego robota, którego ucieleśnieniem jest właśnie Tsubame. Tsubame jest właściwie prototypem, spytacie dlaczego, dlatego, że większość rozwiązań w tym linefollowerze to dla mnie nowość. Począwszy od felg i opon, przez przetwornicę zasilającą silniki, gęstsze ustawienie czujników, a skończywszy na mostku H. Tak dużo zmian w jednym robocie nie dawało mi pewności, że wszystko będzie działać, tak jakbym chciał, ale miało dać mi nowe doświadczenie do budowy nowego linefollowera. Przyznaję szczerze, że jestem zaskoczony, że wszystkie zastosowane przeze mnie nowinki spełniły swoje zadanie i to nawet lepiej niż zakładałem. Opony wykonane z poliuretanu mają niesamowitą przyczepność, gdy łapałem robota na torze wykonanym na brystolu 100x70cm to brystol zaczynał się przesuwać po podłodze. Zastosowana przetwornica obniżająca napięcie do zasilania silników przez mostek H nawet nie jest ciepła po długiej jeździe, mostek H też spisuje się rewelacyjnie. Czujniki ustawione gęściej zmniejszyły znacznie drgania całego przodu, bo zniknęła martwa strefa pomiędzy czujnikami. Tsubame jest młodszym bratem Stridera2, i powstał w dużej mierze na tej konstrukcji. Kilka szczegółów technicznych: - procesor: Atmega328P@20MHz - czujniki: 8 sztuk KTIR0711S - zasilanie: 2 akumulatorki li-pol 350mAh - mostek H: układ TB6612 - robot napędzany jest silnikami z pololu, przekładnia 10:1, 3000obr/min, wersja silnika HP - sterowanie silników: 2 kanały PWM z procesora, plus 4 linie odpowiedzialne za zmianę kierunku obrotu - na płytce jest miejsce na odbiornik podczerwieni TSOP348 (w tej płytce odbiornik nie został jeszcze użyty) - wymiary: rozstaw osi 70mm, szerokość przodu 55,6mm, szerokość tyłu 58,4mm (sama płytka), długość 90mm (bez wystających kulek) - z przodu zamontowane są 2 kulki ceramiczne - masa robota gotowego do jazdy - 71,4g - kod w całości napisany w Bascomie Czas na część przyjemniejszą dla oka: Zdjęcia przedstawiają proces odlewania opon z poliuretanu. Pomiędzy formy a felgi wstrzyknąłem strzykawką przez dość grubą igłę jeszcze płynny poliuretan. Drugie zdjęcie przedstawia koła wyciągnięte z formy. Chciałbym podziękować Bobby'emu, to dzięki niemu powstały formy i felgi . Schemat oraz widok płytki: Płytka przed lutowaniem i pierwsze przymiarki: Prawie skończony robot, jeszcze bez kulek z przodu: W pełni gotowy robot, wraz z akumulatorkami: Na koniec krótki filmik przedstawiający jedną z pierwszych jazd testowych: Przejazd z prędkością powyżej 1m/s: Przejazd z prędkością i ustawieniami jak film wyżej, za to ten nagrany w 240fps (frame per second - klatek na sekundę) odtwarzany z prędkością 30 fps, więc film pokazuje ruch 8 razy wolniej, widać każdy szczegół, każdy błąd:
  17. 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
  18. 33 punktów
    Zachęcony licznymi mailami, wiadomościami PW i dyskusjami toczonymi na forum, postanowiłem przygotować artykuł opisujący krok po kroku i bardzo "łopatologicznie" budowę robota klasy Line Follower - w pełni programowalnego. Części, które wykorzystałem, są łatwo dostępne i nikt nie powinien mieć problemów z ich zakupem. Dodatkowo wybrałem takie, które można z powodzeniem znaleźć w jednym konkretnym sklepie (szczegóły w punkcie "Lista zakupów"). Jest to potrzebne minimum, choć oczywiście osoby z odrobiną doświadczenia zachęcam do sprawdzania własnych rozwiązań. Wymagania potrzebne do budowy, to elementarna wiedza z zakresu elektroniki (w tym umiejętność lutowania) i obsługi prostych narzędzi (piła, wiertarka, pistolet do klejenia na gorąco). Prędzej czy później trzeba będzie także nauczyć się programować - o tym napiszę na końcu. Życzę miłej lektury, Damian Nowak (Nawyk) Krótki film przedstawiający gotowego robota zaprogramowanego dołączonym wsadem do procesora (uproszczony kod, bez sterowania PWM) - dodany w załączniku 1. Lista zakupów Pierwszy sklep, który odwiedzimy to AVT. Mieszkańcy Warszawy mogą go odwiedzić osobiście, pozostali muszą zamówić elementy w sklepie online (lub poszukać w innym). Kupujemy: - płytkę uniwersalną PDU27 - 8zł - mikroprocesor Atmega8 (7zł) wraz z podstawką (polecam precyzyjną - 1,70zł) - mostek H L293D lub L293DNE (10zł) również z podstawką (polecam precyzyjną) - 1,40zł - 3 transoptory odbiciowe CNY70 (czujniki linii) - 3x4,50zł - 1 rezystor 470 Ohm (później nazywany 470R) - 0,25zł za 10 sztuk; 3 rezystory 240 Ohm (240R) - 0,25zł za 10 sztuk; 3 rezystory 10k Ohm (10K) - 0,60zł za 10 sztuk - 1 dioda LED np. zielona - 0,20zł - 1 korpus złącza żeńskiego goldpin 5x1 (1,20zł) wraz z blaszkami (0,60zł za 10 sztuk) - 1 dwurzędowa listwa goldpinów (0,80zł) oraz 1 jednorzędowa, kątowa listwa goldpin (0,81zł) - 2 metry 5-żyłowego przewodu wstążkowego, wielokolorowego (2x3,20zł za metr bieżący), można też przejść się do sklepu komputerowego i kupić dwa metry tzw. skrętki - koszyk na 4 baterie AA z pokrywą i włącznikiem (2,81zł) Podsumowanie:55,52zł + koszty przesyłki Drugi sklep to market budowlany (np. Leroy Merlin). Kupujemy w nim takie oto koło: a także po dwie śruby o średnicy 3 i 4mm (im dłuższe tym lepsze, polecam tak min. 3cm dla średnicy 3mm i 5,5cm dla średnicy 4mm) i do każdej po 3 nakrętki (w sumie ok. 2zł) Pora na sprawę najbardziej kłopotliwą - napęd. Do tego projektu wybrałem dwa serwa modelarskie - są chyba najłatwiej dostępne, mają odpowiedni moment obrotowy, w komplecie są orczyki ułatwiające montaż kół i wymagają zasilania 5-6V, czyli akurat tyle, ile dawać będzie nasze źródło zasilania. W moim przypadku serwa to Hitec HS-322HD, ale stanowczo je odradzam ze względu na cenę (planuję je później wykorzystać do czegoś innego). W zupełności wystarczą tanie serwa TowerPro 5010 dostępne na Allegro za ok. 28zł sztuka, polecam jednak "polować" na serwa używane - bardzo często można kupić nawet za mniej niż 10zł sztuka. Mała uwaga - można dostać tzw. mikroserwa za 20zł, ale nie polecam ich początkującym, gdyż często powodują problemy przy koniecznych przeróbkach (będziemy nasze serwa musieli później odpowiednio dostosować do nowej roli - bezpośredniego napędu), dlatego kup je tylko jeśli wiesz co robisz. Ostatni "sklep" to tak naprawdę kuchnia/piwnica. Potrzebujemy dwóch nakrętek od słoików o identycznej średnicy. Np. takich: Można też pokombinować z czym innym - np. kołami od zabawek. Nakrętki nie są najlepszym rozwiązaniem (słaba przyczepność), ale wybrałem je ze względu na dostępność. Przyczepność można spróbować zwiększyć naklejając na całym obwodzie np. gumową samoprzylepną uszczelkę (nie posiadałem aktualnie takiej na stanie, więc sobie odpuściłem). 2. Lista narzędzi Do wykonania robota będziemy potrzebować: - piłki do metalu - wiertarki i wiertła o średnicy 3 i 4 mm - pistoletu do klejenia na gorąco wraz z wkładami uniwersalnymi - zamiast piłki do metalu i wiertarki polecam zestaw miniwiertarki wraz z akcesoriami do wiercenia, cięcia i szlifowania (dostępny np. w Leroy Merlin i AVT, koszt: ok. 80zł; jeśli macie kasę, kupcie droższy zestaw firmy Dremell - ok 400zł, ponoć warto. Ja używam pierwszej opcji i nie narzekam) - lutownicy / stacji lutowniczej (polecam stację Xytronic 369 - koszt ok. 100 zł, naprawdę warto) i spoiwo lutownicze z topnikiem (polecam cienkie, średnica w okolicach 0,38mm - dostępne w ofercie AVT) - "ściągaczkę" do izolacji (dostępna np. w Leroy Merlin i AVT, koszt ok. 15zł) - cążków bocznych (można dostać w AVT, koszt ok. 9 zł), ostatecznie mogą być mocne nożyczki - kombinerek i śrubokręta - programatora AVR ISP - po szczegóły odsyłam do tego tematu. 3. Zaczynamy Uff, długość powyższych dwóch list wynika z tego, że wymieniłem wszystkie możliwe, potrzebne elementy. Prawda jest taka, że elektronicy i Ci, którzy mają za sobą konstrukcje typu Waldek Światłolub, mają już część tego wszystkiego na stanie (m.in. dlatego warto jest zaopatrywać się na zapas, zwłaszcza gdy nie mamy łatwego dostępu do potrzebnych rzeczy). Mamy wszystko przygotowane, więc pora zabrać się do roboty. Pierwszym krokiem jest przerabianie naszych serw modelarskich. Serwa są przystosowane do sterowania przy pomocy określonych impulsów, ich zakres obrotów ograniczony jest zwykle do 120 stopni - celem przerabiania jest pominięcie elektroniki sterującej, usunięcie potencjometru i mechanicznej blokady tak, by mogło pracować jak zwykły silnik z przekładnią. Poniżej zamieszczam krótki tutorial jak to zrobić, po szczegóły odsyłam do podlinkowanego parę linijek wyżej tematu. Przecinamy płytkę wzdłuż linii - tak jak pokazałem na rysunku, a następnie na większej części "wtykamy" i lutujemy zaznaczone elementy (pod nazwami "L293D" i "Atmega8" na rysunku należy rozumieć same podstawki! Dodatkowo, lutowanie diody zostawimy na koniec - chcemy przecież, żeby wystawała ponad plątaniną kabli ) Czerwone, "wypukłe" kropki na rysunkach, będą oznaczały miejsca połączenia elementów z płytką (czyli po prostu luty). Zwróćcie uwagę na to, żeby luty były błyszczące i miały odpowiednią ilość spoiwa. Na początku tematu podawałem linka do poradnika dla tych, którzy nie potrafią lutować. Tzw. zimne luty są częstym powodem niedziałania układu - stąd moja uwaga. Teraz zaczniemy łączyć elementy przy pomocy zworek. Tam, gdzie pola lutownicze przeznaczone do połączenia są w bezpośrednim sąsiedztwie, warto użyć kawałków drutu, np. z uciętych nóżek rezystorów. Dla przejrzystości podzieliłem ten etap na części, dodatkowo każdemu z nich przydzieliłem inny kolor przewodów. zasilanie złącze programatora (typu KANDA) połączenie atmegi i mostka połączenie mostka i silników połączenie czujników Odcięty, mniejszy kawałek płytki wykorzystamy do budowy modułu z czujnikami. Na końcu taśmy 5-żyłowej zakładamy złącze żeńskie goldpin. Wiercimy w płytce dwa otwory o średnicy 4mm, wkładamy w nie dwie śruby i dokręcamy z drugiej strony nakrętką. Moduł czujników gotowy. Następnym krokiem jest wywiercenie otworów o tej samej średnicy i na tej samej szerokości w module z mikroprocesorem. Przykładamy również koło podporowe, oznaczamy położenie otworów i wiercimy - tym razem wiertłem o średnicy 3mm. Efekt końcowy powinien wyglądać mniej więcej tak: Przyznam, że popełniłem w tym momencie błąd - źle wymierzyłem położenie otworów pod moduł czujników(nie uwzględniłem większej średnicy nakrętki, która zahaczała przez to o mostek H) i musiałem później dwa otwory na środku rozwiercać tak, by przesunąć moduł trochę do tyłu. Będzie to widać na późniejszych zdjęciach. Teraz przystępujemy do połączenia naszych przerobionych serw z "kołami". Rozgrzewamy pistolet klejowy, kapiemy odrobinę kleju na środek nakrętek, przykładamy serwo orczykiem, pozycjonujemy (centrujemy) bardzo dokładnie i mocno dociskamy czekając aż klej zacznie stygnąć i wiązać. Następnie kapiemy trochę kleju z tyłu, na spodzie naszego modułu z mikroprocesorem i dociskamy serwa - dbając, by były równo rozmieszczone. Gdy klej stygnie, wkładamy dwie śruby (średnica 3mm) w koło podporowe, dokręcamy mocno, nakładamy na to jeszcze luźno po jednej nakrętce, wtykamy w wywiercone wcześniej otwory w module głównym i dokręcamy z góry, żeby koło nie wypadło. Gdy klej zastygnie, kapiemy nową porcję na górę płytki, kładziemy koszyk na baterie (tak, żeby klapka wysuwała się do tyłu, a włącznik był na spodniej jego części) i dociskamy mocno. W podobny sposób jak przednie koło, zakładamy moduł z czujnikami pod modułem z mikroprocesorem, a następnie podłączamy czujniki do wyprowadzonego na płycie głównej złącza. Zastosowanie śrub pozwala na bardzo dokładną regulację położenia poszczególnych części względem siebie. Kładziemy robota na płaskiej powierzchni i odkręcając oraz dokręcając odpowiednio nakrętki dążymy do tego, żeby płyta z mikroprocesorem była idealnie do niej równoległa; czujniki natomiast powinny znajdować się około 3 mm nad podłożem. Wymaga to trochę cierpliwości i dokładności, ale na pewno się opłaci. Gdy uda nam się ta sztuka, pozostaje dokręcić wszystko do oporu i cieszyć skończonym "ciałem" robota Zdjęcia są słabej jakości, robot traci na nich sporo swojego "uroku", dlatego jak tylko uzbroję się w lepszy aparat (w przyszłym tygodniu), wymienię je na coś lepszego. 4. Oprogramowanie To jeszcze nie koniec naszej zabawy. Niektórzy powiedzieli by nawet, że dopiero początek Nie po to się przecież tyle męczyliśmy, żeby mieć nowy, ekstrawagancki mebel w naszym pokoju. W takiej postaci robot jest głuchy, niemy i sparaliżowany - mimo podłączonych czujników i silników. Należy teraz napisać do niego program, w którym za rączkę przeprowadzimy go przez wszystkie możliwe zadania i problemy, jakie w przyszłości napotka. Nauka programowania jest tematem na oddzielny wątek i nie będę tu się na ten temat rozwodził. Jest świetny tutorial na tym forum - Kurs BASCOM - i warto z nim się zapoznać. Gwarantuję, że nie jest to nic trudnego i że można się z tym uporać w dwa dni, a jeśli ktoś programował wcześniej i szło mu przyzwoicie - wystarczy parę godzin. Dodałem przykładowy program w postaci pliku źródłowego (język BASCOM) oraz dwa skompilowane pliki (BIN oraz HEX - do wyboru) - wystarczy więc wgrać to do robota (patrz - lista narzędzi -> link programator AVR ISP oraz instrukcje, które dostaniecie po zakupie własnego programatora) i cieszyć sztuczną "inteligencją" w naszym własnym domu. Polecam rozłożyć na stole/podłodze duże, białe arkusze papieru i czarną taśmą izolacyjną wyznaczyć robotowi trasę do pokonania. Im lepszy program, tym trudniejszą i bardziej skomplikowaną trasę będzie w stanie pokonać. Po dopracowaniu robota (napisanie zaawansowanego programu, być może wymiana serw na szybsze silniki z przekładniami, stabilizowane napięcie, dławik między AREF/AVCC a VCC, kondensatory filtrujące) nic nie stoi na przeszkodzie, by wyruszyć z nim na zawody - szczegóły na pewno pojawią się na forbot.pl, gdy tylko taki będzie organizowany. Nieco inną wersję artykułu można znaleźć na moim blogu: Przepis na robota - w pełni programowalny Line Follower Życzę wszystkim powodzenia i wciągnięcia się w tematykę robotyki. No a przede wszystkim - dobrej zabawy PS Wszelkie pytania proszę zadawać w tym temacie, nie na PW czy mail. //edit Zapomniałbym //edit2 Dodałem tutorial o przerabianiu serw modelarskich. //edit3 Przepraszam za gapiostwo, program w załączniku. Uprzedzając komentarze - wartości PWM są takie a nie inne (255 lub 0), zostawiłem dobranie regulacji prędkości wg własnego uznania, dzięki temu każdy może w parę chwil zmienić osiągane prędkości obrotowe poszczególnych kół. program_testowy.rar przepis.sch
  19. 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
  20. 31 punktów
    Kurs BASCOM - lekcja1-wstęp Kurs BASCOM - lekcja2 - pierwsze kroki Kurs BASCOM - lekcja3 - zaczynamy programować Witam ponownie czytelników W tej jaki i w poprzednich częściach będę się starał tłumaczyć wszystko jak najprościej. Zajmiemy sie konfiguracją portów, blokiem decyzyjnym oraz układami czasowymi. Konfiguracja portów: 1.Najpierw trzeba podać kompilatorowi jakie porty będą wejściami a jakie wyjściami. Można to zrobić na kilka sposobów: -można cały port skonfigurować jako wyjście bądź wejście odpowiednią komendą: config portd=input 'cały port d jako wejście config portd=output 'cały port d jako wyjście -można też skonfigurować każdy port osobno: config pind.0=input ' wyprowadzenie PD0 jako wejście config pind.1=input ' wyprowadzenie PD1 jako wejście config pind.2=input ' wyprowadzenie PD2 jako wejście config pind.3=output ' wyprowadzenie PD3 jako wyjście config pind.4=output ' wyprowadzenie PD4 jako wyjście config pind.5=output ' wyprowadzenie PD5 jako wyjście config pind.6=output ' wyprowadzenie PD6 jako wyjście -jest szybszy zapis stanów danego portu, w systemie dwójkowym: config portd=&B1111111 'cały port d jako wyjścia config portd=&B0000000 'cały port d jako wejścia config portd=&B0001111 'końcówki PD0 do PD3 jako wyjścia, a od PD4 do PD6 końcówki jako wejścia Jak widać czym pin ma mniejszą liczbę porządkową znajduje się bliżej końca zapisu konfiguracji. Używając tego sposobu zapisu nie należy zapomnieć o prefiksie "&B". Podane wyżej przykłady należą do portu d procesora attinny2313 którego port d ma 7 wyprowadzeń, przy porcie b wyprowadzeń jest 8 więc trzeba dodać jedną zmienną więcej, przykład: config portb=&B01001011 -można też użyć systemu dziesiętnego, którego nie polecam początkującym. Niby ładnie to wygląda w programie ale jest mało przejrzyste. config portd=&B0001111 'można równie dobrze zapisać jako config portd=15 Czwmu można zobaczyć w niżej załączonej tabeli: 2.Nastepna rzeczą jaką trzeba zrobić to ustalić stan spoczynkowy końcówek, przykład: portd.0=1 'stan spoczynkowy-1 portd.1=1 'stan spoczynkowy-1 portd.2=1 'stan spoczynkowy-1 portd.3=1 'stan spoczynkowy-1 portd.4=1 'stan spoczynkowy-1 portd.5=0 'stan spoczynkowy-0 portd.6=0 'stan spoczynkowy-0 Równie dobrze można zapisać to za pomocą komend set i reset, przykład: set portd.0 'stan spoczynkowy-1 set portd.1 'stan spoczynkowy-1 set portd.2 'stan spoczynkowy-1 set portd.3 'stan spoczynkowy-1 set portd.4 'stan spoczynkowy-1 reset portd.5 'stan spoczynkowy-0 reset portd.6 'stan spoczynkowy-0 Ten niewygodny zapis można skrócić do już znanego nam zapisu dwójkowego, przykłady: portd=&B1111111 'wszędzie stan spoczynkowy-1 portd=&B1111100 'PD6 i PD5 stan spoczynkowy-o na reszcie stan spoczynkowy-1 Tu także nie należy zapomnieć o prefiksie"&B" oraz o 7 bitach dla portu d i 8 bitach dla portu b. To można skrócić jeszcze bardziej do systemu zapisu dziesiętnego, którego jak pisałem wcześniej nie polecam początkującym, przykład: portd=&B1111100 'znaczy tyle samo co portd=124 Czyli pełna konfiguracja portów może przykładowo wyglądać tak: config portb=&B11111111 portb=&B00000000 config portd=&B0000000 portd=&B1111111 Pierwszy program: Napiszemy teraz pierwszy program używając bloku decyzyjnego ale nie tylko. Do procesora podepniemy diodę led z rezystorem 100Ω, kondensator 100µF oraz dwa tact switche. Będzie to program zapalający i gaszący diodę led. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'zapal diode elseif pinb.1=1 then 'jeżeli przycisk 2 wciśnięty portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Ten program Używa dwóch przycisków, niech teraz jeden z nich jednocześnie zapala i gasi diodę. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty toggle portd.0 'zmień stan wyprowadzenia endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Polecenie toggle zmienia stan danej końcówki. Czyli jeżeli na pinie jest 1 to zmienia to na 0 i na odwrót. Jeżeli mamy uwzględnić kilka warunków używamy spójnika and, przykład: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 and pind.1=1 then 'jeżeli przycisk 1 i 2 są wciśnięte toggle portd.0 'zmień stan wyprowadzenia endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Jeżeli odczytujemy stan końcówki to wtedy używamy "pin", a kiedy chcemy nadać jakiś stan używamy "port" Stwierdziłem że nie będę tu kombinował i zacytuje kolegę, który to całkiem "zgrabnie" ujął. Dodam tylko tyle, że warunki rozbudowane też mogą być zapisane w jednej linii tylko poszczególne kawałki muszą być oddzielone dwukropkiem. Kompilator traktuje to wtedy jako następną linię. Lecz nie polecam takiego zapisu ponieważ program staje się mało przejrzysty. Układy czasowe: Jak można się domyśleć będziemy używać instrukcji : wait, waitms, waitus. Które nie są zbyt dokładne. Niech ta dioda teraz zgasi się po dwóch sekundach. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'zaświeć diodę wait 2 'czekaj dwie sekundy portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu A teraz niech po 2 sekundach zgaśnie na 1,5 sekundy i znów się zaświeci na 3 sekundy. $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'zaświeć diodę waitms 2000 'czekaj dwie sekundy portd.0=0 'zgaś diodę waitms 1500 'czekaj 1,5 sekundy portd.0=1 'zaświeć diodę waitms 3000 'czekaj 3 sekundy portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu Jak pisałem wcześniej to instrukcje z serii "wait" nie są dokładne i kiedy zapiszemy w programie że, dioda ma świecić przez 3 sekundy to ona wcale nie musi tego robić dokładnie tyle. Napiszemy teraz prosty programik który z naszej diody zrobi "migacz". $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona waitms 500 'czekaj 0,5 sekundy toggle portd.0 'zmień stan wyprowadzenia loop 'koniec pętli end 'koniec programu Program po prostu co pół sekundy zmienia stan wyprowadzenia do którego podpięta jest nasza diodka. Przy instrukcjach czasowych warto wspomnieć o "drganiu styków" w switchu. Można je zniwelować na 3 sposoby: -sprzętowy: Między prockiem a przyciskiem dodać w szeregu rezystor oraz równolegle kondensator. -programowe: Po instrukcji if użyć komendy waitms lub waitus a dopiero potem podać żądana procedurę, przykład: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty waitms 30 'czekaj portd.0=1 'zaświeć diodę wait 2 'czekaj dwie sekundy portd.0=0 'zgaś diodę endif 'koniec bloku warunkowego loop 'koniec pętli end 'koniec programu No i tak doszliśmy do polecenia debounce. Polecenie "samo" niweluje efekt drgania styków, przykład: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona debounce pinb.0, 1, wlacz, sub loop 'koniec petli wlacz: 'etykieta toggle portd.0 'zmień stan wyprowadzenia return 'powrót end 'koniec programu "ciąg" polecenia debounce wygląda tak: debounce port, stan na jaki ma reagować, etykieta, sub Standardowy czas opużnienia polecenia debounce wynosi 25ms ale można go zmienić poprzez polecenie: config debounce=i w tym miejscu wpisujemy liczbę opóźnienia w milisekundach Kilka rad: Przy pisaniu programu stosujcie jak najobszerniejsze komentarze. Kupcie płytkę stykową bo ten układzik będzie się zmieniał jeszcze nie raz i niema sensu tego lutować, a płytka stykowa wierzcie mi przyda się wam jeszcze. Podczas ładowania programu na proca nie zapomnijcie o podpięciu zasilania (jeżeli programator tego wymaga, a wymagają prawie wszystkie) Procesor zasilamy stabilizowanym napięciem 5v. Po tej lekcji powinniście umieć napisać program do prostych robotów. Do na przykład takiego który ma zaprogramowana trasę. omijającego przeszkody, line followera itp. W tej części to już wszystko, dziękuje za uwagę Paweł "Ikar" Stankiewicz Dla początkujących polecamy zestaw z oferty firmy and-tech.pl http://www.zestawyuruchomieniowe.pl/
  21. 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
  22. 31 punktów
    Witam Ponoć każdy prawdziwy mężczyzna musi spłodzić syna, posadzić drzewo oraz ... zbudować dom albo robota. Ja wybrałem to drugie - spłodziłem robota dla syna Inny cel to zdalna obserwacja moich 2 kotów w mieszkaniu w najróżniejszych sytuacjach i filmowanie ich nawet gdy się tego nie spodziewają Niestety kot który ma ciemne futro jest biedny bo czujniki słabo go widzą więc najechał kiedyś na niego i teraz kot spyla gdzie pieprz rośnie gdy zobaczy to nadjeżdżające monstrum. Natomiast biały kot hmmm olewa trochę robota bo wie, że ten nigdy go nie najedzie - nawet jeśli specjalnie pilotem chcemy to zrobić to nie da rady. Robocik można sterować na 3 różne sposoby: Pilot IR (RC5-Philps) lub Radio 433MHz (przełączamy tylko odpowiednią zworkę) . Odbiornik 433MHz firmy Telecontrolli jest w stanie PowerDown - gdy nie jest używany. a poza tym równolegle także za pomocą Bluetooth. Moduł BTM-222 ma spory zasięg i robot steruje także włączaniem i wyłączaniem zasilania do modułu w celu oszcz. energii. Robocik wyposażony jest w pokładową kolorową bezprzewodową kamerkę 2,4GHz która jest ruchoma i zdalnie sterowana. Może obracać się w poziomie o 180st. Kamerka wyposażona jest w podświetlanie za pomocą SZPERACZA, czyli pakietu białych super jasnych białych diod LED sterowanych sygnałem PWM. Serwomechanizm obracający kamerę ma włączane zasilanie tylko na czas gdy ma się obracać i po obrotach automatycznie zasilanie jest wyłączane w celu oszczędności energii. (Sorki za filmik z kamerki - kiepskiej jakości i tylko czarno-biały - ale tylko taki koci monitor miałem pod ręką jak to robiłem - może później dam jeszcze filmik z kamerki robota z podglądu np kotów i w kolorze) Na pokładzie znajdują się jeszcze: 3 czujniki odległości pracujące także w podczerwieni i nie "gryzą" się ze zsterowaniem z pilota IR. Poza tym jest BUZZER sygnalizujący pewne operacje. Z przodu kamery na ruchomej platformie widać efekt pływającej niebieskiej diody LED. To tylko taki bajer dla syna - taki "ala radar". Osiem diod LED sterowanych jest przez rejestr przesuwny 74HC595 czyli procek wykorzystuje programowe SPI. Oczywiście także można go włączać i wyłączać zdalnie - jak wszystko prawie. Platforma robota wykonana jest z normalnego laminatu na którym umocowane są kolejne płytki PCB oraz inne wsporniki itp. Do platformy przymocowane są dwa większe serwomechanizmy które przerobiłem żeby były silniczkami DC z przekładnią i miały odpowiednią MOC Silnikami steruje pokładowy L293D . Oczywiście wykorzystałem ładnie sterowanie płynną mocą silników dzięki czemu mam możliwość zmiany biegów. Albo automatycznego zwiększania mocy w zależności od stanu wyczerpującej się baterii akumulatorków. Naturalnie dzięki wykorzystaniu PWM'a do sterowania silników - tak przygotowałem procedury do jego kierowania, skrętów i ewolucji za pomocą klawiszy pilota, że wszystko działa super płynnie, wygodnie i można wydziwiać sterowaniem przy różnych prędkościach. Np gdy robot jedzie a na chwileczkę tylko klikniemy klawisz skrętu to PWM zmniejsza na chwilę moc silników i delikatnie reaguje na skręty - prowadzi się go prawie jak auto może nawet jak auto wyścigowe. Procesor oczywiście pięknie mierzy napięcie na akumulatorach tak aby się zbytnio nie rozładowały. Ich stan sygnalizuje diodami: Zieloną, Pomarańczową i Niebieską w klawiszu głównego wyłącznika. Gdy stan baterii jest krytyczny - procesor odłącza wszystko co chce zjadać prąd - wszystkie moduły a nastepnie sam wprowadza się w śpiączkę. Czyli trza naładować. Zasilanie rozwiązałem w oparciu o przetworniczkę LM2940-5.0 Jest to milion razy lepsze rozwiązanie niż tradycyjny 7805 poniważ: mniej się grzeje a co najważniejsze !!! .... przetworniczka działa nawet przy napięciu wejściowym 6V i to stabilnie dzięki czemu ładnie przetwornikiem ADC mogę kontrolować napięcie akumulatorków. Tylko kamera ma oddzielny pakiecik akumulatorków bo ona też ma smaka na prądzik ale na tym oddzielnym pakieciku starcza na dłuuugo ITELIGENCJA Robota - wyszła mi jak na razie dosyć fajnie, ponieważ można go sterować albo pilotem IR albo RC 433MHz ---- albo z komputera na przykład przez Bluetooth za pomocą oczywiście specjalnego dedykowanego programu Oczywiście inteligencja polega na tym, że gdy przestaniemy go sterować ręcznie to sam przełącza się na tryb automatycznego życia. Jeździ sobie tu i tam, pięknie omija przeszkody. Ale nie zawsze jeździ w lewo albo w prawo. On często gdy widzi przeszkodę z przodu to WĘSZY i czasem uzna że lepiej pojechać w lewo a czasem w prawo. Całkiem przy okazji tworzenia takiego elektronicznego Frankensteina - wyszła ciekawa opcja - że robot potrafi sam wyszukiwać wyjścia z pułapki .... widać to trochę na filmikach. Fajnie też wygląda gdy mu zagrodzimy drogę nogami ale zrobimy małą przerwę. Wtedy on gdy wywęszy, że jest przerwa - to zaczyna taniec i próbuje aż do skutku żeby tylko wcisnąć się w tę przestrzeń/dziurę i pojechać dalej. SZPERACZ podświetlenie ostro daje w ciemności a koty fajnie wyglądają gdy są zaskoczone we śnie albo gdy w nocy dobierają się do michy z jedzeniem Cały program napisany jest w C i zostało jeszcze bardzo dużo miejsca w pamięci procka - więc będę mógł go spokojnie rozwijać i rozwijać - bo pomysłów na tą platformę mam jeszcze sporo. Generalnie napisałem też program w Delphi na PC do sterowania robotem. Docelowo planuję zawrzeć w nim okienko, które będzie przechwytywało obraz z kamerki. Bo teraz to podłączam kamerkę pod monitor z wejściem TV, robię sobie PIP na monitorze i w prawym dolnym rogu obserwuję gdzie robot podąża sterowany przez Blututcha Poniżej fotki z początków i testowania całości gdy jeszcze używałem płytki stykowej jak zwykle. Poi drodze zmieniłem kółko swobodne. Wcześniej było takie niebieskie duże z podstawki pod półeczkę na kółkach do łazienki. Wypersfadowałem żonie , że półeczka w łazience wcale nie musi jeździć .... ale później użyłem mniejszego - takiego meblowego chyba z Castoramy z łożyskiem, bo lepiej było mi z jego montażem. Udostępniam schemat oraz wsad do procesora w postaci *.HEX Robotem steruje ATmega32. Wykorzystuję jeden sprzętowy PWM do sterowania silnikami, programowy PWM do sterowania jasnością Szperacza, programowa obsługa SERWA obracającego kamerkę, ten sam timer służy mi także do tyknięć systemowych dzięki czemu wszystko działa ładnie jakby w czasie rzeczywistym w oparciu o zdarzenia i programowe timery do różnych celów. Płytki robione termotransferem "na żelacho" wytrawiane w B327 czy jakoś tak aha dzięki temu rozwiązaniu z linku poniżej: http://www.elektroda.pl/rtvforum/viewtopic.php?t=1343484&highlight= wsad do procka można ładować do ROBOTA też bezprzewodowo i bez podłączania kabli - wszystko przez Bluetooth. https://www.youtube.com/watch?v=AtqaQIa4DJ8 https://www.youtube.com/watch?v=F7Hc6fRRAeY Robot w strasznym ciemnym labiryncie Mój kot to jak godzilla albo kot-zilla dla robota ROBO_02_m32.zip
  23. 31 punktów
    Chciałbym zaprezentować konstrukcję malutkiego robota o nazwie Quatro. Budowa przebiegała etapami i trwała łącznie ok. 6 miesięcy. Pierwszym etapem było zbudowanie robota klasy Nanosumo. Prace w tym kierunku zakończyły się sukcesem w niespodziewanie szybkim czasie, dlatego powstał pomysł rozbudowy robota. Z racji, że robot od spodu posiada 3 optyczne czujniki odbiciowe, postanowiłem napisać program do linefollower’a. Od tej pory robot spełniał już 2 zadania. Widząc ogromny potencjał, który posiada malutka platforma, postanowiłem wykorzystać ją w jeszcze jeden sposób. Nad ogniwem zasilającym umieściłem transceiver i zbudowałem nadajnik. Za jego pomocą, dzięki wykorzystaniu potencjometrów oraz przycisków, można było zdalnie sterować robotem na kilka różnych sposobów. Miesiąc później Quatro był już sterowany z klawiatury telefonu z wybieraniem tonowym DTMF i posiadał kolejny moduł nad transceiver’em. Jego zadanie było stricte pokazowe i miało na celu przypominać pojazd uprzywilejowany. W maju br. roku do robota wprowadziłem komunikację dwukierunkową, a nadajnik radiowy został wyposażony w graficzny wyświetlacz LCD. Następnie wymieniłem silniki i dalmierze oraz płytkę PCB, na której znajduje się ogniwo zasilające. Kolejną funkcją jest sterowanie robotem za pomocą bezprzewodowej myszki optycznej. Reasumując robot posiada następujące funkcje: Nanosumo Linefollower Zdalnie sterowany za pomocą nadajnika radiowego Zdalnie sterowany z wykorzystaniem telefonu komórkowego Zdalnie sterowany przez zmodyfikowaną komputerową mysz optyczną Robot jak również pozostałe elementy są przystosowane do rozbudowy i tworzą zestaw dydaktyczny. Nanosumo Robot tej klasy musi spełniać kilka zasad. Jego wymiary nie mogą przekraczać 25mm*25mm*25mm. Quatro mieści się oczywiście w tych granicach, jednak bez PCB z modułem radiowym, który jest mu zupełnie niepotrzebny podczas walki na ringu, a jego obecność mogłaby stwarzać pewne kontrowersje. Waga robota nie powinna przekraczać 25g. Ten warunek także jest spełniony. Pozostałe zasady są takie same jak w większych klasach sumo i nie widzę potrzeby ich tu wymieniać. Orientację na ringu robotowi zapewniają trzy optyczne dalmierze. Ich elementem wykonawczym są HSDL-9100 współpracujące z układami APDS-9700. Oba te komponenty zawdzięczam firmie WObit i chcę je polecić wszystkim szukającym miniaturowego dalmierza o zasięgu nawet do 20cm . Elementy te znajdują się na PCB pod ogniwem li-ion. Od spodu umieszczone są trzy optyczne odbiciowe czujniki linii. Dwa z przodu i jeden z tyłu. Algorytm jest standardowy, tu nie wymyśliłem nic specjalnego. Linefollower Do wykrywania linii robocik wykorzystuje dwa przednie czujniki. Ze względów konstrukcyjnych robot jeździ po czarnym podłożu wzdłuż białej linii. Jest to spowodowane sposobem wykonania układu przerwań, który jest przystosowany do walk na dohyo. Oczywiście można nie wykorzystywać przerwań , jednak spowolni to przejazd po linii. Nadajnik Zdjęcie przedstawia obecną wersję nadajnika. Zielonym kolorem zaznaczone są guziki, za pomocą których można sterować robotem oraz po wybraniu odpowiedniej kombinacji, jego funkcjami. Czerwony kolor wskazuje gałki potencjometrów suwakowych. Lewy potencjometr służy do proporcjonalnego sterowania lewym kołem, prawy potencjometr analogicznie. W prawym, dolnym rogu, żółtym kolorem zaznaczony jest mikrofon, który odbiera sygnał DTMF. Diody LED zaznaczone jasnoniebieską obwódkami pokazują kierunek obrotu kół. Srebrna gałka potencjometru, na środku, służy do sterowania prędkością robota podczas używania guzików. Wartość jaką wybraliśmy za jej pomocą, można kontrolować na wyświetlaczu. Jest zaznaczona kolorem zielonym. Kolor czerwony i fioletowy pokazują odpowiednio stany czujników linii oraz dalmierza. Kolorem żółtym zaznaczone jest dwadzieścia dziewięć strzałek. Są to wskaźniki funkcji, o której wcześniej nie wspomniałem. Mianowicie robot może wykonywać cyklicznie wcześniej zaprogramowane ruchy. Ich kierunek wskazują właśnie te strzałki. Wykonywany aktualnie ruch jest negowany na wyświetlaczu. Mysz komputerowa Nie będę umieszczał jej zdjęcia, gdyż niczym się ona nie różni od zwykłej myszy komputerowej na USB. Modyfikacje polegały jedynie na usunięciu jednego z układów scalonych, umieszczeniu wewnątrz transceiver’a, akumulatora i oczywiście mikrokontrolera jakim jest ATmega8l. Do kontroli przemieszczenia użyłem sensora PAN3101. Wykorzystałem także trzy przyciski. Jeden do zatrzymania i dwa do kontroli prędkości robota. DTMF Sterowanie za pomocą telefonu odbywa się w najprostszy sposób. Należy przyłożyć słuchawkę telefonu do mikrofonu umieszczonego na nadajniku i wybrać odpowiedni klawisz. 2-przód 4-lewo 6-prawo 8-tył 1,3,7,9-po skosie *-szybciej #-wolniej 5,0-inne rzadko używane funkcje Dekodowaniem sygnału DTMF zajmuje się układ CM8870. Konstrukcja Robot zbudowany jest w formie „kanapki”. Obecnie składa się z czterech dwustronnych płytek PCB. Na dolnej płycie umieszczone są czujniki linii i napęd oraz niezbędne podzespoły takie jak sterownik silników. Płytka druga mieści procesor ATMEGA8L, złącze do programowania i komunikacji z modułem radiowym. Dalmierze, kontrola zasilania, gniazdo na ogniwo zasilające oraz układ resetu znajdują się na trzeciej płycie PCB. Ostatnia, umieszczona na samej górze płytka PCB, mieści moduł radiowy i jest przystosowana do rozbudowy robota o kolejne płytki. 1-dalmierz 2-silnik 3-złącze do programatora 4-moduł radiowy 5-ogniwo zasilające 6-czujnik linii 7-reset 8-koło i przekładnia 9-połączenie modułu radiowego z mikrokontrolerem
  24. 30 punktów
    Kurs BASCOM - lekcja1-wstęp Kurs BASCOM - lekcja2 - pierwsze kroki Kurs BASCOM - lekcja3 - zaczynamy programować Witam! W tej części skonfigurujemy nasz kompilator, poznamy jego dodatkowe narzędzia oraz dyrektywy. Będę się starał jak najbardziej "łopatologicznie" wszystko tłumaczyć. Zaczynamy. Konfiguracja: Aby wejść w okno opcji należy kliknąć ikonę na pasku narzędzi. W tym oknie klikamy zakładkę „Programer” (1) W linii Programer(2) wybieramy programator jaki będziemy używać. W zależności od tego co wybierzemy pojawia nam sie poniżej różne zakładki (ja wymienię 3 najczęstsze). Na powyższym obrazku widać „Parallel”(3) W linii „LPT-address” (4)wybieramy adres naszego portu lpt, a w linii „Port dalay”(5) wpisujemy liczbę odpowiadającą za opóźnienie portu co jest konieczne w przypadku szybkich procesorów. Wartość tą dobiera się doświadczalnie. Tutaj widać zakładkę „Serial”(6).W linii „COM-port”(7) wybieramy nr. Portu do jakiego jest podłączony nasz programator , a w linii „STK500”(8) wpisujemy ścieżkę do programu obsługójącego ten programator. Zakładka „Other”(9). W linii „Program”(10) wpisuje się ścieżkę do programu obsługójącego ten twój programator W linii „Parameter”(11) wpisujemy dodatkowe parametry dla programu, a zaznaczając „Use HEX file”(12) dajemy sygnał bascomowi, że ma do programu obsługującego programator wysłać pliki HEX. Narzędzia BASCOM-a: -Lcd desinger(Ctrl+L): Część bascoma w której można zdefiniować 8 dowolnych, niestandardowych znaków, mogą to być np: polskie znaki takie jak: ąćęłńóśźż; lub jak widać na obrazku-cokolwiek Pole do projektowania znaczków ma 40 kostek tak jak jedno pole w wyświetlaczu alfanumerycznym Aby dodać do programu swój symbol należy kliknąć przycisk ok. -LIB Menager(Ctrl+I): Część bascoma do zarządzania i tworzenia nowych bibliotek. Narzędzie dla dużo bardziej zawansowanych (asembler). -Terminal emulator(Ctrl+T): Służy do otwierania programów korzystających z portu rs232(com). -Graphic converter: Przekompilowuje pliki .bmp do plików .bgf tym samym zmieniając je na czarno-białe. Maksymalna rozdzielczość obrazka to 240*240. Obraz można potem wyświetlić na lcd graficznym. Dyrektywy procesora: --- #if -w wolnym tłumaczeniu-jeżeli, przykład: Const Xd = 1 #if Xd Lcd ":)" --- #else -bądź, jeżeli warunki podane w #if nie zostaną spełnione zostanie wykonana instrukcja z dyrektywy #else, przykład: Const Xd = 1 #if Xd Lcd ":)" #else Lcd ":(" --- #endif -dyrektywa kończąca dyrektywe warunkową którą jest #if to działa jak zamkniecie polecenia np. html-u (tam kończy sie dane zadanie ta sama komendą którą sie zaczynał tylko ze sleszem- to tak do porównania), przykład: Const Xd = 1 #if Xd Lcd ":)" #else Lcd ":(" #endif Dyrektywy kompilatora: Z tych dyrektyw będzią nas interesowac tylko dwie: --- $regfile -służy do określenia procesora na jakim bedzie działać program, przykład: $regfile = "2313def.dat" 'program jest pisany na procesor attinny2313 --- $crystal -służy do określania taktowania z jakim będzie pracować procesor, przykład: $crystal = 4000000 'procesor będzie pracował z kwarcem bądź na wewnętrznym oscylatorze 4Mhz Elemęty języka Bascom Basic: --- ALIAS -służy do zmiany nazwy zmiennej, jeżeli wiemy że do danego pinu będzie podpięty czujnik możemy zmienic nazwe aly nam się łatwiej pisało program oraz ab był bardziej przejrzysty, przykład sensor1 alias portb.0 --- BITWAIT -zawiera w sobie dodatkowa nieskończoną pętle i czeka na jakieś "wydarzenie" --- CONFIG -konfiguruje się ta dyrektywa jakieś urządzenie (np:lcd) bądź pin, port procesora --- DO...LOOP -pętla nieskończona --- DISPLAY -włącza bądź wylloncza ekran lcd (displey on/off) --- END -kończy program --- GOSUB -wykonuje skok do podprogramu, przykład: if pind.0=0 then gosub jedz end if jedz: portb.4=1 portb.3=0 return --- IF...THEN...ELSE...END IF - blok decyzyjny, przykład: if pind.0=0 then portb.6=0 else portb.6=1 end if 'jeżeli na pinie portu d pojawi się zaro wtedy wprowadź noge 6 portu b w stan wysoki 'bądź jeżeli na pinie portu d pojawi się jeden wtedy wprowadź noge 6 portu b w stan spoczynku 'koniec "ciagu warunków" --- LCD -polecenie wyświetlające na lcd dany tekst --- REM -instrukcja dająca sygnał kompilatorowi że dalszy tekst to komentarz można ją zastąpić ' --- RESET -ustawia bit w stan 0, przykład: reset portd.4 co równie dobrze można zapisać jak: portd.4=0 --- RETURN -wykonuje powrót do np: podprogramu --- SET -ustawia bit w stan 1, przykład: set portd.4 co równie dobrze można zapisać jak: portd.4=1 --- SHIFT -przesuwa bity w prawo bądź w lewo (shift left/right) SHIFTLCD -przesuwa zawartość LCD w prawo lub w lewo (shiftlcd left/right) --- SOUND -służy do generowania dźwięków, przykład: Sound portd.4 , 100, 10 'sound pin , liczba impulksów, czas --- WAIT -przerwanie programu na określony czas (w sekundach) wait 2 'czekaj dwie sekundy --- WAITMS -przerwanie programu na określony czas (w milisekundach) waitms 2000 'czekaj dwie sekundy --- WAITUS -przerwanie programu na określony czas (w mikrosekundach) waitus 2000000 'czekaj dwie sekundy Z tym, że żadne polecenie z serii wait nie może posiadać więcej jednostek niż 65535, więc ostatni przykład jest błędny-podałem go tak aby początkujący nie musieli szukać ile to jest mikrosekunda. Wymieniłem chyba te najczęściej używane dyrektywy po reszte odsyłam was do helpa bascom którego można pobrać z tej stronki. W następnej części nauczymy się praktycznego zastosowania podanych dyrektyw oraz konfigurować porty. Paweł "Ikar" Stanmkiewicz Dla początkujących polecamy zestaw z oferty firmy and-tech.pl http://www.zestawyuruchomieniowe.pl/
  25. 30 punktów
    Witam, przedstawiam Wam mojego drugiego robota typu line follower, który został zbudowany, w celu wystartowania na TTR oraz Roboxy2011. Konstrukcję uważam za w miarę udaną, był to na pewno krok w przód względem poprzedniej wersji, jednak nie osiągnąłem też tego na co liczyłem. Mechanika oraz napęd. Sama konstrukcja mechaniczna powstała już dość dawno, cały ten proces można było śledzić na mini worklog'u. Jednak z powodu braku czasu (matury ) ukończona została dopiero na kilka tygodni przed zawodami. Cała mechanika opiera się o laminat i masę tulejek dystansowych - co było błędem, ponieważ masa części byłą kompletnie zbędną i robiła tylko za zbędny balast. Napęd to oczywiście silniki Pololu 30:1 HP + koła 32mm. Napęd ten z powodu niskiego zasilania dostarczanego do silników okazał się słabym punktem konstrukcji. Dodatkowo, przy maksymalnych prędkościach na zakrętach konstrukcja wpadała w poślizgi. Projekt konstrukcji. Około 150g w takiej formie. Koszyk na akumulator. Elektronika. Za pracę całej konstrukcji odpowiedzialne są dwie płytki - jedna z procesorem oraz druga z czujnikami. Główna płytka posiada procesor ATmega16, złącze dla czujników oraz programatora i RS232, złącza dodatkowe np.: dla SHARP'a analogowego. Cała konstrukcja zasilana jest z pakietu Li-po 2S, elektronika dostaje 5V przez stabilizator LDO, a silniki zasilane były przez przetwornicę ST1S10PHR, która sprawdzała się bardzo dobrze, do momentów, w których się paliła Mam jakiś błąd na schemacie lub użyłem złych kondensatorów dlatego nie polecam kopiować mojego schematu - dodatkowo, ten załączony ma błąd (nie połączone dwa piny), dlatego najlepiej wzorować się notą katalogową. Monitor stanu baterii też ma błąd, brakuje jednego rezystora Dodatkowo na płytce znajduje się sporo led'ów, buzzer, TSOP oraz przełączniki. Silnikami steruje gotowy moduł z TB6612FNG, jednak nie było to potrzebne, ponieważ nie udało mi się zepsuć mostka - więc można go uznać za mocną bestie Schemat płytki z uC Warstwa TOP i BOTTOM płytki wykonanej w firmie Satland Prototype Płytka z czujnikami, to 8szt. KTIR0711S i ballcaster z Pololu. Program Cały program napisany został w Bascomie, robotem steruje PID, a właściwie częściej używałem samego PD. Czujniki odczytywane były przez ADC, jednak nie wykorzystywałem tego znacząco, po kalibracji traktowałem już odczyty z czujników cyfrowo. Niestety nie ma żadnych filmów z przejazdów na zawodach, dlatego przedstawiam tylko filmik z początkowych testów: Na koniec dorobiłem do całej konstrukcji program napisany w Delphi, który przekazywał różne dane przez dodatkowy moduł do PC: Konstrukcja zajęła 4 miejsce na zawodach TTR 2011. Teraz trwają prace nad 3 wersją robota Jutro polutowana będzie nowa płytka z czujnikami. Przy okazji zachęcam wszystkich do publikowania opisów swoich konstrukcji (trwa konkurs) oraz do zaglądania do naszego największego w Polsce katalogu robotów amatorskich! Czekam na pytania Pozdrawiam, Damian
  26. 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!
  27. 29 punktów
    Witam, przedstawiam wam Nuggeta - robota klasy minisumo na silniczkach Pololu, z którym udało mi się zajść dość wysoko na RoboticArena2010 (nieszczęsne czwarte miejsce ). Obiecałem, że opiszę go jeszcze w grudniu, co niniejszym czynię. Elektronika - stosunkowo prosta, 4 sharpy 340K z niezbędną drobnicą, atmega16 (taktowana wewnętrznym RC 8MHz, bo na kwarc w HC49 nie było za bardzo miejsca). Dwa KTIRy z przodu i dinozaury: L298 (multiwatt) i 78L05 (w smd, so-08). Dodatkowo duży przełącznik hebelkowy (robiący od razu za przycisk startu, w momencie włączenia robot czeka 5s i startuje, innych przycisków brak, ze względu na brak miejsca), i spore kondensatory filtrujące: 3300uF na linii 5V i 1000uF na linii 7,4V i 10 kondów 100nF, w róznych miejscach, najwięcej przy uC. Dodatkowo kilka ledów, ale jako, że są pod spodem robota (nie widać ich od góry) nie są zbyt uzyteczne, tylko przed walką można sobie posprawdzać, czy czujniki działają . No i widać jak zasilanie się włącza, to robot się podświetla od spodu. PCB robione termotransferem, cynowane chemicznie w środku z allegro. Zasilanie to standardowy pakiet 500mAh Turnigy (znaczy prawie standardowy, musiałem skrócić kabel z wtyczką zasilającą, bo się nie mieścił). Na RA praktycznie nie było potrzeby ładowania (ani razu pakiet nie zszedł poniżej 6V), ale jako, że mam kiepski stabilizator i duży spadek napięcia na mostku, to pakiet wymieniałem, gdy napięcie na nim spadło do 7,9-8V. Napęd to jak już wyżej wspominałem silniczki z pololu, 30:1 HP, 1000RPM (a chciałoby się więcej ), moment wystarczający, ale chciałoby się więcej (czasami silniki stawały), dlatego w następnej konstrukcji będą 4. Opony na zawodach były wykonane z wysokotemperaturowego silikonu RTV, teraz ma oponki z nibypoliuretanu (ale co to dokładnie i skąd, to nie powiem, powiem tylko, że nie przechodzi testu kartki, przynajmniej zaraz po czyszczeniu). Czeka na nowe koła (teraz jest alu, będzie poliamid ), z mniejszym biciem i lepszymi oponami. Obudowa z laminatu. Nie jestem zadowolony njego wagą - bez dociążenia waży około 200g, dużo za mało, opony mają za małą przyczepność (dlatego na RA jeździł z ołowiem na dachu). I kilka zdjęć (niestety te z budowy mi się gdzieś zapodziały, na 100% komuś je wysyłałem, więc jak ktoś ma, to byłbym wdzięczny, gdyby dał znać może są na innym komputerze, ale wątpię). I filmik z RA: Później wrzucę jeszcze kilka zdjęć, teraz już nie bardzo mam czas na zrobienie większej ilości //edit: znalazłem na dysku jakieś zdjęcia jeszcze:
  28. 29 punktów
    Witam. Chciałbym przedstawić swojego robota klasy minisumo. Robot ten zajął 2 miejsce na Robotic Arena 2008. Parę zdjęć: Dane techniczne: 4 silniki z Wobitu http://mobot.pl/index.php?site=products&type=873&details=7779 Silniki te mają 310 obrotów na minutę. W trakcie zawodów zauważyłem że brakowało im mocy i gdy dwa roboty się zaparły to silniki prawie stawały. Koła również z wobitu: http://mobot.pl/index.php?site=products&type=875&details=7787 Koła są przerobione. Jak widać na poniższym zdjęciu felga posiada trzy ranty które przytrzymują opone. Ja oddałem takie felgi do tokarza żeby została gładka felga. Powód dla którego przerabiałem te koła jest taki, że opona na brzegach wybrzusza się. Najlepiej zobrazuję to rysunkiem w paincie (przekrój opony): Dzięki temu że stoczyłem te ranty otrzymałem lepszą przyczepność (większą powieszchnie styku z piodłożem), ale musiałem przykleić opony do felg "super-glutem" Akumulator to połączone 4 baterie Li-pol firmy nokia BL-5C tak że otrzymałem akumulatorek 7,4V i ok 2000mAh. Nie polecam wykorzystywania w robotach akumulatorków z telefonów komórkowych, ponieważ moją one małą wydajność prądową mimo stosunkowo dużej pojemności, zdesydowanie lepsze byłyby ogniwa modelarskie li-pol. Ja zastosowałem akumulatorki nokii tylko dlatego że pasowały mi ich wymiary. Budowa: Całość zbudowana jest na laminacie dwustronnym 1,5mm. Musiałem robota dociążyć bo wyszedł zbyt lekki. W kołach są wciśnięte i przyszlifowane kólki ołowiane, a między kołami są przylutowane sztobki z ołowiu. Razem na robocie znajduje się około 110 gram ołowiu i cały robot waży 488gram. Czujniki: Cztery sharpy GP2D12 i cztery transoptory odbiciowe jako czujniki linii Sharp GP2S24 Elektronika: W załączniku schemat Wygląd płytek: Płytki wytrawiałem sam. Większość elktroniki jest na płytce spodniej (podłodze), jest to płytka dwustronna, niestety nie widać tego na zdjęciu bo przykryte jest to gumą. Prawie wszystkie elementy są SMD (montowane powieszchniowo). na scheamcie są błędy w wyprowadzeniach Sharpów oraz przy wyprowadzeniach komparatorów. Program: W załączniku listing programu napisany w C Walki na Robotic Arena 2008: Pierwsza walka: Druga walka: Trzecia walka: Czwarta walka: Walka półfinałowa: Walka finałowa: Mimo że na zawodach robot spisał się całkiem nieźle, nie jestem z niego zadowolny. Planowałem dać do niego gąsienice ale niestety przez "bajzel" w pewnej firmie nie udało mi się tych gąsienic zdobyć i na tydzień przed zawodami musiałem kombinować jakie kólka dać do robota. Przez to że dałem inne koła niż planowałem robot jest wyższy niż niż to sobie zaprojektowałem. Pozatym brakóje mu czujników z boku przez co ma trudności z wykrywaniem wrogiego robota gdy nie trafi go w pierwszym podejściu, widać to na filmikach z walk. O zawodach Robotic Arena 2008: Mimo że mój robot nie był dopracowany, to na zawodach wymiatał rywali aż miło, podobnie jak robot moich kolegów z którym spotkałem się w finale. Wydaje mi się że miałem mechanicznie robota lepszego niż robot z którym walczyłem w finale, ale smutna prawda jest taka że miałem słabszy program i przez to że mój robot mniej się "wiercił" po ringu przegrałem finał. Chociaż nie wiele brakowało a wygrał bym przez dyskwalifikacje przeciwnika, raz w ostaniej rundzie, w M&Msie (robocie z którym walczyłem w finale) opadła klapka po sygnale start, gdyby zdażyło się to drugi raz to wygrałbym zawody Program.txt Schemat.pdf
  29. 28 punktów
    Witam Przedstawiam moją konstrukcję manipulatora jako stanowisko do segregacji kolorowych piłek. Konstrukcja wykonana z aluminium, stali ocynkowanej i poliamidu. Korpus robota jest wykonany z aluminium i jest podwójnie łożyskowany dzięki czemu jest bardzo stabilny wytrzymały i trwały. Końcówką roboczą manipulatora jest mieszkowa przyssawka pneumatyczna dzięki czemu bardzo dobrze dopasowuje się do kulistego kształtu kolorowych piłek. Mechanizmem tworzącym podciśnienie w przyssawce mieszkowej jest serwonapęd i przemysłowy siłownik pneumatyczny małych gabarytów. Dzięki wykorzystaniu siłownika cały układ podciśnienia jest bardzo szczelny i potrafi trzymać piłkę ponad dziesięć godzin. Pomocniczymi układami są mieszalnik piłek, który zapewnia zsypywanie się piłek do gniazda, gdzie rozpoznawany jest kolor piłki, oraz wypychacz który wypycha piłki do odbiornika, po zakończonym rozpoznaniu koloru piłki. Część elektroniczna składa się z dwóch nadajników i odbiorników podczerwieni, które wykrywają obecność piłek w odpowiednich miejscach, z czujnika koloru rozpoznającego kolor piłki, z sterownika z wbudowanym programatorem USB sterującym całym cyklem stanowiska. Program zawarty w sterowniku został napisany w języku C. Zapraszam do obejrzenia zdjęć, filmów oraz zapraszam na moją stronę pozdrawiam Zdjecie 1 Zdjecie 2 Film
  30. 28 punktów
    Witam wszystkich forumowiczów:) Postanowiłem zaprezentować jednego z moich robotów z kategorii Sumo Standard. Jest to Konieczko (młodszy z moich dwóch robotów). Charakterystyka: Elektronika: - schemat i płytka mojej produkcji - uC AT89C2051 - proszę się nie śmiać - mostek-H -brak (zastępują go przekaźniki) - czujniki linii CNY70 (aktualnie nie sprawne po walce w Wiedniu z Cedronem ) - przedni czujnik Sharp 1500mm - 2 boczne czujniki Sharp 100-800mm Zasilanie: - do tej pory były 2xPb 6V 1,3Ah - aktualnie pakiety 7,2V 1600mAh + 11,1V 2200mAh (jeszcze nie testowane na zawodach) Mechanika: - silniki + przekładnie z wkrętarek - koła stal + guma - obudowa spawana z aluminium - pokrywa z siatki stalowej Niżej kilka fotek i filmik
  31. 27 punktów
    witam witam chciałbym wam przedstawić moja kolejna maszynkę o nazwie gt-07 robocik występował na robotik arena 2008 zdobył 2 miejsce w kategorii freestyle robot porusza się na gąsienicach zrobionych z zużytych pasków rozrządu i współpracującymi z nim elementami( koła z pompy wody napinacze ) napędzany przez dwa mocne silniki prądu stałego z poloneza polecam:) przeniesienie napędu z silnika na gąsienice po przez łańcuch rowerowy na samej platformie znajduje się robot typu arm już wcześniej pokazywany na forum w dziale mechanika na robot arena była uboższa wersja teraz doszło sterowanie z procesora:) wszystko widoczne na zdjęciu oczywiście jak już kiedyś pisałem nie stosuje gotowych serwo mechanizmów nie tylko ze jak dla mnie są za drogie ale mechanika zrobiona z elementów np vhs jest o wiele ciekawsza sami ocenicie:)masa całkowita ponad 25kg maxymalny udźwig robota nieznany ja ważę 80Kg i na nim sobie jezdźe po pokoju jako dodatków wyposażenie ma czujniki pochyłu rtęciowe i automatyczne podświetlanie na fotokomórce. W sumie nie ma się co zagłębiać w dokładny opis bo wszystko jest widoczne na zdjęciu:) mam nadzieje ze się spodoba:) jak na 200zł kosztów całkowitych Robot ten ma wielu przodków z których ma wzięte wiele rozwiązań wystarczy przewertować strony i znaleść roboty z serii gt jeżeli będzie taka potrzeba mogę zamieścić bardziej szczegółowy opis jak się spodobało postaw piwo:) tutaj jedyny filmik z działania robota około pierwszej minuty:)
  32. 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:
  33. 27 punktów
    Chciał bym wam przedstawić kolejnego Zenona. Ta wersja została pozbawiona błędów z poprzedniej. Zenon 3 zajął 5 miejsca na zawodach Robomaticon. Elektronika Robot opiera się na procesorze atmega128 taktowanym 18,432MHz. Do sterowania silnikami wykorzystuje 2 tb6612 (jeden na silnik). Silniki są zasilane przez przetwornicę. Aby stabilizator napięcia nadmiernie się nie grzał przez zasilanie z 12,60v stabilizator pobiera zasilanie z wtyczki balancera (2 cele). Do ostrzegania przed nadmiernym rozładowaniem 2 cel służy dioda sterowana przez LM358. Robot może być stratowany przez pilot 56kHz. Pilot nie jest używany przez zakłócenia. Po wymianie odbiornika wszystko powinno działać. Czujniki W robocie zastosowane jest 17 czujników KTIR0711s ułożonych w linię. Zasilanie Robot zasilany jest z pakietu Turnigy 500mAh 3s. Do elektroniki używany jest 7805 w d2pak. Silniki są zasiane przez LM2576. Mechanika Silniki zastosowane w robocie to Pololu 30:1 HP + koła 32mm. Kulki są plastikowe 3/8 cala. Masa robota z wyświetlaczem to 200g. W robocie jest możliwość regulacji oddalenia czujników od osi silników. Obie płytki skręcone są ze sobą śrubami M3. Program Program został napisany w c. Algorytm sterujący to PD. Czujniki są odczytywane cyfrowo. Nie powoduje to problemów przy poprawnym ustawieniu wysokości. W robocie jest menu które służy do zmian nastaw. Ustawienia zapisywane są do pamięci EEprom. Filmy Zdjęcia Osiągnięcia III miejsce w Trójmiejskim Turnieju Robotów
  34. 27 punktów
    Chciałbym Wam przedstawić robota klasy sumo - Rico. Wielu z Was miała przyjemność zobaczyć go podczas zawodów CybAiRBOT w Poznaniu, bądź też na filmikach. Elektronika: Jedna z bardziej udanych rzeczy w robocie, tu należy się mega pochwała dla użytkownika nes86, któremu udało się upakować wszystko w wymiarach 6x8cm. Na płytce znajdują się (główne elementy): - Przetwornica liniowa, - Procesor - ATmega1280 - wybrany, aby mieć 16 wejść przetwornika ADC, - Dwa mostki vnh, dodatkowo chłodzone miedzianymi radiatorami, - Tsop - do startowania robota, - Potencjometr, diody led, wyświetlacz LCD 2x8 znaków. To tak po krótce. Dodatkowo z części elektronicznych na robocie znalazły się: - 10 czujników Sharpa GP2D12, - Czujniki linii - CNY70, Robot był wykonywany wspólnie z użytkownikiem nes86, o to rendery z programu Autodesk Inventor: Do startowania robota służyły pokazywane wcześniej piloty użytkownika nes86: Zasilanie: Dwa pakiety Dualsky 800mAh 11,1V, co daje w sumie 22,2V. Silniki: Sztuk 4, przy 24V mają około 500 obrotów, ich mocy nie będziemy zdradzać Obudowa + koła + kliny: Obudowa wykonana z czarnej plexi 8 i 3 mm - dodatkowo wzmacnianej laminatem. Niestety pomysł z pleksi okazał się maksymalnie chybiony. O ile łatwo i tanio mogliśmy wyciąć sobie obudowę, to materiał okazał się zbyt kruchy i zaznaliśmy kilku pęknięć Koła aluminiowe toczone specjalnie pod robota. Kliny wykonane z zawiasów, metalowych linijek Topexa Wszystkie elementy metalowe zostały pomalowane proszkowo na czarno. Oto jak robot wyglądał na kilka dni przed zawodami: I elektronika: Wybaczcie jakość zdjęć, ale na chwilę obecną lepszych nie posiadam. Jeśli chodzi o same zawody to o ile dzień wcześniej na ringu zachowywał się bezbłędnie to na zawodach miał trochę problemów. Zdaję sobie sprawę, że opis jest nieco lakoniczny, proszę więc Was o pytania, które z pewnością uzupełnią opis. Robot zajął pierwsze miejsce w klasyfikacji konstrukcji sumo na zawodach Robotic Arena 2010 oraz Sumo Challenge 2010!
  35. 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
  36. 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.
  37. 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
  38. 24 punktów
    Prawda jest taka, że sporą część informacji, które tu przedstawiłem, można znaleźć na forum - jeśli się wie czego szukać. Postanowiłem jednak zamieścić wszystko w jednym miejscu, uzupełniając własnymi doświadczeniami i pomysłami. Serwa modelarskie w robotyce amatorskiej - Kompendium wiedzy Damian Nowak (Nawyk) I. "KLASYCZNE" WYKORZYSTANIE SERW MODELARSKICH (SERWA NIE PODDANE PRZERÓBCE) Podział i rodzaje serw Najpopularniejsze kryteria podziału serw, to budowa wewnętrzna/sposób działania (serwa analogowe i cyfrowe) i waga (mikro, mini, standard, extra-large itp. - w Polsce najpopularniejsze wydają się być mikro o wadze do 10 gram i standardowe o wadze do 50 gram), można również znaleźć serwa do "specjalnych zastosowań" (np. niskoprofilowe). Rodzaje serw, przykładowe wymiary i waga Podstawowe różnice między serwami cyfrowymi i analogowymi Serwa cyfrowe dodatkowo posiadają możliwość zaprogramowania pozycji neutralnej. W zastosowaniach robotyki amatorskiej (głównie ze względu na cenę) zdecydowanie królują serwa analogowe i to na nich skupia się ten artykuł. Różnice między serwami typu mikro i standard, oprócz wagi, dotyczą także ceny, momentu obrotowego, poboru prądu i szybkości reakcji. Dużą rolę w przypadku tych parametrów odgrywa marka serwa (należy zapoznać się z dokumentacją producenta). Moment obrotowy najpopularniejszych mikroserw wynosi zwykle do ok. 1,5kg*cm (ramię o długości 1cm jest w stanie unieść 1,5kg), podczas gdy moment serw standardowych może wynieść od 3kg*cm nawet do 15kg*cm. Porównanie rozmiarów przykładowego serwa mikro i standard: Budowa i działanie Serwo modelarskie to nic innego, jak silnik DC sprzężony poprzez odpowiednie układy z potencjometrem, którego pozycja odpowiada położeniu wału wyjściowego. Wysyłając na wejście przewodu sygnałowego odpowiedni zestaw impulsów, wyznaczamy konkretną pozycję położenia orczyka - zadaniem układów wewnątrz serwa, jest jak najdokładniejsze odwzorowanie tej pozycji w praktyce, poprzez obracaniem wału silnika w lewo lub prawo i zczytywanie wartości z potencjometru. (oczywiście opis działania bardzo uprościłem - szczegóły w książkach z podstaw automatyki, czy chociażby tutaj: http://pl.wikipedia.org/wiki/Serwomechanizm). Najpopularniejsze kolorystyczne oznaczenia przewodów serw: » przewód czerwony podpinamy do "+" zasilania (zgodnie z dokumentacją serwa, najczęściej po prostu 5V) » przewód czarny podpinamy do "-" zasilania » przewód żółty/biały to przewód, który nas najbardziej interesuje - to po nim wysyłamy sygnał sterujący, żeby określić pozycję orczyka.Sygnał sterujący składa się z impulsów prostokątnych powtarzanych co 20-25ms. Czas trwania jednego impulsu wynosi od 1-2ms, przy czym orczyk znajduje się w pozycji neutralnej ("na środku") przy impulsie trwającym ok. 1,5ms. 2ms odpowiadają więc za maksymalne wychylenie np. w prawo, 1ms odpowiada za maksymalne wychylenie w lewo. Impuls musi się powtarzać co 20-25ms, gdyż jeśli zaniknie, serwo przestanie stawiać opór w celu utrzymania aktualnej pozycji (nie będzie miało punktu odniesienia). 20-milisekundowa przerwa pozwala dodatkowo na obsługę kilku serw równocześnie (obsługujemy kolejne serwa, podczas trwania "przerwy" w pozostałych). Przykładowy przebieg sygnału (maksymalne odchylenie w jedną stronę): Programowa obsługa nieprzerobionego serwa modelarskiego (na przykładzie BASCOM-AVR) Schemat połączeń: Przykładowy kod w BASCOM-AVR: $regfile = "m8def.dat" $crystal = 12000000 Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 Config Portd = Output Enable Interrupts Dim Zmienna As Integer 'Nasze "odchylenie" serwa Zmienna = 150 'Czas trwania impulsu będzie wynosić Zmienna*Reload=1500us (1,5ms) Do Servo(1) = Zmienna Waitms 1000 Loop End II. METODY PRZERABIANIA SERW MODELARSKICH 1. Zdejmowanie blokady i obsługa jako zwykły silnik DC z przekładnią Założenia Ponieważ silniki DC zintegrowane z przekładnią bywają trudnodostępnym i często drogim towarem, bardzo często o wiele prościej (i taniej) jest wykorzystać jako napęd przerobione serwo modelarskie. Naszym celem jest "ominięcie" elektroniki serwa i zdjęcie mechanicznej blokady z jednej z zębatek. Sterowanie odbywa się jak zwykłym silnikiem DC - poprzez mostek H. Przerabianie serwa standardowego 1. Zdejmujemy orczyk 2. Wykręcamy śruby ze spodu serwa 3. Zdejmujemy dolną i górną obudowę 4. i 5. Wycinamy/piłujemy blokadę mechaniczną (wypustkę na jednej z zębatek) 6. Widoczne luty to zaciski silnika 7. Wkładamy cienki śrubokręt między plastikową osłonę i zębatkę na osi silnika i delikatnie wypychamy silnik z obudowy 8. Demontujemy widoczny potencjometr 9. Potencjometr ucinamy i izolujemy przewody 10. Odlutowujemy przewody zasilania i sygnałowy 11. Wybieramy z nich dwa i lutujemy je bezpośrednio do zacisków silnika (patrz: punkt 6.) 12. Wkładamy silnik z płytką do obudowy, zakładamy zębatki 13. Skręcamy obudowę i gotowe Niektórzy wolą usunąć płytkę z elektroniką i zostawić sam silnik z dwoma przewodami - oczywiście, można i tak. W moim przypadku silnik jest unieruchomiony płytką, więc jej usunięcie sprawi, że zacznie się obracać. Dodatkowo, stosunkowo łatwo można odwrócić zmiany i przywrócić serwo do pierwotnej funkcjonalności (kwestia zastąpienia blokady np. wciśniętym w plastik na gorąco metalowym pręcikiem). Przerabianie mikroserwa 1. Zdejmujemy orczyk 2. Wykręcamy śruby ze spodu serwa 3. Zdejmujemy dolną i górną obudowę 4. i 5. Wycinamy/piłujemy blokadę mechaniczną (wypustkę na jednej z zębatek) 6. Usuwamy metalowe "skrzydełka" potencjometru... 7. ...żeby potencjometr mógł bez przeszkód obracać się o 360 stopni 8. Odcinamy przewody potencjometru... 9. ...przewody zasilania, przewód sygnału sterującego i przewody przylutowane do silnika 10. Wybieramy dwa przewody i lutujemy je bezpośrednio do zacisków silnika (trzeci przewód można odciąć/oderwać, ja zostawiłem, bo nie przeszkadza - żółty przewód nie jest do niczego przylutowany) 11. Skręcamy obudowę i gotowe. Programowa obsługa przerobionego serwa Przerobione w ten sposób serwo jest w praktyce zwykłym silnikiem DC z przekładnią, najprościej więc nim sterować za pomocą mostka H. Schemat połączeń: Przykładowy kod w BASCOM-AVR: $regfile = "m8def.dat" $crystal = 1000000 'Konfiguracja PWM'a: Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Portd = Output Silnik_a Alias Portd.0 Silnik_b Alias Portd.1 PWM1A = 200 'Ustawienie PWM w zakresie 0-255 (regulacja prędkości) Do 'Obrót w jedną stronę Set Silnik_a Reset Silnik_b wait 3 'Obrót w stronę przeciwną Reset Silnik_a Set Silnik_b wait 3 'Stop Reset Silnik_a Reset Silnik_b wait 3 Loop End Pzykłady zastosowania tego rozwiązania w praktyce Prosty line follower Robot Wall-i Robot edukacyjny - NANA_1 Robo Blue Zalety rozwiązania Sterowanie takie, jak zwykłym silnikiem DC Cena i dostępność w porównaniu z silnikami DC zintegrowanymi z przekładnią (choć nie zawsze jest to regułą) Zasilanie rzędu 5-6V (w przypadku stosowania popularnych układów scalonych zasilanych napięciem 5V) Mocowanie kół przy wykorzystaniu orczyków Łatwe mocowanie serwa do podwozia/obudowy robota Stosunkowo duży moment obrotowy Wady: Wysokie przełożenie skutkuje małą prędkością obrotową wału wyjściowego (można to do pewnego stopnia kompensować stosując odpowiednio duże koła) 2. Przeróbka typu "BoeBot" Założenia Nie zawsze możemy sobie pozwolić na zastosowanie dodatkowego mostka H do sterowania serwami przerobionymi w sposób pokazany w punkcie 1. Istnieje możliwość wykorzystania elektroniki na płytce serwa i jest to ciekawa alternatywa przerabiania serw. Jeśli wyślemy sygnał sterujący odpowiadający skrajnemu wychyleniu orczyka w jednym kierunku, a potencjometr stale będzie wskazywać pozycję neutralną, to silnik będzie pracować tak długo, jak długo będziemy ten sygnał wysyłać. Główne założenie polega więc na "unieruchomieniu" potencjometru w pozycji neutralnej. Możemy to osiągnąć na dwa sposoby. W przypadku, gdy potencjometr przymocowany jest do PCB "na sztywno", sprawa jest prosta. 1. Rozkręcamy serwo, demontujemy zębatki 2. Śrubokrętem lub nożykiem podważamy płytkę i wysuwamy ją z obudowy 3. Pierwszym krokiem będzie skrócenie wyprowadzeń potencjometru 4. Podgrzewamy trzy pola lutownicze i wpychamy potencjometr nieco głębiej, lutujemy dla pewności i obcinamy wystające "nóżki" 5. Skracamy wystający ruchomy element potencjometru - pilnikiem lub miniszlifierką elektryczną. Staramy się przy tym nie wyginać płytki serwa 6. Podłączamy multimetr i mierzymy rezystancję między dwoma skrajnymi wyprowadzeniami (jeszcze dokładniejszy wynik uzyskamy, gdy zmierzymy to przy wylutowanym rezystorze) 7. Przykładowy wynik dla mojego serwa to 2,29k. Dzielimy to na dwa... 8. Mierzymy rezystancję między dwoma sąsiednimi wyprowadzeniami potencjometru i kręcimy tym co zostało z pokrętła tak, żeby uzyskać nasz wynik z dzielenia... 9. ...a następnie unieruchamiamy ten element, np. przy pomocy kleju na gorąco 10. Przymiarka po włożeniu płytki w obudowę - potencjometr nie może wystawać 11. Pamiętamy o usunięciu blokady z zębatki. Składamy składamy i skręcamy serwo - gotowe. W niektórych serwach - w szczególności w mikroserwach - potencjometr połączony jest giętkimi przewodami. W dodatku, dla mikroserw, trzeba pamiętać, że potencjometr stanowi oś dla dwóch zębatek. Zostawiamy więc odłączony potencjometr, a w jego miejsce podłączamy parę rezystorów. 1. Rozkręcamy serwo, demontujemy zębatki 2. Przecinamy przewody od potencjometru, zapamiętując który odpowiada za które wyprowadzenie 3. Podłączamy multimetr do skrajnych wyprowadzeń potencjometru 4. Zmierzoną wartość (w moim przypadku 5k) dzielimy na 2. Ponieważ nie posiadałem rezystorów o wartości 250Ohm, zastąpiłem je 270Ohm. Po pomiarach przewody dochodzące do potencjometru ucinamy 5. Lutujemy rezystory do przewodów od skrajnych wyprowadzeń potencjometru. WAŻNE Do tego celu najlepiej wykorzystać rezystory subminiaturowe, a nawet w obudowie SMD - jeśli ktoś ma dobry wzrok... 6. Wolne końce rezystorów lutujemy do trzeciego przewodu 7. Po usunięciu blokady z zębatki i "skrzydełek" potencjometru (jak w rozdziale o standardowej przeróbce mikroserwa) staramy się to wszystko "upakować". Polecam zaizolować nasze rezystory kawałkiem taśmy przed włożeniem do obudowy (żeby nie dotykały metalowego potencjometru). Jeśli przeróbce poddaliśmy standardowe serwo, to stary potencjometr można oczywiście wyjąć i zatrzymać na pamiątkę Programowa obsługa przerobionego serwa Schemat połączeń (identyczny jak w przypadku nieprzerobionego serwa): Przykładowy kod w BASCOM-AVR: $regfile = "m8def.dat" $crystal = 12000000 Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 Config Portd = Output Enable Interrupts Dim Zmienna As Integer Zmienna = 100 'Impuls 1ms, dla obrotów w jedną stronę 'Zmienna = 200 'Impuls 2ms, dla obrotów w stronę przeciwną 'Zmienne = 150 'Pozycja neutralna, czyli serwo się zatrzymuje. Z tą wartością musimy poeksperymentować - im dokładniej dobraliśmy rezystory/ustawiliśmy potencjometr, tym bliżej tej wartości znajdzie się nasz punkt "stop" Do Servo(1) = Zmienna Waitms 1000 Loop End Zalety rozwiązania Sterowanie niemal identyczne, jak zwykłym serwem modelarskim (brak konieczności stosowania mostka H) Cena i dostępność w porównaniu z silnikami DC zintegrowanymi z przekładnią (choć nie zawsze jest to regułą) Zasilanie rzędu 5-6V (w przypadku stosowania popularnych układów scalonych zasilanych napięciem 5V) Mocowanie kół przy wykorzystaniu orczyków Łatwe mocowanie serwa do podwozia/obudowy robota Stosunkowo duży moment obrotowy Wady: Brak możliwości płynnego regulowania prędkości obrotowej wału wyjściowego serwa Wysokie przełożenie skutkuje małą prędkością obrotową wału wyjściowego (można to do pewnego stopnia kompensować stosując odpowiednio duże koła) 3. Nagrywanie ruchu serwa Założenia Ten sposób jest dość nietypowy, podobnie jak raczej nietypowe będą jego zastosowania. Należy również być ostrożnym podczas pierwszych prób - jeśli mikroprocesor w porę nie zareaguje na przekroczenie przez orczyk bezpiecznej granicy działania, serwo zatrzyma się na mechanicznej blokadzie - znacznie wzrośnie pobierany prąd (długotrwałe działanie w tym stanie może nawet spowodować stopienie izolacji uzwojeń silnika i - w konsekwencji - zwarcie zasilania silnika), a w przypadku tańszych serw może dojść do uszkodzenia zębatek. Przerobione w ten sposób serwa (trzy) zastosowałem w moim Smyraczu (być może wkrótce pojawi się na forum), który jest niczym innym jak... manipulatorem "programowanym" na żywo poprzez ręczną animację poszczególnych punktów swobody. Efekt działania takiego serwa można zobaczyć na moim filmie: Przeróbka niewiele różni się od tej z rozdziału II.1. W tym jednak przypadku zostawiamy blokadę mechaniczną na jednej z zębatek i nie wyrzucamy potencjometru. Dwa przewody ze starego kabla od serwa lutujemy bezpośrednio do wyprowadzeń silnika (obojętnie czy silnik jest przymocowany do PCB, czy nie), trzeci natomiast do środkowego wyprowadzenia potencjometru. Dodatkowo prowadzimy jeszcze dwa przewody, które lutujemy do zewnętrznych wyprowadzeń potencjometru. Całość widać dobrze na zdjęciu: Programowa obsługa przerobionego serwa Schemat połączeń Przykładowy kod w BASCOM-AVR: $regfile = "m32def.dat" $crystal = 16000000 Config Adc = Single , Prescaler = Auto Start Adc S1a Alias Portb.0 S1b Alias Portb.3 Dim Pomiar As Integer Dim Zadana As Integer Dim Maksymalna As Integer Dim Minimalna As Integer Dim Tablica(310) As Integer 'tablica, w której będą przechowywane próbki Dim I As Integer Dim J As Integer Const Czas = 100 'czas pomiędzy kolejnymi próbkami w milisekudnach Config Portb = Output Reset Portb Zadana = 100 Do 'Nagrywanie For I = 1 To 310 Pomiar = Getadc(0) Tablica(i) = Pomiar Waitms Czas Next Wait 5 'Odtwarzanie For I = 1 To 310 Zadana = Tablica(i) For J = 0 To Czas Gosub Serwo 'funkcja ustawiająca serwo w zadanej pozycji w ciągu trwania jednego okresu próbkowania Next Next Wait 10 Loop End Serwo: Maksymalna = Zadana + 5 Minimalna = Zadana - 5 'maksymalne dopuszczalne przesunięcia względem zadanej pozycji (w celu ograniczenia drgań) Pomiar = Getadc(0) If Pomiar > Maksymalna Then Set S1a Reset S1b 'serwo obraca się w jedną stronę Elseif Pomiar < Minimalna Then Reset S1a Set S1b 'serwo obraca się w drugą stronę Else Reset S1a Reset S1b 'serwo zatrzymane End If Waitms 1 Return Program dodany również w załączniku Zmniejszając częstotliwość próbkowania, zwiększamy płynność ruchu kosztem czasu trwania całej nagrywanej sekwencji. Czas ten można zwiększyć odpowiednio zwiększając ilość elementów w tablicy (tak, by nie przepełnić pamięci uC). Zalety rozwiązania Zasadniczo mamy działający serwomechanizm, przy czym jego funckjonalność została rozszerzona o możliwość nagrywania ruchu Wady: Możliwość uszkodzenia serwa, mostka H i układu zasilania w przypadku niewłaściwego sterowania Konieczność zastosowania aż pięciu przewodów. III. INNE INFORMACJE 1. Mocowanie kół do serwa Koła zakładane zamiast orczyka Najwygodniejsze, ale i zarazem dość drogie (głównie ze względu na przesyłkę) rozwiązanie. Koła takie po prostu wsuwa się na wał wyjściowy serwa i dokręca śrubką. Do kupienia np. w Pololu Koła przykręcane do orczyka Tutaj można się pokusić o gotowe rozwiązania, jednym z nich są produkty firmy Tamiya Do kupienia również w Pololu, a spośród polskich sklepów np. w DaVincishop "Domowe sposoby" W tym przypadku jedynym ograniczeniem jest właściwie tylko wyobraźnia i pomysłowość. Najprostszy i chyba najtańszy sposób to niezawodne połączenie wieczek od słoików i paru kropli hot-glue (warto bardzo dokładnie wyznaczyć środek koła): Nic nie stoi też na przeszkodzie, żeby w takim wieczku wywiercić otwory zgodne z tymi w orczyku i przymocować je przy pomocy cienkich śrubek (ten sam sposób, co w komercyjnych produktach). Dodatkowo można też np. okleić brzeg wiecza gumową uszczelką do okien - znacznie poprawimy w ten sposób przyczepność do podłoża. Bardziej od wieczek "profesjonalnie" wyglądające koła znajdziemy w sklepie modelarskim (podwozia do samolotów) - wydatek od kilku do kilkunastu złotych za parę (zależnie od rozmiarów i użytego materiału). Pomocą służą również stare zabawki-samochody. 2. Gdzie kupować? Allegro Najtańsze nowe serwa typu "standard" można dostać już od ok. 13 zł (Tower Pro SG 5010), mikroserwa od ok. 10zł (Turnigy TG9e). Ponadto, bardzo często po naprawdę okazyjnych cenach można dostać serwa lepszych firm (od HiTec'a aż po Futaba) używane, wystarczy co jakiś czas przeglądać oferty i "polować" na okazję. Zagraniczny sklep HobbyCity Więcej informacji tutaj.. Forumowy "bazarek" Polskie sklepy modelarskie Serwa w takich sklepach są zazwyczaj nieco droższe niż te same oferowane na Allegro, ale może być to alternatywa dla ludzi np. nie posiadających na Allegro konta lub chcących obejrzeć i "pomacać" towar przed zakupem. 3. Dane techniczne Serwa modelarskie w robotyce amatorskiej - Kompendium wiedzy program_nagrywanie.rar
  39. 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ę
  40. 24 punktów
    Przedstawiam robota którego wykonałem w ramach pracy inżynierskiej. Jest to robot o dość uniwersalnej budowie, może pracować jako line follower, światłolub, może samodzielnie poruszać się po pomieszczeniu lub może być zdalnie sterowany z komputera poprzez Bluetooth. Robot ma budowę modułową. Aktualnie składa się z trzech modułów połączonych ze sobą magistralą I2C z możliwością rozbudowy o kolejne moduły. Schematy modułów wieży, podwozia i sterownika w formacie PDF znajdują się w załączniku. Robota zaprojektowałem w programie Autodesk Inventor: Następnie według zaprojektowanych kształtów płytek zaprojektowałem płytki w protelu99se: Robota napędzają dwa silniki firmy maxon z dwustopniowymi przekładniami planetarnymi i enkoderami, a zasilany z pakietu modelarskiego li-pol 22,2V 800mAh (akumulatora nie ma na zdjęciach). Robot współpracuje z aplikacją okienkową na komputerze, którą napisałem w języku C#. W załączniku znajduje się aplikacja wraz z kodem źródłowym, a do jej uruchomienia potrzebny jest zainstalowany NetFramework 3.5 SP1. Schematy PDF.rar Programy robota.rar Aplikacja.rar Schematy i PCB.rar
  41. 24 punktów
    Przedstawiam wam moją konstrukcję linefollowera, oraz płytkę, która powstała jako uniwersalna płytka do różnych robotów. Zacznijmy od początku, płytka oparta jest na mikrokontrolerze z rodziny ATmega48/88/168/328, w moim przypadku są to dwa układy ATmega168/328P. Schemat nie różni się bardzo od schematu Psotka3, zmiany jakie widać na pierwszy rzut oka to złącze 10-cio pinowe służące do podłączenia do 8 czujników, gotowe źródło prądowe oparte na LM317 do zasilania diod IR w płytce czujników (połączenie szeregowe diod), trzy przyciski kątowe typu mikroswitch (wykorzystywane przy wprowadzaniu zmian prędkości i konfiguracji ustawień wzmocnień współczynników algorytmu PID poprzez złożone menu). Płytka została zaprojektowana pod kątem mieszczenia się w całości pod wyświetlaczem LCD 2x8 zgodnym z HD44780, niestety podczas projektowania powiększyłem płytkę o 2,5mm czego następstwem są nie pasujące piny od podświetlania wyświetlacza: Tak jak w Psotku3, tak i w tej płytce, złącze służące do programowania, jest jednocześnie złączem dla LCD w trybie 4-ro bitowego przesyłania danych (oczywiście poza pinem Reset). Doprowadzenie płytki do takiej postacie zajęło mi bardzo dużo czasu, z przerwami spędziłem nad nią ponad miesiąc, nie licząc małej wpadki z pinami od podświetlania, myślę, że nie był to stracony czas. Płytka została wykorzystana w pierwszej wersji Strider'a, okazało się jednak, że silniki z Psotka2 po założeniu kół o średnicy 66mm, są zbyt słabe do napędzania robota, dlatego też powstał Strider2: Szczegóły techniczne: procesor: Atmega328P@20MHz czujniki: 8 sztuk KTIR0711S, ustawione w kształt, który miał poprawiać wykrywanie kątów prostych: zasilanie: 2 akumulatorki li-pol 450mAh, 5V dla logiki pochodzi z układu LP2950 mostek H: 2 układy SI9986CY (dwa pełne mostki H) robot napędzany jest silnikami z pololu, przekładnia 30:1, 1000obr/min, wersja silnika HP sterowanie silników: 4 kanały PWM z procesora kod w całości napisany w Bascomie, łącznie z obsługą PID oraz 4 kanałów PWM robot zawiera wyświetlacz LCD 2x8, na którym są wyświetlane różne parametry, na płytce jest miejsce na odbiornik podczerwieni TSOP348 (w tej płytce odbiornik nie został użyty), 3 mikro switche kątowe używane do konfiguracji prędkości poprzez zaawansowane menu wymiary: rozstaw osi 124mm, szerokość przodu 90mm, długość 110mm z przodu zamontowane są 2 kulki teflonowe, wykonane własnoręcznie na wiertarce z pomocą scyzoryka, papieru ściernego, i ponad dwóch godzin pracy na kulkę wymiary płytki 60,3x30,3 [mmxmm] masa robota wraz z akumulatorkami - 120g Ponieważ najprostsze rozwiązania są najlepsze, nie umieszczałem nigdzie włącznika, ani żadnych uchwytów na akumulatorki (doskonale w tej roli sprawdza się zwykła gumka recepturka). Oto kilka zdjęć samej płytki, oraz fazy projektowania: Strider2 jest moim pierwszym linefollowerem, który przekroczył prędkość 1m/s podążając za linią. Niestety okazuje się, że zastosowane mostki są za słabe do tych silników, daje się również we znaki brak kondensatorów równolegle do silników oraz kondensatorów na zasilaniu mostków. Po przekroczeniu pewnej wartości PWM/prędkości restartuje się mikrokontroler, co kończy się zatrzymaniem na torze. Poniżej najszybszy przejazd Stridera2 podczas zawodów Robo3DVision w Gdańsku. Czas przejazdu 7,23s, który dał mi szóste miejsce w eliminacjach, niestety mój linefollower nie jechał jeszcze wtedy z pełnią swoich możliwości.
  42. 23 punktów
    Witajcie, Chciałbym tu przybliżyć plon mej pracy/zabawy. Około roku temu zacząłem się interesować robotyką. Analizowałem możliwości wykonania robota powiedzmy zabawki, który mógł by się poruszać w terenie (szeroko pojętym). W ruch poszły „Google”, fora i strony producentów. Była kwestia podjęcia decyzji co do rodzaju robota, a muszę przyznać, że roboty typu kroczące bardzo mi się podobają. Na początek zacząłem analizować proste roboty dostępne jako kity do składania, później mój wzrok padł na podwozie kołowe jako mniej skomplikowane (nawet mam całkiem ciekawe podwozie z samochodu zdalnie stertowanego), aż wreszcie pojawił się On – hexapod Od tego czasu zapałałem do niego wielką miłością. - rozpocząłem pracę nad analizą poszczególnych elementów składowych robota. Przy założeniach, że ostatni raz lutownicę trzymałem 20 lat temu, nigdy nie programowałem procesora (choć troszkę programów zwykłych napisałem za młodu) zadanie wydawało się mało realne zwłaszcza w wykonaniu robota tak skomplikowanego. Przyznam się że wykonując robota bardzo dużo elementów zaczerpnąłem ze strony lynxmotion.com i istniejącego tam forum – dotyczącego Robota Phoenix, oraz z strony robota MSR-H01 firmy Micromagic System. Tak czy inaczej Maniek powstał. Powstawał powoli ok. pół roku powoli w miarę możliwości czasowych, których jest nie za wiele... Poświęciłem na niego około 300 godzin jak nie więcej, czasem były tygodnie, że nic nie drgnęło, a czasem był tydzień że ... ummm, ale to między bajki włożyć... Ograniczenia przy wykonywaniu robota: - przede wszystkim jedno finansowe - chciałem zrobić robota taniej niż pierwowzory (i udało się), które są koszmarnie drogie, - mizerna znajomość elektroniki, - mała znajomość programowania procesorów, - zero znajomości robotyki. Dane techniczne robota: Konstrukcja: Robot 6 nożny potocznie zwany hexapodem wykonany z pleksi 3mm wycięte wg mojego projektu (wzorowałem się na rozwiązaniach konstrukcyjnych głównie Phoenixa, MSR-H01 oraz innych robotach tego typu z netu). Dla zapewnienia większej sztywności robota – główna płyta robota, która przenosi wszystkie obciążenia jest podwójna (2x3 mm), a dla zapewnienia ciekawszego wyglądu – nogi zostały wycięte we wzór imitujący włoski pająka. Użyto 18 serwomechanizmów Tower Pro 5010 do sterowania nogami oraz 1 serwo do sterowania sonarem. Główna płyta - Serce robota: Płytka Arduino Mega (strona www: arduino.cc) – rzekł bym super płytka dla laika – wiele wejść i wyjść w zasadzie brak ograniczeń co do programowania oraz bardzo obszerne forum z tysiącami rozwiązań problemów – to była wielka kopalnia informacji. Dla mnie bajka... (przyznam się, że pojęcia typu fuse byte itp., wywołują u mnie lekki dreszczyk z złym tego słowa znaczeniu). Programik zaprojektowany do programowania płytki pozwala w bardzo prosty sposób pisać i programować. Do tego gotowe biblioteki pozwalają w kilka chwil ( jak np: w moim przypadku ) oprogramować sobie klawiaturę PS/2 – akurat taką posiadałem zbędną w szafie). Sterownik serw: Z uwagi na to, że będę chciał rozbudowywać robota i nie chciałem wprowadzać ograniczeń na płytkę arduino (jest ona sama w stanie obsłużyć do 48 serw) co do częstotliwości wysyłania sygnałów – zastosowałem osobno sterownik serw SD 21. Do tego dodatkowo: Wyświetlacz cyfrowy + 3 przyciski - Do tego pozostało zrobić sobie wyświetlacz (dwie cyferki LED) oraz 3 mikrowłączniki do „programowania trybu pracy”. Płytka z dodatkowymi opornikami (połączenie arduino z sterownikiem serw) oraz Buzzerem. Buzzer – robot wydaje sygnał dźwiękowy –dla uproszczenia konstrukcji zastosowałem buzzer z generatorem. Zasilanie: Obecny etap – zasilacz komputerowy – osobne zasilanie serw i elektroniki W przyszłości – zasilanie z akumulatorów – osobno serwa, a osobno elektronika – kwestia do analizy, bo pobór prądu przez 19 serw jest duży. Czucie robota: Zastosowałem sonar SRF05 Waga: Konstrukcja z pleksi + zmontowane serwomechanizmy to 1,45 kg. Z akumulatorami dojdzie prawdopodobnie do ok 2,5 kg. Wszystko starałem się wykonać jak najestetyczniej, ale wybaczcie mi proszę wygląd mych płytek, bo dopiero co nauczyłem się lutować. Obecny tryb pracy robota: – praca na kablu – sterowanie przy pomocy starej numerycznej klawiatury numerycznej PS/2 do notebooka. Rozwój projektu w przyszłości (kolejność nie koniecznie taka jak poniżej): - praca autonomiczna – poruszanie się po terenie (płaskim i off-road), omijanie przeszkód przy pomocy sonaru, - praca demonstracyjna – robot stoi w miejscu, ale reaguje na bodźce (sonar – zbliżenie ręki), wykonywanie ruchów imitujących „żywy organizm” (poruszanie nogami itp.), - wprowadzenie odwrotnej kinematyki do programu robota ( obecnie pracuje na zaprojektowanych wychyleniach sczytywanych z tablicy w programie), - zastosowanie na stopach czujnika terenu co pozwoli na poruszanie się w nierównym terenie, - zastosowanie akumulatorów do zasilania robota, - inne.... ??? czas i możliwości finansowe pokażą... Poniżej portret Mańka: ------------------------- ==============
  43. 23 punktów
    Przedstawiam mojego robota mikrosumo Destroyer. Robot powstał na początku 2009 roku z myślą o udziale w największych międzynarodowych zawodach robotów w Europie Robotchallenge w Wiedniu. Klasa mikrosumo jest jedną z najmniejszych klas robotów sumo biorących udział w zawodach. Prezentowany przeze mnie robot jest jednym z najlepszych robotów w Polsce i Europie co potwierdzają wyniki zawodów przedstawione na końcu postu. Projekt: Klasa mikrosumo narzuca ograniczenia wymiarów robota: 5cm x 5cm x 5cm. W klasie tej w przeciwieństwie do większych klas robotów sumo ograniczona jest wysokość robota. Waga robota ograniczona jest do 100gram. Projekt robota powstał w programie Autodesk Inventor. Rama robota wykonana jest z płytek drukowanych zlutowanych ze sobą "na kant". Robot napędzany jest dwoma niewielkimi silnikami prądu stałego z przekładniami. Jeden silnik napędza jedną gąsienicę a drugi drugą. Robot jest zaprojektowany tak, że może atakować przeciwnika zarówno przodem jak i tyłem. Mechanika: O mechanice nie będę dużo pisał, większość wyjaśniają zdjęcia poniżej. Robot po złożeniu i z trzema ogniwami (tak jak na zdjęciu) ważył niecałe 80 gram. W obecnej wersji zasilanie stanowi tylko jedno ogniwo, a w miejsce dwóch pozostałych ogniw (między silnikami) wstawiona została sztabka ołowiu i teraz robot waży 98gram. Elektronika: Dla bardziej zaawansowanych użytkowników, na schemacie robota nie będzie nic odkrywczego. Robot powstał gdy dopiero zaczynałem swoją przygodę z robotyką . Dla mniej zaawansowanych użytkowników polecam zapoznanie się opisem działania poniżej: „Mózgiem” robota jest procesor ATmega16L. Na płytce drukowanej znajdują się: złącze programatora ISP (jest to lista „goldpinów” w rastrze 1,27mm), cztery czujniki linii zbudowane na bazie transoptorów odbiciowych KTIR0711S, dwa mostki H Si9986CY sterujące silnikami. Dzielnik napięcia zbudowany jest z diody i rezystora, służy on do odczytywania za pomocą przetwornika ADC napięcia akumulatora i chronienia go przed nadmiernym rozładowaniem. Dwa mikroswitche i cztery diody LED służą do sygnalizacji pracy robota. W tym miejscu muszę zaznaczyć, że na schemat wkradł się błąd. Dwie diody LED podłączone są do wejść XTAL, które w mikrokontrolerze ATmega16 nie mają możliwości pracy jako PORT I/O, w przeciwieństwie do wyprowadzeń XTAL w ATmedze8, którą omyłkowo się zasugerowałem. Scalone odbiorniki podczerwieni TSOP32156 wraz z nadawczymi diodami IR tworzą czujniki wykrywania przeciwnika. Za pośrednictwem diod wysyłane są paczki 8 impulsów podczerwieni o częstotliwości 56kHz. Gdy światło podczerwone odbije się od przeszkody (robota przeciwnika) i dotrze z powrotem do odbiornika podczerwieni, to zgodnie z notą katalogową, odbiornik zmieni stan na nóżce OUT z wysokiego na niski i dzięki temu robot jest w stanie wykryć robota przeciwnika. Diody IR muszą być osłonięte, aby światło przez nie emitowane nie padało bezpośrednio na odbiornik, a dopiero po odbiciu od przeszkody. Muszą być również umieszczone pod odpowiednim kątem, aby światło nie odbijało się od powierzchni ringu. Poza tym na płytce znajdują się kondensatory filtrujące napięcie zasilania. Jest to bardzo ważne, ponieważ w pobliżu znajdują się silniki, które w trakcie pracy emitują zakłócenia elektromagnetyczne. Całość elektroniki oraz silniki zasilane są bezpośrednio z akumulatora zbudowanego z trzech połączonych równolegle ogniw litowo-polimerowych o napięciu 3,7V i pojemności 250mAh. Ponieważ napięcie zasilania wynosi zaledwie 3,7V (nominalnie), wszystkie elementy zostały dobrane tak, aby mogły pracować przy takim napięciu. Program: Pełny kod źródłowy programu został umieszczony w załączniku. W tym miejscu muszę zaznaczyć, że nie polecam wzorować się na moim programie innym użytkownikom. Program powstawał gdy dopiero zaczynałem się uczyć programować mikrokontrolery i jest on napisany bardzo nieelegancko . Zachęcam natomiast do zapoznania się z algorytmem walki. Ten kto to zrobi przekona się jak prosty i banalny może być algorytm sterujący robotem który od dwóch lat jest najleoszym robotem w Europie. Nie posiadam niestety, żadnych filmów z zawodów ani filmów przedstawiających robota w działaniu. Na youtube można obejrzeć kilka walk na filmikach z Robotchallenge Osiągnięcia: 2. miejsce na Robotchallenge 2009 1. miejsce na Robotchallenge 2010 Wyniki 2010 1. miejsce na Robotchallenge 2011 Wyniki 2011 1. miejsce na Robocomp 2011 Relacja Artykuł na temat robota ukazał się w miesięczniku Elektronika dla wszystkich:EdW 4/2010 Płytki robota można kupić w sklepie AVT: Sklep AVT - płytki program.txt
  44. 23 punktów
    Od mojej ostatniej publikacji na Diodzie minęło już trochę czasu, a jednocześnie powstało kilka nowych konstrukcji. Dziś chciałbym zaprezentować ZX-3 - robot wykonany w oparciu o dobrze znany schemat KoNaR, wyposażony w czujnik Sharp'a (10cm-80cm) oraz przekładnie Tamiya - w których zasmakowałem i uważam je za sensowną alternatywę dla serw. Poniżej zdjęcia wyjaśnią chyba wszystko W najbliższym czasie postaram się nagrać walkę pomiędzy ZX-3 a poprzednim minisumo. Wiem, że robot wygląda trochę "z innej bajki", ale to ma być "zawodnik" typowo pokazowy, choć jestem mile zaskoczony jego prędkością. Charakterystyka: a) elektronika - schemat i płytka: KoNaR (identycznie jak w poprzednim robocie: minisumo ) - płyta główna: Atmega 8 - mostek-H: L298 - wzmacniacz TL084 - czujniki białej lini: TCRT 1000 - dalmierz Sharp'a (od 10 do 80 cm) - czujnik zderzeniowy - kolizji b) zasilanie: - akumulatorki 4xAAA c) mechanika: - przekładania Tamiya 70097 Twin-Motor Gearbox Kit - koła Tamiya - obudowa z korytka elektrycznego + trochę części z drukarki - malowanie: spray d) kosztorys: - przekładnia Tamiya: 45,00 zł - koła Tamiya: 20,00 zł - czujnik Sharp: 38,00 zł - czujniki białej lini: 10,00 zł - elektronika: 30,00 zł - obudowa, malowanie, szpachla itp: 10,00 zł Razem: 153,00 zł Poświęcony czas: ok 10 godzin. Oto ja: i moja elektronika: Szczegóły też są ważne: Radiator w charakterze pokrywy na baterie: Rzut oka na elektronikę: Sharp (nazwa robota jest podświetlana w momencie ataku): Czujniki białej linii: Mechanika: Do boju: I obiecany film z pierwszej walki:
  45. 22 punktów
    Witam, nareszcie mogę pochwalić się swoją konstrukcją, dzięki której uzyskałem tytuł inżyniera Automatyki i Robotyki Od obrony minęło nieco ponad pół roku, w związku z czym mogę już opublikować opis robota (niestety z pewnymi ograniczeniami). Obudowa: Obudowa została wykonana na ploterze CNC z płyty akrylowej o grubości 3mm. Składa się łącznie z sześciu elementów: - dół o średnicy 12cm z otworami na czujniki - mocowanie ślizgu - 2 x mocowanie silnika - mocowanie dalmierza Sharp GP2D12 - góra o średnicy 12cm z wycięciem na wyświetlacz oraz 4 klawisze Napęd i zasilanie: Źródłem zasilania jest modelarski akumulator li-pol 2s o napięciu znamionowym 7,4V i pojemności 500mAh. Ładowanie akumulatora odbywa się poza robotem za pomocą ładowarki z balanserem. Do poruszania się robot wykorzystuje silniki DG2425-025 oraz koła MBW-31 z firmy Wobit. Taki zestaw jest w stanie rozpędzić robota do prędkości ponad 0,6m/s. Elektronika: Robocik ma dwa mózgi w postaci mikrokontrolerów ATmega8L Jeden zajmuje się sterowaniem silnikami, odczytem czujników i obliczeniami a drugi odczytem klawiszy i obsługą wyświetlacza graficznego z Nokii 3310. Komunikacja pomiędzy nimi odbywa się za pomącą interfejsu UART. Dzięki takiemu rozdzieleniu obowiązków całość pracuje sprawniej a do połączenia obu obwodów drukowanych wystarczą 4 przewody. Stopień mocy w postaci mostka H skonstruowano w oparciu o tranzystory MOSFET oraz drivery IR4427. Dynamika pracy silników jest bardzo dobra a straty są na tyle małe, że niemożliwy jest ich pomiar przy pomocy multimetru! Wykrywanie linii zapewnia 5 par dioda nadawcza + fototranzystor IR w obudowach o średnicy 3mm. Czujniki rozmieszczono po łuku, wzdłuż krawędzi obudowy. Wbrew obawom możliwe jest wykrywanie zakrętów pod kątem prostym. Oprogramowanie: W sofcie zawarto między innymi algorytm autokalibracji, obliczania pozycji robota nad linią, śledzenia linii, regulator PID oraz algorytm rozwiązywania labiryntów. Robot oraz widoczne na filmikach plansze zostały sprzedane i obecnie stanowią własność WFAiIS UMK w Toruniu, w związku z czym nie mogę opublikować schematów i kodów źródłowych! Mimo to postaram się udzielić odpowiedzi na pytania osób zainteresowanych konstrukcją Pozdrawiam, Grabo
  46. 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
  47. 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
  48. 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
  49. 19 punktów
    Słowem wstępu Powszechnie już wiadomo, że robot aby nazywał się robotem, musi być autonomiczny. Do tego potrzebuje czujników. Najczęściej stosowane przez nas czujniki to czujniki ultradźwiekowe (sonary) oraz na falę podczerwoną (w tym temacie pomijamy transoptory). Ze względu na łatwość wykonania, obsługi oraz koszty częściej stosowane są te drugie. Powszechnie używa się ich w dużych ilościach w robotach sumo, minisumo, FTL w celu wykrywania przeszkód, micromouse czy też prostych robotach edukacyjnych. Najchętniej stosowanymi czujnikami optycznymi są bez wątpienia czujniki Sharp - małe, dokładne, istnieją wersje analogowe i cyfrowe, jednak gdy chcemy uzyskać zasięg większy niż 10cm musimy liczyć się z kosztami, zwłaszcza gdy trzeba zastosować więcej czujników. Tańsza alternatywa, własnoręcznie montowane czujniki, często przegrywa, ponieważ utarło się, że mają mniejszy zasięg, trudno się je montuje, łatwo je uszkodzić, są za duże itd. Wychodząc na przeciw argumentom "na nie" prezentuję na forum jeden z moich projektów czujników optycznych. Od teraz robione własnoręcznie czujniki nie muszą mieć krótszego zasięgu, być za wolne, za trudne do zrobienia, może wymagają trochę pracy, ale na pewno są tańsze, a w przypadku budowy własnych czujników mamy możliwość dostosowania jego parametrów do naszych potrzeb. UWAGA! Do budowy czujnika wymagana jest umiejętność zaprogramowania procesora, podstawowa wiedza elektroniczna oraz umiejętność montażu układów elektronicznych ze schematu. Ogólnie o czujniku Czujnik jest cyfrowy, ponieważ zbudowanie analogowego czujnika własnoręcznie sprawia dużo kłopotów, a do mierzenia odległości lepiej sprawdzają się sonary. Składa się z zaledwie kilku elementów. Jego zasięg może wynosić nawet do 50-60cm, a do białej ściany około metra, jednak najlepiej sprawdza się mierząc zasięg do 30-40cm. Jak większość czujników tego typu, posiada diodę nadawczą, odbiornik podczerwieni, oraz procesor generujący falę dla diody, sprawdzający stan czujnika i zmieniający stan na wyjściu. Czujnik powinien być zasilany napięciem 4,5-5,5V, czyli napięciem zasilania dla procesorów Atmel AVR. Na wyjściu oddaje sygnał cyfrowy o stanach 5V/0V. Wymiary czujnika zamontowanego w obudowie, którego montaż jest opisany poniżej wynoszą 20x16x14mm. Do porównania wielkości posłuży 20-groszówka, która wiernie będzie towarzyszyć do końca opisu. Schemat, części Do budowy czujnika użyto następujących części: IC1 - procesor ATtiny13 - jeden z najmniejszych procesorów AVR z możliwością programowania ISP. SFH5110 36kHz - odbiornik podczerwieni. Posiada większą czułość niż popularniejsze odbiorniki TSOP, jest w małej obudowie oraz nie blokuje się przy dłuższym występowaniu stanu wysokiego na wyjściu, jak to robią czujniki TSOP - pozwala to na szybsze pomiary. LED1 - dioda nadawcza IR 3mm. C1 - kondensator 100nF filtrujący zasilanie czujnika. C2 - kondensator 10uF lub więcej, filtrujący zasilanie. Przy testach kazało się, że dopiero zastosowanie kondensatora elektrolitycznego o większej pojemność eliminuje zakłócenia w stopniu zadowalającym. R1 - rezystor podciągający linie reset procesora. R4 - rezystor podciągający linię sygnałową czujnika. R3 - rezystor przez który zasilany jest odbiornik, filtruje napięcie razem z kondensatorem C2. R2 - rezystor ograniczający prąd diody, odpowiedzialny za zasięg. W fazie testów należy zastąpić go potencjometrem o wartości najlepiej 2,2k. Po ustawieniu zasięgu można zmierzyć wartość potencjometru i zastąpić go rezystorem o przybliżonej wartości. ZAS - zasilanie, można użyć przewodów bądź wtyczki. SFH5110 - nota katalogowa ATtiny13 - nota katalogowa Podliczenie kosztów części: ATiny13 ~ 6,50zł SFH5110 ~ 4zł dioda nadawcza 3mm ~ 0,50zł rezystory, kondensatory ~ 2zł obudowa ~ 1,20zł Razem: około 13-15zł Program UWAGA! Program i jego skompilowane wersje zostały napisane dla odbiornika pracującego na częstotliwości 36kHz oraz procesora pracującego przy domyślnym taktowaniu - 1,2MHz. Przy użyciu odbiorników SFH pracujących na innych częstotliwościach należy zmodyfikować program według opisu w listingu/pliku BAS. Zalecam zwiększenie taktowania do 9,6MHz - również wtedy wymagana jest modyfikacja programu według opisu. Przed montażem należy wgrać do procesora program. Skompilowane wersje programu dostępne są w załączniku. Listing programu: $regfile = "attiny13.dat" 'procesor Attiny13 $crystal = 1200000 'niższe taktowanie, CKDIV=0 'przy zmianie CKDIV = 1 'zmienić wartośc na 9600000 Config Portb.4 = Output 'output czujnika Config Portb.1 = Output 'OC0B, wyjście generujące 'częstotliwość dla diody Config Portb.2 = Output 'wyjście sterujące diodą Config Pinb.3 = Input 'czujnik podczerwieni, SFH Ocr0b = 16 'obliczyć z działania: 'taktowanie / (częstotliwość * 2) 'np. 1200000 / (36000 * 2) Ocr0a = 16 'j.w. Tccr0a = &B00010010 'rejestry timera, przepisać Tccr0b = 1 'j.w. Set Portb.3 'rezystor podciągający 'wejście czujnika Do 'pętla If Pinb.3 = 1 Then Portb.4 = 1 'warunki na widzenie czujnika If Pinb.3 = 0 Then Portb.4 = 0 Delay 'opóźnienie zmniejszające 'zakłócenia Loop 'koniec pętli End 'koniec programu Uruchomienie Po zaprogramowaniu procesora należy złożyć czujnik według schematu i sprawdzić poprawność jego działania, oraz ustawić jego zasięg. Montaż Czujnik można zmontować w dowolny sposób zgodny ze schematem. Ja natomiast przedstawię wersję montażu, która powinna najbardziej zainteresować tych bardziej wymagających konstruktorów. W celu maksymalnego zmniejszenia wymiarów czujnik zlutowany został "w pająku" i zamocowany na stałe w obudowie. Wyprowadzenia za pomocą listwy goldpin umożliwiają wlutowanie go w płytkę drukowaną. Jako obudowy nadają się małe plastikowe obudowy "do zalania", po drobnych modyfikacjach będziemy mieli gotową obudowę czujnika. Ponieważ kupowałem obudowy przed montażem, kupiłem dwie, większa i mniejszą... ...ponieważ stwierdziłem, że jak nie zmieszczę czujnika w mniejszej obudowie, to nie nazywam się KD93, lecz na wszelki wypadek na pewno zmieści się w tej większej. Ale jednak jestem KD93 Mając zaprogramowany procesor, sprawdzone działanie i ustawiony zasięg możemy przystąpić do lutowania. Na wstępie zaznaczę, że lutowałem tym sposobem pierwszy raz. Nie warto ucinać nóżek, jeśli nie jesteśmy pewni że nic już do nich nie przylutujemy, wtedy dopiero odcinamy. Lepiej nadały by się rezystory 0,125W, ale musiałem poradzić sobie z tym co miałem. Trzeba bardzo pilnować, aby nie zewrzeć przypadkiem wyprowadzeń - przy montażu o to nie trudno, a po zamontowaniu czujnik powinien być już bezpieczny. Nieocenione usługi odda nam 3 ręka, jak widać moja już mocno zużyta (tak, myłem lusterko przed robieniem zdjęcia): Opisze mniej-więcej kolejność, w jakiej można lutowa elementy aby uzyskać małe wymiary. Przed montażem można odciąć 2 piny procesora, z których nie będziemy korzystać, byle uważnie żeby się nie pomylić. Ja tego nie zrobiłem i potem żałowałem. Jako pierwsze operacje należy przylutować kondensator 100nF do listwy goldpin, rezystor podciągający do procesora oraz kondensator do SFH i tu uwaga! Kondensator nie może być przylutowany pod ani obok SFH, powinien być przylutowany od dołu po skosie. Dokładniej wytłumaczą to może następne zdjęcia. Po tych operacjach powinniśmy uzysakć taki oto efekt: Następnie będziemy przymocowywać odbiornik do procesora. Najpierw przylutujemy zasilanie +5V SFH do zasilania +5V procesora przez rezystor 100Ω. W kolejnym kroku przylutujemy rezystor 100k. Najpierw przyczepiamy go do pinu zasilania +5V, drugie wyprowadzenie do wyjścia OUT odbiornika i dalej, górą, do pinu 2 procesora. Dołem natomiast prowadzimy linię masy odbiornika i przylutowujemy do procesora. Odbiornik jest przylutowany. Później przylutowujemy diodę z rezystorem, powinna się znaleźć jak najbliżej procesora. Od tyłu przylutowujemy goldpin z kondensatorem. Niestety nie mam zdjęć z tych etapów, ale mam nadzieję że każdy kto będzie myślał przy montażu i robił to uważnie poradzi sobie. To jest koniec lutowania. Na diodę zaciskamy rurkę termokurczliwą czarną, bez niej odbiornik będzie cały czas odbierał sygnał i czujnik nie będzie działał prawidłowo. Rurka powinna kończyć się nie bliżej niż najdalszy kraniec czujnika SFH, gdy będzie zbyt krótka po zamontowaniu w obudowie światło będzie się obijać od jej wewnętrznej części i padać od razu do odbiornika - tak, dobrze się domyślacie, czujnik nie będzie działał prawidłowo. I mamy ukończoną część elektroniczną czujnika. Drżącymi rękami możemy ją wetknąć do płytki stykowej i sprawdzić czy działa. Jeżeli nie, to coś spartaczyliśmy przy lutowaniu, możemy poszukać wtedy błędu miernikiem. Wyjścia mogą być tylko 2: płaczemy, bo straciliśmy kilka złotych i kilkanaście minut, albo przechodzimy do części dalszej. Zakładając że zbitek różnych elementów elektronicznych który będziemy chcieli nazwać czujnikiem i umiejscowić w robocie działa, to przygotowujemy sobie obudowę. Wiercimy z przodu otwory na SFH i diodę, a z tyłu wycinamy miejsce na goldpin: Próbujemy zmieścić elektronikę w obudowie, uważnie żeby nie odgiąć i nie zewrzeć wyprowadzeń. Jeżeli się mieści, to na sucho zamykamy obudowę i próbujemy uruchomić, w celu uniknięcia niespodzianek. Jeżeli nie działa, w sensie czujnik cały czas widzi przeszkodę, to znaczy że obudowa odbija światło do wewnątrz, należy zwiększyć otwór na diodę lub wydłużyć rurkę termokurczliwą. Jeżeli działa, to przygotowujemy Hot Glue. Tak, historyczny moment, KD93 zachęca do stosowania Hot Glue. Wkładamy elektronikę do środka, wierzący mogą się przeżegnać, zalewamy obficie klejem, zamykamy wieczko i cieszymy się że nigdy więcej nie zobaczymy już tego paskudztwa jakim była część elektroniczna. Po krótkim czasie podłączamy czujnik. Jeżeli wszystkie powyższe punkty wykonaliśmy prawidłowo, to cieszymy się z estetycznego, działającego czujnika w niewielkiej obudowie po niższych kosztach. Hot Glue powinien uchronić układ przed zwarciami. Montujemy czujnik w robocie i jeżeli jest to robot sumo, to składamy jakąś ofiarę żeby przebłagać los, aby na przeciwnika nie trafił nam się Rico czy Black Hole które rozniosą czujniki razem z robotem lub bez niego Dalsze prace I tu proszę użytkowników o pomoc. Temat czujników montowanych własnoręcznie jest bardzo rozległy, można używać różnych odbiorników, różnych ilości diod, części przewlekanych, SMD, różnych procesorów. Nie wiem tylko, czy w ogóle znajdzie się zapotrzebowanie na takie czujniki, a jeżeli nawet to nie wiem na jaki rodzaj. Jeżeli ktoś byłby zainteresowany czujnikiem innym niż ten tutaj zaprezentowany, to bardzo proszę o propozycje. Jeżeli ktoś odczuwa jakieś braki w tym projekcie, to również proszę o napisanie tego. Świadomie nie projektowałem płytki drukowanej, ponieważ uważam, ze ten czujnik największe swoje zalety pokazuje w małej obudowie. Jeżeli ktoś zgłosi zapotrzebowanie na projekt płytki to go wykonam. Porównanie Możemy porównać teraz taki oto "nasz czujnik" z czujnikiem Sharpa w podobnej kategorii, czyli np. Sharp 340K. Sharp mniejsze wymiary większa dokładność (nie testowałem, ale zakładam że tak) większa cena Czujnik DIY: niższa cena większy zakres możliwych zasięgów większa obudowa trzeba się przyłożyć i zrobić samemu I wydaje mi się że tu bym kończył moje wypociny. Mam nadzieję, że ktoś skorzysta z tego projektu, zmontuje i że nie będzie z nimi większych problemów, zarówno przy montażu jak i użytkowaniu. Projekt nie był sprawdzany na innych podzespołach niż wypisane oraz znajdujące się na schemacie. _proj program.rar
  50. 19 punktów
    Przedstawiam państwu wersję β (beta) projektu o oznaczeniu T102. Celem projektu było udowodnienie że możliwe jest zbudowanie modułów umożliwiających zdalne sterowanie dalekiego zasięgu (minimum 5-8km max - globalny), mieszcząc się w kwocie 15PLN (elektronika) i zapasie dostępnych w domu każdego majsterkowicza części. Do tego celu zostały użyte następujące rzeczy: Moduł sterująco-odbiorczy (Attiny2313, MT8870, L293D) 2 przerobione serwomechanizmy modelarskie. Zużyty łańcuch i zębatki rowerowe. 2 PMR (private mobile radio [krótkofalówki]) 4xAA 2700mAh 4xAAA 900mAh Korpus wykonany z aluminium łączony stalowymi śrubami Korpus po zmontowaniu prezentuje się następująco: --------------------------------------------------------------------------------------- Elektronika. Schematy: Układ sterujący: Płytka Ukł. sterującego: Dekoder DTMF: Płytka dekodera: Mostek H: schemat: Układ: Kilka słów o zasadzie działania. Do przesyłania komend wykorzystujemy system DTMF (ang. Dual Tone Multi Frequency) - który wykorzystując modulację MFSK (ang. Multiple frequency-shift keying) kluczuje się dwie częstotliwości. Sygnał DTMF jest stworzony do przesyłania torem audio - wobec czego idealnie nadaje się do przesyłania wszystkimi służącymi do tego celu urządzeniami (telefony, krótkofalówki, radia CB, VoIP itp.) W mojej platformie użyłem dwie krótkofalówki, które praktycznie nie nadają się do rozmawiania (straszna jakość rozmowy). W ten sposób dostały one nowe życie, bo sygnał DTMF przesyłają wyśmienicie. Jako nadajnik pracuje zestaw dwóch urządzeń - krótkofalówka i generator dtmf - telefon nokia 6120. Połączone są one wyjściami zestawów słuchawkowych (przewód jack2.5-jack2.5 podłączony do głośnika ze strony nokii i mikrofonu ze strony krótkofalówki) Wykorzystując wszystkie urządzenia audio możemy miedzy innymi nagrywać trasę robota edytować itp, itd Dekodowaniem DTMF (dźwięku klawiatury nokii) zajmuje się układ MT8870 Na końcówce StD układu MT8870 pojawia się stan wysoki w momencie odebrania i zdekodowania prawidłowego kodu DTMF na końcówkach q1-q4 układu zostaje zatrzaśnięty kod odebranego znaku. Czyli: Jeżeli naciskamy guzik w telefonie - na końcówce StD pojawia się 1 a na końcówkach q1-q4 jest np 1001 jeśli puszczamy guzik w telefonie na StD pojawia sie 0 a na końcówkach q1-q4 jest np 1001 Przetworzeniem tych pięciu zer i jedynek i zamienianiem na ruch zajmuje się ATtiny 2313 Robi to on w następujący sposób: $regfile = "2313def.dat" $crystal = 8000000 'określenie uC '$noramclear Config Portb.3 = Input Config Portb.2 = Input Config Portb.1 = Input Config Portb.0 = Input Config Portd.6 = Input Config Portd.2 = Output Config Portd.3 = Output Config Portd.4 = Output Config Portd.5 = Output Motor_lp Alias Portd.2 'Określenie portów sterujących silnikami przez mostek Motor_lt Alias Portd.3 Motor_pp Alias Portd.4 Motor_pt Alias Portd.5 'Określenie portów wejściowych (dekoder) Sygnal Alias Pinb.3 A Alias Pinb.2 B Alias Pinb.1 C Alias Pinb.0 D Alias Pind.6 'Polecenia wydawane na podstawie stanów wejściowych: Do If Sygnal = 1 And A = 0 And B = 0 And C = 1 And D = 0 Then Gosub Prosto Elseif Sygnal = 1 And A = 0 And B = 1 And C = 1 And D = 0 Then 'Skręć w lewo Gosub Prawo Elseif Sygnal = 1 And A = 0 And B = 1 And C = 0 And D = 0 Then 'Skręć w lewo Gosub Lewo Elseif Sygnal = 1 And A = 1 And B = 0 And C = 0 And D = 0 Then 'Skręć w prawo Gosub Tyl Elseif Sygnal = 0 Then Gosub Stopp End If Loop Prosto: 'Tryby pracy silników dla poszczególnych ruchów Motor_lt = 0 Motor_pt = 1 Motor_pp = 0 Motor_lp = 1 Return Lewo: Motor_lt = 1 Motor_pt = 1 Motor_pp = 0 Motor_lp = 0 Return Prawo: Motor_lt = 0 Motor_pt = 0 Motor_pp = 1 Motor_lp = 1 Return Stopp: Motor_lt = 0 Motor_pt = 0 Motor_pp = 0 Motor_lp = 0 Return Tyl: Motor_lt = 1 Motor_pt = 0 Motor_pp = 1 Motor_lp = 0 Sam program jest podobny jak nie identyczny z najprostszymi line followerami - kilka stanów wejściowych steruje dwoma silnikami za pomocą mostka H. No i generalnie chyba tyle Do platformy planuje dołączyć komunikacje w drugim kierunku, za pomocą RC5 i podczerwieni - platforma jest królikiem doświadczalnym dla telekomunikacji (profil w technikum). Niedługo będzie to także robot - dzięki czujnikom sharpa umieszczonym z przodu i z tyłu za pomocą RC5 będzie wysyłał informacje o odległości przedmiotów od pojazdu a po dłuższej bezczynności sam spróbuje wyjechać z labiryntu. Na koniec jeszcze trochę zdjęć i trzy filmy. Wersja λ (alfa - dużo kabelków itp): [ Dodano: 13 Gru 09 12:28 ] Przy tworzeniu układu opierałem się na tym opracowaniu T102.zip
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...