<img src="https://queue.simpleanalyticscdn.com/noscript.gif?collect-dnt=true" alt="" referrerpolicy="-when-downgrade"> Potenciómetros Digitales: La consola soñada
NeoTeo
Mario

Potenciómetros Digitales: La consola soñada

Potenciómetros Digitales: La consola soñada

Descubre cómo los potenciómetros digitales revolucionan el audio y eliminan los ruidos para siempre. ¡Atrévete a conocer todos los secretos detrás de la tecnología que está cambiando los equipos de sonido!

Sin dudas el polvillo y la suciedad que flotan en el ambiente son los peores enemigos de los clásicos potenciómetros mecánicos deslizantes o rotativos. Si a esta realidad le sumamos el paso del tiempo y su inevitable desgaste por rozamiento en algún momento (el menos oportuno, claro) el potenciómetro comenzará a introducir desagradables ruidos provocados por su uso y tendremos roturas irreparables en su interior. Seguramente has oído hablar de los potenciómetros digitales; ven, aprende a usarlos y olvídate de los viejos sistemas mecánicos. No más ruidos, no más fallas, solo música.

Luego de haber sufrido y padecido durante muchos años la, a veces pobre, calidad de los potenciómetros mecánicos utilizados en costosos equipos de audio, te invitamos en este artículo a conocer el modo de aprovechar las ventajas de los potenciómetros digitales que han llegado para solucionar un problema insoluble hasta hace poco tiempo: su deterioro por envejecimiento.

Catalyst Semiconductor Inc. posee entre su amplia gama de productos, una serie de circuitos integrados concebidos para ser utilizados como potenciómetros o como resistores variables sencillos y que pueden ser operados mediante el práctico y eficaz bus I2C, a través de un microcontrolador. El CAT5269 posee en su encapsulado SOIC de 24 pines, dos potenciómetros digitalmente programables (DPPs) con su control lógico y una memoria RAM no volátil (NVRAM) de 18 bytes. Cada potenciómetro consiste básicamente en una serie de elementos resistivos que poseen en sus extremos una conexión externa (RH – RL) y pueden sumar en toda su extensión valores de 50 KOhms o 100 KOhms según el modelo seleccionado. Los puntos de unión entre las unidades resistivas son conectados al virtual cursor central (wiper) mediante llaves CMOS y poseen también su correspondiente conexión al exterior (RW).

Potenciómetros Digitales: La consola soñada
Estructura interna del CAT5269

El control de los potenciómetros se basa en la utilización apropiada de las instrucciones que se les envían a través del bus SDA – SCL y que son muy sencillas de interpretar. Cada instrucción es una “palabra” de 8 bits al igual que el identificador de dispositivo dentro del bus y los valores que almacena cada registro.

Qué, cómo y cuando. Para comenzar a “dialogar” con el circuito integrado debes llamarlo por su nombre. Todos los que se encuentren conectados y operativos dentro del bus deben saber a quién le estarás hablando. La forma de hacerlo es con el primer BYTE luego de abrir la comunicación en el bus. La condición de START que indica el fabricante es la misma utilizada en el bus I2C y se trata del pasaje desde un estado alto a uno bajo del pin SDA, mientras la línea SCL se encuentra en estado alto. A través de un microcontrolador programado en Basic será tan sencillo como poner BSTART y ya. Una vez abierto el bus por parte del dispositivo maestro, se envía el byte que es la dirección o nombre del dispositivo dentro del bus.

Potenciómetros Digitales: La consola soñada
Dirección del CAT5269 dentro del bus I2C

Los cuatro bits más significativos (MSB) identifican al dispositivo y son fijos. “0101” será la indicación dentro del bus que signifique que se estará “dialogando” con un potenciómetro digital CAT5269. Los cuatro bits siguientes A3-A0 serán los utilizados para identificar al circuito integrado dentro de un grupo de iguales y se definen por hardware. Dicho en cristiano significa lo siguiente: A3, A2, A1 y A0 son pines que poseen conexión al exterior del circuito integrado (pines 24, 11, 14 y 2 respectivamente). Colocando estos pines a VCC (positivo de la tensión de alimentación) o a VSS (GND) le indicarás al IC que ese pin estará a un 1 o 0 lógico y ese dato será reflejado en los últimos cuatro bits de la dirección (Slave Address Byte).

Por ejemplo, si colocas los cuatro pines a GND el byte resultaría ser “0101000”. Los cuatro primeros son fijos y los cuatro últimos se “programan” por hardware, es decir, los colocas tú a GND o a VCC al diseñar la placa de circuito impreso. Si en cambio pusieras A3 a VCC, A2 y A1 a GND y A0 a VCC el byte te quedaría “01011001”. En lenguaje de programación BASIC para microcontroladores, sólo es necesario que escribas BUSOUT %01011001 y se enviará al bus la dirección del IC que estamos solicitando. Con cuatro bits puedes manejar hasta 16 circuitos integrados conectados todos al mismo bus de dos cables, comandados por un sencillo microcontrolador. 16 potenciómetros estéreo que no se romperán ni harán ruido jamás.

Luego del byte de dirección (Address) viene la instrucción que le darás al potenciómetro. Es decir, el trabajo que quieras que él haga. Las instrucciones son nueve, se encuentran detalladas en la tabla número 3 del datasheet del producto y las cuatro primeras a destacar son las siguientes:

Los primeros dos registros mencionados no se cargan en la NVRAM y son volátiles, es decir, se pierden al quitar la energía al IC. Este dato es muy importante a tener en cuenta ya que al energizar un sistema, los datos de estos registros pueden adquirir cualquier valor, siendo esta una situación que debe contemplarse en el firmware del microcontrolador que operará los potenciómetros. Al igual que con el direccionamiento la instrucción posee 8 bits y los enviarás con otra instrucción BUSOUT. La estructura del byte se puede desglosar entre los cuatro bits más significativos que indicarán la operación que deseamos que el potenciómetro realice (Instruction Opcode) y los cuatro menos significativos que apuntarán a cuál de los dos potenciómetros te referirás en dicha instrucción. Por último y completando la secuencia llega un tercer byte. En éste vendrá contenido el dato respectivo a la instrucción que hayas indicado al IC. Por ejemplo le enviarás el nuevo punto de posición del cursor del potenciómetro R0 que se escribirá con la instrucción Write Wiper Control .

Potenciómetros Digitales: La consola soñada
Todos potenciómetros mecánicos, todos propensos a fallar tarde o temprano

Luego existen otras cuatro instrucciones que relacionan el uso de los datos almacenados en los registros (que habéis escrito con la cuarta instrucción detallada antes) y cómo los mismos son enviados desde o hacia el control del cursor central o wiper. Las instrucciones se dividen en XFR para operar de forma individual en cada potenciómetro y las instrucciones GANG XFR que son para actuar en ambos potenciómetros a la vez, es decir, ideales para trabajos en audio estéreo.

Por último te encontrarás con una novena instrucción que servirá para incrementar o decrementar el valor del registro que gobierna la posición del cursor de a una unidad por vez. El incremento se efectiviza colocando en estado alto (VCC) la línea SDA y el decremento colocándola en estado bajo (GND). Recuerda que cada potenciómetro está formado por 256 resistencias conectadas en serie y que el wiper irá recorriendo, en éste modo, una a una, mientras que en las instrucciones anteriores se permitía el salto directo a un nuevo valor. Siempre ten en cuenta que cualquier duda estará respondida en el datasheet que el fabricante provee del dispositivo. Es aconsejable tenerlo siempre a mano cuando se desarrollan aplicaciones con estos circuitos integrados.

Manos a la obra  El primer paso será diseñar un circuito impreso donde instalar y soldar el IC de encapsulado SOIC (W), con la posibilidad de tener una distribución de pines en forma fácilmente accesible. Es decir, que puedas instalar la placa desarrollada cómodamente en un protoboard y allí experimentar su desempeño con un microcontrolador.

Potenciómetros Digitales: La consola soñada
Circuito impreso propuesto
Potenciómetros Digitales: La consola soñada
Ubicación del IC, jumpers y capacitor de desacoplo
Potenciómetros Digitales: La consola soñada
Conexionado del módulo impreso

Deberás tener precaución al realizar la placa de circuito impreso de comprender que trabajarás siempre del lado componentes. Eso te obligará a realizar los puentes con alambre forrado para evitar cortocircuitar otras vías. Puedes ver que la placa es muy sencilla donde se destaca al centro de la imagen el IC, a su izquierda un capacitor de 100nF de desacoplo y en la parte superior los cuatro jumpers, con opción de conexión a VCC o GND, para A3 – A0 que determinarán la dirección del dispositivo dentro del bus. En la parte inferior la distribución de los terminales está hecha de modo de separar los dos potenciómetros a los extremos de la placa quedando al centro el resto de las conexiones de control.

Si decides colocar la dirección 0000 (A3-A0) en la configuración de la dirección, llevar el potenciómetro a uno de sus extremos quedaría de la siguiente forma en el firmware del microcontrolador:

Potenciómetros Digitales: La consola soñada
Cadena de tres bytes que se envían mediante la instrucción BUSOUT
  • Recibir datos desde el ordenador
  • Abrir Bus
  • Enviar Dirección del potenciometro a manejar
  • Enviar Instrucción que deseamos que dicho potenciometro ejecute
  • Cerrar Bus
  • Reiniciar el ciclo
  • Uno de los microcontroladores que puedes emplear es el PIC 16F628A, sin cristal, utilizando su oscilador interno de 4 Mhz. Los pines RB1 (Rx) y RB2 (Tx) puedes reservarlos para un eventual y futuro uso del sistema dentro de una red RS485 que pueda controlar grandes cantidades de potenciómetros desde alguna aplicación en el ordenador. Recuerda que un solo bus I2C puede controlar hasta 16 potenciómetros estéreo y si a eso le agregamos la posibilidad de trabajar dentro de una red RS485, la cantidad de potenciómetros y canales de audio disponibles se eleva a cantidades muy difíciles de concebir en una sola consola de audio. Para el uso del bus I2C en el programa de ejemplo se han reservado RA2 para SDA y RA3 para SCL.

    La siguiente sería una forma muy sencilla de manejar los valores de los registros de datos almacenándolos en una variable (D) al ser recepcionados desde el ordenador (HSERIN) y provenientes de una sencilla aplicación realizada en Visual Basic o cualquier otro lenguaje que te permita crear la interfaz gráfica necesaria para posicionar los potenciómetros en pantalla y actuar sobre ellos.

    '******************************************************
    '*  Nombre: POTENCIÓMETROS DIGITALES.BAS                  *
    '*  Autor   : Mario G. Sacco                              *
    '*          : Copyright (c) 2009 -NeoTeo                    *
    '*  Fecha   : 02/05/2009                                  *
    '*  Versión : 1.0                                         *
    '*  Notas   : EJEMPLO DE CONTROL DEL DPP CAT5269            *
    '******************************************************
    DEVICE = 16F628A              'DEFINO EL DISPOSITIVO A USAR
    CMCON = 7                   'ANULAMOS LOS COMPARADORES DEL 16F628A
    ALL_DIGITAL = TRUE          'TODAS LAS I/O DIGITALES
    'DEFINO EL BUS I2C PARA COMUNICAR EL PIC CON EL POTENCIÓMETRO     DECLARE SDA_PIN PORTA.2  'DECLARO CUALES PINES DEL PIC VAN
    DECLARE SCL_PIN PORTA.3     'A SER SDA Y SCL 
    'PALABRAS DE CONTROL QUE NO CAMBIAN DURANTE EL PROGRAMA, SÓLO SE UTILIZAN
    SYMBOL SOYPOTE %01010000    'DIRECCIÓN DEL CIRCUITO INTEGRADO EN EL BUS
    SYMBOL VOLUMEN1 %10100000     'INSTRUCCIÓN DE POSICIÓN AL   CURSOR DEL POTE1
    SYMBOL VOLUMEN2 %10100001     'INSTRUCCIÓN DE POSICIÓN AL CURSOR DEL POTE2    'DEFINO LA VARIABLE QUE SERÁ EL CURSOR CENTRAL DE LOS POTENCIÓMETROS
    DIM D AS WORD             'VARIABLE DONDE SE CARGA EL DATO         'DE POSICIÓN DE LOS POTENCIÓMETROS
    D = %00000000             'INICIO EL SISTEMA CON VOLUMEN A CERO (MUTE)    'DATO A CARGAR EN EL REGISTRO DEL WIPER
    HSERIN 500, INICIO, [DEC D]   'ESPERO RECIBIR POR LA USART LA   'INSTRUCCIÓN Y LA PONGO EN LA  VARIABLE "D"; SI NO LLEGA EN 1/2 SEGUNDO,   'SALTO Y SIGO CON EL CICLO
    BSTART                    'INICIO O I2C
    BUSOUT SOYPOTE             'ME VOY A COMUNICAR CON EL POTENCIÓMETRO 
    BUSOUT VOLUMEN1            'LE INDICO QUE VOY A MOVER SU CURSOR 
    BUSOUT D                   'ESCRIBO EN EL REGISTRO EL VALOR 
    DELAYMS 5                 'ESPERO 5 MILISEGUNDOS HASTA ENVIAR    'LA SIGUIENTE ORDEN
    BUSOUT SOYPOTE             'ME VOY A COMUNICAR CON EL POTENCIÓMETRO 
    BUSOUT VOLUMEN2            'LE INDICO QUE VOY A MOVER SU CURSOR    'ESCRIBO EN EL REGISTRO EL VALOR 
    BSTOP                     'TERMINO EL O I2C
    DELAYMS 5                 'ESPERO 5 MILISEGUNDOS HASTA    'ENVIAR LA SIGUIENTE ORDEN
    GOTO INICIO               'REINICIO EL CICLO Y VUELVO A LA   'ESCUCHA DEL PUERTO SERIE
    END                       'FIN DE PROGRAMA

    Los textos seguidos de apóstrofos (‘) son comentarios para ayudarte a comprender el significado de cada línea de comandos.

Etiquetas

#Tutoriales
avatar

Genial , mas circuitos para I2c, por favor.

Gracias

avatar
avatar

o.0 estaba perdido al principio pero entendí, yo trabaje algo parecido con una resistencia que variaba con la frecuencia, muy difícil de manejar, pero esto es mas sencillo manejar.
También se puede manejar a varios gracias al IC²
Interesante me recuerda la revista de mecánica popular que leía en la biblioteca en la secundaria ^_^
El chip de tu articulo anterior de sensor de temperatura no lo pude conseguir en la electrónicas T-T ni similares.

avatar
avatar

hOla, que tal, gracias por tu aporte
Tenia una duda acerca de como se sabe con cual de los dos potenciometros se comunica el micro si ambos tienen la misma dirección segun observo en tu código. GRACIAS

SYMBOL SOYPOTE1 %01010000 'DIRECCIÓN DEL POTENCIÓMETRO 1
SYMBOL SOYPOTE2 %01010000 'DIRECCIÓN DEL POTENCIÓMETRO 2

avatar
avatar

Hola Mario, que buen artículo! Un poco fuera de fecha mis comentarios, pero es que vengo leyendo todas tus publicaciones en NeoTeo.

Voy a ver si consigo el CAT5269, pero también estuve viendo algunos de Texas Instruments:

TPL0401 - 10 KOhms (128 TAPS Single Channel Digital Potentiometer with I2C Interface)

Voy a armarme una fuente digital simple con un LM317, así que tu artículo me fue de mucha utilidad.

Saludos!

Argentina, Córdoba (5000)

avatar

Debes iniciar sesión para publicar un comentario.