- IC PT2258
- Com funciona PT2258 IC
- L’Esquema
- Components necessaris
- Codi Arduino
- Prova del circuit de control de volum d’àudio digital
- Millora addicional
Un potenciòmetre és un dispositiu mecànic que permet configurar la resistència segons el valor desitjat, canviant així el corrent que el passa. Existeixen moltes aplicacions per a un potenciòmetre, però sobretot s’utilitza com a controlador de volum per a amplificadors d’àudio.
Un potenciòmetre no controla el guany del senyal, però forma un divisor de tensió i és per això que el senyal d'entrada s'atenua. Per tant, en aquest projecte, us mostraré com construir el controlador de volum digital amb l’IC PT2258 i la interfície amb un Arduino per controlar el volum d’un circuit amplificador. Aquí també podeu comprovar diversos circuits relacionats amb l'àudio, inclosos el mesurador de VU, el circuit de control de to, etc.
IC PT2258

Com he esmentat anteriorment, el PT2258 és un CI fabricat per utilitzar-se com a controlador electrònic de volum de 6 canals, aquest IC utilitza la tecnologia CMOS especialment dissenyada per a aplicacions de vídeo i àudio multicanal.
Aquest CI proporciona una interfície de control I2C amb un rang d’atenuació de 0 a -79 dB a 1 dB / pas i ve en un paquet DIP o SOP de 20 pins.
Algunes de les funcions bàsiques inclouen:
- 6 canals d'entrada i sortida (per a sistemes d'àudio domèstic 5.1)
- Adreça I2C seleccionable (per a aplicacions de cadena Daisy)
- Separació de canals elevats (per a aplicacions de baix soroll)
- Relació S / N> 100dB
- La tensió de funcionament és de 5 a 9V
Com funciona PT2258 IC
Aquest CI transmet i rep dades del microcontrolador mitjançant línies SCL i SDA. La SDA i SCL conformen la interfície del bus. Aquestes línies han de ser elevades per dues resistències de 4,7 K per tal de garantir un funcionament estable.
Abans d’anar a l’operació de maquinari real, aquí teniu la descripció funcional detallada de l’IC. si no voleu saber tot això, podeu ometre aquesta part perquè tota la part funcional la gestiona la biblioteca Arduino.
Validació de dades
- Les dades de la línia SDA es consideren estables quan el senyal SCL és ALT.
- Els estats ALT i BAIX de la línia SDA només canvien quan el SCL és BAIX.

Condició d'inici i aturada
Una condició d'inici s'activa quan
- el SCL està configurat a HIGH i
- SDA passa de l'estat ALT a BAIX.
La condició d'aturada s'activa quan
- SCL està configurat a HIGH i
- SDA passa de l'estat BAIX a ALT

Nota! Aquesta informació és molt útil per depurar els senyals.
Format de dades
Cada byte transmès a la línia SDA consta de 8 bits, que formen un byte. Cada byte ha d'anar seguit d'un bit de reconeixement.
Reconeixement
El reconeixement garanteix un funcionament estable i adequat. Durant el pols de reconeixement del rellotge, el microcontrolador treu el pin SDA ALTA en aquest moment exacte que el dispositiu perifèric (processador d'àudio) fa baixar (BAIX) la línia SDA.

El dispositiu perifèric (PT2258) ja està dirigit i ha de generar una confirmació després de rebre un byte; en cas contrari, la línia SDA es mantindrà a nivell alt durant el novè (novè) impuls de rellotge. Si això passa, el transmissor principal generarà informació STOP per tal d’avortar la transferència.

D’aquesta manera, s’aclareix la necessitat d’estar al lloc per a una transferència de dades vàlida.
Selecció d’adreça
L'adreça I2C d'aquest CI depèn de l'estat de CODE1 (Pin No.17) i CODE2 (Pin No.4).
|
CODI1 (PIN núm. 17) |
CODI2 (PIN núm. 4) |
ADREÇA HEX |
|
0 |
0 |
0X80 |
|
0 |
1 |
0X84 |
|
1 |
0 |
0X88 |
|
1 |
1 |
0X8C |
Lògica alta = 1
Lògica baixa = 0
Protocol d'interfície
El protocol d'interfície consisteix en el següent:
- Una mica d’inici
- Un byte d’adreça de xip
- ACK = Reconèixer bit
- Un byte de dades
- Una mica Stop

Una mica de neteja
Després d’encendre l’IC, ha d’esperar com a mínim 200 ms abans de transmetre el primer bit de dades; en cas contrari, la transferència de dades pot fallar.
Després del retard, el primer que cal fer és esborrar el registre enviant “0XC0” a la línia I2C, cosa que garanteix un funcionament correcte.

El pas anterior esborra tot el registre, ara hem d’establir un valor al registre, en cas contrari, el registre emmagatzema el valor de les escombraries i obtindrem una sortida pigada.
Per assegurar els ajustos de volum adequats, cal enviar un múltiple de 10 dB seguit d'un codi d'1 dB a l'atenuador en seqüència, en cas contrari, l'IC pot comportar-se de manera anormal. El diagrama següent ho aclareix més.

Els dos mètodes anteriors funcionaran correctament.
Per garantir un funcionament correcte, assegureu-vos que la velocitat de transferència de dades I2C no superi mai els 100 KHz.
Així és com podeu transmetre un byte a l’IC i atenuar el senyal d’entrada. La secció anterior és per conèixer el funcionament de l’IC, però com he dit anteriorment, utilitzarem una biblioteca Arduino per comunicar-nos amb l’IC que gestiona tot el codi dur i només necessitem fer algunes trucades de funció.
Tota la informació anterior s’extreu del full de dades. Consulteu-la per obtenir més informació.
L’Esquema

La imatge anterior mostra l’esquema de prova del circuit de control de volum basat en PT2258. S'ha extret del full de dades i es modifica segons les necessitats.
Per a la demostració, el circuit es construeix sobre una placa de soldadura sense soldadura amb l'ajut de l'esquema mostrat anteriorment.
Nota! Tots els components es col·loquen el més a prop possible per reduir la inductància i resistència de la capacitat paràsita.
Components necessaris
- PT2258 IC - 1
- Controlador nano Arduino - 1
- Taula de pa genèrica: 1
- Terminal de cargol 5 mm x 3-1
- Polsador: 1
- Resistència de 4,7 K, 5% - 2
- Resistència 150K, 5% - 4
- Resistència de 10 k, 5% - 2
- Condensador 10uF - 6
- Condensador de 0,1 uF: 1
- Filferros de pont: 10
Codi Arduino
Per simplicitat, faré servir una biblioteca PT2258 de GitHub, feta per sunrutcon.
Aquesta és una biblioteca molt ben escrita, per això he decidit utilitzar-la, però, ja que és molt antiga, és un petit buggy i hem de corregir-la abans de poder-la utilitzar.
Primer, descarregueu i extreieu la biblioteca del dipòsit de GitHub.

Després d’extreure, obtindreu els dos fitxers anteriors.
#include #include
A continuació, obriu el fitxer PT2258.cpp amb el vostre editor de text preferit. Estic fent servir Notepad ++.
Podeu veure que la "w" de la biblioteca de filferro està en minúscules, cosa que és incompatible amb les darreres versions d'Arduino, i heu de substituir-la per majúscules "W", ja està.
Al final d'aquesta secció es troba el codi complet del controlador de volum PT2258. Aquí s'expliquen parts importants del programa.
Comencem el codi incloent tots els fitxers de biblioteques necessaris. La biblioteca Wire s’utilitza per comunicar-se entre l’Arduino i el PT2258. La biblioteca PT2258 conté tota la informació i agraïments crítics de sincronització I2C. La biblioteca ezButton s'utilitza per relacionar-se amb els botons.
En lloc d’utilitzar imatges de codi a continuació, copieu totes les instàncies de codi del fitxer de codis i feu-los formatats com feiem en altres projectes
#incloure
A continuació, feu els objectes dels dos botons i de la pròpia biblioteca PT2258.
PT2258 pt2258; botó ezButton_1 (2); botó ezButton_2 (4);
A continuació, definiu el nivell de volum. Aquest és el nivell de volum per defecte amb què començarà aquesta IC.
Volum Int = 40;
A continuació, inicieu UART i configureu la freqüència de rellotge del bus I2C.
Serial.begin (9600); Wire.setClock (100000);
És molt important configurar el rellotge I2C, en cas contrari, l'IC no funcionarà perquè la freqüència de rellotge màxima admesa per aquest IC és de 100 KHz.
A continuació, fem una mica de neteja amb una declaració if else per assegurar-nos que l'IC es comunica correctament amb el bus I2C.
If (! Pt2258.init ()) Serial.printIn ("PT2258 Iniciat correctament"); Else Serial.printIn ("No s'ha pogut iniciar PT2258");
A continuació, establim el retard de rebuda per als botons.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Finalment, inicieu el PT2258 IC configurant-lo amb el volum de canal i el número PIN predeterminats.
/ * Iniciant PT amb volum i Pin predeterminats * / Pt2258.setChannelVolume (volum, 4); Pt2258.setChannelVolume (volum, 5);
Això marca el final de la secció Void Setup () .
A la secció Loop , hem de cridar a la funció loop des de la classe de botons; és una norma de biblioteca.
Button_1.loop (); // Normes de la biblioteca Button_2.loop (); // Normes de biblioteca
A continuació, si la secció vol reduir el volum.
/ * si es prem el botó 1 si la condició és certa * / If (button_1.ispressed ()) {Volume ++; // Increment del comptador de volum. // Aquesta sentència if garanteix que el volum no superi el 79 If (volum> = 79) {Volum = 79; } Serial.print ("volum:"); // imprimir el nivell de volum Serial.printIn (volum); / * configureu el volum per al canal 4 que es troba al PIN 9 del PT2558 IC * / Pt2558.setChannelVolume (volum, 4); / * configureu el volum per al canal 5 Quin és el PIN 10 del PT2558 IC * / Pt2558.setChannelVolume (volum, 5); }
La secció següent si vol augmentar el volum.
// El mateix passa amb el botó 2 If (button_2.isPressed ()) {Volume--; // Aquesta sentència if garanteix que el nivell de volum no baixi de zero. Si (volum <= 0) Volum = 0; Serial.print ("volum:"); Serial.printIn (volum); Pt2258.setChannelVolume (volum, 4); Pt2558.setChannelVolume (volum, 5); }
Prova del circuit de control de volum d’àudio digital
Per provar el circuit, es va utilitzar el següent aparell
- Un transformador que té un toc 13-0-13
- 2 altaveus de 4Ω 20W com a càrrega.
- Font d'àudio (telèfon)
En un article anterior, us he mostrat com fer un amplificador d'àudio simple de 2x32 watts amb IC TDA2050, també ho faré per a aquesta demostració.
He desordenat el potenciòmetre mecànic i heu curtcircuitat dos cables amb dos petits cables de pont.
Ara, amb l’ajut de dos polsadors, es pot controlar el volum de l’amplificador.
Millora addicional
El circuit es pot modificar per millorar el seu rendiment. Es poden fer millores com el circuit en un PCB per eliminar encara més el soroll generat per la secció digital de l’IC. També podem afegir un filtre addicional per rebutjar els sorolls d’alta freqüència. Consulteu també altres circuits d'amplificador d'àudio i altres projectes relacionats amb l'àudio.
Espero que aquest article us hagi agradat i n’hagueu après alguna cosa nova. Si teniu algun dubte, podeu demanar-los als comentaris següents o fer servir els nostres fòrums per a una discussió detallada.
