program main
    
    double precision :: q, k, beta, alpha
    double precision :: G, G_ref, CR_PTC, T, T_cell, T_ref, Voc_ref, Isc_ref
    double precision :: Vt, n_min, n_max, coef, n
    double precision :: Voc, Isc, I0, IL
    double precision :: Jsc_ref, Jmp_ref, APV
    double precision :: Rs, Vmp, Imp, Pmp, RA, P_mppt, Rss

        double precision :: Vtt, S, Rpv, Rpvv
    
    q = 1.602e-19        ! Carga del electrón (C)
    k = 1.381e-23        ! Constante de Boltzmann (J/K)
    beta  = - 0.0023     ! Coef. temperatura de Voc (V/°C)
    alpha =   0.0006     ! Coef. temperatura de Isc (A/°C)
    
    Vt = (k * T)/q       ! Voltaje térmico

! ---- ---- ---- ---- ---- ---- ---- Datos de ficha técnica y parámetros conocidos

    G = 990 !* CR_PTC             ! Irradiancia de referencia (W/m²)
    G_ref = 1353         ! Irradiancia de referencia (W/m²)
    
    CR_PTC = 16.92       ! Relación de concentración
    
    T_cell = 54.85
    T = T_cell + 273.15  ! Temperatura de la celda (°C)
    T_ref = 25 + 273.15  ! Tempertura de referencia (°C)

    Jsc_ref = 16.8e-3
    Jmp_ref = 16.0e-3
    APV     = 12         ! Área de la celda solar (cm^2)
    
    Voc_ref = 2.63       ! Voltaje de circuito abierto (Voc) de refrencia (V)
    Vmp_ref = 2.29       ! Voltaje de máximo punto de potencia (MPP) de refrencia (V)
    
    Isc_ref = Jsc_ref * APV  ! Corriente de corto circuito (Isc) de referencia (A)
    Imp_ref = Jmp_ref * APV  ! Corriente de máximo punto de potencia (MPP) de referencia (A)

    Vt = (k * T)/q           ! Voltaje térmico
    
    n_max = 2
    n_min = 1
    coef = 0.0015
    n = n_max + (n_min - n_max) * exp(-coef * G)

! ---- ---- ---- ---- ---- ---- ---- Cálculo de Voc e Isc

    Voc = Voc_ref + (((n * k * T)/q) * log(G/G_ref)) + (beta * (T - T_ref)) ! Voltaje de circuito abierto (Voc)
    Isc = Isc_ref * (G/G_ref) * (1 + alpha * (T - T_ref)) * CR_PTC          ! Corriente de corto circuito (Isc)
    !Isc = Isc_ref * (G/G_ref) * CR_PTC          ! Corriente de corto circuito (Isc)

! ---- ---- ---- ---- ---- ---- ---- Cálculo de I0 e IL
    
    I0 = (Isc)/(exp(Voc/(n * Vt)) - 1 )                ! Corriente de saturación inversa del diodo (I0)
    IL = Isc * (G/G_ref) * (1 + (alpha * (T - T_ref))) ! Fotocorriente generada (IL) 

! ---- ---- ---- ---- ---- ---- ---- Cálculo de Rs

    Rs = ( ( (Voc - Vmp)/(Imp) ) * ( T/T_ref )**(beta) ) * (1/CR_PTC)

    Rss = ( (n * k * T)/(q * Imp ) ) * log( (IL + I0 - Imp)/(I0) ) - (Vmp/Imp)

! ---- ---- ---- ---- ---- ---- ---- Obtención del punto de máxima potencia (Pm) "

    Vmp = ( (n * k * T)/q) * log( ( (n * k * T )/(q * I0) ) * (Isc/Voc) )
    Imp = IL + I0 - ( (n * 1 * k * T)/q ) * ( Isc/Voc )
    Pmp = Imp * Vmp

    RA = 40            ! Relación entre las áreas de cada celda de PV y el total del PTC
    P_mppt = Imp * (Vmp * RA)     ! Potencia producida por todas las celdas del PTC


! ---- ---- ---- ---- ---- ---- ---- Modelo Explícito "

    Vtt = Voc/16.11
    !Vttt = - (S + )
    S = 0.9
    !Rpv = (Vmp/Imp) - (Vtt/(Isc-Imp))

    Rpv = (Vmp/Imp) - (Voc/(16.11*(Isc-Imp)))
    
    !Rpvv = -(S*(Isc/Imp)) + (Vmp/Imp) * (1-(Isc/Imp))

    Rpvv = -(S*(Isc/Imp)) + (Vmp/Imp) * (1-(Isc/Imp))


        print *, "Modelo Explícito (Rpv): ", Rpv
        print *, "Modelo Explícito (Rpvv): ", Rpvv

    print *, "Voc (V): ", Voc
    print *, "Isc (A): ", Isc
    
    
    print *, "Vmp  (V): ", Vmp
    print *, "Imp  (A): ", Imp

    print *, "I0  (A): ", I0
    print *, "IL  (A): ", IL
    
    print *, "Rs  (Ω): ", Rs
    print *, "Rss (Ω): ", Rss
    print *, "Pmp (W): ", Pmp
    print *, "P_mppt (W): ", P_mppt

end program main

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: