TDA7313 Audio procesoriaus valdymas AVR mikrokontrolerio pagalba

Įvadas

Nors TDA7313 yra ganėtinai senstelėjusi mikroschema, tačiau vis dar sėkmingai naudojama. Audio procesorius pasižymi neblogu valdomų funkcijų rinkiniu, taip pat jai būdingi nedideli iškraipymai bei žemas triukšmo lygis. Audioprocesorius puikiai tinka automobilinėj garso aparatūroj, bei kitose HI-FI prietaisuose įskaitant ir mikšerius.

TDA7313 mikroschema turi programiniu būdu pasirenkamus 3 stereo įėjimus ir 4 išėjimus LF, LR, RF, RR. Kiekvieno įėjimo kanalo slopinimas gali būti reguliuojamas programiškai (įskaitant Loudness funkciją), atitinkamai kiekvieno išėjimo slopinimas taip pat gali būti paderinamas. Tokiu būdu galima suderinti sistema optimaliam skambėjimui. Čia taip pat numatytas garso lygio reguliavimas 1.25dB žingsniu, BASS ir Treble kontrolė. Visas audioprocesoriaus valdymas vyksta naudojant I2C (TWI) prievadą. AVR Atmega8 mikrokontroleris tam puikiai tinka.

board3.jpg

 

Aprašymas

Pagrindinė šio projekto mintis buvo sukonstruoti paprasta, universalų su intuityviu valdymo audioprocesorių, kurį daug negalvojant būtų galima jungti prie bet kokios sistemos – ar tai būtų stiprintuvas, ar tai būtų aktyvios kompiuterio kolonėlės ar mikšerinis pultas. Svarbu kad audio procesorius veikia kaip atskiras prietaisas kuris priima signalą, jį apdoroja ir siunčia toliau. Valdymas atliekamas 5 mygtukų pagalba, o valdymo informacija pateikiama 2X16LCD displėjuje.

Labiausiai norėjosi padaryti prieinama visą audio procesoriaus funkcionalumą paprastu ir intuityviu valdymu.

Schema ir PCB plokštė

Schema buvo pasirinkta tokia pati kaip ir TDA7313 aprašyme. Gal būt precizinių elementų elementų pasirinkimas ir įtakotų kokybę, tačiau į tai dėmesys nebuvo kreiptas.

Schema

 

Kuriant PCB didžiausias dėmesys buvo kreipiamas į Analoginio ir skaitmeninio signalo takelių bei analoginio ir skaitmeninio GND atskyrimą. Būtent šis faktorius daugiausiai įneša triukšmo į naudingą signalą.

gnds.jpg

Pati plokštė suprojektuota viename sluoksnyje. Todėl ją nesunku pagaminti namų sąlygomis.

pcb.png

Realus plokštės vaizdas

board1.jpg

 

Programos rašymas

Sunkesnė užduotis – programos rašymas. Pirmiausia buvo mintis LCD ekrane atvaizduoti decibelus skaitmeniškai, pvz, Volume -21dB. Tačiau galiausiai nusprendžiau panaudoti progress bar funkcija ir atvaizduoti parametro dydį grafiškai. Tai ne tik patraukliau atrodo, bet ir paprasčiau suprantama. Kaip minėjau pagrindinis tikslas visų galimų parametrų valdymas. Taigi parametrai ir jų ribos:

  • Garsas(Volume) [-78.75dB to 0dB] + Mute;

  • BASS [-14dB to 14dB];

  • Treble [-14dB to 14dB];

  • Įėjimai [Ch1, Ch2, Ch3];

  • Įėjimo lygis [0dB to +11.25dB] +Loudness;

  • LF išėjimo slopinimas [-38.75dB to 0dB];

  • RF išėjimo slopinimas [-38.75dB to 0dB];

  • LR išėjimo slopinimas [-38.75dB to 0dB];

  • RR išėjimo slopinimas [-38.75dB to 0dB];

Parametrų valdymui puikiai tinka linijinis meniu kai viršutinėje LCD eilutėje vaizduojamas parametro pavadinimas, o apatinėje parametro lygio indikatorius. Meniu modelis:

menu.jpg

 

Meniu valdymas atliekamas specialiai išdėstytais mygtukais:

panel.jpg

 

Apie patį valdymą nėra daug ką ir rašyti, nes manau pakankamai intuityvu. [UP] ir [DOWN] mygtukai skirti vaikščioti po meniu, o [+] ir [-] skirti esamo parametro keitimui. Jeigu parametro keitimo mygtukas laikomas nuspaustas ilgesnį laiką tai parametras tolygiai keičiasi automatiškai.

[Mute] mygtukas atlieka dvejopą funkciją. Jeigu aktyvus meniu yra Volume, tai nuspaudus [Mute], garsas yra išjungiamas ir meniu lieka neaktyvus kol Mute nėra išjungiamas pakartotinai paspaudus [Mute]. Kai aktyvus meniu yra Input gain, tai mute paspaudimas įjungia Loudness funkciją aktyviam įėjimo kanalui. Mute ir Loudness nustatymai matomi Volume meniu kaip MT ir LD indikatoriai.

Jeigu norite išbandyti meniu veikimą, tai galite parsisiųsti Proteus simuliatoriaus failą kartu su hex byla (Meniu simulatoriaus bylos). Hex byla turi būti užkraunama į modelį. (išbandyta su Proteus 7.1 SP2)

Audioprocesorius išsisaugo paskutines parametrų reikšmes EEPROM atmintyje praėjus apie 10s po paskutinio parametro keitimo. Todėl kas kart įjungus audioprocesorių, bus atsimenamos paskutiniai nustatymai.

Išvados

Kiek išbandžiau viskas veiki. Bandydamas adioprocesorių į įėjimą padaviau garsą iš MP3 grotuvo o išėjimą pajungiau prie aktyviu kompiuterio garsiakalbių. Maitinimą ėmiau iš kompiuterio maitinimo blogo, tad apie kokybę nelabai ka ir pasakysi. Jeigu jungsite garsiakalbius prie audioprocesoriaus išėjimo be tarpinių stiprintuvų – tai garso negirdėsit, nes išėjimas tiri būti jungiamas prie didelės įėjimo varžos prietaiso, pvz., stiprintuvo.

Programos kodas nėra optimalus, nenustebčiau jeigu ir kokia klaida išlįstų, tačiau pirmieji bandymai parodė, kad visų funkcijų valdymas veikia. Jeigu kas norės pasigaminti šį prietaisą -komentarai, klaidų pastebėjimai visada laukiami.

Projekto bylos(Eagle projektas+WinAVR projektas+TDA7313.hex).

Komentarų rodymo nustatymai

Pasirinkite patinkantį komentarų vaizdavimo būdą ir paspauskite "Išsaugoti nustatymus", kad pakeitimas įsigaliotų.

Gal gali mestelt programa ASCII formatu ?

Truputi nesupratau kodel reikia programos ASCII formatu. Yra Archyve C kodas, sukompiliuotas hex failas, kuris gali buti konveruojamas i .bin jeigu reikia.

Gal gali paaiškinti kaip reikia atskirti skaitmenini ir analogini GND?

Na keliais žodžiais čia labai nepaaiškinsiu. Aišku nesu specialistas tame reikale, bet vistiek yra bendri principai kurių laikantis galima žymiai išvengti triukšmo:
1. Stengtis atskirti analoginę žemę nuo skaitmeninės. Patogu kai yra daroma dvipusė plokštė. Šios žemės gali būti trapusavyje sujungtos mažos varžos rezistoriumi;
2. Stengtis kad skaitmeninio signalo takeliai nesikirstu su analoginiais. Analoginė dalis turi būti visiškai atskirta nuo skaitmeninės (atskiras regionas plokštėje). Paimk bet kokį mikrokontrolerį kad ir Atmega8 QFP korpuse ir pamatysit kaip graziai analoginiai išvadai yra viename kampe. Neatsitiktinai tiap.
3. Stengtis kad žemės būtų kuo solidesnės. Vėl gi esant daugiasluoksnei plokštei paprasta užduotis, o vienpusei sunkiau įgyvendinama. Tai aiškinama tuo, kad kuo žemės takeliai storesni, tuo mažesnis jų impedansas, tuo mažesnis elektromagnetinis spinduliavimas dėl įtampos kritimo.
4. Reikia stengtis kad analoginiai ir skaitmeniniai takeliai neitų lygiagrečiai plokštėje. Vien dėl to kad nepasigautų vienas nuo kito triukšmo.
5. Na ir paskutinė taisyklė būtų ta jog trasuojant plokštę reikia atidžiai kad nebūtų GND uždarų ciklų. Žemė turi šakotis tarsi medis iš vieno taško.
Šiame audioprocesoriuje stengiausi atskirti skaitmeninę ir analoginę dalį, kaip pavyko - patys matote Smiling

Neveikia LD laudnes. kai nuspaudi tai dingsta garsas. Ar programa pats rasei? kaip padaryti hex faila paciam?

gal zinai kokia schema kad mp3 info isvestu i LCD. Kad ir dainos laikas ir tekstas butu rodomas?

Programą pats rašiau, pas manes Laudness veikia kai testavau. Laudness nusistato toj meniu vietoj kur pasirenki Audio kanalą. Tada spaudant Mute mygtuką LD junginėjasi. Hex failas yra projekto archyve. O jei nori pats kompiliuoti, Ta reikia daryti su WinAVR programa.
......
Del MP3 info tai kaip suprantu nori nuo winamp nuskaityti. Tai pasieskok paprastos jungimo schemikes prie LPT (http://lcdsmartie.sourceforge.net/circuits.htm) ar net USB porto. O valdymas ten su LCD smartie (lcdsmartie.sourceforge.net) ar kita panašia programa vykdomas.

jo jo tai taip , spaudziu ten kur yra audio chanels, uzsidega LD bet izkarto uzsimutina. Na nzn klaida kur gali buti juk schema tai paprasta.
hm man yra noras padaryti sudetingiau, kad nuo nesiojamo grotuvo rodytu info. beje gal padetum su programavimu ? man reikia nemokamos programos kad pradziai paprastai issiaiskinti kaip sukompiliuoti. winavr ir avr studio bandziau bet kolkas nesupratau kur yra hex, kai pradedavau make all tai kazko neranda ir fsio Laughing out loud

Programa reikia kompiliuoti su WinAVR. Gal gali konkrečiau kokias klaidas ten meta. Ka tik išbandžiau perkompiliuoti - be klaidų. Jeigu šviežiai susiinstaliavai WinAVR taiperkrauk kompa, galil buti kad sisteminiai kintamieji nebuvo detektuoti. Jeigu vistiek neina, tai mestelk kokios klaidos ... žiūrėsim.

gaila dabar ne namie , o darbe, tai neturiu po ranka LCD , BET atsimenu kad gliukas toks buvo: kai nuspaudi LD uzsiziebia viskas gerai, bet garsas pradingsta ir tada kai eini per meniu tai rodo hieroglifus visokius ё?*?%%;"№"№!№!"Ё№. tada nuemu LD ir vel viskas gerai.
Siaip turiu du norus is taves : kad padetum pamodifikuoti programa biski, nes man pvz nereikia RR ir LR kaip juos panaikinti? gal galima padaryti tada tik viena punkta balance for LF ir RF. kitas noras ismokti programuoti paciam. Tik nenoriu cia tersti diskusijos ne i TEMA !! Smiling

Šitą audioprocą dariau norėdamas padengti visą jo funkcionalumą. Aišku specifiniams reikalams to yra per daug. Turėtų būti nesunku modifikuoti į paprastesnį variantą.
Tada siūlau persikelti i forumą ir ten gvildenti tą reikalą.
http://diskusijos.dreifas.net/viewtopic.php?t=178&start=105&postdays=0&p...

Skelbti naują komentarą

Šio laukelio turinys bus laikomas privatus ir nerodomas viešai.
CAPTCHA
Apsauga nuo spamo. Įveskite žemiau esantį kodą.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.