Resistencias espaciadas logarítmicamente usando interruptores

Si desea un conjunto de resistencias espaciadas linealmente, puede usar una escalera de resistencias espaciadas logarítmicamente y acortar diferentes combinaciones, como se describe aquí .

¿ Hay alguna manera de obtener un conjunto de resistencias espaciadas logarítmicamente ?

Caso más simple:

Si tiene 2 interruptores SPST, hay 4 estados diferentes en los que pueden estar (apagado-apagado, encendido-apagado, apagado-encendido, encendido-encendido).

¿Hay alguna forma de conectar estos interruptores con (cualquier arreglo de) resistencias, de modo que la resistencia total entre dos nodos de los 4 estados sea {1, 10, 100, 1000}? En otras palabras, un reóstato logarítmico controlado digitalmente. Los estados no tienen que estar en ningún orden en particular.

Si esto es posible, ¿puede extenderse a un mayor número de interruptores (8 valores de 3 interruptores, 16 de 4, etc.)?

Sería un desafío de codificación divertido, creo: P
¿Alguna razón por la que no podrías usar un mosfet de subumbral?
@bdegnan Hay otras alternativas, solo tengo curiosidad sobre esto desde una perspectiva teórica. ¿Es posible hacer esto? Parece que lo es, pero no pude encontrar ninguna solución.
@endolith Tenía algunos MOSFET que tenían una pendiente de 100 mV por década en el subumbral. Los usamos para retroalimentación logarítmica, pero tenías que estar seguro de que estabas saturado. El hecho de que tengamos 100 mV por década nos permitió hacer una escalera R2R para controlar fácilmente la puerta.
¿Qué tal el divisor Kelvin_Varley? utilizado en los estándares de voltaje de precisión.
@WesleyLee Así que lo intenté. Configure las 15 ubicaciones de resistencia posibles para 2 terminales externos y 2 interruptores, y optimice sus valores. Encontró soluciones para {1, 2, 3, 4}, pero funcionó durante 27 horas sin encontrar nada para {1, 10, 100, 1000}, así que creo que es imposible. Entonces, la siguiente pregunta es: puede obtener 3 estados espaciados entre registros de 2 conmutadores, pero ¿puede obtener más de 4 de 3 conmutadores?
@endolith ¿Qué tal 10 de 4 interruptores? Ver mi respuesta actualizada.
¡@Neil_UK 10 de 4 es genial! Necesito modificar mi programa para probar cosas como su cadena de resistencias en lugar de simplemente forzar bruscamente todas las topologías posibles de resistencias.
@endolith arregló mi respuesta e ilustró las que funcionan.

Respuestas (2)

Disfruto de los pequeños acertijos combinatorios y de las preguntas "qué pasaría si", y trato de sacar la máxima utilidad de las situaciones limitadas. Entonces, aunque espero que mis 'soluciones' no sean exactamente lo que está buscando, pueden provocar algún pensamiento y posiblemente más experimentos.

Si los interruptores en serie como en una caja de resistencia convencional de 1, 2, 4, 8 no funcionan, ¿qué tal un arreglo en paralelo? ¿Te gustan estas configuraciones?

esquemático

simular este circuito : esquema creado con CircuitLab

Es un poco complicado calcular manualmente, o incluso crear una hoja de cálculo para calcular la resistencia total para todas las combinaciones de interruptores, así que escribí un programa en Python para procesar los números y usé el optimizador scipy para encontrar buenos valores, como si el 3 La solución de resistencia parece sistemática, no es obvio cómo eso se extiende a más resistencias. Si quieres una copia para jugar, solo pídela.

La disposición superior produce las siguientes resistencias de extremo a extremo para las 4 combinaciones de interruptores: 47 ohm, 100 ohm, 220 ohm, 470 ohm. Bonito registro, ¡eh! Incluso sigue las selecciones de resistencia E3.

Al agregar más interruptores, se obtienen pasos más finos, pero obtenemos menos de 2^n pasos de n interruptores, e incluso menos pasos que están bien espaciados.

La segunda figura proporcionó 14 configuraciones de resistencia únicas, cubriendo un rango de 28.4: 1, con las 10 más uniformemente espaciadas geométricamente siendo ...

17.2, 23.3, 32.3, 47.9, 67.0, 100.0, 149.2, 222.7, 332.4, 488.1

... que tienen relaciones de paso entre 1,36 y 1,49. ¡Aparte del primero, esos valores están muy cerca de la serie E6, 22, 33, 47, 68, 100, 150, 220, 330, 470!

Esta es una gráfica en un eje logarítmico de las resistencias

ingrese la descripción de la imagen aquí

Desafortunadamente, las cosas no mejoran mucho cuando agregamos aún más interruptores. Probé 8 interruptores, 9 resistencias. Probé valores aleatorios, valores optimizados, spreads ajustados, spreads amplios. Sin embargo, siempre había un gran paso, a menudo varios, en el medio del rango. Si el gran paso hubiera sido al final, hubiera sido más tolerable. Pero un gran paso en el medio paraliza la usabilidad de propósito general, no puede garantizar que podrá encontrar el paso que desea.

Aquí hay un ejemplo de una ejecución aleatoria. Esto permite una elección aleatoria para cada resistencia en el rango de 100 a 500 ohmios.

ingrese la descripción de la imagen aquí

Más de dos décadas de variación, y en su mayoría pasos finos. Pero puede ver esos pasos más grandes, el más grande es la relación 1.35, muy poco mejor que el caso de 5 resistencias. Entonces, si bien los interruptores adicionales mejoraron mucho el rango, la finura en las resistencias más bajas, la falta de mejora en los grandes pasos en las resistencias superiores significa que no siento que la extensión a más interruptores sea rentable. Si bien la optimización puede mover los grandes pasos, en realidad no los reduce tanto.

\editar 2019\

Una especie de tema relacionado. Quería hacer algunos experimentos de baja corriente y, para simplificar eso, albergar algunas resistencias de gran valor y amplio rango. Me gusta minimizar el número utilizado y maximizar el número de posibilidades de conexión. Se me ocurrió el siguiente arreglo usando resistencias de la serie E3.

esquemático

simular este circuito

Cada unión va a un enchufe de 4 mm. La conexión a cada resistencia a su vez obviamente me da la serie E3.

Conexión a pares de resistencias en serie, por ejemplo R4+R5 = 3,2 M (en lugar de 3,3 M). Los otros pares dan aproximadamente las otras resistencias de interpolación en la serie E6. 1, 1,47 (1,5), 2,2, 3,2 (3,3), 4,7, 6,9 (6,8).

Conexión a cuatro resistencias en serie, por ejemplo R4+R5+R6+R7 = 17,9 M (en lugar de 18 M). Los otros quads dan aproximadamente la mitad de las resistencias de interpolación restantes en el rango E12.

Conexión a tres resistencias en serie, con la del medio en cortocircuito con un enlace, por ejemplo, R4+R6 = 5,7 M (en lugar de 5,6 M). Los otros 'pares espaciados' dan aproximadamente las otras resistencias de interpolación restantes en el rango E12.

/editar 2019\

\editar 2020\

Desafortunadamente, cualquier ventaja real para este tipo de disposición de resistencia/interruptor se desmorona si desea extenderla a rangos útiles.

Mi solución de 4 interruptores y 5 resistencias maneja un rango de 28:1, con proporciones de 1,5:1 entre pasos. Esa relación significa que se pueden apilar dos para obtener un rango de 1000:1, con dos interruptores adicionales o un interruptor c/o. Así que ahora tenemos una solución de cambio de 9 (más o menos) para 1000:1. Sin embargo, no es obvio cómo controlar los interruptores para cualquier valor de resistencia dado, por lo que el control uC es casi obligatorio.

¿Existen otras formas mejores de obtener 1000:1 en 9 conmutadores con un tamaño de paso similar de 1,5:1? Sí hay. Considere una cadena en serie como la que sugerí en 2019, 10, 22, 47, 100, 220, 470, 1000, 2200, 4700, pero ahora cada una con un interruptor de cortocircuito. Cualquier interruptor abierto, por supuesto, le da uno de los valores de resistencia de la serie E3. Cualesquiera dos interruptores adyacentes abiertos le brindan los otros valores de resistencia E6, con relaciones entre pasos de 1.5: 1. Es obvio cómo extender la serie a un rango más amplio. Si no está interesado en una serie larga de interruptores (demasiados contactos de interruptor inciertos en serie), entonces todo en paralelo también funcionará y le dará las mismas proporciones.

¿Existe una forma aún mejor de obtener la interpolación en un rango de 1000:1? Vayamos a 10 interruptores en lugar de 9, no es un gran aumento. Las proporciones de las resistencias E3 eran individualmente de 2,2:1, lo que significaba que había algunos valores de resistencia que no podían generarse ni siquiera con combinaciones arbitrarias de interruptores. Sin embargo, con 10 conmutadores, podemos cubrir un rango de 1000:1 con relaciones de 1,995:1, muy, muy cerca del binario. El binario verdadero nos daría 1024: 1, solo un poco diferente de las buenas potencias de 10. Eso significa que podemos generar cualquier valor de resistencia deseado dentro de una tolerancia obvia. El hecho de que la relación sea ligeramente inferior a 2:1 significa que si esta disposición se utilizara como ADC, faltarían códigos. Como DAC, eso no importa, algunas resistencias tendrían más de una forma única de construirlas. Sin embargo,

Este DAC podría usar resistencias como 1, 2, 4, 8, 16, 32, 63, 125, 250, 500, para que la adición sea sencilla. El error del 2,4% se absorbe en un par de pasos en el medio. El error del binario está por debajo de la resolución incluso para hasta 5 bits adyacentes que se usan para generar un valor de resistencia, lo que nos acercará a un par de por ciento de cualquier valor que especifiquemos, dentro del rango del DAC.

Como una cadena en serie con interruptores en cortocircuito, es bastante fácil hacer la aritmética mental para elegir un valor resistivo específico. El arreglo paralelo sería más complicado. Puede ser útil etiquetar los interruptores con la conductancia, por lo que 0.001, 0.002 ... 0.25, 0.5, que se suman a medida que cerramos los interruptores, por lo que solo necesitamos hacer una inversión de nuestra resistencia objetivo a una conductancia.

/editar 2020\

Sí, ¿puedes publicar tu código en alguna parte?
@endolith Busque al usuario NeilT-UK (observe la letra adicional) en github, es el repositorio con nombre obvio. Es un poco complicado, así que pido disculpas, soy un ingeniero electrónico que también programa, en lugar de un programador. La configuración de mi interruptor particular está integrada en el código, necesita reescribirse para aceptar otros.
¿Todavía tienes ese código Python por ahí? Me encantaría echarle un vistazo. Estoy obsesionado con descubrir cómo hacer que funcione un pote de registro conmutado.
@endolith agregó un poco más relacionado con mi respuesta
@endolith Hay otras personas en eso. Encontré este artículo hoy en Electronic Design. Solo obtiene una relación de 8:1 con 5 resistencias y 4 interruptores c/o, con una relación de paso mayor de 1,5:1, mientras que yo obtengo una relación de 28:1 con 5 resistencias y 4 interruptores de acción simple, y una relación de paso mayor de 1.49:1. ¡Creo que gano por tres!
@endolith Empecé a pensar en enviar un artículo a Electronic Design en este sentido, así que pensé un poco más en la aplicación. Una relación general pequeña no es demasiado útil, las adiciones de resistencias extrañas no son demasiado útiles. Apenas necesitamos más hardware para hacer que algo sea mucho más utilizable, que se extienda fácilmente a un rango arbitrariamente amplio, tal vez no se necesite control uC, y es la escalera de interruptores binarios (o casi) lo que se pretendía reemplazar en primer lugar. ¡Suspiro!
Siempre tuve la intención de que fuera controlado por μC

En dos terminales, con solo excitación binaria (activada o desactivada), la razón por la que la escalera R, 2R, 4R, 8R funciona para generar "todos los valores posibles" es porque el sistema numérico de las resistencias coincide con el sistema numérico de la excitación.

Entonces, tiene 0 con todos los interruptores cerrados, 1 con el primero abierto, 2 con el segundo abierto, 3 con el primero y el segundo abiertos. Y etc si gustas.

Desafortunadamente, para obtener una serie de décadas reales, necesita tantos interruptores como desee décadas útiles por encima de 1, en una configuración como esta:

esquemático

simular este circuito : esquema creado con CircuitLab

Lo que le permite también hacer otros valores extraños, pero no "múltiplos" fáciles, ya que el sistema de excitación no coincide numéricamente con el sistema de salida y, por lo tanto, requiere inherentemente elementos no lineales si quiere asegurarse de que 2 entradas binarias hagan ( solamente) las 4 salidas deseadas.