Skocz do zawartości

Linefollower nie reaguje na linie


wyoyo

Pomocna odpowiedź

Zrobiłem robota zgodnie z tym artykułem: https://www.forbot.pl/forum/topics20/dla-poczatkujacych-przepis-na-robota-w-pelni-programowalny-line-follower-vt2356.htm

Po zlutowaniu płytki i wgraniu programu zamieszczonego w załączniku artykułu, robot tylko jeździ do przodu. Nie reaguje na czujniki. Ponadto jeden czujnik jest uszkodzony, ponieważ nie świeci się dioda UV pod aparatem komórkowym, po zamianie miejscami 2 czujników reakcja taka sama. Zmierzyłem napięcie jakie przechodzi przez fototranzystor w układzie podczas różnych sytuacji. Gdy czujnik jest znajduje się nad białą kartką napięcie wynosi 1,5V gdy jest nad czarną linią wynosi 3,4V a gdy nie przykładam go do niczego napięcie wynosi 3,6V. Teraz moje pytanie, dlaczego robot cały czas jedzie do przodu? nawet jak czujniki znajdują się nad białą kartką ? Proszę o pomoc i z góry dziękuję 🙂

__________

Komentarz dodany przez: Treker

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

Zmniejszyłem napięcie, odległość czujników wynosi 0,2 mm dalej to samo, czujniki nie reagują, robot nie staje w miejscu gdy czujniki są nad białym polem, nie reaguje też na linie.

Link do komentarza
Share on other sites

Phil, wybacz, ale Twoje uwagi były tu kompletnie nietrafione. Jeśli chodzi o odległość od podłoża, to przecież autor tematu napisał, że miał ponad 2V różnicy między białym a czarnym podłożem, więc nie tu leży problem.

Twoja uwaga odnośnie napięcia, może być wręcz szkodliwa. Skoro autor używa prawdopodobnie 4 baterii AA, które przed załączeniem mają 5,7V (w dopuszczalnych granicach dla ATmega8), a po załączeniu ma 4,7V, to nie ma potrzeby obniżać napięcia. Zwłaszcza, że jeśli wyoyo, zasili robota z 3AA to na silniki po uwzględnieniu wszystkich spadków napięcia trafi może 1V.

Co trzeba zrobić, to sprawdzić ciągłość połączeń pomiędzy wyjściami czujników, a wejściami uC. Sprawdź też, czy na pewno podłączyłeś czujniki do tych samych nóżek uC, co są później wykorzystywane w programie. Poza tym, pisałeś że jeden czujnik nie działa, nawet po zamianie miejscami z innym. Czy masz przez to na myśli, że ten sam czujnik, po przeniesieniu na inne miejsce nadal nie działa, czy inny czujnik na miejscu tego wcześniej nie działającego odmawia współpracy?

Aha, sprawdź jeszcze, czy sterowanie kierunkiem obrotów silnika działa Ci właściwie. Napisz prosty program, który będzie np w odstępach 1s załączał silniki w przeciwną stronę.

Link do komentarza
Share on other sites

Niestety, wgrałem program, jeżdżą w dwie strony zależnie od programowania, sprawdzałem podłączenia od czujników do uC i wszystko gra, robot dalej nie reaguje na linię. Co jeszcze mogę zrobić ?

Link do komentarza
Share on other sites

Niestety, wgrałem program, jeżdżą w dwie strony zależnie od programowania, sprawdzałem podłączenia od czujników do uC i wszystko gra, robot dalej nie reaguje na linię. Co jeszcze mogę zrobić ?

Ja to interpretuję tak, że wyoyo, właśnie zrobił to co mu radzisz (choć głowy nie dam, bo mętne to zdanie 😉)

W każdym razie, próbowałeś może zmieniać próg wykrywania linii w programie?

Link do komentarza
Share on other sites

Napisałem taki program:

$regfile = "m8def.dat"

$crystal = 1000000

'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

Set Silnik_lewy_a

Reset Silnik_lewy_b

Set Silnik_prawy_a

Reset Silnik_prawy_b

Do

Waitms 500

toggle Dioda

Pwm1a = 255

Pwm1b = 255

Toggle Silnik_lewy_a

Toggle Silnik_lewy_b

Toggle Silnik_prawy_a

Toggle Silnik_prawy_b

Loop

End

I efekt był taki jak napisałem w programie, robot przez chwile jeździ do przodu a później do tyłu i tak dalej. Tylko jedna rzecz mnie zdziwiła, robot za każdą pętlą przesuwał się o jakiś cm do przodu. Ponadto, gdy chciałem zmienić wartość pwm1a na np 50 lub 150 to silnik zaczął piszczeć... nie wiem jak to możliwe, ale tak jest. Dodam że mam silniczki HL149 z przekładnią 10:1.

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!

Anonim
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.