Cómo calcular la resistencia total de este circuito eléctrico

Soy programador y estoy haciendo una Inteligencia Artificial para un juego de mesa llamado Hex. Como no estoy tan familiarizado con la ingeniería eléctrica, necesito su experiencia en este tema.

Ahora estoy trabajando en la función de evaluación de la junta. He representado el tablero como un gráfico, ya que eso es lo que una computadora necesita como entrada. Pero en este caso también puedes verlo como un circuito eléctrico. El circuito generalmente se ve así, solo que entonces 11x11 hexágonos:

ingrese la descripción de la imagen aquí

Los bordes/resistencias son todos 0,1 o INF (infinito).

Mi objetivo es dar una puntuación a la pizarra. Quiero aplicar un voltaje eléctrico a los dos nodos opuestos del límite y luego verificar la resistencia total entre ellos.

He hecho un posible escenario en un tablero de 2x2. Los puntos son nodos, los bordes son resistencias, los números los valores de resistencia y las flechas son mis suposiciones de flujo actual: ingrese la descripción de la imagen aquíasí que, según lo entiendo, tengo que hacer algo llamado análisis nodal. Así que hice para cada nodo una ecuación donde el voltaje que entra en un nodo es el mismo que el que sale. Así que aquí están las ecuaciones que hice:

V 1 : ( V 1 V 2 ) 0 + ( V 1 V 3 ) 1 = 10
(Por lo que entiendo, el número de fuente de voltaje no importa, así que elegí 10).

V 2 : ( V 1 V 2 ) 0 = ( V 1 V 3 ) 1 + ( V 2 V 4 ) 1

V 3 : V 1 V 3 1 + ( V 2 V 3 ) 1 = ( V 3 V 4 ) 2 + ( V 3 V 5 )

V 4 : ( V 2 V 4 ) 1 + ( V 3 V 4 ) 2 = ( V 4 V 5 ) + ( V 4 V 6 ) 1

V 5 : ( V 3 V 5 ) + ( V 4 V 5 ) = ( V 5 V 6 )

V 6 : ( V 4 V 6 ) 1 + ( V 5 V 6 ) = 10 ?
(Supongo que la salida actual aquí es 10, pero no estoy del todo seguro)

Entonces, con algunas manipulaciones algebraicas, puse los números en una matriz, donde los voltajes son las variables, por supuesto: (también asumí que dividir por cero es lo mismo que multiplicar por Infinito, no sé si esa es la forma correcta).

1 0 0 0 = 10

1 1 0 0 = 0

1 1 2.5 0.5 0 0 = 0

0 1 0.5 2.5 0 1 = 0

0 0 0 0 0 0 = 0

0 0 0 1 0 1 = 10 ( ? )

Si resuelves esto obtienes:

V 1 : norte a norte

V 2 : norte a norte

V 3 : 0.05

V 4 : 0.05

V 5 : 0

V 6 : 0.05

Tengo dos preguntas ahora:

1.¿Dónde está mi error? (porque no creo que los voltajes puedan ser NaN o negativos)

2.Si calculé estos voltajes correctamente, ¿cómo calculo la resistencia total?

Superficialmente puedo ver algunas cosas que pueden estar causando confusión. Parece que está mezclando la terminología entre voltaje y corriente: la corriente entra/sale de un nodo, mientras que el voltaje es una diferencia de potencial entre 2 nodos. Etiquetar sus nodos como V1, V2, Vx hace que parezca que puede tener una medición de voltaje en un solo punto, no puede. Los 2 nodos conectados por una resistencia 0 no son 2 nodos diferentes ; son el mismo nodo y, por lo tanto, el voltaje "entre ellos" debe ser 0, por lo que tampoco puede hacer un cálculo significativo para la corriente allí.

Respuestas (2)

Establecer nodo V 6 = 0 V , para comenzar. (Es conveniente y puede hacer esto exactamente una vez; para cualquier nodo que desee). También tenga en cuenta que V 1 = V 2 , por lo que cuando busque bordes, deberá encontrar todos los bordes que emanan de todos esos "súper" nodos compartidos. (Entonces V 2 no aparecerá a continuación). También noté que su ejemplo más pequeño tiene un "2" como valor para un borde, cuando creo que antes dijo que solo 0, 1 o era posible Sin embargo, viviré con eso.

Entonces, el resumen aquí es: (1) que los nodos conectados por 0 son el mismo nodo y debe encontrar todos los bordes que emanan del mismo nodo al configurar las ecuaciones; y, (2) que bordea con puede ser ignorado; y (3) las fracciones con el nodo especial que usted designe como 0 en el numerador se pueden eliminar.

Tenga en cuenta que V 5 es, en efecto, un vértice aislado. Por lo tanto, no podrá calcular un voltaje para él. Eso debería estar bien. Además, haces que tenga un vértice de hoja (no sabría cómo lidiar con hacer tu gráfico). El voltaje allí será desconocido si el borde es y será igual al voltaje en el nodo conectado, de lo contrario. Probablemente lo igualaría, en tales casos, y terminaría con eso.

Finalmente, no voy a otro con el Ω símbolo (puede asumirlo, si lo desea). En su lugar, usaré la notación de borde de R 23 , por ejemplo, para representar la resistencia de borde indicada. Si se comparte un nodo, usaré V 12 , por ejemplo, para indicar ese supernodo. Tu ejemplo de conjunto de ecuaciones es:


V 12 R 13 + V 12 R 23 + V 12 R 24 = V 3 R 13 + V 3 R 23 + V 4 R 24 V 3 R 13 + V 3 R 23 + V 3 R 34 = V 12 R 13 + V 12 R 23 + V 4 R 34 V 4 R 24 + V 4 R 34 + V 4 R 46 = V 12 R 24 + V 3 R 34


Lo anterior se puede convertir en:

V 12 1 R 13 | | R 23 | | R 24 + V 3 1 R 13 | | R 23 + V 4 1 R 24 = 0 V 12 1 R 13 | | R 23 + V 3 1 R 13 | | R 23 | | R 34 + V 4 1 R 34 = 0 V 12 1 R 24 + V 3 1 R 34 + V 4 1 R 24 | | R 34 | | R 46 = 0

De lo anterior, las simetrías ahora también deberían ser obvias. (Observe las constantes y sus posiciones). La diagonal principal tiene valores únicos, pero el resto tiene valores que aparecen dos veces en posiciones simétricas fáciles de notar.


Pero no necesitas la primera ecuación, ya que sabes el valor de V 12 . Así que todo se reduce a solo las dos ecuaciones inferiores convertidas a forma de matriz:

V 3 1 R 13 | | R 23 | | R 34 + V 4 1 R 34 = V 12 1 R 13 | | R 23 V 3 1 R 34 + V 4 1 R 24 | | R 34 | | R 46 = V 12 1 R 24

Lo anterior se resuelve en su caso como V 3 = 9 1 6 V y V 4 = 5 5 6 V .


Resuelto para los voltajes de los nodos, puede calcular la corriente simplemente examinando todos los bordes que salen de su nodo 0 (si lo elige como lo hice yo). Solo hay un borde allí, a saber R 46 , por lo que la resistencia total aquí es simplemente R t o t a yo = V t o t a yo I t o t a yo = V 12 [ V 4 R 46 ] = R 46 V 12 V 4 .

Eso funciona para 1 5 7 Ω .


Debería poder generalizar lo anterior, ya que casi ya está cerca de ser automático.

¡Gracias por su respuesta! Tu explicación definitivamente me ayudó a entender mucho mejor el problema. Creo que tendré algunos problemas para encontrar todos los nodos que juntos forman un "supernodo". Es algorítmicamente muy difícil de hacer, y también requerirá más tiempo de computación. ¿No hay alguna manera de mantener el voltaje en cada nodo por separado mientras hago las ecuaciones lineales? Entonces, en lugar de lo que sugirió, convertir V1 y V2 en V12, simplemente manteniéndolos como V1 y V2.
@Math_Max No lo sé, ya que no he dedicado tiempo a tratar de resolver los detalles para las necesidades de su algoritmo. No estoy seguro si otros lo han hecho, tampoco. Ciertamente, no he leído sobre eso todavía. Así que eso me deja con tener que pasar el tiempo que aún no he pasado. Lo que viene inmediatamente a la mente, manteniendo todos los nodos, es que mantienes el "0" en el divisor de cada término a medida que los construyes. Luego haga un segundo paso de procesamiento reconociéndolos, de alguna manera. ¿Personalmente? Sin embargo, escribiría un algoritmo de recorrido gráfico para adaptar el gráfico. Me parece más obvio.

Creo que hay una forma más sistemática de resolver circuitos, por ejemplo, puede formalizar una forma de escribir la lista de red de su circuito y luego implementar [por ejemplo] el algoritmo MNA para resolver todo el circuito por usted, y luego puede obtener la resistencia equivalente del circuito o cualquier otro parámetro de interés. Encontré una biblioteca de python llamada ahkab que implementa el algoritmo de análisis nodal modificado. en caso de que quisiera implementarlo, es posible que desee verificar esto

He escrito un pequeño script que lee la lista de red de estos nodos de circuito hexagonal y hace el cálculo de la resistencia equivalente.

El formato de la lista de red se parece a esto [puede crear su propio formato]

v 1 6 10

1 1 3

0 1 2

1 2 3

1 2 4

2 3 4

1 4 6

end

la primera línea indica que la fuente de voltaje está conectada entre el nodo 1y 6mientras que todas las demás líneas indican el valor de las resistencias y dónde están conectadas <Resistor value> <Node1> <Node2>y endpara terminar de leer la lista de red

Guión en python 3

import ahkab
ckt=ahkab.Circuit("Math_Max circuit")
nodes=[]
gnd=0
rCount=0
def node_replace(a,b):
    #A function for replacing 0 resistive path between nodes        
    for i in range(len(nodes)):
        if(nodes[i][1]==a):
            nodes[i][1]=b
        if(nodes[i][2]==a):
            nodes[i][2]=b

while(True):
    nlst=input().split()
    if(nlst[0]=='end'): break
    if(nlst[0]=='v'):
        gnd=int(nlst[2])
        ckt.add_vsource(nlst[0],nlst[1],ckt.gnd,dc_value=int(nlst[3]))
    else:
        nodes.append([int(nlst[0]),nlst[1],nlst[2]])

for i in range(len(nodes)):
    if(nodes[i][0]==0):
        node_replace(nodes[i][2],nodes[i][1])

for i in range(len(nodes)):
    if(nodes[i][0]!=0):
        gndNode=nodes[i][2]
        if(int(nodes[i][2])==gnd):
            gndNode=ckt.gnd
        ckt.add_resistor('r'+str(rCount),nodes[i][1],gndNode,value=nodes[i][0])
        rCount=rCount+1

results=ahkab.run(ckt, ahkab.new_op())['op']
print("TOTAL CURRENT: ",results['I(V)'][0][0])
print("Equivalent resistance: ",10/abs(results['I(V)'][0][0]))

Este fue el resultado

ingrese la descripción de la imagen aquí

El código funciona evaluando la corriente total usando el algoritmo MNA y luego dividiendo source voltage / total currentpara obtener la resistencia equivalente.

¡Gracias por su respuesta! Desafortunadamente, estoy codificando en Java, por lo que no puedo usar esa biblioteca. Pero he estado tratando de hacer el algoritmo MNA yo mismo, pero todavía me encuentro con el problema de tener que dividir por cero. Veo que en su lista de red, todavía incluye la resistencia cero del 1 al 2. ¿Tiene alguna idea de cómo tratan este problema en la biblioteca?
Por lo que sé, la biblioteca no permite cero resistencias. Esta es la razón por la cual el script anterior tiene dos bucles, el primero verifica las rutas resistivas cero y considera los dos nodos que se conectan entre ellos como un solo nodo, ya que ambos comparten el mismo potencial.