Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'Line follower'.

  • 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 - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY 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

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

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


Imię


Strona

  1. Cześć wszystkim, Chciałem zbudować robota typu linefollower i jednocześnie dokumentując cały proces od zera. Przygotujcie się więc że, ten wątek będzie bardzo długoczasowy. W trakcie budowy będę się posiłkował się chatem GPT do generowania kodu, przykładami z githuba i istniejącymi konstrukcjami. Chciałem przy okazji budować stacje do testowania poszczególnych komponentów np. stacja do testowania linii, stacja do silników, tester opon itd. W zamyśle pierwszy prototyp LF będzie duży i modułowy. Stan na dzień 1: - nie mam biurka, ale już jest w drodze - zrobiłem re-search po istniejących konstrukcjach i algorytmach - zajęło mi to parę dni - mam 9 stron notatek i zdjęć innych konstrukcji - kupiłem Arduino (wiem, że do końcowej konstrukcji będzie trzeba użyć czegoś mocniejszego, ale do pierwszych testów może wystarczy) - kupiłem czujniki od myszki Założenia co będzie miał końcowy LF: - jakiś docisk (turbina lub śmigła - Japońskie LF uwielbiają śmigła) - algorytm zapamiętujący trasę i wykorzystujący tą wiedzę w kolejnych przejazdach TODO w najbliższym czasie: - stworzyć miejsce pracy - podpiąć czujnik od myszki do Arduino i zobaczyć czy za pomocą dwóch takich czujników można wyznaczyć położenie (w przyszłości pewnie połączę to z enkoderem i IMU)
  2. ◼ Wstęp Razem z @PiCh przedstawiamy zapowiedź naszego nowego zawodnika w konkurencji Linefollower Standard którego debiut planujemy na zbliżającej się edycji XChallenge 😎 🦎Salamandra 2.0 to następca poprzedniej konstrukcji która startowała bez powodzenia w zeszłorocznej edycji XChallenge. Pierwsza wersja niestety puściła dym po tym jak przypadkowo podczas zawodów włożyliśmy mikrokontroler na odwrót (Arduino Nano). Lekko nas podłamało w tamtym czasie bo nie takiej nagrody za naszą pracę oczekiwaliśmy. Dzięki temu zyskaliśmy jednak sporo doświadczenia i wiedzy którą w nowszej konstrukcji zamierzamy wykorzystać. Salamandra 1.0 Salamandra 2.0 ◼ Koncepcja i Założenia 📋 Podczas gdy całokształt pracy nad pierwszą wersją miał charakter badawczy i większość decyzji była "na czuja" teraz mamy już pojęcie jak powinny wyglądać roboty które wygrywają, inspiracją dla nas podobnie jak dla wielu innych konstruktorów były roboty takie jak Cukiereczek, Fuzzy oraz RoChN'y. 🔽 Założenia wyglądają następująco: Konstrukcja zgrabna i przemyślana 🛠️ Ostatnio zlekceważyliśmy zupełnie temat wagi i kompaktowości. Nowszy model zaprojektowany jest tak aby w jak największym stopniu wyzbyć się zbędnych przestrzeni na płytce. Również zdecydowaliśmy się na cieńszy laminat- 0.8 mm. Stosujemy również mniejszy akumulator lipo 150 mah oraz oponki wide high grip od Kyosho z serii mini-z. Salamandra 1.0 wyposażona była w łącznik wzięty z lego i przytwierdzony de facto na stałe, następnik będzie posiadał lżejsze i trwalsze płaskowniki węglowe. Ostatnio na zawodach zepsuła nam się jedyna bateria dlatego teraz wyposażamy się w kilka akumulatorków i lipo guarda który zasygnalizuje gdy się rozładują. Wymienne platformy przednie ⚙️ Na to wpadliśmy akurat podczas tworzenia obrysu płytki i wychodząc z założenia że skoro nie będzie nas to nic kosztowało bo połączymy to i zamówimy jako jedną płytkę to czemu nie. Odkryliśmy że tak to nie działa podczas zamawiania gdy kazali za każdą osobną platformę dopłacać. Platformy między sobą nie różnią się znacznie bo wszystkie są bardzo małe i tak cienkie jak się tylko da ale planujemy skrupulatnie poddać je testom i wybrać tą najlepszą (dla zadanych warunków toru). Platformy mają po 10 transoptorów. Nie starczyłoby nam wyjść analogowych więc zmuszeni byliśmy zastosować komparatory które regulować można za pomocą potencjometrów. Kalibrację ułatwiają diody które sygnalizują kiedy czujnik wykrywa linię. Koniec z Arduino ❌ Nie tylko dlatego że ostatnio nam puściło dym na torze ale też dlatego że ta platforma nam się już zwyczajnie przejadła. Drogie, zawodne i mało wydajne to podsumowanie naszych dotychczasowych doświadczeń (trzymam w szufladzie 4 ardu które przestały działać od czapy). W tej konstrukcji nie zdecydowaliśmy się jeszcze na klasycznego tutaj STMa za to spodobał nam się podsunięty przez @ethanak pomysł na oparcie konstrukcji w całości na nietypowym tutaj ESP32 którym moja fascynacja trwała już od pewnego czasu. Konkretny model jednostki to największy i najnowszy jak na razie ESP32-WROOVER_E ze względu na dużą ilość wyjść IO jak na ESP (dalej za mało jak na standardy bardziej zaawansowanego LFa). Aplikacja mobilna i OTA 📱 Salamandry 1.0 nie testowaliśmy długo bo wszystko robiliśmy na chwilę przed zawodami ale momentalnie odczuliśmy trudności związane z ciągłym łapaniem robota, podpinaniem i zmienianiem programu. Po całym dniu takich testów odkryłem że od takiego czegoś nabawiłem się siniaków na kolanach. Teraz zamierzamy w całości wykorzystać dobrodziejstwa zastosowania ESP, do typowych testów i zmian będzie aplikacja a do zmiany samego kodu będzie OTA. Zero klękania i podpinania. Enkodery 🏎️ Początkowo marzyło nam się też imu do mapowania trasy ale to jeszcze nie teraz. Enkodery są jednak sprawdzonym sposobem na przyspieszenie robota więc będą one obecne na pokładzie Salamandry 2.0. Bramka pomiarowa i zautomatyzowane testy? ✨ Ostatni punkt to bardziej moja fantazja którą bardzo chciałbym zrealizować mimo że możliwe że nie przyniesie to faktycznych rezultatów na torze. Jestem w trakcie tworzenia laserowej bramki opartej na ESP która ma wysyłać wynik pomiaru razem z parametrami przejazdu z aplikacji(pid, prędkość i wszystko co będzie modyfikowalne) do bazy danych. W zamyśle do zrealizowania jest to żeby móc te wyniki podejrzeć, jak starczy czasu chęci i umiejętności to podejrzeć w aplikacji a jak czasu chęci i umiejętności znajdę jeszcze więcej to aplikacja będzie czytała wyniki z bazy danych po czym w trybie machine learningu będzie ładowała nowe ustawienia przejazdów aby uzupełniać bazę danych o nowe testy i ostatecznie dobrać ustawienia optymalne. Plan ambitny dlatego myślę że mimo iż robota przygotowujemy pod zbliżającą się edycję XChallenge to pracować będziemy mogli nad rozwijaniem tej konstrukcji na długo po zakończeniu tych zawodów. ◼ Aktualne postępy Obecnie czekamy na dostawę PCB które będziemy mogli zalutować. Bramka pomiarowa jest na razie w częściach i nie zaprogramowana. Pracę nad aplikacją opierają się na razie na robieniu przeze mnie kursu na Udemy z Fluttera. Większość części mamy oprócz silników i magnesów do enkoderów a całokształt ostatecznego wyglądu robota raczej mamy dopracowany. Jako że udało się już zamówić płytkę stwierdziliśmy że jest to odpowiedni moment aby upublicznić nasz projekt. 📣 Gdy uda nam się coś więcej osiągnąć wrzucimy update. Liczymy że ten worklog dodatkowo zmotywuje nas do regularnej pracy 🤠.
  3. Robot który zbudowałem na sobotnie zawody okazało się że w losowych momentach na trasie przestaje jechać. Zatrzymuje się na kilka sekund i czasem rusza znowu a czasem słychać tylko pyknięcie, robot minimalnie drgnie i dalej się zawiesza. Podczas tych zawieszeń diody rx, tx i wbudowana przestają migać, świeci się dioda ON oraz diody sygnalizujące prawidłowy przepływ prądu w 2 miejscach na 2 płytkach. Zwykle pomaga reset ale muszę rozwiązać problem jak najszybciej bo zawody są już w tą sobotę a muszę jeszcze przeprowadzić testy. Więcej o robocie: Typowa konstrukcja z dwoma kołami z tyłu i platformą z 8 czujnikami z przodu Silniki to polulu hp micro z przekładnią file:///C:/Users/Admin/Downloads/Photo-1.jpeg1:10 Zasilane akumulatorem lipo 500mah 11,1V po stabilizatorze na 6V Użyty jest sterownik silników 2-kanałowy sparkfun Algorytm to zwykły PID (po odkryciu problemu zredukowany do samego P i sprawdzony, problem raczej nie leży po stronie programu) Sprawdziłem: po podpięciu przez kabel (bez akumulatora) - działa gdy koła są w powietrzu- działa gdy zablokuję koła- działa gdy zablokuję koła i przyłożę do podłoża czujniki- nie działa PS testy powyżej są dla bardzo niskiej prędkości, około 25% maksymalnej prędkości silników. Po zwiększeniu zadanej prędkości silniki kompletnie odmawiają współpracy.
  4. Siemanko! Przychodzę do was z takim tematem. Wraz z kolegą planujemy zbudować pierwszego robota, którym ma być linefollower. Jak wspomniałem będzie to pierwszy nasz projekt tego typu no i właśnie. Czy macie jakieś rady dla nowicjuszy? Na co uważać, co polecacie itd. Jeśli chodzi o uC myślałem nad STM32F7 lub G4, ale narazie to tylko plany. Jestem otwarty na sugestie i chętnie pogadam z bardziej doświadczonymi. Pozdroo💪
  5. Cześć, Na forum jest już kilka podobnych projektów, mimo to dołączę swój. I dodam że w końcu po Pandemii pojawiły się jakieś zawody robotów!!! Być może uda mi się w końcu wziąć udział w jednych z nich 🙂 https://forbot.pl/blog/wydarzenia Swoja drogą też dopytam, gdzie oprócz powyższego linku można szukać informacji na temat zawodów robotów? W konstrukcji jest sporo elementów do poprawienia, mimo wszystko ja jestem zadowolony z osiągniętych rezultatów! 🙂 Samą konstrukcje szczegółowo omawiam na video: Jeśli masz pytanie - pytaj. Jak będę potrafił to postaram się odpowiedzieć.
  6. [Przydługa osobista historia] Będąc uczniem nieistniejących już gimnazjów, zapragnąłem dowiedzieć się, jak działa tranzystor. Artykuły na wikipedii niewiele mi tłumaczyły, dlatego sięgnąłem do archiwów Elportalu i zacząłem czytać stare artykuły z Elektroniki dla wszystkich". Było to dość trudne do zrozumienia, ale czytałem w kółko, aż coś załapałem. Próbowałem coś tam majstrować przy elektronice, ale moje zrozumienie tematu było słabe. Elektroniki cyfrowej nawet nie próbowałem, bo uważałem, że to "kolejny krok" po elektronice analogowej, a tej jeszcze nie ogarniam. Przełomem była rada mojego wujka, który zasugerował mi, żebym spróbował, bo obwody są prostsze i nie wymagają tak wielu obliczeń. Spróbowałem, spodobało mi się i posiadając już pewną wiedzę, postanowiłem zbudować linefollowera. To był rok 2010, więc Arduino nie było jeszcze w powszechnym użyciu, więc oparłem swój projekt o Atmegę 8 zaprogramowaną w BASCOM. Projekt niestety upadł, ponieważ liczne problemy z elektroniką (pierwsza samodzielnie wytworzona płytka-podstawka do programatora szwankowała), mechaniką (problem z osadzeniem kół) i ograniczony budżet zniechęciły mnie do zabawy. Początki jednak wrzuciłem na to forum i o dziwo temat się zachował! Potem porzuciłem trochę elektronikę i nauczyłem się podstaw programowania (Turbo Pascal :)), ale na studiach (niezwiązanych z elektroniką), kupiłem klona Arduino i wróciłem do zabawy. Później bawiłem się trochę drukiem 3D, do czego zachęcił mnie przypadkowo (służbowo) poznany doktorant pracujący w GIGu i robiący badania wytrzymałościowe wydruków. Do tej pory sądziłem że to musi być strasznie skomplikowane 🙂 Ostatnio miałem ochotę zrobić "coś elektronicznego", ale nie miałem pomysłu. Nie byłem zbyt wielkim fanem odtwarzania tutoriali. Wolałem sam rozwiązać jakiś problem. Przypomniało mi się jednak o mojej próbie z linefollowerem sprzed 10-laty i uświadomiłem sobie, że nawet jeśli pomysł będzie odtwórczy, to jego realizacja na pewno będzie tylko moją inwencją, a przez problemy które na pewno się pojawią, wiele się nauczę. Dostępność i ceny części do amatorskich konstrukcji poprawiły się tak bardzo, że nie zatrzymam się na problemach, które powstrzymały mnie 10 lat temu. Popularne stały się płytki rozwojowe, które były tanie i do programowania wymagały jedynie kabla USB. Napęd, koła i baza robota jest do kupienia w internecie za mniej niż 40 zł. Można się będzie skupić na prawdziwych wyzwaniach. [Część techniczna] Jako że w tym roku zainteresowałem się Pythonem, a potem poznałem jego wersję na mikrokontrolery, postanowiłem, że projekt będzie oparty o ESP32 (devkit) i zaprogramowany w Micropythonie właśnie. Będzie to świetna okazja żeby nauczyć się czegoś spoza ekosystemu Arduino. Na pewno w Micropythonie pisze się szybciej, ale wykonuje się wolniej, ponieważ jest językiem wyższego poziomu niż C. Powinna to częściowo zrekompensować platforma sprzętowa o wydajności i pamięci znacznie większej niż Arduino Uno. Jak wyjdzie? Zobaczymy. Drugi ważny komponent - mostek H to moduł oparty na TB6612FNG. Byłem bliski odruchowego zamówienia popularnego L293D, ale nie byłem pewny czy tanie zespoły napędowe nie będą wymagały większej mocy aby poruszyć kołem, a spore spadki napięć na tym, jakby nie patrzeć, starym scalaku pogorszą sprawę. Na szczęście chwilę poszperałem i znalazłem ten fajny, niewiele droższy, ale oparty już o MOSFETy moduł. Wykrywanie linii pozostawiłem jednak klasycznemu rozwiązaniu jakim są CNY70. Pora przerwać tę ścianę tekstu pierwszym zdjęciem: Zdj. 1. Główne elementy zakupionego zestawu. Bardzo szybko uporałem się z jego złożeniem. Od razu po tym pojawiły się proste dylematy. ESP32 przyszło z wlutowanymi goldpinami, ale chciałbym je mieć odwrotnie. Przelutowywać, czy na samym początku połączyć w mniej wygodnej pozycji? Próba wylutowania kilkunastopinowej listwy okazała się trudna, więc porzuciłem ją, nie chcąc ryzykować uszkodzenia płytki. Złożyłem pierwszą wersję na zwykłych du pont cables, napisałem prosty kod do obsługi silników i dość szybko udało się zakręcić kołami 🙂 W międzyczasie przełożyłem ESP na dwie małe płytki stykowe, żeby łatwiej tworzyć i zmieniać połączenia. Pierwsze rozczarowanie związane z Micropythonem to brak bibliotek do obsługi klasycznego Bluetooth, jedynie BLE, które jest sporo bardziej skomplikowane w obsłudze. Postanowiłem na tym etapie nie tracić czasu na opanowywanie BLE i dokupiłem poczciwy moduł HC-05. Plusem Micropythona okazał się dostęp do konsoli i możliwość wgrywania programów przez WiFi (usługa nazywa się WebREPL). Działa to jednak średnio gdy byłem już na etapie testów jednego czujnika i chciałem wysyłać jego odczyty co mniej niż 500 ms, widocznie procedura łączenia trwa dość długo i była zakłócana przez ciągle wysyłane dane. Pomogło wysyłanie ich przez inny UART, do którego wpiąłem się najpierw przez zwykły konwerter USB-UART, a potem zastąpiłem HC-05. Robot w tej chwili nie ma mocowań płytek, bo po sprawdzeniu, czy da się sterować kołami, zajmuję się samymi czujnikami, więc robot sobie stoi, a ja grzebię w elektronice i oprogramowaniu. Jak będzie miał jeździć to na pewno zamocuję te płytki i kable. Tak to wygląda w tej chwili: Zdj. 2, 3, 4 Wygląd robota - stan 09.12.2020 Dla czujnika bez problemu udało się dobrać próg wykrywania czarnej linii. Przy małej odległości od dobrze refleksyjnej powierzchni mam odczyty z ADC nawet poniżej 100, a przy zwiększeniu tej odległości lub skierowaniu transoptora na czarną taśmę izolacyjną, spokojnie dobijam napięciem do maksymalnego zakresu ADC (4095). Jeden problem z głowy. Na tę chwilę zakodowałem linię jako odczyt powyżej 1000. Żeby przetestować szybkość działania bez obciążania UARTów dużą ilością danych, zaprogramowałem gaszenie i zapalanie wbudowanego w płytkę LEDa przy zmianie wartości poza progową. Pojawił się ciekawy problem. Kiedy ESP było podłączone do komputera przez USB i stamtąd brało zasilanie, wszystko działało. Po odłączeniu i zasilaniu z baterii świeciła się dioda Power, ale program nie wykonywał się, bo kiedy zmieniałem położenie czujnika względem różnych powierzchni, dioda sygnalizacyjna nie świeciła. Byłem przekonany, że układ ciągnie momentami za duży prąd i mikrokontroler resetuje się. Byłem zaskoczony, ponieważ ubiegłej nocy wymieniłem baterie ze zwykłych ogniw cynkowo-węglowych na alkaliczne żeby uniknąć takich kłopotów.. Jednak na pinie Vin miałem spadki do nawet 3,7V. Zacząłem mierzyć rezystancję wewnętrzną zestawu ogniw i wyszło mi coś takiego: Pobór prądu przez układ (bez pracujących silników, bo ich nie używałem na tym etapie) z podłączonym HC-05 wynosił około 140 mA. Przyjmując Rw baterii na poziomie 5 omów, przy tym poborze prądu powinienem mieć spadek do ok. 5,4 V, wciąż więcej niż z USB. Nie ma co wierzyć statycznym pomiarom, w takim układzie mogą być jakieś piki, które będzie można wyeliminować kondensatorem, więc sięgnąłem po oscyloskop i sprawdziłem napięcie przy nóżce Vin. Napięcie było poniżej 5V, a okresowo spadało jeszcze nawet o prawie 1,2 V! Podczas pomiarów rezystancji baterii nie udało mi się uzyskać takiego spadku nawet pobierając z układu 350mA. Powtarzając kilkukrotnie pomiary, wpiąłem się sondą nieco bliżej baterii. Tam napięcie było w porządku. Skoro przy pinie są duże spadki, a kabelek dalej już nie to... KABELEK Co mogło być z nim nie tak? Spróbowałem zmierzyć rezystancję i aż Wam to nagrałem. Coś w obszarze zaciśnięcia kabla na pinie musi być nie tak, bo nic nie wypada, a rezystancja wariuje. Co najciekawsze, wynik pomiaru pływa nawet gdy kabel leży nieruchomo! Miał ktoś z Was taką sytuację? Wymieniłem kabelek na inny i jak ręką odjął. Tak to jest jak człowiek szuka przyczyn daleko, a rozwiązanie jest banalne. Plan na najbliższe dni: Zdecydować, jak rozmieścić czujniki. Na pewno na początek w linii prostej, ale 4, czy 5, sąsiadująco, czy w odstępach, wszystkie sąsiadująco, czy tylko centralne, a może wszystkie w odstępach, jakie te odstępy? Warianty można mnożyć, może popatrzę na rozwiązania użytkowników forum, jeśli macie jakieś propozycje, to chętnie wysłucham. Jak będzie decyzja to zlutuje je na płytce uniwersalnej 20x80 i będę ją musiał jakoś przymocować. Prawdopodobnie wydrukuję wysięgnik trzymający płytkę. W grę jednak wchodzi też wydrukowanie sensorotrzymacza, który pozwoli na swobodne przesuwanie transoptorów i dobór najlepszej konfiguracji. Podsumowanie 09.12.2020: Wiem, rozpisałem się, ale... miałem ochotę się tym podzielić i tyle 🙂 Historiografię wyraźnie oznaczyłem więc jak ktoś chce pominąć to widać gdzie zaczyna się część techniczna. Chętnie wysłucham konstruktywnej krytyki, sugestii i odpowiem na pytania związane z robotem i Micropythonem, bo uważam że język ten zasługuje na większą popularność, również w polskim DIY.
  7. Cześć! Powoli zauważam, że roboty tego typu zaczynają wymierać i odchodząc na lf-ową "emeryturkę" chciałbym zostawić jakiś ślad po swoim projekcie. Choć na zawodach nigdy nie szczędzę informacji na temat swojego robota i chętnie dzielę się wiedzą oraz doświadczeniem w temacie, to mam wrażenie, że ilość lepszych robotów w konkurencji nie zwiększa się, a nawet spada. Na zawodach starzy bywalce ścigają się między sobą, a młodzi pewnie zniechęcają się do konkurencji, ze względu na wysoki próg wejścia do walki o nagrody. Cukiereczek - LineFollower bez turbiny (Nazwa nawiązuje do mojej poprzedniej konstrukcji - Candy). Jest to robot, którego zbudowałem w ramach pracy przejściowej magisterskiej między styczniem a marcem 2018r. Debiutował na zawodach Robomaticon 2018 w Warszawie, gdzie zajął 3 miejsce, zaraz za Candy (zabrakło czasu na napisanie sensownego programu). Później rozwijane było oprogramowanie, które zostało tematem pracy dyplomowej. Wydaje mi się, że jest to obecnie najszybszy robot w swojej kategorii w Polsce, aczkolwiek scena LF od 2018r. mocno się uszczupliła - być może o potencjalnie szybszą konstrukcję. Główne cechy: 12 czujników linii Mikrokontroler STM32 F7 IMU: żyroskop + akcelerometr RGB 🙃 Lidar ToF USB karta µSD Bluetooth 4.2 Własny mostek H Enkodery magnetyczne 1. Konstrukcja mechaniczna Wydaje mi się, że kształtem przypomina robota Fuzzy, którym swego czasu mocno się inspirowałem przy robocie Candy. Mam nadzieję, że nikt tutaj nie uzna robota za bezpośrednią kopię - kształt jest zdecydowanie inny, podyktowany konkretnymi założeniami i doświadczeniami z poprzednich konstrukcji. Podwozie stanowią 2 moduły PCB: płytki głównej oraz płytki z czujnikami linii, połączone ze sobą taśmą FFC i usztywnione węglową listewką modelarską. Ślizg przedniej listewki zapewniają 2 ścięte łby nylonowych śrubek, z doklejoną podkładką teflonową. Z tyłu robota doklejony jest wheelie bar, w postaci kawałka listewki węglowej ze śrubką oraz teflonem. Wielokrotnie przerobiony temat - gdyby nie podpórka, robot wywracałby się do góry dołem oraz podskakiwał na każdym zakręcie. Napęd: 2 silniki szczotkowe Pololu HPCB 10:1 z obustronnym wałem, na który nałożono magnes 6x2.5 do enkodera magnetycznego. Koła to felgi wydrukowane na drukarce 3D z oponami Mini- Z. Nie dają takiej przyczepności jak poliuretan, ale nie udało mi się dobrać lepszych kół przy samodzielnym odlewaniu. Silniki zostały odrobinę podniesione podkładkami z PCB o grubości 1mm oraz kauczukiem tłumiącym wibracje. Do ich montażu wykorzystałem standardowe, plastikowe mocowania Pololu. Waga konstrukcji to 55.5g (66g z akumulatorem). Nie była priorytetem. 2. Elektronika Wszystkie płytki PCB zostały wykonane w firmie Techno Service z Gdańska. Płytka główna oraz płytka z czujnikami to płytki 4-warstwowe, pozostałe: płytki enkoderów oraz płytka IMU, 2-warstwowe. Schemat oraz layout stworzyłem w programie Altium Designer. Robot może być zasilany z akumulatora li-po 2-4S (6-17V) lub bezpośrednio z USB (bez możliwości uruchomienia silników). Oprócz pomiaru napięcia wejściowego, dodatkowo wstawiono układ pomiaru prądu pobieranego przez robota. Robot startuje obecnie z akumulatorami 2S, 180mAh, 50C. Sekcję zasilania (oprócz sekcji silnikowej) stanowi przetwornica 5V 1A, oraz układy LDO na napięcie 3.3V (osobne dla MCU, sekcji analogowej oraz czujnika IMU). Na płytce czujników znalazło się 12 transoptorów KTIR0711S. Są gęsto ułożone w jednakowych odstępach tworząc delikatny łuk. Zdecydowano się na proste rozwiązanie hardware'owe, dające równomierne odczyty z trasy. Przekombinowany układ czujników mógłby powodować dodatkowe komplikacje (różne odczyty na odsuniętych czujnikach, wpływ nierówności trasy - odległości sensorów od podłoża), więc wszelkie wykrywania dziwnych elementów na trasie realizowane są software'owo. Moduł IMU został zamocowany na padzie kauczukowym tłumiącym wibracje. Użyto sensora Invensense ICM-20602. Jak widać na zdj. poniżej, bardzo poważnie potraktowałem kwestię wibracji, które mają spory wpływ na odczyty. Wykorzystany czujnik posiada wysoką czułość i jest wrażliwy na wibracje i naprężenia. Sensor posiada dedykowaną linię zasilania z oddzielnego LDO o wysokim PSRR. Mostki H zbudowano na układach przekształtnikowych TI DRV8703 oraz tranzystorach N-FET: Toshiba TPWR8503NL. Taki układ mimo, że skonstruowany mocno na wyrost, pozwala na dowolne wysterowanie silnika, w tym zmianę kierunku obrotu bez żadnych dodatkowych opóźnień. Poprzednio stosowane mostki, popularne TB6612 wymagały łączenia kanałów i stosowania opóźnień. Wydajność takiego mostka szacuję na ok. 10A ciągłego prądu (z prądem chwilowym sięgającym +100A), sensownie byłoby lepiej dopasować mostek do wykorzystanych silników, jednak ze względu brak czasu na testowanie i chęć zamknięcia projektu w jednej rewizji PCB, postawiłem na "zero kompromisów". Dodatkowym założeniem była chęć ewentualnej zmiany silników na mocniejsze. Enkodery to AS5047P zamontowane na pionowych płytkach PCB. Podłączone zostały magistralą SPI. Dokonują pomiaru kąta absolutnego, z rozdzielczością 14 bitów. Uwzględniając przekładnię mechaniczną, można uzyskać ponad 160 tysięcy jednostek na obrót koła. Mikrokontroler zastosowany w projekcie to STM32F722 w LQFP64. MCU taktowany jest z częstotliwością 216MHz. Wszystkie piny procesora zostały wykorzystane. Posiada bardzo duży zasób obliczeniowy, znacznie większy od F1, dzięki czemu algorytmy sterujące mogą być skomplikowane i nie trzeba rezygnować z obliczeń na floatach. Karta µSD podłączona została pod SDMMC, na 4-bitowej szynie SDIO. Czujnik odległości to ST VL53L1X, laserowy czujnik Time of Flight, podłączony pod magistralę I2C. Został umieszczony na mocowaniu silnika, w celu uniknięcia dodatkowej bezwładności na listewce robota. Posiada spory zasięg, więc utrata długości z listewki nie jest problemem. Niestety czujnik domyślnie posiada spory field of view, który można odrobinę zmniejszyć tracąc również na zasięgu. Mam z tym czujnikiem sporo problemów. Na zawodach w Rzeszowie wyłapywał patyczki znaków drogowych postawionych przy trasie (inni zawodnicy nie mieli z nimi problemu) oraz bardzo często zdarza mi się, że silnik potrafi zawiesić czujnik podczas przejazdu. Rozwiązania w tej formie nie polecam. 3. Oprogramowanie Przy prowadzeniu projektu wspomagałem się programem CubeMX, a kod pisany był w środowisku Atollic TrueStudio. Poza bibliotekami CubeHAL, z których korzystam, całość własnego kodu została napisana w języku C++. Kod został podzielony na klasy, często wykorzystując przy tym mechanizm dziedziczenia. Użycie C++ pozwoliło wygodnie operować kodem, którego fragmenty wykorzystuję również w innych swoich projektach. Zrezygnowano z wykorzystania RTOSa (FreeRTOS w tym przypadku), ze względu na spory koszt samego OS przy pętlach rzędu 10kHz. STM serii F7 posiada wystarczająco dużo timerów, aby poszczególne zadania podzielić w niezależne pętle z własnym priorytetem. Do obsługi czujników linii, wykorzystano "tylko" 1 przetwornik ADC. Łączenie kilku przetworników w celu uzyskania szybszych pomiarów uznałem za bezcelowe, gdyż prawdopodobnie i tak musiałbym wyzwalać pomiary timerem, aby nadążyć z przetwarzaniem pomiarów. Obecnie pomiary wykonują się z częstotliwością ok. 56kHz i każda próbka brana jest pod uwagę podczas przejazdu. Pozycja linii wyznaczana jest w prosty sposób, przy pomocy średniej z wag przypisanych do każdego czujnika. Wagi czujników są u mnie odrobinę nieliniowe. Osobno rozpatrywane są "przypadki specjalne", gdy pod czujnikami brakuje linii itp. Osobny przetwornik wykorzystano do pomiaru napięcia i prądu. Liczona jest także zużyta pojemność baterii. Pętla sterowania silnikami z regulatorami PID wykonuje się z częstotliwością 8kHz. Nastawy zostały dobrane po części w Matlabie, później dostrojone empirycznie. Pętla żyroskopu również wykonuje się z częstotliwością 8kHz, taktowana jest przerwaniem dataready czujnika. Żyroskop wykorzystuję obecnie do omijania przeszkód oraz w odometrii. Główna pętla - podążania za linią wykonuje się z częstotliwością 400Hz. Sterowanie odbywa się poprzez typowy regulator PD, którego nastawy dobrane zostały metodą prób i błędów, bazując również na poprzedniej konstrukcji - przyspieszony proces. 4. Dodatki Sygnalizacja RGB - Zamiast niezależnych diod LED, wykorzystałem 4 diody WS2812B, które mogłem podłączyć do 1 pinu mikrokontrolera (a zużyłem wszystkie). Na diodach sygnalizowany są stany poszczególnych elementów robota, np. kalibracji żyroskopu, stanu baterii, stanu załączenia silników czy błędu regulatora linii. Interfejs USB - Jedyne złącze użytkowe w robocie. Jako, że interfejs SWD programowania wyprowadziłem w postaci padów do lutowania, "codzienne" programowanie robota odbywało się przez interfejs USB w trybie DFU. Napisany został kod umożliwiający przejście mikrokontrolera do wewnętrznego bootloadera, a następnie wgranie nowego programu. USB służył także do debugowania poprzez port COM. Karta µSD do logowania danych podczas przejazdu. Logowanie odbywa się w tle, w czasie wolnym procesora. Dane zbieram z częstotliwością ~1kHz i zapisuję binarnie w pliku (system FAT32). Logi dostarczyły mi sporo informacji "ukrytych" w robocie i przydały się w pracy magisterskiej. Poniżej przykładowe wykresy dla poboru energii, sterowania, czy utworzonej mapy trasy z uwzględnieniem omijania przeszkody. Aplikacja na smartfon pod moduł BT 4.2. Stosując moduł inny niż HC-05, zmuszony byłem stworzyć własną aplikację smartfonową do zmiany nastaw robota oraz zdalnego startu. 5. Osiągnięcia: 1 miejsce, LineFollower bez turbiny, Robomaticon 2019 w Warszawie , 9 marca 2019 1 miejsce, LineFollower Standard, XI Robotic Arena – Wrocław, 12 stycznia 2019 1 miejsce, LineFollower Enhanc3D, XI Robotic Arena – Wrocław, 12 stycznia 2019 1 miejsce, LineFollower Standard, Bałtyckie Bitwy Robotów w Gdańsku, 26-27 maja 2018 3 miejsce, LineFollower 3D, Bałtyckie Bitwy Robotów w Gdańsku, 26-27 maja 2018 1 miejsce, LineFollower Standard, Zawody ROBO~motion w Rzeszowie, 19 maja 2018 3 miejsce, LineFollower bez turbiny, Robomaticon 2018 w Warszawie, 3 marca 2018 Poniżej kilka filmów:
  8. Cześć, zbliża się nowy rok akademicki i przez to będę miał mniej czasu na konstruowanie, dlatego jeszcze zanim zaczną się pierwsze laboratoria online chciałem zbudować coś prostego, co nie zajęłoby zbyt wiele czasu, a i dawało satysfakcję. Postawiłem na budowę line follower'a, ponieważ - co wielu z Was może zdziwić - jeszcze nigdy nie robiłem robota tej klasy. W internecie oczywiście jest wiele tutoriali poświęconych budowie podobnych pojazdów, jednak uznałem, że dużo więcej wyciągnę z nauki działania czujników zbliżeniowych oraz samodzielnego skonstruowania i zaprogramowania robota. Elektronika Sercem robota jest stara dobra płytka Arduino Uno, natomiast jako sterownika silników użyłem rozszerzenia Ardumoto od SparkFun. Czujniki to popularne TCRT5000 z potencjometrem do regulacji czujności. Jako zasilania używam 4 baterii AA zapakowanych do koszyka z włącznikiem. Mechanika Podwozie składa się z płytki wyciętej z 3 mm spienionego PCV, dwóch silników Dagu DG01D-L z przekładnią 48:1, które były w zestawie z płytką Ardumoto oraz kulki podporowej dla stabilizacji. Kod Jestem dość zielony jeśli chodzi o programowanie, więc działanie kodu jest dość proste. Arduino odczytuje sygnał cyfrowy z czujników zbliżeniowych, a następnie z pomocą instrukcji warunkowej decyduje, który silnik uruchomić. Poniżej wrzucam kilka fotek, filmik oraz kod. Mam nadzieję, że nie jest to projekt zbyt banalny na tutejsze standardy 😅. Swoją drogą mogę polecić budowę takiego robota dla początkujących, ponieważ mimo swojej prostoty daje sporo satysfakcji. 🙂 const int pinIRdL = 8; const int pinIRdR = 7; int wartoscL = 0; int wartoscR = 0; #define CW 0 #define CCW 1 #define MOTOR_A 0 #define MOTOR_B 1 #define trigPin 8 #define echoPin 9 const byte PWMA = 3; // PWM control (speed) for motor A const byte PWMB = 11; // PWM control (speed) for motor B const byte DIRA = 12; // Direction control for motor A const byte DIRB = 13; // Direction control for motor B void setup() { pinMode(pinIRdL, INPUT); pinMode(pinIRdR, INPUT); } void loop() { if(wartoscL == 1 && wartoscR == 0) { driveArdumoto(MOTOR_A, CW, 90); stopArdumoto(MOTOR_B); delay(10); } else if(wartoscR == 1 && wartoscL == 0) { driveArdumoto(MOTOR_B, CCW, 90); stopArdumoto(MOTOR_A); delay(10); } else if(wartoscL == 0 && wartoscR == 0) { driveArdumoto(MOTOR_A, CW, 90); driveArdumoto(MOTOR_B, CCW, 90); } else if(wartoscL == 1 && wartoscL == 1) { stopArdumoto(MOTOR_A); stopArdumoto(MOTOR_B); } wartoscL = digitalRead(pinIRdL); wartoscR = digitalRead(pinIRdR); } void driveArdumoto(byte motor, byte dir, byte spd) { if (motor == MOTOR_A) { digitalWrite(DIRA, dir); analogWrite(PWMA, spd); } else if (motor == MOTOR_B) { digitalWrite(DIRB, dir); analogWrite(PWMB, spd); } } void stopArdumoto(byte motor) { driveArdumoto(motor, 0, 0); } void setupArdumoto() { pinMode(PWMA, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(DIRA, OUTPUT); pinMode(DIRB, OUTPUT); digitalWrite(PWMA, LOW); digitalWrite(PWMB, LOW); digitalWrite(DIRA, LOW); digitalWrite(DIRB, LOW); } Filmik
  9. RoChN 4 to robot typu linefollower, kolejny z serii Robotów o Chwytliwych Nazwach. Jest to konstrukcja w dużej mierze eksperymentalna, stworzona w celu przetestowania nowych pomysłów i komponentów. Wyniki nie były priorytetem, ale robot radzi sobie całkiem nieźle. Prawdopodobnie należy do kilku najlepszych, startujących na zawodach, linefollowerów w Polsce. Rozwijamy go razem z Pojemnikiem od ponad roku, w czasie wolnym między "przygotowaniami" do matury i jesteśmy zadowoleni z osiągniętych efektów. Historia powstania: Po zajęciu kolejnego czwartego miejsca RoChNem 3 uznaliśmy, że osiągnął on już szczyt swoich możliwości i trzeba zbudować coś nowego, aby wreszcie wskoczyć na podium. Początkowa “lista życzeń” wyglądała następująco: STM32 enkodery IMU Chcieliśmy też lepiej zaprojektować sekcję zasilania, żeby uniknąć losowych resetów procesora które zdarzały się poprzednikowi. W ciągu kilku tygodni stworzyliśmy projekt mocno inspirowany Fuzzym. Już wysyłaliśmy zamówienie, gdy odkryliśmy w projekcie poważny błąd. Jego naprawienie wymagałoby zaprojektowania całej płytki od nowa, więc schemat poszedł do kosza. W tym samym czasie na forum pojawił się opis Cukiereczka, który okazał się kopalnią wiedzy o linefollowerach. Uznaliśmy wtedy, że trzeba się inspirować najlepszymi i od tego czasu pomysł na RoChNa 4 był już inny. Postanowiliśmy w jednym robocie zamontować możliwie dużo “wodotrysków” i sprawdzić, które z nich dają tak dużą przewagę podczas zawodów. Dla upamiętnienia niedokończonego poprzednika oficjalny numer umieszczony na płytce ukończonego robota to 4.1. Jako, że jest to konstrukcja eksperymentalna, postawiliśmy na modułowość. Sterowniki silników, enkodery i moduł bluetooth umieszczone zostały na dodatkowych płytkach przylutowanych w pionie do głównego PCB. Dzięki temu rozwiązaniu byliśmy w stanie wygodnie wymieniać i przeprojektowywać peryferia, co bardzo się przydało podczas usuwania błędów konstrukcyjnych. MECHANIKA Kolory: Jak wiadomo ładne roboty szybciej jeżdżą[potrzebny przypis]. Dlatego od początku planowaliśmy jak będzie wyglądał nasz linefollower. Postanowiliśmy wzorować się na bolidach Formuły 1, w końcu są one dosyć szybkie. Mieliśmy już zamówione pionowe płytki w zielonym kolorze, więc ilość bolidów zawęziła się do malowania Force India z 2011 roku. Zdjęcie Cukiereczka jako robota, na którym się wzorowaliśmy, przemalowaliśmy w Paint-cie, żeby zobaczyć, jak będzie wyglądać. Na (nie)szczęście zielone płytki okazały się grubości 2mm, co dyskwalifikowało je z wykorzystania w robocie, więc mając wolny wybór zdecydowaliśmy się na żółto-czarną kolorystykę Renault. Ostatecznie jesteśmy całkiem zadowoleni z tego jak prezentuje się nasz robot. Podwozie: Robot składa się z dwóch płytek PCB połączonych taśmą FFC (raster 0,5mm, 24 piny) oraz dwiema listewkami. Próbowaliśmy je zrobić z włókna węglowego, ale okazało się, że nie umiemy wywiercić w nim otworów domowymi sposobami. Zamówiliśmy też listewki plastikowe, ale były tak miękkie, że na zakręcie przednia płytka mogłaby uderzać o tylną. Gdybyśmy kupili je z twardszego materiału, może zaoszczędzilibyśmy kilka gram na masie robota, ale aktualnie jesteśmy zadowoleni z aluminiowych. Z tyłu nie mogło zabraknąć listewki ochraniającej robota przed obróceniem podczas ruszania. Całkowita masa wynosi 62 gramy (73 z akumulatorem). Taśma FFC poza obsługą 14 czujników koloru i 3 żył z zasilaniem, posiada 7 żył, na których zależnie od użytych czujników odległości można wyprowadzić 2xI2C, SPI, jeden pin ADC, lub po prostu użyć ich jako GPIO. Napęd: Dwa standardowe silniki Pololu 10:1 z obustronnym wałem i węglowymi szczotkami jak zawsze spisują się bardzo dobrze, choć słychać już powoli ich zużycie (to już drugi komplet). Powoli osiągamy koniec ich możliwości, więc kolejna konstrukcja będzie pewnie używać czegoś innego. Zastosowaliśmy przedłużone mocowania, aby szerokość płytki nie przekraczała 10 cm i zamontowaliśmy od dołu zaślepki osłaniające przekładnie przed kurzem, który czasem w nie wpadał. Koła i opony: Początkowo robot jeździł na felgach toczonych w aluminium. Teraz ma dwa razy lżejsze wydrukowane na drukarce 3D, ale za to lekko bijące (musieliśmy rozwiercić otwór na wał, co nie wyszło idealnie). Kiedyś próbowaliśmy odlewania oponek z silikonu - miały podobną przyczepność, ale zużywały się dużo szybciej od Mini-Z, więc używamy tych drugich. ELEKTRONIKA PCB: Zdecydowaliśmy się na czterowarstwową płytkę, bo już podczas projektowania poprzedniego linefollowera mieliśmy problemy z optymalnym doprowadzeniem zasilania. Na głównej płytce jedna warstwa to wyłącznie masa, jedna zajmuje się zasilaniem, a dwie zewnętrzne wszystkimi sygnałami. Przednia płytka z czujnikami również jest czterowarstwowa, tam sygnały schowaliśmy do środka, aby zmniejszyć szumy na sygnałach analogowych. Mniejsze, żółte płytki są dwuwarstwowe. Zdecydowaliśmy się na elementy pasywne w obudowach 0402 - najmniejszych, które można wygodnie ręcznie polutować. W poprzedniej konstrukcji elementy w 0805 zajmowały dużo miejsca dlatego wybraliśmy mniejszy standard. Mikrokontroler: Pierwsza, porzucona wersja RoChNa 4 wykorzystywała STM32F1. Ostatecznie po przeanalizowaniu opisu Cukiereczka zdecydowaliśmy się na serię F7. W robocie zastosowaliśmy STM32F745VET6 w obudowie LQFP-100. Stu-pinowa obudowa okazała się niezbędna przy tylu elementach zastosowanych w robocie - tylko 5 pinów pozostało wolnych. Układ taktowany jest rezonatorem kwarcowym 8MHz, którego sygnał umożliwia stabilną pracę procesora na 216 MHz. Do programowania korzystamy z interfejsu SWD i odłamanego programatora ST-LINK z płytki Nucleo. Nie planowaliśmy programowania przez USB, choć gdyby udało się je uruchomić, to prawdopodobnie byśmy spróbowali. Zapas mocy obliczeniowej okazał się bardzo przydatny przy testowaniu najdziwniejszych rozwiązań. Czujniki linii: Użyliśmy standardowych elementów KTIR0711S. Rozmieszczone są w dość wąski (8,5 cm szerokości) łuk. Ponieważ nasz STM miał 16 pinów z ADC, a chcieliśmy także mierzyć stan baterii i mieć możliwość zamontowania analogowego czujnika odległości do wykrywania przeszkód, zdecydowaliśmy się na 14 sztuk. Odpowiedni dystans od podłoża zapewniają cztery rezystory w obudowach ¼ watta. Sterowniki silników: Po rozmowach z autorem Cukiereczka doszliśmy do wniosku, że sterowniki TB6612 mogą nie wytrzymać nagłych szarpnięć silnikami, więc wybraliśmy mostek H VNH7013 (40A prądu stałego) oraz układ DRV8703 sterujący takim mostkiem. Zestaw mógł sterować tylko jednym silnikiem, więc musieliśmy zamontować takie dwa w robocie. Jednak intuicja podpowiedziała nam, że coś może nie zadziałać, więc zamontowaliśmy je na osobnych, żółtych, pionowych płytkach, abyśmy mogli ewentualnie wymienić je na TB6612. Podczas testów udało nam się raz zakręcić silnikiem i dwa razy spalić mostek, więc ostatecznie robot jeździ na 4 starych sterownikach. Daje to 4,8A ciągłego poboru prądu przez silnik (12,8 w piku (♠)). Nie stosujemy żadnych opóźnień w celu oszczędzania tych układów i nie zostały one jeszcze uszkodzone (a przeżyły już wiele dziwnych manewrów), więc rozwiązanie choć mało profesjonalne okazało się skuteczne. Enkodery: Wybraliśmy enkodery magnetyczne AS5134 z uwagi na dużą szybkość kolejnych odczytów położenia magnesu, możliwość komunikacji po SPI do 6MHz i łatwą dostępność. Początkowo błędnie zasilaliśmy je napięciem 3,3V (układ potrzebuje co najmniej 4,5V), więc musieliśmy przeprojektować ich płytki (tu znowu pomogła nam modułowość projektu). Na prawej płytce umieściliśmy jedyny w robocie stabilizator na 5V i przewodem doprowadziliśmy zasilanie do lewej. Napięcia sygnałów z enkodera do STM-a (5V->3,3V) są dzielone dwoma rezystorami, a w drugą stronę (3,3V->5V) wzmacniane układem MOSFET-a i dwóch rezystorów. Chcieliśmy zastosować 6-biegunowe magnesy firmy Pololu, jednak enkoder zadziałał dopiero gdy użyliśmy pierścieniowe magnesy neodymowe namagnesowane po średnicy. Ustawienie magnesu i czujnika Halla w idealnej osi znacznie zwiększyło dokładność odczytów. Pomiary wykonujemy z częstotliwością 2 kHz. Zmiana kąta między odczytami wynosi zwykle 20-80 stopni, więc niedokładność pomiarów ±2 stopnie nie wpływa za bardzo na stabilność algorytmu sterującego silnikami. Bluetooth: Tu bez żadnych szaleństw. HC-05 spełnia swoją funkcję zadowalająco. Rozglądaliśmy się za czymś innym, ale nie znaleźliśmy rozsądnej alternatywy. Brakowało nam miejsca na głównej płytce robota, dlatego został on umieszczony na osobnej pionowej. Planowaliśmy wpinanie go na złączach goldpin, aby była możliwość wyjmowania go na przejazdy finałowe (mniejsza masa itd). Mieliśmy problemy z tym złączem. Wstrząsy podczas jazdy powodowały krótkie utraty zasilania podczas jazdy, co skutkowało zerwaniem połączenia i uniemożliwiało zatrzymania robota. Przylutowanie dwóch przewodów rozwiązało problem. Zasilanie: Dalej stosujemy akumulatory li-po Dualsky 2S, 150-250 mAh, te same co w Rochnie 3. Montujemy je do robota na rzep i przytrzymujemy kawałkiem drutu, aby się nie kołysały na boki. Mamy 7 akumulatorów oraz jedną ładowarkę na dwa linefollowery, więc podczas zawodów ledwo nadążamy z ich ładowaniem. Robot pożera naprawdę dużo prądu, dlatego wiele układów usypiamy lub odłączamy od zasilania (usypiając stabilizatory) kiedy robot akurat nie jedzie (patrz tabelka, nie uwzględniono prądu pobieranego przez silniki). IMU: Czujnik przestrzeni miał docelowo pomagać w zapamiętywaniu trasy i niwelowaniu poślizgu podczas pokonywaniu zakrętów. Użyliśmy układu LSM6DSM i przylutowaliśmy go bezpośrednio do głównej płytki. Pomimo tego, że podczas testów statycznych układ działa bez zarzutu (1g pojawia się w odpowiednim kierunku), to podczas jazdy wyłapywane są wszystkie wstrząsy i drgania, co uniemożliwia wykorzystanie danych w jakimkolwiek celu nawet po przefiltrowaniu. Czyszczenie kółek podczas jazdy: Przetestowaliśmy system umożliwiający czyszczenie kółek w trakcie przejazdu w celu minimalizacji wpływu przyklejającego się brudu. Rolkę do zbierania kurzu przymocowaliśmy do stelarzu wydrukowanego na drukarce 3D. System działał, ale stawiał bardzo duży opór, co znacząco zmniejszało osiągi robota, utrudniając nawet ruszenie z miejsca. Niewykorzystane bajery: Karta SD - Docelowo miała być użyta jako magazyn danych na temat trasy oraz aktualnej konfiguracji robota. Niestety nie udało nam się jej uruchomić poza odczytaniem informacji o danej karcie. Ostatecznie jako magazyn danych użyta została część niewykorzystanej pamięci FLASH. USB - Miało służyć do szybkiego wymieniania dużych ilości informacji pomiędzy robotem, a komputerem. Z nieznanych nam przyczyn nie udało nam się skłonić go do działania. Dane z robota wysyłamy albo przez Bluetooth albo zczytujemy całą pamięć FLASH programatorem. EEPROM - Został dodany na osobnej płytce, aby łatwiej zapisywać dane konfiguracyjne. Okazał się jednak nie być niezbędny, i zapisujemy te dane na kilku ostatnich bajtach pamięci. SOFTWARE Program został napisany w C z użyciem bibliotek HAL. Nigdy nie robiliśmy żadnego większego projektu na STM32, więc trzeba było nauczyć się wielu rzeczy. Algorytm podążania za linią składa się z głównego regulatora, który na podstawie odczytów z czujników linii zadaje prędkość obrotową dwóm regulatorom PD, które sterują prędkością kół. Dużą część programu zajmuje kod obsługujący komunikację przez bluetooth. Praktycznie wszystkie istotne zmienne można zmieniać zdalnie, istnieje także możliwość podglądu odczytów z czujników linii i innych danych w czasie rzeczywistym. Robot zapamiętuje cześć swojej konfiguracji w pamięci FLASH. Na potrzeby kalibracji i sprawdzania różnych rzeczy powstało kilka mniejszych programów na komputer. Głównie generują wykresy na podstawie danych z robota. Zapamiętywanie trasy: Od początku planowaliśmy zapamiętywać trasę przejazdu. Po kilku tygodniach prób i błędów udało się zrobić program, który działał na krótkich trasach. Niestety na długich się gubił. Uznaliśmy, że bez doświadczenia, wiedzy teoretycznej i pewnie dokładniejszych czujników nie będziemy w stanie zrobić lepszego algorytmu. Poniżej screenshot z programu wizualizującego zapamiętaną trasę. Usprawnienia sterowania: Robot ma kilka różnych sposobów aktywacji dodatkowego hamowania na zakrętach aby z nich nie wypadać. Uwzględnia też podczas pokonywania trasy różnego rodzaju przypadki szczególne np. kąty ostre ("teoretycznie" niemożliwe) i skrzyżowania. Na każdych zawodach sprawdzamy, jaka kombinacja ustawień zadziała najlepiej, choć mamy kilka optymalnych ustawień. PODSUMOWANIE Robot w pełni spełnił swoje zadanie, czyli przetestowanie nowej rodziny procesorów, enkoderów, IMU i zapamiętywania trasy, a wyniki są lepsze niż się spodziewaliśmy. Niestety z powodu epidemii ilość zawodów, w których mógł wystartować została mocno ograniczona. Projekt dalej jest rozwijany i wdrażamy kolejne ciekawe rozwiązania, które opiszemy, jeżeli sprawdzą się na zawodach. Osiągnięcia: III miejsce Robocomp 2019 IV miejsce Sumo Challenge 2019 II miejsce Robotic Arena 2020 Filmy z zawodów:
  10. Poproszę o sprawdzenie schematu i płytki PCB. Schemat i płytka narysowana w KiCad 5.1. Listwa ma 12 czujników. Zasilanie diód IR +5V, zasilanie tranzystorów +3V3. Diody pogrupowane po 4 szt. Zdecydowałem się nie wstawiać rezystorów do zasilania diód. Mam problem z footprintem gniazda tasiemki sygnałowej FFC. W projekcie użyłem standardowego gniazda z KiCada (Connector_FFC-FPC:TE_1-1734839-6_1x16-1MP_P0.5mm_Horizontal). Jakie gniazdo stosujecie/proponujecie? (może link do produktu)? Może ktoś mógłby podzielić się footprintem do takiego gniazda w formacie KiCad , które można kupić w Polsce? Nie wiem jakie powinienem zamieścić pliki i w jakim formacie, żeby łatwo i wygodnie można było sprawdzić schemat i płytkę. Te załączone to jpg. Proszę o wskazówki.
  11. Poniższe pytanie zostało wydzielone z następującego tematu: --- Dziękuję. A jakie obecnie są najlepsze komponenty do LF? diody: silniki: encodery: sterowniki do silników: stabilizator napięcia 5v: stabilizator napięcia 3,3v: bateria (zasilanie): Czy zalecane jest np użycie drv8833 do jednego silnika? Czy powinno się podnieść napięcie z baterii 2S 7,4v do sterowania silnikiem? Czy stabilizować napięcie sterowania silnikami? Procesor znalazłem taki STM32h750 Ma tylko 128MB pamięci. Czy to wystarczy?
  12. Cześć, zabieramy się z kolegą do zrobienia line followera na arduino nano, chcielibyśmy się zapytać, czy jest on przygotowany poprawnie. Wszystko będzie zasilane przez Li-Pol 7.4 V. Poniżej wrzucam schematy naszego układu
  13. Cześć, Najpierw co o mnie: skończyłem studia na kierunku Automatyka i Robotyka, ale pracuje jako programista w C++. Przymierzam się do zbudowania mojego trzeciego line followera. Tym razem chciałem zrobić robota mapującego trasę. Pierwsze testy na sucho wykazały, że sam enkoder umieszczony przy kołach napędowych albo na dodatkowych kołach tocznych nie zadziała dobrze przy dużych prędkościach. Pomyślałem, że mogę wykorzystać sensory optyczne z myszek gamingowych + enkodery na kołach napędowych + czujnik 9DOF + czujniki linii. Kolejnym krokiem, będzie zbudowanie prototypowego urządzenia zawierającego 2 czujniki ze zwykłych myszek oraz próba określenia jego pozycji. Jeżeli to wypali dla małych prędkości, to przymierze się do jakiś lepszych czujników i przeprowadzę dalsze testy. Czy ktoś wie dlaczego to może się nie udać? Patrząc na parametry niektórych myszek gamingowych, powinny sprostać wyzwaniu. Ponieważ projekt jest duży, a ja bardzo lubię programować, ale nie lubię tworzyć schematów elektrycznych/dobierać komponentów, to szukam wspólnika. Ogłoszenie: jeżeli zbudowałeś już wcześniej linefollowera, lubisz projektować roboty, masz aspirację zbudować najszybszego robota w Polsce, to odezwij się w tym temacie lub w prywatnej wiadomości.
  14. Cześć, potrzebuję pomocy z zasilaniem robota. Robot to linefollower oparty na arduino. -podwozie https://abc-rc.pl/product-pol-7655-Podwozie-robota-2WD-RT-4-140mm-2-silniki-z-enkoderami-platforma-mobilna.html -sterownik silników DC https://abc-rc.pl/product-pol-6196-Modul-sterownika-L298N-do-silnikow-DC-i-krokowych-Arduino.html. Najpierw myślałem o zwykłym koszyku na baterie AA ale po czasie odszedłem od tego bo w póżniejszych projektach i tak predzej czy poziej bym musiał przejść na akumulatorki które można ładować. Myślałem nad 2 celami Li-ion tylko nie wiem jak zaprojektować te zasilanie. Na pewno trzeba będzie obniżyć napięcie całego koszyka z celami i kontrolowac napiecie cel by nie spadło do poziomu gdy już będą nie do odratowania. O czymś jeszcze trzeba pomyśleć? Proszę o pomoc w zaprojektowaniu tego zasilania.
  15. Witam wszystkich Od jakiegoś czasu interesuję się robotyką, a z racji, że jestem teraz na wypowiedzeniu chciałbym stworzyć fajnego line followera. Mam już wizję tego jak to zrobić ale potrzebowałbym kilku sprostowań lub delikatnych wskazówek. Schemat sprowadzałby się do czegoś takiego: Transoptory -> komparatory -> mikrokontroler -> sterownik silników Mechanicznie na pewno chcę, aby robot posiadał silniki Pololu 30:1 lub 10:1, do tego mocowania i kompatybilne koła, które będą sterowane mostkiem H. Co do wyboru mostka też nie jestem przekonany czy L293D więc może polecacie coś innego. Sercem chcę, aby była Atmega 328, oprócz tego planuję zakupić moduł Bluetooth do sterowania telefonem. 8 komparatorów, Zestaw kondensatorów, rezystorów, taśma i złącze łączące listwę czujników z "bazą" musowo. Chcę skorzystać z 8 transoptorów KTIRO771S i tutaj rodzi się już pierwsze pytanie. Jeśli chodzi o zasilanie myślałem tu albo o koszyku baterii albo o akumulatorku. Pytanie czy silniki i procek może być zasilany z jednego źródła? Czy warto kupić gotową listwę z czujnikami, czy jednak bawić się w lutowanie transoptorów, rezystorów i kondensatorów? Na Botlandzie znalazłem takie listwy: https://botland.com.pl/pl/czujniki-odbiciowe/152-listwa-z-czujnikami-odbiciowymi-qtr-8a-analogowa.html https://botland.com.pl/pl/czujniki-odbiciowe/20-listwa-z-czujnikami-odbiciowymi-qtr-8rc-cyfrowa.html Jeśli chodzi o ramę/obudowę myślałem o laminacie. Nie mam pojęcia jednak nic o trawieniu. W sytuacji kiedy zamówię wytrawioną płytkę, konkretne ścieżki są już wypełnione miedzią i lutuję konkretne elementy do danej ścieżki? Gdybym zdecydował się na lutowanie ręczne transoptorów czy powinienem je umieszczać w delikatnym łuku czy w linii prostej będzie wystarczająco ok? Jakiś konkretny programator AVR polecacie czy każdy podejdzie do Atmegi 328? Dużo pytań, większość pewnie głupia ale tak jak pisałem na początku nie chcę wskazania gotowej drogi tylko proszę o kilka wskazówek bardziej doświadczonych użytkowników. Docelowo chciałbym, aby lf zapamiętywał przejechaną trasę odczytując co pewien czas dane z napięć na każdym silniku.
  16. Witam, umieszczam schemat mojego pierwszego Line Followera opartego na mikroprocesorze. Zdecydowałem się na rozwiązania najczęściej wykorzystywane w innych konstrukcjach tego typu przez początkujących: - ATmega328 - Pakiet LiPol 2S 7,4V - TB6612 (po jednym na każdy silnik) - Zasilanie silników bezpośrednio z pakietu - Stabilizator LM1117 dla logiki - 7 czujników KTIR0711S Schemat płytki głównej: Schemat płytki z czujnikami: Byłbym wdzięczny za przejrzenie schematu, czy nie popełniłem jakiegoś błędu przy połączeniach. 🙂
  17. Cześć! Zakładam, że skoro czytasz ten wpis to zapewne interesuje Ciebie elektronika/robotyka/majsterkowanie i zastanawiasz się jak skonstruować swojego robota. A może szukasz inspiracji? Motywacji do dalszego działania? Jeżeli odpowiedź brzmi tak, to zapraszam Ciebie do przeczytania mojego wpisu. Traktuje on o moim pierwszym elektronicznym projekcie - linefollowerze o wdzięcznym imieniu Ianush88. Wpis podzieliłem na poszczególne fragmenty tak, abyś łatwo trafił do sekcji które Ciebie interesują najbardziej. Początek każdego z nich będzie oznaczony pogrubionym tekstem. To tyle jeżeli chodzi o wstęp, zapraszam do lektury! Ważna uwaga: Ze względu na fakt, że jest to mój pierwszy projekt i ma dla mnie głównie charakter edukacyjny w wielu przypadkach zdecydowałem się na wybór prostych rozwiązań, które o wiele łatwiej zaimplementować i ewentualnie naprawić. Nad optymalizacją konstrukcji postanowiłem się skupić w ewentualnej przyszłej ewolucji tego projektu. Konstrukcja & mechanika Ianush88 to klasyczny przedstawiciel rodziny linefollower - składa się z dwóch płytek PCB połączonych ze sobą dwoma kątownikami z tworzywa sztucznego. Do głównej (większej) płytki PCB przymocowane są silniki prądu stałego Pololu HP z przekładnią 10:1 - standardowy wybór zdecydowanej większości konstruktorów linefollowerów ze względu na optymalny balans między maksymalną prędkością obrotową (3000 obr/min) a generowanym momentem (0,22 kg*cm). Do wałów silników zamocowane są koła Solarbotics RW2 - wybrałem je głównie ze względu na ich bezproblemową dostępność i łatwość w połączeniu z całą konstrukcją. Muszę przyznać, że odpowiednio wyczyszczone generują całkiem sporo przyczepności. Niestety nie mam porównania z oponami mini-z czy odlewanymi z silikonu, ale jestem z nich zadowolony. Przednia płytka PCB zawierająca czujniki linii opiera się na podłożu przy pomocy dwóch tranzystorów THT w obudowie TO-92. Ich nóżki przylutowałem do płytki a obudowy przetarłem lekko papierem ściernym tak, by swoimi krawędziami nie zahaczały o nierówności trasy. Elektronika Robot zasilany jest z akumulatora 2S 7.4V (korzystam z trzech o różnych wartościach pojemności: 150mAh, 250mAh i 800mAh). Napięcie z akumulatora jest stabilizowane i obniżane do 5V przez stabilizator napięcia LM1117. Mózgiem całej konstrukcji jest Atmega16A - wybrana przeze mnie ze względu na moją znajomość tej rodziny mikrokontrolerów. Taktowana jest przez sygnał z kwarcu o częstotliwości 16MHz. Posiada istotne ze względu na projekt peryferia: ośmiokanałowy, 10 - bitowy przetwornik ADC, UART do komunikacji z zewnętrznym urządzeniem oraz trzy timery. Każdy z ośmiu kanałów przetwornika został wykorzystany do pomiarów napięcia z kolektorów czujników odbiciowych KTIR0711S. Znajdują się one na wysuniętej z przodu płytce PCB, umiejscowione symetrycznie po obu stronach. Sygnały między płytkami przekazywane są przy pomocy taśmy i złącz FFC. Timer 1 wykorzystałem do generowania dwóch sygnałów PWM sterujących prędkością każdego z silników. Doprowadzone są one do sterownika silników TB6612FNG, który jest układem z dwoma klasycznymi mostkami H. Do wejść UARTu mikrokontrolera poprowadzone są ścieżki ze złącza goldpin, do którego podłączony jest moduł bluetooth HC-05. Wraz z UART wykorzystuje go do komunikacji między robotem a telefonem lub komputerem. Na głównej płytce znajduje się także 6 - pinowe złącze ISP służące do programowania mikrokontrolera oraz przycisk który można dowolnie zaprogramować (ja używam go do ręcznego startowania/zatrzymywania robota). Dodatkowo na głównej płytce PCB umieściłem 8 LEDów prezentujących wskazania poszczególnych czujników odbiciowych. Całość została zaprojektowana przy użyciu oprogramowania Altium Designer. Obie płytki PCB są jednostronne i rozstawienie wszystkich elementów wraz z ich połączeniem było ogromnym wyzwaniem, co jednak udało się osiągnąć (ostatecznie skorzystałem z tylko jednej "przelotki"). Na płytce z czujnikami widoczne są przeróbki w postaci dolutowanych przewodów - jest to efekt złego zaprojektowania płytki i pośpiechu w przygotowaniach do zawodów... Program Do sterowania robotem zaimplementowałem regulator PD. Wartością zadaną jest w tym przypadku położenie czarnej linii względem robota, a sterowaniem wartości wypełnienia sygnału PWM dla poszczególnych silników. Uchyb wyliczany jest na podstawie pomiarów napięcia na kolektorach poszczególnych czujników odbiciowych. Gdy napięcie przekroczy pewną wartość graniczną, przy której uznajemy, że pod czujnikiem znajduje się już czarna linia do uchybu dodawana jest konkretna wartość błędu. Każdy czujnik ma przypisaną swoją "wagę" i przy każdej iteracji regulatora wyznaczany jest średni błąd, a następnie uchyb i sterowanie. Do regulatora PD dorzuciłem pewne wyjątki, które obsługują takie przypadki jak np. zgubienie linii tak, by robot potrafił na nią z powrotem trafić. Mogę tutaj polecić artykuł "Algorytm linefollowera w C – dla początkujących i nie tylko" , który całkiem dobrze opisuje jak zaimplementować regulator pd do robota typu linefollower. Do zmiany ustawień robota, w tym nastaw regulatora przygotowałem aplikację przy pomocy narzędzia MIT App Inventor. Dobrze jego obsługę prezentuje artykuł: "Tworzenie aplikacji Android". Do komunikacji przygotowałem swój własny protokół o określonej ramce danych. Wprowadzanie danych i naciśnięcie odpowiedniego przycisku powoduje wysłanie wiadomości o konkretnej budowie i zawartości do mikrokontrolera, który ją przetwarza i zmienia wartości odpowiednich parametrów. Przemyślenia Już zaprojektowałem nową płytkę czujników, tym razem mam nadzieję że poprawnie. Teraz będą ustawione zdecydowanie bliżej siebie, ponieważ chcę żeby robot szybciej mógł reagować na zmiany trasy. W przyszłym projekcie na pewno skorzystam już z płytek dwustronnych, co pozwoli na gęstsze upakowanie elektroniki, a co za tym idzie zmniejszenie gabarytów i masy robota. A mniejsza masa = lepsze osiągi. Plus brak problemów z połączeniem wszystkich komponentów. Dostrzegłem także, że kluczową sprawą jest przyczepność mechaniczna - nawet gdy silniki mają duży moment i prędkość obrotową bez przyczepności nie przekłada się to na lepsze wyniki. Dlatego planuję w przyszłości wykorzystanie opon mini-z lub odlewanych z silikonu. Na pewno dojdzie także wykorzystanie enkoderów do pomiarów prędkości obrotowych silników i implementacja regualtorów PID dla silników. Pozwoli to na płynną regulację prędkościami i w konsekwencji mniejszą ilością uślizgów kół. Myślę także o ulepszeniu regulatora dla całego robota, sprawdzeniu kilku ciekawych rozwiązań. To już koniec! Jeżeli masz pytania lub zainteresował Ciebie jakiś temat poruszony w tym wpisie to daj mi znać w komentarzu! Powodzenia przy tworzeniu nowych konstrukcji!
  18. Przyszła pora na zbudowanie czegoś jeżdżącego a, że jakiś czas temu trochę spodobały mi się linefollowery to stwierdziłem, że i ja takiego zbuduję. Prezentowany robot to w sumie jego druga wersja, pierwsza była trochę niedoskonała i nie wyszła z fazy alfa, za to od niej wzięła się nazwa tego robota czyli „Grzmot” (po prostu tamten był jeszcze większy i cięższy a przede wszystkim brzydszy). Mechanika Całość oparta jest na dużej płytce uniwersalnej o wymiarach 150x90 na której znajdują się wszystkie elementy mechaniczne oraz elektroniczne. Napęd stanowią dwa silniki Pololu z przekładnią 30:1, koła to również firma Pololu, 32x7, do tego plastikowe mocowania silników. Przednie ślizgacze są zrobione z tego co akurat było pod ręką, kilka warstw kartonu przyklejonych na kropelkę. Działa zadziwiająco dobrze i jeszcze się nie urwało. Elektronika Mózgiem robota jest arduino pro mini, sterownik silników to L293D (wiem, dinozaur ale to nie jest konstrukcja na zawody tylko do nauki, wystarcza w zupełności). Czujniki linii to 5x pojedynczy moduł z czujnikiem ktir0711s, które są przylutowane za duży, metalizowany otwór do podłużnych padów na krawędzi płytki uniwersalnej (odczytywane analogowo). Do tego z przodu znajduje się cyfrowy czujnik odległości sharp, planowo miał służyć do wykrywania przeszkód jednak stanęło na tym, że używam go do startowania i stopowania robota (czasem nawet jak wpadnie na przeszkodę to też się zatrzyma :P). Sekcja zasilania zaczyna się od gniazda na akumulator, tutaj t-deans, dalej włącznik zasilania, dioda zabezpieczająca i stabilizator 7805 do elektroniki oraz przetwornica lm2596 (trochę nie spełniła oczekiwań) do zasilania silników. Do tego na płytce znajdują się trzy diody led (czerwona wskazuje zasilanie, dwie są podłączone do mikrokontrolera) oraz microswitch, akurat nie wykorzystywany. Jedno co na mi przeszkadza w tej części to gniazdo zasilania, którego ni jak nie dało się wlutować bezpośrednio w płytkę i musiałem to robić przez krótkie odcinki przewodów i odrobinę kleju na gorąco. Na szczęście nie psuje się, nie łamie a działa bardzo dobrze. Ogólnie to jak ktoś chce coś takiego zbudować ale nie chcę za bardzo w to inwestować to polecam taki sposób budowy, tzn na płytce uniwersalnej. Dzięki temu jest dużo szybciej niż z projektowaniem i wykonaniem pcb a ewentualne poprawki i przeróbki też są łatwe do wykonania. Wiadomo, że jak chcesz budować bolid na zawody no to czegoś takiego nie użyjesz ale do prototypowania jest super. Całość zasilana z dwu celowego akumulatora litowo polimerowego o pojemności 500mAh. Schemat jako taki nigdy nie powstał, całość była robiona na bieżąco, pinologię można wyczytać ze źródeł programu (w załączniku). Oprogramowanie Algorytm sterowania to PD oparte w dużej części na artykule batona z forum z tym, że dostosowany do arduino. W obecnej wersji samą część regulatora oparłem o bibliotekę pid, uruchomienie jest proste i efekty są widoczne dosyć szybko. Oczywiście polecam najpierw przyjąć trochę teorii o tym regulatorze a dopiero potem siadać do programowania. Osobiście nie jestem wielkim fanem matematyki więc po prostu wolę uruchomić bibliotekę i poświęcić więcej czasu na inne elementy programu. Poza tym mamy fragmenty do liczenia błędu, odczytywania ADC, sterowania silnikami i włączania/wyłączania robota (taki bezpiecznik, odczytuje napięcie akumulatora i stan czujnika sharp). Z rzeczy, które mi brakuje to na pewno kalibracja, jakiś interfejs z użytkownikiem, np. moduł bluetooth i odczyt telemetrii w czasie rzeczywistym. Przemyślenia W pierwszej rewizji tego robota silniki były zasilane bezpośrednio z akumulatora przez co strojenie regulatora było dosyć kłopotliwe bo parametry jezdne się dosyć dynamicznie zmieniały. W ramach późniejszej modyfikacji dodałem moduł przetwornicy (dlatego tak średnio pasuje i przechodzą pod nią przewody) i myślałem, że wyeliminuje to do pewnego poziomu problem zmiennej dynamiki. Niestety rzeczywistość mnie trochę zaskoczyła, napięcie na wyjściu to około 6V gdy akumulator ma jeszcze 7.5-8V to robot już wyraźnie traci werwę (napięcie się nie zmienia). Na szczęście mam dwa akumulatorki więc jak jeden jeździ to drugi się ładuje i tak się zmieniają co kilkanaście minut testów (nie ciągłej jazdy). Drugi problem to złe rozłożenie masy. Zdarza się, że koła tracą przyczepność i zaczynają buksować i robot się zatrzymuje. Położenie rolki taśmy izolacyjnej na wysokości silników rozwiązuje ten problem. Do tego jeszcze ciekawostka, wydaje mi się, że robot lepiej radzi sobie na samym regulatorze P (przynajmniej na mojej, domowej trasie). Owszem, oscyluje ale i tak wydaje się, że jedzie średnio szybciej niż po dłuższej chwili strojenia metodą z artykułu. Postaram się to pokazać na filmach, liczę, że bardziej doświadczeni coś podpowiedzą (chciałbym tutaj jeszcze poeksperymentować). Jeżeli macie jakieś pytania albo czegoś nie napisałem/napisałem niezrozumiale to proszę o zwrócenie uwagi, odpowiem i uzupełnię opis. Grzmot2.0.zip
  19. Cześć, od kiedy opisałem swojego robota Pika na forum, minęło już troszkę. W tym czasie zdążyło powstać kilka kolejnych konstrukcji, zarówno bez turbiny jak i z turbiną. W tym poście chciałbym przybliżyć Wam moją najnowszą konstrukcję - robota klasy Linefollower Turbo o nazwie Spark. Głównym założeniem, jakie przyświecało mi podczas projektowania była chęć nauczenia się wektorowego sterowania silnikami BLDC oraz wykorzystanie właśnie takich silników jako napęd bezpośredni w robocie. Podczas opisu założeń konstrukcyjnych posłużę się modelem 3D robota. Jak można zauważyć na powyższym zdjęciu, ogólna konstrukcja nie różni się od znanego wszystkim standardu. Na przedzie delikatna i lekka listewka z 14 czujnikami linii KTIR0711S. Centralnie umieszczona turbina QX-Motor 14000 kv o średnicy 30 mm. Dwa silniki hexTronik 1300KV umieszczone w tylnej części w taki sposób, aby możliwe było uniesienie przodu celem wjazdu na pochylnię/rampę w kategorii Linefollower Enchanced. Sercem robota jest mikrokontroler STM32H743VIT6. Jest on oparty na rdzeniu Cortex M7 oraz taktowany z prędkością 400 MHz. Wybór tak potężnej jednostki sterującej podyktowany był chęcią wydajnego obliczania komutacji sterowania wektorowego dla każdego z silników jezdnych oraz realizacji algorytmu jazdy przy pomocy tylko jednej jednostki. Dodatkowo tak szybki mikrokontroler pozwolił na zatuszowanie moich niedoskonałości w optymalizacji kodu 🙂 Głównym elementem konstrukcyjnym jest 4-warstwowy obwód drukowany. W trakcie projektowania falowników do sterowania silnikami powstały dwa prototypy, w których miałem problem z przegrzewającymi się tranzystorami dlatego w docelowym PCB zastosowałem aż 4 warstwy. Dodatkową zaletą takiego obwodu jest jego większa odporność na zakłócenia elektromagnetyczne. Podświetlony obszar to miedź na wszystkich czterech warstwach połączonych setkami przelotek chłodząca tranzystory. Do sterowania każdym z silników wykorzystałem 6 tranzystorów w układzie pełnego mostka 3-fazowego. Posłużyły mi do tego półmostkowe układy BSG0813NDI za których udostępnienie serdecznie dziękuję firmie Infineon (oraz za tranzystory i drivery, które spaliłem w prototypach - ok 60 sztuk, nie od razu Rzym zbudowano 😅) Ostatecznie jako drivery wykorzystane zostały układy MIC4607-2 ze względu na możliwość sterowania całym mostkiem przy pomocy tylko jednego układu. Do odczytywania pozycji wirnika służy enkoder magnetyczny AMS5045B. Całość zasila akumulator Li-Po Tattu 450mAh 7.4V 75C. Za komunikację bezprzewodową odpowiada stary dobry moduł HC05. W celu zapewnienia pod robotem podciśnienia wywoływanego turbiną, zwiększającego nacisk kół na podłoże obrys uszczelniony został wydrukowaną w 3D ścianą. Do usztywnienia konstrukcji tak, aby opierała się ona o podłoże tylko kołami i ślizgaczami z przodu, posłużyły wałki węglowe o średnicy 4 mm. Do połączenia ze sobą poszczególnych elementów konstrukcyjnych wykorzystane zostały aluminiowe mocowania wykonane w technologii WEDM. Poniżej kilka fotek. Prototyp 1: Ratowanie prototypu 1 (rezystory bramkowe? A na co to potrzebne 🙂) : Prototyp 2: Elementy konstrukcyjne: Pierwsze ruchy silnika: Poszukiwanie granic: Opona wykonana z poliuretanu 20': Aluminiowa felga wciśnięta na wirnik (Pololki dla skali): Zamontowana felga wraz z oponami (Mini-Z 20'): Turbina po dezintegracji (podczas jazdy eksplodowała): Przejazd w konkurencji Linefollower Drag podczas Bałtyckich Bitw Robotów 2018: Próby podczas RobotChallenge 2018 w Pekinie: Wnioski: Konstrukcja waży 250 g. To zdecydowanie za dużo, gdyż opony nie są w stanie zapewnić wystarczającej przyczepności na zakrętach i robot wpada w poślizg na zakrętach przez co osiągnięcie prędkości średniej na krętej trasie powyżej 3 m/s jest bardzo trudne. Zastosowanie silników BLDC jako direct-drive umożliwia rozpędzenie robota do ogromnych prędkości liniowych (15 m/s+) lecz aby posiadały one zadowalający moment przy niskich obrotach konieczny do gwałtownych zwrotów muszą być duże i ciężkie. Lepiej zastosować małe silniki z przekładnią. Nowa konstrukcja już się tworzy! Dziękuję za przejrzenie albumu, który utworzyłem i zapraszam do zadawania pytań w komentarzach 🙂
  20. Wstęp Niedawno miałem okazję prowadzić zajęcia feryjne dla dzieci. Tematem, który wybrałem była robotyka. Jako, że jest to gałąź techniki, która w naszych czasach bardzo prężnie się rozwija i można powiedzieć, że rewolucjonizuje nasz świat chciałem w młodych umysłach zaszczepić do niej pasję i być może przyczynić się do rozwoju kolejnego pokolenia inżynierów. 😄 Poza tym roboty są po prostu fajne, a dzieci lubią fajne rzeczy. Potrzebna więc była konstrukcja z którą dzieciaki będą mogły wejść w jakąś interakcję, była prosta, szybka i możliwa do zbudowania z tego co miałem pod ręką 😄. Wybór padł na line followera. Założenia projektu Zbudowanie Line Followera z części jakie miałem pod ręką w swoim warsztacie (ograniczony a właściwie zerowy budżet) Maksymalne uproszczenie programu i zasady działania robota, by być w stanie objaśnić go młodszym Możliwość szybkiego złożenia robota Konstrukcja Układ elektroniczny jest banalny (nie znajdziemy tu żadnych enkoderów czy innych rzeczy znanych z konstrukcji startujących w zawodach). Głównym elementem robota jest Arduino Leonardo (aczkolwiek pod gabaryty robota lepiej sprawdziłoby się Nano, którego niestety nie miałem) do którego przyłączono dwie sekcje układu robota: napęd oraz sensor. Pod napęd wykorzystałem dwa silniczki DC Dagu z przekładnią(Mogą być np. takie). Ich sterowaniem zajął się układ L293D. W line followerach jako czujnik najczęściej wykorzystuje się transoptory odbiciowe czy własny moduł złożony z LEDów IR i fototranzystora. Ja jednak z powodu chęci maksymalnego uproszczenia całości (oraz "wizualizacji działania czujnika") wykorzystałem zwykłe białe LEDy oraz fotorezystor. Schemat zamieszczam poniżej. Dodam, że pierwotnie robot miał być zasilany przez ogniwo Li-Po z odpowiednim układem (zabezpieczenia + boost do 5V), jednak nie naładowałem żadnego ogniwa a do pokazu było coraz bliżej, więc zasiliłem Arduino z power banka. Mechanika robota jest jeszcze prostsza niż elektronika. Podwozie zostało wydrukowane na drukarce 3D i dostosowane pod Line Followera (wziąłem je z innego projektu). Koła już miałem osadzone na wale przekładni (silniczki, przekładnia jak i koła pochodzą z demontażu mojej starej konstrukcji). Zostały one wycięte z sklejki 5mm przy pomocy otwornicy a następnie nakleiłem na nie trochę gumy dla lepszej przyczepności. Program jest również bardzo prosty. Robot ma za zadanie ciągle skręcać w lewo, jeśli jednak natrafi na linię ma odbić w drugą stronę (W sumie to nie powinien być line follower a line avoider 😄). int enableChannel1 = 9; int channel1A = 0; int channel1B = 1; int enableChannel2 = 10; int channel2A = 2; int channel2B = 3; int motorPower = 255; int sensor; void setup() { //Serial.begin(9600); //Serial.println("Init"); pinMode(enableChannel1, OUTPUT); pinMode(channel1A, OUTPUT); pinMode(channel1B, OUTPUT); pinMode(enableChannel2, OUTPUT); pinMode(channel2A, OUTPUT); pinMode(channel2B, OUTPUT); } void loop() { sensor = analogRead(A0); //Serial.println(sensor); if(sensor < 200) //Wartość tą należy znaleźć samemu i dopasować ją pod swój fotorezystor i warunki oświetleniowe { forwardRight(); } else { forwardLeft(); } } void forwardRight() { //Right analogWrite(enableChannel2, motorPower); digitalWrite(channel2A, HIGH); digitalWrite(channel2B, LOW); //Left analogWrite(enableChannel1, motorPower); digitalWrite(channel1A, LOW); digitalWrite(channel1B, LOW); } void forwardLeft() { //Right analogWrite(enableChannel2, motorPower); digitalWrite(channel2A, LOW); digitalWrite(channel2B, LOW); //Left analogWrite(enableChannel1, motorPower); digitalWrite(channel1A, HIGH); digitalWrite(channel1B, LOW); } Kwestie do poprawy gdy czas pozwoli Udoskonalić program i dodać możliwość kalibracji czujnika bez modyfikowania programu Dodać zintegrowane zasilanie (akumulator Li-Po z układem zabezpieczającym i boostem do 5V) Jakoś przymocować to Arduino aby tak nie latało luzem Na koniec załączam parę zdjęć konstrukcji. Powiem szczerze był to pierwszy LF jakiego zbudowałem, bo do tej pory jakoś z tym zwlekałem (uznawałem, że mam ciekawsze projekty 😄). Jednak ten nieskomplikowany projekcik pokazał, że to fajna zabawa i gdy czas pozwoli zbuduję line followera z prawdziwego zdarzenia.
  21. Witam wszystkich. Po paru latach od mojej rejestracji na tym forum, mam w końcu przyjemność przedstawić Wam mojego pierwszego poważnego robota - linefollower'a. Na początek trochę o nim: Projekt został w całości sfinansowany przez moją szkołę, ma służyć jako pokaz na dni otwarte, ale planujemy także wybrać się z nim na parę konkursów. 2 płytki, główna i ta z czujnikami zostały zaprojektowane i wykonane przeze mnie. Ścieżki rysowałem 2 pisakami PCB: Edding 1mm i 0,3mm. Z racji, iż jest to moja pierwsza tego typu konstrukcja, to odpuściłem sobie projektowanie całości układu - nie czułem się na siłach żeby zrobić taką skomplikowaną jak dla mnie płytkę - zdecydowałem, że skorzystam ze wszelakich możliwych gotowych modułów, a tylna płytka będzie tylko łączyła poszczególne moduły. Zdaję sobie sprawę, że zyskałem przez to dużo wagi, a także straciłem aerodynamikę, ale tak jak mówiłem: nie liczę na pierwsze miejsca, ta konstrukcja miała mnie przede wszystkim nauczyć trochę o linefollower'ach, pokazać mi pułapki, które mogą gdzieś być. I spełniła tą funkcję. Ze względu na swój przepiękny wygląd płytek domowej roboty, linefollowera nazwałem RetroBot 😉 Budowa: Robot został złożony z następujących części: 2 * Silnik Pololu HP 10:1 2 * Pololu TB9051FTG - jednokanałowy sterownik silników 28V/2,6A 2 * Mocowania do micro silników Pololu 2 * Koło Solarbotics RW2 - mocowanie zewnętrzne Moduł STM32F103C8T6 ARM Cortex-M3 Moduł zasilający 3,3V / 5V z gniazdem DC Moduł Bluetooth 2.1 XM-15B 3,3V/5V 9 * Czujnik transoptor odbiciowy KTIR0711S Do budowy użyłem też laminatu, markerów PCB, lakieru izolacyjnego PVB 16, wytrawiacza, listewki węglowej 1 x 5mm, Taśmy i 2 złącz IDC 14, goldpinów, wtyków JST, rezystorów i reszty drobnicy takiej jak np. śrubki 2mm. Rezystory do czujników KTIR zostały dobrane eksperymentalnie, na wartości 560ohm do diody i 10K do kolektora. Ślizgacze natomiast zrobiłem z 2 spiłowanych kulek BB. Masa robota z pakietem wynosi 152g, a bez pakietu 140g. Efekt końcowy: Program, który miałby podążać za linią nie jest jeszcze gotowy, ale robota przetestowałem na programie, dzięki któremu działał jako auto RC. Najlepsze wrażenia były, gdy koła już oblepiły się kurzem - robot ślizgał się ze 2 sekundy zanim ruszył, a driftowanie nim po szkolnym korytarzu to bajka 😉 Już nie wspomnę o zainteresowaniu wszystkich, którzy go zauważyli - to chyba niecodzienny widok w szkole 😉 Dobry efekt tworzył się również wtedy, kiedy jedno koło kręciło się do przodu a drugie do tyłu, robot wyglądał wówczas jak jakiś wirujący krąg światełek 😄 Nie mam niestety filmu z tych wyczynów, ponieważ mój telefon służył do sterowania robotem przez BT, jednak postaram się je nagrać w najbliższym czasie. Myślałem też, żeby zrobić drugą wersję przedniej płytki: taką, na której byłby tylko jeden ballcaster i krótsza listewka węglowa, wówczas mógłbym szaleć robotem bez obawy, że zepsuję płytkę z czujnikami 🙂 Podziękowania: Chciałem również serdecznie podziękować kolegom z tego forum, którzy pomogli mi w budowie tego robota, a więc: @marek1707, za pomoc w temacie https://forbot.pl/forum/topic/12264-podlaczenie-czujnikow-ktir0711s-do-line-followera/, a także starszym: https://forbot.pl/forum/topic/11090-jakie-czujniki-do-linefollowera-pomoc-w-wyborze/?page=1 @Treker, za pomoc w temacie https://forbot.pl/forum/topic/12239-kola-do-line-followera/, a także: https://forbot.pl/forum/topic/12264-podlaczenie-czujnikow-ktir0711s-do-line-followera/ @Nawyk, za pomoc w temacie https://forbot.pl/forum/topic/12264-podlaczenie-czujnikow-ktir0711s-do-line-followera/ Galeria: Czyli to, na co pewnie każdy czekał 😉 Pierwsze kilka zdjęć to te z budowy przedniej płytki, potem już niestety nie pamiętałem i zrobiłem zdjęcia tylko ostatecznego wyniku 🙂 PS: Koniecznie dajcie znać w komentarzach, co myślicie o tej konstrukcji i co można by poprawić w kolejnej wersji 🙂
  22. Witam! Mając więcej wolnego czasu, postanowiłem opisać swojego robota – linefollowera Orzeł. Pomysł zrodził się w sierpniu, w październiku skończyłem konstrukcję mechaniczną, później trwała zabawa z kodem, strojenie, dostosowywanie wag czujników itd. Robot miał wystartować na zawodach Cyberbot w Poznaniu w maju br., które jednak się nie odbyły 🙁 . Mechanika Podstawę robota stanowią dwie dwustronne płytki PCB o grubości 1,5mm – główna i z czujnikami. Są połączone za pomocą listewki węglowej o szerokości 4mm – trochę za mało, ponieważ elementy zostały połączone śrubkami M2. Masa robota wynosi około 90g bez akumulatorka, najwięcej ważą silniki (znane Pololu 10:1 HP z przedłużonym wałem). Z akumulatorem mój linefollower ma masę około 105g, z czego jestem zadowolony. Wymiary: 170mm szerokości, 215mm długości, 29mm wysokości (bez akumulatora). Elektronika Sercem robota jest microkontroler Atmega328P. Sterownik silników to moduł TB6612. Jako czujników użyłem popularnych KTIR0711S w liczbie dziewięciu. Cześć z nich jest podłączona bezpośrednio do Atmegi, część jest podłączona do komparatora LM339L. Płytki PCB robiłem samodzielnie (projektowane w Eagle, wykonane metodą termotransferu), jestem z nich zadowolony, w niektórych miejscach grubość ścieżek wynosi 0,4mm. Zasilanie Do zasilania konstrukcji używam pakietów Li-pol Dualsky 7,4V o pojemności 220mAh i 250mAh. Elektronika zasilana jest przez stabilizator, napięcie na silniki idzie bezpośrednio z akumulatora. Program Program został napisany w środowisku Arduino IDE. Nie jest on skomplikowany, regulator P z dodatkami (których nie chciałbym zdradzać 😉 ). Osiągnięcia Robot osiąga prędkość ponad 1m/s, ale zachowuje się wówczas bardzo nerwowo. Na pierwszym filmie jego prędkość wynosi około 0,7m/s, na drugim – około 0,9m/s. Podsumowanie Ogólnie jestem zadowolony z prac. Nabrałem trochę doświadczenia z tego typu konstrukcjami, poćwiczyłem robienie płytek dwustronnych i lutowanie w SMD. Wnioski: - silniki powinny być także zasilane przez stabilizatory; - listewka węglowa musi być szersza; - ciągłe podłączanie robota do komputera i zmiany w kodzie są uciążliwe, w następnej konstrukcji zmiany prędkości, wag czujników itp. będą dokonywane poprzez moduł bluetooth; Zachęcam do komentowania i zadawania pytań 😉 . Schematu i kodu nie umieszczam. Pozdrawiam, karol2003
  23. Przedstawiam mojego najnowszego robota klasy LineFollower Standard "Fuzzy". Z opisywaną konstrukcją pojawiam się na większości zawodów jakie organizowane są w ostatnim czasie. W porównaniu do moich poprzednich robotów Fuzzy nie został wyposażony w napęd tunelowy. Powodem tej decyzji była chęć testowania nowych algorytmów. Efekty mojej pracy łatwiej zauważyć na robocie bez docisku, ponieważ jest on trudniejszy to wysterowania przy większych prędkościach. Konstrukcja mechaniczna Robot standardowo wyposażony został w dwa silniki Pololu 10:1 HP z obustronnym wałem, na którym zamocowane zostały magnesy od enkoderów. Podwozie stanowi płytka PCB wykonana w Satlandzie. Czujniki wysunięte zostały do przodu na węglowej listewce. Koła wytoczone zostały na zamówienie. Całość, zależnie od dobranego akumulatora waży 70-100g. Elektronika Prezentowana konstrukcja to czwarty prototyp robota. Głównymi elementami części elektronicznej są: mikrokontroler STMF103RBT6, enkodery AS5040 oraz mostek TB6612. Konstrukcja może obsługiwać do 16 czujników KTIR. Po przeprowadzonych testach pozostałem jednak przy 8 transoptorach. Pozostałe połączenia z czujnikami pozwalają na wizualizację ich stanów poprzez diody LED. Schemat prototypu Prototyp W poprzedniej konstrukcji do komunikacji z otoczeniem wykorzystywałem złącza typu Goldpin o rastrze 0.5mm. Częste podpinanie i odpinanie dodatkowego osprzętu sprawiło, że złącza te szybko uległy uszkodzeniu wprowadzałem spore problemów. Dlatego w nowej wersji zastosowałem złącza firmy HARTING Flexicon, które rozwiązały mój problem. Szczerze mogę je polecić, nie miałem żadnych problemów od kiedy je stosuję. Ostateczna wersja elektroniki ze złączami HARTING Flexicon Oprogramowanie Program napisany został w języku C z wykorzystaniem biblioteki dostarczanej przed producenta STMów. Kod w głównej mierze składa się z dwóch części. Pierwsza odpowiedzialna jest za komunikację z otoczeniem, druga za podążanie za linią. Kontroler robota Robot może komunikować się z komputerem lub specjalnym kontrolerem za pomocą interfejsu USART. Możliwa jest również komunikacja przez moduły Bleutooth. Całość obsługiwana jest przez własny, prosty protokół do komunikacji. Algorytm pakuje wszystkie dane w ramki oraz oblicza sumę kontrolną. Rozwiązanie takie pozwoliło na bezbłędne przesyłanie wymaganych danych. Prototyp z modułem BlueTooth Podążanie za linią wykonane zostało w oparciu o 3 regulatory: PD - podążanie za linią, sprzężenie zwrotne od czujników 2x PID - sterowanie faktyczną prędkością silników, sprzężenie zwrotne od enkoderów magnetycznych Efekty Szczególną wagę przykładałem do precyzji przejazdu, która moim zdaniem jest zadowalająca - szczególnie na kątach prostych. Robot wygrał wszystkie zawody w kategorii LineFollower Standard w jakich brał udział. Zdarzyło mu się przegonić również niejednego robota z turbiną. W optymalnych, domowych warunkach średnia prędkość robota, to ponad 2m/s. Poniżej filmik z zawodów RoboMotion z prędkością około 1,4 m/s - nie był to najszybszy przejazd. Ostateczny wygląd robota W chwili obecnej konstrukcja różni się od powyższej jedynie kolorem opon i długością listewki od czujników. Później postaram dodać więcej zdjęć - szczególnie jeśli będzie z Waszej strony zainteresowanie czymś konkretnym. Podziękowania W tym momencie chciałbym podziękować firmom HARTING oraz TME, które wspierały pracy przy tym projekcie. Zachęcam do zadawania pytań, odpowiem praktycznie na każde 😉
  24. 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ę!
  25. 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
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.