- IC PT2258
- Kaip veikia PT2258 IC
- Schema
- Būtini komponentai
- „Arduino“ kodas
- Skaitmeninio garso garsumo valdymo grandinės testavimas
- Tolesnis tobulinimas
Potenciometras yra mechaninis įtaisas, kurio pagalba galima nustatyti varžą pagal norimą vertę, taip pakeičiant per jį einančią srovę. Yra daugybė potenciometro programų, tačiau dažniausiai potenciometras naudojamas kaip garso stiprintuvų garso reguliatorius.
Potenciometras nekontroliuoja signalo stiprinimo, tačiau suformuoja įtampos daliklį, todėl įvesties signalas susilpnėja. Taigi šiame projekte aš jums parodysiu, kaip sukurti savo skaitmeninį garsumo valdiklį naudojant „IC PT2258“ ir susieti jį su „Arduino“, kad galėtumėte valdyti stiprintuvo grandinės garsumą. Čia taip pat galite patikrinti įvairias su garsu susijusias grandines, įskaitant VU skaitiklį, tono valdymo grandinę ir kt.
IC PT2258
Kaip jau minėjau anksčiau, „PT2258“ yra IC, sukurtas naudoti kaip 6 kanalų elektroninis garsumo valdiklis, šis IC naudoja CMOS technologiją, specialiai sukurtą daugiakanalėms garso ir vaizdo programoms.
Šis IC suteikia „I2C“ valdymo sąsają su slopinimo diapazonu nuo 0 iki -79 dB iki 1 dB / žingsnis ir yra 20 kontaktų DIP arba SOP pakuotėje.
Kai kurie pagrindai apima:
- 6 įvesties ir išvesties kanalai (5.1 namų garso sistemoms)
- Pasirenkamas I2C adresas („Daisy-chain Application“)
- Didelio kanalo atskyrimas (taikant nedidelį triukšmą)
- S / N santykis> 100dB
- Darbinė įtampa yra nuo 5 iki 9 V
Kaip veikia PT2258 IC
Šis IC perduoda ir priima duomenis iš mikrovaldiklio per SCL ir SDA linijas. SDA ir SCL sudaro magistralės sąsają. Kad būtų užtikrintas stabilus veikimas, šias linijas aukštai turi ištraukti du 4,7 K rezistoriai.
Prieš eidami į tikrąjį aparatūros veikimą, pateikiame išsamų IC funkcinį aprašymą. jei nenorite viso to žinoti, galite praleisti šią dalį, nes visą funkcinę dalį valdo „Arduino“ biblioteka.
Duomenų tikrinimas
- Duomenys apie SDA liniją laikomi stabiliais, kai SCL signalas yra AUKŠTAS.
- AUKŠTOS ir ŽEMOS SDA linijos būsenos keičiasi tik tada, kai SCL yra ŽEMAS.
„Start and Stop“ sąlyga
Pradėjimo sąlyga įjungiama, kai
- SCL nustatoma į HIGH ir
- SDA pereina iš HIGH į LOW State.
„Stop“ sąlyga įjungiama, kai
- SCL nustatyta kaip HIGH ir
- SDA pereina iš LOW į HIGH valstybę
Atkreipkite dėmesį! Ši informacija yra labai naudinga derinant signalus.
Duomenų formatas
Kiekvienas SDA linijai perduotas baitas susideda iš 8 bitų, kurie sudaro baitą. Po kiekvieno baito turi būti patvirtinimo bitas.
Pripažinimas
Patvirtinimas užtikrina stabilų ir tinkamą darbą. Per patvirtinimo laikrodžio impulsą mikrokontroleris ištraukia SDA kaištį HIGH būtent tuo momentu, kai periferinis įrenginys (garso procesorius) ištraukia (LOW) SDA liniją.
Periferinis įrenginys (PT2258) dabar yra adresuotas ir jis turi generuoti patvirtinimą, gavęs baitą, kitaip SDA linija išliks Aukšto lygio per devintąjį (9-ąjį) laikrodžio impulsą. Tokiu atveju pagrindinis siųstuvas sugeneruos STOP informaciją, kad nutrauktų perdavimą.
Tai pašalina poreikį būti tinkamam duomenų perdavimui.
Adreso pasirinkimas
Šios IC I2C adresas priklauso nuo CODE1 (kaištis Nr.17) ir CODE2 (kaištis Nr.4) būsenos.
KODAS1 (PIN Nr. 17) |
KODAS2 (PIN Nr. 4) |
HEX ADRESAS |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Aukšta logika = 1
Logika maža = 0
Sąsajos protokolas
Sąsajos protokolą sudaro šie elementai:
- Pradžios bitai
- Lusto adreso baitas
- ACK = patvirtinimo bitas
- Duomenų baitas
- „Stop bit“
Šiek tiek namų tvarkymo
Įjungus IC, prieš perduodant pirmąjį duomenų bitą reikia palaukti mažiausiai 200 ms, kitaip duomenų perdavimas gali nepavykti.
Po uždelsimo pirmiausia reikia išvalyti registrą, siunčiant „0XC0“ vi I2C liniją, tai užtikrina tinkamą veikimą.
Ankstesnis žingsnis išvalo visą registrą, dabar mes turime nustatyti registro vertę, kitaip registras saugo šiukšlių vertę ir gauname strazdanotą išvestį.
Norint užtikrinti tinkamą garso reguliavimą, būtina nusiųsti nuosekliai į slopintuvą 10dB kartotinį ir 1dB kodą, kitaip IC gali elgtis nenormaliai. Žemiau pateiktoje diagramoje tai paaiškinama labiau.
Abu minėti metodai veiks tinkamai.
Norėdami užtikrinti tinkamą veikimą, įsitikinkite, kad I2C duomenų perdavimo greitis niekada neviršija 100KHz.
Taip galite perduoti baitą į IC ir susilpninti įvesties signalą. Pirmiau pateiktame skyriuje norime sužinoti, kaip veikia IC, tačiau, kaip jau sakiau anksčiau, naudosime „Arduino“ biblioteką, kad galėtume bendrauti su IC, kuris valdo visą kietąjį kodą, ir mums tiesiog reikia skambinti kai kuriais funkcijomis.
Visa aukščiau pateikta informacija yra paimta iš duomenų lapo. Jei reikia daugiau informacijos, žr.
Schema
Aukščiau pateiktame paveikslėlyje parodyta PT2258 pagrįstos tūrio valdymo grandinės bandymo schema. Jis paimtas iš duomenų lapo ir modifikuotas pagal poreikį.
Demonstravimui grandinė sukonstruota ant be lydmetalio plokščių, naudojant aukščiau pateiktą schemą.
Atkreipkite dėmesį! Visi komponentai dedami kuo arčiau, kad sumažėtų parazitinės talpos induktyvumas ir atsparumas.
Būtini komponentai
- PT2258 IC - 1
- „Arduino Nano“ valdiklis - 1
- Bendra duonos lenta - 1
- Sraigtinis gnybtas 5 mm x 3 - 1
- Mygtukas - 1
- 4.7K rezistorius, 5% - 2
- 150K rezistorius, 5% - 4
- 10k rezistorius, 5% - 2
- 10uF kondensatorius - 6
- 0,1 uF kondensatorius - 1
- Šuolių laidai - 10
„Arduino“ kodas
Kad būtų paprasčiau, ketinu naudoti „GitHub“ PT2258 biblioteką, kurią gamina „sunrutcon“.
Tai labai gerai parašyta biblioteka, todėl nusprendžiau ja naudotis, tačiau kadangi ji yra labai sena, ji yra šiek tiek klaidinga ir turime ją pataisyti, kad galėtume ją naudoti.
Pirmiausia atsisiųskite ir ištraukite biblioteką iš „GitHub“ saugyklos.
Po ištraukimo gausite pirmiau nurodytus du failus.
# įtraukti # įtraukti
Tada atidarykite failą PT2258.cpp naudodami mėgstamą teksto rengyklę, aš naudoju „Notepad ++“.
Galite pamatyti, kad laidų bibliotekos „w“ yra mažomis raidėmis, o tai nesuderinama su naujausiomis „Arduino“ versijomis, ir jūs turite ją pakeisti dangteliais „W“, viskas.
Visą PT2258 garsumo valdiklio kodą galite rasti šio skyriaus pabaigoje. Čia paaiškinamos svarbios programos dalys.
Mes pradedame kodą įtraukdami visus reikalingus bibliotekų failus. „Wire“ biblioteka naudojama bendrauti tarp „Arduino“ ir „PT2258“. PT2258 bibliotekoje yra visa kritinė I2C laiko informacija ir patvirtinimai. „ EzButton“ biblioteka naudojama sąsajai su mygtukais.
Užuot naudoję žemiau esančius kodo vaizdus, nukopijuokite visus kodo egzempliorius iš kodo failo ir padarykite juos suformatuotus, kaip mes darėme kituose projektuose
# įtraukti
Tada sukurkite dviejų mygtukų objektus ir pačią PT2258 biblioteką.
PT2258 pt2258; ezButton mygtukas_1 (2); ezButton mygtukas_2 (4);
Tada nustatykite garso lygį. Tai yra numatytasis garsumo lygis, kurį pradės šis IC.
Vidutinis tūris = 40;
Tada pradėkite UART ir nustatykite I2C magistralės laikrodžio dažnį.
Serijos pradžia (9600); „Wire.setClock“ (100000);
Labai svarbu nustatyti „I2C“ laikrodį, kitaip IC neveiks, nes maksimalus šio IC palaikomas laikrodžio dažnis yra 100 kHz.
Toliau mes šiek tiek tvarkome tvarką su „ if else“ teiginiu, kad užtikrintume, jog IC tinkamai bendrauja su I2C magistrale.
If (! Pt2258.init ()) Serial.printIn („PT2258 sėkmingai inicijuota“); „Else Serial.printIn“ („Nepavyko inicijuoti PT2258“);
Tada nustatome mygtukų atšaukimo vėlavimą.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Galiausiai suaktyvinkite „PT2258 IC“ nustatydami numatytąjį kanalo garsumą ir PIN kodą.
/ * Inicijuojantis PT su numatytuoju garsumu ir PIN * / Pt2258.setChannelVolume (tūris, 4); Pt2258.setChannelVolume (5 tomas);
Tai žymi tuštumo sąrankos () skyriaus pabaigą.
Skyriuje „ Kilpa“ turime iškviesti ciklo funkciją iš mygtukų klasės; tai bibliotekos norma.
Button_1.loop (); // Bibliotekos normos Button_2.loop (); // Bibliotekos normos
Toliau pateikiama skiltis, jei norite sumažinti garsumą.
/ * jei paspaudžiamas mygtukas 1, jei sąlyga teisinga * / Jei (mygtukas_1.išspaudžiamas ()) {Tomas ++; // Garsumo skaitiklio didinimas. // Tai, jei teiginys užtikrina, kad tūris neviršija 79 If (tūris> = 79) {Volume = 79; } Serial.print („tūris:“); // garsumo lygio spausdinimas Serial.printIn (tūris); / * nustatykite 4 kanalo garsumą, kuris yra PT2558 IC 9 PIN / Pt2558.setChannelVolume (tūris, 4); / * nustatykite 5 kanalo garsumą, kuris yra PT2558 IC * / Pt2558.setChannelVolume (tūris, 5) PIN 10; }
Žemiau, jei skyriuje norima padidinti garsumą.
// Tas pats nutinka mygtukui 2 If (button_2.isPressed ()) {Volume--; // tai, jei teiginys užtikrina, kad garsumo lygis neviršytų nulio. If (tūris <= 0) tūris = 0; Serial.print („apimtis:“); Serial.printIn (apimtis); Pt2258.setChannelVolume (4 tomas); Pt2558.setChannelVolume (5 tomas); }
Skaitmeninio garso garsumo valdymo grandinės testavimas
Norėdami patikrinti grandinę, buvo naudojamas šis aparatas
- Transformatorius, turintis 13-0-13 čiaupą
- 2 4Ω 20W garsiakalbis kaip apkrova.
- Garso šaltinis (telefonas)
Ankstesniame straipsnyje aš jums parodžiau, kaip pagaminti paprastą 2x32 vatų garso stiprintuvą su TDA2050 IC, aš tai naudosiu ir šiai demonstracijai.
Aš sutvarkiau mechaninį potenciometrą ir sutrumpinau du laidus dviem mažais trumpikliais.
Dabar, naudojant du mygtukus, galima valdyti stiprintuvo garsumą.
Tolesnis tobulinimas
Grandinę galima toliau modifikuoti, siekiant pagerinti jos veikimą. Tokie patobulinimai, kaip grandinė, gali būti daromi PCB, siekiant dar labiau pašalinti triukšmą, kurį sukelia skaitmeninis IC skyrius. Mes taip pat galime pridėti papildomą filtrą, kad atmestume aukšto dažnio garsus. Taip pat patikrinkite kitas garso stiprintuvo grandines ir kitus su garsu susijusius projektus.
Tikiuosi, kad šis straipsnis jums patiko ir iš jo sužinojote kažką naujo. Jei turite kokių nors abejonių, galite paklausti žemiau pateiktų komentarų arba pasinaudoti mūsų forumais išsamiai diskusijai.