Potenciómetros Digitales: La consola soñada

 

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.

 


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).

 
     

Estructura interna del CAT5269
 


El control de los potenciómetros se basa en la utilización apropiada de las instrucciones que se le 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.

 
     



Tutorial de Televisión que ha ayudado a miles de técnicos de toda América a aprender cada día más del oficio.


Aprendé a reparar DVD, cambiar su pantalla de inicio, reparar su firmware y a conocer más de ésta nueva unidad multimedia del hogar.

El mejor sistema de radiogoniometría para radioaficionados está a tu alcance. Constrúyelo!

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 pusiéras 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:

* Read Wiper Control Register – Esta instrucción le indicará al IC que leerás el valor que posee el registro de control del wiper (cursor).
* Write Wiper Control Register - Con esta le indicarás que cambiará la posición actual del wiper del potenciómetro seleccionado
* Read Data Register – Sólo leerás el contenido de un dato dentro de los registros
* Write Data Register – Escribirás un valor dentro de un registro seleccionado.


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 Register.
Recuerda que hay dos potenciómetros individuales a manejar en un encapsulado: R0 y R1, por lo tanto si ambos constituyen un control conjunto de una señal de audio estéreo, las instrucciones enunciadas hasta aquí se deberán repetir para cada potenciómetro a fin de lograr una actuación conjunta. Si en cambio son controles individuales de señales monoaurales, bastará con instrucciones independientes para cada potenciómetro. Por último se cierra el bus con BSTOP, lo que equivaldría a pasar la línea SDA de un estado bajo a uno alto, mientras la línea SCL se encuentre en estado alto.

 

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.

 



Circuito impreso propuesto


Ubicación del IC, jumpers y capacitor de desacoplo
 


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.


Conexionado del módulo impreso
 
Monitor Cardíaco 


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:

 
Mi primer receptor: TDA7000
Cadena de tres bytes que se envían mediante la instrucción BUSOUT
 
ON-OFF de un toque





Aprenda a soldar SMD !


Será el sucesor del DVD? Aprenda a conocerlo.


Con el monitor cardíaco que te presentamos puedes controlar, escuchar y ver tu ritmo cardíaco.


* Recibir datos desde el ordenador
* Abrir Bus
* Enviar Dirección del potenciómetro a manejar
* Enviar Instrucción que deseamos que dicho potenciómetro 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 LOS CUALES PINES DEL PIC VAN A SER
DECLARE SCL_PIN PORTA.3 'SDA Y SCL

'PALABRAS DE CONTROL QUE NO CAMBIAN DURANTE EL PROGRAMA, SÓLO SE UTILIZAN

SYMBOL SOYPOTE1 %01010000 'DIRECCIÓN DEL POTENCIÓMETRO 1
SYMBOL SOYPOTE2 %01010000 'DIRECCIÓN DEL POTENCIÓMETRO 2
SYMBOL VOLUMEN1 %10100010 'INSTRUCCIÓN DE POSICIÓN AL CURSOR DEL POTE1
SYMBOL VOLUMEN2 %10100010 '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

INICIO: 'INICIO PROGRAMA PRINCIPAL

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 CONTACTO I2C
BUSOUT SOYPOTE1 'ME VOY A COMUNICAR CON EL POTENCIÓMETRO 1
BUSOUT VOLUMEN1 'LE INDICO QUE VOY A MOVER SU CURSOR
BUSOUT D 'ESCRIBO EN EL REGISTRO EL VALOR
'ALMACENADO EN LA VARIABLE

DELAYMS 5 'ESPERO 5 MILISEGUNDOS HASTA ENVIAR
'LA SIGUIENTE ORDEN

BUSOUT SOYPOTE2 'ME VOY A COMUNICAR CON EL POTENCIÓMETRO 2
BUSOUT VOLUMEN2 'LE INDICO QUE VOY A MOVER SU CURSOR
BUSOUT D 'ESCRIBO EN EL REGISTRO EL VALOR
'ALMACENADO EN LA VARIABLE
BSTOP 'TERMINO EL CONTACTO 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 la línea de comando.
 

Importante: Si lo que encuentras aquí te resulta útil,  ayúdanos a mantener este sitio. Cualquier donación es bienvenida. Tu apoyo nos permitirá acceder a nuevos materiales y a montajes más interesantes y útiles. Gracias por ayudarnos a hacer Servisystem cada día mejor. Tu ayuda será muy importante para nosotros. Gracias.

 

 

 
     
  Indice de montajes 2