You are on page 1of 5

Calculador del voltaje, intensidad y resistencia en un circuito elctrico en C++ en: 6 Noviembre 2008, 18:14 Hola!

a! Acabo de realizar un proyecto que calcula los voltajes, intensidades, y resistencias elctricas que hay en un circuito elctrico de corriente continua. Citar V1 = Voltaje 1 V2 = Voltaje 2 Vt = Voltaje total I1 = Intensidad 1 I2 = Intensidad 2 It = Intensidad total R1 = Resistencia 1 R2 = Resistencia 2 Rt = Resistencia total Cdigo

#include<iostream> using namespace std; main(){ char circ; double x, V1, V2, Vt, I1, I2, It, R1, R2, Rt; x=0; cout << "Introduzca si el tipo de circuito es en (S)erie o (P)aralelo: "; cin >> circ; if ((circ!='S')&&(circ!='s')&&(circ!='P')&&(circ!='p')){ cout << "\n\nERROR: Inserte 'S' si el circuito es en serie o 'P' si es en paralelo"; getchar(); getchar(); return 0;} cout << "\nHa elegido circuito en "; if ((circ=='S')||(circ=='s'))cout << "serie."; if ((circ=='P')||(circ=='p'))cout << "paralelo."; cout << "\nEn caso de desconocerse un dato, inserte '0'.\n"; cout << "\nIndique el voltaje de V1: "; cin >> V1; cout << "Indique el voltaje de V2: "; cin >> V2; cout << "Indique el voltaje de Vt: "; cin >> Vt; cout << "Indique la intensidad de I1: "; cin >> I1; cout << "Indique la intensidad de I2: "; cin >> I2; cout << "Indique la intensidad de It: "; cin >> It; cout << "Indique la resistencia de R1: "; cin >> R1;

cout << "Indique la resistencia de R2: "; cin >> R2; cout << "Indique la resistencia de Rt: "; cin >> Rt;

switch(circ){

case 'S': case 's': while (x<=10){ if((V1!=0) && (V2!=0))Vt=(V1+V2); if((V1!=0) && (Vt!=0))V2=(Vt-V1); if((V2!=0) && (Vt!=0))V1=(Vt-V2); if((I1!=0) && (R1!=0))V1=(I1*R1); if((I2!=0) && (R2!=0))V2=(I2*R2); if((It!=0) && (Rt!=0))Vt=(It*Rt); if(I1!=0){I2=I1; It=I1;} if(I2!=0){I1=I2; It=I2;} if(It!=0){I1=It; I2=It;} if((V1!=0) && (R1!=0))I1=(V1/R1); if((V2!=0) && (R2!=0))I2=(V2/R2); if((Vt!=0) && (Rt!=0))It=(Vt/Rt); if((R1!=0) && (R2!=0))Rt=(R1+R2); if((R1!=0) && (Rt!=0))R2=(Rt-R1); if((R2!=0) && (Rt!=0))R1=(Rt-R2); if((V1!=0) && (I1!=0))R1=(V1/I1); if((V2!=0) && (I2!=0))R2=(V2/I2); if((Vt!=0) && (It!=0))Rt=(Vt/It); x++;} break; case 'P': case 'p': while (x<=10){ if(V1!=0){V2=V1; Vt=V1;} if(V2!=0){V1=V2; Vt=V2;} if(Vt!=0){V1=Vt; V2=Vt;} if((I1!=0) && (R1!=0))V1=(I1*R1); if((I2!=0) && (R2!=0))V2=(I2*R2); if((It!=0) && (Rt!=0))Vt=(It*Rt); if((I1!=0) && (I2!=0))It=(I1+I2); if((I1!=0) && (It!=0))I2=(It-I1); if((I2!=0) && (It!=0))I1=(It-I2); if((V1!=0) && (R1!=0))I1=(V1/R1); if((V2!=0) && (R2!=0))I2=(V2/R2); if((Vt!=0) && (Rt!=0))It=(Vt/Rt); if((R1!=0) && (R2!

=0))Rt=((R1*R2)/(R1+R2));

if((V1!=0) && (I1!=0))R1=(V1/I1); if((V2!=0) && (I2!=0))R2=(V2/I2); if((Vt!=0) && (It!=0))Rt=(Vt/It); x++;} break;

} cout << "\nV1 = " << V1 << " Voltios"; cout << "\nV2 = " << V2 << " Voltios"; cout << "\nVt = " << Vt << " Voltios"; cout << "\nI1 = " << I1 << " Amperios"; cout << "\nI2 = " << I2 << " Amperios"; cout << "\nIt = " << It << " Amperios"; cout << "\nR1 = " << R1 << " Ohmnios"; cout << "\nR2 = " << R2 << " Ohmnios"; cout << "\nRt = " << Rt << " Ohmnios"; cout << "\n Aplication created By: JuaN"; getchar(); getchar(); }

Como sugerencia te dir que podras hacer una aplicacin para calcular las intensidades en cada rama del circuito, por tanto las caidas de tension en cada resistencia. Simplemente sera aplicar el mtodo de mallas. Que como supongo sabrs es aplicar la ley de ohm (R*I=V) pero usando determinantes. Para que sea sencillo slo has de pedir la matriz de resistencias(prestando atencion a los signos) y matriz de voltajes en cada malla. Luego calculas el determinante de la matriz de resistencias y para cada malla sustituyes la columna de resistencias por la de voltajes, calculas el determinante, divides por el determinante de las resistencias y tienes la corriente (intensidad) de malla. Y para calcular la intensidad de las ramas comunes a dos mallas haces la suma o resta segun el sentido de las intensidades. Ejemplo simple: R1 R2 -------| 1 ohm |----o-------| 5 ohm |------| | |

| __ | l | R3 1 ohm | 2 v __ | | | | | | | ----------------------o-----------------------Hipotesis de los sentidos de las corrientes: - Malla 1 (izquierda): sentido horario - Malla 2 (derecha): sentido antihorario R * I= V 2 1 I1 2 1 6 I2 0 21 1 6 = 12 - 1 = 11 I1 = 21 0 6 = 12 - 0 = 12; I1 = 12/11 = 1.09 A I2 = 22 1 0 = 0 - 2 = -2; I1 = -2/11 = -0.18 A (lo que implica que son 0.18 A pero en sentido opuesto a nuestra hipotesis inicial en la malla 2) Como las corrientes por la rama de la resistencia comun a ambas mallas van en sentido contrario se resta, si sale negativo sabemos que va en sentido contrario a lo suspuesto inicialmente. Si fueran en el mismo sentido ambas intensidades se sumarian I3 = I1 - I2 = 0.91 A Como prueba: segun la ley de voltajes de kirchoff la suma delos voltajes a lo largo de cualquier trayectoria cerrada (malla) es cero, luego: Para la malla 1: voltaje que cae en R1= V1 = i1 * R1 -> 1.09 * 1 = 1.09 voltaje que cae en R3= V3 = i3 * R3 -> 0.91* 1 = 0.91 V= 2v - 1.09 - 0.91; V = 0 Para malla 2: voltaje que cae en R2 = V2 = i2 * R2-> 0.18 * 5 = 0.9 V3 ya se calcul V = V3 - V2; V = 0.01 v (si usamos mas decimales veriamos que el voltaje se hace cero) Bueno ... si tienes dudas consulta la documentacion, aunque lo mas complicado sera saber hacer el determinante de una matriz y como veras tmp es que sea demasiado complicado.

Saludos! PD: De forma muy similar puedes implementar la resolucion por nodos, auque para eso ya busca informacion

You might also like