- IC PT2258
- Kako deluje PT2258 IC
- Shema
- Potrebne komponente
- Koda Arduino
- Testiranje vezja za nadzor glasnosti digitalnega zvoka
- Nadaljnje izboljšanje
Potenciometer je mehanska naprava, s katero lahko nastavimo upor glede na želeno vrednost in tako spremenimo tok, ki teče skozi njega. Obstaja veliko aplikacij za potenciometer, večinoma pa se potenciometer uporablja kot regulator glasnosti za avdio ojačevalnike.
Potenciometer ne nadzoruje ojačanja signala, toda tvori delilnik napetosti in zato se vhodni signal oslabi. V tem projektu vam bom pokazal, kako zgraditi digitalni regulator glasnosti z IC PT2258 in ga povezati z Arduinom za nadzor glasnosti ojačevalnega vezja. Tu lahko preverite tudi različna zvočna vezja, vključno z merilnikom VU, tonom krmiljenja itd.
IC PT2258
Kot sem že omenil, je PT2258 IC, ki je zasnovan za uporabo kot 6 -kanalni elektronski regulator glasnosti, ta IC uporablja tehnologijo CMOS, posebej zasnovano za večkanalne avdio-video aplikacije.
Ta IC nudi nadzorni vmesnik I2C z obsegom dušenja od 0 do -79dB pri 1dB / korak in je na voljo v 20-polnem DIP ali SOP paketu.
Nekatere osnovne funkcije vključujejo,
- 6-vhodni in izhodni kanali (za 5.1 domače avdio sisteme)
- Izbirni naslov I2C (za uporabo Daisy-chain)
- Ločevanje visokih kanalov (za uporabo z nizko stopnjo hrupa)
- Razmerje S / N> 100dB
- Delovna napetost je od 5 do 9V
Kako deluje PT2258 IC
Ta IC prenaša in sprejema podatke od mikrokrmilnika prek SCL in SDA vodov. SDA in SCL sestavljata vmesnik vodila. Za zagotovitev stabilnega delovanja morata te črte visoko potegniti dva 4.7K upora.
Preden gremo na dejansko delovanje strojne opreme, je tu podroben funkcionalni opis IC. če ne želite vedeti vsega tega, lahko ta del preskočite, ker ves funkcionalni del upravlja knjižnica Arduino.
Preverjanje podatkov
- Podatki na liniji SDA veljajo za stabilne, če je signal SCL VISOK.
- Stanje HIGH in LOW vrstice SDA se spreminja samo, kadar je SCL LOW.
Pogoj za zagon in zaustavitev
Pogoj zagona se aktivira, ko
- SCL je nastavljen na HIGH in
- SDA preide iz VISOKEGA v NIZKO stanje.
Stop Condition se aktivira, ko
- SCL je nastavljen na HIGH in
- SDA preide iz NIZKEGA v VISOKO stanje
Opomba! Te informacije so zelo koristne za razhroščevanje signalov.
Oblika podatkov
Vsak bajt, poslan v SDA Line, je sestavljen iz 8 bitov, ki tvorijo bajt. Vsakemu bajtu mora slediti potrditveni bit.
Zahvala
Potrditev zagotavlja stabilno in pravilno delovanje. Med potrditvijo takta potrditve mikrokrmilnik v tem trenutku povleče zatič SDA VISOKO, ko zunanja naprava (avdio procesor) povleče (NIZKO) črto SDA.
Zdaj je naslovljena zunanja naprava (PT2258), ki mora po prejemu bajta ustvariti potrditev, sicer bo linija SDA med devetim (9.) impulzom ure ostala na visoki ravni. V tem primeru bo glavni oddajnik ustvaril informacije STOP, da bo prekinil prenos.
To odpravlja potrebo po veljavnem prenosu podatkov.
Izbira naslova
Naslov I2C tega IC je odvisen od stanja CODE1 (Pin No.17) in CODE2 (Pin No.4).
KODA1 (PIN št. 17) |
KODA2 (PIN št. 4) |
ŠESTAKTNI NASLOV |
0 |
0 |
0X80 |
0 |
1. |
0X84 |
1. |
0 |
0X88 |
1. |
1. |
0X8C |
Logic High = 1
Logika nizka = 0
Vmesniški protokol
Vmesniški protokol je sestavljen iz naslednjega:
- Začetni bit
- Bajt naslova čipa
- ACK = Potrditveni bit
- Bajt podatkov
- Stop bit
Malo gospodinjstva
Ko je IC vklopljen, mora počakati vsaj 200 ms, preden pošlje prvi podatkovni bit, sicer prenos podatkov morda ne bo uspel.
Po zakasnitvi najprej očistite register tako, da v vrstico I2C pošljete »0XC0« vi, kar zagotavlja pravilno delovanje.
Zgornji korak izbriše celoten register, zdaj moramo v register nastaviti vrednost, sicer pa register shrani vrednost smeti in dobimo pegasti izhod.
Da bi zagotovili ustrezne nastavitve glasnosti, je treba dušilniku zaporedno poslati večkratnik 10dB, ki mu sledi koda 1dB, sicer se lahko IC vede nenormalno. Spodnji diagram to bolj pojasnjuje.
Oba zgornja načina bosta delovala pravilno.
Za pravilno delovanje poskrbite, da hitrost prenosa podatkov I2C nikoli ne preseže 100KHz.
Tako lahko na IC prenesete bajt in oslabite vhodni signal. Zgornji odsek je namenjen temu, kako deluje IC, toda kot sem že omenil, bomo za komunikacijo z IC, ki upravlja vso trdo kodo, uporabili knjižnico Arduino in le nekaj klicev funkcij moramo opraviti.
Vse zgoraj navedene informacije so vzete iz podatkovnega lista, za nadaljnje informacije ga preberite.
Shema
Zgornja slika prikazuje testno shemo vezja za nadzor glasnosti, ki temelji na PT2258. Vzet je iz podatkovnega lista in spremenjen glede na potrebe.
Za predstavitev je vezje zgrajeno na brez spajke s pomočjo zgoraj prikazane sheme.
Opomba! Vse komponente so nameščene čim bližje, da se zmanjša induktivnost in upor parazitske kapacitivnosti.
Potrebne komponente
- PT2258 IC - 1
- Arduino Nano krmilnik - 1
- Splošna tabela - 1
- Vijačni priključek 5 mm x 3 - 1
- Gumb - 1
- 4.7K upor, 5% - 2
- 150K upor, 5% - 4
- 10k upor, 5% - 2
- Kondenzator 10uF - 6
- Kondenzator 0,1uF - 1
- Jumper žice - 10
Koda Arduino
Za poenostavitev bom uporabil knjižnico PT2258 podjetja GitHub, ki jo izdeluje sunrutcon.
To je zelo dobro napisana knjižnica, zato sem se odločil, da jo bom uporabil, ker pa je zelo stara, je malo napak in jo moramo popraviti, preden jo lahko uporabimo.
Najprej prenesite in izvlecite knjižnico iz skladišča GitHub.
Zgornji dve datoteki boste dobili po ekstrakciji.
#include #include
Nato odprite datoteko PT2258.cpp z vašim najljubšim urejevalnikom besedil, jaz uporabljam Notepad ++.
Vidite, da je "w" v žični knjižnici z malimi črkami, kar je nezdružljivo z najnovejšimi različicami Arduina, in ga morate nadomestiti s pokrovom "W", to je to.
Popolno kodo za regulator glasnosti PT2258 najdete na koncu tega razdelka. Tu so razloženi pomembni deli programa.
Kodo začnemo z vključitvijo vseh potrebnih datotek knjižnic. Knjižnica Wire se uporablja za komunikacijo med Arduino in PT2258. Knjižnica PT2258 vsebuje vse ključne informacije o času in potrditvah I2C. EzButton knjižnica se uporablja za vmesnik z tipkami.
Namesto da uporabite spodnje slike kode, kopirajte vse primerke kode iz kodne datoteke in jih formatirajte, kot smo to počeli v drugih projektih
#include
Nato izdelajte predmete za dva gumba in samo knjižnico PT2258.
PT2258 pt2258; gumb ezButton_1 (2); gumb ezButton_2 (4);
Nato določite glasnost. To je privzeta raven glasnosti, s katero se bo ta IC začel.
Int obseg = 40;
Nato sprožite UART in nastavite frekvenco ure za vodilo I2C.
Serial.begin (9600); Wire.setClock (100000);
Zelo pomembno je, da nastavite uro I2C, sicer IC ne bo deloval, ker je največja taktna frekvenca, ki jo podpira ta IC, 100KHz.
Nato naredimo malo gospodinjstva z izjavo if else , da zagotovimo, da IC pravilno komunicira z vodilom I2C.
Če (! Pt2258.init ()) Serial.printIn (»PT2258 je bil uspešno zagnan«); Else Serial.printIn (“Ni uspelo zagnati PT2258”);
Nato nastavimo zakasnitev izklopa tipk.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Na koncu zaženite PT2258 IC, tako da ga nastavite s privzeto glasnostjo kanala in številko PIN.
/ * Zagon PT s privzeto glasnostjo in Pin * / Pt2258.setChannelVolume (glasnost, 4); Pt2258.setChannelVolume (zvezek, 5);
S tem se konča razdelek Void Setup () .
V razdelku Loop moramo poklicati funkcijo zanke iz razreda button; to je knjižnična norma.
Button_1.loop (); // Knjižnične norme Button_2.loop (); // Knjižnične norme
Spodaj, če želite zmanjšati glasnost.
/ * če je pritisnjen gumb 1, če je pogoj resničen * / Če (button_1.ispressed ()) {zvezek ++; // Povečanje števca glasnosti. // To če stavek zagotavlja, da glasnost ne presega 79 If (glasnost> = 79) {Volume = 79; } Serial.print (“obseg:“); // tiskanje ravni glasnosti Serial.printIn (glasnost); / * nastavite glasnost za kanal 4, ki je v PIN 9 PT2558 IC * / Pt2558.setChannelVolume (glasnost, 4); / * nastavite glasnost za kanal 5, ki je PIN 10 PT2558 IC * / Pt2558.setChannelVolume (glasnost, 5); }
Spodnji razdelek, če želite povečati glasnost.
// Enako se zgodi pri gumbu 2 If (button_2.isPress ()) {Volume--; // to, če stavek zagotavlja, da raven glasnosti ne pade pod ničlo. Če (glasnost <= 0) Glasnost = 0; Serial.print (“obseg:“); Serial.printIn (glasnost); Pt2258.setChannelVolume (zvezek, 4); Pt2558.setChannelVolume (zvezek, 5); }
Testiranje vezja za nadzor glasnosti digitalnega zvoka
Za testiranje vezja je bila uporabljena naslednja naprava
- Transformator s pipo 13-0-13
- 2 4Ω 20W zvočnik kot obremenitev.
- Zvočni vir (telefon)
V prejšnjem članku sem vam pokazal, kako narediti enostaven avdio ojačevalnik 2x32 W z IC TDA2050, to bom uporabil tudi za to predstavitev.
Zmotil sem mehanski potenciometer in z dvema majhnima mostičnima kabloma zaskočil dva kabla.
Zdaj lahko s pomočjo dveh tipk nastavite glasnost ojačevalnika.
Nadaljnje izboljšanje
Vezje je mogoče dodatno spremeniti, da se izboljša njegova zmogljivost. Izboljšave, kot je vezje, je mogoče narediti na tiskani plošči, da se še bolj odpravi šum, ki ga ustvarja digitalni del IC. Dodamo lahko tudi dodaten filter, da zavrnemo visokofrekvenčne zvoke. Oglejte si tudi druga vezja ojačevalnika zvoka in druge projekte, povezane z zvokom.
Upam, da vam je bil ta članek všeč in ste se iz njega naučili kaj novega. Če dvomite, lahko vprašate v spodnjih komentarjih ali pa uporabite naše forume za podrobno razpravo.