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, 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 230 wyników

  1. jaromaz

    Miniaturowy Tetris

    Miniaturowy Tetris z pięcioma przyciskami, głośniczkiem Piezo i ekranem Oled 128×64. To wszystko przy zaledwie sześciu dostępnych GPIO jednodolarowego Digisparka/ATtiny85. Moja wersja kodu dodaje kilka ulepszeń, które znacząco zmieniają odbiór całej gry (opisane niżej), a koszt budowy całego zestawu wynosi około 15 zł. ATtiny Tetris Gold Multi Button obsługuje narastający poziom trudności (przyspieszanie opadania wraz z usuwaniem kolejnych linii), informację o klocku pojawiającym się w kolejnej turze, podpowiedź o pozycji klocka w dolnej partii planszy, pełną pseudo-losowość doboru klocków, dźwięki i temat muzyczny z oryginalnej gry. Poniżej mój filmik prezentujący ten układ w działaniu: W filmie można zobaczyć krótkie urywki z rozgrywki, proces instalacji szkicu w urządzeniu oraz pełny, pięciominutowy gameplay. Sprzęt Jakiś czas temu zainteresowały mnie klasyczne gry retro dla ATtiny85, ale w repo Attiny-Arduino-Games wszystkie były zaledwie dwu-przyciskowe. Tetris wymagał nieco więcej logiki, ale i tak obsługiwało się go przez naciskanie lub przytrzymywanie jednego z tylko dwóch przycisków, co generowało błędy i nie było zbyt wygodne. Z czasem jednak pojawiła się w repo wersja Tetris Multi Button, w której rozwiązano ten problem wykorzystując odpowiednią kombinację rezystorów i przycisków, dzięki czemu podłączono trzy przyciski pod jeden pin mikrokontrolera. Nie posiadam czystego ATtiny85, ale miałem na stanie Digisparka z tym chipem i postanowiłem złożyć to urządzenie. To chyba pierwsze nagranie wideo takiego zestawu - w sieci brak w sieci brak filmów i opisów wykonania pełnej, pięcio-przyciskowej wersji. Żeby się nie pogubić podczas montażu , korzystając z rozpiski pinów Digisparka i ATtiny85 przeniosłem dostarczony ze sketchem poniższy schemat: na lekko chaotyczną wersję graficzną dla stykowej płytki prototypowej i Digisparka zasilanego baterią 9V: a przy okazji też dla czystego ATtiny85 zasilanego baterią 3V: Poszczególne przyciski odpowiadają za: start nowej gry lub restart aktualnie rozgrywanej, włączenie/wyłączenie układu, obrót, przyspieszenie opadania, przesunięcie w lewo, przesunięcie w prawo. Przytrzymanie przycisku opadania i włączenie restartu gry aktywuje tryb ducha, a przytrzymanie przycisku opadania razem z przyciskiem obrotu podczas restartu ustawia trudny poziom gry, wypełniając dodatkowo błędnie klockami część planszy. Po aktywacji tych opcji grę należy uruchomić przyciskiem przyspieszonego opadania. Wersja na czystym ATtiny85 potrzebuje tylko 3V, bo sketch jest pisany dla obniżonego do 8MHz taktowania zegara. Wersję dla Digisparka zasilam poprzez pin VIN 9V baterią i przy takim poborze wystarczy jej na baaardzo długo. Wymagane do działania 5V przenoszę dodatkowym, pustym goldpinem na lewą stronę płytki prototypowej za pomocą dziesięciocentymetrowego przewodu połączeniowego żeńsko-męskiego. Po zlutowaniu powyższego układu w połączeniu z gołym ATtiny85 i po ubraniu go w miniaturowy brelok do kluczy, koszt (bez baterii) zamknąłby się poniżej 15 złotych. Na Aliexpress ATtiny85 kosztuje 0,80$, ekran Oled 128×64 1.80$, mały piezo buzzer 0,17$, a reszta części to już koszty groszowe. Tym sposobem otrzymujemy pełną grę sterowaną w identyczny sposób, jak w wielkich automatach Arcade lata temu, a do tego zasilaną malutką baterią 3V. Do zestawu zamiast białego ekranu można wybrać ekran niebieski lub żółto-niebieski, ale ponieważ ten ostatni jest dzielony na dwie różne części z odstępem, to nie prezentuje się zbyt atrakcyjnie (co widać na powyższym filmie) i polecam jednokolorowy odpowiednik. Potencjalny brelok mógłby wyglądać tak, jak na obrazku poniżej: Kod Zmiany w kodzie, których dokonałem, nie są duże, ale znaczące w odbiorze gry. Poniżej różnice między moją wersją, dostępną na GitHubie, a oryginałem gry dla ATtiny85: Dodałem losowość doboru klocków – domyślnie ATtiny Tetris generuje tę samą sekwencję klocków w każdej nowej grze, bo użyta funkcja random korzysta w kółko z tej samej tablicy liczb losowych. Programiści nie aktywowali randomSeed, ponieważ wszystkie piny w układzie są już podłączone. Moja wersja przesuwa tablicę liczb pseudo-losowych po każdym rozpoczęciu gry inkrementując seed do EEPROMu i aktywując w ten sposób pełną pseudolosowość doboru klocków (powtarzają się tylko pierwsze dwa). Grając w oryginalną wersję, do piątej linii miałem już ustalony optymalny schemat położenia klocków, przez co gra stawała się nudna. Teraz jest już poprawnie i mam świadomość, że wykorzystanie EEPROMu w randomSeedowaniu ograniczy liczbę rozgrywek do zaledwie 99000 (podana liczba uwzględnia już obecny w kodzie zapis najlepszych wyników również do EEPROMu). Na starcie gry dodałem fragment tematu muzycznego z oryginalnej gry Tetris z 1986 roku – domyślnie brak jakiejkolwiek muzyki w grze. Po wybraniu trybu ducha temat muzyczny jest nieco dłuższy. Dodałem dźwięk opadającego klocka (tylko podczas swobodnego spadania) oraz inny dźwięk dla klocka, który kończy opadanie. Domyślnie dźwięki w tej grze pojawiają się sporadycznie – tylko podczas usunięcia pełnej linii klocków oraz na zakończenie gry. Naprawiłem część błędnie wyświetlanych fontów na ekranie startowym Domyślnie wyłączyłem tryb ducha, który wyświetla podpowiedź o docelowej pozycji klocka. Tryb ducha można aktywować sposobem opisanym powyżej pod konfiguracją przycisków. Ze swoimi zmianami musiałem się zmieścić w sześciu procentach wolnej pamięci. Obecnie pozostaje już tylko 1% wolnego Projekcik jest dość interesujący i co najważniejsze, w pełni użyteczny, więc możliwe, że znajdą się osoby chcące zbudować taki układzik. Jako dodatek zamieszczam więc proces instalacji. Instalacja Kod zabiera blisko 100% pamięci ATtiny85, więc na Digisparku nie mieści się bootloader i nie można uploadować sketcha poprzez USB – należy więc skompilować hexa i wgrać go za pomocą programatora ISP. Jako programatora użyłem Arduino wg poniższego schematu: Na Arduino trzeba wgrać dostępny w przykładach Arduino IDE sketch ArduinoISP. Aby poprawnie skompilować tę wersję dla Digisparka należy w Arduino IDE zastąpić dodatkowy adres URL dla menadżera płytek od Digistump JSONem dla czystego ATtiny85, a następnie wybrać płytkę ATtiny25/45/85, procesor ATtiny85, zegar Internal 8MHz. Następnie z menu szkic eksportować skompilowany program, który zostanie wtedy umieszczony w katalogu źródła sketcha. Na koniec zostaje już tylko wgranie hexa na Digisparka poprzez Arduino programem avrdude. Poniżej przykładowe polecenie kopiujące (z fusami) wykonane na macOS, ale w innych systemach wygląda podobnie: /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -pattiny85 -cstk500v1 -P/dev/cu.usbmodem14101 -b19200 -Uflash:w:/Users/username/Documents/ATtiny-Tetris-Gold/ATtiny-Tetris-Gold.ino.tiny8.hex -U lfuse:w:0xF1:m -U hfuse:w:0xD5:m -U efuse:w:0xFE:m Jak przebiega taki proces można obejrzeć na końcu powyższego filmiku. Poniżej też zdjęcie "programatora" i układu obok siebie. W filmie i na zdjęciach do włączania układu korzystam z przełącznika suwakowego SS22T25, ale lepiej sprawdził się przełącznik prosty ESP1010. Napięcia na przyciskach są istotne i podczas gry trzeba uważać aby nie dotykać rezystorów Ten problem wyeliminuje się po zlutowaniu układu. Najlepszy wynik gry jest również zapisywany w EEPROMie. Ponieważ głośniczek jest podłączony do pierwszego pinu Digisparka, to dodatkowo otrzymujemy LEDowe sygnały świetlne w momencie odtwarzania dźwięków. Po zakończeniu gry Tetris natychmiast przechodzi w tryb uśpienia z minimalnym poborem prądu, jednak do Digisparka dodałem przełącznik włączający/wyłączający zasilanie dla układu – wersja opierająca się wyłącznie na ATtiny85 nie wymaga wykonania tego kroku. Gra chodzi bardzo płynnie, co widać na powyższym filmie, gdy przytrzymuję przycisk przyspieszonego opadania dla kilku klocków pod rząd. Miniaturowy ATtiny Tetris Gold jest bardzo regrywalny (nie nudzi się) i to niesamowite, że udało się go upchnąć na tanim ATtiny85 przy zachowaniu tak dużej funkcjonalności. Serdecznie polecam montaż tego prostego układu. Powiększenia układów i trochę więcej informacji można znaleźć na moim blogu: http://jm.iq.pl/tetris
  2. Przeglądałem w księgarni książkę: https://helion.pl/ksiazki/programowanie-ukladow-avr-dla-praktykow-elliot-williams,prouka.htm#format/d wydaje mi się, że jest warta swojej ceny. Na stronie wydawnictwa [lub w swojej ulubionej księgarni] można zapoznać się z jej opisem. Książka powyższa nie jest wymieniona [nie zauważyłem] na liście książek: https://forbot.pl/blog/ksiazki-o-robotyce-elektronice-i-programowaniu
  3. Witam , wchodzie w temat uC i proszę o pomoc (ATmega8a) DDRB=0b00001111;// ustawienie pinów 0-3 portu B jako wyjście DDRB &= ~(1<<PB7); PORTB |= (1<<PB7); DDRD &= ~(1<<PD7); PORTD |= (1<<PD7); próbowałem też: DDRB=0b00001111;// ustawienie pinów 0-3 portu B jako wyjście //DDRB &= ~(1<<PB7); PORTB |= (1<<PB7); DDRD &= ~(1<<PD7); PORTD |= (1<<PD7); Dlaczego nóżka D7 ma wysokie napięcie (H) a nóżka B7 nie ?
  4. atlantis86

    Jeszcze jeden zegar nixie

    Lampy nixie to chyba najczęściej powracający temat wśród amatorskich projektów elektronicznych. Myśl o skonstruowaniu zegara z takim wyświetlaczem chodziła mi po głowie już wiele lat temu, w tym celu zaopatrzyłem się w zestaw lamp IN-14. Niestety z powodu braku czasu i dużej ilości projektów o wyższym priorytecie zadanie to ciągle było odkładane na później. Może to i lepiej, bo w międzyczasie miłośnicy amatorskiej elektroniki zyskali dostęp do całkiem ciekawych elementów, które mogłem wykorzystać w projekcie. Prezentowany zegar powstał w 2017 roku. Jego głównym elementem jest mikrokontroler Atmega644, który wykonuje wszystkie operacje związane z odmierzaniem czasu i obsługą multipleksowanego wyświetlacza. Dodatkowo zegar został wyposażony w moduł WiFi z układem ESP8266, pracujący pod kontrolą własnego programu. Zadaniem modułu jest cykliczne sprawdzanie czasu na serwerze NTP i korygowanie ustawień lokalnego RTC. Urządzenie posiada też układ scalony FT232, dodający możliwość konfiguracji przez USB. Stałe napięcie około 180V jest generowane za pomocą przetwornicy boost na układzie MC34063A. Oprogramowanie zegara zostało wyposażone w funkcję automatycznego wykrywania czasu letniego i zimowego. Na płycie czołowej znajduje się przełącznik umożliwiający włączenie trybu, w którym wyświetlany jest czas UTC - funkcja ta została dodana w związku z moimi radioamatorskimi i krótkofalarskimi zainteresowaniami. Konstrukcja została zamontowana wewnątrz obudowy ze sklejki wycinanej laserowo. Fizycznie urządzenie składa się z dwóch osobnych płyt, Jedna z nich mieści zestaw lamp nixie, druga elektronikę sterującą.
  5. dkradke

    Sterownik pieca CO

    Kolega modernizując u siebie w mieszkaniu system ogrzewania poprosił mnie o wykonanie jakiegoś sterownika do pieca CO wraz ze sterowaniem dmuchawy. Tak powstał niewielki regulator, który miał mieć na celu prostotę i czytelność. Główne elementy użyte do budowy sterownika to: LCD 2x16 HD44780 ATMEGA8 - zastosowany procesor DS18B20 - czujnik mierzący temperaturę na piecu przekaźnik na 5V taki jak tutaj: przekaźnik Głównym zadaniem jest uruchamianie pompy obiegowej na podstawie zadanej temperatury na piecu. Dodatkową funkcją jest tryb rozpalania, który w początkowej fazie uruchamia dmuchawę. Jest to bardzo przydatna opcja, przyspieszająca proces rozpalania w piecu. Sterowanie jest bardzo proste, odbywa się z wykorzystaniem tylko trzech przycisków. W podstawowym widoku regulujemy zadaną temperaturę na piecu, która decyduje o tym czy pompa ma zacząć pracować czy nie. Regulator jest prostą nastawą z histerezą. Po wejściu w menu możemy dodatkowo zmienić: temperaturę wyłączenia dmuchawy. Jeżeli piec jest zimny i włączymy opcję rozpalania to po osiągnięciu już stosunkowo niewielkiej temperatury dmuchawa zostanie wyłączona histerezę pracy regulatora maksymalne czasy pracy pompy i dmuchawy Wszystko zostało zamknięte w obudowie natynkowej, a sterownik umieszczony obok pieca w pomieszczeniu gospodarczym. Układ składa się z dwóch płytek rozdzielając część wysokiego napięcia i sterowania. Zdecydowałem się na umieszczenie kompletnego zasilania w urządzeniu, transformator, bezpiecznik i kilka dodatkowych elementów. Powodem tego było to, że sterownik jest używany przez kogoś innego a dołączany zasilacz może się zgubić i wtedy nie mam kontroli na tym jaki zamiennik zostanie użyty. Tutaj jest pokazany schemat i wzór płytki: Płytka została wykonana w domowych warunkach metodą żelazkową. Dla poprawy czytelności wykorzystałem możliwość definiowania własnych znaków co pozwoliło uzyskać duże cyfry widoczne z daleka. Niżej pokazuje jak uzyskać takie efekt. - najpierw musimy zdefiniować poszczególne elementy cyfr i ładujemy je do pamięci wyświetlacza uint8_t BigDigitDefChar[][8] = { {15,7,32,32,32,32,3,7}, {32,32,32,32,32,32,7,15}, {28,30,30,30,30,30,30,28}, {7,15,15,15,15,15,15,7}, {31,31,32,32,32,32,32,32}, {32,32,32,32,32,32,31,31}, {31,31,32,32,32,32,31,31}, {30,28,32,32,32,32,24,28} }; for(uint8_t i=0;i<8;i++) lcd_defchar(i,BigDigitDefChar[i]); - następnie tworzymy tablicę która poskleja nam te segmenty w cyfry char* BigDigit[][2]={ {"\x83\x84\x82","\x83\x85\x82"}, //0 {" \x82"," \x82"}, //1 {"\x80\x86\x82","\x83\x85\x85"}, //2 {"\x80\x86\x82","\x81\x85\x82"}, //3 {"\x83\x85\x82"," \x82"}, //4 {"\x83\x86\x87","\x81\x85\x82"}, //5 {"\x83\x86\x87","\x83\x85\x82"}, //6 {"\x83\x84\x82"," \x82"}, //7 {"\x83\x86\x82","\x83\x85\x82"}, //8 {"\x83\x86\x82","\x81\x85\x82"} //9 }; - teraz już tylko wystarczy użyć odpowiedniej funkcji do wyświetlania. Funkcja ta korzysta z obsługi R/W i odczytuje stan busy flag co pozwala na odczytanie pozycji kursora. Jeśli ktoś będzie chciał podłączyć R/W do GND to musi przerobić tą funkcję tak aby przekazać do niej pozycję kursora void lcd_big_int(int val) { uint8_t pp,x,y; char bufor[17]; char *wsk=itoa(val, bufor, 10); //zamieniamy całą liczbę na pojedyncze znaki ACSII np. 1234 -> '1','2','3','4' register uint8_t znak; while ( (znak=*(wsk++)) ) //pętla jest powtarzana po wszystkich indeksach tablicy bufor, aż napotka '\0' { pp = check_BF() & 0b01111111; //odczytujemy aktualną pozycję kursora - busy flag wyświetlacza y = pp & 0xF0; //wyodrębniamy nr wiersza x = pp & 0x0F; //wyodrębniamy pozycję x znak -= 0x30; //zamieniamy kod ascii na rzeczywistą wartość dziesiętną np '7' -> 7; będzie to nasz indeks do tablicy lcd_str(BigDigit[znak][0]); //ładujemy na wyświetlacz górną część cyfry lcd_write_cmd( (0x80 + y + 0x40 + x) ); //wracamy kursorem na domyślną pozycję x, ale o jeden wiersz niżej lcd_str(BigDigit[znak][1]); //ładujemy na wyświetlacz dolną część cyfry lcd_write_cmd( (0x80 + y + x + 0x03) ); //ustawiamy kursor zaraz za cyfrą w wierszu domyślnym, czyli takim w którym wywołano funkcję } } uint8_t check_BF(void) { CLR_RS; return _lcd_read_byte(); } Jest to prosty sposób na bardzo fajne wyświetlanie liczb, które są widoczne z daleka.
  6. Witam, zbudowałem układ zgrzewarki, ale dopiero teraz zauważyłem, ze nie mam jak zaprogramować mikrokontroler at89c2051 i chcaiłem go zastąpic mikrokontrolerem ATTiny2313 i tutaj nasuwa się pytanie czy jest jakis program, który zmieni mi kod programowania z atmela na attiny?
  7. W ramach pracy magisterskiej wykonałem dedykowany sterownik do stacji uzdatniania wody, jako alternatywę dla sterowników PLC. Sam temat pracy został zaproponowany przeze mnie dlatego, że lubię robić coś bardziej kreatywnego niż pisanie suchego tekstu. Promotorowi bardzo się to spodobało i nie było żadnego problemu aby przystąpić do tego zagadnienia. Pewnie niektórzy się zastanowią dlaczego akurat stacja uzdatniania wody? W tamtym czasie pracowałem w automatyce przemysłowej i głównie robiliśmy właśnie takie obiekty. Zawsze były one robione na sterownikach PLC, są to drogie zabawki. Pomyślałem, że można zrobić prototyp takiego dedykowanego sterownika do tego rodzaju pracy, a w przyszłości dostosować go do różnych obiektów, gdzie jest różna ilość zaworów, pomp, zbiorników itp, ale zawsze jest ta sama część wspólna czyli sterowanie samym procesem uzdatniania. Sterownik został oparty o procesor Atmega128, a wszystko zostało dopasowane do obudowy na szynę DIN Z104J. Podstawowe cechy to: 32 wejścia cyfrowe 16 wyjść cyfrowych 5 wejść analogowych zegar RTC RS485 zdalny dostęp przez przeglądarkę www Sam procesor ma zbyt małą ilość wyprowadzeń aby obsłużyć wszystkie sygnały sterujące. Aby zwiększyć ilości wejść/wyjść wykorzystałem ekspandery na I2C - PCF8574. Podzieliłem całość na logiczne moduły, podobnie jak to jest w sterownikach PLC: 4 moduły DI - cyfrowe sygnały wejściowe 2 moduły DO - cyfrowe sygnały wyjściowe 1 moduł AI - analogowe sygnały wejściowe moduł RS485 Na wejściach cyfrowych do zabezpieczenia zastosowałem optoizolatory takie jak są wykorzystane np. tutaj TLP281. Na poniższym schemacie przedstawiony jest jeden taki blok. Masy są rozdzielone, co może w prost nie wynika ze schematu. Układ wyjściowy jest zrealizowany w oparciu o UDN2987 Moduł Analogowy został skonstruowany tak aby przyjmować sygnały prądowe 4..20mA. Jest to przemysłowy standard najczęściej wykorzystywany w czujnikach. Cechuje go prostota obsługi i uniwersalność, a fakt, że dolny zakres pomiarowy to 4mA ułatwia to detekcję wadliwego czujnika. W celu pokazania całego procesu uzdatniania wody wykonałem model o wymiarach 100cm x 50cm ukazujący różne etapy pracy takiej stacji, jak: uzdatnianie płukanie zbiorników ze złożem uzdatniającym napowietrzanie zbiorników napełnianie zbiornika retencyjnego chlorowanie układu w celu dezynfekcji dostarczanie uzdatnionej wody do odbiorców Na makiecie umieszczone zostały diody sygnalizujące otwarcie poszczególnych zaworów, co pozwala w łatwy sposób zaobserwować jak zachodzi cały proces pracy takiej stacji. Zamontowane są również potencjometry przy przepływomierzach, są one wpięte w pętle prądową aby zachować zgodność z prawdziwymi czujnikami przepływu. Na tej podstawie można zliczać ile wody zostało uzdatnionej, dobierać interwały pracy i wyznaczać potrzebę płukania filtrów. Całe sterowanie wykonałem w oparciu o web serwer z wykorzystaniem ASP.NET, tworząc taką mini SCADe. Wizualizacja wiernie odzwierciedla cały model. Serwer to aplikacja na system Windows, do którego podpięty jest moduł USB <-> RS485 zapewniający komunikację ze sterownikiem. Mamy podgląd na żywo całego procesu, dane są odświeżane automatycznie na bieżąco. W aplikacji możemy ustawić wszystkie parametry pracy sterownika, podglądać alarmy i włączać na żądanie wybrane etapy takie jak płukanie filtrów czy pobieranie wody ze studni głębinowej. Sam proces uzdatniania wody może nie jest technologicznie skomplikowany, ale jest bardzo ciekawy od strony automatyki. Jako ciekawostkę dodam, że złoże które znajduje się w zbiornikach filtrujących to po prostu odpowiednie kruszywo wiążące konkretne cząsteczki z wody, najczęściej jest to odżelaziacz i odmanganiacz.
  8. Witam! Chciałbym przedstawić wam moją konstrukcję, która stała się przedmiotem mojej pracy inżynierskiej. Mechanika: Konstrukcja mechaniczna w zasadzie oparta jest na 2 płytkach PCB. Do płytki głównej zamontowane są dwie kulki podporowe, a także silniki pololu o przekładni 1:10 co stanowi napęd robota. Z przodu zamontowana jest płytka z podstawą zawierająca uchwyty do czujników ultradźwiękowych. Taki sam uchwyt pod czujnik znajduje się również na 'ogonie' robota - jest on nie używany i został zamontowany eksperymentalnie. Na przedłużonej osi silników zostały zamontowane magnesy enkoderów magnetycznych co ilustruje poniższa fotografia. Elektronika: Sercem robota jest mikrokontroler AVR ATmega162, którego zadaniem jest sterowanie robotem w tym: obsługa enkoderów, sterowanie silnikami, odbiór informacji z mikrokontrolera slave nt. odległości mierzonych przez czujniki, realizację algorytmów sterowania, realizacja połączenia bluetooth, obsługa wyświetlacza LCD hd44780. Drugi mikrokontroler również AVR, ATmega328 realizuje tylko i wyłącznie obsługę czujników odległości HC-SR04. Pomiary normalizuje i wysyła interfejsem SPI do jednostki głównej ATmega162. Na pokładzie robota znajdują się również dwa enkodery magnetyczne AS5040 pracujące w pętli sterowania regulatora PI silników. Enkodery te pracują w trybie defaultowym czyli wyjście kwadraturowe, rozdzielczość 2x256. Silniki sterowane są poprzez mostek H L293. Komunikacją z robotem zajmuje się moduł bluetooth bt222 - czyli komunikacja jest przez UART mikrokontrolera. Główny mikrokontroler jest taktowany zewnętrznym kwarcem 16Mhz co przy takiej ilości obsługiwanych urządzeń i wykorzystywanych interfejsów było po prostu konieczne, z kolei mikrokontroler atmega328 jest taktowany zewnętrznym kwarcem jednak z powodu lepszej podstawy czasowej, która jest konieczna do dokładnych odczytów z czujników odległości. Na wyświetlaczu LCD są wyświetlane aktualnie mierzone wartości odległości czujników. Automatyka: Zostało wspomniane, że silnikami steruje algorytm regulatora PI. Aby obliczyć jego nastawy została przeprowadzona identyfikacja transmitancji. W tym celu wykorzystałem UART do przesyłania aktualnej prędkości silników oraz środowisko Matlab do wizualizacji danych na wykresie. Z wyliczeń wyszło, że silniki z zastosowanymi kołami mają transmitancję: G(s)=107/(0.19s+1) Po obliczeniu nastaw regulatora i zastosowaniu w praktyce okazało się, że można jeszcze troszkę dopieścić nastawy i ostatecznie wykresy odpowiedzi skokowej bez i z regulatorem wyglądają następująco: Software: Napisane w C w środowisku Eclipse. Umożliwia robotowi 3 tryby. Tryb avoid. W trybie tym robot ma za zadanie omijać przeszkody wykorzystując regulator rozmyty Takagi-Sugeno. Wykorzystuje w tym celu odczyty z czujników odległości. Tryb goal seeking. Robot podąża do celu czyli do odebranych przez bluetooth współrzędnych kartezjańskich podanych w [mm], zakładając, że miejsce od którego zaczyna lub dostał nowy zestaw współrzędnych, ma współrzędne 0,0. W trybie tym regulator Takagi-Sugeno ma za zadanie na podstawie zaimplementowanej odometrii oraz współrzędnych końcowych sterować robotem w celu osiągnięcia zadanego położenia. Problem algorytmu przedstawia ilustracja: Tryb avoid + goal seeking. Jest to połączenie dwóch wcześniej opisanych trybów. W trybie tym działają równocześnie obydwa wcześniej opisane algorytmy, jednak na wejście regulatorów PI sterujących silnikami jest podawany zbalansowany sygnał z obu algorytmów. Tzn w zależności od najmniejszej odległości od przeszkody mierzonej przez któryś z czujników jest obliczany procentowy udział wartości sterowania od dwóch algorytmów. Brzmi skomplikowanie ale takie nie jest. Najlepiej zobrazuje to wzór: V=K*Vg+(1-K)*Va gdzie V jest prędkością zadaną na regulator PI silnika, Vg jest prędkością wynikającą z algorytmu goal seeking, Va jest prędkością wynikającą z algorytmu avoid, K jest parametrem, który przyjmuje wartość z przedziału 0-1 w zależności od mierzonej minimalnej odległości do przeszkody. Robota wprowadza się w odpowiedni tryb za pomocą dwóch przycisków lub poprzez interfejs bluetooth. Odpowiednie tryby sygnalizują diody LED. W celu przesłania komendy zawierającej współrzędne celu najpierw należy wprowadzić robota w odpowiedni tryb, a następnie wysłać do niego wg stworzonego prze zemnie protokołu dane. Protokół wysyłania danych jest następujący: X±⌴⌴⌴Y±⌴⌴⌴& gdzie +- – znak współrzędnej, _ – wartość współrzędnej. Testy. Konstrukcja została przetestowana pod względem dokładności odometrii. Robot podczas licznych testów na bieżąco wysyłał swoje współrzędne, które w dalszej kolejności były obrabiane w środowisku Octave do przyjemnych w analizie wykresów. Przykładowy wykres drogi, którą pokonał robot na 'placu manewrowym' w trybie avoid: ... oraz rzut z góry na 'plac manewrowy': U góry pozycja początkowa, na dole końcowa robota. Cały ten obszar był dookoła ogrodzony ścianką. Słowa samokrytyki Co bym zmienił ? Czujniki. Ze względu na problematyczność wykrywania małych przeszkód lub gdy płaszczyzna przedmiotu uniemożliwia odbicie się fali ultradźwiękowej w stronę odbiornika. Zdarza się, że z powodu gubienia przeszkód robot po prostu w nie wpada. Najciekawsze fragmenty programu: Regulatory PI: //######################################## REGULATOR PRĘDKOŚCI ############################################ erra = vl-Va;//liczenie błedu prędkości errb = vp-Vb; if(ua<1023&&ua>-1023)Ca = Ca+(erra*dt);//całka błędu ua = kp*(erra + Ca/Ti);//regulator PI //P I if(ub<1023&&ub>-1023)Cb = Cb+(errb*dt);//całka błędu ub = kp*(errb + Cb/Ti);//regulator PI //P I if((ua<10)&&(ua>-10))ua=0; if((ub<10)&&(ub>-10))ub=0; motor_set(ua,ub);//ustawia sterowanie silników Regulator rozmyty Takagi-Sugeno trybu goal seeking: inline void PsiZ2Vlr(float *Psi, float *z, int16_t *vl,int16_t *vp) { float PSI[3]; float XL[6],XR[6]; float NR,FR,L,S,P,VL=0,VP=0,m=0; uint8_t i,k; ///////////////////////////////LICZENIE PRZYNALEŻNOŚCI////////////////////////////////// if(*z<=100)NR=-0.01*(*z)+1;else NR=0;//jak bardzo blisko jest cel if(*z<=100)FR=0.01*(*z);else FR=1;//jak bardzo daleko jest cel if(*Psi<=0)L=-0.3183*(*Psi);else if(*Psi<-M_PI)L=1;else L=0; if(*Psi<=0)S=0.3183*(*Psi)+1;else if(*Psi<-M_PI)S=0; else if(*Psi>M_PI)S=0;else S=-0.3183*(*Psi)+1; if(*Psi>=0)P=0.3183*(*Psi);else if(*Psi>M_PI)P=1;else P=0; /////////////////////////////////////TABLICA REGUŁ////////////////////////////////////// PSI[0]=L; PSI[1]=S; PSI[2]=P; //NR; XL[0]=-4000;XR[0]=4000; XL[1]=0;XR[1]=0; XL[2]=4000;XR[2]=-4000; //FR; XL[3]=-4000;XR[3]=4000; XL[4]=4000;XR[4]=4000; XL[5]=4000;XR[5]=-4000; /////////////////////////////obliczanie prędkości silników////////////////////////////// for(k=0,i=0;k<3;k++,i++)//pierwszy wiersz tabeli { VL+=NR*PSI[k]*XL[i]; VP+=NR*PSI[k]*XR[i]; m+=NR*PSI[k]; } for(k=0;i<6;k++,i++)//drugi wiersz tabeli { VL+=FR*PSI[k]*XL[i]; VP+=FR*PSI[k]*XR[i]; m+=FR*PSI[k]; } *vl=(int16_t)VL/m; *vp=(int16_t)VP/m; } Obsługa czujników odległości: //PRZERWANIE OD CAPTURE PIN ISR(TIMER1_CAPT_vect) { if( (TCCR1B & (1<<ICES1)) ) { LastCapture = ICR1;//jesli zbocze narastajace, zlap ICR1 } else { PulseWidth = ICR1 - LastCapture;//Jeśli zbocze opadajace oblicz PW pomiar=0;//wyzeruj flagę pomiaru } TCCR1B ^= (1<<ICES1);//Zmiana zbocza wyw. przerwanie } Mam nadzieję że robocik się podoba. W razie pytań proszę śmiało. Całości kodu nie udostępniam ze względu na prawa autorskie niektórych funkcji bibliotecznych. Co mogłem udostępniłem. Pozdrawiam was wszystkich !
  9. Witam, mam pytanie odnośnie modułu GY-521 (mpu6050). Mianowicie dane z akcelerometru dla osi Z są przekłamane o wartość ok. -0,2 g. Tz. gdy trzymam układ poziomo otrzymuję 0,8 g, a gdy odwrócę układ o 180 stopni to mam 1,2 g. Więc różnica do 1 g wynosi 0,2. Czy mogę ująć to jako offset i po prostu "na sztywno" odjąć w programie ? W nocie jakoś nic na ten temat nie ma, ale na anglojęzycznych forach temat offsetu jest poruszany, głównie jako element, argument gotowej biblioteki do Arduino (piszę program w C na AT32). Takie same wyniki otrzymuję odpalając układ na Arduino na gotowcach. Pozdrawiam.
  10. Jak w nazwie tematu, znalazłem stary zestaw EvB4.3 który kiedyś po nieudanych próbach porzuciłem i postanowiłem ponownie spróbować zaprogramować mikrokontrolery. Tym razem po żmudnych dniach czytania i prób udało mi się napisać swoje własne działające programy do tego zestawiku. Jednak działa on o wiele szybciej niż powinien. Dopiero przy kilkunastu tysiącach milisekund opóznienia ustawionego w programie daje mi około sekundę realnego opóżnienia. Domyślam się, że to coś związanego z taktowaniem, rezonatorem kwarcowym lub czymś podobnym. Używałem Eclipse z pluginami do AVR. Mam ustawione w opcjach taktowanie na 1000000. Po skompilowaniu programu włączam avrdude-GUI i ustawiam takie dodatkowe opcje: -P ft0 -B 19200 -P ft0 żeby ustawić dobry port, a -B 19200... no właśnie nie wiem po co, ale tak zalecają EvB. Więc to takie dodatkowe pytanie, co to daje (zmiana tego zdaje się nic nie zmieniać w szybkości programu). Proszę o pomoc. Dziękuję z góry
  11. krolikbest

    Robot z drewna

    Witam, cieszę się, że istnieje takie forum dla zapaleńców robotyki i w ogóle automatyzacji. Chciałem Wam przedstawić mój najnowszy projekt pt. Robot z drewna Tak naprawdę tylko ramiona są wykonane z drewna, sterowanie jest oparte o RasPi3, mikrokontrolery atmega8 (na każde serwo jedna atmega, jest pięć serw) i kilka innych elementów elektronicznych. Koła zebate są wykonane z aluminium i starałem się, aby w miarę możliwości co się da, było wykonane z niego. Projekt ten jest rozwojowy, chodzi o opracowywanie z mojej strony algorytmu nauki ruchu ramieniem robotycznym i ogólnie napisaniu aplikacji sterującej wszystkimi procesami robota. Oprogramowanie napisane jest w środowisku Lazarus, jest to odmiana języka Object Pascal. Atmegi oprogramowałem w Bascomie.RasPi komunikuje się z atmegami po protokole i2c, choć przyznaję, że lepszym jest wykorzystanie rs485. Padło na i2c bo dotychczas niewiele miałem z nim do czynienia i zwyciężyła ciekawość. Ramię ma (lub wkrótce będzie miało) możliwość wykonywania zaprogramowanej w trybie online trajektorii przemieszczenia efektora końcowego, czyli przemieszczaniu jednego serwa lub kilku na raz. Tworzenie tej trajektorii polega na zapamiętywaniu pozycji enkoderów i w ten sposób tworzenia punkt po punkcie ścieżki. Pozdr, Marcin
  12. Konrad94

    Takeshi

    Cześć ! Chciałbym przedstawić moją pierwszą poważną konstrukcje robota minisumo, która obejmuje temat mojej pracy inżynierskiej. Praca zajęła mi 4 miesiące nie licząc pracy pisemnej - przez ten czas praca objęła: • Przegląd typowych rozwiązań technicznych podobnych konstrukcji • Projekt platformy w programie Autodesk Inventor Professional 2015 • Projekt ideowy schematu układu elektronicznego w programie Eagle 7.7.0 • Projekt dwustronnych obwodów drukowanych w programie Eagle 7.7.0 • Złożenie konstrukcji: wytrawienie obwodów drukowanych i montaż SMD/THT • Oprogramowanie mikrokontrolera przy użyciu programu Atmel Studio 6.2 oraz testy Założeniem projektowym było stworzenie uniwersalnego robota - uniwersalność tą udało się uzyskać, dodając panel użytkownika, czyli wyświetlacz LCD oraz klawiaturę. Dzięki wyświetlaczowi LCD, robot posiada dodatkowe funkcje informacyjne, natomiast dzięki klawiaturze – możliwe jest dokonywanie różnych ustawień i testów. Oczywiście dla niektórych użytkowników panel ten będzie wydawał się zbędnym dodatkiem w tego typu konstrukcjach, dlatego na wstępie zaznaczam, że jest to robot minisumo bardziej o charakterze edukacyjnym. Innymi założeniami, które udało się zrealizować to: a) Odejście od gotowych platform programistycznych - zaprojektowano od podstaw systemu mikroprocesorowy w środowisku Atmel z użyciem programatora AVR Dragon. b) Bazowanie na komponentach firmy Analog Devices - zaprojektowano układ elektroniczny z wykorzystaniem układów scalonych oferowanych przez czołowego producenta przyrządów półprzewodnikowych – firmy Analog Devices. Głównym źródłem informacji stały się dokumentacje elementów, wedle których powstawały poszczególne moduły robota. W sumie wykorzystano 6 układów scalonych tejże firmy. c) Redukcja zakłóceń – na etapie projektowania obwodu drukowanego – zastosowano różne techniki optymalizujące działanie układu elektronicznego. d) Budowa kanapkowa robota – pierwsza tak poważna konstrukcja wymagała przemyślanej budowy, którą w razie problemów, można byłoby modyfikować. Tak powstała cztero – warstwowa struktura robota: aluminiowa podstawa, dwie płytki drukowane oraz panel użytkownika. Zasilanie Źródłem zasilania są ogniwa litowo - polimerowe firmy Redox 1100 mAh o napięciu 7,4 V. Logika zasilana jest napięciem 3,3 V, natomiast optoelektronika (czujniki IR, wyświetlacz) napięciem 5 V. Układ zabezpieczony jest przed odwrotną polaryzacją tranzystorem MOSFET. W trakcie działania silników, możliwa jest opcja podglądu aktualnego napięcia - stworzono układ pomiarowy z wykorzystaniem między innymi dzielnika napięcia i sprzętowego ADC mikrokontrolera. Mikrokontroler Systemem mikroprocesorowym sterującym całym układem elektronicznym jest 8 bitowy mikrokontroler ATmega644PA. Wybrano jeden z najbardziej rozbudowanych mikrokontrolerów 8 – bitowych oferowanych przez producenta Atmel. Wybór był przede wszystkim podyktowany ilością wejść/wyjść, ponieważ wykorzystano wszystkie piny mikrokontrolera. Ponadto stosunkowo wysoka pojemność pamięci FLASH, SRAM, EEPROM wynika z chęci dalszej rozbudowy części programowej robota. Napęd i sterowanie Do napędu wykorzystano popularne silniki Pololu HPCB 50:1 z obustronnym wałem oraz wyposażono je w kompatybilne enkodery magnetyczne równiez firmy Pololu Sterownikiem silników jest popularny scalony mostek H o nazwie TB6612. Jako jeden z niewielu oferowanych sterowników, umożliwia przepływ stosunkowo dużego ciągłego prądu wyjściowego o wartości maksymalnej 2 A. Taką wydajność prądową udało się uzyskać scalając dwa kanały mostka H, w rezultacie jeden mostek H steruje jednym silnikiem. Czujniki Wszystkie czujniki na swoich wyjściach wystawiają sygnał cyfrowy. Wykorzystano popularne czujniki KTIR0711S w roli czujników ringu. Aby uzyskać cyfrowy odczyt skorzystano z zewnętrznego komparatora AD. Możliwe jest ustawienie progu czułości czujników na poziomie programowym, funkcję tą zapewnia potencjometr cyfrowy AD. Po zapoznaniu się z bardzo dobrym artykułem na stronie https://www.forbot.pl/forum/topics61/czujnik-optyczny-vt4761.htm zdecydowałem się stworzyć własne czujniki przeciwnika. Po za tym nie chciałem inwestować w stosunkowo drogie, powszechnie stosowane czujniki SHARP . Udało się skonstruować czujniki wykrywające obiekty w odległości nawet ok. 30 cm. Program Mówi się, że hardware to tylko połowa sukcesu i tak też sprawdziło się w przypadku mojej konstrukcji Dużo czasu zajęło mi napisanie dobrego programu. Panel użytkownika przysporzył dłuższej pracy nad programem. W rezultacie powstał bardzo rozbudowany kod rozłożony na kilka własnych bibliotek. Jakkolwiek uważam prace nad projektem zakończoną i udaną jak na pierwszą autonomiczną konstrukcję. Program powstał w języku C. Zastosowano tzw. sterowanie bez namysłu, czyli szybkie podejmowanie decyzji przez robota podczas walki na zasadzie określenia par typu bodziec - odruch. Zewnętrznymi źródłami przerwań są sygnały pochodzące od enkoderów oraz czujników ringu. Na wszystkie pytania chętnie odpowiem w komentarzach Pozdrawiam, Konrad Galeria: Filmy:
  13. brzeszczot

    Krzyżak

    Witam wszystkich. Mam na imię Artur i chciałbym zaprezentować robota (hexapod), zaprojektowanego i skonstruowanego przeze mnie który nazywa się Krzyżak. Na zdjęciu po lewej Krzyżak wersja pierwsza, prototypowa zaś po prawej wersja udoskonalona. Dwa filmy: Opis robota: - 6 nóg po 3 serwa czyli 18 serw (najtańsze jakie istnieją czyli SG90) - mikrokontroler Atmega328 taktowana kwarcem 20MHz. - oprogramowanie C + AVR - zasilanie akumulator 7,4V 800mAh, 10C (10 minut chodzenia) - sterowanie bluetooth za pomocą telefonu z Android - autorska aplikacja (min. Android 4.0) Aktualnie pracuję nad rozszerzeniem o sensory i omijanie przeszkód. Płytkę elektroniczną zaprojektowałem z myślą o wyprowadzeniach rejestrów do przyszłego podłączenia czujników itp. Jak ktoś ma pytania bardziej szczegółowe chętnie odpowiem. Docelowo robot będzie możliwy do kupna już niebawem. Dziękuję za uwagę, Artur
  14. Witam, niedawno zacząłem interesować się robotyką i nagle zaszła potrzeba poprawy ocen w szkole Robotem tym zaliczyłem na 6 z techniki, oraz na 4 z fizyki (niestety musiałem go oddać Pani od fizyki). Zrobiłem go według Przepisu na robota. Napęd to dwa przerobione serwa eco-16, podwozie z plecówki, dwa tylne kółka modelarskie i przednie obrotowe z obi, z przodu czarny zderzak z listewki. Poniżej zdjęcia i filmik. Jeździ wolno bo służy do celów pokazowych Wszystkim którzy mi pomogli przy jego budowie Serdecznie Dziękuję!
  15. Witam wszystkich serdecznie Chciałbym przedstawić wielozadaniowego robota o nazwie KT-tronic. Pracowałem nad nim dość długo, ze względu na złożoną budowę. Robot ten może pracować w trzech trybach wybieranych przy pomocy odpowiednich przełączników. Te tryby to: • Line Following • Zdalne sterowanie • Autonomiczna jazda z omijaniem przeszkód Ten ostatni nie jest gotowy. Jest to jedynie plan na przyszłość. Konstrukcja mechaniczna Głównym materiałem, z którego została wykonana konstrukcja robota, jest polistyren wysoko udarowy HIPS. Materiał ten wybrałem ze względu na łatwość obróbki. Wszystkie części zostały zaprojektowane w programie SolidWorks, następnie każda z osobna wydrukowana i „przeprasowana” na kawałki polistyrenu przy pomocy żelazka. Należy jednak ograniczyć czas prasowania, ponieważ polistyren może się odkształcać pod wpływem temperatury. Tak gotowe elementy wycinałem zwykłym nożem do tapet i szlifowałem papierem ściernym. Napęd robota stanowią cztery silniki Pololu o przełożeniu 100:1, sterowane przy pomocy dwóch sterowników TB6612FNG. Do nich dołączone są koła o średnicy 80mm. Silniki zasilane są za pomocą akumulatora Li-Pol 11,1V o pojemności 900mAh. W robocie znajduje się 9 serwomechanizmów. Najmocniejsze dwa poruszają całymi rękoma. Ich moment wynosi 12kg*cm. Każda ręka złożona jest z czterech serw. Dziewiąte serwo porusza korpusem. Wszystkie serwomechanizmy otrzymują napięcie 6V, które zapewnia przetwornica step-down D24V22F6. Przetwornica zasilana jest tym samym pakietem Li-Pol co silniki. Całość waży 4,1kg. Wysokość robota to 42cm, a długość jednej ręki to 30cm. Elektronika Płytka PCB została wykonana w firmie Satland. Pracą robota steruje mikrokontroler ATmega2560. Wybrałem ten procesor głównie ze względu na ilość sprzętowych kanałów PWM. Zasilanie pochodzi z pakietu Li-Pol 7,4V, stabilizator liniowy stabilizuje napięcie do 5V. Zdecydowałem się na zastosowanie dwóch akumulatorów, głównie po to, by oddzielić zasilanie silników od zasilania procesora. Pozwoliło to zmniejszyć wpływ zakłóceń generowanych przez silniki. Na płycie dodatkowo znajdują się: • Mostki TB6612 • Złącze do programowania • Buzzer • Diody sygnalizujące poprawnie wykonane kolejnych części programu • Dzielniki napięcia. Przy pomocy wejść ADC mierzone jest napięcie z akumulatorów zasilających. Przy zbyt wysokim rozładowaniu robot przestanie pracować i buzzer zacznie piszczeć • Goldpiny do podłączenia czujników KTIR, wyświetlacza LCD, czujników HC-SR04 i odbiornika PS2 do komunikacji bezprzewodowej Tryby pracy: Line Following 5 transoptorów odbiciowych KTIR0711S znajduje się na płycie umieszczonej pod podwoziem robota. Czujniki znajdują się na wysokości ok. 1cm od podłogi. Jest to pewne utrudnienie podczas np. zdalnego sterowania, ponieważ robot ma trudności z pokonywaniem wyższych progów Zdalne sterowanie Do zdalnego sterowania wykorzystałem gamepad od PS2 z odbiornikiem. Dane przesyłane są do mikrokontrolera poprzez SPI. Maksymalny zasięg wynosi 8m. Omijanie przeszkód Robot będzie wykorzystywał dwa czujniki ultradźwiękowe HC-SR04. Jeden umieszczony zostanie na dole konstrukcji, a drugi na samej górze, być może przyczepiony do serwomechanizmu, żeby zwiększyć kąt wyszukiwania przeszkód. Poniżej przedstawiam zdjęcia poszczególnych elementów oraz etapy budowy Zdjęcie poniżej przedstawia projekt robota wykonany w programie SolidWorks Poniżej filmik, na którym robot wykonuje ruchy sekwencyjne. Polecam ściszyć głośność, ponieważ w kilku momentach odsuwam krzesło z tabletem nie chciałem, by kamera drgała przy chodzeniu, więc zastosowałem się do takiego sposobu Plany na przyszłość: • Pomalować robota, żeby zamaskować niedoskonałości i ślady łączenia części • Dokończyć trzeci tryb tj. omijanie przeszkód • Koniecznie muszę wzmocnić mocowanie korpusu z serwomechanizmem do podstawy. Robot zbyt mocno buja się na boki, czego serwo może po pewnym czasie nie wytrzymać
  16. Mariann

    Pika

    Witam! Na wstępie chciałbym podziękować użytkownikowi Hudyvolt, który zaraził mnie zamiłowaniem do robotyki oraz "za rękę" przeprowadził przez budowę pierwszej konstrukcji - Dziękuję! Chciałbym Wam przedstawić Pikę - mojego trzeciego i zarazem najmłodszego robota kategorii LF standard. Jest to udoskonalona wersja mojego poprzedniego flagowca - Dzidy, z którą udało mi się odnieść pierwsze zwycięstwo na zawodach. Konstrukcja mechaniczna Na budowę robota składają się standardowo 2 płytki PCB (homemade) - płyta główna stanowiąca jednocześnie podwozie robota oraz listewka z czujnikami. Spójność robota zapewnia pojedyncza listewka z włókna węglowego. Aluminiowe felgi zostały wykonane przeze mnie w technologii WEDM, opony natomiast zostały odlane z poliuretanu 30'. Jako ślizgacz zapobiegający unoszeniu się przodu robota podczas nagłych przyspieszeń zastosowałem kondensator ceramiczny - znakomita odporność na ścieranie! Z kolei przód opiera się na 2 spiłowanych koralikach, które znalazłem gdzieś w domu. Napęd 2x Silnik Pololu HP 10:1 - spisują się rewelacyjnie. Elektronika Za realizację programu odpowiada uC ATmega128, do której za pośrednictwem komparatorów analogowych podłączonych jest 14 czujników KTIR. Stan każdego z czujników wyświetlany jest na dedykowanej do tego diodzie LED. Pozwala mi to na błyskawiczną diagnozę poprawności odczytów - kilka razy uratowało mnie to przed żmudnym poszukiwaniem przyczyny dziwnego zachowania robota. Zdarzało się, że czujniki ulegały delikatnemu uszkodzeniu, mianowicie podawały fałszywy stan jedynie w przypadku delikatnego uderzenia co powodowało zamruganie diody wskazującej na wadliwy czujnik. Sterowanie silnikami odbywa się przy pomocy pojedynczego, dwukanałowego mostka H - Toshiba TB6612FNG. Na pokładzie znajduje się również moduł Bluetooh HC-05, który komunikuje się z uC poprzez interfejs UART. Do wysyłania i odbierania danych używam prostego a zarazem sprytnego terminala na androida - "Bluetooth spp pro". Zasilanie Energię, zależnie od charakteru trasy, dostarczają pakiety Li-Pol 7.4V firmy Dualsky o pojemnościach: 220mAh, 300mAh oraz 550mAh. Najczęściej stosuję akumulator o pojemności 300mAh - mam wrażenie, że robot jeździ na nim nieco szybciej, taki złoty środek pomiędzy masą a wydajnością. Stan naładowania pakietu jest ciągle wyświetlany na 3 diodach LED. Lekkiej modyfikacji poddałem również gniazdo zasilania w robocie - wiszące na oryginalnych przewodach często powodowało mi zwarcia przy samej PCB - przewody od ciągłych zmian pakietów ulegały przełamaniu. Wykorzystałem fabryczne gniazdo, które po delikatnym przycięciu wkleiłem na 2 delikatnie odchudzone goldpiny. Z tym rozwiązaniem nie miałem jeszcze żadnych problemów. Do zasilania części cyfrowej Piki zastosowałem tradycyjny stabilizator 5V, który przy tej ilości diod wyraźnie się grzeje, lecz jeszcze w granicach rozsądku Program Algorytm napisany został w języku C. Opiera się na regulatorze PD z kilkoma pomniejszymi modyfikacjami. Nowa regulacja obliczana jest z interwałami ok. 8ms. Do wprowadzania nastaw, jak już wcześniej wspominałem służy moduł Bluetooth - szalenie wygodne rozwiązanie. Osiągnięcia -I miejsce na zawodach CYBERBOT 2015 w kategorii LineFollower Standard -I miejsce na zawodach ROBO~motion 2015 w kategorii LineFollower Standard (Vmax= 2.70m/s, Vśr = 1.90 m/s) -I miejsce na zawodach Copernicus Robots Tournament 2015 w kategorii Linefollower -I miejsce na zawodach "Opolski Festiwal Robotów" w kategorii Balluf LineFollower -I miejsce na zawodach "Trójmiejski Turniej Robotów 2015" w kategorii Linefollower Standard -IV miejsce w turnieju ROBOXY 2015 w kategorii LineFollower
  17. Witam, chciałbym przedstawić wam jedną z moich ostatnich konstrukcji - robota wielozadaniowego. Prace nad robotem zacząłem około rok temu gdzie zaprojektowałem i wykonałem pierwszą jego "wersję". Przez następne 6 miesięcy stopniowo ją modernizowałem. W założeniach miała to być platforma czterokołowa wyposażona w manipulator, jednak stwierdziłem że trochę źle zaplanowałem kilka kwestii i robot zostanie już w aktualnym stanie a platformę z manipulatorem potraktuję jako osobną konstrukcję. W obecnym stanie robot pełni następujące funkcje: • bezkolizyjne poruszanie się, realizowane z pomocą dalmierza Sharp GP2Y0A21YKOF, na pewnym etapie używałem również ultradźwiękowego czujnika HC-SR04 ale nie wychodziło mi za bardzo łączenie dwóch pomiarów w programie i postanowiłem zostawić samego Sharpa. • radiowa komunikacja z pilotem sterowniczym • pomiar naświetlenia miejsca w jakim znajduje się robot i załączanie latarki • pomiar prędkości obrotowej dwóch przednich kół, za pomocą tarczy i transoptorów CNY70 (nie jest co prawda zbyt dokładny, ale jest) Krótki opis budowy robota : • Mikrokontroler główny to Atmega32 • Mikrokontroler nadajnika to Atmega16 • Zasilanie : Żelowy akumulator 12V , pojemność 2200 mAh , napięcie jest stabilizowane przez stabilizatory LM7805 oraz LM338 • Mostki H to scalone mostki L298 zabezpieczone diodami , jeden na tył i jeden na przód • LM339 jako komparator do 2 transoptorów CNY70 , pracujących jako enkodery • Napęd kół robota to 4 przerobione analogowe serwa CYS3600 • Serwo obracające czujnikiem Sharp to Tower Pro SG-90 • Serwo obracające latarką to Redox S90 • Moduł radiowej komunikacji to HM-R868S i HM-T868S • Wyświetlacze LCD 16x2 Mechanika Cała konstrukcja mechaniczna wykonana została z odpadów blachy aluminiowej o grubości 3mm. Podwozie , koła, mocowania serw, wsporniki i błotniki narysowane zostały w cadzie i wypalone laserem. Robot posiada lekko amortyzowane zawieszenie Amortyzator jest bardzo prostej budowy- w uchwycie serwomechanizmu wkręcone są dwie teflonowe tulejki które umożliwiają przesuwanie uchwytów po prowadnicach które wykonałem ze śrub M8x90 a na śrubach osadzone są sprężyny o średnicy 8mm które amortyzują przesuwający się uchwyt. Tarcie między tulejami a prowadnicami postarałem się wyeliminować poprzez zastosowanie smaru teflonowego. Możliwa jest regulacja długości rozstawu kół i wysokości zawieszenia. Pokrywa obudowy wykonana jest z przeźroczystej pleksi o grubości 4mm. Pokrywa miała służyć zamontowaniu na niej manipulatora . Aluminiowe błotniki stanowią ochronę razie upadku lub przewrócenia się robota oraz nadają konstrukcji trochę lepszy wygląd. Koła mają średnicę 120 mm i zostały wykonane z 3 sklejonych ze sobą blach aluminiowych o grubości 2mm. Jako oponkę zastosowałem zużyte paski rozrządu przyklejone Poxipolem. Koła zamontowane są do serw za pomocą orczyków. Elektronika Robot posiada kilka płytek modułowych wykonanych metodą termotransferu. Na każdej płytce zastosowałem złącza goldpin co umożliwia szybką zmianę podłączeń , modernizację lub wymianę płytek. Dzięki przeźroczystej pokrywie każda płytka jest dobrze widoczna i łatwo dzięki temu przedstawić komuś budowę robota. Jednym podoba się odsłonięta "kabelkologia" , inni jednak wolą gdy wnętrze robota jest zasłonięte, każdy ma swój gust . Wszystkie płytki rysowałem w programie Eagle. Zasilacz Jako osobną płytkę postanowiłem również wykonać sekcję zasilania. Użyłem dwóch stabilizatorów - do części elektronicznej LM7805 natomiast do zasilania napędów użyłem regulowanego stabilizatora LM338. Chłodzone są radiatorem i małym wentylatorkiem. Płyta główna Jest to płytka na której znajduję się główny mikroprocesor Atmega32 wraz z wyświetlaczem lcd. Na płytce umieszczone są również przyciski służące do zmiany parametrów jazdy, buzzer , złącze programatora oraz 3 diody sygnalizacyjne. Płytka posiada również 2 rzędy złącz goldpin zasilających. Płytki z mostkami H Jako że robot posiada 4 niezależnie napędzane koła użyłem dwóch podwójnych scalonych mostków L298. Zabezpieczyłem je diodami Schottky'ego 3A. W sumie standardowa konfiguracja, na wyjścia silników podłączyłem kondensatory 470uF. Płytka obsługująca enkodery Jako komparator analogowy zastosowałem LM339. Płytka posiada 4 gniazda do obsługi transoptorów. Ogólnie to pomiar za pomocą CNY70 i tarcz nie był zbyt dokładny, obecnie ta funkcja jest nieaktywna ale przynajmniej sporo się nauczyłem i wiem już co zmienić w nowej konstrukcji . Pilot sterowniczy Posiada wyświetlacz LCD 16x2 oraz mikroprocesor Atmega16. Do transmisji radiowej użyłem zestawu HM-R868S i HM-T868S . Transmisja nie jest co prawda zbyt dokładna, nie można nią przesyłać jakichś specjalnie dokładnych i ważnych danych ale do sterowania robotem, przesyłania wartości wypełnienia zestaw nadał się całkiem dobrze. Zasięg na jakim sprawdzałem działanie transmisji to około 120m (na osiedlu, ale między mną a robotem była otwarta przestrzeń). Dane wysyłam przez UART na prędkości 9600 bps. Pilot posiada również termometr , działający na czujniku LM35 podłączonym do przetwornika ADC. Konfigruacja podłączenia przycisków na pilocie jest możliwa dzięki złączom goldpin. Program Program w robocie jak i w pilocie sterowniczym jest napisany w Bascomie. Gdy zaczynałem pracę nad robotem potrafiłem programować tylko w tym języku, jednak zauważyłem wady i zalety tego języka i nastepna konstukcja napewno zaprogramowana będzie w języku C. Film : https://www.youtube.com/watch?v=aPf2Hxaa8Ck Wnioski Podsumowując , wiele rozwiązań wychodziło już podczas samych prac, modernizacji itp. więc nie wszystko pracuje tak jak powinno. Jest to w sumie moja pierwsza poważniejsza konstrukcja i dużo nauczyłem się przy jej budowie. Na obecnym etapie stwierdziłem że dalsze modernizację nie mają sensu i lepiej po prostu zacząć od nowa projektować nową platformę . Tym razem skupię się bardziej na projektowaniu mechaniki pod manipulator, lepszym napędzie, zastosowaniu kamery bezprzewodowej i analizie obrazu mniejszych płytkach i lepszej transmisji z robotem, chciałbym umożliwić sterowanie za pomocą aplikacji na Androidzie. Każda uwaga , krytyka i sugestia będzie mile widziana i przydatna przy projektowaniu następnej konstrukcji . Chciałbym również bardzo podziękować wszystkim którzy pomogli mi przy budowie robota, udostępnili materiały i narzędzia oraz służyli radą i krytyką Pozdrawiam
  18. Witam, przedstawiam autonomicznego robota balansującego. Robot balansujący na Atmega 1284P 20MHz. Obsługuje komunikację oraz zmianę wsadu za pomocą bluetooth. Ponadto istnieje możliwość sterowania robotem za pomocą pilota IR, oraz zmiany nastawów regulatorów. Posiada system autonomicznej jazdy z wykorzystaniem 3 sensorów ultradźwiękowych. Delikatne ruchy robota w stanie spoczynku spowodowane są dużymi luzami w przekładniach silników. Robot radzi sobie bez problemów ze średniej wielkości nachyleniami podłoża. Sterowanie odbywa się poprzez aplikację na system android, która to wyświetla także podstawowe informacje o robocie (napięcie baterii, wielkość całki w regulatorze pochylenia itp). Tryb autonomicznej jazdy opiera się o trzy ultradźwiękowe czujniki odległości. W oparciu o ich wskazania, robot samoistnie podejmuje decyzje co do dalszej drogi. Jest to ostateczna wersja robota która posiada także prócz trybu autonomicznego, tryb zdalnego sterowania na odległość do 100 metrów. Zaimplementowany moduł auto diagnozy potrafi wykryć 32 ostrzeżenia i błędy, np od niskiego napięcia 12v 5v, po jego niestabilność, uślizg kół, luzy na piastach, opory toczenia i przekładni... itp.... itd... Uruchomienie poszczególnych funkcji robota odbywa się poprzez komendy terminala uart, lub wygodniej pilot ir. Wszystkie parametry robota wyświetlane są na 5 pulpitach 4 wierszowego wyświetlacza lub uproszczone w dedykowanej aplikacji na system android. __________ Komentarz dodany przez: Treker Witam na forum, następnym razem proszę pamiętać o zdjęciu w formie załącznika, które widoczne będzie później w katalogu robotów oraz na stronie głównej. W tym przypadku już poprawiłem
  19. klonyyy

    nanoHaker2

    Cześć! Jako że ostatnio na Forbocie jest opisywanych coraz mniej robotów biorących udział w zawodach postanowiłem opisać swojego robota nanosumo. Sam robot powstał już jakiś czas temu (ok 1,5 roku temu), ale do dzisiaj nieźle mu szło na zawodach i ogólnie jestem całkiem zadowolony z konstrukcji. Wyciągnąłem z niej wiele wniosków i mam nadzieję że kolejna będzie jeszcze lepsza Mechanika : Rama robocika zbudowana jest z malutkich kawałków laminatu, na których ściankach są umieszczone od środka zębatki. Wszystkie koła zebate jak i silniki pochodzą ze znanych 9 gramowych serw. Największym wyzwaniem było upchnięcie dwóch silników na sobie tak by nie podnosiły za mocno całej konstrukcji oraz były dobrze spasowane z zębatkami. Same silniki są przyklejone do siebie oraz do podstawy robota. Koła to przerobione nakrętki mosiężne, w tym momencie nie umiem powiedzieć skąd pochodziły. Wywierciłem w nich otworki i odlałem małe silikonowe oponki. Z przodu robota widoczny jest pług przymocowany na stałe jak i opadający. W sumie nie jestem pewien czy kiedykolwiek pomógł mi podważyć przeciwnika, a czasami sprawiał kłopot z postawieniem bez opadnięcia przed rozpoczęciem walki. Elektronika: Robotem steruje atmega8 taktowana 8mhz z zewnętrznego kwarcu. Ma wgrany bootloader, by oszczędzić pinów na płytce. Oczami są 4 czujniki, z czego jeden jest nieaktywny, gdyż nie miałem miejsca na moduł startowy i musiałem pozbyć się diod ir. Czujniki to, jak w każdej mojej konstrukcji, tsopy i diodki ir smd. Są naprawdę fajne pod względem zasięgu (który da się regulować), jednak zajmują sporo miejsca na pcb. Diodki są sterowane tranzystorami, jednym na parę diod. Mostek to malutki 24 pinowy qfn od freescale - MPC17531. Czujniki linii to ktiry0711s zamocowane na samym dole robota. Moduł startowy postanowiłem umieścić w całości w robocie. Chciałem mieć pewność, że moduł za każdym razem się poprawnie zaprogramuje, a następnie bez problemu wystartuje. Oprócz tego jest trochę drobnicy, nie ma regulatora, wszystko zasilane jest bezpośrednio z li-pola 140 mAh. Program: Zawsze staram się pisać jak najprostsze programy do walczących robotów i tak też było w tym przypadku. W sumie tradycyjnie "wyifowane" warunki na czujniki i poszczególne reakcje silników - nic szczególnego. Pora na osiągnięcia: - 1 miejsce Robomaticon 2015 - 1 miejsce TTR 2015 - 1 miejsce Roboxy 2015 - 2 miejsce Sumochallenge 2015 - 1 miejsce RoboticArena 2015 - 3 miejsce Robomaticon 2016 W tym roku nanoHaker2 dostał się także do ćwierćfinałów Robotchallenge 2016. Robot jest już stary i szykuję powoli nową konstrukcję, w nadziei że w końcu uda się zdobyć podium w Wiedniu I jeszcze na koniec parę zdjęć : Jak znajdę jakieś filmiki z udziałem nanoHakera wrzucę linki. Mam nadzieję, że się podobało i czekam na pytania Pozdrawiam, Piotrek
  20. Witam. Chciałbym zaprezentować konstrukcję która była tematem mojej pracy inżynierskiej. Przedmiotem pracy było opracowanie struktury autonomicznego wózka magazynowego. Główne cele jakie miała sprłniać konstrukcja to: - Ustalenie trajektorii ruchu wózka na podstawie lay-out’u wybranego fragmentu hali montażowej z naniesieniem linii dla czujników odbiciowych. - Zasada określenia pozycjonowania wózka we współrzędnych hali -odbiór za pomocą modułu Bluetooth informacji weryfikowanych za pomocą kodów RFID o zgodności ładunku, miejsca odbioru i dostarczenia. - Optymalizacja trasy bezkolizyjnego przejazdu z wysyłaniem danych za pomocą interfejsu Bluetooth do urządzenia kontrolującego i podglądu trasy. - Dobór zestawu czujników odpowiadających za bezpieczeństwo poruszania się po magazynie. Mając wcześniejsze doświadczenie z konstruowania podobnych konstrukcji opisane tutaj zdecydowałem się po raz kolejny na konstrukcję z laminatu . Konstrukcję wykonano jako robot mobilny klasy (2,0) – unicycle. Jako napęd zastosowane zostały podwójna przekładnia Tamiya 70168 w konfiguracji przełożenia 115:1 wraz z kołami Tamiya 70111. Podnośnik to konstrukcja własna zbudowana na łożyskach liniowych z napędów CD oraz pręcie gwintowanym (przekładnia liniowa) który poruszany jest silnikiem DC poprzez przekładnię zębatą. Jako czujniki położenia podnośnika zastosowane zostały dwie krańcówki mechaniczne. Robot porusza się po torze wyznaczonym przez czarną linię (linefolower), z naniesionymi znacznikami punktów załadunku/rozładunku przesyłki. do wykrywania lini zastosowana jest listwa pięciu czujników cny70, krańcowe czujniki wysunięte są o 3mm do przodu. Robot na podstawie znanego miejsca startu i wcześniej zaprogramowanej mapie layoutu, po podaniu danych przejazdu (punkt pobrania, punkt dostarczenia, numer ładunku), wyznacza optymalną trasę przejazdu. Poruszanie się po hali montażowej wiąże się z koniecznością wykrywania przeszkód znajdujących się na trasie przejazdu. do tego celu zastosowane są 2 sharp GP2Y0A41SK0F w przedniej części robota, które służą tez do pozycjonowania robota względem pobieranego ładunku. W tylnej częsci został umieszczony czujnik ultradźwiekowy HC-SR04 wykrywa przeszkody znajdujące sie za robotem głównie podczas nawrotów robota. Jednym z założeń projektu była identyfikacja pobranego ładunku i sprawdzenie jego zgodności, do tego celu został zastosowany gotowy moduł MP01611 Mera-Projec. Modół ten to czytnik RFID ze zintegrowaną anteną, współpracuje on etykietami UNIQUE 125 kHz zainstalowanymi w paletach. Komunikacje robota zapewnia moduł bluetooth HC-06 współpracujący z aplikacją na smartphonie. Elektronika składa się z kilku modułów. Wszystkie moduły połączone są z płytą główną. Sercem układu jest mikrokontroler Atmega32 zasilany przez stabilizator D24V6F5. Do sterowania silnikami kół zastosowany jest mostek TB6612FNG, a podnośnikiem steruje popularny L293d. Całośc zasilana jest ogniwem litowo-polimerowym o pojemności 800mAh i napięciu 7,4V (2S). Robot posiada uchylną klapę co zapewnia łatwy dostęp do wnętrza. Program został napisany w Bascomie co nie było łatwym tematem ze względu na brak wielu funkcji (np.tabela wielowymiarowa), co zmotywowało mnie teraz do nauki języka C. Schemat blokowy programu. Film przedstawiający robota podczas pracy wraz z zrzutem obrazu z aplikacji androidowej: Pozdrawiam.
  21. fazi787

    RaRis

    Witam, chciałbym przedstawić mojego robota, minisumo. Jest to mój pierwszy robot tej klasy ale mam nadzieję, że nie ostatni Nazywa się RaRis. Konstrukcje wykonałem na wakacjach. Podczas budowy opierałem się o ten artykuł. Bardzo chciałbym podziękować autorowi temu artykułu za kawał dobrej roboty ale też za pomoc na pw. W trakcie budowania robota nauczyłem się bardzo wielu rzeczy. Napisałem również swój pierwszy program w bascomie. Elektronika Elektronika jest dokładnie ta sama co artykule. Czyli: -Mikrokontroler atmega 8 -Dwa mostki L293D, -Dwa czujniki lini CNY70, -Sharp GP2Y0A41SK0F ( na razie jest jeden, ale w najbliższym czasie dodam drugi) -Zasilanie to pakiet li-pol Turnigy ( to z nim miałem najwięcej problemów, bo jak się później okazało zepsuła mi się ładowarka, przez co źle ładowało mi poprzedni akumulator ) Tutaj jest schemat: Mechanika -Dwa silniki pololu z przekładnią 30:1 -Mocowania wraz z śrubkami firmy pololu -Oraz oczywiście Koła tej samej firmy Obudowa Obudowa została wykonana z laminatu. Całość została pomalowana sprejem na czarno. Jej wymiary to 10x10cm i około 2-3cm wysokości. Cały robot waży około 270g. Nie jest to jakaś super przemyślany kształt, ponieważ miał on na początku wyglądać tak: Ale ostatecznie jest on prostokątny i ma inny kolor. Po prostu nie dałbym rady całej elektroniki tam upakować. Jest czarny, ponieważ ten kolor bardziej mi się podoba i jest mniej wykrywalny dla przeciwnika. Program Program jest nowy napisany przeze mnie w bascomie. Nie ma tam czegoś nadzwyczajnego, po prostu prosty program który każe robotowi jeździć po całym ringu w różne strony a gdy wykryje przeciwnika to go spycha. Tutaj dodaje jeszcze trochę zdjęć: I film: Podsumowując Ogólnie jestem bardzo zadowolony z mojej konstrukcji. Nie jest to robot który wygra zawody ale przynajmniej mogłem się czegoś nauczyć. O pieniądze wydane w robota (czyli około 350zł) też się nie martwię ponieważ w większości części użyje do następnej konstrukcji, np: silniki, koła, atmegę. Proszę również o waszą opinie, bardzo mile widziane komentarze
  22. Witajcie! Z okazji przejścia tych dwóch stareńkich robotów na emeryturę (oraz dlatego, że zaraz sesja i szukam zajęć zastępczych) postanowiłem je opisać na forum. W wakacje między I/II klasą LO (2013) popełniłem trzy roboty minisumo. Pierwszy nazywał się Swift i wyglądał tak: Niestety robot nie działał najlepiej ze względu na kilka dość poważnych problemów konstrukcyjnych więc został dawcą dla nowego pokolenia złomków. Ze względu na to, że Swift był dobrze wyposażony (7 czujników przeciwnika i 4 moduły napędowe) postanowiłem zbudować dwa gorzej wyposażone klony: Bong i Bang. Z założenia miało to ułatwić obiektywne porównywanie skuteczności algorytmów i w razie kłopotów z jednym robotem w trakcie zawodów drugi nadal zostawał w grze W dodatku w ekstremalnej sytuacji teoretycznie miało być możliwe przełożenie płyt głównych między maszynami. Raz zdarzyło mi się z tej możliwości skorzystać w czasie RA Chociaż szczerze mówiąc to nie wyszło mi to najlepiej bo do jednej z płyt był przymocowany tymczasowy ciężarek i przy ponownym ważeniu wyszło >500g i niestety musiałem poddać walkowerem walkę o III miejsce Przykładowy filmik z walki: Krótka specyfikacja techniczna robotów: - napęd: pololu HP 30:1 + felgi aluminiowe od użytkownika hungrydevil z odlanym ogumieniem silikonowym wedle własnego przepisu - zasilanie: li-po 7,4V 300mAh Dulasky, stabilizacja +5V na ldo - uC: ATmega644A - mostki H: TB6612FNG x 2 ze zmostkowanymi kanałami - czujniki przeciwnika: 4 x Sharp 40cm - czujniki linii: 4 x KTIR Roboty dodatkowo mogą zostać wyposażone w moduły rozszerzeń - miały wziąć udział w deblu ale konkurencja zniknęła równie szybko jak się pojawiła więc moduły nigdy nie powstały... Jak widać w elektronice nie ma absolutnie żadnej magii. Podobnie w sofcie. Są to dwa perfekcyjnie zwykłe minisumo. Osiągnęły raz IV i raz II miejsce na RA. Na tegorocznym ostatni żywy bliźniak uległ usterce i dostał taki łomot, że aż przykro mi było na to patrzeć. I żeby nikt nie mówił, że są tylko do ozdoby: Teraz odrobina info o konstrukcji: chassis jest wykonane z mosiężnej blachy o grubości 1mm oraz płytki głównej PCB, które razem tworzą coś w rodzaju pudełka na akumulator i moduł rozszerzenia. Rozwiązanie okazało się skuteczne ale na dłuższą metę dość naiwne bo po ok 2 latach łupania na zawodach konstrukcje były już lekko wypaczone. Połączenia miedzy mosiężnymi elementami były lutowane bądź śrubowane. Usunięcie akumulatora odbywa się poprzez podnoszoną na zawiasie i blokowaną magnesem neodymowym tylną klapkę. To też się w miarę sprawdziło ale nienawidziłem tego rozwiązania ponieważ podczas intensywnego testowania szybko mi się kończyła skóra na palcach Lemiesz jest pieczołowicie wypilniczkowany i wyfrezowany z mosiężnej blachy - ostrzony na brzytwę poprzez długotrwałe jeżdżenie robotem po drobnym papierze ściernym. (nie przepadałem za tą procedurą ) Kilka zrzutów z Inventora: Kilka słodkich zdjęć: I elektronika... Jest tak zwykła na ile to możliwe. Podzespoły są w SMT. Projekt powstał w Eagle. Mozaikę ścieżek przeniosłem przy pomocy papieru kredowego i laminatora na sterydach. Soldermaska została wykonana tajemną techniką robiącą użytek z lakierów do ceramiki firmy Pebeo, piekarnika spoży... przemysłowego oraz pędzelka i drobnego frezu. Schemat: PCB: Od kilku lat nie zbudowałem nowego minisumo chociaż zabierałem się do tego kilka razy między większymi projektami - głównie z sentymentu. Problem polega na tym, że w tej konkurencji od tak dawna nic się nie zmieniło, że stała się już zwyczajnie monotonna. Nostalgia za przepychającymi się kupami złomu i kabli jest brutalnie rozjeżdżana przez błyszczące w blasku fleszy żelazka na czujnikach Sharp, silniczkach Pololu i mostkach TB. Z kolegą postanowiliśmy zorganizować niewielki powiew świeżości i za jakiś czas pojawi się on na zawodach pod nazwą Jakul. Na wszystkie pytania chętnie odpowiem w komentarzach.
  23. NanoBot

    Mały

    Witam, tym razem chciałbym zaprezentować mojego najmniejszego do tej pory robocika klasy Nanosumo. Nazywa się „Mały”. W zasadzie wszystko w tym projekcie jest małe: µkontroler, akumulator, silniki, czujniki. Jedną wielką rzeczą była radość podczas pierwszej walki z kartonikiem, gdy to wszystko zadziałało. Idea zbudowania robota zrodziła się kilka lat temu. Od tego czasu trwało zbieranie odpowiednich elementów i informacji. Sama konstrukcja powstawała krótko, bo około 2 tygodnie. Robot mieści się w pudełku o wymiarach 15mm*15mm*15mm. Napędzany jest dwoma silnikami z wibracji Nokii 3310. Przekładnie wyjęte z małych serwomechanizmów. Sterownik silników MPC17C724 znajduje się na dwustronnej płytce PCB umieszczonej między kołami. Akumulator Li-pol 3,7V o pojemności 50mAh w zupełności wystarcza na 20min pracy. Mikrokontroler ATMEGA8L w obudowie MLF znajduje się na głównej płycie PCB pod akumulatorem. Taktowany jest z zewnętrznego generatora 12MHz, aby umożliwić programowanie, z wykorzystaniem bootloadera bezpośrednio z portu USB. Dzięki takiemu rozwiązaniu złącze programatora ma tylko 3 piny. Od spodu na przednim silniku umieszczone są 2 czujniki linii KTIR0711S. Musiały być odpowiednio zeszlifowane, aby szczelina między podłożem i czujnikami była większa od 0,9mm. Dalmierz oparty o APDS-9700 oraz HSDL-9100 idealnie nadawał się do tego robota. Największy problem podczas budowy sprawiło zablokowanie µkontrolera. Niezbędne było użycie Rezurektora AVR. Dzięki odpowiedniemu przygotowaniu innych problemów prawie nie było.
  24. BlackSkill

    Chomik T1000

    Cześć tu drużyna "Robotyka KSP" . Zrobiliśmy mały upgrade naszego poprzedniego LF'a (Cristal T1000 ) nowa nazwa to Chomik T1000 Pomysł na przerobienie starego lf przyszedł nam około 2 tygodnie przed zawodami Robotic Arena więc była to walka z czasem. Lf'a udało stworzyć się na dzień przed zawodami z powodu problemów z płytką ktir. Właściwie problemy rozwiązaliśmy dopiero na zawodach. Silniki: Popularne 2x Silnik Pololu HP 10:1 Koła: Felgi wycięte z walka poylamidowego o średnicy 20mm. Wraz z oponami 30mm Opony: Odlane z sylikonu formierskiego o twardości 20sh Mocowania: Dystans do płytki czujników oraz mocowania silników zostały wydrukowane na drukarce 3D Elektronika Za zasilanie odpowiada pakiet li-po 220mAh Sterownik silników to L298N - w obudowie MULTIWATT15. Procesor atmega8 z kwarcem 16mhz. Do obniżenia napięć i stabilizacji napięcia służy 7805. Silniki zasilane bezpośrednio z li-po 6 czujników KTIR0711s podłączonych do adc. Waga: 120gram wraz z Li-Po 220mAh Oprogramowanie Program napisany w c++. Nie sprawdzany przed zawodami z powodu problemów z KTIR. Sprawdzony został dopiero na Robotic Arena pod koniec eliminacji przez co nie mieliśmy czasu na jego poprawę do wyższych prędkości. Płytki: Płytka główna została z naszego poprzedniego robota Cristal T1000. Płytkę z czujnikami zrobiliśmy nową. Płytki wykonane termo transferem. Projektując płytkę czujników pomyliliśmy dwa wyjścia KTIR w specyfikacji było inaczej niż w bibliotece Eagle. Przez co robiliśmy płytkę dwa razy. Dwa przejazdy na Robotic Arena 2015 (Nie najszybsze) : Zapraszamy na Fan page ! https://www.facebook.com/robotykaksp/ __________ Komentarz dodany przez: Treker Proszę dostosować wpis do regulaminu: Pierwsze 500 znaków opisu, powinno zawierać zwięzły opis robota oraz nie może zawierać żadnych zdjęć.
  25. Projekt „Picasso” jest dostępny na licencji Creative Commons Uznanie autorstwa 3.0 Polska. Pewne prawa zastrzeżone na rzecz Grzegorza Kolbucha, Adrian Dobosz. Robot powstał w ramach programu Akademia Orange, realizowanego przez Fundację Orange. Zezwala się na dowolne wykorzystanie treści - pod warunkiem zachowania niniejszej informacji, w tym informacji o stosowanej licencji, posiadaczach praw oraz o programie Akademia Orange. Treść licencji jest dostępna na stronie: http://creativecommons.org/licenses/by/3.0/pl/ 1. WPROWADZENIE „Picasso” jest zaawansowanym robotem, którego głównym zadaniem jest wykorzystanie trzech aerografów oraz własnej mobilności do stworzenia różnorodnych dzieł artystycznych. Dzięki zastosowaniu możliwości obecnej elektroniki, mechaniki i informatyki posiada możliwość autonomicznego poruszania się i tworzenia wzorów mieszając 3 podstawowe kolory farb. Dodatkowym atutem jest możliwość zdalnego sterowania nim. 2. ELEMENTY MECHANICZNE Cała konstrukcja robota opiera się na ramie aluminiowej, do której przymocowane zostały z frontu i góry płyty z poliwęglanu. Na tak solidnej konstrukcji umieszczono silniki z mocowaniami i przekładniami, butla na powietrze i cała część układu pneumatycznego wraz z aerografami. Masa konstrukcji to około 30 kg. 2.1. Mocowanie silników z przekładnią Rysunek nr 1. przedstawia mocowanie silników, widoczne są na nim: markowy silnik firmy Maxon o mocy 90W, dwa koła zębate z paskiem w roli przekładni zwiększającej moment obrotowy (przełożenie 2,5:1), oraz aluminiowe mocowanie tego układu. Rys. 1. Mocowanie silników z przekładnią – projekt 2.2. Koła Koła zostały tak dobrane, aby przenieść duży ciężar robota oraz, aby ich masa nie była zbyt duża. Z tego powodu wybrane zostały koła do wyczynowych modeli RC o średnicy 170 mm z felgą wykonaną z twardego tworzywa sztucznego. Opony są gumowe i bieżnikowane w celu zwiększenia przyczepności nawet na nierównym terenie. Wypełnione są specjalną wkładką piankową, która amortyzuje ugięcia opony. Rys. 2. Koło – projekt 3. SILNIKI Robot został wyposażony w cztery silniki DC firmy MAXON – światowego lidera w produkcji precyzyjnych napędów elektrycznych. Silniki te posiadają duży moment obrotowy i prędkość, a ich masa to ok. 0,5 kg. Mają bardzo dobry stosunek mocy (90W) do objętości dzięki zastosowaniu magnesów neodymowych i specjalnej technologii nawijania uzwojenia. Rys. 3. Silnik firmy MAXON napędzający robota 4. UKŁAD ZASILANIA Zasilanie układu napędowego jak i płytek elektronicznych odbywa się poprzez zastosowanie akumulatorów litowo-polimerowych. Są to ogniwa firmy Turnigy o napięciu 22,2 V i pojemności 3000 mAh (Rys. 4). Składa się ono z sześciu ogniw o standardowym napięciu 3,7 V połączonych szeregowo. Takie źródło prądu było niezbędne, ponieważ posiada ono bardzo duży prąd rozładowania. Jest to potrzebne, gdyż silniki przy gwałtownym rozruchu pobierają prąd do 40A każdy! Prąd chwilowy jaki można uzyskać z takiego ogniwa można obliczyć za pomocą parametrów podanych na każdym ogniwie – parametr „C” i pojemność. Dla tego akumulatora jest to odpowiednio 40C i 3000mAh co jest równe 3Ah. Maksymalny prąd chwilowy obliczamy ze wzoru nr 1: wzór nr 1. Do ich ładowania używa się specjalnej ładowarki mikroprocesorowej, do której oprócz podstawowych kabli ( „+” i „-”) podłącza się również złącze do balansowania napięcia na poszczególnych sześciu składowych ogniwach. 5. UKŁAD PNEUMATYKI Układ pneumatyki jest zbudowany z butli na sprzężone powietrze (Rys. 5), reduktora wysokiego ciśnienia (Rys. 6), reduktorze niskiego ciśnienia, wyspie zaworowej z czterema elektrozaworami oraz trzech aerografach do których będą dołączone 3 pojemniczki z kolorami RGB (ang. Red Green Blue, Czerwony Zielony Niebieski). Platformę wyposażono w pięć manometrów, czyli urządzeń wskazujących aktualne ciśnienie. Umiejscowione są: jeden na butli, jeden na przejściówce, dwa na reduktorze wysokiego ciśnienia oraz jeden na reduktorze niskiego ciśnienia. Pierwszy reduktor będzie zmniejszał ciśnienie z około 200 bar na 8 bar, a drugi (niskiego ciśnienia) z 8 bar na 4 bary, które będą ciśnieniem zasilającym aerografy. Elektrozawory będą sterowane z układu elektronicznego w postaci cyfrowej, czyli włączony/wyłączony. Zostały one umieszczone na wyspie zaworowej w celu redukcji przewodów powietrza. Rys. 5. Butla wysokiego ciśnienia Rys. 6. Reduktor wysokiego ciśnienia 6. SYSTEMY SENSORYCZNE Do prawidłowego działania robota niezbędne są czujniki. Jest to podstawa dzięki której robot może komunikować się z otoczeniem odbierając dane w postaci analogowej i przetwarzając na wartości cyfrowe z określoną rozdzielczością. W tym projekcie zastosowano szereg niezbędnych czujników do detekcji przemieszczania się robota (enkodery), do wykrywania przeszkód na swojej drodze (czujniki odbiciowe), wykrywania ruchu (czujniki PIR), czujniki temperatury oraz światła. Enkodery są to czujniki, które pozwalają na zliczanie impulsów poprzez zastosowanie dwóch transoptorów (czujników odbiciowych, które posiadają diodę nadawczą i element odbiorczy, np. fotodiodę) umieszczonych obok tarczy ze zrobionymi na obrzeżach szczelinami. Dzięki wykrywaniu tych szczelin przy obrocie jesteśmy w stanie zliczać ile wykrywamy tych impulsów w czasie zamieniając tą wartość na drogę kątową. Parametrem enkoderów jest ich rozdzielczość podawana w impulsach na obrót. W tym przypadku będziemy korzystać z bardzo dokładnych enkoderów posiadających 1024 impulsy na obrót – jest to model HEDS 5540 (Rys. 7). Rys. 7. Enkoder HEDS 5540 Dalmierz to czujnik podający odległość. Można je podzielić na czujniki analogowe i cyfrowe. W projekcie „Picasso” użyte będą 4 dalmierze analogowe firmy Sharp model GP2Y0A21YK0F (Rys. 8), które działają na zasadzie transoptora, czyli posiadają nadajnik i odbiornik podczerwieni. Sygnał zwrotny jest w postaci napięcia i na podstawie jego poziomu odczytuje się odległość między czujnikiem, a przeszkodą. Zasięg takich czujników to od 10 cm do 80 cm. Rys. 8. Projekt dalmierza PIR (ang. Passive Infra Red - pasywny czujnik podczerwieni) jest to czujnik do wykrywania ruchu wykorzystujący podczerwień, dzięki której potrafi stwierdzić zmianę temperatury. Skuteczna odległość wykrywania obiektów przez czujnik Panasonic AMN33111J to 5 metrów. Informacja o wykryciu przekazywana jest za pomocą sygnału cyfrowego. Wykrywanie Najczęściej tego rodzaju sensory używane są do systemów alarmowych. 7. UKŁAD ELEKTRONICZNY Schemat układu został zaprojektowany w programie Eagle 6.3.0 przy użyciu głównie elementów w technologii SMD (ang. Surface Mounted Devices), czyli do montażu powierzchniowego. Tego rodzaju elementy charakteryzują się lepszymi parametrami w porównaniu do elementów THT. Są często wykonane w nowszej technologii i zajmują mniej miejsca na płytce. Wadą jest niestety mniejsza zdolność odprowadzania ciepła. Układ elektroniczny opiera się o najbardziej rozbudowany mikrokontroler firmy Atmel z rodziny AVR - ATMEGA2560-16AU. Jest to 8-mio bitowy układ wyposażony 256 KB pamięci Flash i 100 pinów, które można wykorzystać do sterowania urządzeniami przy taktowaniu 16 MHz. To dzięki niemu można wgrać wcześniej napisany program w języku C++ i sprawić, aby robot nie tylko był zdalne sterowany, ale również potrafił sam coś namalować. Do sterowania silnikami użyte zostały specjalne mostki H zintegrowane w jednej obudowie. Są to układy VNH3SP30 firmy ST Microelectronics . Ich zaletami jest mała obudowa, zabezpieczenia przeciwzwarciowe, łatwość sterowania i duży prąd przewodzenia wynoszący 30A. Na jeden silnik zostały użyte 2 sztuki, aby dodatkowo zwiększyć prąd przewodzenia. Wadą tych układów jest możliwość sterownia tylko jednym silnikiem co w robotyce mobilnej zdarza się dosyć rzadko. 7.1. Schemat układu elektronicznego Schemat układu elektronicznego tworzą 3 oddzielne płytki tak jak wcześniej było wspomniane. Pierwszą z nich będzie płytka główna sterująca całym robotem począwszy od układu zasilania, a skończywszy na sterowaniu aerografami i diodami LED. Na rys. 9 przedstawiono schemat układu zasilania robota. Jest to newralgiczna część, ponieważ robot jest zasilany napięciem 24V z ogniwa litowo-polimerowego o dużej wydajności prądowej. W przypadku zwarcia, błędu przy podłączaniu mogłoby dojść do przepalenia ścieżek, uszkodzenia się układów scalonych lub co gorsza zapalenia się całego robota. Z tego powodu zastosowano szereg zabezpieczeń, a najważniejszym z nich jest zabezpieczenie przed odwrotną polaryzacją, czyli przed pomyłką zamiany potencjału dodatniego („plusa”) z ujemnym („minusa”). Taka pomyłka skutkowałaby ww. przypadkami. Dodatkowo w obwód wpięty został bezpiecznik, aby wyeliminować spalenie układu z powodu zwarcia. Rys. 9. Schemat układu elektronicznego robota Picasso Układ scalony IC8 na schemacie to stabilizator napięcia zbijający napięcie z 12V branych z wtyczki balansującej akumulatora 6-cio ogniwowego. Na wyjściu za stabilizatorem mamy już napięcie 5V, które służy do zasilnia mikrokontrolera oraz czujników. Dodatkowo wpięta jest równolegle dioda LED1 sygnalizująca obecność tego napięcia w obwodzie. Kondensatory w tym układzie pełnią rolę filtrującą zakłócenia, głównie powstałe w skutek dużego poboru prądu przez silniki. Przy mikrokontrolerze występuje kilka niezbędnych elementów bez których całość by nie funkcjonowała. Są nimi : rezystor podciągający linię „RESET” do 5V, złącze programowania z liniami +5V, GND, MOSI (ang. Master Output Slave Input), MISO (ang. Master Input Slave Output), SCK (linia taktująca komunikację), RESET. Tego typu programowanie odbywa się poprzez SPI (ang. Serial Peripheral Interface, pol. szeregowy interfejs urządzeń peryferyjnych) bardzo popularne dla rodziny AVR. Drugą możliwością jest programowanie poprzez JTAG (ang. Joint Test Action Group). Dodatkowo oprócz wymienionych elementów blisko mikrokontrolera znajduje się układ taktujący o maksymalnej częstotliwości 20 MHz. Oparty jest on o zewnętrzny rezonator kwarcowy i dwa kondensatory o małej pojemności 12-22pF. W tym przypadku jest to zintegrowany rezonator posiadający wewnątrz obudowy już dobrane kondensatory. W razie potrzeby można również skorzystać z wewnętrznego rezonatora jednak jest on mniej dokładny i posiada mniejszą częstotliwość pracy, która wynosi 8 MHz. Po prawej stronie schematu znajdują się wyprowadzenia gniazd do podpięcia mostków, czujników, elektrozaworów oraz modułu komunikacji RCR-V2 firmy Wobit. Moduł ten pracuje na częstotliwości 868 Mhz, a jego maksymalny zasięg w linii prostej na otwartej przestrzeni wynosi około 2 km. Zaletą modułu jest łatwość obsługi przez mikrokontroler (korzysta z linii TX i RX i jest „przezroczysty” dla dwóch podłączonych urządzeń). Oprócz tego posiada tryb „radio”, w którym możliwe jest wysyłanie komend do wszystkich urządzeń wyposażonych w takie same moduły. Moduł ten jest również w wersji USB, aby bezpośrednio podpiąć go do komputera i sterować, np. robotem przy pomocy laptopa. Do zdalnego sterowania robota „Picasso” został stworzony dedykowany pilot zdalnego sterowania również wyposażony w opisany powyżej moduł. Ciekawą funkcją jest wyświetlanie danych na pilocie przy pomocy alfanumerycznego wyświetlacza LCD (ang. Liquid Crystal Display). Jest to pomocne przy weryfikacji poprawnego zachowania się robota. Sam układ zawiera bliźniacze zabezpieczenia przed zwarciem i odwrotną polaryzacją. Dodatkowo na płytce znajdują się 4 duże przyciski do załączania elektrozaworów oraz 4 mikroprzełączniki do wyboru funkcji na LCD (Rys.10). Do sterowania prędkością i kierunkiem ruchu robota zaimplementowano joystick taki jak można spotkać w „padach” do konsol. Umożliwia on płynne sterowanie prędkością robota w dwóch osiach za pomocą dwóch wbudowanych potencjometrów. Trzy nóżki potencjometru podłączone są do +5V, GND i wejścia przetwornika analogowo-cyfrowego w mikrokontrolerze. Zamieniana jest wartość napięcia na liczbę i na tej podstawie weryfikowane jest wychylenie joysticka. W domyślnym położeniu odczyt z obu potencjometrów bliski jest połowie napięcia zasilania, czyli około 2,5V. W jedną stronę wychylając joystick wartość napięcia rośnie, a w drugą maleje dla jednej osi. Na tej podstawie generowane jest wypełnienie PWM (ang. Pluse Width Modulation) sterujące prędkością silników przesyłane drogą radiową. Każdy z 4 silników może być sterowany osobno, co daje większe możliwości manewrów. Rys. 10. Schemat elektroniczny pilota zdalnego sterowania Płytki została wykonana metodą termotransferową schematy ścieżek płytek (Rys. 11 - 14). Rys. 11. Widok ścieżek dla płytki sterującej robotem Rys. 12. Widok ścieżek płytki pilota Rys. 13. Widok od strony „TOP” płytki sterownika silnika Rys. 14. Widok od strony „BOTTOM” płytki sterownika silnika Płytka sterownika jako jedyna została wykonana na płytce dwuwarstwowej ze względu na potrzebę dobrego odprowadzania ciepła od spodu mostka (większe pola lutownicze + przelotki) oraz ze względu na minimalizację rozmiarów. Rys. 13 przestawia widok od strony elementów smd –„TOP”, zaś rys. 14 stronę „BOTTOM”. 8. MONTAŻ KONSTRUKCJI Podstawą całego robota jest blacha aluminiowa o grubości 4 mm i wymiarach zewnętrznych 800 x 800 mm z wycięciami na koła i aerografy widoczne na rys. 15. Na tej podstawie zostały zamontowane podpory z łożyskami na dystansach z krążków. W podporach umieszczono wał o średnicy 12 mm, a na nim duże koło zębate do przeniesienia napędu z silnika Maxon. Rys. 15. Zaprojektowana blacha aluminiowa z wycięciami Dla zakrycia wrażliwej części elektronicznej i butli wysokiego ciśnienia została zrobiona obudowa z aluminiowej blachy o grubości 1 mm. W celu jej usztywnienia została połączona aluminiowymi kątownikami i znitowana. Dodatkowo, aby widać było przednią część z aerografami dodano przód z poliwęglanu również pełniącego rolę obudowy. Trzy aerografy zostały zamontowane z przodu przy półkolistym wycięciu co 90˚, aby były dobrze widoczne w trakcie malowania (Rys.16) oraz reduktor niskiego ciśnienia z manometrem i wyspą zaworową. Po niewidocznej tylnej części robota (ukrytej pod obudową) znajduje się butla z reduktorem wysokiego ciśnienia, płytki elektroniczne oraz wyprowadzenia do włączników zasilania i diod LED wraz z buzzerem. Rys. 16. Poszczególne elementy zamontowane w robocie : 1- aerografy, 2- silniki z przekładnią i enkoderami, 3- wyspa zaworowa z reduktorem niskiego ciśnienia, 4- podpory łożysk z dużą zębatką, 5- butla z reduktorem wysokiego ciśnienia, 6- płytki elektroniczne, 7 – włączniki zasilania i diody sygnalizacyjne z buzzerem 9. EFEKT KOŃCOWY
×