Skocz do zawartości

[bascom] Kod do line followera + PWM


epsilon

Pomocna odpowiedź

Witam... Mam taki problem, zbudowałem line followera, chciałem go dziś zaprogramować (jest to mój pierwszy program) i nie działa... Program pisałem w dużych odstępach czasowych, więc pewnie o czymś zapomniałem... Sprawdzałem kilka wersji programu, wgrałem nawet program testowy (tzw. migacz - działa, więc programator i Attiny2313 jest ok). Mam pomysł, ze może to leżeć w ustaleniach dotyczących poszczególnych pinów uC. Wszystkie połączenia na płytce sprawdziłem poprzez diodę z rezystorem i oddzielne źródło zasilania - wszystko sprawne.

Oto schemat:

i kod:


$regfile = "attiny2313.dat"                                 'procesor
$crystal = 8000000                                          'oscylator

Config Portd = &B00000010                                   ' wyznaczenie wyjść i wejść portu D
Portd = &B00000000                                          ' stan spoczynkowy portu D

Config Portb = &B0100000                                    ' wyznaczenie wyjść i wejść portu B
Portb = &B00000000                                          'stan spoczynkowy portu B

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64       'PWM

S_01 Alias Portd.3
S_02 Alias Portd.2
S_03 Alias Portd.5

Led Alias Portd.0


Do

  If S_01 = 0 And S_02 = 1 And S_03 = 0 Then               'jedz do przodu
     Gosub Go

   Elseif S_01 = 1 And S_02 = 1 And S_03 = 1 Then          'jedz do przodu
     Gosub Go

   Elseif S_01 = 1 And S_02 = 1 And S_03 = 0 Then          'skręć w lewo
     Gosub Lewo

   Elseif S_01 = 1 And S_02 = 0 And S_03 = 0 Then          'skręć w lewomocno
     Gosub Lewomocno

   Elseif S_01 = 0 And S_02 = 0 And S_03 = 1 Then          'skręć w prawomocno
     Gosub Prawomocno

   Elseif S_01 = 0 And S_02 = 1 And S_03 = 1 Then          'skręć w prawo
     Gosub Prawo

   Elseif S_01 = 0 And S_02 = 0 And S_03 = 0 Then          'stoj
     Gosub Stoj


  End If

Loop


Go:
Pwm1a = 255
Pwm1b = 255
Led = 1
Return

Lewo:
Pwm1a = 255
Pwm1b = 150
Led = 0
Return

Lewomocno:
Pwm1a = 255
Pwm1b = 50
Led = 0
Return

Prawo:
Pwm1a = 150
Pwm1b = 255
Led = 0
Return

Prawomocno:
Pwm1a = 50
Pwm1b = 255
Led = 0

Stoj:
Portb.1 = 0
Portb.6 = 0
Led = 1
Return

Edit: Bascom AVR również nie wyświetla błędów. Pozdrawiam 😉

Link do komentarza
Share on other sites

Schemat jest kopnięty (swoją drogą nie oszczędzaj na rozdzielczości, nie każdy ma taki dobry wzrok..). Odwrotnie podłączyłeś komparatory.

Powinno być tak:

gdzie SENSOR1 to pin uC skonfigurowany jako Input.

(fragment schematu nieznanego autorstwa, mam nadzieję, że nikt się nie obrazi)

Zasilanie komparatora podpięte do procka? Nietrzeźwo już myślę, ale nie gra mi to wszystko...Niech mnie ktoś poprawi..

Link do komentarza
Share on other sites

Moim zdaniem zupełnie nie zgadza się schemat w okolicach wzmacniacza operacyjnego. W załączniku fragment z datasheeta - piny są zupełnie inne niż na schemacie...

Ale co ciekawe jak nie patrząc na schemat poczytamy numery pinów i porównamy z datasheetem, to wygląda to lepiej niż schemat. Coś tu pomyliłeś 🙂

Ja bym radził zacząć od poprawienia schematu, bo ciężko teraz powiedzieć o co chodzi.

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

ale ja użyłem tego kompilatora tylko do schametu, w rzeczywistości jest to LM324N a piny wzorowałem na schemacie właśnie z postu Nawyka... ja odrzuciłem tylko Ledy... ale jest to ten schemat tylko w nieco innym wydaniu, ponieważ LM324 nie mialem w bibliotece Eagle.

Link do komentarza
Share on other sites

Zaciekawiło mnie o co w schemacie chodzi. Postanowiłem przerysować po swojemu.

LM324 jest w standardowej bibliotece Eagle, nie powinno być problemu.

Moje uwagi:

1) Czy podłączyłeś masę do pinu 11 LM324 ? (na schemacie brak)

2) Czy masz rezystory podłączone do fototranzystorów?

Jeśli wszystko masz, to proponuję napisać program, który będzie świecił LED-em, gdy na PD3 odczyta 1, gasił gdy 0. Wtedy będziesz mógł sprawdzić, czy czujniki działają.

Link do komentarza
Share on other sites

1) na schemacie nie ma, w rzeczywistości jest ta ścieżka (to taki mój schemat na którego pod stawie robiłem plytkę, więc moga być małe niedociągnięcia)

2) są to rezystory 10k

dziś wyniknęły problemy z taśmą łączącą obie płytki. Prosiłbym o sprawdzenie stany pinów, bo sądzę, że tam może być błąd.

Edit:

sprawdziłem tak jak mówi Elvis - dioda świeci cały czas nawet jak wyjmuje wzmacniacz

Link do komentarza
Share on other sites

Jak wyjmujesz wzmacniacz, to powinna świecić (o ile włączyłeś pullupy w procku).

Proponuję kolejny test:

Odłącz fototranzystor (zostaw tylko pullup) - dioda powinna zgasnąć.

Poźniej przyda się multimetr, mam nadzieję że masz pod ręką?

Link do komentarza
Share on other sites

Później proponuję sprawdzić następująco:

Odłączyć fototranzystor, zamiast niego łatwiej zwierać obwód.

1) Podłączyć multimetr do pinu 2 wzmacniacza. Powinien wskazywać ok. 5V

2) Zewrzeć miejsce po fototranzystorze, powinien wskazywać 0V

3) Podłączyć multimetr do pinu 3, potencjometrem ustawić napięcie na 2,5V

4) Podłączyć multimetr do pinu 1 wzmacniacza, powinien wskazywać 0V, dioda nie powinna świecić

5) Zewrzeć miejsce po fototranzystorze, multimetr powinien wskazać 5V, dioda świecić

Link do komentarza
Share on other sites

sprawdziłem, nic nie działa tak jak należy, sądzę że to jakiś błąd w PCB przy komparatorze, tak wiec pozostało mi tylko pobawić się w programowanie trasy, ewentualnie kilka drobnych zworek, krańców i robot omijający przeszkody ;] nie spodziewałem się, że mój pierwszy LF będzie działać od razu ;d

Link do komentarza
Share on other sites

ale nie spodziewałem się wielkich efektów przy pierwszym programie, a płytka może służyć do testów podwozia, bo raczej driver jest ok, więc spoko 😉 ale mam nauczkę, ze nie można się rzucać od razu na głęboką wodę ;]

Link do komentarza
Share on other sites

Można, ja też zrobiłem jako pierwszego robota linefollowera 🙂, dlaczego nie, inni robią np hexapody na pierwszego robota a efekty widać tu na diodzie. Wszystko jest kwestią samozaparcia i staranności w tym co się robi.

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.