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.

AVR/C - miernik czestotliwości

makipaki123 18 Maj 2015 23:09 1179 4
  • #1 18 Maj 2015 23:09
    makipaki123
    Poziom 8  

    Witam.

    Udało mi się zrobić miernik czestotliwości na Atmega644p dzieki dwóm timerą pierwszy timer 8- bitowy, drugi 16-bitowy. Pierwszy timer(timer0) ma za zadanie sprawdzac czy nie pojawił się impuls na pinie t0, natomiast timer drugi(timer1)ma za zadanie odmierzac czas. Całość taktuje kwarcem 16 000 000 Mhz.

    Jednak dokładność tego miernika czestotliwosci jest do 1hz czy moge jakoś uzyskać dokładnosc 0,1hz albo nawet mniejszą.

    Jeśli tak to jak się za to zabrać.?????

    Poniżej kod w C

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wynik pomiaru czestotliwosci jest w zmiennej frequence.

    Aaa i jeszcze pytanie jaką czestotliwosc moge maksymalnie zmierzyc. Z teoretycznego punktu widzenia.

    0 4
  • #2 19 Maj 2015 06:47
    Steryd3
    Poziom 31  

    Pomiar częstotliwości to temat szlifowany dość mocno. Ogólnie pomiar częstotliwości realizuje się na dwa sposoby:
    Pierwszy to pomiar częstotliwości tj. zliczanie ilości impulsów w określonym czasie po czym następuje prezentacja wyniku zliczania (np. w czasie 1s -wtedy wynik jest wprost częstotliwością). Gdyby ten czas zliczania wydłużyć np. do 10s uzyskuje się wynik 10 razy dokładniejszy. Niestety czeka się na niego też 10 razy dłużej co często jest sporym problemem. Dokładny wynik pomiaru częstotliwości potrzebny jest zazwyczaj tam gdzie mamy do czynienia z małymi częstotliwościami ( np. przy częstotliwości rzędy 10Hz błąd na poziomie 1 Hz rzadko jest akceptowalny) dlatego też dla niskich częstotliwości stosuje się drugi sposób.
    Polega on na pomiarze okresu tj. pomiarze czasu między zboczami (narastającymi lub opadającymi- nie ma to zazwyczaj większego znaczenia). Robi się to tak, iż przy wystąpieniu zbocza zaczyna się zliczanie impulsów z generatora o znanej stosunkowo dużej częstotliwości a przy pojawieniu kolejnego zliczanie się zatrzymuje. Liczba zliczonych impulsów jest proporcjonalna do czau między zboczami i częstotliwości zastosowanego generatora która jest nam znana. Z otrzymanego czasu między zboczami można wyliczyć częstotliwość f=1/T. Trzeba też założyć jakiś maksymalny czas który w tej metodzie jest do zmierzenia bo gdy nie pojawi się to drugie zbocze które zatrzymuje zliczanie możemy liczyć w nieskończoność.

    Wracając do AVRów -do pomiaru okresu łatwo jest w nich skorzystać z trybu capture dostępnego dla liczników.

    0
  • #4 21 Lip 2015 13:43
    LightOfWinter
    Poziom 29  

    makipaki123 napisał:

    Całość taktuje kwarcem 16 000 000 Mhz.

    Jednak dokładność tego miernika czestotliwosci jest do 1hz czy moge jakoś uzyskać dokładnosc 0,1hz albo nawet mniejszą.

    Jeśli tak to jak się za to zabrać.?????

    Wynik pomiaru czestotliwosci jest w zmiennej frequence.

    Aaa i jeszcze pytanie jaką czestotliwosc moge maksymalnie zmierzyc. Z teoretycznego punktu widzenia.


    Witaj,

    Kwarc masz raczej 16MHz lub 16000000 Hz.
    Takiego jak napisałeś jeszcze nie spotkałem użytego w AVR-ach.

    Pytanie jakiej częstotliwości sygnały chcesz mierzyć?
    Resztę wyjaśnili koledzy powyżej.

    0