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

Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?

30 Maj 2009 17:08 13499 35
  • Poziom 28  
    Witam,
    buduję pewne urządzenie, w którym potrzebuje mierzyć na bieżąco (i dosyć szybko, na tyle aby wyłapać sygnał z mikrofonu) poziom sygnału audio z mikrofonu.

    Dla zrozumienia się ma to wyglądać tak, że im silniejszy dźwięk(np klaśnięcie) tym jaśniej świecą diody.

    Mikrokontroler (prawdopodobnie ATmega16) będzie zajmował się generowaniem sygnału PWM (programowo 3 kanały) dla matryc LED.

    Mam wątpliwości co do tego czy uP zajmując się generowaniem PWM wyrobi się mierząc sygnał audio.A jeśli wyrobi się, to w jaki sposób najlepiej zrealizować pomiar poziomu sygnału z mikrofonu.
    Wykorzystanie PWM sprzętowych raczej nie wchodzi w grę gdyż będę potrzebował jeszcze mierzyć czas za pomocą timerów (a może można odliczać precyzyjnie czas za pomocą timerów i jednocześnie generować PWM?)

    Przejrzałem trochę forum i znalazłem sporo informacji na temat FFT ale nie jestem pewien czy potrzebuje tu właśnie taki pomiar(analizę) sygnału.

    A więc moje pytanie prośba do was jakie macie propozycję aby skutecznie mierzyć sygnały pojawiające się na mikrofonie za pomocą przetwornika wbudowanego w ATmega16. Jaką ewentualnie filtrację lub układ sprzęgający mikrofon z ADC wykorzystać?

    Pierwszy pomysł jaki przychodzi mi do głowy to po prostu pomiar i uśrednianie napięcia występującego na mikrofonie. Oczywiście napięcia odpowiednio wzmocnionego w celu dopasowania do zakresu pomiaru ADC (zakładam Vref=5V) no i jeśli konieczna filtracja, tylko jaka?
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • TermopastyTermopasty
  • Poziom 38  
    sample and hold.
    To co masz-to wcale nie jest szybko.
    W oscyloskopach jest milion razy szybciej.
    Co ty chcesz uśredniać-jak chcesz zmierzyć wartość szczytową?
  • Poziom 28  
    Co masz na myśli pisząc sample and hold?

    Uśredniać....po prostu mierzyć najszybciej jak się da wzmocnione napięcie z mikrofonu i uśredniać np. po 10.Oczywiście wykorzystując np prostownik aktywny lub coć podobnego.... nie mam doświadczenia w cyfrowej obróbce sygnałów, więc każda rada a nawet konstruktywny komentarz (jaki by nie był) będzie pomocny.
  • Poziom 38  
    sample and hold-znaczy złap i trzymaj(napięcie z przetwornika).
    "po prostu mierzyć najszybciej jak się da wzmocnione napięcie z mikrofonu"
    Tak.
    Wpisz w googla-wikipedia-co chcesz.
    Są gotowe układy które to robią-albo na piechotę.

    Dodano po 1 [minuty]:

    Oczywiście wykorzystując np prostownik aktywny lub coć podobnego....
    Tak.

    Dodano po 1 [minuty]:

    i uśredniać np. po 10.
    Nie trzeba-trzeba dbać o czas.
  • TermopastyTermopasty
  • Poziom 28  
    janbernat napisał:
    sample and hold-znaczy złap i trzymaj(napięcie z przetwornika).
    Oczywiście wykorzystując np prostownik aktywny lub coć podobnego....
    Tak.
    Nie trzeba-trzeba dbać o czas.


    Czyli co najlepiej znaleźć przetwornik typu sample and hold(wiedzialem co to znaczy ;P) i podawać przez prostownik aktywny sygnał z mikrofonu a z przetwornika juz w ATmego16 otrzymywac gotową wartość napiecia średniego?
  • Poziom 38  
    W zasadzie tak.
    Jak chcesz łapać klaśnięcie-lub oklaski- to tylko sprawa czasu pomiaru.
    Możesz pomiary uśredniać programowo-co ile czasu pomiar, ile pomiarów-i z tego robić co co chcesz.
    To mam wrażenie nie jest przetwarzanie sygnałów-bo jest to nieco trudniejsze.
  • Poziom 28  
    No nie tylko oklaski. W zasadzie poziom dłuższych, a nawet ciągłych dźwięków tez chciałbym mierzyć.

    Czy wtedy układy sample-and-hold sprawdzą się?A czasami nawet stosując układy S/H nie będę i tak potrzebował szybszego niż w ATmega przetwornika?

    Czy w przypadku dłuższych lub ciągłych sygnałów nie potrzeba wielokanałowych układów S/H?

    A co powiecie na taki pomiar: http://www.mcselec.com/index.php?option=com_content&task=view&id=71&Itemid=57

    Dodano po 16 [minuty]:

    Tak mi się przypomniał układ którym kiedyś wykrywałem pewien pojedynczy dźwięk i wtedy zbudowałem coś takiego:

    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?

    Oczywiście w urządzeniu które chce zbudować filtr będzie inny albo wcale może go nie być. Za detektorem był komparator okienkowy.

    W powyższym układzie otrzymałem następujące przebiegi:
    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?


    Może ta koncepcja się nada?
  • Poziom 38  
    Sprecyzuj, co potrzebujesz.
    " będzie zajmował się generowaniem sygnału PWM (programowo 3 kanały) dla matryc LED."
    I ADC ma działać.
  • Poziom 28  
    Potrzebuje:
    - pomiar poziomu sygnału audio z mikrofonu (najlepiej za pomocą wbudowanego ADC)
    - generowanie PWM (sterowanie LED-ami) z 3 końcówek uP - generowaniem PWM będzie zajmował się jeden z timerów
    - odmierzanie czasu rozjaśniania i ściemniania po tym jak sygnał mikrofonu przekroczy jakiś tam ustalony poziom
  • Poziom 28  
    Hmm...chyba nikt nie ma innego pomysłu...czyżby zdany byłbym tylko na siebie?
  • Poziom 28  
    Poczytałem na forum o FFT i podobają mi się wyniki jakie można uzyskać za pomocą FFT.

    Wydaje mi się że w moim przypadku mógłbym wyznaczać FFT i obliczać średnią z całego pasma (średnią tylko jaką i jak).

    Tak czy inaczej jeśli to zły pomysł to proszę mnie wyprowadzić z błędu albo podać inne prostsze rozwiązanie.

    A teraz muszę sobie przypomnieć i zrozumieć wreszcie o co chodziło z tym FFT, bo na studiach nie potrafili mi tego na wzorach wytłumaczyć.
  • Poziom 38  
    FFT-szybka transformata Fouriera-ale ja też sobie tego nie przypomnę-35 lat temu-i wtedy nie była szybka.
    Jest taki dział-przetwarzanie sygnałów.
    Są takie procesory-sygnałowe.
  • Poziom 28  
    Nie potrzebuje tu raczej precyzji procesorów DSP, je stosujesieraczje jak mamy kilkaset i więcej próbek, ja potrzebuje kilkanaście, noo max 32.

    A wracając do układów sample-and hold....jeśli miałbym je wykorzystać...to tak to widzę:
    - najszybciej jak mogę mierze napięcie z wzmacniacza s/h
    - wzmacniacz ten tak długo jak się da ( i jak potrafi) utrzymuje napięcie jakie wytwarza mikrofon (napięcie to spadnie jak nie będzie sygnału, zgadza się?)
    - nie wiem tylko czy potrzebuję tu jakiś specjalny układ sprzęgający i zasilający mikrofon z układem sample-and hold?
  • Poziom 38  
    S/H to jest dioda, kondensator i wejście układu o wysokiej impedancji.
    A i jeszcze może opornik rozładowujący-jak chcesz to ponownie naładować żeby sprawdzić nowy poziom napięcia.
    No i jak szybko można to przetworzyć.
    I wtedy masz prawie DSP.
    Pewnie są gotowe układy.
  • Poziom 18  
    Czegoś nie napisałeś kolego. Chcesz liczyć widmo, żeby później policzyć średni poziom sygnału? Co to ma za sens. Nie lepiej dać obwód całkujący wa wejściu przetwornika? Czy chcesz zapalać diody w zależności od różnych wycinków pasma? Sprecyzuj działanie urządzenia.
  • Poziom 28  
    Chce jedynie mieć reakcję na ogólny poziom dźwieku a więc chyba na wartość skuteczną sygnału z mikrofonu.

    Co do widma to tylko był mój taki pomysł opierający się na tym że z widma będę miał amplitudy częstotliwości, a jak je zsumuje i uśrednie to też będe miał informację o wartości sygnału.
    Np 1kHz ma wartość 1V załóżmy, że volty bo nie doczytałem jeszcze co dostane po FFT (jakąś moc-amplitude czy magnitiude chyba),
    2kHz->1,5V
    3kHz->0,5V
    5kHz->2V
    10kHz -> 0V
    ...suma to 5...podzielić 4 mamy 1,25V ot taka moja, jak na to wychodzi poroniona myśl.
  • Poziom 18  
    Ale zamotałeś, że tak powiem. :) Przecież takie coś to sie da na 3 tranzystorach zrobić, a ty tu FFT wytaczasz do boju. Jak już ma być na mikrokontrolerze, to na wejściu dajesz obwód całkujący RC. Jeżeli chcesz jeszcze bardziej obciąć pasmo to uśredniasz dodatkowo serie próbek. Skuteczna metoda to kilka do kilkunastu próbek w buforze FIFO i za każdym przesunięciem i dodaniem nowej próbki uśrednisz. Oczywiście wszystko programowo. Na takie coś najlepiej użyć jakiegoś mniejszego atmela z tych taktowanych do 20MHz. Program na pewno będzie bardzo mały i prosty.

    Powodzenia. :)
  • Poziom 38  
    "Ogólny poziom dźwięku"-to będzie wrażliwość ucha na częstotliwość.
    Chyba charakterystyka psofometryczna byłaby wskazana.
  • Poziom 28  
    janbernat napisał:
    "Ogólny poziom dźwięku"-to będzie wrażliwość ucha na częstotliwość.
    Chyba charakterystyka psofometryczna byłaby wskazana.


    Ogólny czyli mniej więcej jaki słyszymy, bez skalowania, bez podziału na częstotliwości.
    Wszystko co przyjdzie do mikrofonu chcę zmierzyć przetwornikiem tylko nie wiem jak połączyć mikrofon i jaki układ analogowy (uśredniający, całkujący czy jaki tam inny) użyć.

    Jak podpowiecie mi jakimś schemacikiem jak sprzęgnąć elektreta z przetwornikiem ADC to byłbym b.wdzięczny.

    Tak sobie eksperymentuje i podłączyłem sygnał z mikrofonu na układ detektora szczytowego(kondensatory 10n):
    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?

    I coś tak ADC wyłapuje (kwarc 8MHz wewnętrzny i ADC na auto, Bascom), ale wyniki mnie nie zadawalają, pewnie jeszcze dobrze było by wzmocnić sygnał z mikrofonu (trzeba tu jakiegoś specjalnego wzmacniacza?)

    Kurde sporo zrobiłem już urządzeń ale jak idzie sprzęgnąć układ analogowy z cyfrowym to mnie krew zalewa ;)
  • Poziom 38  
    A możesz do wyjścia podłączyć oscyloskop?

    Dodano po 6 [minuty]:

    A jakim napięciem zasilasz ten mikrofon?

    Dodano po 4 [minuty]:

    Bo wpisałem w googla "mikrofon elektretowy" i znalazłem jakieś schemaciki-a Ty szukałeś?
  • Poziom 28  
    Mikrofon zasilam napięciem 5,5V przez rezystor 1,2k, oscyloskop mam niestety tylko w pracy.Z tego samego napięcia zasilam procesor i wzmacniacz operacyjny.
    Podpiołem sobie prosty układ wzmacniacza nieodwracającego (wzmocnienie około 10x) ale jest jeszcze gorzej, bo wygląda na to że za wzmacniacem nic nie ma. Oscyloskop bardzo by mi się tu przydał...może podjade jutro do kolegi.

    Ale powiedz mi dlaczego po wzmocnieniu praktycznie nic nie ma?

    Znaczy się jest ale jakieś stałe 4,4V i się nie zmienia jak dmuchnę w mikrofon.
  • Poziom 38  
    Zwykły prostownik na op-amp i wzmacniacz ew.

    Dodano po 10 [minuty]:

    Twój układ to podwajacz napięcia w układzie Villarda.
    Jeśli masa mikrofonu podłączona jest do masy układu-to na wyjściu powinno coś być.
    Ale oporność wyjściowa spora.
    Na wyjściu daj wtórnik na op-amp i dopiero wzmacniacz.
    Wejście wtórnika musi być jakoś spolaryzowane-ale o tym chyba wiesz.

    Dodano po 2 [minuty]:

    Napisałem:
    "A i jeszcze może opornik rozładowujący-jak chcesz to ponownie naładować żeby sprawdzić nowy poziom napięcia".
    Sample&hold-trzyma i nie ma jak się rozładować.

    Dodano po 3 [minuty]:

    Nie sprawdzałem jeszcze-ale z tego wygląda że ATmega bierze mało prądu do pomiaru.
    Jak już naładujesz C13 jednym "dmuchnięciem" w mikrofon-to trzyma to napięcie.

    Dodano po 3 [minuty]:

    Jak będziesz mierzył oscyloskopem-to sonda ma 1/10MOHm-pomiar może spowodować że wszystko będzie chodziło lepiej.
    Jak odłączysz oscyloskop i nie będzie się miało gdzie rozładować-to wszystko znowu może być na ok.4.5V
  • Poziom 18  
    Na moje, tak jak kolega wcześniej zauważył, zamiast D11 powinien być rezystor, bo teraz układ mierzy wartość szczytową i to tak długo aż rozładujemy C13. Nie we wszystkich, ale w części AVR'ków chyba da sie ustawić wzmocnienie programowo, jeszcze podaj jaką ATMEGE masz, to poszukamy.
  • Poziom 28  
    Atmega16 albo Atmega8.Jest wzmocnienie w ATmega16 ale:
    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?
    Ja mam w obudowie PDIP.

    A powiedzcie mi jeszcze, jaki wpływ na to co chce mierzyć z mikrofonu będzie miało pojedyncze zasilanie wzmacniacza?

    Wykombinowałem coś takiego.
    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?
    Zamiast rezystora rozładowującego dałem mosfeta sterowanego z jednego z pinów mikrokontrolera, który po pobraniu próbki będzie załączany, będzie coś z tego?

    Na schemacie przy ujemnych nóżkach zasilania dałem ??? bo nie wiem jakie zasilanie będzie poprawne, czy może zrobić sztuczną masę?
  • Poziom 38  
    TL074 musi być zasilany symetrycznie.
    Ale mogłeś to sam sprawdzić w datasheet.
    Wygląda na to, ze nie "wykombinowałeś" ale ściągnąłeś bez zrozumienia.
    Mosfet może być-ale jest to przerost formy nad treścią.
    Jak napisał kedzi1:
    "Na moje..."
    "to na wejściu dajesz obwód całkujący RC..."
    I w config adc daj single np. co 1/10s-bo mocno podejrzewam że piszesz w Bascomie-chociaż tego nie zdeklarowałeś.
  • Poziom 21  
    Kondensator C3 oddziela składową stałą . Sposób zasilania wzmacniacza nie ma znaczenia .
    Jeżeli miałby to być układ pomiarowy ( np natężenia dźwięku ) wymagana byłaby duża dokładność i odpowiednie filtry kształtujące charakterystykę . Jeżeli ma to służyć tylko sterowaniu LEDami ( wrażenia optyczne ) to doświadczalnie dobrany układ R5, C4 bez mosfeta powinien wystarczyć
  • Poziom 28  
    janbernat napisał:
    TL074 musi być zasilany symetrycznie.
    Wygląda na to, ze nie "wykombinowałeś" ale ściągnąłeś bez zrozumienia.

    I w config adc daj single np. co 1/10s-bo mocno podejrzewam że piszesz w Bascomie-chociaż tego nie zdeklarowałeś.


    Owszem zamierzam zrobić to w Bascomie( ponad pół roku temu kupiłem 2 książki do programowania uP w C i ledwo zaczołem czytać, bo brak czasu, a od tamtej pory wszystkie urządzenia które zaprojektowałem w Bascomie działają do dziś. Więc nie zaczynajmy dyskusji, że Bascom jest beznadziejny, bo mi na razie wystarcza)

    Ok w
    Code:
    Config Adc = Single
    , ale o co Ci chodzi z tym 1/10s,...pobierać napięcie 10 razy w ciągu sekundy?

    Nie wiem o co ci chodzi z tym wykombinowaniem...staram się sam to zrobić z waszą pomocą ale każdy ma inna rade, ale staram się poskładać coś z tego. Pytam żeby zrozumieć , dlaczego myślisz że źle zrozumiałem coś jeszcze jest źle na schemacie? Jeśli tak to wprowadz choćby w Paincie odpowiednia zmiany, na pewno będę wdzięczny :).

    piotr5000 napisał:
    Kondensator C3 oddziela składową stałą . Sposób zasilania wzmacniacza nie ma znaczenia
    ...
    Jeżeli ma to służyć tylko sterowaniu LEDami ( wrażenia optyczne )


    Dokładnie do takiego celu ma to służyć. Nie musi być super dokładne, a ja chcę mierzyć tylko orientacyjny poziom dźwięku. Ponieważ nigdy nie robiłem takiego pomiaru stąd moje wątpliwości i ten post.

    To musi być zasilanie symetryczne czy nie? A może dać tam LM358 zamiast TL074?
  • Poziom 38  
    "A może dać tam LM358 zamiast TL074?"
    Tak
    "pobierać napięcie 10 razy w ciągu sekundy? "
    Tak
    Albo co 1/2 sekundy-sprawdź.
    "Owszem zamierzam zrobić to w Bascomie"
    Tak
  • Poziom 28  
    Witam,
    dziś walczę ostro z tym układem i mam pytanie? Czy ten prostownik aktywny ma prawo działać przy napięciu pojedynczym?

    Teraz układ pracuje tak jak w schemacie poniżej:
    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?

    Zasilam go napięciem +/-12V (ujemne z ICL7660).

    Przebiegi (ŻÓŁTY-MIC IN, CZERWONY-WZMOCNIENIE)
    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?

    Przebiegi przedstawiają sytuację kiedy z bardzo bliskiej odległości dmucham w mikrofon. Z takiej odległości to wydaje mi się, że przebieg w punkcie MIC IN powinien mieć większą amplitudę przy zasilaniu 12V.I w ogóle czułość jest dosyć słaba bo mikrofon wyłapuje dźwięki np dzwięk klaśnięcia z odległości max 1metra.
    Przebieg czerwony jest ograniczony od góry do 5V ale nie wiem dlaczego.. Jakieś pomysły?
  • Poziom 28  
    Witam w pracowite niedzielne popołudnie. Wszystko wskazuję, na to że udało mi się uzyskać to co oczekiwałem.

    Pomiar poziomu sygnału z mikrofonu elektretowego.AVR ADC?

    Aktualnie układ pracuje wg tego schematu i sprawuje się b. dobrze. Reaguje nawet na nie za głośną muzyczkę z pomieszczenia a podczas klaskania to super.

    Poprawa nastąpiła po zmianie zasilania mikrofonu i po dodaniu kondensatora C3, który poprawił dynamikę wzmocnienia dla słabszych dźwięków.

    Na wyjściu otrzymuję napięcia w zakresie do 5V (ograniczone zenerką 5V1 dla ochrony ADC). Układ zasilam napięciem +/- 9-12V ale coś mi się wydaję, że i pójdzie na zasilaniu +/-5V.

    Za wszelką pomoc dziękuje, na razie temat zostawiam otwarty, bo może ktoś zechce dodać konstruktywny komentarz.
    Pozdrawiam