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

Atmega8 filtr selektywny. Potrzebne jest wąskie pasmo. Dźwięk z piezoelektryka.

CyccX 13 Maj 2011 23:33 3401 19
REKLAMA
  • #1 9503230
    CyccX
    Poziom 15  
    Posty: 208
    Ocena: 4
    Witam,

    Na wstępie chciałbym zaznaczyć że jestem nowicjuszem jeśli chodzi o programowanie, i do tej pory największe moje osiągnięcie w temacie mikro kontrolerów to prędkościomierz, obrotomierz i wyświetlanie przebiegu całkowitego na atmega8 w bascom.

    Pojawił się nowy pomysł na projekt, i zastanawiam się jak go zrealizować. Mianowicie potrzebuję urządzenie które karmione sygnałem dźwiękowym z piezoelektryka, odfiltrowało by interesującą mnie częstotliwość. Miał by być to zakres od 6000Mhz do 6500Mhz [może być trochę szerszy zakres]. Początkowo chciałem to zrealizować za pomocą aktywnych filtrów dolno i górno przepustowych, ale chciałbym wykorzystać do tego atmege8 lub większą jeśli będzie trzeba. Zrealizowanie tego na atmega, pozwoli mi na wyświetlanie amplitudy odfiltrowanego sygnału, i np zapalenie diody gdy sygnał osiągnie zadaną wartość [to akurat chyba najprostsze :)) ]

    Da radę takie coś zrobić na atmega ??? Wiem że jest dużo gotowych projektów analizatorów widma itp. Ale ja nie potrzebuje całego pasma słyszalnego, tylko wybrany wąski zakres częstosliwości i na nim się skupić.
  • REKLAMA
  • #3 9503301
    Klima
    Poziom 31  
    Posty: 1535
    Pomógł: 112
    Ocena: 180
    Da radę zakres 6kHz - 6.5kHz i pewnie o to autorowi chodzi.
  • REKLAMA
  • #5 9503307
    CyccX
    Poziom 15  
    Posty: 208
    Ocena: 4
    ehehe Wy to wszystko wytkniecie palcem :P

    oczywiście pora nie ta i chciałem żeby było ładnie napisane, ale popełniłem błąd. Oczywiście chodzi o zakres częstotliwości 6000Hz - 6500Hz

    zależał by mi też na w miarę możliwości szybkim próbkowaniu. Minimalnie 10x na sekunde
  • REKLAMA
  • #7 9503326
    CyccX
    Poziom 15  
    Posty: 208
    Ocena: 4
    tak, pod hasłem spectrum analyzer avr, jest tego dość sporo. Nawet dostępne są gotowe kody, tylko wgrać polytować i cieszyć się widmem. Ale są to wszystko widma całego pasma słyszalnego. A mnie interesuje tylko ten wąski kawałek. Da się przerobić kod "pełnego" widma, na taki żeby pracował tylko na moim okienku częstotliwości ??
  • #8 9503330
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Skoro pokazują w szerokim zakresie w osobnych słupkach na wyświetlaczu, to zapewne da się program zmienić by pokazywał tylko wybrany zakres.

    Ale tak jak pisałem nie robiłem takiego projektu, więc to tylko luźne myśli.
  • #9 9503351
    CyccX
    Poziom 15  
    Posty: 208
    Ocena: 4
    przeglądałem kod z dostępnego przykładowego analizatora widma, i jest tam kapke mexyk i nie mogę się połapać. Czy ktoś bardziej ogarnięty mogłby mi podpowiedzieć w którym miejscu powinienem zmienić kod by uzyskać interesujacy mnie efekt ?
  • #10 9503362
    Karol966
    Poziom 31  
    Posty: 2041
    Pomógł: 83
    Ocena: 650
    CyccX napisał:
    przeglądałem kod z dostępnego przykładowego analizatora widma, i jest tam kapke mexyk i nie mogę się połapać. Czy ktoś bardziej ogarnięty mogłby mi podpowiedzieć w którym miejscu powinienem zmienić kod by uzyskać interesujacy mnie efekt ?


    Jakbyś załączył owy kod to może i ktoś by Ci odpowiedział;)
  • #11 9503364
    CyccX
    Poziom 15  
    Posty: 208
    Ocena: 4
    sluszna uwaga ;)
    Załączniki:
    • sa16x2.rar (2.92 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #13 9503657
    DXFM
    Poziom 20  
    Posty: 340
    Pomógł: 39
    Ocena: 26
    Nie robiłem nigdy analizy dźwięku na ATmega8, ale co nieco o przetwarzaniu sygnałów wiem. Po pierwsze - Atmel w nocie napisał, że przetwornik działa z max. częstotliwością próbkowania 15ksps (15kHz). Oznacza to, że sygnał wejściowy MUSI być ograniczony do 7,5kHz (twierdzenie o próbkowaniu). Wymaga to zastosowania filtru analogowego dolnoprzepustowego. Pytanie jest, czy w widmie częstotliwościowym sygnału mogą się pojawić częstotliwości wyższe niż 7kHz. Jeśli tak, to trzeba zastosować odpowiednio stromy filtr.
    Druga sprawa, to układ będzie pracował na częstotliwościach bliskich połowie częstotliwości próbkowania, co nie będzie korzystne w tym układzie.
    Może lepiej poprzestać na detektorze zbudowanym w oparciu o NE567 a amplitudę badać filtrem analogowym środkowoprzepustowym, albo skorzystać z dsPIC.
  • #14 9503723
    CyccX
    Poziom 15  
    Posty: 208
    Ocena: 4
    nie znalazłem Goertzel algorithm w jezyku bascom.

    DXFM, są gotowe analizaotry widma które pracują w całym spektrum dźwiękowym słyszalnym

    Dodano po 1 [godziny] 6 [minuty]:

    DXFM napisał:

    Może lepiej poprzestać na detektorze zbudowanym w oparciu o NE567 a amplitudę badać filtrem analogowym środkowoprzepustowym, albo skorzystać z dsPIC.



    mogłbyś rozwinąc tę myśl ?? szczególnie z badaniem amplitudy
  • #15 9504305
    DXFM
    Poziom 20  
    Posty: 340
    Pomógł: 39
    Ocena: 26
    CyccX napisał:
    nie znalazłem Goertzel algorithm w jezyku bascom.

    Po co Goertzel? On jest dobry do wyłowienia kilku częstotliwości spośród całego spektrum. Tu wystarczy tylko cyfrowy filtr środkowoprzepustowy.

    CyccX napisał:

    DXFM, są gotowe analizaotry widma które pracują w całym spektrum dźwiękowym słyszalnym

    OK, w nocie stoi napisane:
    The ADC accuracy also depends on the ADC clock. The recommended maximum ADC clock frequency is limited by the internal DAC in the conversion circuitry. For optimum performance, the ADC clock should not exceed 200 kHz. However, frequencies up to 1 MHz do not reduce the ADC resolution significantly.
    Zatem można osiągnąć próbkowanie ok. 77kHz. Można zatem zrobić filtr środkowoprzepustowy, nawet Atmel daje źródła:
    AVR223: Digital Filters on tinyAVR and megaAVR devices.
    Jeden projekt na podstawie tego programu zrobiłem i działało. Oczywiście musisz zaprojektować filtr, ja korzystałem z programu Filter Free 4.0 albo Matlaba. Trzeba też zwiększyć liczbę współczynników filtru, bo 3 będzie za mało. Czas obliczeń może stać się dłuższy niż okres próbkowania, ale w tym zastosowaniu chyba można sobie opuszczać akwizycję sygnału na czas obliczeń.

    Co do rozwiązania analogowego z filtrem mam na myśli coś takiego (3-ci post):
    Link elektroda
    Rysunek pochodzi ze znanej mi książki, ale tytułu sobie nie przypomnę. Chodzi oczywiście o zbudowanie jednego kanału. W celu zwiększenia nachylenia charakterystyki można łączyć kaskadowo filtry, tj. zbudować na 2, 3, 4-ch wzmacniaczach operacyjnych.
    Jeśli selektywność powyższego filtru będzie za mała, to do wykrycia częstotliwości (w pewnym przedziale wyznaczonym przez zakres chwytania) można zastosować NE567 , który jest pętlą PLL. Amplitudy się nim nie zmierzy.

    Tak więc może do Twojego zastosowania wystarczy po prostu filtr analogowy? W przypadku filtracji cyfrowej na wejściu przetwornika i tak musisz zrobić antyaliasingowy filtr analogowy...

    Ja chcę pomóc, ale napisz więcej o sygnale wychodzącym z przetwornika - jaki zakres częstotliwości, jak wygląda widmo, a także jaki ma być czas reakcji, jaka selektywność do detekcji i pomiaru poziomu albo do czego to potrzebne.
  • #16 9504338
    shg
    Poziom 35  
    Posty: 2289
    Pomógł: 339
    Ocena: 135
    Da się.
    Ja robiłem coś podobnego, tylko częstotliwości trochę inne i zakres węższy.
    A robi się tak:
    Sygnał podaje się na mieszacz kwadraturowy, co w praktyce sprowadza się do pomnożenia go przez zespoloną sinusoidę (czyli sinus i cosinus, z jednego kanału się robią dwa). Sinusoida ma mieć częstotliwość taką, jak środek pasma.
    Potem z sygnału wycina się pozostałe częstotliwości za pomocą filtra DOLNOprzepustowego. Powód tego jest taki, że mieszanie powoduje przesunięcie żądanej częstotliwości do 0 Hz i okolic. Mogą być też częstotliwości ujemne (bo sygnał jest zespolony). W praktyce są to dwa filtry, jeden na składowej sinusowej, drugi na cosinusowej.
    Dalej można zrobić decymację, czyli wycinanie co którejś próbki, bo w sygnale o zawężonym pasmie duży strumień próbek nie jest już potrzebny.
    Na koniec robi się zespoloną FFT, Goertzela, czy co tam chcesz.

    Ale jeżeli interesuje Cię tylko jedna częstotliwość, to raczej algorytm Goertzela bez dodatkowej zabawy w przesuwanie pasma.
  • #17 9874246
    coolrob
    Poziom 15  
    Posty: 197
    Pomógł: 7
    Ocena: 26
    Aktualnie konstruuję filtr analogowy na okolice 60kHz i dlatego odświeżam temat.

    DXFM napisał:
    Jeśli selektywność powyższego filtru będzie za mała, to do wykrycia częstotliwości (w pewnym przedziale wyznaczonym przez zakres chwytania) można zastosować NE567 , który jest pętlą PLL. Amplitudy się nim nie zmierzy.



    Czy dobrze rozumiem, że wg noty katalogowej na str. 9 średnie napięcie na pin 1 układu jest funkcją amplitudy mierzonego sygnału?
  • #18 10410372
    dex
    Poziom 27  
    Posty: 1299
    Pomógł: 40
    Ocena: 101
    DXFM napisał:
    Nie robiłem nigdy analizy dźwięku na ATmega8, ale co nieco o przetwarzaniu sygnałów wiem. Po pierwsze - Atmel w nocie napisał, że przetwornik działa z max. częstotliwością próbkowania 15ksps (15kHz). Oznacza to, że sygnał wejściowy MUSI być ograniczony do 7,5kHz (twierdzenie o próbkowaniu)...


    Tu bym uciął i powiedział że przetwornikiem o fs 15kHz mozna próbkować sygnał o paśmie! do 7500Hz tak jak to autora tematu interesuje 6000-6500Hz jak równie dobrze można nim spóbkować sygnały dla przykładu 40000 do 40500Hz.
  • #19 10410910
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Pewnie, że można. Można nawet próbkować sygnały o częstotliwościach gigaherców, ale aliasing zrobi z nich sieczkę.

    Btw - temat zdaje się umarł pół roku temu
  • #20 10411334
    Xitami
    Poziom 29  
    Posty: 1130
    Pomógł: 118
    Ocena: 31
    gaskoin i masz rację i nie masz

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje sposobu na zbudowanie urządzenia na bazie mikrokontrolera ATmega8, które będzie filtrować sygnał dźwiękowy z piezoelektryka w zakresie 6000Hz - 6500Hz. W dyskusji podkreślono, że pierwotnie użytkownik pomylił jednostki, co sprowokowało wyjaśnienia dotyczące możliwości realizacji projektu. Uczestnicy sugerują wykorzystanie filtrów dolnoprzepustowych oraz algorytmu Goertzel do analizy sygnałów. Wskazano również na ograniczenia związane z częstotliwością próbkowania ADC w ATmega8, która wynosi maksymalnie 15kHz, co wymaga zastosowania odpowiednich filtrów analogowych. Użytkownik rozważa modyfikację istniejących projektów analizatorów widma, aby skupić się na wąskim zakresie częstotliwości.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA