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

Próbkowanie niezsynchronizowanego przebiegu - jak najlepiej.

robiw 21 Cze 2013 19:00 2604 10
REKLAMA
  • #1 12442097
    robiw
    Poziom 26  
    Witam,
    Mam pewien przetwornik światło/częstotliwość który zamienia wejściowy strumień światła którego zmienność mieści się w okresie odpowiadającym częstotliwości 1...3Hz na przebieg wyjściowy o częstotliwości 8...8.5kHz, przy czym składowa zmienna tego przebiegu wynosi zaledwie 5%. Próbkuję ten przebieg z przetwornika z częstotliwością 40Hz co daje mi 200...212 zmierzonych impulsów (zliczonych przez licznik ustawiony jako licznik impulsów zewnętrznych). Jak widać uzyskuję bardzo marną rozdzielczość, jeśli chodzi o interesującą mnie składową zmienna mierzonego sygnału, na której bardzo mi zależy. Niestety nie mogę zmniejszyć częstotliwości próbkowania by zwiększyć liczbę liczonych impulsów i tym samym rozdzielczość składowej AC. Zastanawiałem się jak zwiększyć rozdzielczość tej składowej zmiennej sygnału. Myślałem o tym by mierzony, wyjściowy sygnał przetwornika puścić na wejście ICP timera taktowanego dość wysokim zegarem i cały czas na okrągło wyznaczać okres badanego przebiegu a w przerwaniu od timera obsługującego próbkowanie (40Hz) wczytywać do tablicy ostatnio wyznaczony w ICP okres... mam jednak wątpliwość czy można wtedy przyjąć, iż częstotliwość próbkowania nadal wynosi 40Hz skoro moment wyznaczenia okresu (w ISR ICP) jest kompletnie niezależny od momentu próbkowania choć samo wyznaczanie będzie miało miejsce dużo częściej niż próbkowanie. Czy jest jakiś inny sposób na ten problem? robiw
  • REKLAMA
  • #2 12448337
    And!
    Admin grupy Projektowanie
    Można mierzyć okres sygnału zamiast częstotliwości.
    Przy zmienności 8KHz-8.5KHz daje to czas 125us do 117us.
    Bramkując tym sygnałem zliczanie np. częstotliwości 16MHz na licznik 16b
    otrzymujemy wynik 2000 do 1872 co daje już rozdzielczość ponad 100.

    Pomiar można powtórzyć dziesięciokrotnie i uśrednić,
    co daje częstotliwość próbkowania 800Hz.
  • REKLAMA
  • #3 12449292
    robiw
    Poziom 26  
    Oczywiście, że można mierzyć okres, tyle, że wtedy nie ma jak się zsynchronizować z częstotliwością próbkowania bo powiedzmy, że następuje chwila pomiaru okresu (chwila próbkowania), ale badany przebieg ma teraz stan niski a wysoki (czyli pierwsze zbocze tego badanego sygnału) nastąpi za 10us...OK a innym razem, gdy nastąpi kolejna chwila pomiaru okresu (wypadnie chwila próbkowania) zbocze sygnału, którego okres mierzymy nadejdzie za 35us... tym samym częstotliwość próbkowania nie będzie stała a zależna od chwili pomiaru okresu a co za tym idzie wszystkie pomiary są o d... potłuc...robiw

    Dodano po 3 [minuty]:

    And! napisał:
    Pomiar można powtórzyć dziesięciokrotnie i uśrednić,
    co daje częstotliwość próbkowania 800Hz.


    Sygnał światła, który przetworzony został na częstotliwość ma okres 1...3Hz, więc nie ma potrzeby aż ta często go próbkować, wystarczy 20..40Hz...robiw
  • REKLAMA
  • #4 12449413
    And!
    Admin grupy Projektowanie
    Jeżeli sygnał jest wolnozmienny a przedstawiona metoda z uśrednianiem zbędna,
    można wykonywać pomiar okresu z częstotliwością próbkowania 40Hz.
    Czas pomiaru (przetwarzania) może wynosić np. zawsze 250uS.
    W odpowiednio dobranym oknie zawsze uzyska się użyteczny fragment sygnału,
    pozwalający na określenie jego okresu.

    W efekcie dane pomiarowe napływają z częstotliwością 40Hz,
    dostarczając wyniki analizy długości okresu z okna o stałej długości czasowej,
    dobranej tak aby "złapać" sygnał użyteczny.
  • REKLAMA
  • #5 12449706
    robiw
    Poziom 26  
    Nie jestem pewien czy masz rację bo: powiedzmy, że próbkujemy co 25ms (40Hz), jednak zauważ, że sam moment próbkowania nie wypadnie dokładnie co 25ms a za każdym razem w innym czasie bo, gdy procedura ISR odpowiedzialna za próbkowanie będzie chciała zmierzyć okres sygnału to będzie musiała poczekać nieco (powiedzmy 110...125us) na dwa zbocza badanego sygnału a co najgorsze ten czas oczekiwania nie będzie zawsze taki sam, gdyż przebiegi (próbkowania i badany) nie są zsynchronizowane. Powoduje to, że okres próbkowania nie jest stały w czasie co kładzie całą teorię i sens tej operacji. Co innego, gdybyśmy próbkowali sygnał np. napięciowy bo wtedy przetwornik robi to zawsze w tym samym czasie (tzn. wykonuje hold badanego przebiegu). No chyba, że coś źle myślę...robiw
  • #6 12450034
    And!
    Admin grupy Projektowanie
    Okno pomiaru stałe powiedzmy 250us, częstotliwość pomiaru 40Hz,
    natomiast fizyczny moment określenia okresu sygnału faktycznie może być
    przesunięty w odniesieniu do środka okna o +/- 125us,
    pytanie czy ma to znaczenie przy szybkości zmian sygnału użytecznego 0.33-1s ?
  • #7 12450742
    robiw
    Poziom 26  
    Skoro może być przesunięty o jakiś okres czasu, nawet niewielki, to wydaje mi się (Choć nie jestem w tym specjalistą), że w takim razie nie można potwierdzić faktu, iż częstotliwość próbkowania wynosi zawsze 40Hz a co za tym idzie cała teoria idzie w łeb... Spróbkowany przebieg analizuję funkcja autokorelacji by znaleźć jego okres, więc nie wiem czy to nie pogrzebie tych działań. Inna sprawa, iż, nazwijmy to w warunkach jałowych, przebieg wyjściowy przetwornika zmienia częstotliwość z zakresu 8..8.5kHz (no powiedzmy do 10kHz) o rząd wielkości do ok.400kHz - tyle, że ten "jałowy" przebieg nie poddaję żadne analizie - muszę tylko wykrywac fakt takiego stanu co jest łatwe...robiw
  • #8 12450927
    Konto nie istnieje
    Konto nie istnieje  
  • #9 12450949
    robiw
    Poziom 26  
    albertb napisał:
    Ja myślę, że przede wszystkim powinieneś zrozumieć teorię, którą chcesz zastosować.

    Rozumiem teorię próbkowania i dlatego moja wątpliwość...Elektrodowa uprzejmość, zapomniałem niemal o tym... Chyba po to sa fora by pomagać...

    albertb napisał:
    Próbujesz zastąpić pomiar wartości średniej wartością chwilową ( w uproszczeniu)
    Twój pomiar ilości impulsów przez 25 ms uśrednia częstotliwość w tym okresie (z dokładnością do 1 impulsu)

    Masz na myśli zastąpienie zliczania impulsów pomiarem okresu? zliczanie impulsów czyli uśrednianie częstotliwości daje zbyt małą rozdzielczość.

    albertb napisał:
    Pomiar okresu przebiegu też możesz uśredniać, w tym samym przedziale czasu. I w jednym i w drugim przypadku ostatni impuls/pomiar może się zmieścić lub nie w zależności od położenia początku próbkowania.

    Nie potrzebuję uśredniać...

    albertb napisał:
    I nie dawaj tego samego postu na kilku forach.


    Post pasuje do kilku for...robiw

    Dodano po 2 [minuty]:

    Zrobię taka próbę, iż w ISR okresu próbkowania "odpalam" przerwanie ICP (Input Capture), które mierzy okres sygnału i blokuje się automatycznie do kolejnego odblokowania we wspomnianej ISR. Zobaczymy czy analiza się nie rozsypie...robiw
  • #10 12466248
    jarek_lnx
    Poziom 43  
    Prawdopodobnie nie będziesz chciał teraz zmieniać ale rozważ czy nie lepiej pozbyć się przetwornika światło/częstotliwość, gdybyś przetwarzał natężenie oświetlenia na napięcie (lub prąd) a później użył zwykłego ADC'a, problemu by nie było.
  • #11 12501991
    robiw
    Poziom 26  
    Próba z ICP wykonana, niestety autokorelacja kompletnie się rozjeżdża choć same wyniki próbkowania są czasami w porządku. Timer0 odmierza czas próbkowania i przełącza diody LED oświetlające czujnik światła jak i odblokowuje przerwanie ICP Timera1, które po chwili mierzy okres badanego sygnału. Kod przerwań poniżej:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Przy poprzedniej wersji z pomiarem liczby impulsów zewnętrznych w jednostce czasu (uśrednionej częstotliwości) autokorelacja liczyła się dobrze tylko rozdzielczość była zbyt mała :-(... robiw[/code]
REKLAMA