Resultados 1 al 3 de 3
  1. #1
    Adriancm está desconectado Forero
    Fecha de ingreso
    ene 2017
    Ubicación
    Zaragoza
    Mensajes
    386

    Predeterminado MPP para sistemas de inyección cero

    Hola a todos,

    Como ya se ha tratado un par de veces este tema, os voy a dejar el codigo que permite saber la potencia maxima de los paneles cuando existe limitacion por parte del sistema de inyeccion cero.
    El primero es en el caso en el que tengamos medida de la temperatura del panel, y el segundo en el caso en que tengamos medida de radiacion.
    En la parte de caracteri­sticas del panel, las variables Rs, Rsh y n son parte del modelo matematico equivalente de un modulo, son especi­ficas para cada panel, asi­ que hace falta calcularlas.
    El codigo esta en R pero no creo que cueste mucho pasarlo a Arduino u otros...

    Código:
    # Localizar la curva de funcionamiento y el MPP:
    
    # Caracteri­sticas del panel:
    {
    Pmax <- 200     # en W
    Vmp <- 26.3     # en V
    Imp <- 7.61     # en A
    Voc <- 32.9     # en V
    Isc <- 8.21      # en A
    Ns <- 54    
    kv <- -0.123    # en V/ºC 
    ki <- 0.00318   # en A/ºC
    Rs <- 0.2172    # en ohmios
    Rsh <- 951.9317 # en ohmios
    n <- 1.3417
    
    
    k <- 1.380648E-23      # Constante de Boltzmann
    q <- 1.602176E-19      # Carga del electron
    }
    
    
    # Inicializar variables
    {
    Vop <- 25.3   # Entrada de medida de la tension DC
    Iop <- 5.3    # Entrada de medida de la corriente DC
    ev = 1
    ei = 1
    I <- integer()
    V <- integer()
    Ig <- integer()
    Vg <- integer()
    }
    
    
    # Temperatura conocida:
    {
    Top <- 47   # Entrada de la medida de temperatura de panel
    Vt <- k*(Top+273.15)/q
    Gop = 0
    G = 1100
    
    
    while (G > 0) {
      i = 2
      Voc1 <- Voc+kv*(Top-25)+log(G/1000)
      V <- seq(0,Voc1*(1+1/500),Voc1/500)
      Isc1 <- G/1000*(Isc+ki*(Top-25))
      Io <- (Isc+ki*(Top-25))/(exp((Voc+kv*(Top-25))/(Vt*n*Ns))-1)
      I[1] <- Isc1 - Io*(exp((Isc1*Rs)/(n*Vt*Ns))-1) - (Isc1*Rs)/Rsh
    
    
      for (V1 in seq(0,Voc1,Voc1/500)) {
        I[i] <- Isc1 - Io*(exp((V1+I[i-1]*Rs)/(n*Vt*Ns))-1) - (V1+I[i-1]*Rs)/Rsh
        ev <- abs(Vop-V[i])
        ei <- abs(Iop-I[i])
        if (ev < 0.05 && ei < 0.05) {
          Gop <- G
        }
        i = i + 1
      }
      G <- G - 10
    }
    }
    # Hallar la potencia maxima:
    {
    i = 2
    Vocop <- Voc+kv*(Top-25)+log(Gop/1000)
    Vg <- seq(0,Vocop*(1+1/500),Vocop/500)
    Iscop <- Gop/1000*(Isc+ki*(Top-25))
    Ioop <- (Isc+ki*(Top-25))/(exp((Voc+kv*(Top-25))/(Vt*n*Ns))-1)
    Ig[1] <- Iscop - Io*(exp((Iscop*Rs)/(n*Vt*Ns))-1) - (Iscop*Rs)/Rsh
    
    
    for (V1 in seq(0,Vocop,Vocop/500)) {
      Ig[i] <- Iscop - Ioop*(exp((V1+Ig[i-1]*Rs)/(n*Vt*Ns))-1) - (V1+Ig[i-1]*Rs)/Rsh
      i <- i + 1
    }
    Pmpp <- max(Vg*Ig)
    show(Pmpp)
    }
    .......................................

    Código:
    # Localizar la curva de funcionamiento y el MPP:
    
    # Caracteri­sticas del panel:
    {
    Pmax <- 200     # en W
    Vmp <- 26.3     # en V
    Imp <- 7.61     # en A
    Voc <- 32.9     # en V
    Isc <- 8.21      # en A
    Ns <- 54    
    kv <- -0.123    # en V/ºC 
    ki <- 0.00318   # en A/ºC
    Rs <- 0.2172    # en ohmios
    Rsh <- 951.9317 # en ohmios
    n <- 1.3417
    
    
    k <- 1.380648E-23      # Constante de Boltzmann
    q <- 1.602176E-19      # Carga del electron
    }
    
    
    # Inicializar variables
    {
    Vop <- 25.3   # Entrada de medida de la tension DC
    Iop <- 5.3    # Entrada de medida de la corriente DC
    ev = 1
    ei = 1
    I <- integer()
    V <- integer()
    Ig <- integer()
    Vg <- integer()
    }
    # Radiación conocida:
    {
    Gop <- 800    # Entrada de medida de la radiacion
    Top = 0
    T = 80
    
    
    while (T > 0) {
      i = 2
      Voc1 <- Voc+kv*(T-25)+log(Gop/1000)
      V <- seq(0,Voc1*(1+1/500),Voc1/500)
      Isc1 <- Gop/1000*(Isc+ki*(T-25))
      Vt <- k*(T+273.15)/q
      Io <- (Isc+ki*(T-25))/(exp((Voc+kv*(T-25))/(Vt*n*Ns))-1)
      I[1] <- Isc1 - Io*(exp((Isc1*Rs)/(n*Vt*Ns))-1) - (Isc1*Rs)/Rsh
    
    
      for (V1 in seq(0,Voc1,Voc1/500)) {
        I[i] <- Isc1 - Io*(exp((V1+I[i-1]*Rs)/(n*Vt*Ns))-1) - (V1+I[i-1]*Rs)/Rsh
        ev <- abs(Vop-V[i])
        ei <- abs(Iop-I[i])
        if (ev < 0.05 && ei < 0.05) {
          Top <- T
        }
        i = i + 1
      }
      T <- T - 1
    }
    }
    
    
    # Hallar la potencia maxima:
    {
    i = 2
    Vocop <- Voc+kv*(Top-25)+log(Gop/1000)
    Vg <- seq(0,Vocop*(1+1/500),Vocop/500)
    Iscop <- Gop/1000*(Isc+ki*(Top-25))
    Ioop <- (Isc+ki*(Top-25))/(exp((Voc+kv*(Top-25))/(Vt*n*Ns))-1)
    Ig[1] <- Iscop - Io*(exp((Iscop*Rs)/(n*Vt*Ns))-1) - (Iscop*Rs)/Rsh
    
    
    for (V1 in seq(0,Vocop,Vocop/500)) {
      Ig[i] <- Iscop - Ioop*(exp((V1+Ig[i-1]*Rs)/(n*Vt*Ns))-1) - (V1+Ig[i-1]*Rs)/Rsh
      i <- i + 1
    }
    Pmpp <- max(Vg*Ig)
    show(Pmpp)
    }

  2. #2
    junavar está desconectado Forero
    Fecha de ingreso
    ene 2011
    Ubicación
    madrid
    Mensajes
    393

    Predeterminado re: MPP para sistemas de inyección cero

    Gracias por tu aportación Adriancm.

    En mi caso yo no veo claro tu modelo.

    Por centrar el tema:

    1) Se basa en predecir la potencia que daría el panel en instante dado midiendo:
    a) Tensión y corriente sobre el campo solar de producción (que estará afectado por la carga que presente el inversor para conseguir la limitación de inyección de energía a la red.)
    b) Complementariamente la "radiación" y "temperatura" con ayuda de los correspondientes sensores

    2) Parece que considera que radiación y temperatura son variables dependientes la una de la otra (por eso planteas dos algoritmos). ¿es esto correcto?

    3) Para qué se necesita medir las dos variables tensión e intensidad. ¿no bastaría con una de ellas?

    4) El campo solar puede estar compuesto por decenas de paneles (centenares de celdas) nominalmente idénticas pero con mucha dispersión en sus características. Esto puede afectar a la fiabilidad de la predicción.

    Estoy interesado en el tema, pero veo no fácil hacer un cálculo mínimamente preciso de la potencia máxima entregable sin recurrir a la "caracterización" del campo solar concreto. Además esta caracterización debería irse actualizando conforme el campo envejezca.

    Saludos.

  3. #3
    Adriancm está desconectado Forero
    Fecha de ingreso
    ene 2017
    Ubicación
    Zaragoza
    Mensajes
    386

    Predeterminado Re: MPP para sistemas de inyección cero

    Mas o menos.
    Solo haría falta medir radiación o temperatura.

    Lo que plantea el algoritmo es, a partir de una de las dos variables, generar muchas curvas I-V posibles en función de la variable que no se ha medido, y quedarse con la que incluye el punto de funcionamiento que hemos medido (tensión y corriente).

    Ahí tienes razón, cuanto más grande sea la instalación más complicado resulta aplicar esto, habría que añadir algunos coeficientes de pérdidas...




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47