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:

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

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ół.

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:

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.

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

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.

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?

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

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?

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