Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'avr'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 246 wyników

  1. Witam. Dziś mam okazję zaprezentować Wam mojego pierwszego robota kroczącego "kardbarder". Jest to hexapod w najprostszym możliwym wariancie budowy robota kroczącego - na pokładzie znajdują się tylko trzy serwa. Projektowanie: Nogi oraz platformy robota zostały narysowane w programie Corel Draw. Elementy mechaniczne ze względu na swoją prostotę nie były projektowane - robione na bieżąco. Jedynie mechanizm poruszania środkowych nóg przeszedł wcześniejszą symulację w programie Working Model 2D. Elektronika robota to płytka edukacyjna mojego wykonania. Program został napisany w języku BASCOM. Budowa: Robot - jak nazwa wskazuje - wykonany jest z tektury. Jest to ~ dwumilimetrowa tektura pochodząca z recyklingu - mianowicie są to okładki zeszytów. Materiał bardzo łatwy w obróbce a po nasączeniu klejem również bardzo wytrzymały i sztywny. Nogi wykonane są z dwóch warstw sklejonych ze sobą co daje dużą twardość a co za tym idzie stabilność robota. Elektronika: Mózgiem robota jest płytka wykonana dużo wcześniej - służąca w wielu projektach. Na pokładzie znajdują się: stabilizator napięcia TS7805, uC Atmega8 taktowany zewnętrznym kwarcem 12MHz, mostek h - L293D, kilka złącz oraz dodatków, Zasilanie: dwa akumulatorki Li-Ion połączone szeregowo. Do poruszania nóg wykorzystane zostały dwa przerobione serwa - tylko to było pod ręką. Pozycje nóg odczytywane są za pomocą potencjometrów i przetwornika ADC Czujniki: Robot został wyposażony w jeden czujnik odbiciowy własnej konstrukcji - zasięg: do 30 centymetrów w zależności od koloru i powierzchni przedmiotu. Filmik z działania robota:
  2. Witam. Chciałbym zaprezentować wam mojego robota typu Line follower . Powstał on przy waszej pomocy udzielonej w tym temacie. Został on zbudowany ok. 2,5 miesiąca temu. Jest to moja pierwsza tego typu konstrukcja i dzięki niej zdobyłem nową wiedzę i umiejętności oraz nabrałem ochoty do budowy kolejnego robota w tej kategorii. Mechanika Podwozie robota stanowi laminat 1,5mm. Konstrukcja napędzana jest dwoma silnikami HL 149 6V z przekładniami 10:1. Koła to Lego Technic o średnicy 43mm koloru czarnego, które wymagały rozwiercenia otworu na oś silnika ( co szczerze mówiąc nie wyszło mi za dobrze). Przód jest oparty na dwóch diodach led. Diody led podpierające przód Nietypowo rozwiązane zostało umocowanie silników. Początkowo planowałem wykorzystać otwory do tego przeznaczone znajdujące się przy osi silników, ale przy głębszym wkręcaniu śrubek blokowały one przekładnie i tak uszkodziłem 2 silniki. Wykorzystałem więc plastikowe uchwyty przeznaczone do montowania tylnej lampki rowerowej do ramy roweru. Pokażą to zdjęcia poniżej: Płytka z elektroniką przymocowana jest na 2,5cm tulejach dystansowych, natomiast akumulator znajduje się między elektroniką, a podwoziem ( przyczepiony za pomocą rzepu). Widoczne mocowanie płytki z elektroniką i akumulator Niestety nie znam wagi robota, bo nie mam żadnej wagi kuchennej w domu, ale każdy, kto miał te silniki w ręku wie, że nie są tak lekkie jak pololu . Elektronika Mózgiem robota jest popularna atmega8 w wersji DIP ( tak jak pozostałe elementy) bez dodatkowego zewnętrznego kwarcu. Sterownikiem silników jest układ scalony l293D - zdaje sobie sprawę, że pobór prądu silników przy zatrzymanym wale przewyższa maksymalny prąd mostka, dlatego podczas testów pilnowałem, by nie uderzał w przeszkody, a teraz to się praktycznie nie zdarza, o ile robot zostanie puszczony na zamkniętej trasie ( bez początku i końca). Na płytce znajduje się też tsop do uruchamiania robota, stabilizator dla elektroniki oraz włącznik całego zasilania. Silniki są zasilane oczywiście prosto z akumulatora, którym jest pakiet modelarski litowo polimerowy firmy Dualsky o napięciu 7,4V i pojemności 400mAh. Jako czujniki linii służy 5 sztuk transoptorów odbiciowych CNY70. Są o 3mm niższe od diod podpierających przód robota i właśnie type dzieli je od podłoża. Schemat Zamiast ktirów widocznych na schemacie użyte zostały CNY70 Płytka główna Płytka z czujnikami - widok od dołu Akumulator ładowany jest zazwyczaj do ponad 8V, dlatego po odjęciu spadku napięcia na mostku H silniki otrzymują mniej więcej tyle, ile potrzebują - 6V. Kondensatory filtrujące na stykach silników Program Program jest napisany w Bascomie. Czujniki są podłączone pod kanały ADC, co bardzo ułatwia dobranie granicy wykrywalności linii. Po nieudanej próbie zaimplementowania członu P wykorzystałem to, co dotychczas umiałem, czyli same if'y. Myślę, że ten robot posłuży jeszcze jako platforma do okiełznania całego regulatora PiD, albo przynajmniej wyżej wymienionego P. Nie będę udostępniał kodu ze względu na to, że jest on prymitywny, zagmatwany, nieczytelny, bez komentarzy i trudno, by inni początkujący coś z niego wynieśli. Zakończenie Warto wspomnieć, że są to moje pierwsze wytrawione płytki. Jestem z nich bardzo zadowolony i już nie powrócę do płytek uniwersalnych . Konstrukcje uważam za dobre wypełnienie luki pomiędzy konstrukcjami na przerobionych serwomechanizmach modelarskich, a tymi na silnikach pololu. Postaram się przybliżyć teoretyczne koszta: 1. silniki 30zł 2. akumulator 22zł 3. atmega8 +l293d 11zł 4. 5x CNY70 14zł 5. Laminat 8zł 6. koła 12 zł 7. Reszta ok. 8zl. Razem: 105zł + ew. przesyłki. Akumulator może posłużyć ( i posłuży) też w innych konstrukcjach. Koszty są też uzależnione od tego, co mamy już w domu. Ps. Pewnie niektórzy zauważyli na zdjęciach naklejkę z Cybair - tak, robot tam startował, ale przez błąd w algorytmie wypadał z trasy na kącie prostym. Błąd został znaleziony zaraz po zawodach i oczywiście zaraz usunięty. Niestety na samych zawodach nie miałem laptopa. Ps2. Tak, wiem... robot jest trochę zakurzony na zdjęciach Przepraszam was za to.
  3. 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.
  4. Przedstawiamy naszego pierwszego robota. Przygodę z robotyką zaczęliśmy 1 marca z zerową wiedzą na temat elektroniki i programowania. Po niespełna dwóch miesiącach wystartowaliśmy na pierwszych zawodach w Gdańsku (TTR 2012). W przerwie między zawodami (Gdańsk-Poznań) robot został wyposażony w nową płytkę oraz pakiet Li-pol. Wykorzystując zaoszczędzone miejsce po bateriach R6 i płytce DIP udało się zamknąć wszystko pod daszkiem. Mechanika: -Korpus wykonany z laminatu, zlutowany i polakierowany, wszystko w kuchni studenckiego mieszkania. -Silniki: 4x Pololu 50:1 HP. -Koła: 4x Solarbotics RW2i, aktualnie silikonowe odlewy. Elektronika: -Czujniki 4x Sharp GP2Y0D810Z0F (10cm), 1x Sharp GP2Y0D340K (40cm). 3x TCRT7000 (czujniki linii). -Mikrokontroler Atmega 32 -Mostek L298 -Komparator LM339 -Zasilanie pakiet Li-pol Dualsky 7,4V 800mAh 20C. Wnioski: -Koła Solarbotics... Nędza. -Konstrukcja z opadającym grawitacyjnie klinem - bez szans na zwycięstwo z szybkimi przeciwnikami. -Zbyt wysoko położony środek ciężkości (w drugiej wersji poprawione). -Jeden mostek L298 to zbyt mało na cztery silniki. -Słaby program. -Plątanina kabli ujmuje wizualnie i praktycznie. Pomimo wielu niedociągnięć jesteśmy dumni ze swojej konstrukcji. W kwietniu wystartowaliśmy w zawodach, gdy na początku marca nie mieliśmy kompletnie pojęcia o podstawach elektroniki i programowaniu mikrokontrolerów. Z pewnością największym sukcesem robota jest masa wiedzy i doświadczenia, które pozwolił nam zdobyć. Mamy nadzieję, że następny zawodnik minisumo dostarczy również radości z wyników na zawodach. __________ Komentarz dodany przez: Treker Poprawiłem post zgodnie z wymogami działu (zdjęcie jako załącznik, brak grafik na początku, proszę o tym pamiętać następnym razem).
  5. Witam! Chciałbym wam przedstawić mojego drugiego robota klasy linefollower. Teraz jest on na trochę większym poziomie niż Wolverine. Ogólnie koncepcja nowego robota powstała po zawodach T-Bot, na których zobaczyłem po raz pierwszy robota Botland Teamu. Decyzja padła szybko i była jednoznaczna. Zamawiam turbinę. I tak z kolegą, Harnasiem na następny dzień po powrocie do domów z zawodów zamówiliśmy potrzebne nam rzeczy z HK. I tutaj był największy problem. Na turbinę czekałem praktycznie 3 miesiące... No ale... teraz już robot ma wszystko co było przewidziane. Tutaj również dodam że to moja ostatnia konstrukcja z wykorzystaniem AVRów. Na filmie nie widać aby Turbinowiec był szybki lecz PWM wynosi już 230/255, a winą takiej jazdy jest przysysanie trasy do wirnika turbiny przez co hamuje i to dość znacznie. Postaram się nagrać coś na innym podłożu lub zawodach. Elektronika Robot posiada 2 mikrokontrolery, zaraz mi ktoś powie z oburzeniem " po co?! " Już tłumaczę. ATMega16 odpowiedzialna jest tylko i wyłącznie za odczyt z komparatorów, za obliczenia dotyczące regulatora PD oraz wysterowanie silników. Natomiast ATMega8 obsługuje TSOP'a, obsługuje sterownik do napędu tunelowego, załącza diody LED znajdujące się pod robotem oraz wysyła sygnały do "głównego" procka, no i oczywiście obsługa przycisków jest na nim ATMega16 jest taktowana kwarcem 16 MHz, natomiast ATMega8 napędzana jest z wewnętrznego oscylatora 1 MHz. Nie ma potrzeby „rozpędzania go” do większych prędkości. Mostki H w robocie to nic innego jak już sprawdzone nie jeden raz TB6612FNG z którymi nigdy nie miałem problemów. Do stabilizacji napięcia logiki jest wykorzystany L7805AC2T, natomiast dla silników przetwornica LM2576S, również z nią nigdy nie miałem problemów, tylko raz poszła z dymem, ale spełniała moje oczekiwania Program Cały kod napisany w C. Powstał bardzo szybko i dobrze spisywał się dla prędkości rzędu 1,5m/s, gdy nie było turbiny. Teraz z turbiną muszę zmieniać współczynniki, ale kiedyś dojdzie do perfekcji tak jak Wolverine. Czujniki Transoptory to już wszystkim znane i myślę że lubiane KTIRy0711s, jest ich 16, ułożone w linie prostą. Myślałem nad dołożeniem jeszcze trzech czujników na około 3cm przed robota aby robot mógł szybciej hamować, ale zrezygnowałem z tego. Przy poprzedniej konstrukcji mówiłem że nigdy nie dam mniej niż 16 czujników, a będę dawał ich więcej. Niestety ale pozostałem przy 16 czujnikach. Myślę że można z nich wyciągnąć przyzwoitą rozdzielczość i nie ma potrzeby stosowania więcej. Sygnał analogowy wychodzący z czujników jest podawany na komparatory LM339 a następnie trafia już do ATMegi16. Robot ma również wyprowadzone pady dla sharpa 340k, ale nie jest zamontowany, gdyż nie było takiej potrzeby. Wątpię w jego przydatność na tym poziomie. Płytka PCB Robot składa się z jednej płytki pcb, z czarną soldermaską. Płytka wykonana w firmie Satland Prototype, która dała mi bardzo duży rabat. Laminat ma grubość 1,5mm. Zastanawiałem się długo nad zastosowaniem laminatu 1mm ale bałem się że pęknie pod wpływem działania turbiny. Silniki Tutaj nic specjalnego, Pololu 10:1 w wersji HP. Myślę że do takiej konstrukcji nic więcej nie potrzeba. Pod silnikami znajdują się podkładki z laminatu, niestety wycinane krzywo w domu i pomalowane czarnym sprayem, kompletnie zapomniałem o nich w czasie projektowania PCB. Napęd tunelowy Tutaj też bez żadnych nowości. Zgapiony EDF 27 wraz z rekomendowanym regulatorem do niego 10A. Przed zbyt mocnym wygięciem płytki chronią diody 3mm, laminat ma 1,5mm grubości więc nie powinien pęknąć, w sumie to musi wystarczyć. Programowanie Tutaj do obu procków zastosowałem 1 złącze 10 pinowe IDC w standardzie Kanda. Za pomocą zworki ustalam który procesor ma być programowany. Zworka przerywa sygnał SCK, co w zupełności wystarcza do wygodnego działania. Wyprowadzony jest także USART, ale tylko z ATMega16. Myślałem nad „takim czymś” do zmieniania współczynników za pomocą drugiego uC. Na razie składam następnego robota i za bardzo nie mam czasu się tym zająć. Tutaj starszy filmik, pierwszy jedzie Wolverine, później Turbinowiec bez turbiny https://www.youtube.com/watch?v=fq4pDa_FbLs&feature=my_liked_videos&list=LLLl83Q1iIMDCwv97ZFhlsrg Tutaj najnowszy filmik: __________ Komentarz dodany przez: Treker Usunąłem zbędne sztuczne łamanie linii.
  6. Witam wszystkich, chciałbym wam zaprezentować mojego pierwszego robota kategorii minisumo, którego zrobiłem 2 lata temu. Wystartował on w zawodach na Uniwersytecie Technologiczno - Przyrodniczym w Bydgoszczy. Wygrał tylko 2 rundy w całych zawodach. Chciaż dla mnie sam udział był już sukcesem. Elektronika Płytkę sterującą dostałem od uniwersytetu w Bydgoszczy. - 3x czujniki analogowe Sharp - zasięg 80cm, - 4x czujniki odbiciowe QRD1114, - akumulator 11,1V o pojemności 1500mAh Mechanika - 2x serwomechanizmy Towerdpro MG996R, które przerobiłem na silniki, - koła o średnicy 82 mm i szerokości 10 mm, - guma na kołach to owijka od rakiet tenisowych. Ogółem cały robot wykonany jest z aluminium. Na zawodach robot walczył pod nazwą "Obrowianek", była to nazwa tymczasowa, potem uległa zmianie. Minusy konstrukcji: zbyt wysoki, zbyt wolny, zbyt słaba przyczepność, wadliwy program. Plusy: pierwsza konstrukcja - zakończona pomyślnie, obudowa użyta jako radiator, przez co dobrze oddawał ciepło, chyba solidnie zrobiony, gdyż na zawodach nie miał żadnych usterek Filmik z zawodów:
  7. Po długim czasie postanowiłem w końcu opisać szerszemu gronu moją pierwszą poważną konstrukcję (pomijając LFa sprzed roku, robiącego teraz za płytkę uniwersalną z przetwornicą). Postaram się zgrubnie opisać konstrukcję, a szczególny nacisk położyć na szereg popełnionych błędów i spostrzeżeń powstałych podczas konstrukcji i programowania. Robot "IPreferPI" powstał w ramach warsztatów rekrutacyjnych Koła Naukowego Robotyków KoNaR na PWr. Gdy zaczynałem nad nim pracę, Devil jeszcze nie istniał, a inne myszy startujące w zawodach (chyba w Krakowie już wtedy była kategoria MM) przeważnie obijały się o ściany i raczej do żwawych nie należały. Celem projektu było... cóż, skopanie im tyłków. Dlatego też w założeniach miała to być lekka, zwrotna i szybka mysz o sensoryce, napędzie i płynności ruchów (choć niekoniecznie prędkości) robotów japońskich. Częściowo udało się to osiągnąć, lecz w trakcie programowania trafiłem na problem z enkoderami, którego nie udało się rozwiązać - szczegóły niżej. Mechanika Cała mechanika oparta jest o płytkę laminatu grubości 1,5mm. Bezpośrednio do niej przykręcone się silniki, od spodu na taśmę izolacyjną przyklejona jest kulka podporowa. Z powodu zastosowania enkoderów magnetycznych mocowanych na zewnątrz kół konieczne było wyrzeźbienie odpowiednich stelaży. Magnesy zostały wklejone w "kołpaki" wycięte z laminatu, a te przyklejone kropelką do felgi. Mimo że wszystko robione było na oko - magnesy zostały umieszczone idealnie nad środkiem enkodera i nie przemieszczają się w trakcie obrotu koła. Montaż kulki podporowej Szczegóły montażu enkodera W teorii jest to konstrukcja bardzo prosta, ale jednak popełnionych zostało sporo błędów: [*]nie przewidziano miejsca na otwory pod śruby mocujące kulkę podporową, przez co jest ona przyklejona taśmą izolacyjną. Ma to też swoje zalety - mocowanie takie dobrze tłumi drgania i ewentualne nierówności podłoża; [*]diody IR oraz fototranzystory użyte w roli czujników odległości wychodzą poza obrys płytki, przez co każde zderzenie ze ścianą, których ciężko uniknąć podczas początkowego pisania oprogramowania robota, skutkuje ich wyginaniem i koniecznością ponownego ustawiania w poprawnej pozycji; [*]tylna oś została umiejscowiona za daleko względem środka robota, przez co czasem podczas robienia obrotu o 180° robot zahacza przodem o ściankę - no i mamy bubę opisaną wyżej, albo po prostu nie robi całego zwrotu; [*]nie przemyślano sposobu wygodnego i bezpiecznego mocowania ogniw dostarczających zasilania - z pomocą znów musiała ruszyć taśma izolacyjna; [*]nie przewidziano mechanicznego wyłącznika odcinającego zasilanie, zgodnie z naszą akademikową tradycją uznanego za zbędny - a potem trzeba się było szarpać z kablami. Robot napędzany jest przez silniki Polulu HP z przekładnią 30:1, jeździ na oponach Solarbotics, które mi akurat bardzo się podobają (choć musiały zostać przyklejone do osi klejem na gorąco, bo firmowa śrubka się luzuje i generalnie jest beznadziejna). Elektronika Silniki zasilane są bezpośrednio z baterii. Cała logika oraz diody IR dostają 5V ze stabilizatora LM1117. W układzie wydzielone zostały 3 pola masy - cyfrowa (procesor i logika mostka H), analogowa (diody sygnalizacyjne i czujniki) oraz przeznaczona dla silników. Łączą się one tuż przy baterii i kondensatorze 220uF. Całość działa pod kontrolą ATMegi1284P. Wersja -4 głównie z racji na przerwania zew. na wszystkich pinach, a pamięci taki ogrom, gdyż inne były w trakcie konstrukcji niedostępne. Mikrokontroler taktowany jest przez kwarc 20MHz. Mysz wyposażona została w odbiornik podczerwieni TSOP4840 umożliwiający zdalny start/stop. Bardzo udanym pomysłem było wyprowadzenie złącza interfejsu UART, który poprzez moduł BT został wykorzystany do bezprzewodowej kontroli myszy w trakcie pisania oprogramowania i pierwszych chwil w labiryncie - bardzo polecam takie rozwiązanie, choć niestety nie da się w ten sposób wizualizować danych w matlabie (po prostu nie da się wykorzystać połączenia COM tworzonego przez BT w komputerze - potwierdzone przez pracownika na forum Matlaba). IPreferPI z zainstalowanym modułem BT Sensory zostały oparte na bazie diod IR SFH4550 oraz fototranzystorów BPV11. Diody uruchamiane są impulsowo poprzez układ ULN2003. Rozwiązanie to jest wyjątkowo skuteczne - byłem zaskoczony jak czysty, niezaszumiony i łatwy w interpretacji daje to odczyt. Rezystory między emiterami fototranzystorów a masą zostały dobrane doświadczalnie i z pewnością nie jest to 470Ohm jak na rysunku poniżej - zatrzymałem się chyba w okolicach pojedynczych kiloomów, nie mam teraz myszy pod ręką, żeby to sprawdzić. Diody IR połączone są bezpośrednio z driverem, bez oporników - zapalane są na ułamki sekund, a pozwoliło to na zwiększenie odległości i czułości czujników. Wykorzystane enkodery to AS5040 firmy AMS. Mysz zasilana jest z dwóch ogniw LiPo kupionych kiedyś-gdzieś o pojemności 250mAh. Są wystarczające do dość długiego szperania po labiryncie, a ważą niewiele i zajmują mało miejsca. Schemat ideowy elektroniki robota Oprogramowanie I tu pojawił się problem. W skrócie - ATMega najwyraźniej nie jest w stanie wyrobić się z liczeniem impulsów z enkodera. Poniżej zamieszczam najlepszy kod, jaki byłem w stanie wymyślić, ale nadal nie pozwał on na poprawną obsługę enkoderów. Objawy były następujące - przy zadaniu przejechania np. 1000 tików enkodera z prędkością powiedzmy 250 tików na sekundę robot przemieszczał się o 50 jednostek. Gdy natomiast miał przemieścić się o 1000 tików, ale z prędkością 500t/s, to jechał oczywiście szybciej, ale na odległość znacznie większą - np. 75 jednostek. Wniosek jest prosty - im szybciej jechał robot, tym więcej tików zostawało pominiętych, przez co kontrola odległości ze zmienną prędkością jazdy była niewykonalna. Byś może dałoby się to rozwiązać wykorzystując interfejs SPI w enkoderach, dokładając tam jakiś układ poboczny zajmujący się tylko obsługą enkoderów albo stosując inną sztuczkę, ale prawdę mówiąc po wykryciu źródła problemów zostałem bardzo zniechęcony do dalszej walki. Pomimo tych problemów udało się zaimplementować w miarę sensowne poruszanie się po labiryncie - chyba jedyny istniejący filmik zamieszony jest na dole. Ponieważ jednak z racji na problemy z enkoderami nie dało się polepszyć parametrów jazdy, np. wprowadzić łagodnego pokonywania zakrętów, pełen algorytm przeszukiwania algorytmu nigdy nie został do końca zaimplementowany. Zamiast tego zaczęła powstawać nowa konstrukcja, pozbawiona wszystkich wymienionych błędów, która mam nadzieję zawojuje RA2012 ISR(PCINT2_vect) // aktualna wartość enkoderów w globalnych int enkoderL, enkoderP { enkl = (PINC & (3 << 0)) >> 0; // enkodery podłączone do pinów 0,1,2,3 portu C enkp = (PINC & (3 << 2)) >> 2; // enkl - akt. stan lewego , penkl - poprzedni if(enkl != penkl) { if( (penkl & 1) ^ ((enkl & 2) >> 1) ) enkoderL--; else enkoderL++; } if(enkp != penkp) { if( (penkp & 1) ^ ((enkp & 2) >> 1) ) enkoderP--; else enkoderP++; } penkl = enkl; penkp = enkp; } Podsumowując, budowa IPreferPI przyniosła głównie olbrzymią dawkę doświadczenia jeśli chodzi o budowę, działanie i wymagania robota klasy MM. Plany były ambitne, rzeczywistość dość je unormowała, ale z pewnością całość pracy zaprocentuje w trakcie tworzenia TAU, myszy która już jest w budowie. Starałem się wspomnieć o wszystkim, co zasługuje na uwagę, ale chętnie odpowiem na wszelkie pytania i wysłucham krytyki Sabre Podążanie za kartką: Jedyny film z "labiryntu": Szczerzy kły!
  8. Witam! Po około 6 miesiącach walki z mikrokontrolerami nadszedł czas na budowę pierwszego robota w pełni programowalnego i z dobrym prockiem Jako, że z elektroniką mam 2 letnie doświadczenie to z tym nie miałem żadnych problemów, tak samo z PCB i zaprogramowaniem procesorka. Nazwa Janusz wzięła się od imienia mojego nauczyciela IT oraz elektromechaniki, od którego dostałem dwie 6 na koniec roku Płyta główna Procesorem sterującym jest Atmega8, jako mostek H został użyty L293D. Ów moduł został wyposażony także w 4 diody sygnalizujące stan pracy odpowiadającym im czujnikom. Każde wyprowadzenie procesora mające na celu zasilać (np. przetwornik ADC) jest filtrowane przez kondensator 100nF, więc tętnień raczej nie ma. To samo z mostkiem H - po 220µF na piny zasilania. Dodatkowym "bajerem" płyty głównej jest odbiornik kodu RC5, lecz jego "magia" zostanie wykorzystana dopiero wkrótce. Może wydawać się to wam dziwne ale ta dioda prostownicza obniża napięcie dla mikrokontrolera i logiki L293D. Kilka fotek: Moduł czujników Jako czujniki odbiciowe wykorzystałem 4x CNY70. Rezystory podciągające kolektory tranzystorów mają wartości 10kΩ, a rezystory ograniczające prąd diod mają wartości 220Ω. Niestety jeden z czujników nie działa i nie wiem dlaczego. Będę musiał go wymienić w najbliższym czasie. Kilka fotek: Podwozie Funkcję podwozia pełni zielony laminat szklano-eposydowy. Silniki to przerobione serwa HXT-900. Zasilanie to 4x bateria AA. Koło obrotowe kupione zostało w Obi, ale średnicy nie pamiętam. Funkcję kół pełnią nakrętki od słoików obklejone uszczelką do okien Fotka: Schemat Program ''''''''''''''''''''''''Konfiguracja'''''''''''''''''''''''' $regfile = "m8def.dat" $crystal = 12000000 'Konfiguracja przetwornika analog-cyfra (ADC) Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Konfiguracja sterowania sprzętowym PWM Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja portów Config Portd = Output Config Portb = Output 'Granica reagowania na linię Const Granica = 400 'Deklaracja nazw Led2 Alias Portd.7 Led3 Alias Portd.6 Led4 Alias Portd.5 Led5 Alias Portd.4 Silnik_lewy_a Alias Portd.3 Silnik_lewy_b Alias Portd.2 Silnik_prawy_b Alias Portd.0 Silnik_prawy_a Alias Portd.1 'Deklaracje zmiennych Dim Czujnik_lewy As Word Dim Czujnik_srodkowy_lewy As Word Dim Czujnik_srodkowy_prawy As Word Dim Czujnik_prawy As Word Start Adc Set Silnik_lewy_a Reset Silnik_lewy_b Set Silnik_prawy_a Reset Silnik_prawy_b 'Silniki włączone Pwm1a = 255 Pwm1b = 255 ''''''''''''''''''''''''Pętla główna'''''''''''''''''''''''' Do 'Każdowazowa konfiguracja czujników Czujnik_lewy = Getadc(2) Czujnik_srodkowy_lewy = Getadc(3) Czujnik_srodkowy_prawy = Getadc(4) Czujnik_prawy = Getadc(5) If Czujnik_srodkowy_lewy > Granica Then Pwm1a = 255 Pwm1b = 255 Led3 = 1 If Czujnik_srodkowy_prawy > Granica Then Pwm1a = 255 Pwm1b = 255 Led4 = 1 Elseif Czujnik_lewy > Granica Then Pwm1a = 0 Pwm1b = 255 Led2 = 1 Elseif Czujnik_prawy > Granica Then Pwm1a = 255 Pwm1b = 0 Led5 = 1 Else Pwm1a = 255 Pwm1b = 255 Led2 = 0 Led3 = 0 Led4 = 0 Led5 = 0 End If End If Loop End Jazda testowa Podziękowania Szczególne podziękowania za pomoc w budowie robota kieruję do użytkowników: RaV Nawyk Kosztorys (według cennika firmy LISPOL) Atmega8 - 8zł L293D - koło 4.50zł odbiornik RC5 - koło 3zł reszta elektroniki - koło 5zł laminat - 9zł koło obrotowe - koło 3zł 4x CNY70 - koło 12zł 2x Serwo HXT-900 - koło 30zł własna praca - bezcenne Mówiąc szczerze to po ukończeniu robota i jego zaprogramowanie przez kilka dni miałem z nim problemy, lecz dzisiaj się udało i zadziałał jak trzeba (oprócz prawego czujnika) . Po dniach roboty nie ma to jak satysfakcja . Tym bardziej, że mam dopiero 14 lat
  9. Witam, chciałem przedstawić mojego pierwszego robota Omijaka, jest to robot który ma za zadanie omijacz przeszkody.Posiada on 4 tryby omijania są one zmieniane mikroswitch-em: 1: Niezależnie który przycisk zostanie naciśnięty skręca w lewo 2: Jak wyżej lecz skręca tylko w prawo 3: Skręca w lewo gdy zostanie naciśnięty prawy przycisk, skręca w prawo kiedy zostanie naciśnięty lewy przycisk. 4: Losowy wybór skrętu W zależności który tryb jest aktualnie włączony zapala się jedna z 4 diod LED znajdujących się na tyle. Zbudowałem go z następujących części : - Atmega8 x1 - l293d x1 -mikroprzełącznik SPDT x2 -mikroswitch x1 -kilka rezystorów -kilka Led-ów -kilku kondensatorów -Stabilizator lm7805 x1 -złącze idc-10 x1 - płytki uniwersalne : UM0, kawałek UM-13B,kawałek UMLED330R -różne kabelki -koszyk na baterie 4x aa Napęd: Jako napęd wykorzystałem 2 serwa s3003 nałożyłem na nie kółka z jakiejś starej zabawki, jako kółko podporowe wykorzystałem najzwyklejsze z fotela obrotowego . Program : Program został napisany w Bascom Avr znajduję się w załączniku . podstawa: Całość została zbudowana na odpowiednio dociętym kawałku sklejki . Kilka Zdjęć i filmików, przepraszam za słabą jakość lecz posiadam tylko aparat i kamerę która znajduję się w telefonie (trochę dziwna sceneria lecz zdjęcia robiłem na balkonie żeby mieć jak najlepsze światło ) Zdjęcia : Filmiki : https://www.youtube.com/watch?v=zY0budVg13ghttps://www.youtube.com/watch?v=r1yWk4FJfEs https://www.youtube.com/watch?v=JfkM9YaD2d0 Jestem otwarty na wszystkie Rady i pouczenie lecz proszę też o wyrozumiałość bo jak wcześniej pisałem jest to mój pierwszy robot . Pozdrawiam . Program + schemat.rar
  10. Witam wszystkich, chciałbym Wam dzisiaj zaprezentować mojego pierwszego robota. Wstęp Swego czasu obejrzałem parę filmików na yt z ciekawymi konstrukcjami robotów, które wyglądem (a czasem zachowaniem) naśladują owady, zwierzęta lub obce formy życia, no i akurat mnie też nagle wzięło i postanowiłem też coś takiego zbudować. Gdy mój robot przybrał już ostateczną formę to uznałem, że podobny jest do jakiegoś pędraka czy czegoś w tym stylu . A że "Larwa" brzmi wdzięcznie więc wybór padł na nią. Szczegóły techniczne 1. Szkielet robota stanowią elementy wycięte z płyty 5mm wykonanej z tworzywa PETg, takie płyty są niestety bardzo niedostępne. Materiał ten jest przejrzysty jak szyba szklana, i jest bardzo wytrzymały, nie pęka i nie łamie się jak plexi, ma wysoką udarność. Do połączenia wyciętych elementów użyłem śrub i nakrętek samokontrujących M3 + podkładki, oraz kleju cyjanoakrylowego. Dodatkowo użyłem tzw. drutu pamięciowego (sprężynowego) jako części kończyn przednich i tylnych oraz krążki gumowe jako stopy. Elektronikę przymocowałem, obejmami, gumkami i malutkimi wkrętami. 2. Elektronika robota wygląda następująco: 2 przerobione serwa modelarskie Turnigy Tg9e do napędu przednich nóg; akumulator li-pol 7,4v Zippy 1000mAh 15C; ATmega162 - mózg robota ; stabilizator 7805; sterownik silników l293d; czujniki do wykrywania przeszkód CNY70; diody led białe jako oświetlenie przednie; diody zielona, czerwona i niebieska jako lampka rgb; buzzer do przyszłych zastosowań; wskaźnik napięcia akumulatora hextronik; różne rezystory, kondensatory itp. 3. Program sterujący robotem na razie raczkuje i wykonuje podstawowe funkcje jak chodzenie, wykrywanie i omijanie przeszkód oraz sterowanie lampką rgb. Będę starał się go rozwijać. Galeria Utworzyłem taki sam temat niedawno na elektrodzie ponieważ moje konto na forbot.pl nie chciało działać, nie mogłem się zalogować a w efekcie zablokowało się na dobre i dopiero niedawno admin mi je odblokował. Uznałem więc, że warto a nawet trzeba też tutaj pokazać. Czekam na Wasze komentarze .
  11. Witam, chciałbym zaprezentować Wam moją pierwszą konstrukcję: line followera o nazwie Autonom-1. Cel Celem projektu było zapoznanie się tematami natury elektroniczno-mechanicznymi podczas budowy robota. W głównej mierze miałobyć to poznanie mikrokontrolera, jego peryferiów oraz jego oprogramowanie. Jednak doświadczenia przy tworzeniu Autonoma-1 przerosły moje oczekiwania In plus naturalnie. Wnętrzności Robotem steruje popularny mikrokontroler atmega8 zasilany dwucelowym akulatorem li-pol redoxa 1300mAh poprzez stabilizator LM7805 (straszna grzałka ). Silniki HL149 , zasilane są bezpośrednio z akumulatora i sterowane poprzez mostek H oparty o kostkę L293D. Koła, tanie noname'y z modelarskiego, mają średnicę 62mm i jak na razie sprawdzają się przyzwoicie. Czujniki linii to 8 sztuk TCRT5000 w tandemie z komparatorami LM339N. Wsad napisałem w C. Logika sterowania silnikami to sam człon P. Na chwilę obecną nie byłem w stanie zmusić reszty do sensownego działania. Uruchomienie Pierwsze uruchomienie nie nastręczyło wielkich problemów. Przygotowałem prostą trasę i poszło: Przygotowałem więc bardziej skomplikowaną trasę i zaczęły się schody. Musiałem więc "nauczyć" robota jak radzić sobie z zakrętami 90st. albo szukać linii jak wypadnie z toru. Jako, że nowa trasa jest jest bardzo ciasna (w stosunku do rozstawu kół robota - ok. 17cm) uroiłem sobie, że pomoże skrócenie robota. To był błąd (nie dość, że lepiej nie jedzie, to wygląda gorzej ). Oto moja testowa trasa: Wnioski - Konstrukcja z pewnością jest w stanie jeździć szybciej. Muszę popracować nad programem, - Skrócenie robota nie było dobrym pomysłem, - Silniki są bardzo ciężkie, co utrudnia walkę z bezwładnością robota, - Jak na początek, przygotowałem zbyt ciasną trasę przygody z LFami. Autonom-1 to prosta konstrukcja. Nauczyła mnie wiele z tego co planowałem się dowiedzieć jak i tego czego się nie spodziewałem (pierwszy dwustronny termotransfer czy pierwsze SMD). Przyjemnie spędzając czas nauczyłem się wiele ciekawych i przydatnych rzeczy. peace! __________ Komentarz dodany przez: Treker Temat przeniosłem z konstrukcji początkujących. Poprawiłem sztuczne łamanie wierszy.
  12. Witajcie, postanowiłem opublikować moją pierwszą konstrukcję jaką jest robot "Bunio". W sumie nie wiedziałem w jakiej kategorii go sklasyfikować, ale jako że na zawodach wziął udział w kategorii "MicroMouse" to taką też wybrałem, choć robot ten to bardziej moja "platforma testowa" do różnych zabaw z robotyką, zanim zbuduję coś poważnego. Parę tygodni temu rozpocząłem swoją przygodę z robotyką od kupienia platformy miniQ z trobota. Zastanawiałem się, co kupić na początek, by nie utknąć już na wstępie na problemach natury mechanicznej. Uznałem, że ta platforma ma dobrą cenę w stosunku do możliwości - na dzień dzisiejszy kosztuje 89zł, a zestaw zawiera podróbki silników pololu 1:50 (zwykłe, nie HP), których cena jest wyższa niż cena całej platformy (podwozie, silniki, mocowania silników, metalowa kulka podporowa). Silniki mają parametry: - 13000 rpm @ No load - 50:1 Gear ratio - 260 rpm @ 6V - 40mA @ 6V - 360mA stall current @ 6V - 10 oz inches torque @ 6V Są więc nawet teoretycznie trochę lepsze niż pololu 1:50, ale oczywiście zdaję sobie sprawę, że pololu są bardziej trwałe niż podróbki. Jako zasilania robota użyłem 6 akumulatorków AA, co daje łączne napięcie około 7 - 8,4V, w zależności od naładowania. Mostek H to oklepany L293D - jako, że silniki nie są HP, to mogłem zastosować jeden, bez obaw o wysoki prąd zwarcia obu silników. Silniki zasilam bezpośrednio z baterii, bo biorąc pod uwage bardzo wysoki spadek napięcia na tym mostku, to akurat zasilanie jest odpowiednie przy 100% PWM. Proszę się nie śmiać z tych baterii - wiem, że to kiepski pomysł i że zajmują 3/4 całej objętości robota - w planach miałem użycie lipola 2S, ale w Polsce są wysokie ceny, a na HK przesyłka długo idzie, więc czekam na razie.. Tak więc paluszki to tylko zastępcze zasilanie. Swoją drogą, mogłem użyć AAA (tak jak w robocie 3pi), ale akurat miałem dużo w domu AA, a zmieściły się na robota Jako mikrokontrolera użyłem Atmegi8 (zamiennie z 328P, bo taką też mam, a jest kompatybilna) taktowaną 16 Mhz z wgranym bootloaderem arduino - od arduino zacząłem swoją przygodę z elektroniką, więc już z przyzwyczajenia najłatwiej mi się pisze w tym środowisku, z użyciem bilbiotek wiring. Atmega jest zasilana z tych samych paluszków co silniki, tylko że przez również oklepany regulator 7805. Kod (napisany w C++/arduino) wrzucam po UART do atmegi poprzez ft232rl. Tydzień po kupieniu platformy miniQ, zauważyłem, że na zawodach Robotic Tournament w Rybniku (do którego mam dość blisko) będzie rozgrywana konkurencja MicroMouse. W szczególności zainteresował mnie fakt, że można dotykać ścianek (rzadko spotykane w tej konkurencji), oraz, że labirynt będzie można przejść regułą lewej/prawej dłoni. Pomyślałem, że spróbuję zbudować prostego robota "wall-follower" który będzie używał czujników dotykowych (krańcówek) do wykrywania ścian. Kupiłem parę krańcówek i na 3 dni przed zawodami (!) zacząłem budowę i pisanie programu. Zastosowałem 3 krańcówki (pololu, długie)- jedną z przodu do wykrywania przedniej ściany, oraz dwie z lewej strony do kontrolowania dystansu od lewej ściany. Nie śmiać się, że są poklejone taśmą - były za krótkie i przedłużałem je jakimś drutem czy kawałkiem metalu który miałem pod ręką i kleiłem taśmą klejącą. W moim założeniach było, by robot w ogóle dojechał do mety, więc po prostu przechodziłem labirynt metodą lewej dłoni, tzn zawsze dotykając lewej ściany. 2 lewe czujniki miały pewną różnicę pomiędzy sobą w wychyleniu, zatem zasada poruszania się była bardzo prosta: - jeśli bardziej wysunięta krańcówka dotyka ściany, a mniej wysunięta nie, to jedź prosto - jeśli obydwie dotykają ściany, to odjedź trochę w prawo - jeśli tylko mniej wysunięta krańcówka dotyka ściany, to ostro kontruj w prawo (teoretycznie sytuacja ta nie powinna mieć miejsca) - jeśli żadna nie dotyka ściany, to skręcaj w lewo (albo za bardzo robot odjechał w prawo, albo skończyła się ściana - bez znaczenia) Oraz oczywiście: - jeśli przednia krańcówka dotyka ściany to się zatrzymaj i odwracaj w miejscu w prawo aż krańcówka przestanie dotykać ściany. Te parę prostych "IFów" w programie pozwoliło mi przejechać labirynt - niestety całego robota złożyłem i napisałem do niego program na dzień przed zawodami (chyba w okolicy godziny 21), więc praktycznie nie było czasu na testy różnych ustawień krańcówek, odgięcia ich w odpowiedni sposób, oraz na regulację PWM lewego i prawego silnika w zależności od rodzaju skrętu (skręt w lewo ma inne ustawienia PWM niz w prawo). No trudno, cieszyłem się, że w ogóle działa. Niestety na zawodach okazało się, że krańcówki są źle umiejscowione i robot ciągle się zacina w labiryncie, przez co musiałem go dotykać (jest to dozwolone w regulaminie - każde dotknięcie robota to 5sekund kary do końcowego czasu). Nie mniej jednak, udało się przejechać cały labirynt (2-krotnie, bo 2 rundy były) uzyskując czas 5 minut i 15 sekund za pierwszym razem i poniżej 5 minut za drugim razem (nie pamiętam dokładnie) dotykając robota (aż!) 5 razy (co ciekawe, blokował się zwykle w tych samych 5 miejscach w labiryncie, niezależnie skąd był start). 5 minut to dość wolno - był to najwolniejszy robot z wszystkich które wystartowały (zgłoszonych było 6, ale 1 nie dojechał, 1 się zepsuł zanim postawiono go w labiryncie, więc w praktyce były 4 roboty), ale zajął na zawodach 3 miejsce , pokonując robota Stuart, który był szybszy w drugiej rundzie od Bunia, jednak w pierwszej rundzie pogubił się w labiryncie (bo raz zahaczył o scianę) i nie udało mu się dojechać do mety. To po prostu pech Harnasia - szkoda, bo jego robot był zdecydowanie lepszy oczywiście, no ale przez to potknięcie, mój robot nie był najgorszy, a nawet dostał medal (oraz parę nagród) za zaszczytne 3 miejsce Podsumowując (dla tych co nie lubą dużo czytać ): Podwozie: DFRobot miniQ (trobot.pl) - silniki 1:50 (260rpm) (klon pololu) - koła 42mm (klon pololu) - podstawa 12x12cm (klon pololu) - metalowa kulka podporowa Elektronika: - Atmega8/328P (z bootloaderem Arduino), 16Mhz, 5V - Stabilizator 7805 - Mostek H L293D Czujniki: - 3 krańcówki pololu Zasilanie: - 6 x AA 1,2V Schemat: Zdjęcia: filmiki: Pierwsza jazda robota, po złożeniu i napisaniu programu: Podczas pierwszych testów na zawodach RT2012 w Rybniku (niestety filmiku z przejazdu eliminacyjnego/finałowego nie mam): P.S: Miałem dylemat czy umieszczać opis w "nasze sukcesy", czy w "konstrukcje początkujących", bo z jednej strony robot z bateriami AA zamiast lipolów, z prostymi krańcówkami, oraz płytką uniwersalną polutowaną na szybko średnio pasuje do profesionalnych konstrukcji w tym dziale, ale z drugiej strony w konstrukcjach początkujących 3/4 robotów to beam, często bez mikrokontrolera. Decyzję o "nasze sukcesy" podjąłem na podstawie argumentu, że robot wystartował w zawodach i nawet przejechał labirynt;) (P.S2: Wiem wiem, brakuje kondensatorów 100nF na silnikach, oraz między AVCC i AGND. Nie ma też dławika. )
  13. Witam. Chciałbym zaprezentować mojego robota klasy minisumo. Jest nim Lumia - dopisek (T30) oznacza że, był robiony 30 dni a T oznacza czołg (ang.TANK). A teraz fakty. Głównym celem było wykonanie robota minisumo z użyciem wyświetlacza i gąsienic o możliwie dobrych parametrach. Robot ma siłę wystarczającą aby przepchać 4kg mąki ziemniaczanej. Elektronika -Jako procesor wybrałem atmegę8 ze względu na wystarczającą ilość wejść-wyjść. -Niebieski wyświetlacza2x8. -2x silniki pololu 100:1. -2x 16-pinowe mostki H. -Gąsienice pololu. -Czujniki SHARP 40 cm. -1 czujnik koloru umieszczony na samum dole i połączony z ADC. -zasilanie to Pakiet Li-Pol 3E Model 11,1V 1000mAh 20C +kilkadziesiąt diod krzemowych 1A + stabilizator 5v 1A OBUDOWA I KONSTRUKCJA NOŚNA -Podwozie zostało wykonane z metalu aby całość dociążyć i aby było stabilnie. -Obudowa to laminat . Oprogramowanie Całość została napisana w bascomie (próbowałem w c ale nie mogłem tam wszystkiego spójnie połączyć więc wróciłem do bascoma). Co zostało wykorzystane: -PWM -ADC -przerwania -obsługa rc5 (chwilowo nie aktywna ale w kodzie jest) -uart Uzyskane funkcje: -inteligentne zarządzanie zasilaniem -funkcja ataku -funkcja ucieczki -3 tryby szukania przeciwnika -funkcja kalibracji czujników oraz zapisywanie danych w pamięci procesora -komunikacja z komputerem za pomocą uart -zdalne sterowanie przez rc5 -regulacja wypełnienia w pwm -pomiar napięcia -regulacja czułości czujników koloru ZAKOŃCZENIE Moim zdaniem całość wyszła świetnie.Obeszło się bez kleju ani innych.W następnej konstrukcji zastosuję więcej czujników silniejsze silniki.Na zdjęciach brakuje klapki opadającej która została zamontowana kilka dni później. Teraz kilka fotek:
  14. Znalazłem chwilę wolnego czasu, więc przedstawię moje odbijadło Noname'a. Robot powstał podczas świąt, jest efektem braku ciekawszych zajęć. Części do niego to zbieranina tego co znalazłem i mogło się nadać, więc koszty są równe teoretycznie 0. Ogólnie konstrukcja jest banalnie prosta, jedyna trudność to połapanie się na płytce stykowej ale jakoś się udało. Koszty jakie poniosłem to Li-Po, któremu przez przypadek na 0,5s złączyłem wyprowadzenia. Konstrukcja: Mikrokontroler: ATmega8 Mostek: L293D "Czujniki": dwie krańcówki Zasilanie: -Li-Po 2S 5000mAh - silniki -Li-Po 1S 900mAh - logika Podwozie: kawałek płytki PCV Silniki+koła: ~18V, wyciągnięte z robo-odkurzacza razem z przekładniami $regfile = "m8def.DAT" $crystal = 8000000 '\\\\\-------------------\\\Config///------------------/////' '---------------Motors---------------' Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output '----------------Krańc---------------' Config Pinc.1 = Input Config Pind.0 = Input '-----------------LED----------------' Config Portd.5 = Output Config Portd.7 = Output '\\\\\------------------\\\Aliasy///------------------/////' '---------------Motors---------------' M1a Alias Portc.5 M1b Alias Portc.4 M2a Alias Portc.3 M2b Alias Portc.2 '----------------Krańc---------------' Kr1 Alias Pinc.1 Kr2 Alias Pind.0 '-----------------LED----------------' Dioda1 Alias Portd.5 Dioda2 Alias Portd.7 '---------------Zmienne--------------' Dim A As Byte '\\\\\-----------------\\\Program///-----------------/////' Do If Kr1 = 1 And Kr2 = 1 Then Gosub Go End If If Kr1 = 0 Then Gosub Lewo End If If Kr2 = 0 Then Gosub Prawo End If If Kr1 = 0 And Kr2 = 0 Then Gosub Zawroc End If If Kr2 = 0 Then Waitms 1 If Kr1 = 0 Then Gosub Zawroc End If End If If Kr2 = 0 Then Waitms 2 If Kr1 = 0 Then Gosub Zawroc End If End If If Kr2 = 0 Then Waitms 3 If Kr1 = 0 Then Gosub Zawroc End If End If If Kr2 = 0 Then Waitms 4 If Kr1 = 0 Then Gosub Zawroc End If End If If Kr2 = 0 Then Waitms 5 If Kr1 = 0 Then Gosub Zawroc End If End If If Kr1 = 0 Then Waitms 1 If Kr2 = 0 Then Gosub Zawroc2 End If End If If Kr1 = 0 Then Waitms 2 If Kr2 = 0 Then Gosub Zawroc2 End If End If If Kr1 = 0 Then Waitms 3 If Kr2 = 0 Then Gosub Zawroc2 End If End If If Kr1 = 0 Then Waitms 4 If Kr2 = 0 Then Gosub Zawroc2 End If End If If Kr1 = 0 Then Waitms 5 If Kr2 = 0 Then Gosub Zawroc2 End If End If 'If Kr1 = 0 Then 'Waitms 6 'If Kr2 = 0 Then 'Gosub Zawroc 'End If 'End If 'If Kr1 = 0 Then 'Waitms 7 'If Kr2 = 0 Then 'Gosub Zawroc 'End If 'End If 'If Kr1 = 0 Then 'Waitms 8 ' If Kr2 = 0 Then ' Gosub Zawroc ' End If 'End If ' If Kr1 = 0 Then ' Waitms 9 ' If Kr2 = 0 Then ' Gosub Zawroc ' End If ' End If ' If Kr1 = 0 Then ' Waitms 10 ' If Kr2 = 0 Then ' Gosub Zawroc ' End If ' End If Loop End '\\\--------------\\\Odbijadło///--------------///' '\\\------------\Go/------------///' Go: Do Dioda2 = 1 M1a = 1 M1b = 0 M2a = 1 M2b = 0 Dioda2 = 0 Loop Until Kr1 = 0 Or Kr2 = 0 Return '\\\-----------\Lewo/-----------///' Lewo: For A = 1 To 1 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 0 M1b = 1 M2a = 0 M2b = 1 Waitms 50 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 0 M1b = 1 M2a = 1 M2b = 0 Waitms 75 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 Next Return '\\\-----------\Prawo/----------///' Prawo: For A = 1 To 1 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 0 M1b = 1 M2a = 0 M2b = 1 Waitms 50 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 1 M1b = 0 M2a = 0 M2b = 1 Waitms 75 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 Next Return '\\\----------\Zawroc/---------///' Zawroc: For A = 1 To 1 Dioda1 = 1 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 0 M1b = 1 M2a = 0 M2b = 1 Waitms 50 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 1 M1b = 0 M2a = 0 M2b = 1 Waitms 150 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 Dioda1 = 0 Next Return '\\\---------\Zawroc2/---------///' Zawroc2: For A = 1 To 1 Dioda1 = 1 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 0 M1b = 1 M2a = 0 M2b = 1 Waitms 50 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 M1a = 0 M1b = 1 M2a = 1 M2b = 0 Waitms 150 M1a = 0 M1b = 0 M2a = 0 M2b = 0 Waitms 15 Dioda1 = 0 Next Return Program na pewno można by sporo skrócić ale nie ma takiej konieczności.
  15. Witam, pochwalę się moim pierwszym poważnym robotem autonomicznym, dzięki któremu udało mi się tytuł magistra uzyskać. Wcześniej robiłem jakieś proste konstrukcję (wyświetlacz widmowy czy prosty robot mobilny z lega technic), ale ta jest pierwsza z tych "poważniejszych";) Tematem pracy było zbudowanie w pełni autonomicznego robota mobilnego, oraz zaimplementowanie mu algorytmu umożliwiającego mu dotarcie do celu unikając przeszkód statycznych i dynamicznych. Środowisko pracy z założenia jest środowiskiem lokalnym (nie ma wbudowanej mapy otoczenia). Konstrukcja: Podwozie robota wykonane jest ze spienionego PCV – jest lżejsza i łatwiejsza w obróbce niż pleksi. Górny element obudowy przymocowany jest za pomocą czterech śrub. Elementy mocujące czujników przymocowane są klejem na gorąco, mocowania silników zostały przykręcone. Obudowa ma kształt okręgu o średnicy 175 mm. Dolna część podwozie ma specjalne wcięcia na mocowania silniki. W najszerszym miejscu szerokość konstrukcji (wraz z kołami) wynosi 250 mm, natomiast wysokość 94 mm. Wybrałem silniki - HL 149.6.21 ASM firmy Micro Motors. Mają zintegrowaną przekładnię 21:1 pozwalające na osiągnięcie 160 rpm i momentu 0,075 Nm – przy napięciu znamionowym 6 VDC. Kupiłem ja na Allegro za jakieś 15 zł za sztukę Elektronika Mózgiem robota jest ATmega 128. Ma dużą ilość wbudowanych urządzeń peryferyjnych, sporo wyprowadzeń I/O i dużo pamięci flash. Występuje niestety (albo stety) wyłącznie w obudowie SMD, jednak w sprzedaży istnieją gotowe moduły umożliwiające montaż THT, co zdecydowanie upraszcza projektowanie płytki PCB w warunkach domowych. Głównym zmysłem robota są 3 czujniki ultradźwiękowe HC-SR04. Według producenta zakres wykrywanych odległości to 2 – 500 cm z rozdzielczością 3 mm. Są to jednak parametry w wyidealizowanych warunkach, w rzeczywistości realnie i w miarę stabilnie można mierzyć w zakresie do 300 cm. Do sterowania kierunkiem oraz prędkością obrotową silników został użyty układ - L298. Scala on w jednej małej obudowie, Multiwatt 15, dwa mostki H. Zasilanie: zdecydowałem się użyć akumulatora litowo – polimerowego o pojemności – 2200 mAh i napięciu 7,4 V. Pozwala on na sprawną pracę robota przez ok. 60 min. Można go dostać w sklepie modelarskim już za ok 80 zł. Soft Tu nie ma co się rozpisywać. Całość kodu napisałem w "c". Myślę, że nie ma co go pokazywać bo jest "brzydki";P Napisany po prostu żeby działał, ale jest tam niezły bałagan, za parę miesięcy prawdopodobnie sam się w nim nie połapię Fotki
  16. Witam, czas najwyższy opisać swojego pierwszego (nie licząc nieudanego światłoluba) robota. Jest to linefollower. Nazywa się R31. Jego opis będzie tak na prawdę w dużej mierze opisem mojej nauki robotyki. Więc przejdźmy do rzeczy: Około rok temu zainteresowałem się robotyką. Był to czas, kiedy wszyscy przygotowywali się do zawodów Robotic Arena 2010. Szybko zrozumiałem, jaką rangę mają te zawody. Wtedy postanowiłem sobie: za rok pojadę na te zawody z własnym robotem! Byłem wtedy zupełnie zielony. Wiedza z programowania praktycznie zerowa (nie licząc jakiegoś html'a trochę też "liznąłem" php). Z elektroniką było ie wiele lepiej, nie zdawałem sobie nawet sprawy z tego, jak działa tranzystor, choć tak na prawdę to dzięki interesowaniu się elektroniką trafiłem w ogóle na forbota (ówczesną diodę). Od początku spodobała mi si kategoria linefollower, więc postanowiłem że zbuduję właśnie takiego robota. Rozpocząłem więc nauk, w między czasie zbudowałem światłoluba, ale nie przywiązywałem do tj konstrukcji szczególnej wagi, głównym celem było samodzielne zbudowanie linefollower'a (bez pomocy taty ) tak, aby rozumieć co jak działa. Jednocześnie godziłem to z nauką w szkole i przygotowywaniami do konkursów z matematyki i fizyki. W między czasie przeczytałem Oślą łączkę (polecam początkującym). I dalej dążyłem do swojego celu... Powoli zgłębiałem swoją wiedzę i projektowałem robota. Zaczynałem właściwie od d**y strony, najpierw powstała płytka z czujnikami (mniej więcej w maju 2011) - chyba dlatego, że było to najłatwiejsze. Przy okazji uczyłem się obsługiwać program Eagle. Chciałem też nauczyć się "robić fajny, trójwymiarowy obrazek" w Inventorze. "Wrzuciłem" więc do niego wykonaną wcześniej płytkę z czujnikami (jedyne co zostało najpierw zaprojektowanie, a potem powstało w Inventorze to "szkielet" = śmiać się czy płakać? ). I tak powstawał R31, a ja przy okazji nauczyłem się obsługi Inventora. Przy okazji powiem, że pomysł na nazwę narodził się po wypadku Roberta Kubicy. Już wtedy dało się przeczuć, że ciężko mu będzie wrócić do jazdy w sezonie 2011, a nie jest tajemnicą, że miał duży wkład w projektowanie R31. Postanowiłem to jakoś uczcić (?) - stąd ta nazwa, a jednocześnie pomysł na konstrukcję. Prace nad moją konstrukcją posuwały się do przodu. Przy okazji powiększałem swoją, a może przede wszystkim, bo taki był główny cel, robot miał powstawać "przy okazji". W drugiej połowie wakacji kupiłem książkę Pana Mirosława Kardasia (którą polecam początkującym). Był to czas najwyższy aby zacząć naukę programowania (choć już prędzej się do tego przygotowywałem, zaglądając między innymi na forumowy kurs). Z początku czytanie szło jak burza (tempo na przeczytanie książki w niecałe 2 tygodnie), jednakże nastał koniec wakacji. Brak czasu spowodował, że coraz rzadziej zaglądałem do książki (do tej pory nie przeczytałem jej całej, choć już kończę). Zawody zbliżały się coraz bardziej, ale i ukończenie konstrukcji było coraz bliższe. Późnij były pierwsze testy robota, pisanie programów testowych... Program z algorytmem PD udało się napisać na dzień przed zawodami! Można więc powiedzieć, że cel wyznaczony był co do dnia . Aż nastał dzień 11 grudnia 2011. Przybyłem na miejsce, zarejestrowałem się i zająłem miejsce na stanowisku serwisowym (później obok mnie usiadła ekipa GROM-u). Poskręcałem robota (silniki z kołami miałem zapakowane osobno, aby koła nie poodlatywały ), włączyłem zasilanie i zaskoczenie ... Jedno koło się nie kręci! Jak to, przecież wczoraj gdy testowałem algorytm, PD wszystko działało! ... Szybka zamiana stron pomiędzy silnikami i okazuje się, że winny jest mostek H ... Jakie to szczęście, że zabrałem ze sobą płytkę od światłoluba na której jest sprawny L293D! ... Wszystko działa, można testować robota. Na trasie testowej robot ładnie jeździ (po dobraniu nastaw), choć nie zawsze radzi sobie z kątami prostymi. Po 11 zszedłem na dól, obejrzałem trasę i wystartowałem swojego robota na trasie z "wywijasami". Pierwszy przejazd udany, czas nieco ponad 20 sekund. Następnie udałem się na trasę z kątami prostymi. Po kilku nieudanych próbach, stwierdziłem, że naładuję akumulatory i spróbuję jeszcze raz przejechać trasę z wywijasami, a poźniej zajmę się kątami prostymi. Czas udało się poprawić na 18,59. Nastał więc czas na kąty proste. Pomyślałem sobie: spokojnie, dasz radę, kilka przejazdów z różnymi nastawami i będzie dobrze. Przed zawodami mówiłem wszystkim, że sukcesem będzie ukończenie zawodów i bycie klasyfikowanym, choć w głębi ducha myślałem sobie, że nie powinno być z tym problemów. Jednakże rzeczywiście, nie mogłem sobie poradzić z drugą trasą! Powoli zaczynałem się denerwować, Nie wiedziałem już co mam robić, całą godzinę czasu wolnego poświęciłem na kombinowaniu w programie. Zmieniałem prędkości silników, szybko czy wolno, na naładowanej czy rozładowanej baterii, nic nie pomagało. Zaczynała się robić nerwówka, biegałem ciągle ze stanowiska na trasę i z powrotem. Sędzia już miał mnie chyba powoli dosyć a tak szczerze to był bardzo w porządku, na każdą prośbę o poprawienie czegoś w trasie czy coś, reagował i był bardzo miły. Gdy po 14 byłem już bardzo zdenerwowany, on mówił do mnie: spokojnie, jest jeszcze dużo czasu. Ja jednak odczuwałem, że jest go coraz mniej, a nie wiedziałem co mam już robić. Ciągłe bieganie i przeprogramowywanie robota, to było coś strasznego. Aż tu nagle, 20 minut przed końcem, robot przejeżdża poprawnie zakręty z którymi sobie nie radził... jest coraz bliżej mety i... udało się! Ależ ja byłem szczęśliwy! Tyle godzin walki, chyba ze sto razy przeprogramowywałem robota (myślę, że ta liczba jest dość realna) i taki sukces na koniec! Czas z tej trasy wynosił 17,84 ale to nie było w tym momencie ważne, liczyło się tylko to, że udało się przejechać oby dwie trasy. Emocje były wspaniałe Może teraz przedstawię robota od strony technicznej:) oto schemat: Konstrukcja zbudowana jest z laminatu. Do napędu użyłem silników HL149 z przekładnią 21:1. Koła są zrobione z nakrętek od słoików z naklejoną dętką Nie ma tu nic nadzwyczajnego, ot zwykły robot początkującego. kilka zdjęć: a to filmik z pierwszych testów: Niestety mam tylko takie zdjęcia z zawodów, i żadnych filmików, ale jak to można przeczytać miałem inne problemy, i nawet do głowy mi nie przychodziły jakieś tam filmiki Jest wiele rzeczy, które bym teraz zrobił inaczej, czasami jestem o to nieco zły, ale jak sobie przypomnę, jaki byłem zielony przed budową tego robota to czuję tylko zadowolenie. Wtedy nie wiedziałem co to PID czy PWM. Teraz mogę powiedzieć, że na prawdę dużo nauczyłem się przez ten czas. Matko, jak ja się rozpisałem! Żebym ja pisał takie długie wypracowania na polskim
  17. Nadszedł czas na opis IzyboT'a - robota, którego koncept został stworzony w 2009 roku. Podstawą do zbudowania tego robota było podwozie jeżdżącego robota, zakupionego przez Zespół Szkół Mechanicznych w Opolu. Płytka PCB w całości została przeze mnie zaprojektowana i wykonana metodą termotransferu. Celem stworzenia robota był start w pierwszej edycji zawodów Follow The Line w Rybniku w 2009r. Robot świetnie się spisywał na trasie testowej. Niestety w czasie pierwszego przejazdu robot zamiast skręcić pojechał prosto. Jak się niedawno okazało, przyczyną takiego zachowania były kiepskie luty. Robot niedawno został reaktywowany, czego wynikiem był start w zawodach Robotic Tournament w Rybniku. Przez trzy lata IzyboT stał na półce i czekając na start w zawodach. Jak widać doczekał się! Zamieszczam wszystkie informacje dotyczące tego robota, aby pomóc początkującym w stworzeniu swojej pierwszej konstrukcji. Koncept: 2009 Elektronika Procesor: ATmega16 Kwarc: 16MHz Motor driver: L293D Wyświetlacz: LCD 2*16 Ilość czujników: 6 (CNY70) Zasilanie: 10 akumulatorków NiMH (na zawodach Robotic Tournament 2012 był pakiet Li-Po 800mAh) Inne:Przełącznik prędkości, wyłącznik zbędnego obciążenia, trzy LED, dwustronna PCB Mechanika Silniki: 20GA2025-08530-25 12V 230RPM Konstrukcja: Zielone plexi + metalowe dystanse + kółko od krzesła obrotowego Program Język programowania: BASCOM Poniżej znajduje się kompletny program, który sterował robotem na zawodach Robotic Tournament 2012. '------------------------------------------------------------------------------- 'Author: Piotr Śnieżek 'Nick: ProeXtreme 'E-mail: ProeXtreme@o2.pl 'Date: 23-03-2012 '------------------------------------------------------------------------------- $regfile = "m16def.dat" 'Mikrokontroler to ATmega16 $crystal = 16000000 'Kwarc 16MHz '------------------------------------------------------------------------------- 'Konfiguracja typu i pinów wyświatlacz LCD '------------------------------------------------------------------------------- Config Lcd = 16 * 2 'Wykorzystywany wyświetlacz jest organizacji 16 *2 Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5 'Konfiguracja pinów wyświetlacza '------------------------------------------------------------------------------- 'Konfiguracja PWM '------------------------------------------------------------------------------- Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 '------------------------------------------------------------------------------- 'Konfiguracja pinów '------------------------------------------------------------------------------- Config Pina.6 = Input 'Przełącznik prędkości (1) Config Pina.7 = Input 'Przełącznik prędkości (2) Config Pinb.2 = Input 'Przełącznik prędkości (3) Config Pinb.3 = Input 'Przycisk START Config Pinb.4 = Input 'Przycisk STOP Config Portd.0 = Output 'Dioda gotowość (zielona) Config Portd.1 = Output 'Dioda ustawienia (żółta) 'Czujniki Config Pinb.1 = Input 'Czujnik 1 Config Pinb.0 = Input 'Czujnik 2 Config Pinc.7 = Input 'Czujnik 3 Config Pinc.6 = Input 'Czujnik 4 Config Pinc.1 = Input 'Czujnik 5 Config Pinc.0 = Input 'Czujnik 6 'Motor driver Config Portd.6 = Output ' 1A Config Portd.7 = Output ' 2A Config Portd.3 = Output ' 3A Config Portd.2 = Output ' 4A '------------------------------------------------------------------------------- 'Aliasy '------------------------------------------------------------------------------- Speed_button_1 Alias Pina.6 Speed_button_1_port Alias Porta.6 Speed_button_2 Alias Pina.7 Speed_button_2_port Alias Porta.7 Speed_button_3 Alias Pinb.2 Speed_button_3_port Alias Portb.2 Start_button Alias Pinb.3 'Przycisk START Start_button_port Alias Portb.3 Stop_button Alias Pinb.4 'Przycisk STOP Stop_button_port Alias Portb.4 Set Speed_button_1_port Set Speed_button_2_port Set Speed_button_3_port Led_ready Alias Portd.0 'Dioda gotowość (zielona) Led_settings Alias Portd.1 'Dioda ustawienia (żółta) Set Start_button_port Set Stop_button_port Left_motor_przod Alias Portd.6 Left_motor_tyl Alias Portd.7 Right_motor_przod Alias Portd.2 Right_motor_tyl Alias Portd.3 'Czujniki Cz1 Alias Pinb.1 'Czujnik 1 Cz2 Alias Pinb.0 'Czujnik 2 Cz3 Alias Pinc.7 'Czujnik 3 Cz4 Alias Pinc.6 'Czujnik 4 Cz5 Alias Pinc.1 'Czujnik 5 Cz6 Alias Pinc.0 'Czujnik 6 '------------------------------------------------------------------------------- 'Konfiguracja zmiennych '------------------------------------------------------------------------------- Dim Name_of_software As String * 17 'Nazwa wgranego programu Dim Version_of_software As String * 5 'Wersja wgranego programu Dim Linia As Bit Dim Tlo As Bit Dim Wcisniety As Bit Dim Puszczony As Bit Dim Max_speed As Byte 'Maksymalne wypełnienie silników PWM Dim Jedzie As Bit Dim Stoi As Bit Dim Zakret As Byte Dim Ostry_zakret As Byte Dim Przodskret As Byte Dim Licznik_czasu As Byte Dim Lewy_ostatni As Bit Dim Prawy_ostatni As Bit Dim Lewy_ostry_ostatni As Bit Dim Prawy_ostry_ostatni As Bit Dim Skret_p(6) As Byte Dim Skret_l(6) As Byte '------------------------------------------------------------------------------- 'Ustawienia wstępne '------------------------------------------------------------------------------- Name_of_software = "IzyboT 2012" Version_of_software = "v1.09" Cursor Off 'Wyłącza kursor Led_ready = 1 '0-wygaszenie diody, 1-zaświecenie diody Led_settings = 1 Linia = 1 Tlo = 0 Wcisniety = 0 Puszczony = 1 Jedzie = 1 Stoi = 0 Left_motor_przod = Stoi Left_motor_tyl = Stoi Right_motor_przod = Stoi Right_motor_tyl = Stoi Licznik_czasu = 0 '------------------------------------------------------------------------------- 'Program główny '------------------------------------------------------------------------------- Cls 'Czyści ekran Locate 1 , 3 Lcd Name_of_software Locate 2 , 7 Lcd Version_of_software Wait 1 Cls Gosub Sensors_settings Cls Do Gosub Speed_settings Do Left_motor_przod = Jedzie 'Przy rozpoczęciu jazdy robot będzie jeździł do przodu Right_motor_przod = Jedzie If Cz1 = Linia Then 'Przygotowanie do ostrego skretu w lewo Lewy_ostry_ostatni = 1 End If If Cz6 = Linia Then 'Przygotowanie do ostrego skretu w prawo Prawy_ostry_ostatni = 1 End If '............................................................................... 'Jazda na wprost '............................................................................... If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Linia And Cz4 = Linia And Cz5 = Tlo And Cz6 = Tlo Then Gosub Prosto '4,5 '............................................................................... 'Skręt w prawo '............................................................................... If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Linia And Cz6 = Tlo Then Gosub Lekko_w_prawo '5 If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Linia And Cz4 = Tlo And Cz5 = Linia And Cz6 = Tlo Then Gosub Lekko_w_prawo '3,5 If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Linia And Cz5 = Linia And Cz6 = Tlo Then Gosub Lekko_w_prawo '4,5 If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Linia And Cz4 = Linia And Cz5 = Linia And Cz6 = Tlo Then Gosub Lekko_w_prawo '3,4,5 If Cz1 = Linia And Cz2 = Linia And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Tlo And Cz6 = Tlo Then Gosub Lekko_w_prawo '1,2 If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Tlo And Cz6 = Linia Then Gosub Ostro_w_prawo '6 If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Linia And Cz5 = Tlo And Cz6 = Linia Then Gosub Zawracanie_w_prawo '4,6 '............................................................................... 'Skręt w lewo '............................................................................... If Cz1 = Tlo And Cz2 = Linia And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Tlo And Cz6 = Tlo Then Gosub Lekko_w_lewo '2 If Cz1 = Tlo And Cz2 = Linia And Cz3 = Linia And Cz4 = Tlo And Cz5 = Tlo And Cz6 = Tlo Then Gosub Lekko_w_lewo '2,3 If Cz1 = Tlo And Cz2 = Linia And Cz3 = Tlo And Cz4 = Linia And Cz5 = Tlo And Cz6 = Tlo Then Gosub Lekko_w_lewo '2,4 If Cz1 = Tlo And Cz2 = Linia And Cz3 = Linia And Cz4 = Linia And Cz5 = Tlo And Cz6 = Tlo Then Gosub Lekko_w_lewo '2,3,4 If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Linia And Cz6 = Linia Then Gosub Lekko_w_lewo '5,6 If Cz1 = Linia And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Tlo And Cz6 = Tlo Then Gosub Ostro_w_lewo '1 If Cz1 = Linia And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Linia And Cz5 = Tlo And Cz6 = Tlo Then Gosub Zawracanie_w_lewo '1,4 '............................................................................... 'Skrzyżowanie '............................................................................... If Cz2 = Linia And Cz3 = Linia And Cz5 = Linia Then Gosub Prosto '2,3,5 '............................................................................... 'Kierunek jazdy nie określony '............................................................................... If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Linia And Cz5 = Tlo And Cz6 = Tlo Then If Prawy_ostatni = 1 Or Prawy_ostry_ostatni = 1 Then Pwm1a = Max_speed Pwm1b = Max_speed Right_motor_przod = Stoi Waitms 15 Right_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz2 = Linia Right_motor_tyl = Stoi Waitms 15 Right_motor_przod = Jedzie Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 0 End If If Lewy_ostatni = 1 Or Lewy_ostry_ostatni = 1 Then Pwm1a = Max_speed Pwm1b = Max_speed Left_motor_przod = Stoi Waitms 15 Left_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz2 = Linia Left_motor_tyl = Stoi Waitms 15 Left_motor_przod = Jedzie Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 0 End If End If 'Powrót na linię po wyjechaniu za nią If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Tlo And Cz4 = Tlo And Cz5 = Tlo And Cz6 = Tlo Then If Prawy_ostatni = 1 Then Pwm1a = Max_speed Pwm1b = Zakret End If If Prawy_ostry_ostatni = 1 Then Pwm1a = Max_speed Pwm1b = Max_speed Right_motor_przod = Stoi Waitms 15 Right_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz2 = Linia Right_motor_tyl = Stoi Waitms 15 Right_motor_przod = Jedzie Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 0 End If If Lewy_ostatni = 1 Then Pwm1a = Zakret Pwm1b = Max_speed End If If Lewy_ostry_ostatni = 1 Then Pwm1a = Max_speed Pwm1b = Max_speed Left_motor_przod = Stoi Waitms 15 Left_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz2 = Linia Left_motor_tyl = Stoi Waitms 15 Left_motor_przod = Jedzie Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 0 End If End If '............................................................................... 'Przyciski ustawień prędkości '............................................................................... If Start_button = Wcisniety Then Cls Lcd "Zakret PWM: " Do Loop Until Start_button = Puszczony Do Locate 1 , 13 Lcd Zakret ; " " If Cz5 = Linia Then Pwm1a = Max_speed Pwm1b = Zakret End If If Cz2 = Linia Then Pwm1a = Zakret Pwm1b = Max_speed End If Licznik_czasu = 0 Led_settings = 0 While Start_button = Wcisniety Do Waitms 10 Incr Licznik_czasu If Licznik_czasu = 100 Then Led_settings = 1 Loop Until Start_button = Puszczony If Led_settings = 1 Then Exit Do If Licznik_czasu >= 3 Then Zakret = Zakret + 5 Wend Licznik_czasu = 0 Led_settings = 0 While Stop_button = Wcisniety Do Waitms 10 Incr Licznik_czasu Loop Until Stop_button = Puszczony If Licznik_czasu >= 3 Then Zakret = Zakret - 5 Wend Loop 'Until Start_button = Puszczony End If If Stop_button = Wcisniety Then Cls Lcd "OstryZ PWM: " Do Loop Until Start_button = Puszczony Do Locate 1 , 13 Lcd Ostry_zakret ; " " If Cz5 = Linia Then Pwm1a = Max_speed Pwm1b = Ostry_zakret End If If Cz2 = Linia Then Pwm1a = Ostry_zakret Pwm1b = Max_speed End If Licznik_czasu = 0 Led_settings = 0 While Start_button = Wcisniety Do Waitms 10 Incr Licznik_czasu Loop Until Start_button = Puszczony If Licznik_czasu >= 3 Then Ostry_zakret = Ostry_zakret + 5 Wend Licznik_czasu = 0 Led_settings = 0 While Stop_button = Wcisniety Do Waitms 10 Incr Licznik_czasu If Licznik_czasu = 100 Then Led_settings = 1 Loop Until Stop_button = Puszczony If Led_settings = 1 Then Exit Do If Licznik_czasu >= 3 Then Ostry_zakret = Ostry_zakret - 5 Wend Loop 'Until Stop_button = Puszczony End If '............................................................................... 'Wyświetlanie wartości PWM '............................................................................... Home Lcd "PWM1a: " ; Pwm1a ; " " Lowerline Lcd "PWM1b: " ; Pwm1b ; " " Loop 'Until Stop_button = Wcisniety Pwm1a = 0 Pwm1b = 0 Left_motor_przod = Stoi Right_motor_przod = Stoi Do If Start_button = Wcisniety Then Waitms 25 If Start_button = Wcisniety Then Exit Do End If Loop Loop End 'End program Sensors_settings: 'Ustawienia czujników Cls Do If Cz1 = Tlo And Cz2 = Tlo And Cz3 = Linia And Cz4 = Linia And Cz5 = Tlo And Cz6 = Tlo Then Home If Linia = 1 Then Lcd "Linia biala " Else Lcd "Linia czarna " End If Lowerline If Tlo = 1 Then Lcd "Tlo biale " Else Lcd "Tlo czarne " End If Waitms 500 Exit Do Else Toggle Linia Toggle Tlo Gosub Ustaw_robota_na_linii End If Loop Home 'Kursor na pozycji 1, 1 Lcd " C2: C3: C5: " Lowerline Lcd " C1: C4: C6: " Do If Cz2 = Linia Then Locate 1 , 5 Lcd "1" Else Locate 1 , 5 Lcd "0" End If If Cz3 = Linia Then Locate 1 , 10 Lcd "1" Else Locate 1 , 10 Lcd "0" End If If Cz5 = Linia Then Locate 1 , 15 Lcd "1" Else Locate 1 , 15 Lcd "0" End If If Cz1 = Linia Then Locate 2 , 5 Lcd "1" Else Locate 2 , 5 Lcd "0" End If If Cz4 = Linia Then Locate 2 , 10 Lcd "1" Else Locate 2 , 10 Lcd "0" End If If Cz6 = Linia Then Locate 2 , 15 Lcd "1" Else Locate 2 , 15 Lcd "0" End If If Start_button = Wcisniety Then Waitms 25 If Start_button = Wcisniety Then Exit Do End If Loop Do Loop Until Start_button = Puszczony Return Ustaw_robota_na_linii: Lcd " Ustaw robota " Lowerline Lcd " na linii " Return Speed_settings: Cls Lcd "Maks. predkosc: " Do 'Wszystkie ON If Speed_button_1 = Wcisniety And Speed_button_2 = Wcisniety And Speed_button_3 = Wcisniety Then Max_speed = 255 'Dwa ON If Speed_button_1 = Wcisniety And Speed_button_2 = Wcisniety And Speed_button_3 = Puszczony Then Max_speed = 200 If Speed_button_1 = Wcisniety And Speed_button_2 = Puszczony And Speed_button_3 = Wcisniety Then Max_speed = 200 If Speed_button_1 = Puszczony And Speed_button_2 = Wcisniety And Speed_button_3 = Wcisniety Then Max_speed = 200 'Jeden ON If Speed_button_1 = Wcisniety And Speed_button_2 = Puszczony And Speed_button_3 = Puszczony Then Max_speed = 150 If Speed_button_1 = Puszczony And Speed_button_2 = Puszczony And Speed_button_3 = Wcisniety Then Max_speed = 150 If Speed_button_1 = Puszczony And Speed_button_2 = Wcisniety And Speed_button_3 = Puszczony Then Max_speed = 150 'Wszystkie OFF If Speed_button_1 = Puszczony And Speed_button_2 = Puszczony And Speed_button_3 = Puszczony Then Max_speed = 100 If Speed_button_1 = Puszczony And Speed_button_2 = Puszczony And Speed_button_3 = Puszczony Then Max_speed = 100 If Speed_button_1 = Puszczony And Speed_button_2 = Puszczony And Speed_button_3 = Puszczony Then Max_speed = 100 Locate 2 , 8 If Max_speed = 255 Then Lcd "100%" If Max_speed = 200 Then Lcd "80% " If Max_speed = 150 Then Lcd "60% " If Max_speed = 100 Then Lcd "40% " Pwm1a = Max_speed Pwm1b = Max_speed Zakret = 177 Ostry_zakret = 0 If Start_button = Wcisniety Then Waitms 25 If Start_button = Wcisniety Then Exit Do End If Loop Do Loop Until Start_button = Puszczony Gosub Eliminacja_drgan Return Eliminacja_drgan: Waitms 20 Return Czas_cofania: Waitms 150 Return Prosto: Pwm1a = Max_speed Pwm1b = Max_speed Return Lekko_w_prawo: If Cz1 = Linia Then Skret_p(1) = 1 Else Skret_p(1) = 0 If Cz2 = Linia Then Skret_p(2) = 1 Else Skret_p(2) = 0 If Cz3 = Linia Then Skret_p(3) = 1 Else Skret_p(3) = 0 If Cz4 = Linia Then Skret_p(4) = 1 Else Skret_p(4) = 0 If Cz5 = Linia Then Skret_p(5) = 1 Else Skret_p(5) = 0 If Cz6 = Linia Then Skret_p(6) = 1 Else Skret_p(6) = 0 Pwm1a = Max_speed Pwm1b = Zakret Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 0 Prawy_ostatni = 1 Lewy_ostatni = 0 Return Lekko_w_lewo: If Cz1 = Linia Then Skret_l(1) = 1 Else Skret_l(1) = 0 If Cz2 = Linia Then Skret_l(2) = 1 Else Skret_l(2) = 0 If Cz3 = Linia Then Skret_l(3) = 1 Else Skret_l(3) = 0 If Cz4 = Linia Then Skret_l(4) = 1 Else Skret_l(4) = 0 If Cz5 = Linia Then Skret_l(5) = 1 Else Skret_l(5) = 0 If Cz6 = Linia Then Skret_l(6) = 1 Else Skret_l(6) = 0 Pwm1a = Zakret Pwm1b = Max_speed Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 0 Prawy_ostatni = 0 Lewy_ostatni = 1 Return Ostro_w_prawo: Pwm1a = Max_speed Pwm1b = Max_speed Right_motor_przod = Stoi Waitms 15 Right_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz5 = Linia Right_motor_tyl = Stoi Waitms 15 Right_motor_przod = Jedzie Prawy_ostry_ostatni = 1 Lewy_ostry_ostatni = 0 Prawy_ostatni = 0 Lewy_ostatni = 0 Return Ostro_w_lewo: Pwm1a = Max_speed Pwm1b = Max_speed Left_motor_przod = Stoi Waitms 15 Left_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz2 = Linia Left_motor_tyl = Stoi Waitms 15 Left_motor_przod = Jedzie Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 1 Prawy_ostatni = 0 Lewy_ostatni = 0 Return Zawracanie_w_prawo: Pwm1a = Max_speed Pwm1b = Max_speed Right_motor_przod = Stoi Waitms 15 Right_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz5 = Linia Right_motor_tyl = Stoi Waitms 15 Right_motor_przod = Jedzie Prawy_ostry_ostatni = 1 Lewy_ostry_ostatni = 0 Prawy_ostatni = 0 Lewy_ostatni = 0 Return Zawracanie_w_lewo: Pwm1a = Max_speed Pwm1b = Max_speed Left_motor_przod = Stoi Waitms 15 Left_motor_tyl = Jedzie Do Loop Until Cz3 = Linia Or Cz2 = Linia Left_motor_tyl = Stoi Waitms 15 Left_motor_przod = Jedzie Prawy_ostry_ostatni = 0 Lewy_ostry_ostatni = 1 Prawy_ostatni = 0 Lewy_ostatni = 0 Return Program był pisany 3 dni. Przejazdy robota na zawodach to maksimum jego możliwości. Przy większej prędkości robot wylatuje z trasy ze względu na jego ogromną masę. Jeśli coś pominąłem/czegoś brakuje to proszę o info na PW. Chętnie odpowiem na wszelkie pytania. __________ Komentarz dodany przez: Treker Publikacja dopiero po dodaniu zdjęcia jako załącznik. Przydałby się również większy wstęp, który będzie widoczny na portalu oraz w katalogu follow the line.sch czujnikrobot v2.0.brd IzyboT.brd
  18. Witam! Chciałbym zaprezentować Wam robota klasy line follower. Płytkę zaprojektował użytkownik Harnaś, ja polutowałem oraz napiasłem program. Płytka robota składa się z dwóch części i jest skręcona. Płytki były wykonane w firmie Satland. Wszystkie elementy które występowały w obudowie SMD zostały wykorzystane, reszta czyli 3 kondensatory, wyłącznik oraz złącza goldpin są w obudowach THT. Dodam również że szkoła jest sponsorem robota. Mechanika Wolverine wyposażony jest w dwa silniki Pololu w wersji HP i przekładnią 30:1. Silniki zasilane są z 5V. Z przodu nie ma ballcasterów za to są dwie diody LED, podtrzymujące przód, niestety diody nie świecą, a myślę że byłoby to ciekawe. Elektronika Mózgiem jest tutaj ATmega16-AU taktowana zewnętrznym kwarcem 16 MHz. Jej potencjał nie jest chyba nawet 1/100 wykorzystywany. Do sterowania silnikami zostały wykorzystane mostki TB6612FNG, po jednym na silnik. Myślę, że są to bardzo dobre mostki. Jest na nich minimalny spadek napięcia. Pod tylną częścią robota zostało zamontowanych 18 niebieskich diod LED. Które efektownie podświetlają robota. Dodatkowo pod silnikami znajdują się diody rgb, lecz jeszcze nie zostały wykorzystane, jedna z nich ładnie świeci podczas programowania. Do stabilizacji napięcia dla logiki został wykorzystany stabilizator liniowy LF50, a do stabilizacji napięcia podawanego silnikom została wykorzystana przetwornica DC-DC, Step down, LM2576 o wydajności prądowej 3A. Ta przetwornica potrzebuje dużego dławika 100 uH, z racji tego wykorzystałem dławik tylko 56 uH. Mimo tego Buck spisuje się dobrze. Dodatkowo przed odwrotnym podłączeniem baterii i w konsekwencji spalenia części logiki została zastosowana dioda bezpośrednio za złączem na akumulator, która niestety nie zabezpiecza przetwornicy. Już raz przez pomyłkę podłączyłem na odwrót baterię i przetwornica poszła z dymem. Czujniki W robocie znajduje się 16 czujników lini - KTIR0711S, malutkie czujniki, o stabilnym działaniu. Myślę że 16 czujników to takie optimum lecz gdybym robił w przyszłości LF'a to wykorzystał bym ich 20 lub 24. Oraz jeden cyfrowy czujnik odległości 40cm - Sharp GP2Y0D340K, nie został jeszcze użyty, a nawet miał wypadek, nie wytrzymał zderzenia robota ze ścianą i po prostu odpadł. Zasilanie Zasilaniem całego robota jest akumulator Li-Pol, dwu celowy o pojemności zaledwie 500 mAh. Jest to pojemność w zupełności wystarczająca do przejazdów na zawodach, przy okazji zapewniająca małą wagę bo cały akumulator waży 36 gram choć podczas testowania robota trzeba robić sobie co chwilkę przerwę na podładowanie akumulatora. Program Cały kod to moje wypociny, tutaj poduczyłem się programować lecz nadal to nie jest to coś. W miarę zdobywania kolejnej wiedzy będę starał się udoskonalać kod, aby robot był szybszy. Gdyby ktoś zobaczył aktualny kod to pewnie by się za głowę chwycił i nie wiedział w którą stronę uciekać. Sterowaniem zajmuje się upośledzony wytwór wyobraźni przy czym byl wzorowany na PID'zie a konkretniej to na samym "P", lada moment zostanie dodany człon "D". Jak już wspomniałem albo i nie, jestem początkujący, lecz teraz bogatszy o nowe doświadczenia. Podsumowanie Dużo się nauczyłem, co zaowocuje w przyszłości może kolejnymi, lepszymi robotami. Nabrałem trochę szacunku do "tego" bo było dużo momentów w których chciałem "tym" wyje**ć w ścianę, teraz wiem że trzeba być cierpliwym i szukać błędów do upadłego. Teraz wiem że nie jest to takie łatwe jak się wydawało na początku. I to by było na tyle. Zachęcam do oceniania oraz komentowania. Tutaj filmik z przejazdów na aktualnym programie. Gdy go poprawię wrzucę nowe filmiki.
  19. Witam, chciałbym przedstawić mojego robota -Hakera. Jest to moja pierwsza konstrukcja typu minisumo i jestem z niej bardzo zadowolony. Podziękowania należą się użytkownikom forum a najbardziej Piotreks'owi89. Napęd stanowią 2 przerobione serwa tower pro SG5010. Było to dobre rozwiązanie pod względem mocy, ale prędkość jest niezadowalająca. By osiągnąć większą prędkość musiałem dać ogromne koła co również nie było najlepszym rozwiązaniem. Elektronika: -mostek H L298 - dobrze się spisywał (tylko te ogromne diody zajmują dużo miejsca) -procesor atmega8 - 4 czujniki linii -2 czujniki przeciwnika (i tu podziękowania dla piotreks'a89)-czujniki spisały się znakomicie jedynie za wysoko je umieściłem przez co nie wykryłby bardzo niskiego przeciwnika. Czujniki : Jak pisałem wyżej czujników jest 6 - 4x tcrt5000 rozmieszczonych na brzegach robota i 2x czujniki na tsopach 4836 i dwóch diodach LD271. Czujniki odległości są na oddzielnych płytkach - mają po jednym attiny13, który steruje diodami i odbiera sygnały z tsopów. Zasięg czujnika wynosi (w najlepszym przypadku) ok 56cm (testowane na dłoni ). Zasilanie to niestety baterie- ponieważ paczka z Hobby Kinga nie zdążyła przyjść Następna konstrukcja doczeka się li-pola. Program pisany w Bascomie polega na tym że procek sprawdza czunik linii a potem dwa czujniki przeciwnika i tak na każdy czujnik linii. Program spełnia moje oczekiwania i jestem z niego zadowolony Zawody Z Hakerem byłem na Robomaticonie i spisywał się wspaniale . Co prawda odpadł w ćwierć finałach, ale dla mnie to już jest wielki sukces. Wygrał cztery walki- przegrał również cztery . Na początku były problemy z wagą ale po obcięciu mu po kawałku flagi z każdej strony było równiutko 500g. Poniżej filmiki (będę dodawał po kolei bo są bardzo duże i wolno przesyłają się na you tuba.) Niestety na początku opadła flaga i było kilka falstartów Zdjęcia Hakera: (również będę dodawał cały czas bo muszę ich poszukać) Podsumowanie Robot jak najbardziej spełnił moje oczekiwania, prędkość mogłaby być lepsza, ale nie ma co narzekać bo już powstaje Haker2 w którym napęd będą stanowiły przekładnie, które już testowałem i jestem bardzo zadowolony. Cieszę się że na zawodach przeszedł do ćwierć finałów- myślałem że nie wygra nawet jednej walki
  20. Witam wszystkich. Przedstawiam moją pierwszą w życiu autonomiczną maszynę-robota typu "linefollower", którego nazwałem "ERROR 1". Mimo kilku ewidentnych słabości jestem z niego naprawdę zadowolony. Elektronika składa się z dwóch płytek: - Płytka z sensorami, zasilaniem diod i rezystorami podciągającymi. Po podaniu zasilania (stabilizowane 5V) zwraca analogowe sygnały. Sensory to 5szt. popularnych CNY70. - Płytka z mikrokontrolerem, zasilaniem i mostkami H do sterowania dwóch silników. "Mózgiem" jest atmega8 w ceglastej obudowie dip, mostek to l293d. Całość jest zaprojektowana tak, aby ten moduł był najbardziej uniwersalny-po podłączeniu płytki z innymi sensorami i tylnej części z innymi silnikami bez żadnego problemu można zrobić na niej np. robota minisumo, prostą machinę kroczącą itd. Poza miejscem pod taśmę są jeszcze dodatkowo wyprowadzone piny I/O(7szt) pozwalające m.in. na dołączenie zewnętrznego kwarcu, użycie wyjścia timera 2, podłączenie kilku serw, użycie piątego kanału ADC, itd... Dodatkowo na płytce są gotowe ścieżki i pola lutownicze pozwalające na zmontowanie dzielnika napięcia do pomiaru napięcia zasilania(piąty kanał ADC). Można znaleźć tam jeszcze dwie diody led, dwa switche i wyprowadzenia do zasilania zewnętrznych peryferiów: 5V, GND i Vcc(bezpośrednio z baterii zasilającej). Do Aref można zamontować kondensator lub potencjometr zależnie od wybranego źródła napięcia odniesienia. Połączenie między płytkami zbudowane jest z taśmy (po której idzie zasilanie przedniej płytki i sygnały z sensorów) i dwóch prętów węglowych fi 2mm zamontowanych w tulejach wyjętych z kostek elektrycznych. Takie połączenie pozwala na regulację pozycji płytki z sensorami w praktycznie każdej osi i każdym kierunku. Jest też dość solidne i niesamowicie lekkie- obie płytki razem z połączeniem ważą 25g. Jeśli za mało jeszcze nasłodziłem, to dodam, że bez najmniejszych przeróbek da radę zrobić z tego przegubowca(czego nie omieszkam spróbować) Jakość wykonania płytek poniżej dna-bez soldermaski i lekko podtrawione(tylko powierzchniowo). Przesadziłem trochę z temperaturą roztworu wytrawiacza. Zasilanie stanowi bateryjka Li-Pol 2S 0,8Ah, docelowo 3S. Napęd stanowią dwa przerobione silniki z przekładniami firmy micromotors(hl149). W silnikach zastosowałem takie modyfikacje: - wzmocnienie przekładni-wymieniłem plastikowe koła zębate na metalowe - skrócenie i minimalne odelżenie silników-pozbyłem się plastikowych osłon tylnych części i skróciłem wystające z tyłu wały - przystosowanie do kół pololu - wały "D" 4mm spiłowałem na wał "D" 3mm - wymiana konektorów - na zwykłe goldpiny, bo standardowe raczej nie nadają się do niczego - przewoltowanie - silniki zbudowane do zasilania z 6V, ja zasilam je z baterii 3S Silniki te oceniam bardzo dobrze, może nie wygram nimi zawodów, ale nie da się znaleźć lepszych w tej cenie(a nawet 2x drożej). Dodatkowo są bardzo solidne-nie muszę się bać, że komutatory albo zęby przekładni znikną po kilku biegach. Silniki mają przekładnie 1:10, które planuję użyć w przyszłości razem z innymi silnikami(180 lub 265). Jedna metalowa przekładnia waży 19g. Silniki umieściłem w prostej ramce wykonanej z blaszki aluminiowej 0,75mm Software: W obecnej wersji regulator PD, niestety gdzieś jest chochlik(rozmieszczenie sensorów, bezwładność, albo nie wiem co.. ) i nie da się dobrać nastaw tak, żeby jednocześnie jeździł płynnie i nie gubił trasy. Pierwsze uruchomienie: Po wgraniu programu testowego i podłączeniu zasilania "prawie" sukces. PWM, kontrolki, switche, łączność z mostkiem H, konfiguracja wyprowadzeń - OK. Jednak okazało się, że mostek jest uszkodzony(uwalony jeden z górnych tranzystorów prawego silnika)-prawy silnik nie kręci do przodu. Po wymianie ruszył. Zrezygnowałem z ADC-nie mogłem go uruchomić, a sensory bardzo dobrze sobie radzą jako cyfrowe. Po testach przyszedł czas na pierwsze jazdy: Film z najprostszym programem(bez regulacji prędkości-tylko zmiana kierunku obrotów), zasilanie bateria 2S 0,8Ah(docelowo 3S-chociaż to trochę ryzykowne przy tym mostku). Trasa "0": Jedno kółko to 2m, czas okrążenia ~3,5s, prędkość wychodzi niecałe 0,6m/s. W następnej wersji softu (regulator P-następny film) zszedłem poniżej 2,8s. Chyba nie jest źle jak na pierwszą konstrukcję. Możliwe, że jeszcze poprawię ten wynik-jedyne co mnie teraz ogranicza to ilość sensorów, ale biorę pod uwagę dodanie jeszcze kilku. Filmy z późniejszym softem(regulator P): Trasa "0" - o długości 2m. Tor testowy, długość 10m: Średnia prędkość dochodzi do 0,9m/s Koszty: Silniki+przekładnie: 20zł Koła pololu 60mm: 25zł Sensory, atmega, mostek: ~30zł Drobnica <10zł Reszta drobiazgi za grosze. Dołączam plik hex, PCB, schemat montażowy, ideowy, wykaz elementów i uwagi. error1.zip
  21. 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
  22. Witam chciałbym wam przedstawić mojego pierwszego robota o nazwie MacLiner.Cała konstrukcja oparta na laminacie 3mm, która jest jednocześnie płytką drukowaną elektroniki. Robot jest w kształcie Koła. MECHANIKA Tradycyjnie jak prawie w każdym robocie tej klasy zastosowane zostały dwa silniki Pololu 30:1, ball caster który stanowi tylną podporę a także koła o średnicy 32mm tej samej firmy. ELEKTRONIKA Jako "mózg" został użyty mikrokontroler firmy Atmel z rodziny AVR ATmega32 z taktowaniem 16Mhz. Za sterowanie silnikami odpowiedzialny jest dwukanałowy mostek L298. Z początku obawiałem się użycia go ze względu na duży spadek napięcia, lecz jak się potem okazało w tej konstrukcji w zupełności wystarczał.Do wykrywania linii użyte zostały czujniki KTIR0711S (5 czujników ułożonych po okręgu ). Sygnał analogowy z sensorów zamieniany jest na cyfrowy przy użyciu komparatorów LM324 następnie podawany na piny atmegi. Za stabilizacje napięcia odpowiedzialny jest układ 7805, który dostawał napięcie w prost z 4 baterii alkalicznych 1,5v.Płytka została wykonana w warunkach domowych. Od razu odpowiem na pytanie(zapewne takie padnie). Z czego zrobiona jest soldermaska? Otóż jest to najzwyklejsza farba do witraży. STEROWANIE Myślę, że największą wadą tego robota jest właśnie program. Można było zauważyć to na zawodach SUMO CHALLENGE w Łodzi (zakręty pokonywał w moim odczuciu doskonale, lecz na prostych wyglądało to jak by jechał po sinusoidzie). Został wgrany regulator na samym członie P pisany w środowisku Bascom. PODSUMOWANIE Reasumując zebrałem dużo cennego doświadczenia, na pewno więcej czasu muszę poświęcić na napisaniu programu a także to że softem ciężko jest naprawić błędy mechaniczne/konstrukcyjne. Zapomniał bym o jeszcze jednej cennej praktyce, którą zdobyłem podczas budowy: zarywanie nocek przy projekcie dobrze się nie kończy co widać na jednym ze zdjęć(mam na myśli te źle rozmieszczone pady pod diody) Zdjęcia: MACLINER TEST [Youtube] [/Youtube][Youtube] [/Youtube]Autor projektu: *Mateusz Góra MacLiner.pdf
  23. Infinitum to trzeci robot w mojej karierze i najlepszy jaki udało mi się zbudować do tej pory. Robot powstawał stosunkowo długo (ponieważ w tym roku matura), jednak najwięcej do zrobienia było przed RoboticArena 2011, gdy na PCB wkradł się błąd, który oczywiście został usunięty. Robot powstawał przy współpracy z firmą Woszym , która zajmuje się montażem obwodów drukowanych. Również pomogli w krytycznej sytuacji. Elektronika: Standardowo użyłem mikrokontrolera firmy atmel- Atmega16, mostki to dwa TB6612, stabilizator L7805 wersji SMD, za oczy robią cyfrowe Sharpy GP2Y0D340K, komparator LM339D oraz KTIR0711S plus pozostałe drobne elementy. Robota wyposażyłem w LCD 8x2- jednym się ten pomysł podobał, innym nie, ale ja jestem zadowolony bo spełnił swoją funkcję- można sprawdzić aktualny stan aku, ustawić PWM jak i zobaczyć, za ile zacznie się walka Program: Program powstał w środowisku eclipse, napisany został w C, którego się dopiero zacząłem uczyć, więc jest to pierwszy mój program w tym języku. Nie wiedziałem, że jest taki fajny. W robocie jest przewijane menu, które obsługuje się trzema przyciskami - jeden enter, a dwa pozostałem służą do przewijania. Żeby wyjść do głównego menu trzeba przytrzymać te dwa przyciski do przewijania przez 3s. Mechanika: Obudowa Infinitum została wcięta z aluminium i profesjonalnie polakierowana przez lakiernika. Po walkach odprysków praktycznie nie ma więc się postarał . Silniki to HP 50:1 z pololu. Robot na zawodach ważył około 375g. Podsumowanie: Jak wspominałem jestem z niego bardzo zadowolony-udało się wyjść z grupy na RA11! Dla ciekawych nazwa wzięła się stąd, że były roboty Inferno i Mefisto to stwierdziłem, że musi być coś anty(w Google translator można sprawdzić ). Konstrukcja ma tylko 3 minusy: przyczepność, ilość śrubek i umiejscowienie włącznika – przy następnych konstrukcjach zwrócę na to większą uwagę . Filmiki: Znajdują się tu niektóre z wygranych walk https://www.youtube.com/watch?v=uGfYsFS2aMw
  24. 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.
  25. Witam wszystkich ! Chciałbym zaprezentować wam moje najnowsze "dzieło" które powstawało jest nim robot klasy minisumo o nazwie "Zniszczyciel" . Robot powstawał od świąt bożego narodzenia czyli prawie 2 miesiące . Budowałem go z myślą o zawodach Robomaticon w których mam zamiar wziąść udział (licze na przed ostatnie miejsce konstrukcja jest niezwykle prosta wzorowałem się trochę na robocie "Szaman 4 " kolegi Zuba1 . Kilka najważniejszych informacji Zasilanie pakiet Lipo 2s 7,4v stabilizowany na 5v Napęd podwójna przekładnia tamya o przełożeniu 1:344 Procesor Attiny 2313 z zewnętrznym oscylatorem 4mhz Sterownik silników L293DNE Czujnik linii CNY70 Czujnik "wroga" GP2Y0D340K x 1 + dwa mikro switche Koła pochodzą ze sklepu modelarskiego Płytka pochodzi z kursu o elbocie. Kilka zdjęć i filmy Program do Minisumo napisałem w Bascomie jest na tyle prosty że go nie przedstawię , napisałem jednak dodatkowy program do zdalnego sterowania pilotem od TV... Film: Problemem jest chyba odbiornik podczerwieni który nie zawsze odbiera sygnał widać to na filmie trzeba czasem kilka razy wcisnąć przycisk aby robot zareagował... Największą wadą tego robota jest mostek H przy tych silnikach i tym zasilaniu musiałem dać rezystory żeby ograniczyć prąd silników
×
×
  • Utwórz nowe...