Skocz do zawartości

[Line Follower] Macaroni


Pomocna odpowiedź

Witajcie,
chciałbym pokazać mojego pierwszego LF'a zbudowanego na podstawie kursu "Przepis na robota - w pełni programowalny Line Follower" autorstwa Nawyk. Dodałem jednak od siebie kilka modyfikacji.

Cel był prosty, wejść w dziedzinę robotyki - nauczyć się lutować, wgrywać program do Atmegi8 itp.

Mój LF różni się zastosowaniem silników które pobierają większy prąd, co spowodowało, że musiałem zastosować dwa sterowniki silników L293D (mógłbym zastosować jakieś mocniejsze sterowniki, ale akurat L293D miałem w domu). Oprócz tego zasiliłem go z akumulatorai Li-Po 7,4V (logikę poprzez stabilizator, a silniki prosto z baterii). Pozbyłem się także kółka z przodu, ponieważ doprowadzał on do tego, że robot łatwo gubił trasę oraz musiał poruszać się dużo wolniej, żeby był w stanie pokonać chociaż kilka zakrętów. Zmieniłem także trochę program (robot wraca na linie jeśli ją zgubi, a nie ucieka 😃)

Poniżej wrzucam film z jego jazdy (trasa jest prosta, jednak po zmniejszeniu prędkości w programie, pokona on także trudniejsze trasy).

Niestety nie wiem jak korzysta się z regulatorów, oraz wielu innych przydatnych rzeczy, które mogłyby usprawnić moją konstrukcję i tworzyć lepsze. Aktualnie wczoraj skończyłem Technikum, także jeszcze wiele nauki przede mną. Mam nadzieję, że jeszcze przed studiami (na politechnice chyba nie będzie z tym problemu) spotkam osoby, które mi trochę wytłumaczą i pomogą (może wybiorę się na jakieś zawody).

Co do nazwy to jest ona związana z duża ilością przewodów i małą estetyką. W planach mam nauczyć się wytrawiać płytki co mam nadzieję poprawi trochę estetykę.

Ps. Człowiek, z niechęci do nauki do matury to nawet LF'a zbuduje 😃

Link do komentarza
Share on other sites

Piranha08, gratulacje pierwszej konstrukcji 🙂 Popracuj jeszcze nad programem - nawet bez regulatorów powinieneś dać radę uzyskać znacznie lepsze wyniki. Zacznij od mniejszych prędkości, ale staraj się jechać płynnie po linii (bez takich dużych ucieczek, jak powyżej) 🙂

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Wow, fajnie jest zobaczyć, że po 7 latach mój kurs nadal komuś się przydaje 🙂

Gratuluję działającej konstrukcji i życzę powodzenia w najprzyjemniejszej części - dopieszczaniu kodu 😉

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Trochę go zwolniłem i już tak daleko nie ucieka. Jednak każda zmiana prędkości na większą powoduje, że zbliżam się do efektu z poprzedniego filmu. Myślę, że do lepszych osiągów przydałaby się większa przebudowa programu, a ja niestety nie umiem programować w Basicu. Udało mi się go lekko zmienić, dzięki temu, że kurs arduino jest już za mną, a wystarczyło tylko dodać parę linijek do gotowego programu , żeby po zgubieniu trasy robot skręcał w tę stronę w którą skręcał przed zgubieniem. Jednak bez większej wiedzy o Basicu, większa przebudowa nie jest możliwa.

Zwolnienia i zatrzymania w trakcie są spowodowane krzywą nawierzchnią i brakiem porządnej podpórki z przodu 😃 Na koniec robota zatrzymała odklejona izolacja 😃

Filmik zgodnie z radą nagrany w poziomie 🙂

Edit. Może za jakiś czas nauczę się programować Atmegę za pomocą środowiska Arduino IDE. Wtedy może uda mi się poprawić program tak, aby przy większych prędkościach ładnie korygował wypadanie z zakrętów 🙂

Pytanie: czy da się za pomocą 3 czujników, bez stosowania regulatorów, zrobić tak, żeby LF po tym jak krzywo wjedzie na linie, jakoś ładnie to korygował? Bo mój po tym jak już wjedzie krzywo, to buja się bardzo, i nie może się już wyprostować (chyba, że nadejdzie kolejny zakręt i uda mu się wjechać prosto).

[ Dodano: 01-05-2016, 11:46 ]

Szukam rozwiązania, dlaczego jest tak, że mam odwróconą logikę? Tzn PWM = 0 dają maksymalne obroty, PWM = 255 zatrzymuje silnik? Próbuję to zmienić, myślałem, że wiem jak, ale jednak nie poskutkowało. Zależy mi na tym, ponieważ będzie mi potem łatwiej edytować program ;D Ma ktoś pomysł, co może być źle?

Link do komentarza
Share on other sites

Przykład z kursu to po prostu zestaw instrukcji warunkowych, które wykonują się w zależności od tego, który czujnik widzi linię. Jest to rodzaj regulatora, więc nie, nie da się tego zadania zrobić bez stosowania regulatora 😉 Na szczęście Ty już jednego używasz. Zakładam, że chodzi Ci o 'bardziej zaawansowane' (które tak naprawdę są bardzo proste) regulatory jak P, PD, PID... Jak najbardziej się da - wystarczy zwiększyć liczbę warunków, przewidzieć więcej możliwości wykrywanych przez czujniki stanów. Mógłbyś zacząć reagować np. już w momencie, gdy czujnik zaczyna wykrywać linię, a nie dopiero kiedy czujnik znajduje się bezpośrednio nad linią - np. obniżając wartość zmiennej Granica lub rozdzielając ją na "Chyba_zaczynam_widziec_linie" i "Na_pewno_widze_linie", mam nadzieję, że wiesz o co mi chodzi 🙂 3 czujniki spokojnie wystarczą do uzyskania zadowalającego efektu. Sugeruję jednak wymyślić coś w ramach "podpórki", jeśli szurasz czujnikami po nierównym podłożu, to ciężko Ci będzie dopracować program, bo w takiej samej sytuacji "na drodze" robot może się zachować na różne sposoby - wystarczy że czujnik podskoczy, będzie trochę wyżej nad linią i robot pomyśli, że z niej zjeżdża 🙂

Co do drugiego pytania:

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

zamień na

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up

- powinno pomóc

  • Lubię! 1
Link do komentarza
Share on other sites

Dzięki wielkie za pomoc. Tak chodziło mi o regulator PD, który jest chyba na tą chwilę dla mnie za trudny, ale może pokombinuje coś ze zwiększeniem liczby warunków tak jak pisałeś (chociaż bez PD chyba dużo lepszych czasów nie osiągnę).

Co do tej zmiany w programie - zadziałało. Że też sam na to nie wpadłem.

Czujnikami po podłodze nie szuram, ale za podpórkę służą mi dwie śruby które wcześniej trzymały koło, na które założyłem kawałek materiału, żeby nie rysować podłogi 😃

Jest jakaś książka/kurs do nauki Bascom-AVR? Chodzi głównie o podstawy,bo na tą chwilę nie wiem jak zrobić sume/iloczyn warunków oraz opóźnienia itp. Sumę i iloczyn na piechotę dam radę zrobić, ale skoro pewnie da się to robić w jednej linijce, to wolę nie zaśmiecać programu.

Link do komentarza
Share on other sites

Polecam uczenie się z helpa do BASCOM-AVR. Jeśli nie znasz dobrze angielskiego, to wpisz sobie w google "bascom avr help pl" i ściągnij pierwszego PDF'a. Główna zaleta - jest za darmo. Osobiście nie wiem, czy warto inwestować środki inne niż czas w naukę BASCOM, ja bym chyba wolał zbierać na ksiażkę o podstawach C. Jeśli się jednak zdecydujesz, to polecam ogólnie książki pana P. Góreckiego, który napisał coś również na temat BASCOM'a - "Mikrokontrolery dla początkujących".

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Walki z programem ciąg dalszy.

Jako, że umiem trochę C (jestem w trakcie nauki) i znalazłem ciekawy artykuł chciałem wykonać i wgrać do tego LFa algorytm wzorując się na tym artykule. W jaki sposób kompilujecie programy z C tak , aby wgrać je do Atmegi8? Napisałem na podstawie tamtego artykułu na razie konfiguracje moich wejść i wyjść i resztę pierwszej części, ale niestety gdy próbuję skompilować program (nawet nie wiem czy dobrze to robię) to wyskakuje mi masa błędów. Wiem, że może po prostu za szybko chcę przejść do bardziej skomplikowanego algorytmu, ale chciałbym się wyrobić z wgraniem tego programu przed zawodami (póki jeszcze jakieś są przed moim wyborem studiów), a na głębsze zrozumienie poświęciłbym późniejszy czas, tak aby przy następnym LFie włożyć więcej swojej inwencji 😃 Na tą chwilę błędy są "#include "io_cfg.h" , #include "linefollower.h" gdyż nie wiem jak zrobić te pliki aby do nich się to odnosiło.

Przepraszam za brak fachowego słownictwa i proszę o wyrozumiałość gdyż dopiero się uczę 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.