Skocz do zawartości

ATtiny2313 + L293D Line Follower


Pomocna odpowiedź

Dodałbym też kondensator 100nF między zasilanie i masę komparatorów oraz 1uF lub więcej między środek potencjometru (3) a masę.

Zrobione.

Dlaczego nie wykorzystać ostatniego komparatora? Mógłby obsługiwać 4 czujnik (zawsze to jakaś możliwość poeksperymentowania z 4 czujnikami i więcej zabawy) lub np. wykrywać stan rozładowania baterii. W każdym razie 4 komparator powinien być na schemacie i być prawidłowo podłączony (np. jedno wejście do masy a drugie do potencjometru itp). Wejścia nie powinny mu "wisieć" w powietrzu. Wyjście może.

Nie użyję 4 kompaktora, ponieważ jet mi niepotrzebny, mam 3x CNY70 i je wykorzystam.

Dlaczego nie przepuściłeś zasilania i sygnałów przez jedno złącze? Byłoby łatwiej kabelki robić.

Aaa jakoś tak : D

Dodałbym też opornik między górny koniec potencjometru (1) a plus zasilania. Ograniczyłoby to możliwość wyjechania ustawianym napięciem poza zakres sensownych wartości. Przy 10k to może być np. 4.3k lub coś koło tego.

Zrobione.

Schemat:

Link to post
Share on other sites

A czy teraz cały schemat jest ok ?

I kod.

$regfile = "attiny2313def.dat" 
$crystal = 1000000 

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

'Konfiguracja portów 
Config Portd = Output 
Config Portb = Output 

Silnik_lewy_a Alias Portd.2 
Silnik_lewy_b Alias Portd.5 
Silnik_prawy_b Alias Portd.3 
Silnik_prawy_a Alias Portd.4 
Dioda Alias Portd.0 

'Granica reagowania na linię 
Const Granica = 455 

'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 = 255 
'Silnik prawy - maksymalna prędkość 
Pwm1b = 255 
Elseif Czujnik_lewy > Granica Then 
Pwm1a = 0 
Pwm1b = 255 
Elseif Czujnik_prawy > Granica Then 
Pwm1a = 255 
Pwm1b = 0 
Else 
Pwm1a = 255 
Pwm1b = 255 
End If 
Loop 
End
Link to post
Share on other sites

Potencjometrowi zabierz 5V. Wystarczy, że dostaje je przez nowy opornik.

Wywal szybko te kondensaotry 100nF równolegle do wejść komparatorów. Skąd ten pomysł? Wstawiasz histerezę po to by m.in. przyśpieszać przerzut a teraz próbujesz go opóźnić kondensatorem?

Napisz skąd weźmiesz 9V, to dość niecodzienne napięcie.

Co z 4 komparatorem? Wciąz nie widzę go na schemacie. Chyba nie pozwolisz mu "dyndać" samotnie z wejściami zostawionymi samopas?

Dałbym oporniki ściągające do masy linie 1-2EN i 3-4EN (tak po 2-10k) żeby Ci się silniki nie włączały podczas programowania i RESETu procesora itp.

Jakieś złącze do programowania procesora?

BASCOMa nie rozumiem to się nie wypowiadam.

EDIT: Dwa czujniki (LEDy) mają "Vcc" zamiast "5V" Czy to się połączy?

LED4 może spokojnie dostać 1k zamiast 330omów (chyba, że ma oświetlać drogę) ale to szczegół.

Link to post
Share on other sites
Potencjometrowi zabierz 5V. Wystarczy, że dostaje je przez nowy opornik.

Ok.

Wywal szybko te kondensaotry 100nF równolegle do wejść komparatorów. Skąd ten pomysł? Wstawiasz histerezę po to by m.in. przyśpieszać przerzut a teraz próbujesz go opóźnić kondensatorem?

Kondensatory wywalone.

Napisz skąd weźmiesz 9V, to dość niecodzienne napięcie.

Bateria 9V no chyba, że jest "za słaba" to pomyślę nad jakimś li-polem

Co z 4 komparatorem? Wciąz nie widzę go na schemacie. Chyba nie pozwolisz mu "dyndać" samotnie z wejściami zostawionymi samopas?

4 kompaktora nie wykorzystam do niczego więc będzie wisiał samopas.

Dałbym oporniki ściągające do masy linie 1-2EN i 3-4EN (tak po 2-10k) żeby Ci się silniki nie włączały podczas programowania i RESETu procesora itp.

Zrobione.

Jakieś złącze do programowania procesora?

Najpierw myślałem, żeby zrobić ale jednak nie będzie złącza do programowania, jak będę chciał zaprogramować pracka to go po prostu wyjmę i zaprogramuję.

BASCOMa nie rozumiem to się nie wypowiadam.

Rozumiem.

Schemat:

Link to post
Share on other sites

Mam takie pytanie - skąd zrodziło się słowo kompaktor zamiast komparator? Bo czytam je już niepierwszy raz i mnie to strasznie intryguje 😉 Co do zasilania - zapomnij o baterii 9V, nadaje się tylko do bardzo mało pobierającej elektroniki.

Link to post
Share on other sites

Co do baterii 9V to ok. pomyślę nad li-polem.

A co do "kompaktora" to tylko słowo, które mi utknęło w głowie nie wiem czemu 😃 możliwe, że gdzieś źle przeczytałem. ; - |

Link to post
Share on other sites

Nie zwróciłem uwagi na to, że korzystasz z ATtiny2313 i komparatorów. To zmienia postać rzeczy.

Kod pewnie zaczerpnąłeś z artykułu Nawyka (klik) .

Program z artykułu obsługuje inny uC i obsługuje ADC, a ty korzystasz z komparatorów, więc zastanów się jak powinien wyglądać program.

Link to post
Share on other sites

Aha : >

Tak kod zaczerpnąłem z artykułu Nawyka.

Program z artykułu obsługuje inny uC i obsługuje ADC, a ty korzystasz z komparatorów, więc zastanów się jak powinien wyglądać program.

Tak wiem, że artykuł obsługuje inny uC i ADC, a ja korzystam z komparatorów, więc co jest nie tak w moim programie?

Link to post
Share on other sites

W kodzie Nawyka jest tak:

Najpierw program idzie do podprogramu Wczytaj_stany_przetwornikow, gdzie dokonuje pomiaru ADC i zapisuje pomiary do zmiennych "Czujnik_lewy", "Czujnik_prawy" itd.

Potem wraca do programu głównego gdzie porównuje wartości tych zmiennych, do stałej "Granica" i decyduje co powinny zrobić silniki.

A Ty używasz komparatorów więc stała "Granica" jest u Ciebie zbędna, za czym idzie to, że If'y powinny być inne, bo inaczej odczytujesz dane z czujników. 😉

Link to post
Share on other sites

to chodzi o ten kawałek:

Do 
Gosub Wczytaj_stany_przetwornikow 
If Czujnik_srodkowy > Granica Then 
'Silnik lewy - maksymalna prędkość 
Pwm1a = 255 
'Silnik prawy - maksymalna prędkość 
Pwm1b = 255 
Elseif Czujnik_lewy > Granica Then 
Pwm1a = 0 
Pwm1b = 255 
Elseif Czujnik_prawy > Granica Then 
Pwm1a = 255 
Pwm1b = 0 
Else 
Pwm1a = 255 
Pwm1b = 255 
End If 
Loop 
End

Muszę go zmienić tak jak powiedziałeś:

A ty używasz komparatorów więc stała "Granica" jest u ciebie zbędna, za czym idzie to, że If'y powinny być inne, bo inaczej odczytujesz dane z czujników

Czyli muszę usunąć "Granica" i zmienić If'y tak?

Link to post
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

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.