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.

Sygnał audio w mikrokontrolerach

singular 03 Paź 2018 17:55 246 15
  • #1 03 Paź 2018 17:55
    singular
    Poziom 4  

    Witam

    Z racji tego że nie za bardzo znam się na elektronice akustycznej chciałbym się dopytać. Mam pytanie dotyczące sygnału audio z DAC bądź sygnału PWM. Chcę obsłużyć głośniczek 0.5W - odtwarzać sygnał audio z mikrokontrolera EFM32. Jak powinienem postąpić w kwestii hardwarowej? Czy mogę podać na ten głośnik sygnał bezpośrednio z DAC/PWM?
    Czy prawdą jest, że jeśli podam bezpośrednio na głośnik sygnał to uzyskam moc maksymalnie 66mW? (Logika 3,3V, maksymalny prąd GPIO 20mA)
    Wynik 66mW raczej nie jest zadowalający

    Jeśli lepszą opcją byłoby wzmocnienie sygnału, w jaki sposób powinienem to zrealizować, dyskretnie czy też korzystając z jakiegoś scalaka?
    Przeglądałem kilka układów scalonych, np lm386. Układ ten ma minimalne wzmocnienie równe 20 i jest ono określone jako napięciowe. Do tej pory wydawało mi się że wzmocnienie charakteryzujące wzmacniacze akustycznie odnosi się do mocy. Nie zmienia to jednak faktu, iż jest to za dużo dla mojego głośniczka.

    Zasilacz układ mam możliwość z 3v3 lub 5v.

    0 15
  • Pomocny post
    #2 04 Paź 2018 03:21
    rb401
    Poziom 33  

    singular napisał:
    Przeglądałem kilka układów scalonych, np lm386. Układ ten ma minimalne wzmocnienie równe 20 i jest ono określone jako napięciowe.


    Ten LM386 jest rozsądnym wyborem dla 5V jeśli nie potrzebujesz dużej mocy, choć są też inne które by pasowały. Jeśli moc potrzebna rzędu kilku watów, to już bardziej wzmacniacze impulsowe np. PAM8403.
    LM386 pójdzie z 5V i jest dostępny też w postaci gotowych modułów.
    Wzmocnieniem się nie przejmuj bo jest za duże ale łatwo można obniżyć. Najlepiej jeśli na wejściu jest potencjometr, to można sobie doregulować dokładniej. Druga bardzo istotna sprawa w Twoim zastosowaniu, to konieczność odcięcia składowej stałej z DAC, kondensatorem. Bo "zero" DAC to połowa zakresu, czyli napięcie dodatnie ok. 1,66V.

    Chyba najpraktyczniej użyć gotowego modułu bo są na nim i potencjometr i prawdopodobnie też kondensator na sygnale wejściowym, przykładowo:

    Sygnał audio w mikrokontrolerach

    0
  • Pomocny post
    #3 04 Paź 2018 09:04
    _jta_
    Specjalista elektronik

    LM386 zasilany z 5V da moc wyjściową 125mW na głośniku 8R, może ze 180mW na 4R, to może być mało. TDA2822 da dużo (ze 2X) więcej - jest lepiej dostosowany do pracy przy niskim napięciu zasilania. A w układzie mostkowym powinien dać około 0.5W bez zniekształceń na głośniku 8R przy zasilaniu 5V.

    0
  • #4 04 Paź 2018 12:16
    singular
    Poziom 4  

    A czy jest jakiś standard określający poziomy napięć na wyjściu DAC'a? Mam obawy (raczej niepotrzebne) np o to czy wzmacniacz w pewnych momentach nie będzie się nasycał ze względu na poziom sygnału wejściowego wzmacniacza. Jakie są wartości maksymalne/minimalne amplitud? Nie wiem czy szukać tego w dokumentacji uC czy przeglądnąć ogólne standardy transmisji audio.

    0
  • Pomocny post
    #5 04 Paź 2018 13:49
    _jta_
    Specjalista elektronik

    Musi być w dokumentacji uC. Pytanie, której - do małego uC jest zwykle wiele obszernych dokumentów. ;)

    Jest pewnie dokument opisujący instrukcje procesora - to raczej nie ten. Pewnie w opisie programowania urządzeń peryferyjnych, albo w opisie parametrów elektrycznych.

    0
  • #6 04 Paź 2018 14:25
    singular
    Poziom 4  

    Dziękuję za pomoc :) Znalazłem PDF dotyczący DAC'a, który wydaje się być rozwiązaniem problemu. Określamy w rejestrze które napięcie chcemy określić jako referencyjne (1,25V, 2,5V lub VDD(3V3)). Schemat ideowy:

    Sygnał audio w mikrokontrolerach


    Kolejno wedle poniższego obrazka określamy Vout.
    Sygnał audio w mikrokontrolerach

    Źródło : Silabs.com

    0
  • #7 04 Paź 2018 14:41
    _jta_
    Specjalista elektronik

    Z tym, że i 1.25 Vpp (pik-pik) to przy wzmocnieniu 20 będzie za dużo - LM386 przy zasilaniu 5V da co najwyżej 3 Vpp, TDA2822 przy zasilaniu 5V da może 4 Vpp, więc trzeba albo użyć dzielnika, albo jakoś zmniejszyć wzmocnienie.

    0
  • #8 04 Paź 2018 15:27
    singular
    Poziom 4  

    Dla TDA2822 widzę, że wzmocnienie wynosi 39dB, powinienem zatem dodać dzielnik taki, abym na jego wyjściu miał napięcie rzędu maksymalnie 50 mV, zgadza się ? Czyli przy napięciu REF 1,25 Vpp dzielnik 24R i 1R. Uzyskać 5 Vpp na wyjściu nie uzyskamy z technicznych przyczyn.

    Tak trochę odbiegając, czy nie lepszym sposobem byłoby zastosowanie wzmacniacza prądowego zamiast całego wzmacniacza mocy audio?

    0
  • #9 04 Paź 2018 17:56
    _jta_
    Specjalista elektronik

    Wzmacniacze scalone na ogół są robione tak, że ich wzmocnienie zależy od zewnętrznego opornika, albo dzielnika; te akurat mają wbudowane elementy, które pozwalają uzyskać określone wzmocnienie bez stosowania tego opornika/dzielnika, ale przynajmniej do TDA2822 można dodać dzielnik (dla typowego schematu aplikacyjnego równolegle do głośnika dajesz dzielnik, do niego podłączasz kondensator od wejścia '-', albo prościej, dodajesz opornik szeregowo z tym kondensatorem).

    Pewien problem: tam są oporniki wbudowane w układ scalony, których oporność może zależeć od temperatury, i jeśli używasz dodatkowego opornika, to od temperatury zależy także wzmocnienie; ale ta zależność chyba nie jest duża, o ile pamiętam, TBA820 (może by się też nadawał, to jest mono) używa dzielnika z wewnętrznego opornika + zewnętrznego, i wzmocnienie zależy od podziału, a jakoś to nie przeszkadza - tylko dla TBA820 choć napisali, jak dobrać ten opornik...

    0
  • Pomocny post
    #10 04 Paź 2018 20:36
    jarek_lnx
    Poziom 43  

    singular napisał:
    Mam pytanie dotyczące sygnału audio z DAC...
    Sygnał z DAC-a podajesz na wzmacniacz jak napisano powyżej, DAC zazwyczaj daje rail-to-rail więc należy go stłumić dzielnikiem przed podaniem na wzmacniacz, należało by się spodziewać że jakiś współczesny w klasie D będzie miał niższe napięcie nasycenia niż bipolarne LM386 albo TDA2822, a więc lepiej wykorzysta dostępne zasilanie - odda więcej mocy przy "trudnym" niskim zasilaniu.

    PAM8304 zasilany z 5V może dostarczyć 2,4W do głośnika 4Ω, przy THD=1% i 3W przy THD=10% można stąd wyliczyć że w pierwszym przypadku daje 4,38V wartości szczytowej, a w drugim 4,90V - przy zasilaniu 5V nie będzie łatwo uzyskać więcej.

    TDA2822 na 4Ω w mostku, przy 6V i THD=1% da 0,9W a bez zwracania uwagi na zniekształcenia (THD=10%) osiągnie 1,4W, na 8Ω 1W dla THD=1%, widać że brakuje mu wydajności prądowej żeby wysterować 4Ω

    LM386 przy zasilaniu 6V wygeneruje na wyjściu 3Vpp przy 4Ω co daje nie całe 0,3W nie liczyłem pracy mostkowej bo LM386 ma jeden wzmacniacz w scalaku a TDA2822 dwa.

    Cytat:
    ... bądź sygnału PWM
    A PWM to możesz wzmocnić jakimś sterownikiem silników, albo driverem MOSFET-ów.

    0
  • #11 08 Paź 2018 17:37
    singular
    Poziom 4  

    Po rozmowie z znajomą mi osobą dowiedziałem się, że sygnał z DAC nie nadaję się za bardzo do odtwarzania dźwięku. Zasugerował on także wykorzystanie sygnału PWM do tego celu i zaprojektowanie prostego układu na tranzystorach dyskretnych. Czy sygnał Audio jako PWM ma sens?

    0
  • #12 08 Paź 2018 18:00
    jarek_lnx
    Poziom 43  

    singular napisał:
    o rozmowie z znajomą mi osobą dowiedziałem się, że sygnał z DAC nie nadaję się za bardzo do odtwarzania dźwięku.
    A to niby dlaczego?

    singular napisał:
    Zasugerował on także wykorzystanie sygnału PWM do tego celu i zaprojektowanie prostego układu na tranzystorach dyskretnych. Czy sygnał Audio jako PWM ma sens?
    Oczywiście łatwiej wzmacniać sygnał binarny, tak jak pisałem wystarczy driver do MOSFETów, albo silników, jednak jeśli ten PWM miał by zapewnić dobrą jakość dźwięku to już nie będzie tak łatwo.

    0
  • #13 08 Paź 2018 18:15
    singular
    Poziom 4  

    jarek_lnx napisał:
    A to niby dlaczego?


    Nie sprecyzowałem. Bardziej chodziło o statyczny charakter DAC w mikrokontrolerach.

    0
  • Pomocny post
    #14 08 Paź 2018 18:18
    jarek_lnx
    Poziom 43  

    singular napisał:
    Nie sprecyzowałem. Bardziej chodziło o statyczny charakter DAC w mikrokontrolerach.
    Nie widzę uzasadnienia dla takich twierdzeń. Prędzej powiedział bym że PWM-a trudno użyć do czegokolwiek co ma się szybko zmieniać, bo wymagania na filtr robią się trudne do spełnienia.

    0
  • #15 08 Paź 2018 23:13
    singular
    Poziom 4  

    A czy jest jakiś rozsądny, dostępny driver MOSFET na napięcie zasilania 5V z dead time'em? Przeglądnąłem TME, niestety nie mogę się doszukać, zazwyczaj drivery takie jak na przykład IR2111 są na wyższe napięcia.

    0
  • Pomocny post
    #16 09 Paź 2018 01:43
    rb401
    Poziom 33  

    singular napisał:
    Przeglądnąłem TME, niestety nie mogę się doszukać, zazwyczaj drivery takie jak na przykład IR2111 są na wyższe napięcia.


    Są na wyższe niż 5v bo po prostu w większości stosowanych mocowych mosfetów napięcia bramkowe są wymagane dużo większe niż te 5V. Tak że te na 5V to sprawa raczej niszowa.
    Jeśli się uprzeć, to z takich na 5V w TME są chyba jedynie IR2302 i IRS2302.

    Ale jeśli ten driver to ma być temat związany z meritum wątku (audio), to chciałbym ostrzec przed wejściem w ślepą uliczkę.

    Tu najpierw dołączę się do kolegi jarek_lnx, bo także odnoszę wrażenie że Twoje stwierdzenie o nieprzydatności DAC, wniknęło z jakiegoś nieporozumienia.
    DACe w EFM32 wyglądają na wystarczająco szybkie do generowania audio (500ksps max) i łatwe w oprogramowaniu. Choć opieram się na pobieżnym zerknięciu do dokumentacji, bo tych kostek nie używam.


    Zróbmy porównanie. Załóżmy że potrzeba próbkowania 44kHz (jakość CD) i rozdzielczości 12bitowej.

    Z użyciem DAC po prostu wpisuje się wartości chwilowe do rejestru DAC z tą prędkością i ok. Do regularnego wpisywania tych wartości z buforów można użyć metody DMA czy przerwań, z użyciem timera ale to już kwestie drugorzędne. Na wyjściu trzeba dodać tylko filtr antyaliasingowy i już w zasadzie jest sygnał jaki potrzeba.

    Przy metodzie PWM, by otrzymać porównywalną jakość sygnału jak w metodzie z DAC przy tych przykładowych założeniach, potrzeba timera napędzanego zegarem 44kHz * 4096 (wymagana rozdzielczość współczynnika wypełnienia PWM = 2^12, jak w/w DAC) czyli ok. 18Mhz. Dla EFM32 może jest to do osiągnięcia ale spójrzmy na dalsze szczegóły.
    Taka rozdzielczość czasowa sygnału wymaga od układu konwertującego PWM na napięcie (klucze) precyzji rzędu poniżej 50ns, a Ty chcesz użyć układu z dead timem aż 600ns, nie mówiąc o o samym opóźnieniu na kluczach itp. .
    Czyli jakość takiego PWM będzie tragiczna.
    Przykładowo, wartości bliskie krańcom amplitudy, gdzie szerokość impulsu z PWM będzie niższa lub równa tym 600ns, sygnały w ogóle nie będą przenoszone poprawnie. Popsuje się też liniowość i dokładność w całym zakresie, dlatego założenie 12bitowej rozdzielczości i próbkowania j/w, w takich warunkach, po prostu staje się nierealne, dopóki nie zejdzie się z czasami i precyzją przełączania kluczy itp. na wartości poniżej tych 50ms.
    Chyba że drastycznie obniżyć wymagania co do próbkowania i rozdzielczości.
    Ale z takimi parametrami, jak na porównywalny z DAC przetwornik PWM, to raczej żadne gotowe drivery do mosfetów mocy nie pracują, bo nie tego się od nich oczekuje.

    0