- IC PT2258
- Cómo funciona PT2258 IC
- El esquema
- Componentes requeridos
- Código Arduino
- Prueba del circuito de control de volumen de audio digital
- Mejora adicional
Un potenciómetro es un dispositivo mecánico mediante el cual se puede configurar la resistencia de acuerdo con el valor deseado, cambiando así la corriente que lo atraviesa. Existen muchas aplicaciones para un potenciómetro, pero principalmente se utiliza un potenciómetro como controlador de volumen para amplificadores de audio.
Un potenciómetro no controla la ganancia de la señal, pero forma un divisor de voltaje y es por eso que la señal de entrada se atenúa. Entonces, en este proyecto, le mostraré cómo construir su controlador de volumen digital con el IC PT2258 y cómo conectarlo con un Arduino para controlar el volumen de un circuito amplificador. También puede verificar varios circuitos relacionados con el audio aquí, incluido el medidor de VU, el circuito de control de tono, etc.
IC PT2258
Como mencioné anteriormente, el PT2258 es un IC diseñado para usarse como un controlador de volumen electrónico de 6 canales, este IC utiliza tecnología CMOS especialmente diseñada para aplicaciones de audio y video multicanal.
Este IC proporciona una interfaz de control I2C con un rango de atenuación de 0 a -79dB a 1dB / paso y viene en un paquete DIP o SOP de 20 pines.
Algunas de las funciones básicas incluyen,
- 6 canales de entrada y salida (para sistemas de audio doméstico 5.1)
- Dirección I2C seleccionable (para aplicación en cadena)
- Separación de canales altos (para aplicaciones con poco ruido)
- Relación S / N de> 100dB
- El voltaje de funcionamiento es de 5 a 9 V
Cómo funciona PT2258 IC
Este IC transmite y recibe datos del microcontrolador a través de líneas SCL y SDA. SDA y SCL forman la interfaz de bus. Estas líneas deben elevarse con dos resistencias de 4.7K para garantizar un funcionamiento estable.
Antes de pasar a la operación real del hardware, aquí está la descripción funcional detallada del IC. si no quieres saber todo esto, puedes saltarte esta parte porque toda la parte funcional es administrada por la biblioteca Arduino.
Validación de datos
- Los datos de la línea SDA se consideran estables cuando la señal SCL es ALTA.
- Los estados ALTO y BAJO de la línea SDA cambian solo cuando el SCL es BAJO.
Condición de inicio y parada
Una condición de inicio se activa cuando
- el SCL se establece en ALTO y
- SDA cambia del estado ALTO al BAJO.
La condición de parada se activa cuando
- SCL se establece en HIGH y
- SDA cambia de estado BAJO a ALTO
¡Nota! Esta información es muy útil para depurar las señales.
Formato de datos
Cada byte transmitido a la línea SDA consta de 8 bits, que forman un byte. Cada byte debe ir seguido de un bit de confirmación.
Reconocimiento
El reconocimiento asegura un funcionamiento estable y adecuado. Durante el Acuse de recibo del pulso del reloj, el microcontrolador tira del pin SDA ALTO en este momento exacto en el que el dispositivo periférico (procesador de audio) baja (BAJO) la línea SDA.
El dispositivo periférico (PT2258) ahora está direccionado y tiene que generar un reconocimiento después de recibir un byte; de lo contrario, la línea SDA permanecerá en el nivel Alto durante el noveno (noveno) pulso de reloj. Si esto sucede, el transmisor maestro generará información de PARADA para cancelar la transferencia.
Eso elimina la necesidad de estar en su lugar para una transferencia de datos válida.
Selección de dirección
La dirección I2C de este IC depende del estado de CODE1 (Pin No 17) y CODE2 (Pin No 4).
CÓDIGO1 (PIN No. 17) |
CÓDIGO2 (PIN No. 4) |
DIRECCIÓN HEX |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Lógica alta = 1
Lógica baja = 0
Protocolo de interfaz
El protocolo de interfaz consta de lo siguiente:
- Un poco de comienzo
- Un byte de dirección de chip
- ACK = bit de reconocimiento
- Un byte de datos
- Un poco de parada
Un poco de limpieza
Una vez encendido el IC, debe esperar al menos 200 ms antes de transmitir el primer bit de datos; de lo contrario, la transferencia de datos puede fallar.
Luego de la demora, lo primero que se debe hacer es borrar el registro enviando “0XC0” vi a la línea I2C, esto asegura un correcto funcionamiento.
El paso anterior borra todo el registro, ahora necesitamos establecer un valor para el registro, de lo contrario, el registro almacena el valor basura y obtenemos una salida pecosa.
Para garantizar los ajustes de volumen adecuados, es necesario enviar un múltiplo de 10 dB seguido de un código de 1 dB al atenuador en secuencia; de lo contrario, el IC puede comportarse de manera anormal. El diagrama a continuación lo aclara más.
Ambos métodos anteriores funcionarán correctamente.
Para garantizar un funcionamiento adecuado, asegúrese de que la velocidad de transferencia de datos I2C nunca supere los 100 KHz.
Así es como puede transmitir un byte al IC y atenuar la señal de entrada. La sección anterior es para aprender cómo funciona el IC, pero como dije anteriormente, vamos a usar una biblioteca Arduino para comunicarnos con el IC que administra todo el código duro, y solo necesitamos hacer algunas llamadas a funciones.
Toda la información anterior se toma de la hoja de datos, consúltela para obtener más información.
El esquema
La imagen de arriba muestra el esquema de prueba del circuito de control de volumen basado en PT2258. Se toma de la hoja de datos y se modifica según las necesidades.
Para la demostración, el circuito se construye en una placa de prueba sin soldadura con la ayuda del esquema que se muestra arriba.
¡Nota! Todos los componentes se colocan lo más cerca posible para reducir la inductancia y resistencia de capacitancia parásita.
Componentes requeridos
- PT2258 IC - 1
- Controlador Arduino Nano - 1
- Protoboard genérico - 1
- Terminal de tornillo 5 mm x 3 - 1
- Botón pulsador - 1
- Resistencia de 4.7K, 5% - 2
- Resistencia de 150 K, 5% - 4
- Resistencia de 10k, 5% - 2
- Condensador 10uF - 6
- Condensador 0.1uF - 1
- Cables de puente - 10
Código Arduino
Para simplificar, voy a usar una biblioteca PT2258 de GitHub, que está hecha por sunrutcon.
Esta es una biblioteca muy bien escrita, por eso he decidido usarla, pero como es muy antigua, tiene algunos errores y debemos arreglarla antes de poder usarla.
Primero, descargue y extraiga la biblioteca del repositorio de GitHub.
Obtendrá los dos archivos anteriores después de la extracción.
#incluir #incluir
A continuación, abra el archivo PT2258.cpp con su editor de texto favorito, estoy usando Notepad ++.
Puede ver que la "w" de la biblioteca de cables está en letras minúsculas, lo cual es incompatible con las últimas versiones de Arduino, y necesita reemplazarlo con mayúsculas "W", eso es todo.
El código completo para el controlador de volumen PT2258 se puede encontrar al final de esta sección. Aquí se explican partes importantes del programa.
Comenzamos el código incluyendo todos los archivos de bibliotecas requeridos. La biblioteca Wire se utiliza para comunicarse entre Arduino y PT2258. La biblioteca PT2258 contiene toda la información y los reconocimientos críticos de temporización de I2C. La biblioteca ezButton se utiliza para interactuar con los pulsadores.
En lugar de usar las imágenes de código a continuación, copie todas las instancias de código del archivo de código y hágalas formateadas como solíamos hacer en otros proyectos
#incluir
A continuación, cree los objetos para los dos botones y la propia biblioteca PT2258.
PT2258 pt2258; ezButton button_1 (2); ezButton button_2 (4);
A continuación, defina el nivel de volumen. Este es el nivel de volumen predeterminado con el que comenzará este IC.
Volumen int = 40;
A continuación, inicie la UART y configure la frecuencia de reloj para el bus I2C.
Serial.begin (9600); Wire.setClock (100000);
Es muy importante configurar el reloj I2C; de lo contrario, el IC no funcionará porque la frecuencia de reloj máxima admitida por este IC es de 100 KHz.
A continuación, hacemos un poco de limpieza con una declaración if else para asegurarnos de que el IC se comunica correctamente con el bus I2C.
If (! Pt2258.init ()) Serial.printIn (“PT2258 Iniciado exitosamente”); Else Serial.printIn (“No se pudo iniciar PT2258”);
A continuación, configuramos el retardo antirrebote para los botones.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Finalmente, inicie el PT2258 IC configurándolo con el volumen de canal predeterminado y el número de PIN.
/ * Iniciando PT con volumen predeterminado y Pin * / Pt2258.setChannelVolume (volumen, 4); Pt2258.setChannelVolume (volumen, 5);
Esto marca el final de la sección Void Setup () .
En la sección Loop , necesitamos llamar a la función loop desde la clase de botón; es una norma de biblioteca.
Button_1.loop (); // Normas de la biblioteca Button_2.loop (); // Normas de la biblioteca
La siguiente sección de if es para bajar el volumen.
/ * si se presiona el botón 1 si la condición es verdadera * / If (button_1.ispressed ()) {Volume ++; // Incrementando el contador de volumen. // Esta declaración if asegura que el volumen no supere 79 If (volumen> = 79) {Volumen = 79; } Serial.print ("volumen:"); // imprimiendo el nivel de volumen Serial.printIn (volume); / * establece el volumen para el canal 4 que está en el PIN 9 del PT2558 IC * / Pt2558.setChannelVolume (volumen, 4); / * establece el volumen para el canal 5, que es el PIN 10 del PT2558 IC * / Pt2558.setChannelVolume (volumen, 5); }
La siguiente sección de if es para aumentar el volumen.
// Lo mismo ocurre con el botón 2 If (button_2.isPressed ()) {Volume--; // esta declaración if asegura que el nivel de volumen no baje de cero. Si (volumen <= 0) Volumen = 0; Serial.print ("volumen:"); Serial.printIn (volumen); Pt2258.setChannelVolume (volumen, 4); Pt2558.setChannelVolume (volumen, 5); }
Prueba del circuito de control de volumen de audio digital
Para probar el circuito, se utilizó el siguiente aparato
- Un transformador que tiene un Tap 13-0-13
- 2 altavoces de 4Ω 20W como carga.
- Fuente de audio (teléfono)
En un artículo anterior, le mostré cómo hacer un amplificador de audio simple de 2x32 vatios con TDA2050 IC, también lo usaré para esta demostración.
He desordenado el potenciómetro mecánico y corto dos cables con dos pequeños cables de puente.
Ahora, con la ayuda de dos pulsadores, se puede controlar el volumen del amplificador.
Mejora adicional
El circuito se puede modificar aún más para mejorar su rendimiento. Se pueden realizar mejoras como el circuito en una PCB para eliminar aún más el ruido generado por la sección digital del IC. También podemos agregar un filtro adicional para rechazar ruidos de alta frecuencia. Además, consulte otros circuitos amplificadores de audio y otros proyectos relacionados con el audio.
Espero que les haya gustado este artículo y hayan aprendido algo nuevo de él. Si tiene alguna duda, puede preguntar en los comentarios a continuación o puede utilizar nuestros foros para una discusión detallada.