- IC PT2258
- Kuinka PT2258 IC toimii
- Kaavio
- Tarvittavat komponentit
- Arduino-koodi
- Digitaalisen äänenvoimakkuuden säätöpiirin testaaminen
- Lisäparannus
Potentiometri on mekaaninen laite, jolla voidaan asettaa vastus halutun arvon mukaan muuttamalla siten sen läpi kulkevaa virtaa. Potentiometrille on olemassa monia sovelluksia, mutta enimmäkseen potentiometriä käytetään äänenvahvistimien äänenvoimakkuuden säätimenä.
Potentiometri ei ohjaa signaalin vahvistusta, mutta se muodostaa jännitteenjakajan ja siksi tulosignaali vaimenee. Joten tässä projektissa aion näyttää, kuinka rakennat digitaalisen äänenvoimakkuuden ohjaimen IC PT2258: lla ja liitän sen Arduinoon ohjaamaan vahvistinpiirin äänenvoimakkuutta. Voit myös tarkistaa täältä useita äänentoistoon liittyviä piirejä, kuten VU-mittari, äänensäätöpiiri jne.
IC PT2258
Kuten aiemmin mainitsin, PT2258 on mikropiiri, joka on tarkoitettu käytettäväksi 6 -kanavaisena elektronisena äänenvoimakkuuden säätimenä, tämä mikropiiri käyttää CMOS-tekniikkaa, joka on erityisesti suunniteltu monikanavaisille audio-video-sovelluksille.
Tämä IC tarjoaa I2C-ohjausliitännän, jonka vaimennusalue on 0 - -79 dB 1 dB: ssä / askel ja toimitetaan 20-napaisella DIP- tai SOP-paketilla.
Jotkut perusasiat sisältävät,
- 6-tulo- ja lähtökanavat (5.1-kotiäänentoistojärjestelmille)
- Valittavissa oleva I2C-osoite (Daisy-ketjusovellukselle)
- Korkean kanavan erotus (hiljaiseen käyttöön)
- S / N-suhde> 100dB
- Käyttöjännite on 5 - 9 V
Kuinka PT2258 IC toimii
Tämä IC lähettää ja vastaanottaa tietoja mikro-ohjaimelta SCL- ja SDA-linjojen kautta. SDA ja SCL muodostavat väylärajapinnan. Nämä linjat on vedettävä korkealle kahdella 4,7 K: n vastuksella vakaan toiminnan varmistamiseksi.
Ennen kuin siirrymme varsinaiseen laitteistokäyttöön, tässä on IC: n yksityiskohtainen toiminnallinen kuvaus. jos et halua tietää tätä, voit ohittaa tämän osan, koska kaikkia toiminnallisia osia hallinnoi Arduino-kirjasto.
Tietojen vahvistus
- SDA-linjan tietoja pidetään vakaina, kun SCL-signaali on KORKEA.
- SDA-linjan HIGH ja LOW-tilat muuttuvat vain, kun SCL on matala.
Käynnistä ja pysäytä
Käynnistystila aktivoituu, kun
- SCL on asetettu arvoon HIGH ja
- SDA siirtyy HIGH-tilasta LOW-tilaan.
Stop-tila aktivoituu, kun
- SCL on asetettu arvoon HIGH ja
- SDA siirtyy LOW-tilasta HIGH-tilaan
Merkintä! Nämä tiedot ovat erittäin hyödyllisiä signaalien virheenkorjauksessa.
Tietomuoto
Jokainen SDA-linjalle lähetetty tavu koostuu 8 bitistä, jotka muodostavat tavun. Jokaisen tavun on oltava kuittausbitti.
Tunnustus
Kuittaus varmistaa vakaan ja asianmukaisen toiminnan. Vastaanottokellopulssin aikana mikro-ohjain vetää SDA-nastan HIGH juuri tässä vaiheessa, kun oheislaite (audioprosessori) vetää alas (LOW) SDA-linjan.
Oheislaite (PT2258) on nyt osoitettu ja sen on luotava kuittaus tavun vastaanottamisen jälkeen, muuten SDA-linja pysyy korkealla yhdeksännen (yhdeksännen) kellopulssin aikana. Jos näin tapahtuu, päälähetin tuottaa STOP-tiedot siirron keskeyttämiseksi.
Tämä poistaa tarpeen olla voimassa voimassa olevan tiedonsiirron kannalta.
Osoitteen valinta
Tämän IC: n I2C-osoite riippuu CODE1: n (Pin No.17) ja CODE2 (Pin No.4) tilasta.
KOODI1 (PIN-nro 17) |
KOODI2 (PIN-nro 4) |
KUUSIOSOITE |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Looginen korkea = 1
Looginen matala = 0
Liitäntäprotokolla
Liitäntäprotokolla koostuu seuraavista:
- Aloitus bitti
- Sirun osoitetavu
- ACK = Kuittaa bitti
- Data-tavu
- Stop-bitti
Pieni taloudenhoito
Kun IC: n virta on kytketty, sen on odotettava vähintään 200 ms ennen ensimmäisen databitin lähettämistä, muuten tiedonsiirto voi epäonnistua.
Viiveen jälkeen ensimmäinen asia on poistaa rekisteri lähettämällä “0XC0” vi I2C-linja, mikä varmistaa moitteettoman toiminnan.
Yllä oleva vaihe tyhjentää koko rekisterin, nyt meidän on asetettava arvo rekisterille, muuten rekisteri tallentaa roska-arvon ja saamme pisarallisen lopputuloksen.
Oikeiden äänenvoimakkuuden säätöjen varmistamiseksi on tarpeen lähettää 10 dB: n ja 1 dB: n kerrannaiset vaimentimelle peräkkäin, muuten IC voi toimia epänormaalisti. Alla oleva kaavio selventää sitä enemmän.
Molemmat yllä mainitut menetelmät toimivat oikein.
Oikean toiminnan varmistamiseksi varmista, että I2C-tiedonsiirtonopeus ei koskaan ylitä 100KHz.
Näin voit lähettää tavun IC: lle ja vaimentaa tulosignaalia. Yllä olevasta osasta on opittava, kuinka IC toimii, mutta kuten aiemmin sanoin, aiomme käyttää Arduino-kirjastoa kommunikoidaksesi IC: n kanssa, joka hallinnoi kaikkia kovia koodeja, ja meidän on vain soitettava joitain toimintokutsuja.
Kaikki yllä olevat tiedot on otettu lomakkeesta, katso lisätietoja siitä.
Kaavio
Yllä oleva kuva esittää PT2258-pohjaisen äänenvoimakkuuden piirin testikaavion. Se on otettu lomakkeesta ja muunnettu tarpeen mukaan.
Esittelyä varten piiri on rakennettu juottamattomalle leipälaudalle yllä esitetyn kaavion avulla.
Merkintä! Kaikki komponentit on sijoitettu mahdollisimman lähelle loiskapasitanssin induktanssin ja vastuksen vähentämistä.
Tarvittavat komponentit
- PT2258 IC - 1
- Arduino Nano -ohjain - 1
- Yleinen leipälauta - 1
- Ruuviliitin 5mm x 3-1
- Painike - 1
- 4,7 kt vastus, 5% - 2
- 150K vastus, 5% - 4
- 10k vastus, 5% - 2
- 10uF-kondensaattori - 6
- 0,1 uF kondensaattori - 1
- Hyppääjän johdot - 10
Arduino-koodi
Yksinkertaisuuden vuoksi aion käyttää PT2258-kirjastoa GitHubilta, jonka on valmistanut sunrutcon.
Tämä on erittäin hyvin kirjoitettu kirjasto, minkä vuoksi olen päättänyt käyttää sitä, mutta koska se on hyvin vanha, se on vähän buginen ja meidän on korjattava se ennen kuin voimme käyttää sitä.
Lataa ensin ja pura kirjasto GitHub-arkistosta.
Saat edellä mainitut kaksi tiedostoa purkamisen jälkeen.
# sisällyttää # sisällytä
Avaa seuraavaksi PT2258.cpp- tiedosto suosikkitekstieditorilla, käytän Notepad ++ -sovellusta.
Voit nähdä, että lankakirjaston "w" on pienillä kirjaimilla, mikä ei ole yhteensopiva uusimpien Arduino-versioiden kanssa, ja sinun on korvattava se kirjaimilla "W", siinä se on.
PT2258-äänenvoimakkuussäätimen täydellinen koodi löytyy tämän osan lopusta. Tässä selitetään ohjelman tärkeät osat.
Aloitamme koodin sisällyttämällä kaikki vaaditut kirjastotiedostot. Wire-kirjastoa käytetään kommunikoimaan Arduinon ja PT2258: n välillä. PT2258-kirjasto sisältää kaikki kriittiset I2C-ajastustiedot ja kuittaukset. EzButton kirjastoa käyttää liittymään painikkeiden.
Kopioi kaikki kooditiedostot kooditiedostojen sijasta alla olevista koodikuvista ja tee niistä muotoiltu kuten käytimme muissakin projekteissa
#sisältää
Tee seuraavaksi kahden painikkeen objektit ja itse PT2258-kirjasto.
PT2258 pt2258; ezButton-painike_1 (2); ezButton-painike_2 (4);
Määritä seuraavaksi äänenvoimakkuus. Tämä on oletusarvoinen äänenvoimakkuustaso, jolla tämä IC alkaa.
Int-tilavuus = 40;
Käynnistä seuraavaksi UART ja aseta I2C-väylän kellotaajuus.
Sarjan alku (9600); Wire.setClock (100000);
I2C-kellon asettaminen on erittäin tärkeää, muuten IC ei toimi, koska tämän IC: n tukema suurin kellotaajuus on 100KHz.
Seuraavaksi teemme vähän taloudenhoitoa if else -lausekkeella varmistaaksemme, että IC kommunikoi oikein I2C-väylän kanssa.
If (! Pt2258.init ()) Serial.printIn (“PT2258 aloitettu onnistuneesti”); Muu Serial.printIn ("PT2258: n aloittaminen epäonnistui");
Seuraavaksi asetetaan painikkeiden poiston viive.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Käynnistä lopuksi PT2258 IC asettamalla se oletuskanavan äänenvoimakkuudella ja PIN-numerolla.
/ * PT: n käynnistäminen oletustilavuudella ja Pin * / Pt2258.setChannelVolume (äänenvoimakkuus, 4); Pt2258.setChannelVolume (tilavuus, 5);
Tämä merkitsee Void Setup () -osan loppua.
Vuonna Loop osiossa täytyy soittaa silmukan toiminto painiketta luokassa; se on kirjaston normi.
Button_1.loop (); // Kirjaston normit Button_2.loop (); // Kirjaston normit
Alla jos osa on äänenvoimakkuuden vähentämiseksi.
/ * jos painiketta 1 painetaan, jos ehto on tosi * / Jos (painike_1.painettu ()) {Äänenvoimakkuus ++; // Äänenvoimakkuuden laskurin lisäys. // Tämä jos lauseke varmistaa, että äänenvoimakkuus ei ylitä 79 Jos (tilavuus> = 79) {Tilavuus = 79; } Sarja.tulos (“tilavuus:“); // tulostetaan äänenvoimakkuustaso Serial.printIn (tilavuus); / * aseta kanavan 4 äänenvoimakkuus, joka on PT2558 IC: n PIN-koodissa 9 * / Pt2558.setChannelVolume (äänenvoimakkuus, 4); / * aseta äänenvoimakkuus kanavalle 5, mikä on PT2558 IC * / Pt2558.setChannelVolume (äänenvoimakkuus, 5) PIN-koodi 10; }
Alla on, jos osan tarkoituksena on lisätä äänenvoimakkuutta.
// Sama tapahtuu painikkeella 2 If (button_2.isPressed ()) {Volume--; // tämä jos lauseke varmistaa, että äänenvoimakkuustaso ei mene alle nollan. Jos (tilavuus <= 0) Tilavuus = 0; Sarja.tulos (“tilavuus:“); Serial.printIn (tilavuus); Pt2258.setChannelVolume (tilavuus, 4); Pt2558.setChannelVolume (tilavuus, 5); }
Digitaalisen äänenvoimakkuuden säätöpiirin testaaminen
Piirin testaamiseksi käytettiin seuraavaa laitetta
- Muuntaja, jolla on 13-0-13 hana
- 2 4Ω 20W kaiutinta kuormana.
- Äänilähde (puhelin)
Aikaisemmassa artikkelissa olen osoittanut, kuinka tehdä yksinkertainen 2x32 watin audiovahvistin TDA2050 IC: llä, aion käyttää sitä myös tähän esittelyyn.
Olen häirinnyt mekaanista potentiometriä ja oikosulussa kaksi johtoa kahdella pienellä hyppyjohdolla.
Kahden vahvistimen äänenvoimakkuutta voidaan nyt säätää kahden painikkeen avulla.
Lisäparannus
Piiriä voidaan edelleen muokata suorituskyvyn parantamiseksi. Piiriin voidaan tehdä parannuksia, kuten piirin piirin digitaalisen osan aiheuttaman melun poistamiseksi edelleen. Voimme myös lisätä ylimääräisen suodattimen korkean taajuuden äänien hylkäämiseksi. Tarkista myös muut äänenvahvistinpiirit ja muut ääniin liittyvät projektit.
Toivottavasti pidit tästä artikkelista ja opit siitä jotain uutta. Jos sinulla on epäilyksiä, voit kysyä alla olevista kommenteista tai käyttää foorumeitamme yksityiskohtaiseen keskusteluun.