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

Jak zliczać impulsy z czujnika podczerwieni na Atmega8?

KaJakKrzysztof 19 Lip 2007 14:23 1635 4
  • #1 4095266
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    Witam

    Chciałbym usłyszeć Wasze zdanie na jeden temat. Otóż mam urządzonko zbudowane na bazie Atmegi8 - całość zamontowana na maszynie -gra i buczy (dzięki również Waszej pomocy za co bardzo dziękuję).
    Maszyna ma czujnik podczerwieni, który bada przesuwające się na taśmie przedmioty (czujnik zasilany jest 24 VDC i ma 3 przewody VDC, GND, i SYGN przedmiot przechodząc przez czujnik powoduje iż owy czujnik podaje 24V na przewód SYGN jak zniknie to napięcie znika również z niego). Chciałbym aby Atmega zliczała te przedmioty (ich ilość) czyli inaczej mówiąc ilość impulsów i pomyślałem aby owy czujnik podłączyć do małego przekaźniczka 24VDC a on stykałby mi np. nóżkę Atmegi do masy GND i w ten sposób mógłbym wiedzieć kiedy znalazł się przedmiot w polu czujnika i liczyć go ale pytanie czy Atmega nie ma systemowo jakiegoś licznika impulsów? hmm bo pomyślałem aby napisać coś takiego

    L - liczba przedmiotów
    T - zmienna pomocnicza

    Set Portd.2
    
    Do
    
    If T = 1 Then Goto zniknal
    
    jest:
    
         If Pind.2 = 0 Then 
              Incr L #przedmiot w polu
              T = 1 #zabezpieczenie przed zliczaniem nieskonczonym
         End if
    
    zniknal:          
              If Pind.2 = 0 Then
                   T = 0
              End if
    Loop    


    Jak myślicie dobry sposób?
  • #2 4095325
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    M8 ma trzy liczniki sprzętowe. W tym przypadku dwa z nich mogłyby służyć do twojego celu. Jeden jest 8 a drugi 16 bitowy. Mają wejścia odpowiednio na nodze 6 i 11. Można je różnie konfigurować, odczytywać zawartość, wprowadzać zawartość, resetować, włączać i wyłączać. Potrafią też zgłaszać przerwania. Zobacz Config Timer x.
  • #3 4095580
    andrzejek23
    Poziom 19  
    Posty: 314
    Pomógł: 21
    Ocena: 146
    1) A jeśli nie chcesz korzystać z licznika, to może tak (zawsze działa):

    
    Do
    
         If Pind.2 = 0 Then
              Incr L                           ' przedmiot w polu
              do                                ' zabezpieczenie...
              loop until Pind.2 = 1       ' ...przed zliczaniem... 
              waitms 100                   ' ...nieskończonym
         End if
    
    Loop
    


    2) Zamiast przekaźnika zastosuj tranzystor dopasowujący - będzie taniej :D

    Pozdrawiam
  • #4 4096795
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    Wezmę raczej przekaźnik bo nie wiem jaki to musiałby być tranzystor - sam czujnik ma obciążalność SYGN max 100 mA w każdym razie bardzo dziękuję za pomoc! pozdrawiam :)
  • #5 4097678
    andrzejek23
    Poziom 19  
    Posty: 314
    Pomógł: 21
    Ocena: 146
    Najzwyklejszy BC547 :D Sygnał 24V z czujnika przez 47kOhm do bazy, emiter do masy, a kolektor do nóżki proca oraz do +5V przez 4,7kOhm. I gotowe!
REKLAMA