Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program do zliczania impulsów

konrad92 29 Kwi 2010 22:39 1831 10
  • #1 29 Kwi 2010 22:39
    konrad92
    Poziom 15  

    Witam,
    Jakiś czas temu dostałem zlecenie na wykonanie urządzenia, które po zliczeniu więcej niż 3 impulsów w ciągu sekundy podawało by sygnał 0.5Hz na 2 nogi mikrokontrolera na okres około 10 sekund. Dodam że z zakresu programowania moja wiedza ogranicza się tylko do załadowania programu do procka :D Myślę że układ można zrealizować na ATtiny13. Wykorzystując 1 wejście jako zliczające, a 2 na te po 0,5Hz. Bardzo, bardzo proszę o pomoc w napisaniu programu. Na pewno się odwdzięczę, jak nie teraz to w przyszłości :)
    pozdrawiam Konrad

    0 10
  • #2 30 Kwi 2010 12:14
    Ture11
    Poziom 34  

    No więc wymyśliłem coś takiego:

    Code:

    $regfile = "attiny13.dat"
    $crystal = 1000000
    Config Pinb.3 = Output
    Config Pinb.4 = Output
    Dim A As Byte
    Dim B As Byte
    Config Timer0 = Counter , Edge = Rising

    Do
    Timer0 = 0
    Start Timer0
    wait 1
    Stop Timer0
    Timer0 = A

    If A > 3 Then
    For B = 1 To 20
    Pulseout Portb , 3 , 250000
    Waitms 250
    Pulseout Portb , 4 , 250000
    Waitms 250
    Next B
    Else

    End If
    Loop



    problem w tym, że zmienna bajt nie mieści się w procesorze....
    Zresztą nie mam możliwości wytestowania układu, przynajmniej narazie, a i nie pamiętam do końca, czy zliczanie impulsów będzie możliwe na Timer0.

    Ogólnie to podaje kod tylko jaką minimalną pomoc... Jak cos wymyśle nowego, dam znać.
    Program napisałem na szybko w Bascomie, myślę, że nie powinieneś mieć problemów z tym językiem - jest prościutki...

    Niech się inni wypowiedzą.

    Jeszcze: czy te wyjścia na 0,5Hz to mają być w tym samym czasie ustawione, czy też szeregowo mają następować po sobie ? (w moim programie jest ta druga ewentualność.)

    0
  • #3 30 Kwi 2010 12:47
    utak3r
    Poziom 25  

    Zależy od potrzebnej dokładności... przy przerwaniach komenda wait będzie źle działać. Najlepiej by było dać to na dwóch timerach: jeden odmierza sekundy, drugi zlicza impulsy.

    0
  • #4 30 Kwi 2010 12:57
    94075
    Użytkownik usunął konto  
  • #5 30 Kwi 2010 23:12
    konrad92
    Poziom 15  

    Witam,
    jutro przetestuję układ, głupie pytanie. Na PB3 i PB4 mam wyjście, a gdzie podłączam wejście do zliczania impulsów? I czy muszę podłączać kwarc? Czy można to zrealizować na wewnętrznym 1Mhz (fabryczne ustawienia)

    Konrad

    0
  • #6 30 Kwi 2010 23:58
    Ture11
    Poziom 34  

    No więc jeżeli chcesz testować ten program, co napisałem, to musisz w kompilatorze (Bascomie) ustawić :

    1. framesize ustawiasz na 8
    2. softstack ustawiasz na 16
    (zaczerpnięte z innego tematu z elektrody).

    Kwarc wbudowany, 1 MHz. Pamiętaj tylko, że ten program wygeneruje te sygnały szeregowo, czytaj: nie w tym samym czasie, kolejno po sobie.

    Pozdrawiam.

    Wejście impulsów T0 będzie na Portb.2

    Dodano po 4 [minuty]:

    Jeśli możesz, powiedz, gdzie ten układ będzie zastosowany, i jaką będzi pełnił rolę. Chodzi mi o to, że jeżeli miałby rozpoznawać np. czy kręci się koło w rowerze, to dokładność może być wystarczająca, ale jeżeli ma to działać w sytuacji, gdy potrzebna jest dokładność, to będzie problem, o którym piszę kolega Albertb. Wtedy trzebaby zastosować przerwania.

    P.s. Zliczenie będzie się odbywało po podaniu narastającego sygnału. Określa to parametr "Edge". Jeżeli zbocze ma być spadające, zamiast "Rising" wpisz "Falling"

    0
  • #7 01 Maj 2010 00:01
    konrad92
    Poziom 15  

    Urządzenie ma być zastosowane do licznika geigera, który sam zbudowałem. Po zliczeniu więcej niż 3imp/sec ma uruchamiać alarm który sygnalizuje zwiększone promieniowanie.

    0
  • #8 01 Maj 2010 00:03
    Ture11
    Poziom 34  

    Czyli dochodzi kwestia bezpieczeństwa... Sprawy się kopmlikują, chyba że nie jest to bardzo szkodliwe promieniowanie... Aqurat na chemii itp. się nie znam...

    0
  • #9 01 Maj 2010 00:06
    konrad92
    Poziom 15  

    ma to być możliwie prosty układ, który by tylko oznaczył że zaistniała taka sytuacja. Będzie przez 10 sekund alarmował że jest zwiększone promieniowanie. Cały układ nie pobiera więcej niż 20mA także można go spokojnie mieć włączonego i z nim chodzić :)
    Jutro przetestuje układ.

    Konrad

    P.s. normalne promieniowanie to 0.10uSv/h czyli około 10 impulsów na około 40 sekund

    Posty scaliłem.
    [zumek]

    witam,
    jeśli chciałbym zrealizować to na innym uC, muszę zmienić tylko $regfile na dany uC?

    0
  • #10 01 Maj 2010 16:29
    Ture11
    Poziom 34  

    jeżeli na innym procesorze, zmieniasz $regfile, oraz nie wpisujesz tego, co podałem wcześniej, czyli framesize i softstack. Oczywiście zakładam, że kwarc skonfigurowany będzie na 1MHz.
    Jeszcze tylko pinout się zmieni, a dokładniej wejście impulsów, ale to już musiałbyś podać, na jakim procku będziesz to robił.

    Pozdrawiam.

    0