domingo, 9 de marzo de 2014

Algoritmo MPPT y fuente SEPIC.

Hola! Una vez que ya os expliqué la necesidad de utilizar el regulador en los paneles solares, ha llegado el momento de definir 2 puntos muy importantes del proyecto. En primer lugar la topología del regulador, que como ya os comenté, será un regulador conmutado por el alto rendimiento que estos ofrecen. El segundo punto es el algoritmo que vamos a utilizar para obtener ese punto de máxima potencia, que como veréis mas adelante, existen principalmente 2.
Vamos con el regulador. Para este tipo de algoritmos de pueden utilizar prácticamente todas las topologías de fuentes conmutadas que existen, y la elección de esta dependerá básicamente de la tensión de entrada que tengamos en el sistema y la tensión de salida que necesitamos para nuestra aplicación. En el caso de paneles solares de 12 voltios, la tensión de salida en el punto de máxima potencia suele estar en torno a los 18 voltios, así que si queremos cargar una batería de 12 voltios necesitamos una fuente reductora. Pero como dije en la entrada anterior, esta tensión solo existe en condiciones de irradiación solar máxima, por lo que nos podemos encontrar con tensiones más bajas. En mi caso, como regulador solar voy a utilizar una fuente del tipo SEPIC. Estas fuentes son elevadoras - reductoras, con la ventaja de que si las utilizamos en modo reductoras (ciclo de trabajo menor a 0,5), el transistor tiene su drenador a masa, de forma que es fácil dispararlo con drivers normales, sin tener que recurrir a los drivers con Bootstrap.


La función de transferencia que tiene esta fuente es la misma que la que tenemos en una fuente Buck - Boost, con la diferencia de que en este caso la tensión de salida no está invertida. He decidido utilizar esta fuente por varios motivos, el primero de ellos es la versatilidad, ya que necesitaba para otros proyectos una fuente elevadora, y para este en particular necesitaba una fuente reductora, así que decidí montar una de estas. Una desventaja que tiene esta fuente es el número de componentes, ya que necesitamos 2 bobinas y 2 condensadores como mínimo, al contrario de las otras en las que solo necesitamos una bobina y un condensador.


En la imagen podéis ver la fuente conmutada ya montada. Los componentes que he utilizado son los siguientes:
  • Transistor: MOSFET N-CH 60V 23A STF40NF06.
  • Diodo: Schottky 40V 3A 1N5822
  • Bobina: 220uH 3A.
  • Condensadores: 100uF, 50V (200u condensador serie y 200u condensador de salida)
  • Rsense: 0.1ohm, 1W
Con estos componentes y con una frecuencia de conmutación de 33kHz, consigo un rendimiento del 75%, que aunque es algo bajo es se puede mejorar. 
En cuanto al control, como ya os dije, lo realizará un Iteaduino Due. Y dentro de este microcontrolador es donde se alojará el algoritmo. Ya he dicho que principalmente hay dos formas de obtener el punto de máxima potencia de un panel solar. El primero de ellos, y más complejo, es el de controlar la tensión de salida del panel, manteniéndolo siempre en la tensión del punto de máxima potencia, ya que esta tensión, en ciertas condiciones, se mantiene estable, como se ve en la gráfica.


Como he dicho, esta gráfica es válida para una temperatura, es decir, necesitamos saber la temperatura del panel para saber que tensión de entrada se corresponde con el MPP. Esta técnica se utiliza en muchos reguladores, aunque no es la que voy a utilizar yo por dos motivos. El primero es lo que ya he comentado, necesito saber la temperatura del panel para poder saber la tensión a la que debo regular, y la segunda es que con el entorno de arduino es muy difícil poder realizar un control que funcione correctamente para una fuente conmutada, ya que estos controles deben funcionar como mínimo a 10 0 15 kHz.
Desestimado este método, nos queda el segundo, que al contrario de este, se basa en medir la potencia que está dando el panel en cada momento. El método se conoce como P&O (Perturb & Observe), y trata de eso, de perturbar al sistema, y ver como reacciona. La implementación de este método es muy sencilla, y se basa en el flujograma siguiente:


Se trata de hacer pequeñas variaciones del ciclo de trabajo del regulador, y comprobar si la potencia de salida ha aumentado, o ha disminuido. Si la potencia ha aumentado seguimos en la misma dirección, si ha disminuido cambiamos de dirección. Un ejemplo. Imaginemos que nuestro panel está sacando 2,3W, en ese momento aumentamos el ciclo de trabajo y volvemos a medir la potencia, que en este caso es de 2,4W. La potencia ha aumentado, por tanto seguimos en la misma dirección y volvemos a aumentar el ciclo de trabajo, y medimos en este caso 2,35W, la potencia ha disminuido, por lo que ya nos encontramos en la rampa de bajada de la curva de potencia, así que debemos cambiar de dirección, por tanto disminuimos el ciclo de trabajo y volvemos a los 2,4W. El algoritmo una vez ha encontrado el MPP no se detiene, sino que oscila respecto a este. Esto es necesario ya que la irradiancia que tenemos en cada momento es diferente, y por tanto la potencia que podemos obtener también va variando. Como veis este algoritmo será sencillo de implementar en el Arduino. En la siguiente entrada espero ver funcionando algunas partes del sistema.

8 comentarios:

  1. Te propongo una mejora. ¿Por qué no implementas directamente el método de máxima pendiente? Lo único que tienes que hacer es ver cuanto ha mejorado la potencia y aumentar el ciclo de trabajo proporcionalmente. De esta forma se llegará al punto óptimo mucho más rápido y mejorará el comportamiento ante cambios bruscos (Si pasa una nube, por decir algo). Al final mejorará la eficiencia total del sistema y solo has gastado un par de ciclos de computación más.

    ResponderEliminar
    Respuestas
    1. Hola Litox! pues no lo había pensado, pero la verdad que es interesante. Es prácticamente lo mismo solo que con paso variable, y con el controlador que utilizo no creo que haya ningún problema. Lo implementaré de esa forma ;) Gracias!

      Un saludo

      Eliminar
  2. Buenas:

    El diagrama de flujo por fin alguien se atreve hacerlo. Mi opinion desde START, no debe dividirse hacia los dos IF al mismo tiempo, en realidad se hace, el primer IF detectado donde recorre el programa, sino se cumple ni con el ELSE, se dirige al segundo IF-ELSE.

    A parte de ello, recordar que cuando pregunta un Íf en el diagrama de flujo, solo es verdadero o faso como bien sabes, y también como salida, así que las flechas que vuelven a un lado del rombo nunca debe ser entrantes, si caso desde el START.

    Si quieres te hago un diagrama de flujo para que se entienda mejor.

    Saludo.

    ResponderEliminar
    Respuestas
    1. Hola Meta, tienes razón en que a los laterales de los rombos no deben entrar, pero como en este caso hay dos entradas, queda así mas claro en mi opinión, además que el flujograma no lo he hecho yo, es de AN de Microchip. Luego, el diagrama de flujo está bien, salvo lo que he comentado antes, cuando arranca el programa deben haber 2 instrucciones if, y esto es porque el algoritmo debe detectar si está en la pendiente decreciente, o en la pendiente creciente de la curva. Está claro que debes inicializar de algún modo, en mi caso prefiero inicializar en la recta ascendente, ya que lo más lógico es pensar que nuestro algoritmo que vamos a empezar con la salida a cero.
      Luego dices algo que no es cierto, "sino se cumple ni con el ELSE", en una sentencia if, o la condición es verdadera o falsa, pero siempre una de las dos, en este caso no quiero eso, quiero una sentencia if-else si estamos en la pendiente ascendente, y otra si estamos en la descendente, y pasaremos de una a otra según cambiemos de pendiente. No se si está claro, de todas formas en esta entrada http://www.mipsandchips.com.es/2014/03/algoritmo-mppt-funcionando.html puedes ver el código de ese algoritmo. Gracias por pasarte!
      Un saludo!

      Eliminar
    2. Hola:

      Ahora me esquivoqué esplicando, cuando se cumpla un else si o se cumple el if, lo que quiero decir, sale de ese bloque y se centra en el otro if.else haber las ocndiciones. por mucho que lo haya puesto Microchip, no es correcto.

      Las flechas no se pone en el rombo como entrada que ya sabes, se pone en un rectángulo que no has dibujado, o que no han dibujado Microchip. En ese rectángulo es donde está lo que comentas justo arriba.

      Saludo.

      Eliminar
    3. Hola Meta, estoy de acuerdo en que el flujograma no cumple los estrictos estándares que existen, pero en mi opinión, un flujograma debe transmitir al lector de una forma visual el "camino" que sigue el programa, y en este se entiende perfectamente. En cuanto al rectángulo que comentas no es cierto, siguiendo las normas, ya que los rectángulos representan acciones, mientras que en este caso no existe ninguna acción más que las que hay, que son las de incrementar o decrementar la tensión de salida. Como he dicho, yo entendí bien este flujograma, y ese es su fin. Si te resulta lioso, como ya te he dicho, puedes ver el código y de esa forma te quedará más claro seguro.
      Un saludo. Gracias por pasarte!!

      Eliminar
  3. Hola.
    Estoy haciendo unos cuantos cambios en mi regulador y uno de ellas es cambiar el buck por una SEPIC para poder cargar las baterias con cualquier voltaje y si es posible, mejorar el rendimiento.

    Por ahora parece que funciona bien ya que carga mis baterias de 12v con 5v, 9v y 24v con cambio automatico del duty.

    Cuanto rinden generalmente este tipo de reguladores?
    El mio lleva mosfet irfz44n, diodo SBL2045CT, Cin-C1 100uf X 63v, C2 1000uf X 25v, toroides 150uHy X2. 50kHz.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Nestor, la eficiencia del convertidor va a depender sobre todo de los componentes que utilices, y no tanto de su estructura. En este tipo de convertidores se puede llegar sin problemas a rendimientos del 90%, más de eso es difícil conseguirlo con componentes discretos. Yo haría unos cambios en tu diseño, en primer lugar no utilizaría el IRFZ44N, ya que es un MOSFET de uso general, parea las tensiones que tienes que manejar utilizaría uno con tecnología NexFet. El diodo que vas a utilizar no lo conozco, pero si es rápido debería valer. El condensador de salida no es demasiado importante, ya que vas a conectar una batería, así que ese no es crítico, sin embargo el condensador que va en serie si lo es, ya que de este depende la potencia que puedes dar a la salida. Para aumentar la potencia, debes colocar varios condensadores en paralelo, ya que son estos los que tienen que dar la corriente de la batería.
      Utilizando unos transistores NexFet podrías aumentar la frecuencia de conmutación a 70 o incluso 80 kHz, aunque dependiendo del diodo y el transistor, tu rendimiento aumentará o disminuirá por las pérdidas en conmutación. Puedes jugar con la frecuencia hasta encontrar el optimo.
      Un saludo!

      Eliminar