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.

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

FastProject 30 Maj 2009 17:08 13130 35
  • #1 30 Maj 2009 17:08
    FastProject
    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?

    0 29
  • #2 30 Maj 2009 18:59
    janbernat
    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ą?

    0
  • #3 30 Maj 2009 20:38
    FastProject
    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.

    0
  • #4 30 Maj 2009 20:48
    janbernat
    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.

    0
  • #5 30 Maj 2009 20:58
    FastProject
    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?

    0
  • #6 30 Maj 2009 21:33
    janbernat
    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.

    0
  • #7 30 Maj 2009 22:06
    FastProject
    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?

    0
  • #8 30 Maj 2009 22:33
    janbernat
    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ć.

    0
  • #9 30 Maj 2009 22:41
    FastProject
    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

    0
  • #10 01 Cze 2009 21:41
    FastProject
    Poziom 28  

    Hmm...chyba nikt nie ma innego pomysłu...czyżby zdany byłbym tylko na siebie?

    0
  • #11 02 Cze 2009 21:43
    FastProject
    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ć.

    0
  • #12 02 Cze 2009 21:53
    janbernat
    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.

    0
  • #13 02 Cze 2009 22:01
    FastProject
    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?

    0
  • #14 02 Cze 2009 22:35
    janbernat
    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.

    0
  • #15 03 Cze 2009 10:15
    kedzi1
    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.

    0
  • #16 03 Cze 2009 10:28
    FastProject
    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.

    0
  • #17 03 Cze 2009 12:28
    kedzi1
    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. :)

    0
  • #18 03 Cze 2009 20:55
    janbernat
    Poziom 38  

    "Ogólny poziom dźwięku"-to będzie wrażliwość ucha na częstotliwość.
    Chyba charakterystyka psofometryczna byłaby wskazana.

    0
  • #19 03 Cze 2009 21:05
    FastProject
    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 ;)

    0
  • #20 03 Cze 2009 21:51
    janbernat
    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ś?

    0
  • #21 03 Cze 2009 21:54
    FastProject
    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.

    0
  • #22 03 Cze 2009 22:16
    janbernat
    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

    0
  • #23 04 Cze 2009 08:49
    kedzi1
    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.

    0
  • #24 04 Cze 2009 17:02
    FastProject
    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ę?

    0
  • #25 04 Cze 2009 21:49
    janbernat
    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ś.

    0
  • #26 04 Cze 2009 22:08
    piotr5000
    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ć

    0
  • #27 04 Cze 2009 23:33
    FastProject
    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?

    0
  • #28 05 Cze 2009 00:13
    janbernat
    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

    0
  • #29 06 Cze 2009 22:34
    FastProject
    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?

    0
  • #30 07 Cze 2009 12:54
    FastProject
    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

    0