logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8L][Bascom] Generator przebiegu 36kHz dla diody IR

lukpep 01 Paź 2009 23:27 2180 1
  • #1 7080997
    lukpep
    Poziom 12  
    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:

    $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 1


    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
REKLAMA