Witam
W projekcie robota staram sie uzyskac wykrywanie przeszkod za pomoca zestawu dioda nadawcza IR + TSOP1736. TSOPki maja strome charakterystyki czestotliwosciowe wiec staram sie jak najdokladniej uzyskac przebieg znamionowy 36kHz.
Robie to przy uzyciu nastepujacego kodu:
I slowem objasnienia - jestem poczatkujacy wiec jezeli popelniam jakis banalny blad to wdzieczny bede za niezbesztanie mnie totalnie
Zegar procka ustawiony jest na 8 Mhz, dzielnik Timera jest na 8 co daje 1MHz, W OCR2 wpisane mam 28 czyli po doliczeniu do tej wartosci zmienia sie stan wyprowadzenia OC2, pod ktore podpiete mam diody nadawcze. Licze i wychodzi, ze dzieje sie to 35714 razy w ciagu sekundy - czyli 35,7 kHz
Akcja to przelacznik startujacy (gdy ma wartosc 1) detekcje przeszkod przez odbiorniki.
Proc taktowany jest z kwarcu 8 MHz rzecz jasna, fusy ustawione:
high na D9
low na DC
czyli 011100:Ext. Crystal/Resonator Medium Freq.; Start-up time: 258 CK + 64 ms; [CKSEL=1100 SUT=01]
No i teraz problem .... nie dziala. Na takim ustawieniu jak powyzej przeszkody jakoby wykrywane sa caly czas. Zjezdzajac z wartoscia OCR2 stwierdzam:
OCR2 w przedziale 30-8 - stale wykrywanie przeszkod
OCR2 w przedziale 0-5 - brak wykrywania przeszkod
OCR2 ustawione na wartosc 6 lub 7 daje jakis tam kontakt z otoczeniem - ale niezbyt skuteczny:
Zbyt czesto znajduje przeszkode, ktorej nie ma - powienien jechac do przodu i tylko w przypadku wykrycia przeszkody manewrowac - a jak widac kreci baczki i kombinuje - cos tam niby zlapie ale to nie jest to co powinno byc
Zarowno diody nadawcze jak i odbiorniki odpowiednio osloniete - tak zeby promieniowanie z diod nie wplywalo na odczyty - oczywiscie oprocz wiazki odbitej.
Mam nadzieje, ze wszystko opisalem w miare klarownie i przepraszam za ewentualne glupoty zawarte w moim problemie.
Pozdrawiam
W projekcie robota staram sie uzyskac wykrywanie przeszkod za pomoca zestawu dioda nadawcza IR + TSOP1736. TSOPki maja strome charakterystyki czestotliwosciowe wiec staram sie jak najdokladniej uzyskac przebieg znamionowy 36kHz.
Robie to przy uzyciu nastepujacego kodu:
$crystal = 8000000
(...)
Config Timer2 = Timer , Prescale = 8 , Compare = Toggle , Clear Timer = 1
Dim Count As Byte , Akcja As Bit
(...)
Ocr2 = 28
i w petli glownej:
Incr Count
If Count = 250 Then Count = 0
If Count = 109 Then
Start Timer2
Akcja = 1
Else
Stop Timer2
Akcja = 0
End If
Waitms 1I slowem objasnienia - jestem poczatkujacy wiec jezeli popelniam jakis banalny blad to wdzieczny bede za niezbesztanie mnie totalnie
Zegar procka ustawiony jest na 8 Mhz, dzielnik Timera jest na 8 co daje 1MHz, W OCR2 wpisane mam 28 czyli po doliczeniu do tej wartosci zmienia sie stan wyprowadzenia OC2, pod ktore podpiete mam diody nadawcze. Licze i wychodzi, ze dzieje sie to 35714 razy w ciagu sekundy - czyli 35,7 kHz
Akcja to przelacznik startujacy (gdy ma wartosc 1) detekcje przeszkod przez odbiorniki.
Proc taktowany jest z kwarcu 8 MHz rzecz jasna, fusy ustawione:
high na D9
low na DC
czyli 011100:Ext. Crystal/Resonator Medium Freq.; Start-up time: 258 CK + 64 ms; [CKSEL=1100 SUT=01]
No i teraz problem .... nie dziala. Na takim ustawieniu jak powyzej przeszkody jakoby wykrywane sa caly czas. Zjezdzajac z wartoscia OCR2 stwierdzam:
OCR2 w przedziale 30-8 - stale wykrywanie przeszkod
OCR2 w przedziale 0-5 - brak wykrywania przeszkod
OCR2 ustawione na wartosc 6 lub 7 daje jakis tam kontakt z otoczeniem - ale niezbyt skuteczny:
Zbyt czesto znajduje przeszkode, ktorej nie ma - powienien jechac do przodu i tylko w przypadku wykrycia przeszkody manewrowac - a jak widac kreci baczki i kombinuje - cos tam niby zlapie ale to nie jest to co powinno byc
Zarowno diody nadawcze jak i odbiorniki odpowiednio osloniete - tak zeby promieniowanie z diod nie wplywalo na odczyty - oczywiscie oprocz wiazki odbitej.
Mam nadzieje, ze wszystko opisalem w miare klarownie i przepraszam za ewentualne glupoty zawarte w moim problemie.
Pozdrawiam
