Skocz do zawartości
Nawyk

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

Pomocna odpowiedź

Odpowiedź jest w tym wątku

może być też tak, że silniki sieją straszne zakłócenia do układu i restartują procka - w tej sytuacji trzeba dodać kilka kondensatorów filtrujących. Bierzesz kilka 100nF ceramicznych, lutujesz po jednym między zaciskami silnika (inaczej mówiąc - równolegle do silnika) i między VCC a GND blisko procesora (możesz kilka w różnych miejscach).

Zobacz na mojego https://www.forbot.pl/forum/topics7/line-follower-moj-pierwszy-robot-vt3670.htm budowałem również według tej instrukcji. Dodaj kondensatory żeby wyeliminować zakłócenia

Udostępnij ten post


Link to post
Share on other sites

Zasadnicze pytanie - czy zmieniałeś coś w programie? Z tego co widzę, to dioda nie powinna wcale pulsować...ani wolno, ani szybko. Kondensatory faktycznie warto wlutować - równolegle do silników i można jeszcze dodać między VCC a GND, mam wrażenie, że pisałem już o tym gdzieś w tym temacie...

Udostępnij ten post


Link to post
Share on other sites

Dioda powinna pulsować bo wstawiłem pulsującą diodę a nie zwykłą.

Teraz już zmieniłem jest zwykła.

Problem rozwiązany. Już się nie tnie, ponieważ zmieniłem prędkość silników na wolniejsze z 255 na 200.

To był cały problem. 😅

Ale nadal nie skręca w prawo na liniach. 😥

Jestem bardzo smutny.

Sprawdziłem wszystkie połączenia z tym artykułem i multimerem.

I na płytce z procem i na module.

Nie wiem\

Czy możliwe, że mimo w tym jednym czujniku IR się pali to jest zepsuty???

Udostępnij ten post


Link to post
Share on other sites

Gdyby ten czujnik był zepsuty to wcale nie reagował by na linę, a nie jak napisałeś skręca w lewo, gdy linia skręca w prawo. Sprawdź czy nie masz gdzieś zwarcia

Udostępnij ten post


Link to post
Share on other sites

Najlepiej wrzuć kod programu po tych wszystkich zmianach. Jeśli faktycznie wszystko dobrze podłączyłeś, to nie ma siły żeby nie śmigało.

Jeszcze jedna myśl... Spróbuj podłączyć jeden z silników odwrotnie, czyt. z odwrotną polaryzacją... Zastanawiam się czy to coś da, ale za duży upał na takie rozmyślania 😉 najprościej sprawdzić..

Udostępnij ten post


Link to post
Share on other sites
Najlepiej wrzuć kod programu po tych wszystkich zmianach. Jeśli faktycznie wszystko dobrze podłączyłeś, to nie ma siły żeby nie śmigało.

Jeszcze jedna myśl... Spróbuj podłączyć jeden z silników odwrotnie, czyt. z odwrotną polaryzacją... Zastanawiam się czy to coś da, ale za duży upał na takie rozmyślania 😉 najprościej sprawdzić..

A nie będzie tak, że jak zamieni polaryzację jednego z silników, to na prostym odcinku nad linią będzie mu się kręcił w kółko (jeden silnik w przód, drugi w tył) ?

Podejrzewam, że coś rozgrzebane jest w programie (np identyczna reakcja silników na silnię pod lewym, jak i prawym czujnikiem) ...

Udostępnij ten post


Link to post
Share on other sites
A nie będzie tak, że jak zamieni polaryzację jednego z silników, to na prostym odcinku nad linią będzie mu się kręcił w kółko (jeden silnik w przód, drugi w tył) ?

To tylko myśl, również podejrzewam program - ale póki go nie zobaczę, to to wszystko co mi przychodzi do głowy na chwilę obecną 😉

Udostępnij ten post


Link to post
Share on other sites

TO program bez kompilacji. Ten sam co twój tylko zmieniłem prędkość silników.

Teraz już sie nie tnie ale nadal nie skręca w jedną stronę tylko kręci się w kółko gdy dojeżdza do zakretu w prawo. W lewo jest spoko.

$regfile = "m8def.dat"

$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)

Config Adc = Single , Prescaler = Auto

'Konfiguracja sterowania sprzętowym PWM

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

'Konfiguracja portów

Config Portd = Output

Config Portb = Output

'Opis portów

'Enable1 - Silnik lewy - Portb.1 (PWM1A)

'Enable2 - Silnik prawy - portb.2 (PWM1B)

'Input1 - Silnik lewy A - Portd.3

'Input2 - Silnik lewy B - Portd.2

'Input4 - Silnik prawy A - Portd.0

'Input3 - Silnik prawy B - Portd.1

'Dioda - Portd.6

'Czujnik lewy - ADC5

'Czujnik środkowy - ADC4

'Czujnik prawy - ADC3

Silnik_lewy_a Alias Portd.3

Silnik_lewy_b Alias Portd.2

Silnik_prawy_b Alias Portd.0

Silnik_prawy_a Alias Portd.1

Dioda Alias Portd.6

'Granica reagowania na linię - należy dobrać doświadczalnie

Const Granica = 500

'Deklaracje zmiennych

Dim Czujnik_lewy As Single

Dim Czujnik_srodkowy As Single

Dim Czujnik_prawy As Single

Dim W As Word

'Blok instrukcji

Set Dioda

Set Silnik_lewy_a

Reset Silnik_lewy_b

Set Silnik_prawy_a

Reset Silnik_prawy_b

Do

Gosub Wczytaj_stany_przetwornikow

If Czujnik_srodkowy > Granica Then

'Silnik lewy - maksymalna prędkość

Pwm1a = 200

'Silnik prawy - maksymalna prędkość

Pwm1b = 200

Elseif Czujnik_lewy > Granica Then

Pwm1a = 0

Pwm1b = 200

Elseif Czujnik_prawy > Granica Then

Pwm1a = 200

Pwm1b = 0

Else

Pwm1a = 200

Pwm1b = 200

End If

Loop

End

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

Teraz coś próbowałem ruszać na module z czujnikami i nie działa w ogóle.

Znaczy jedzie normalnie ale nie wykrywa lini w ogóle.

Udostępnij ten post


Link to post
Share on other sites

Faktycznie poza PWMem nic nie zmienione, jeśli zmniejszenie do 200 coś Ci pomogło, to spróbuj jeszcze zmienić tą jedną wartość co została.

Skoro program jest ok (w każdym razie działał jak ostatnio sprawdzałem go na robocie z kursu - chociaż dzisiaj odpuściłbym już to podwójne wywoływanie adc 😉 ), to wina leży w połączeniach.

Nie wiem co masz na myśli mówiąc, że "ruszałeś". Dotknąłeś i przestało działać? W takim razie masz zimne luty i warto je wyszukać i poprawić. Na pewno nie "nasmarkałeś" lutowiem na połączenia, jak to robi większość początkujących? W kursie jest link do poradnika jak to prawidłowo zrobić. Jeśli lutujesz prawidłowo, to musiałeś się gdzieś pomylić w połączeniach, może masz gdzieś przypadkowe zwarcie.

Udostępnij ten post


Link to post
Share on other sites

Witam,
świetny przepis dla kogoś początkującego, ale mam kilka pytań. Czy procesor ATMEGA8-16PU też nadaje się do tego robota?

Pytam ponieważ podczas programowania wyskakuje mi błąd: "Could not identify with ID:000000"

Programator którego używam to AVR-ISP STK200/300

Udostępnij ten post


Link to post
Share on other sites

podepnij mu zasilanie 5V z USB pod pin 7. vcc i 8. gnd i tak nadaje się

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Ewentualnie mi taki sam błąd wyrzucał jak reset nie stykał

Udostępnij ten post


Link to post
Share on other sites
podepnij mu zasilanie 5V z USB pod pin 7. vcc i 8. gnd i tak nadaje się

Odradzam - jeśli masz jakiś błąd w połączeniach, możesz sobie np. spalić kontroler USB w kompie. Skoro nie masz programatora na USB (takie mogą dostarczać 5V, wystarczy przełączyć zworkę), to polecam tanią ładowarkę do telefonu - nie musi być idealnie 5V, wystarczy 4.5 - 5.5V. Pamiętaj, żeby GND programowanego układu było połączone z GND programatora! I polecam SinaProg .

Udostępnij ten post


Link to post
Share on other sites

hmm, za późno 🙂 na szczęście usb działa i udało się zaprogramować. Błąd znalazłem potem, okazał się banalny - nie stykała jedna z baterii 🙂

Udostępnij ten post


Link to post
Share on other sites

Co oznacza ta granica w programie?

Domyślam się że to jest granica napięcia z czujników, na które reaguje procesor.

Granica 500 to 0,5V. Dobrze myślę?

Już tyle robię tego robota i dalej nie działa 😖 Pewnego dnia przez niecałą godzinę

działał, a później znowu nie 😕 Już nie wiem co jest nie tak...

Udostępnij ten post


Link to post
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, aby zacząć 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...