Skocz do zawartości

CNY70 - Atmega8 - Problem


piotreks-89

Pomocna odpowiedź

Witam!

Po zbudowaniu pierwszego robota - Line followera napotkałem problem. Otóż: Robot posiada 4 czujniki linii. Wszystkie działają poprawnie, tylko jest jeden problem. Prawy czujnik widząc czarną linię daje 3.83V i to powinno wystarczyć. Sprawdzałem pin mikrokontrolera, pod który podłączony jest czujnik i jest tam takie samo napięcie, więc połączenie jest poprawne jednak robot nie skręca w prawo chociaż powinien 😕

Oto mój program:

''''''''''''''''''''''''Konfiguracja'''''''''''''''''''''''' 
$regfile = "m8def.dat" 
$crystal = 12000000 

'Konfiguracja przetwornika analog-cyfra (ADC) 
Config Adc = Single , Prescaler = Auto , Reference = Avcc 

'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 

'Granica reagowania na linię 
Const Granica = 400 
'Deklaracja nazw 
Led2 Alias Portd.7 
Led3 Alias Portd.6 
Led4 Alias Portd.5 
Led5 Alias Portd.4 

Silnik_lewy_a Alias Portd.3 
Silnik_lewy_b Alias Portd.2 
Silnik_prawy_b Alias Portd.0 
Silnik_prawy_a Alias Portd.1 

'Deklaracje zmiennych 
Dim Czujnik_lewy As Word 
Dim Czujnik_srodkowy_lewy As Word 
Dim Czujnik_srodkowy_prawy As Word 
Dim Czujnik_prawy As Word 

Start Adc 

Set Silnik_lewy_a 
Reset Silnik_lewy_b 
Set Silnik_prawy_a 
Reset Silnik_prawy_b 
'Silniki włączone 
Pwm1a = 255 
Pwm1b = 255 
''''''''''''''''''''''''Pętla główna'''''''''''''''''''''''' 
Do 
'Każdowazowa konfiguracja czujników 
Czujnik_lewy = Getadc(2) 
Czujnik_srodkowy_lewy = Getadc(3) 
Czujnik_srodkowy_prawy = Getadc(4) 
Czujnik_prawy = Getadc(5) 

  If Czujnik_srodkowy_lewy > Granica Then 
     Pwm1a = 255 
     Pwm1b = 255 
     Led3 = 1 
  If Czujnik_srodkowy_prawy > Granica Then 
     Pwm1a = 255 
     Pwm1b = 255 
     Led4 = 1 
  Elseif Czujnik_lewy > Granica Then 
     Pwm1a = 0 
     Pwm1b = 255 
     Led2 = 1 
  Elseif Czujnik_prawy > Granica Then 
     Pwm1a = 255 
     Pwm1b = 0 
     Led5 = 1 
  Else 
     Pwm1a = 255 
     Pwm1b = 255 
     Led2 = 0 
     Led3 = 0 
     Led4 = 0 
     Led5 = 0 
  End If 
  End If 
Loop 
End

Na dodatek zmiana granicy reagowania na linię nic nie daje 😕

A to schemat:

Proszę o odpowiedzi (do środy nie będę miał dostępu do internetu, więc nie będę mógł aktywnie uczestniczyć w dyskusji) i jednocześnie dziękuję za nie 😉

Link do komentarza
Share on other sites

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

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.