I'm trying to solve a problem related to dependant voltage sources. I need to provide two answers which either I can't obtain or don't understand why I have obtained it.
What I have done
This is a summary of what I have done, the details are in the section 'Details'.
For calculating the Norton resistance
In summary, I have obtained the correct Norton resistance by using the following KVL equation, and I have obtained the correct result:
V0 - v1 - v2 - v3 + Au = 0
What I don't understand is why Au
is added instead of being substracted, since its polarity is the opposite as V0. As far as I understand, the correct KVL would be:
V0 - v1 - v2 - v3 - Au = 0
With which I obtain a Norton resistance that is wrong. Why is Au
being added instead of subtracted?
Norton current
My second question is about the Norton current. What I have done is calculating the Port B voltage (the node just after R2
), and divide it by the Norton resistance, that is:
Vportb = It / (R3 + Ru)
, where It
is the total current across the loop and Ru
is the Au
equivalent resistance.
And then:
Inorton = Vportb / Rnorton
I obtain the wrong result at this point. What am I missing?
Details
The details about what I have done are below (the language used is SageMath
):
# Declare known constants
V0 = 5
A = 2
R1 = 1
R2 = 3
R3 = 5
# 'i' is the unknown total current across the loop
# v1, v2 and v3 are the voltage drops in R1, R2 and R3 respectively
i = var('i')
v1 = i * R1
v2 = i * R2
v3 = i * R3
# v1 is the votlage drop in R1
u = V0 - v1
# Au --> dependant voltage source shown in the schema
Au = A * u
# (1) Use KVL
KVL1 = V0 - v1 - v2 - v3 + Au == 0
# Shouldn't the above be -Au?
# total current across the loop (solve the KVL equation)
_i = float(solve(KVL1, i)[0].rhs())
print("Total current = %f" % _i)
# voltage across 'u'
_u = V0 - (_i * R1)
print("Voltage across 'u' = %f" % _u)
# Dependant voltage as if it was a resistor
Ru = A * _u / _i
# Norton ressistance
Rn = float(1 / ((1/(R3 + Ru)) + (1/(R1+R2))))
print("Norton ressitance = %f" % Rn)
# Voltage across port B
VB = _i * (R3 + Ru)
# Norton current: voltage across Port B / Norton resistance
In = VB / Rn
print("Norton current: %f" % In)
############### Results ###############
> Total current = 1.363636
> Voltage across 'u' = 3.636364
> Norton resistance = 2.883721
> Norton current: 4.886364
EDIT - One solution found, but still there are things that I don't understand
Reading the comments, I have found the problem but, still, there are several things I don't understand. What I have done now is:
I have removed this part:
# Dependant voltage as if it was a resistor
Ru = A * _u / _i
And I have applied KCL, so add the current through the two branches (R1-R2
and Au-R3
):
I1 = V0 / (R1 + R2)
I2 = 2 * _u / R3
print(I1 + I2)
I still don't understand why treating the dependant voltage source, once I know _u
, as a resistor, is not correct.
In addition, I still don't understand how the wrong KVL equation can give me the right answer while the 'supposed correct one' is causing a failure in my results.
Finally, _i
is supposed to be the total current across the loop, but it is 1.363636
, which does not match with my other result. This is the thing that most disturbs me, it seems that my KVL eq., which takes into account Au
, has given me the current generated only by V0
.
_u
? What do you mean when you say 'inject an amp'? Why specifically one amp? Could you provide equations? Thanks. BTW the language I'm using is SageMath, which relies on Python. \$\endgroup\$ – Martel May 27 '19 at 21:00