import time
import math
Vs=12 # Tegangan Open Circuit Solar Panel
Rs=1 # Resistansi Output Solar Panel
Ri=1 # Rasistansi Input BuckBoost
Vi=6 # Tegangan Input BuckBoost
Ii=1 # Arus Input BuckBoos
Pi=6 # Daya Input BuckBoost
Ro=1 # Resistansi Output BackBoost
Vo=0 # Tegangan Output BuckBoost
Io=0 # Arus Output BuckBoost atau Input Bateray
Po=6 # Daya Output BuckBoost
Vb=10 # Tegangan Open Circuit Baterai
Rb=0.1 # Resistansi Baterai
P=0 # Daya masuk Rb + Baterai
dc=0.65 # Duty Cycle BockBoost
A=0
def SolarPanel():
global Vs, Rs
Vs=15
Rs=1
def BuckBoost():
global A, dc, Vi, Vo, Vs, Rs, Ri, Ro, Pi, Po
Ii=Vs/(Rs+Ri)
if(Ri>1e30):
Vi=Vs
else:
Vi=Vs*Ri/(Rs+Ri)
Pi=Vi*Ii
Po=0.9*Pi
A=dc/(1-dc)
Vo=Vi*A
if(Po==0):
Po=1e-30
Ro=Vo**2/Po
def Battery():
global A, Vi, Vo, Ri, Ro, Ii, Io, Rb, Vb
Io=(Vo-Vb)/(Ro+Rb)
if(Io<0):
Io=0
Vb+=0.01*Io
Ii=A*Io/0.9
if(Ii==0):
Ii=1e-20
Ri=Vs/Ii-Rs
dcL=0
def MPPT():
global Vo, Ro, Rb, Vb, P, dc, dcL
PL=P
Io=(Vo-Vb)/(Ro+Rb)
if(Io<0):
Io=0
V=Io*Rb+Vb
P=Io*V
dP=P-PL
ddc=dc-dcL
if(ddc==0):
ddc=1e20
dcL=dc
dc=dc+0.001*dP/ddc
if(dc>1):
dc=1
if(dc<0):
dc=0
while True:
SolarPanel()
print(f"Solar Vi:{Vi} Ii:{Ii} Ri:{Ri} dc:{dc} Vo:{Vo} Ro:{Ro} Io:{Io} Po:{Po} Vb:{Vb}")
BuckBoost()
print(f"Conv Vi:{Vi} Ii:{Ii} Ri:{Ri} dc:{dc} Vo:{Vo} Ro:{Ro} Io:{Io} Po:{Po} Vb:{Vb}")
Battery()
print(f"Batt Vi:{Vi} Ii:{Ii} Ri:{Ri} dc:{dc} Vo:{Vo} Ro:{Ro} Io:{Io} Po:{Po} Vb:{Vb}")
MPPT()
print(f"MPPT Vi:{Vi} Ii:{Ii} Ri:{Ri} dc:{dc} Vo:{Vo} Ro:{Ro} Io:{Io} Po:{Po} Vb:{Vb}")
#input("")
time.sleep(.1)