Skocz do zawartości

[Dla początkujących] Przepis na robota - w pełni programowalny Line Follower


Pomocna odpowiedź

To kup programator, później i tak będziesz potrzebował.

Polecam STK500v2, albo jak masz LPT to STK200 też sie dobrze sprawuje.

  • 2 tygodnie później...

Hejka to znów ja, wymiana transoptorów pomogła.

Robot potrafi poruszać się, na razie po prostym eliptycznym torze, w obie strony.

Demon prędkości to to nie jest ale jak na pierwszą konstrukcję jestem z niego nawet zadowolony.

Filmik na YT z działania:

PS. Chciałbym podziękować dwóm użytkownikom tego forum:

  • Grabo - za ofiarowanie mi serw napędzających robota
  • Nawyk - za stworzenie przejrzystego poradnika

Dzięki chłopaki.

Witajcie!

Chcę zbudować robota wg powyższego przepisu, mam już wszystkie narzędzia i elemnty poza kołami i serwami. Jakiej średnicy są nakrętki w pierwszym przykładzie? Czy takie 50mm koła piankowe się nadadzą?

  • gwskolopianka.jpg

I czy serwo Tower Pro SG90 wystarczy by napędzić tę konstrukcję?

Dzięki za rady.

  • 2 tygodnie później...
Wczytaj_stany_przetwornikow:
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_lewy = W
Start Adc
W = Getadc(4)
W = Getadc(4)
Stop Adc
Czujnik_srodkowy = W
Start Adc
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_prawy = W
Return

Dlaczego powtórzone są: W = Getadc?

Nie powinno być czasem tak:

Wczytaj_stany_przetwornikow:
Start Adc
W = Getadc(5)
Stop Adc
Czujnik_lewy = W
Start Adc
W = Getadc(4)
Stop Adc
Czujnik_srodkowy = W
Start Adc
W = Getadc(3)
Stop Adc
Czujnik_prawy = W
Return

Wydaje mi się, że te getadc są powtórzone, bo stopowane jest ADC, a po włączeniu pierwszy pomiar zwykle obarczony jest sporym błędem, lub nawet wartość jest z kosmosu.

Bobby, niezupełnie.

Cytat z polskiego helpa:

Uwaga! Z powodu zmian w kodzie bibliotecznym w wersji 1.11.7.2, funkcję GETADC() najlepiej wywołać dwukrotnie:

W = Getadc(channel)

W = Getadc(channel)

gdyż za pierwszym razem funkcja może zwrócić wartość przetworzoną w kanale o numerze mniejszym o jeden (Przetestował Andrzej Sablik).

© Zbigniew Gibek, 2002-2005 © MCS Electronics, 1999-2005

Różnie z tym bywa Sabre nigdy nie miał takich problemów, ja przy M32 miałem fałszywe odczyty. Dodanie podwójnych getadc() jest bezpieczniejsze, jednak znacznie wydłuża działanie programu - należy pamiętać, że całe ADC nie jest zbyt szybkie, a Bascom jeszcze to pogarsza ( np.: gdy wybierzemy wartość "Auto" w preskalerze).

Szczerze mówiąc, ja też nie miałem problemów z ADC. Ale wolałem żeby wszystko działało na 200%. Robot nie jest z resztą specjalnie szybki, więc nie ma strachu o "zgubione" krytyczne informacje.

Z elektrody:

... aczkolwiek dwukrotne powtórzenie Getadc(x) kiedyś maskowało błąd Bascoma, który jak dobrze pamiętam polegał na odczytywaniu za pierwszym razem napięcia z końcówki o numerze o jeden niższym niż wskazana w Getadc.
🙄

Tak jak napisał Treker, wielokrotnie u siebie to sprawdzałem i u mnie zawsze było ok, ja nigdy nie używałem podwójnego Getadc(x) i zawsze miałem poprawne dane. Może to w dużej mierze zależy od użytego mikrokontrolera albo ustawionego preskalera przy ADC, ja miałem zawsze na auto i w zasadzie wszędzie używam tych samych układów atmega168/328

  • 1 miesiąc później...
  • 3 tygodnie później...

A ja mam pytanie co do położenia czujników . Jeśli się je " ułoży " w bliskiej lub dalszej odległości od siebie to będzie miało to wpływ na robota? Trzeba byłoby z tym eksperymentować?

Ułożenie czujników - ich odległość od siebie, kształt ułożenia (linia prosta, półkole, itd) ma spore znaczenie. Dla każdego z ułożeń należy doświadczalnie dobrać jak najbardziej optymalny program sterowania.

  • 4 tygodnie później...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...