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

Kodowanie sygnału audio z użyciem AVR z przetwornikami A/C i C/A - jak to zrobić?

DarekMich 09 Kwi 2006 22:09 4235 23
REKLAMA
  • #1 2510978
    DarekMich
    Poziom 15  
    Posty: 323
    Pomógł: 4
    Ocena: 44
    Witam wszystkich serdecznie.
    Tym razem zastanawia mnie fakt, czy da się zakodować np sygnał audio za pomocą procesora, który posiada przetwornik A/C oraz C/A. Otóż sygnał byłby podawany na jedno z wejść A/C, za pomocą programu odpowiednio byłby modyfikowany, a potem wysyłany na wyjście C/A. Można by zrobić odwrotny manewr na innej parze wejścia-wyjścia? Jak do tej pory programuję (a raczej zbieram odpowiednią wiedzę) procesorki '51, a te nie posiadają jako takich wbudowanych przetworników.
    Będę bardzo wdzięczny za odpowiedź. Pozdrawiam.
  • REKLAMA
  • #2 2511157
    Anderian
    Poziom 18  
    Posty: 406
    Pomógł: 9
    Ocena: 3
    AVR'y też nie mają przetworników C/A.
  • #3 2511182
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Co rozumiesz dokładniej przez kodowanie? Jeśli chodzi o samo przechowywanie dźwięku bez żadnej kompresji to nie będzie problemu. Niestety nie osiągniesz dużej jakości na wew. przetworniku AC (do 10-bit, max częstotliwość próbkowania np. dla atmega8 to ok 20kHz). Przetworników CA powinieneś raczej poszukać w ARMach lub procesorach sygnałowych. Lepiej jak byś na początek wykorzystał np. drabinkę R/2R czy jakiś zewnętrzny przetwornik CA.
    Poszukaj też noty na stronie Atmela: digital sound recorder
  • #4 2513750
    DarekMich
    Poziom 15  
    Posty: 323
    Pomógł: 4
    Ocena: 44
    nie zalerzy mi na zadnej kompresji sygnal ma poprostu przechodzic przez ow scalak, gdzi ebedzie odpowiednio obrabiany, ma to sluzyc do zakodowania dzwieku w juz gotowym nadajniku TV, przy odbiorniku bylby "dekoder", pasmo nie jest az tak bardzo wazne
  • REKLAMA
  • #5 2514438
    Zaquadnik
    Poziom 27  
    Posty: 998
    Pomógł: 103
    Ocena: 25
    Hmmm... a czy nie lepiej użyć do tego DSP ? Ostatnio na Allegro widziałem procki ADSP-2101 za 5 zł ;) Do takich celów wystarczą w zupełności, bo, jak kolega Prymulka określił, za niską będziesz miał częstotliwość próbkowania i obetniesz wszystkie tony o częstotliwości powyżej 10 kHz (tw. Nyquista o próbkowaniu).
    Pozdrawiam
  • #6 2514825
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Jako CA w AVR-ch można z powodzeniem zastosować jego PWM
  • Pomocny post
    #7 2517519
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    A moze by wykorzystac to rozwiazanie: http://www.romanblack.com/picsound.htm

    Jest to bardzo ciekawy pomysl, w porownaniu z np drabinka r2r pozwala zaoszczedzic duzo pinow, do tego wg. zapewnien autora mozna osciagnac dobra jakosc oraz ze wzgledu na prostote algorytmu przetwarzajacego, dokonywac obrobki w czasie rzeczywistym.

    Jesli ktos probowal zrealizowac ten uklad, lub ma ochote sie za to zabrac to zachecam do wymiany informacji
  • #8 2517814
    DarekMich
    Poziom 15  
    Posty: 323
    Pomógł: 4
    Ocena: 44
    Rozwiazanie wydaje sie byc baardzo ciekawe, i dosyc proste, czestotliwos chyba zalezy od pojemnosci i rezystancji? mowisz, ze jak by ktos chcial sie zajac czyms taki to ze zapraszasz do wymiany informacji, robiles juz taki uklad, jak ma sie modulacja(sygnal na wyjsciu) w stosunku do drugiego, juz nie mowie o znieksztalceniach, ale efekt w praktyce?
  • #9 2518021
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    Sposob obliczenia pojemnosci i rezystancji w zaleznosci od czestotliwosci probkowania oraz systemu kodowania (btc2,4,8 itd) jest podany na stronce.
    Ja wlasnie probuje dojsc do ladu z tym ukladem w praktyce. Niestety dzisiaj nie udalo mi sie zadowalajacej jakosci uzyskac, natomiast znalazlem strone na ktorej autor zamiescil pliki z dzwiekiem ktory otrzymal.
    Oto ona: http://members.home.nl/b.vandam/lonely/pagina47.html

    Do tego zamiescil informacje o tym ze ten filtr RC tak naprawde nie dziala i podlaczenie glosnika prosto do pinu procesora da identyczny efekt. Jutro zamierzam sprawdzic jak to bedzie wygladac u mnie.
  • #10 2518287
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Cytat:
    Do tego zamiescil informacje o tym ze ten filtr RC tak naprawde nie dziala i podlaczenie glosnika prosto do pinu procesora da identyczny efekt.


    A to niby jakim cudem?
  • #11 2518367
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    Pisal o zle policzonej stalej czasowej, narazie tego nie analizowalem i robilem zgodnie z obliczeniami oryginalnymi.
  • REKLAMA
  • #12 2521291
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    A tak zbaczając trochę z tematu ostatnio często widzę na ulotkach z marketów, że w radiach samochodowych jest zastosowany 1-bitowy przetwornik DAC. Czy wiecie co to za wynalazek? Może cos w stylu tego powyzej?
  • #13 2521364
    KaW
    Poziom 34  
    Posty: 2616
    Pomógł: 170
    Ocena: 306
    w stylu tego co powyzej

    Dodano po 5 [minuty]:

    dobre przetwarzanie wymaga :
    -okreslenia pasma
    -wyboru czestotliwosci probkowania /rownej na ogol 2xf-gorna pasma/
    -sposobu dokonywania przetwarzania -jesli rejetrowac zmiany sygnalu
    -amplitudowo w okresie czasu - to bedzie patent z tym jednym bitem-/rosnie ,rosnie -maleje rosnie itd itp/-co odpowiada tez prostej demodulacji takiego sygnalu /detale RC/.
    jEST TO OPIS b. pobiezny ,...
  • #14 2521586
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    No Comprende napisał:
    znalazlem strone na ktorej autor zamiescil pliki z dzwiekiem ktory otrzymal.
    Oto ona: http://members.home.nl/b.vandam/lonely/pagina47.html


    No jak na moje to całe BTc8 to wielkie nieporozumienie. Chciałbym usłyszeć jak to chodzi na mniejszej stałej czasowej bo te pliki co sąna tej stronie nie zachęcają do zabawy z tym układem.
  • #15 2522119
    greg_matrix
    Poziom 17  
    Posty: 163
    Pomógł: 28
    Ocena: 3
    Żeby uzyskać dobry efekt (szerokie pasmo, obróbka w czasie rzeczywistym) najlepiej by było użyć odpowiednio szybkiego przetwornika ADC na wejściu no i DAC na wyjściu. DAC w mikrokontrolerach AVR i tak nie ma a przetwornik ADC też lepiej zewnętrzny, bo te wbudowane są jak już wpomniano dosyć wolne. No a poza tym przy takim podejściu mikrokontroler ma więcej czasu na "zajmowanie się swoimi sprawami"- jeśli użyjemy przetworników szeregowych to można osiągnąć naprawdę bardzo dobre rezultaty.
    Analog Devices robi mnóstwo dobrych przetworników- można dostać próbki za darmo, więc jeśli to ma być na użytek amatorski to akurat.
    Rózne ADC od nich: http://www.analog.com/IST/SelectionTable/?selection_table_id=201
    Do wyboru, do koloru :-)
  • #16 2524957
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    Sprawdzilem oboma sposobami obliczania elementow RC, dzwiek dla czestotliwosci 9, 15 i 44kHz i wyglada na to ze bez wzgledu na wartosci R i C jakosc jest bardzo podobna (ciezko tu mowic wogole o "jakosci" ;p ), a odlaczenie filtru RC nie powoduje wiekszych zmian.
    Zastanawiam sie jak w takim razie wogole to dziala, czy budowa portu i jakies jego pojemnosci moga dawac taki efekt?

    Druga sprawa, odnioslem wrazenie ze paradoksalnie dla fs=9k dzwiek byl nieco lepszy niz dla 15k. Dla 44k ciezko bylo okreslic bo program encoder przerabia pliki tylko do 60kb, wiec mozliwe ze czas trwania dzwieku byl zbyt krotki i dlatego nic sie nie dalo zrozumiec.

    Prosze o jakies propozycje jak mozna by wyeliminowac znieksztalcenia ? Dac jakis filtr na wyjsciu dodatkowy?
    TEraz RC mam podlaczony bezposrednio pod pin wyjsciowy, a dalej jest wtornik napiecia na lm358.

    Cytat:
    No jak na moje to całe BTc8 to wielkie nieporozumienie. Chciałbym usłyszeć jak to chodzi na mniejszej stałej czasowej bo te pliki co sąna tej stronie nie zachęcają do zabawy z tym układem


    Bede wdzieczny jesli zechcialby kolega sprecyzowac. Mnie bardzo zainteresowala ta metoda rowniez ze wzgledu na entuziazm autora wzgledem mozliwosci osiagniecia bardzo dobrej jakosci. Niestety jak narazie nabralem sporo watpliwosci. Prosze o wszystkie przemyslenia, ze tak powiem teoretyczne na temat tego rozwiazania.

    Np skad wziely sie te wspolczynniki we wzorze BTcx = wsp. x Tc bo ciezko mi to zrozumiec. No i czy metoda liczenia parametrow RC jest prawidlowa i czemu to nie dziala ;) ;d
  • #17 2525858
    Nawigator
    Poziom 33  
    Posty: 1923
    Pomógł: 167
    Ocena: 159
    A może coś u źródła?:
    http://www.atmel.com/dyn/products/app_notes.asp?family_id=607

    - AVR121: Enhancing ADC resolution by oversampling (14 pages, revision A, updated 09/05)
    This Application Note explains the method called "Oversampling and Decimation" and which conditions need to be fulfilled to make this method work properly to get achieve higher resolution without using an external ADC.
    - AVR131: Using the AVR’s High-speed PWM (8 pages, revision A, updated 09/03)
    This application note is an introduction to the use of the high-speed Pulse Width Modulator (PWM) available in some AVR microcontrollers. The assembly code example provided shows how to use the fast PWM in the ATtiny26. The ATtiny15 also features a high-speed PWM timer.
    - AVR335: Digital Sound Recorder with AVR and DataFlash (20 pages, revision C, updated 04/05)
    This Application Note describes how to record, store and play back sound using any AVR MCU with A/D converter, the AT45DB161 DataFlash memory and a few extra components
    - AVR336: ADPCM Decoder (20 pages, revision A, updated 11/04)
    This application note focuses on decoding the ADPCM signal, Adaptive Differential Pulse Code Modulation, and turning it to a signal suitable for loudspeakers.

    Fast PWM jest tez na nowych ATtiny45. Zegar wewn. 64MHz PLL pozwala na 8bitową rozdzielczość a szybki pwm na prosty filtr. Sinus wychodzi super, fonia nie wiem. Warto sprawdzić.
    Pozdr. N.
  • #18 2548286
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    Zastosowanie fast PWM daje calkiem przyzwoite efekty. Narazie uzywalem tylko tiny 13 ktory nie ma tego asynchronicznego licznika, z tiny 26 napewno bedzie lepiej. Szkoda tylko ze probki dzwieku zajmuja tyle miejsca w porownaniu z btc8.
  • #19 2548641
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Ja też osiągnąłem całkiem ciekawe efekty ale powiedzmy ze na pasmie telefonicznym :) nie pamiętam dokładnie ale cos kolo 4-6 kHz. Później już PWM mi się nie wyrabiał. Ja używałem megi8 i megi8535 a więc w sumie PWM ten sam
  • #20 2548737
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    No wlasnie myslalem ze bedzie dalo sie odtwarzac do wyzszych czestotliwosci. Skoro zegar wewnetrzny to 9.6Mhz (tiny 13) a czestotliwosc fast pwm to 9.6M/256 = 37500Hz. Jednak dla czestotliwosci probkowania od 6kHz w gore dzwiek jest bardzo rozciagniety w czasie przy odtwarzaniu. Jak to wyjasnic?
  • #21 2549808
    DarekMich
    Poziom 15  
    Posty: 323
    Pomógł: 4
    Ocena: 44
    przepraszam, ze tak sie wtrace w te dyspute, jestem poczatkujacym "programista" uP zaczalem wlasnie od '51, znam jak na razie tylko assamblera. zajmuje sie juz programowaniem na komputerach PC od jakis 8 lat (pascal, basic). postanowilem zrobic sobie aki koder/dekoder gdyz jest to uzadzenie dosyc przydatne, ale o co mi chodzi, :
    1. czy moglibyscie zamiescic probke tego co uzykaliscie, ewentualnie probke i plik wejsciowy
    2. co to takiego dokladnie ejst pwm

    bylbym bardzo wdzieczny
  • REKLAMA
  • #22 2550141
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Próbek nie zamieszczę bo dźwięk mam nagrany na pamięci w układzie.
    PWM (Pulse with modulation) jest to modulacja szerokości impulsu. Zmieniając wypełnienie prostokąta zmienia się amplitudę sygnału na wyjściu. Aby to z powodzeniem zastosować w odtwarzaniu dźwięku częstotliwość PWM musi być najlepiej conajmniej 4 razy większa od pasma sygnału. Na wyjściu umieszcza się filtr dolnoprzepustowy, który odfiltrowuje zakodowany w ten sposób dźwięk.
  • #23 2550174
    No Comprende
    Poziom 12  
    Posty: 93
    Pomógł: 4
    Ocena: 2
    Zerknij do materialow o ktorych wspomnial Nawigator. Nota 131 i 335. A jakies probki zamieszcze jak przetestuje dodatkowo tiny15 i 26. Ogolnie jesli chodzi o wrazenia z odsluchu to jesli potrzebujesz dzwieku do informowania np o stanie urzadzenia, jakis prostych komunikatow itd. czyli po prostu mowa bez zadnych fajerwerkow to pwm sie nadaje. Ale jesli szukasz czegos do grania muzyki to nie tedy droga.
  • #24 2557916
    Nawigator
    Poziom 33  
    Posty: 1923
    Pomógł: 167
    Ocena: 159
    Nowy mały procesorek tiny45 ma fast pwm z zegarem 32/64MHz wewn. PLL, polecam do testów fonii, ma też ADC więc można próbować nagrywać. Jest on jakby okrojonym tiny26 ale z wiekszą pamięcią 4k (ma byc też wersja 2k i 8k).
    Pozdr. N.

Podsumowanie tematu

✨ Dyskusja dotyczy możliwości kodowania sygnału audio za pomocą mikrokontrolera AVR wyposażonego w przetwornik analogowo-cyfrowy (ADC) oraz cyfrowo-analogowy (DAC). Podkreślono, że AVR nie posiada wbudowanego przetwornika DAC, jednak można wykorzystać modulację szerokości impulsu (PWM) jako substytut DAC, stosując filtr dolnoprzepustowy do wygładzenia sygnału wyjściowego. Wbudowany ADC w AVR ma ograniczoną rozdzielczość (do 10 bitów) i stosunkowo niską maksymalną częstotliwość próbkowania (np. około 20 kHz w ATmega8), co ogranicza jakość dźwięku. Zalecane jest stosowanie zewnętrznych przetworników DAC i ADC, np. od Analog Devices, dla uzyskania lepszej jakości i większej szybkości próbkowania. Alternatywnie sugerowano użycie procesorów DSP (np. ADSP-2101) do obróbki sygnału audio w czasie rzeczywistym. Omówiono także ciekawą metodę konwersji cyfrowo-analogowej opartą na układzie z drabinką R/2R i filtrze RC (opisany na stronie romanblack.com), która pozwala na oszczędność pinów i prostą obróbkę sygnału, choć w praktyce jakość dźwięku była ograniczona i wymagała dalszych eksperymentów z filtracją i parametrami elementów RC. Wskazano na dokumentację Atmela (aplikacje AVR121, AVR131, AVR335) jako źródło wiedzy o oversamplingu, PWM i nagrywaniu dźwięku z użyciem AVR. Wspomniano o modelach mikrokontrolerów AVR z szybkim PWM i ADC, takich jak ATtiny13, ATtiny26, ATtiny45, ATmega8 i ATmega8535, z uwagą na ich możliwości i ograniczenia w zastosowaniach audio.
Wygenerowane przez model językowy.
REKLAMA