Variar digitalmente el valor de una resistencia

#1
Hola. En mi trabajo tenemos un equipo generador de radiofrecuencia y la misma se regula con un potenciómetro de 25k conectado a un integrado CD4047.
La idea es cambiar el potenciómetro por algo que lo regule digitalmente para poder establecer parámetros predefinidos y límites de configuración.
No quieren cambiar el circuito del CD4047 porque ya tienen en stock como 100 PCBs de ese aparato.
Probé con un potenciómetro digital, el MCP41010, pero no funciona, porque lo que yo necesito no es variar intensidad de señal sino el valor de la resistencia.
No sé si me explico. Lo que necesito es alguna forma de variar el valor de una resistencia digitalmente.
En principio los más "sencillo" que se me ocurre es usar relés e ir switcheando entre resistencias en paralelo, para ir cambiando el valor total, pero me daría una resolución muy pobre sin mencionar lo aparatoso que resultaría.
Me preguntaba si hay algún integrado que me facilitara esa tarea.
Desde ya muchas gracias.
 

Dr. Zoidberg

Well-known-Papá Pitufo
#2
Hay algunos integrados que tienen redes de resistencias ajustadas por láser, pero son de uso específico para control de volumen de audio y controlan la ganancia de la etapa conmutando resistencias, pero la red no está accesible desde el exterior.
Si tenés que conmutar resistencias siguiendo alguna ley de variación (de la cual no has dicho nada) lo más simple es usar relays, y existen relays muuuuy pequeños y aptos para esta tarea: Standexelectronics PDF Viewer
 
#3
Claro. Bien. Es como yo pensaba.
El mi idea era armar algo parecido a como funciona el valor de un byte. Un byte son 8 bits que varían entre 0 y 1 ( se que es una obviedad explicar esto pero bueno).
Mi idea es poner entre 6 y 8 resistencias de distintos valores en paralelo (o en serie?) e ir conectando y desconectando según el valor que quiero obtener.
 

Daniel Lopes

Miembro Geconocido
#5
Hola a todos me sumo a Don Fogo , serias indispensable aomenos aportar aca una parte del circuito original donde aparece lo preset conectado a lo CI CD4047.
!Saludos desde Brasil!.
Att,
Daniel Lopes.
 
#8
Ok, esta es la parte del circuito que tengo que modificar.

cd4047.png El valor de frecuencia se obtiene a partir de la red entre el capacitor de 22p, las resistencias y el potenciometro.
Esas resistencias estan puestas para que lo que maneja el potenciometro no sea absoluto, sino que se mantenga entre un minimo y un maximo.
Me gusto mucho esta idea.
Con 2 IC´s CD4066 + 2 IC´s contadores binarios Up/Down 74193 puedes armar un sistema R2R de ajuste de 8 Bites rudimentario, pero funcional.
Si aportaras mas datos, se podría redondear la idea. ;)
Para hacer la seleccion de resistencias pienso usar un PIC, ya que hay uno que se encarga de manejar un LCD unicamente en una plaquita aparte. No seria problema reemplazar esa placa por una que incluya el control de las resistencias.
Voy a investigar por ese lado.
Gracias.
 

Daniel Lopes

Miembro Geconocido
#10
Tengo una pregunta: ? de cuantos pasos (Steps) quieres en ese Preset Digital?
O sea , cuantos possiveis valores distintos de resistencia quieres en ese Preset Digital.
Se no mucho podrias hacer uso de un contador de decada tipo CD4017 , llaves analogicas tipo CD4066 y varios resistores ( o associación dels) .
Att,
Daniel Lopes.
 
#11
Hola a todos. Despues de investigar bastante y hacer distintas pruebas, tengo finalmente un circuito probado y funcionando muy bien hasta ahora.
Este es el esquema.
circuito.png
Por si no queda muy claro, el circuito lo que hace es puentear o no las resistencias colocadas en paralelo a los switch, los cuales a su vez estan colocados en serie. Asi por ejemplo, si activo todos los switches (poniendo en alto los pines correspondientes) menos R1 y R5 (estos los dejo en bajo), la red completa queda reducida a R1 y R5 en serie, lo cual da 1,6 KOmhs (1k5 + 100 Omhs).
El valor total de la red es de 0 a 25kOmhs. En la practica no llega a cero, calculo que por la resistencia interna de los integrados. Este rango en 8 bits da una sensibilidad de 256 pasos. Tranquilamente se puede ir agregando mas integrados con mas resistencias para ampliar el rango total.
Para no tener que hacer mucho calculo yo, controlo los pines de los CD4066 con un PIC.
El codigo que uso es el siguiente:

C:
#DEFINE  R1 PIN_C3  // Defino los pines a utilizar
#DEFINE  R2 PIN_C2    // Esto permite
#DEFINE  R3 PIN_C1  // conectar los integrados
#DEFINE  R4 PIN_C0    // a donde mas nos convenga
#DEFINE  R5 PIN_C5    // y no estar limitados a
#DEFINE  R6 PIN_C4    // un solo puerto.
#DEFINE  R7 PIN_C7
#DEFINE  R8 PIN_C6


unsigned int8 res_value = 128;   // La variable es un entero de 8 bits sin signo,
                                // es decir abarca de 0 a 255.
void set_res(res_value){
    output_bit (R1, !(bit_test(res_value, 0)) );    // funcion que asigna un valor de 0 o 1
    output_bit (R2, !(bit_test(res_value, 1)) );    // al pin indicado, en esta ocacion
    output_bit (R3, !(bit_test(res_value, 2)) );    // toma el valor correspondiente
    output_bit (R4, !(bit_test(res_value, 3)) );    // testeando los bits del numero
    output_bit (R5, !(bit_test(res_value, 4)) );    // dado en el parametro res_value
    output_bit (R6, !(bit_test(res_value, 5)) );
    output_bit (R7, !(bit_test(res_value, 6)) );
    output_bit (R8, !(bit_test(res_value, 7)) );
    delay_ms(2);
}

/*
    Ejemplo de uso:
    res_value=128;   // asignamos el valor a la variable
    set_res(res_value);  //aplicamos ese valor a los pines
*/
El codigo es obviamente bastante rudimentario, pero tiene ventajas. La primera y principal es no tener que atarnos a manejar un puerto entero del PIC, sino que podemos elegir que pines usar y en que orden.
Otra es el tener el rango del potenciometro como un numero entero guardado en una variable. Esto lo hice asi por si el valor de la resistencia va a depender de algun sensor o es parte o resultado de una operacion matematica.
Algo importante es que el circuito funciona con logica inversa, es decir para activar una resistencia hay que poner el pin correspondiente en estado bajo, y para desactivarla o puentearla se pone el pin en estado alto. Por eso la funcion output_bit tiene el signo "!" antes de test_bit.
Se que se puede mejorar, pero por ahora a mi me sirve muchisimo asi.
Gracias a todos los que colaboraron con informacion y espero que les sea util.
 
Última edición:

Fogonazo

Exorcista & Moderador eventual
#12
Hola a todos. Despues de investigar bastante y hacer distintas pruebas, tengo finalmente un circuito probado y funcionando muy bien hasta ahora.
Este es el esquema.

Por si no queda muy claro, el circuito lo que hace es puentear o no las resistencias colocadas en paralelo a los switch, los cuales a su vez estan colocados en serie. Asi por ejemplo, si activo todos los switches (poniendo en alto los pines correspondientes) menos R1 y R5 (estos los dejo en bajo), la red completa queda reducida a R1 y R5 en serie, lo cual da 1,6 KOmhs (1k5 + 100 Omhs).
El valor total de la red es de 0 a 25kOmhs. En la practica no llega a cero, calculo que por la resistencia interna de los integrados. Este rango en 8 bits da una sensibilidad de 256 pasos. Tranquilamente se puede ir agregando mas integrados con mas resistencias para ampliar el rango total.
Para no tener que hacer mucho calculo yo, controlo los pines de los CD4066 con un PIC. . . . .
Existen IC´s específicos para conmutar muy similares al CD4066 pero con una resistencia interna en el estado "Cerrado" muy, muy inferior.

Por ejemplo: ADG451o ADG441

Existen otros en otras marcas

Edit:
Esta es otra posibilidad, ya mucho mas profesional, (hablando de audio)

NJU72751
 
Última edición:
#14
Claro, si se que hay muchos ICs especializados sobre esto. Y probé algunos, pero este circuito está orientado a variar, no la intensidad de una señal, sino el valor resistivo de una resistencia (valga la redundancia).
Está pensado para utilizarse con integrados que dependen del valor de una resistencia para configurar parámetros, como ya expliqué en los primeros mensajes de este tema.
 

Fogonazo

Exorcista & Moderador eventual
#15
Claro, si se que hay muchos ICs especializados sobre esto. Y probé algunos, pero este circuito está orientado a variar, no la intensidad de una señal, sino el valor resistivo de una resistencia (valga la redundancia).
Está pensado para utilizarse con integrados que dependen del valor de una resistencia para configurar parámetros, como ya expliqué en los primeros mensajes de este tema.
Los IC´s que publiqué (ADG451 y ADG441) son como el CD4066, cuádruple conmutador digital ambos, luego tu le das el uso que te bien en gana ;)
 
#16
Que yo sepa los el funcionamiento de dichos IC es también variar la R, sea esta una "señal" o no ya que muchos trabajan como el esquema o de forma similar, que compartiste
 

Temas similares


Arriba