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 :: Rs, Vm, Im, Pm, RA, P_mppt
    
    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 (I/°C)
    
    Vt = (k * T)/q       ! Voltaje térmico

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

    G = 644              ! Irradiancia de referencia (W/m²)
    G_ref = 1000         ! Irradiancia de referencia (W/m²)
    
    CR_PTC = 437         ! Relación de concentración
    
    T_cell = 32.24
    T = T_cell + 273.15  ! Temperatura de la celda (°C)
    T_ref = 25 + 273.15  ! Tempertura de referencia (°C)
    
    Voc_ref = 3.10       ! Voltaje de circuito abierto (Voc) de refrencia (V)
    Isc_ref = 7.95       ! Corriente de corto circuito (Isc) de referencia (I)
    
    Vmp = Voc * 0.91     ! Voltaje de máximo punto de potencia (MPP) de refrencia (V)
    Imp = Isc * 0.95     ! Corriente de máximo punto de potencia (MPP) de referencia (I)

    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))                   ! 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)

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

    Vm = ( (n * k * T)/q) * log( ( (n * k * T )/(q * I0) ) * (Isc/Voc) )
    Im = IL + I0 - ( (n * 1 * k * T)/q ) * ( Isc/Voc )
    Pm = Im * Vm

    RA = 1200            ! Relación entre las áreas de cada celda de PV y el total del PTC
    P_mppt = Pm * RA     ! Potencia producida por todas las celdas del PTC

    print *, "Vmp (V): ", Vm
    print *, "Imp (A): ", Im
    print *, "Pmp (A): ", Pm
    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: