5 votos

Banco de resistencias optmizer

Tengo un problema del mundo real en el que las matemáticas me superan. Estoy tratando de montar un banco de resistencias automatizado muy parecido a una caja de décadas. Tengo $18$ canal que pueda conmutar hasta cuatro canales en paralelo a la vez. Cada canal es un valor de resistencia fijo. El sistema tomará una resistencia objetivo y calculará qué canales debe encender (hasta cuatro de los $18$ ) para conseguir la resistencia más cercana al objetivo. Esa parte es fácil. La parte con la que necesito ayuda es la de elegir los valores de las resistencias fijas para el $18$ canales. Quiero minimizar el error entre la resistencia objetivo y del valor de la resistencia de los cuatro canales conmutados. Esto es lo que tengo:

$R_t$ = resistencia del objetivo

$R_1$ = $1$ de $18$ valores fijos

$R_2$ = $1$ de $17$ valores fijos (un valor fijo utilizado para $R_1$ )

$R_3$ = $1$ de $16$ valores fijos (dos valores fijos utilizados para $R_1$ & $R_2$ )

$R_4$ = $1$ de $15$ valores fijos (tres valores fijos utilizados para $R_1$ , $R_2$ & $R_3$ )

Tomemos el caso en el que siempre cambiamos en cuatro canales por lo que el error sería:

$$\left|\frac{1}{R_t} - (\frac{1}{R_1}+\frac{1}{R_2}+\frac{1}{R_3}+\frac{1}{R_4})\right|$$

Pongamos algunos límites. La resistencia objetivo puede ser de $25$ a $300$ y cualquiera de los $18$ Los canales de resistencias fijas pueden ser de $25$ a $10,000$

Estaba pensando en la integral de $25$ a $300$ es igual a cero pero no quiero que la suma de los errores sea cero. Quiero que el mayor error (para $25\to300$ ) para que sea lo más pequeño posible. Además, no sé cómo lidiar con el problema de que $R_1\to R_4$ puede cambiar a cualquiera de los $18$ valores fijos en cualquier momento. No sé cómo trabajar los valores fijos en la ecuación y resolver para ellos.

1voto

Hagen von Eitzen Puntos 171160

Afortunadamente, se mide el error por la resistencia recíproca, no por la resistencia en sí. Esto nos permite trabajar simplemente con los recíprocos y sus sumas. Así, lo que buscamos es $N=18$ números $a_1,\ldots,a_{18}$ tal que los números que se pueden obtener como sumas de hasta cuatro de estos números sean lo más uniformemente densos posible en un rango dado.

Sin el límite de cuatro sumandos, simplemente dejaríamos que $a_k=2^{k-1}u$ para que sea adecuado $u$ entonces podemos representar cualquier múltiplo de $u$ formulario $0$ hasta $(2^N-1)u$ . Dejaremos caer el $u$ por ahora e intentar producir el mayor número posible de enteros consecutivos,

Para las restricciones dadas, vamos a probar lo que podemos obtener dejando que $a_k=A+(k-1)$ por ejemplo: Con un sumando podemos conseguir $A,A+1,A+2,\ldots,A+n-1$ . Con dos sumandos podemos conseguir sin duda $2A+1,\ldots,2A+2n-3$ . Con tres sumandos obtenemos $3A+3,\ldots,3A+3n-6$ . Y con cuatro sumandos $4A+6,\ldots,4A+3n-10$ . Así que para cubrir un rango contiguo de enteros, necesitamos $A$ sea un número entero con $$ 2A+1\le A+n,\quad 3A+3\le 2A+2n-2,\quad 4A+6\le 3A+3n-5$$ o $A\le \min\{n-1, 2n-5, 3n-11\}$ . Así que para $n=18$ podemos elegir $A=17$ y, por lo tanto, cubre todos los números enteros de $17$ a $112$ . Por desgracia, este método es muy desperdicio (porque muchos de los ${18\choose 4}+{18\choose 3}+{18\choose 2}+{18\choose 1}=4047$ producen el mismo total de $R$ ), y con $\frac{112}{17}\approx 6.6 \ll 12=\frac{300\,\Omega}{25\,\Omega}$ Vemos que conseguimos cubrir simplemente el rango que queremos.

Definitivamente se necesitan mejores picos para el $a_k$ para poder utilizar más combinaciones posibles. Hay que acercarse un poco al concepto de potencias de dos... Supongo que gran parte de este proceso implica una buena dosis de ensayo y error.

1voto

String Puntos 8937

Creo que usaría $$ a_k:=\operatorname{int}(25\cdot 400^{k/17}) $$ que da lugar a los valores $$ \{25, 35, 50, 71, 102, 145, 207, 294, 419, 596, 848, 1206, 1716, 2442, 3473, 4941, 7029, 10000\} $$ nota que $400=10000/25$ . Esto le permitirá igualar la resistencia de cualquier objetivo $R_t\in[25,300]$ con al menos cuatro bits significativos de precisión, ya que $300\times 2^4=4800<10000$ . Elegir cuatro resistencias será como elegir cuatro decimales no nulos en una base $2$ representación de $1/R_t$ . Por lo tanto, si esta representación tiene muchos ceros, la precisión será mayor.

0voto

treaki Puntos 14

Usted tiene

  • 18 combinaciones para una resistencia conectada
  • $\frac{18 \times 17}{2}=153$ combinaciones para que dos resistencias se conecten
  • $\frac{18\times 17\times 16}{3 \times 2}=816$ combinaciones para que tres resistencias se conecten
  • $\frac {18 \times 17 \times 16 \times 15}{4 \times 3 \times 2}=3060$ combinaciones para que cuatro resistencias se conecten

Por lo tanto, 4047 opciones en total para elegir.

Pregunta cero

Si se trata de una aplicación de gran corriente, ¿podría una resistencia de 25 ohmios manejar la corriente, por ejemplo, o va a tener que repartirla entre el banco de resistencias por seguridad?

Pregunta uno

Si se trata de un ejercicio de programación integrada para la conmutación, ¿tiene la posibilidad de determinar previamente todas las combinaciones admisibles, guardarlas en el hardware clasificado por orden de magnitud y realizar una búsqueda en el momento en que se requiera la conmutación?

Aproximadamente 48kB de almacenamiento (valor, ubicación de la resistencia uno, ubicación de la resistencia dos, ubicación de la resistencia tres, ubicación de la resistencia cuatro).

Segunda pregunta

Cuando pones varias resistencias en paralelo, la resistencia total es menor que la resistencia más pequeña, por lo tanto, para optimizar tu problema, puedes desear resistencias fijas que sean comparativamente grandes comparadas con tu resistencia objetivo más pequeña.

Tercera pregunta

¿La tolerancia de error tiene que ser aproximadamente la misma para todos los valores objetivo, o hay margen para un error mayor en uno de los extremos del espectro que en el otro?

Epílogo

  • No creo que matemáticamente, seas capaz de resolver esto en una escala de tiempo práctica, por lo que te sugeriría que generaras una simulación utilizando un lenguaje de programación como c,c++, python...
  • Sin saber más sobre sus circunstancias, esto es todo lo que puedo sugerir en este momento sin poner en peligro mi integridad y su equipo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X