Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO TECNOLÓGICO DE MÉRIDA TESIS “DISEÑO DE UN EMULADOR FOTOVOLTAICO BASADO EN APROXIMACIONES DE POLINOMIOS CON SEGMENTACIÓN NO- UNIFORME” PARA OPTAR AL GRADO DE: MAESTRO EN INGENIERIA PRESENTA: ING. ROSEMBERG OSWALDO RODRÍGUEZ SALAS ASESOR: DR. ALEJANDRO ARTURO CASTILLO ATOCHE MÉRIDA, YUCATÁN, MÉXICO. 15 DE DICIEMBRE DE 2016 [2] [3] [4] ABSTRACT: Being similar to Photovoltaic panels, photovoltaic (PV) emulator systems make it possible to perform different PV system tests under various operating conditions. This work outlines a PV emulator design and implementation on a FPGA board. This architecture follows the piecewise polynomial approximation and parallel computing techniques, and shows its capability to generate high-accuracy I-V, P-V curves. The main contribution is the addition of hybrid segmentation that enhances speed and area of the implementation maintaining accuracy on the results. Keywords: piecewise polynomial approximation, segmentation, PV emulator, systolic array network, FPGA. [5] Agradecimientos [i] Indice General 1. Introducción ............................................................................................................ 1 1.1 Planteamiento del problema ............................................................................. 2 1.2 Objetivo general................................................................................................ 3 1.3 Objetivos específicos ........................................................................................ 3 1.4 Justificación ...................................................................................................... 3 1.5 Alcances y limitaciones ..................................................................................... 3 1.6 Estado del arte ................................................................................................. 4 2. Sistemas fotovoltaicos ............................................................................................. 7 2.1 Introducción ...................................................................................................... 7 2.2 Modelo de un diodo ........................................................................................ 12 2.3 Modelo de doble-diodo ................................................................................... 14 2.4 Mejora al modelo de doble-diodo propuesta por Ishaque................................ 15 3. Modelo fotovoltaico con segmentación no uniforme .............................................. 19 3.1 Sistemas embebidos ...................................................................................... 19 3.2 Arreglos sistólicos ........................................................................................... 21 3.3 Aproximación de polinomios ........................................................................... 23 3.3.1 Segmentación no uniforme .......................................................................... 27 3.3.2 SQNR .......................................................................................................... 29 3.4 Field Programmable Gate Array (FPGA) ........................................................ 30 [ii] 4. Hardware de un emulador fotovoltaico basado en aproximación polinomial con segmentación no uniforme .................................................................................................... 36 4.1 Generación de curva fotovoltaica .................................................................... 37 4.2 Segmentación de doble nivel y aproximación por polinomios ......................... 37 4.3 Diseño de evaluador de polinomios utilizando arreglos sistólicos ................... 41 5. Análisis de Resultados .......................................................................................... 48 5.1 Generación de curva fotovoltaica .................................................................... 48 5.1.1 Casos de estudio ......................................................................................... 49 5.1.1.1 Celda MSX-60 .......................................................................................... 49 5.1.1.2 Celda Kyocera KG200GT ......................................................................... 51 5.1.1.3 SQ150-PC ................................................................................................ 53 5.1.1.4 Shell SP-70 .............................................................................................. 55 5.1.1.5 Shell ST ST40 .......................................................................................... 57 5.2 Segmentación de doble nivel y aproximación por polinomios ......................... 59 5.2.1 Casos de estudio ......................................................................................... 63 5.2.1.1 Celda MSX-60 .......................................................................................... 63 5.2.1.2 Celda Kyocera KG200GT ......................................................................... 66 5.2.1.3 SQ150-PC ................................................................................................ 68 5.2.1.4 Shell SP-70 .............................................................................................. 70 5.2.1.5 Shell ST ST40 .......................................................................................... 72 5.3 Evaluador de polinomios utilizando arreglos sistólicos .................................... 74 6. Conclusiones......................................................................................................... 78 7. Referencias ........................................................................................................... 80 [iii] Tabla de Figuras Figura 2.1 - Efecto fotovoltaico ........................................................................................ 8 Figura 2.2 - Componentes de un sistema fotovoltaico ..................................................... 9 Figura 2.3 - Curva I-V Panel FV MSX-60 ...................................................................... 10 Figura 2.4 (a) Modelo de un diodo para una celda solar ideal (b) modelo de un diodo con Rs ..................................................................................................................... 12 Figura 2.5 Curvas características I-V y P-V ................................................................... 13 Figura 2.6 - Modelo de doble diodo para celda fotovoltaica .......................................... 14 Figura 2.7 - Curva I-V del modelo mejorado y el de doble-diodo para diferentes niveles de irradiación a 25°C ........................................................................................ 16 Figura 2.8 - Curvas I- V modelo de doble-diodo vs mejorado a diferentes niveles de temperatura a 1KW/m2 ..................................................................................... 17 Figura 3.1 - MPSoC ...................................................................................................... 20 Figura 3.2 - Arreglo sistólico .......................................................................................... 21 Figura 3.3 Sistema sistólico: (a) Modelo síncrono; (b) Analogía de un arreglo sistólico con el sistema circulatorio ....................................................................................... 22 Figura 3.4 - Aproximación polinomial. Al incrementar el grado se incrementa la precisión y el número de puntos. ..................................................................................... 23 Figura 3.5 - Comparación de cuatro tipos de interpolación ........................................... 25 Figura3.6 - Segmentación no uniforme aplicada a la raíz inversa ................................ 27 Figura 3.7 – Ilustración de Segmentación Uniforme US y tres segmentaciones no uniformes basadas en incrementos o decrementos de potencias de dos: P2SL, P2SR y P2SLR [9] ............................................................................................... 28 Figura 3.8 Ilustración de una segmentación de doble nivel que es uniforme en ambos niveles, se tienen 8 segmentos de igual longitud externos, y una segmentación interna que aumenta en potencias de dos. Las líneas negras indican la segmentación externa, las líneas grises la interna [9]. ...................................... 29 Figura 3.9 - Estructura de bloques interna del FPGA (www.xillinx.com/fpga/) ............... 31 Figura 3.10 - HDL procesa el código transformandolo en una lista de uniones entre componentes .................................................................................................... 32 [iv] Figura 3.11 - Código en Verilog .................................................................................... 33 Figura 3.12 - Los resultados se analizan a través de un Testbench que indica los estados de los componentes en cada instante de tiempo .............................................. 34 Figura 4.1 - Código en Verilog de la MAC. .................................................................... 42 Figura 4.2 - MAC ........................................................................................................... 43 Figura 4.3 – Pipelines Verilog MAC .............................................................................. 44 Figura 4.4 Evaluador de polinomios completo. .............................................................. 46 Figura 4.5 Arquitectura sistema evaluador fotovoltaico ................................................. 47 Figura 5.1 – Graficas en MATLAB modelación de panel fotovoltaico MSX-60 .............. 50 Figura 5.2 - Panel FV Kyocera KG200GT ..................................................................... 51 Figura 5.3 - Modulo FV SQ150-PC ............................................................................... 53 Figura 5.4 – Shell SP-70 ............................................................................................... 55 Figura 5.5 - Shell ST ST40 ............................................................................................ 58 Figura 5.7 - Coeficientes generados en la aproximación por polinomios segmentación de doble nivel ........................................................................................................ 59 Figura 5.8 - Comparación Punto fijo vs Punto flotante................................................... 60 Figura 5.9 - Vista de la aproximación de doble nivel en el intervalo de 0 a 25. [Rojo - Original; Negro - Aproximación punto fijo; Rosa - Aproximación punto flotante] 61 Figura 5.10 - Detalle aproximación de doble nivel. [Rojo – Original ecuación de doble diodo; Negro - Aproximación punto fijo; Azul - Aproximación punto flotante] .... 61 Figura 5.11 - Error absoluto punto fijo ........................................................................... 62 Figura 5.12 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente ................... 63 Figura 5.13 - Curva aproximación celda MSX-60 .......................................................... 64 Figura 5.14 - Detalle aproximación MSX-60 .................................................................. 64 Figura 5.15 - Error absoluto MSX-60 ............................................................................. 65 Figura 5.16 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente ................... 66 Figura 5.17 - Curva aproximación Kyocera KG200GT .................................................. 66 Figura 5.18 - Detalle aproximación Kyocera .................................................................. 67 Figura 5.19 - Error absoluto Kyocera ............................................................................ 67 Figura 5.20 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente ................... 68 Figura 5.21 - Curva aproximación SQ150-PC ............................................................... 68 Figura 5.22 - Detalle aproximación SQ150C ................................................................. 69 file:///C:/Users/R/Desktop/Tesis%201.0.docx%23_Toc469271100 file:///C:/Users/R/Desktop/Tesis%201.0.docx%23_Toc469271101 file:///C:/Users/R/Desktop/Tesis%201.0.docx%23_Toc469271102 file:///C:/Users/R/Desktop/Tesis%201.0.docx%23_Toc469271103 [v] Figura 5.23 - Error abosluto SQ150C ............................................................................ 69 Figura 5.24 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente ................... 70 Figura 5.25 - Curva aproximación shell SP-70 .............................................................. 70 Figura 5.26 - Detalle aproximación curva Shell SP-70 .................................................. 71 Figura 5.27 - Error absoluto Shell SP-70 ....................................................................... 71 Figura 5.28 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente ................... 72 Figura 5.29 – Aproximación Shell ST40 ........................................................................ 72 Figura 5.30 - Detalle aproximación Shell ST40 ............................................................. 73 Figura 5.31 - Error absoluto Shell ST4 .......................................................................... 73 Figura 5.32 - Extracto código Testbench ....................................................................... 74 Figura 5.33 - Testbench realizado para el modulo MAC ................................................ 75 Figura 5.34 Análisis del error Testbench MAC .............................................................. 76 file:///C:/Users/R/Desktop/Tesis%201.0.docx%23_Toc469271130 [vi] [1] 1. Introducción Los sistemas fotovoltaicos se han vuelto una solución popular de generación de energía sustentable debido al bajo mantenimiento que necesitan y la ausencia de partes de desgaste. La celda solar, principal componente de ésta tecnología se fabrica actualmente con relativa facilidad [1]. Para aprovechar la energía generada se utilizan convertidores de potencia, los cuáles se pueden encontrar en el mercado en diferentes modelos y son una tecnología ya establecida. Sin embargo, cuando se habla de generación de energía fotovoltaica el uso eficiente de la energía solar debe ser asegurado [2]. Actualmente, y sobre todo en nuestro país, se tiene un escaso acceso a la compra o prueba de módulos de energía fotovoltaica, lo cual dificulta el desarrollo de ésta tecnología, ya que para obtener la mayor eficiencia de los módulos se debe contar con una precisa estimación del voltaje y corriente que uno de éstos módulos puede generar bajo ciertas condiciones. La modelación de módulos fotovoltaicos principalmente, involucra la estimación de curvas I –V a través de un modelo matemático, que consiste en una serie de ecuaciones que describen el comportamiento del sistema fotovoltaico; sin embargo, un modelo matemático presenta muchos inconvenientes al no contar con una interfaz directa a etapas de potencia electrónicas quedando únicamente en simulaciones. [2] Por otra parte, los modelos basados en componentes electrónicos son fáciles de implementar con etapas de potencia, pero incapaces de incorporar la información completa de las condiciones ambientales que los rodean y que afectan de manera importante la precisión de los resultados [3]. Investigaciones previas han utilizado diversas topologías de circuitos paramodelar las características principales de los módulos fotovoltaicos cuando éstos son sometidos a variaciones ambientales, como lo son irradiancia y temperatura. La aproximación más simple se conoce como modelo de un diodo [4], [5], que en su versión mejorada incluye un diodo en paralelo a una fuente de corriente y una resistencia en serie [6]; a pesar de la sencillez del modelo, éste exhibe graves deficiencias cuando es sometido a variaciones muy grandes de temperatura. Para hacer frente a esto y considerar algunas variables físicas involucradas en el modelado de la celda se considera un modelo más preciso conocido como modelo de doble diodo [7]. Sin embargo, la inclusión de un diodo adicional al circuito incrementa la complejidad de la ecuación a modelar a siete parámetros [8]. El principal reto de éste trabajo es estimar los valores de todos los coeficientes manteniendo un bajo esfuerzo computacional, y manteniendo la precisión adecuada para la emulación de éstas curvas en una implementación electrónica. 1.1 Planteamiento del problema El modelo de doble diodo implica una mejor precisión a la hora de estimar las curvas I-V, sin embargo, representa un gran esfuerzo transferir este modelo a un circuito electrónico debido a la complejidad computacional necesaria para calcular los parámetros involucrados. Utilizando el modelo matemático para doble diodo que existe actualmente, el reto principal consiste en reducir la complejidad computacional involucrada en el proceso utilizando una técnica matemática conocida como aproximación de polinomios, a su vez se pretende implementar el modelo en un hardware específico que contará con arreglos sistólicos y finalmente utilizando la técnica de segmentación no uniforme reducir el número de segmentos computacionales involucrados en la aproximación de la curva I-V. [3] 1.2 Objetivo general Implementar un hardware emulador de sistemas fotovoltaicos que contenga el modelo de doble diodo basado en aproximaciones de polinomios con segmentación no uniforme, en una arquitectura que cuente con arreglos sistólicos, sin sacrificar la precisión del modelado. 1.3 Objetivos específicos a) Analizar el estado del arte b) Generar los conocimientos teóricos y prácticos que requiere la implementación del proyecto. c) Modelar matemáticamente el esquema de doble-diodo. d) Analizar y proponer una arquitectura reconfigurable en punto fijo. e) Implementar una arquitectura que utilice segmentación no uniforme. f) Verificar y validar los resultados arrojados por la implementación propuesta. 1.4 Justificación Utilizar menos segmentos en la aproximación de las curvas I-V implicará menos hardware necesario en la implementación del emulador, manteniendo el costo de implementaciones anteriores sin sacrificar el grado de precisión. Esto permitirá en trabajos futuros aumentar la capacidad del emulador para que no solo sea capaz de modelar una celda sino un arreglo de n celdas solares. 1.5 Alcances y limitaciones El presente trabajo estará limitado a la arquitectura de hardware en un FPGA (del inglés Field Programmable Gate Array) que genera los valores correspondientes a las curvas I –V del sistema. La etapa de potencia necesaria para la implementación completa del sistema emulador no será desarrollada en este trabajo de tesis. [4] 1.6 Estado del arte Los sistemas fotovoltaicos se han vuelto una alternativa sustentable de generación de energía, éstos sistemas son capaces de generar corriente y voltaje según sus características físicas. Éstos valores de corriente y voltaje varían de acuerdo a ciertos parámetros físicos como irradiancia, temperatura, resistencia entre otros y para describir su comportamiento existen diferentes tipos de modelos matemáticos que los describen. El modelo de un diodo descrito en [9] explica que la salida de un módulo fotovoltaico es altamente no lineal, por lo cual un elemento no-lineal como el diodo debe ser considerado en el circuito equivalente del diagrama; a su vez, demuestra que existen parámetros de la celda no son constantes y que cambiarán con las condiciones ambientales tales como la irradiancia y la temperatura. Para algunas aplicaciones el modelo de un diodo ofrece una estabilidad adecuada entre simplicidad y precisión, sin embargo, decae ante variaciones de temperatura e irradiancia en los puntos límite de la celda. Para enfrentar éste problema un modelo más preciso formulado en [10] agrega un par de resistencias extra Rp y Rs y un diodo adicional mejorando sustancialmente las características del modelo contra su predecesor, la complejidad surge al estimar todos los valores de parámetros del modelo mientras se mantiene un tiempo razonable de simulación. Para enfrentarse a éste problema han existido diversos tipos de aproximaciones, simuladores a través de Simulink en MATLAB, emuladores utilizando microcontroladores low-cost, y emuladores utilizando FPGA. Como se observa en [8], [11], [12], [13] la simulación de los sistemas fotovoltaicos es el camino utilizado en el caso de que el punto de máxima potencia cambia continuamente, debido a variaciones ambientales. Los criterios buscados por un sistema simulador de sistemas fotovoltaicos son: debe ser preciso al graficar las curvas características de I-V y de P-V incluyendo sombreado parcial; debe ser una herramienta flexible para desarrollar y validar diseñis de sistemas fotovoltaicos, incluyendo el convertidor de potencia y el control de máximo punto de potencia. Existen diferentes tipos [5] de software simulador como P-Spice, PV-DesignPro, SolarPro, PVcad y PVsyst en el mercado, sin embargo son relativamente caros, innecesariamente complejos y raramente incluyen la interfaz del convertidor de potencia. Por su parte los sistemas low-cost basados en microcontroladores como lo son [14] y [15] nos presentan una alternativa de bajo costo, y basándose en la optimización del máximo punto de potencia, sin embargo éstas aproximaciones cuentan con errores mayores al 5% de precisión quedando muy por debajo respecto a otras alternativas. Los emuladores basados en una arquitectura FPGA como en [16], [17] y [18] presentan ventajas respecto a los anteriores, la facilidad de una conexión a una etapa de potencia, la velocidad y reconfiguración capaz de realizarse por el FPGA además de las diferentes técnicas de implementación que se pueden utilizar para lograr el propósito. En [17] se enumeran algunas técnicas para realizar la implementación de un sistema fotovoltaico en un FPGA vía redes neuronales, alternativa atractiva pero poco eficiente al momento de entrenar y optimizar la red para su funcionamiento. Modelos basados en CORDIC y LUT fueron analizados, notando buenos resultados en precisión sobre el punto de máxima potencia, sin embargo, en el primero se denota una fuerte carga computacional en procesador para llegar al objetivo al estar basado en descomposiciones iterativas. El modelo de LUT presenta una fuerte carga en espacio de memoria utilizada al tener que almacenar todos los valores posibles para cierto grado de precisión. En éste trabajo se presentará una propuesta basada en aproximaciones polinomiales que garantizará un grado de precisión alto medido a través de un SQNR significativo y siempre buscando una reducción el área de implementación dentro del FPGA. Esto logrará sentar una base para trabajos futuros en donde al tener un área mínima de implementación se podrá trabajar el punto de máxima potencia de un arreglo completo de n x n celdas solares utilizando únicamente un FPGA. [6] [7] 2. Sistemas fotovoltaicos En éste capítulo se describirán los sistemas fotovoltaicos, las magnitudes características de cada uno de ellos, así como dos distintos modelosmatemáticos que describen su comportamiento. Se describirán los modelos de un diodo y de doble-diodo, así como se presentarán las curvas I-V y las partes que las conforman. 2.1 Introducción La radiación solar puede ser transformada directamente en energía eléctrica. A este fenómeno se lo denomina efecto fotovoltaico. A mediados del siglo XIX (1839) el físico francés Becquerel descubrió el efecto fotovoltaico (FV). Varios físicos, como Willbughby Smith (1873) y Lenard (1900) verifican su existencia bajo diversas condiciones. Einsten (1905) proporciona la base teórica del fenómeno, ganando el premio Nobel de física. Millikan (1920), un físico norteamericano, corrobora la teoría de Einsten. Sin embargo, la aplicación práctica de esta conversión de energía no comenzó hasta 1954, cuando se necesitó una fuente generadora de energía eléctrica que pudiere alimentar los circuitos eléctricos de los satélites espaciales, sin recurrir al uso de combustibles y con una vida útil de larguísima duración. [8] La palabra fotovoltaico(a) está formada por la combinación de dos palabras de origen griego: foto, que significa luz, y voltaico que significa eléctrico. El nombre resume la acción de estas células: transfomar, directamente, la energía luminosa en energía eléctrica. El voltaje de una célula FV es de corriente continua (CC). Por lo tanto, hay un lado que es positivo y otro negativo. Para celdas de silicio, este voltaje es de alrededor de 0,5 V. Figura 2.1 - Efecto fotovoltaico En un instante determinado, la potencia eléctrica proporcionada por la celda FV está dada por el producto de los valores instantáneos del voltaje y la corriente de salida. Este valor es afectado por el comportamiento intrínseco de un material semiconductor, por el nivel de irradiación luminosa, y el método de fabricación de la celda. Las celdas FV que se ofrecen en el mercado actual utilizan dos tipos de materiales semiconductores. Uno tiene una estructura cristalina uniforme, el otro una estructura policristalina. El tipo cristalino requiere un elaborado proceso de manufactura, que insume enormes cantidades de energía eléctrica, incrementando substancialmente el costo del material semiconductor. La versión policristalina se obtiene fundiendo el material semiconductor, el que es vertido en moldes rectangulares. Los dos tipos pueden ser identificados a simple vista, ya que la estructura cristalina provee una superficie de brillo uniforme, mientras que la policristalina muestra zonas de brillo diferente. [9] Si los valores de potencia luminosa y la orientación del panel permanecen constantes, la corriente de salida de un panel FV varía con el valor del voltaje en la carga y su temperatura de trabajo. Esto se debe a las características intrínsecas de los semiconductores. La Figura 2.3 muestra, en forma gráfica, la relación entre la corriente y el voltaje de salida para un panel FV (curva I-V) para cuatro temperaturas de trabajo, cuando el nivel de radiación permanece constante. Figura 2.2 - Componentes de un sistema fotovoltaico Puede observarse que el valor máximo para el voltaje de salida corresponde a un valor de corriente nulo (voltaje a circuito abierto), mientras que el valor máximo para la corriente corresponde a un voltaje de salida nulo (salida en corto circuito). Todas las curvas tienen una zona donde el valor de la corriente permanece prácticamente constante para valores crecientes del voltaje de salida, hasta que alcanzan una zona de transición. [10] A partir de esta zona, pequeños aumentos en el voltaje de salida ocasionan disminuciones altas en el valor de la corriente de salida. El comienzo de la zona de transición se alcanza para menores valores del voltaje de salida cuando la temperatura de trabajo se incrementa Figura 2.3 - Curva I-V Panel FV MSX-60 La corriente de cortocircuito Isc es uno de los parámetros principales al analizar un panel solar, este parámetro se refiere a la intensidad máxima de corriente que se puede obtener de un panel solar fotovoltaico, el panel debe estar sin ninguna otra resistencia adicional provocando un cortocircuito. Al no existir resistencia al paso de la corriente el voltaje es cero. (Martínez J., 2012, pág. 202) Otro de los parámetros principales en el funcionamiento de un panel solar fotovoltaico es el voltaje de circuito abierto VOC, el cual es la tensión máxima disponible de una celda solar medida en condiciones de circuito abierto o condiciones de resistencia máxima. [11] El punto de potencia máxima de un panel solar FV es el parámetro que expresa el punto de funcionamiento para el cual la potencia máxima es entregada. 𝑃𝑚𝑎𝑥 = 𝑉𝑂𝐶𝐼𝑆𝐶𝐹𝐹 (1) Tomando en cuenta la Ecuación 1 el punto de potencia máxima se obtiene multiplicando el voltaje máximo por la corriente máxima por el factor de forma dando un valor de potencia en Watts indicando que cuando el panel opera en estas condiciones se obtiene el mayor rendimiento posible. Para cada condición de trabajo se puede calcular la potencia de salida del panel multiplicando los valores correspondientes al voltaje y la corriente para ese punto de la curva I-V. En particular, la potencia de salida es nula para dos puntos de trabajo: circuito abierto y cortocircuito, ya que la corriente o el voltaje de salida es nulo. Por lo tanto, si la salida de un panel es cortocircuitada, éste no sufre daño alguno. Entre estos dos valores nulos, la potencia de salida alcanza un valor máximo que varía con la temperatura. Cuanto la temperatura de trabajo de un panel FV aumenta, el valor de la potencia de salida disminuye, esto debido a que tanto la corriente de corto circuito como el voltaje de circuito abierto, se ven afectados por la misma, pero el tipo de variación, así como su magnitud porcentual, son distintos para estos dos parámetros. Si tomamos referencia la hoja de datos del Panel FV MSX-60 observamos que la corriente de corto circuito aumenta moderadamente (0.065±0.015)%/°C mientras que el voltaje a circuito abierto disminuye considerablemente . –(0.5±0.05)%/°C. [12] 2.2 Modelo de un diodo El modelo de un diodo para una celda solar ideal (Figura 2.4), consiste en un diodo conectado en paralelo con una fuente de corriente (Ipv) cuyo valor depende la luz recibida. Figura 2.4 (a) Modelo de un diodo para una celda solar ideal (b) modelo de un diodo con Rs La corriente de salida para Figura 2.4(b) es 𝐼 = 𝐼𝑝𝑣 − 𝐼𝐷y que se puede escribir como: 𝐼 = 𝐼𝑝𝑣 − 𝐼𝑜[exp ( 𝑉+𝐼𝑅𝑠 𝑎𝑉𝑇 ) − 1] (2) donde Ipv es la corriente generada por la incidencia de luz, Io es la corriente de saturación inversa, VT es el voltaje térmico de la celda fotovoltaica. La Figura 2.5 muestra las curvas I-V y P-V características generadas en (2). Generalmente, tres puntos se toman en condiciones de prueba estándar, (Isc, 0), (Vmp, Imp) y (Voc, 0) y se pueden encontrar en la hoja de datos del fabricante. Una estimación adecuada de éstos puntos es la principal meta de cualquier técnica de modelado. [13] Figura 2.5 Curvas características I-V y P-V Sin embargo, (2) no representa adecuadamente el comportamiento de la celda fotovoltaica cuando es sujeta a variaciones ambientales, especialmente en bajos voltajes. [14] 2.3 Modelo de doble-diodo Un modelo más preciso se muestra en Figura 2.6. La (2) describe la corriente de salida de la celda: 𝐼 = 𝐼𝑃𝑉 − 𝐼𝑑1 − 𝐼𝑑2 − ( 𝑉+𝐼𝑅𝑠 𝑅𝑝 ) (3) donde 𝐼𝑑1 = 𝐼01[exp ( 𝑉+𝐼𝑅𝑠 𝑎1𝑉𝑇1 ) − 1] (4) y 𝐼𝑑2 =𝐼02[exp ( 𝑉+𝐼𝑅𝑠 𝑎2𝑉𝑇2 ) − 1] (5) En las ecuaciones (4) y (5) Io1 y Io2 son las corrientes de saturación inversa del diodo 1 y del diodo 2 respectivamente, VT1 and VT2 son los voltajes térmicos de los diodos. a1 y a2 representan las constantes de diodo ideal. El término Io2 en (5), compensa las perdidas por recombinación en la región de agotamiento como se describe en [7]. Figura 2.6 - Modelo de doble diodo para celda fotovoltaica A pesar de que una gran precisión se puede alcanzar usando este modelo, requiere la evaluación de siete parámetros, Ipv, Io1, Io2, Rp, Rs, a1 y a2. [15] 2.4 Mejora al modelo de doble-diodo propuesta por Ishaque. En [2] se hace una mejora sustancial al modelo de doble-diodo de 7 parámetros, el principal reto de éste modelo es la complejidad computacional que existe al iterar 7 variables, se busca estimar todos los valores del modelo con un bajo esfuerzo computacional. La principal contribución de éste modelo es no tratar de resolver la corriente de saturación de los diodos, se establece que ambas corrientes de saturación son iguales en magnitud obteniendo: 𝐼𝑜1 = 𝐼𝑜2 = 𝐼𝑜 = (𝐼𝑆𝐶𝑆𝑇𝐶 + 𝐾𝐼∆𝑇) exp [ 𝑉𝑂𝐶,𝑆𝑇𝐶 + 𝐾𝑉∆𝑇 { 𝑎1 + 𝑎2 𝑝 } 𝑉𝑇 − 1 Ésta igualdad simplifica la computación debido a que no se requiere iteración; la solución se puede obtener analíticamente. El factor de idealidad de ambos diodos (a1 y a2) representan la difusión y recombinación de las componentes de las corrientes respectivamente. De acuerdo a la teoría de difusión de Shockley la corriente de difusión a1 debe ser la unidad. El valor de a2 es flexible, basados en simulación extensiva se encontró que un valor mayor o igual a 1.2 es la más aproximada entre el modelo propuesto y la curva I – V práctica. Los últimos dos parámetros (Rp y Rs) son obtenidos a través de iteración. Muchos investigadores han evaluado estos dos parámetros independientemente, pero los resultados no han sido favorables. En el modelo mejorado [2] éstos parámetros se calculan simultáneamente, la idea es aproximar vía el punto de máxima potencia; para llegar al valor calculado de potencia y el experimental obtenido por la hoja de datos se empieza por incrementar iterativamente el valor de Rs mientras simultáneamente se calcula el valor de Rp. [16] Las condiciones iniciales de ambas resistencias quedan de la siguiente forma: 𝑅𝑆𝑂 = 0; 𝑅𝑃𝑂 = 𝑉𝑚𝑝 𝐼𝑠𝑐𝑛 − 𝑉𝑚𝑝 − 𝑉𝑜𝑐𝑛 − 𝑉𝑚𝑝 𝐼𝑚𝑝 Figura 2.7 - Curva I-V del modelo mejorado y el de doble-diodo para diferentes niveles de irradiación a 25°C [17] Figura 2.8 - Curvas I- V modelo de doble-diodo vs mejorado a diferentes niveles de temperatura a 1KW/m2 El valor inicial de Rp es el valor de la pendiente del segmento de línea entre el punto de corto circuito y el de máxima potencia. Para cada una de las iteraciones, el valor de Rp es calculado simultáneamente. Ya teniendo disponible los 6 parámetros, la corriente de salida de la celda puede ser determinada utilizando el método estándar de Newton- Raphson. En conclusión, los 4 parámetros requeridos del modelo pueden ser calculados, Ipv, Io, Rp y Rs. De estos, solo Rp y Rs deben ser determinados por iteración. Ipv y Io son obtenidos analíticamente. La variable p puede ser cualquier valor mayor a 2.2. [18] [19] 3. Modelo fotovoltaico con segmentación no uniforme En este capítulo se presentarán conceptos relacionados al procesamiento digital que se realizará sobre las curvas FV, se abarcarán conceptos desde sistemas embebidos y aproximación de polinomios. A su vez, se presentará el concepto de arreglos sistólicos, el lenguaje de programación utilizado y como esto ayuda al objetivo de este trabajo. 3.1 Sistemas embebidos El aumento de la potencia de cómputo necesaria para algunas aplicaciones ha permitido que las técnicas de programación en paralelo y sistemas para la resolución de problemas complejos en un tiempo óptimo se hayan desarrollado en los últimos años. Las computadoras han evolucionado más allá de los microcontroladores de 8 bits que tiempo atrás predominaban en el mercado. Hoy en día, las computadoras embebidas están organizadas en multiprocesadores que pueden ejecutar millones de líneas de código, así mismo éstas se pueden realizar en tiempo real y con niveles muy bajos de potencia. Una característica importante en los sistemas de computación de propósito general es que se separa el diseño de hardware y software, mientras que en los sistemas de cómputo embebido se puede diseñar software y hardware simultáneamente, los cuales deben trabajar conjuntamente para lograr el mejor desempeño posible. [20] Recientes investigaciones en co-diseño hardware/software enfatizan la importancia del diseño concurrente. Una vez que la arquitectura del sistema ha sido definida, los componentes de hardware y software pueden ser diseñados relativamente por separado. Figura 3.1 - MPSoC Otra característica de los sistemas embebidos es la tendencia de éstos que permite la utilización de múltiples núcleos interconectados e integrados en un solo componente. Entre los dispositivos embebidos, los sistemas multiprocesadores se están convirtiendo en soluciones atractivas para aplicaciones complejas dirigidas a futuros sistemas multimedia. Los multiprocesadores con tecnología system-on-chip (MPSoCs por sus siglas en inglés) se componen de procesadores, memorias, co-procesadores para aplicaciones específicas y en ocasiones incluyen MPSoCs homogéneos también conocidos como procesadores especializados. [21] En general, las aplicaciones que se ejecutan en MPSoCs requieren un alto subsistema de memoria con suficiente ancho de banda, así como subprocesos eficientes para una mejor sincronización de los datos 3.2 Arreglos sistólicos El término arreglo sistólico se introdujo por H. T. Kung y C. E. Leiserson (1978, 1980). Ellos aplicaron este concepto para realizar estructuras de cómputo con una organización celular y flujo pipeline de datos. Aunque un número de estructuras similar y algoritmos habían sido propuestos anteriormente en los inicios de los años 60’s. Figura 3.2 - Arreglo sistólico El término arreglo sistólico se volvió popular en los inicios de los años 80. Se introdujo en la computación para referirse a ciertas estructuras con una organización regular celular y el flujo de datos segmentados. Los algoritmos paralelos realizados por estas estructuras se llaman algoritmos sistólicos. [22] Entre las propiedades de los arreglos y algoritmos sistólicos se puede mencionar su simetría, su extraordinario flujo de datos y alta eficiencia, entre otros. Esto fue sin duda, una de las razones de su rápida expansión y su amplia aceptación. La arquitectura de arreglo sistólico formado por una o más interconexiones de un conjunto de celdas idénticas que procesan datos en una manera uniforme. Los datos que son procesados fluyen síncronamente de una celda a otra. En cada celda se realiza una operación dando un paso en el cálculo de la operación completa, en otras palabras, los datos fluyen desde una memoria externa pasando a través de varias celdas antes de que se entregue el resultado en los últimos arreglos y regresen a la memoria externa. Habiendo recibido los datos, cada celda efectúa la misma operación y transmite a la siguiente los resultados. Figura 3.3 Sistema sistólico: (a) Modelo síncrono; (b) Analogía de un arreglo sistólico con el sistema circulatorio El movimiento de los datos a través de un arreglo sistólico se asemeja al movimiento sanguíneo dentro del sistema circulatorio, como se puede apreciar en la Figura 3.3 Sistema sistólico: (a) Modelo síncrono; (b)Analogía de un arreglo sistólico con el sistema circulatorio. Esta analogía fue la razón por la cual a estas estructuras de cómputo se les denominó sistólicas. [23] Este tipo de arreglos se recomienda para casos específicos entre ellos la evaluación polinomial, ya que reduce el tiempo que utilizaría un solo procesador en realizar el cálculo. 3.3 Aproximación de polinomios La evaluación de funciones elementales es requerida en muchas aplicaciones incluyendo procesamiento digital de señales, diseño asistido por computadora, realidad virtual, y simulaciones físicas. Ejemplos de esas funciones son ln (𝑥) y cos−1(𝑥). Figura 3.4 - Aproximación polinomial. Al incrementar el grado se incrementa la precisión y el número de puntos. [24] Desde el punto de vista algorítmico, la implementación en hardware de distintas funciones elementales puede realizarse empleando distintos métodos: iterativos y no- iterativos. Los iterativos se utilizan generalmente en aplicaciones donde precisiones arbitrarias se desean. Sin embargo, involucran altas latencias, haciéndolos poco usados en aplicaciones de alto desempeño. Los métodos no iterativos incluyen tablas de búsqueda, aproximaciones polinomiales, y aproximaciones racionales. En aproximación polinomial, el intervalo en que la función elemental debe ser calculada se divide en subintervalos. En cada subintervalo, la función elemental se aproxima con polinomios de bajo grado. [25] Figura 3.5 - Comparación de cuatro tipos de interpolación La evaluación de f(x) consiste de tres pasos generalmente: 1) reducción de la entrada a un intervalo determinado [a, b]; 2) aproximación de la función en el rango reducido de la función; 3) reconstrucción del rango, expandiendo el resultado al rango original. Enfocándonos en el segundo paso, se asume que f(x) y todas sus derivadas son continuas en el intervalo [a, b]. La aproximación se realiza primero dividiendo el intervalo [a, b] en M segmentos [ak,ak+1] y luego, aproximando f(x) en cada segmento con un polinomio de bajo grado: (5) [26] En el caso en que se considera segmentación uniforme, el número de segmentos M debe estar en potencias de 2, 𝑀 = 2𝑚 , y las dimensiones de los segmentos son iguales a: ℎ = 𝑏−𝑎 2𝑚 . Esto simplifica la implementación en hardware del sistema. Una vez que se termina de definir la segmentación, una tabla de datos que contiene los coeficientes de los polinomios se genera. [27] 3.3.1 Segmentación no uniforme Las aproximaciones de múltiples polinomios o “splines” son generalmente preferidas sobre las aproximaciones de polinomios simples debido a su amplio rango de ventajas en los diseños, que involucran menor uso de memoria, menor complejidad computacional y la mantención o mejora de la precisión. Tradicionalmente la aproximación por spline usa segmentación uniforme, en donde cada una de las splines cubre segmentos de igual distancia a lo largo del intervalo de la función, y se limita a potencias de dos. Figura 3.6 - Segmentación no uniforme aplicada a la raíz inversa En [9] se analiza una técnica de segmentación no uniforme basada en splines, en la cual varían el tamaño en potencias de dos lográndose adaptar a las no linealidades de una función, resultando en una reducción significativa en el número de splines utilizadas con respecto a una segmentación uniforme. [28] En éste tipo de aproximación el intervalo completo se divide en sub-intervalos, cuando estos intervalos cuentan con la misma longitud se conoce como segmentación uniforme; la longitud de estos intervalos también puede estar determinada en potencias de dos y partir así del inicio al final, del final al inicio, o en algunos casos aumentar hasta la mitad del rango y luego ir disminuyendo; segmentación denotada por el nombre de segmentación no-uniforme. Figura 3.7 – Ilustración de Segmentación Uniforme US y tres segmentaciones no uniformes basadas en incrementos o decrementos de potencias de dos: P2SL, P2SR y P2SLR [9] Teniendo como base una segmentación no-uniforme es posible tener un segundo nivel de segmentación, teniendo potencias de dos de inicio a fin como segmentación principal y el segundo nivel consiste en una segmentación uniforme interna en cada segmento de la principal. [29] Figura 3.8 Ilustración de una segmentación de doble nivel que es uniforme en ambos niveles, se tienen 8 segmentos de igual longitud externos, y una segmentación interna que aumenta en potencias de dos. Las líneas negras indican la segmentación externa, las líneas grises la interna [9]. 3.3.2 SQNR La relación señal a ruido se utiliza en varios campos para medicar la calidad de diferentes esquemas digitales como el PCM y codecs multimedia. EL SQNR refleja la relación entre el valor máximo de señal y el error de cuantización (también conocido como ruido de cuantización) que se presenta en las conversiones analógico-digitales. La fórmula del SQNR se deriva de la formula general del SNR y dependiendo de las señales a analizar maneja diferentes parámetros. [30] 3.4 Field Programmable Gate Array (FPGA) Los FPGA son dispositivos semiconductores reconfigurables que están basados alrededor de una matriz de bloques lógicos configurables (CLB – Configurable Logic Block) conectados a través de interconexiones programables. A diferencia de los circuitos integrados de aplicación específica donde el dispositivo es construido alrededor de un diseño particular, los FPGAs pueden ser programados para la aplicación deseada o los requerimientos funcionales. Se cuentan con FPGAs programables una sola vez, aunque predominan los basados en memoria SRAM los cuales puedes reprogramarse mientras el diseño va creciendo. Los FPGAs suponen una gran ventaja al permitir al diseñador cambiar la estructura interna de los diseños aún en etapas finales, y hasta después de que la versión final haya sido manufacturada y puesta en marcha en el campo. Existen algunos FPGAs que permiten la actualización de manera completamente remota, optimizando de ésta manera los costos asociados con el re-diseño o la actualización manual de los sistemas electrónicos. [31] Figura 3.9 - Estructura de bloques interna del FPGA (www.xillinx.com/fpga/) Los lenguajes de descripción de hardware (HDL, por sus siglas en inglés) y los arreglos de compuertas de campos programables (FPGA, por sus siglas en inglés) permite a los diseñadores desarrollar rápidamente y simular un circuito digital sofisticado, realizar un prototipo y verificar su operación. Un lenguaje de descripción de hardware es una clase de lenguaje de computadora para describir formalmente un circuito electrónico digital. Este tipo de lenguaje especifica el comportamiento de un circuito electrónico, por lo general digital, el cual implementa un sistema físico. La característica principal de un HDL es la capacidad de describir una función de un sistema pudiéndola implementar a nivel de hardware. Es posible describir la operación de un circuito, su diseño y organización, así como las pruebas de verificación para comprobar su funcionamiento. En contraste de un lenguaje de programación de software, la sintaxis y semántica de un HDL incluyen notaciones explícitas para expresar tiempo y concurrencia, las cuales son los principales atributos de hardware. [32] La descripción de hardware está basada en la estructura y el comportamiento del sistema que se diseña. En su estructura se representa cómo está compuesto el circuito de la arquitectura; mientras la descripción del comportamiento se representa cómo funciona la arquitectura en el módulo implementado. Un lenguaje HDL es análogoa un lenguaje de programación de software, pero con mayores diferencias. Los lenguajes de programación de software son intrínsecamente secuenciales con limitaciones en su sintaxis y semántica. Por otro lado, los HLD pueden modelar múltiples procesos paralelos (como son flip-flops, sumadores, entre otros) que automáticamente se ejecutan independientemente uno de otro. Ambos tipos de lenguajes son procesados por un compilador, que comúnmente se llama sintetizador en el caso de los HDL, pero cada lenguaje cuenta con diferentes objetivos. En el caso de los compiladores de software, estos convierten el código fuente en otro código que sea ejecutado por un microprocesador. Sin embargo, en los HDL el sintetizador procesa el código para transformarlo en una lista de uniones entre los componentes para después realizarlo físicamente. Figura 3.10 - HDL procesa el código transformándolo en una lista de uniones entre componentes [33] Existen numerosos HDL comerciales, de los cuales son específicos de una marca y solo se utilizan en los productos de la misma. Entre los más populares están VHDL y Verilog. Ambos lenguajes se encuentran estandarizados por la IEEE y tienen un amplio uso en la industria. Un circuito especificado en VHDL, por ejemplo, puede implementarse en diferentes tipos de chips y con herramientas CAD ofrecidas por diferentes compañías. Por una parte, VHDL ofrece una portabilidad de diseño, es decir, se centra en la funcionalidad del circuito deseado sin preocuparse mucho por los detalles de la tecnología que se usará en la implementación. Figura 3.11 - Código en Verilog [34] A pesar de la popularidad de VHDL, Verilog es fácil de aprender ya que cuenta con una sintaxis similar a C y Pascal. Aunque la mayoría de los conceptos de VHDL no son tan diferentes que en Verilog, VHDL es más difícil de aprender, ya que posee una sintaxis rígida influenciada por Ada, el cual es un lenguaje de programación convencional impopular. Como se dijo, la sintaxis de Verilog es similar como la del lenguaje de programación C. Sin embargo, su semántica está basada en operaciones de hardware concurrente y es totalmente diferente de la ejecución secuencial de C. Figura 3.12 - Los resultados se analizan a través de un Testbench que indica los estados de los componentes en cada instante de tiempo [35] [36] 4. Hardware de un emulador fotovoltaico basado en aproximación polinomial con segmentación no uniforme En este capítulo se explica de manera detallada la implementación del sistema del emulador fotovoltaico, empezando por la generación de la curva a aproximar, continuando con la generación de la segmentación de doble nivel y finalizando con la implementación de la misma en el fpga. La implementación del emulador está conformada por los siguientes segmentos: Generación de la curva fotovoltaica. Segmentación de doble nivel y aproximación por polinomios Generación de puntos V-I mediante evaluación del polinomio asignado a cada segmento. Diseño de evaluador de polinomios utilizando arreglos sistólicos [37] 4.1 Generación de curva fotovoltaica En “An improved Two-Diode Photovoltaic(PV) Model for PV System” [2] se establece una mejora al modelo de doble diodo, mejora que solo necesitará de 7 parámetros para generar la curva I-V del módulo fotovoltaico. Esta curva es generada utilizando el software Matlab, utilizando valores tomados directamente de la hoja de datos y comparando los resultados arrojados por el programa con los dados por el fabricante. En ésta parte del proceso y con el fin de validar el modelo propuesto por [2] se realizaron diferentes pruebas con paneles fotovoltaicos de diferentes fabricantes. 4.2 Segmentación de doble nivel y aproximación por polinomios Realizar el procesamiento de la ecuación de 7 parámetros resulta tardado y con un esfuerzo computacional complejo, utilizar la técnica de segmentación por polinomios nos permitirá aproximar con gran precisión la curva sin el esfuerzo computacional excesivo utilizando únicamente polinomios de segundo grado. Los 7 parámetros involucrados en la aproximación son: Ipv: Corriente en el modulo fotovoltaico Io1, Io2: Corrientes de saturación inversa de los diodos 1 y 2 respectivamente. Rp: Resistencia en paralelo a los diodos. Rs: Resistencia en serie a los diodos. a1, a2: Constantes de idealidad de los diodos. Io1, Io2, Rp, Rs se obtienen a través de iteración. Muchos investigaores asumen los valores de a1 = 1 y a2 = 2, y aunque es muy utilizada no siempre es verdadera. Muchos intentos se han realizado intentando reducir el esfuerzo computacional para el modelo de doble-diodo, sin embargo, no han tenido mucho éxito. [38] El código de Matlab que calcula los valores de Rp y Rs se muestra a continuación: % Iterative process for Rs and Rp until Pmax,model = Pmax,experimental while (error>tol) % Temperature and irradiation effect on the current dT = T-Tn; Ipvn = Iscn; % STC light-generated current Ipv = (Ipvn + Ki*dT) *G/Gn; % Actual light-generated current % Isc = (Iscn + Ki*dT) *G/Gn; % Actual short-circuit current % Increments Rs Rs = Rs + .01; % Calculate Parallel resistance Rp = Vmp*(Vmp+Imp*Rs)/(Vmp*Ipv-Vmp*Io1*exp((Vmp+Imp*Rs)/Vt/Ns/a1)+Vmp*Io1- Vmp*Io2*exp((Vmp+Imp*Rs)/Vt/Ns/a2)+Vmp*Io2-Pmax_e); % Solving the I-V equation for sets of (V,I) pair clear V clear I V = linspace(0,val_max,L); I = zeros(1,size(V,2)); % Current vector for j = 1 : size(V,2) %Calculates for all voltage values % Solves g = I - f(I,V) = 0 with Newntonn-Raphson g(j) = Ipv-Io1*(exp((V(j)+I(j)*Rs)/Vt/Ns/a1)-1)- Io2*(exp((V(j)+I(j)*Rs)/Vt/Ns/a2)-1)-(V(j)+I(j)*Rs)/Rp-I(j); while (abs(g(j)) > 0.001) Id1=Io1*(exp((V(j)+I(j)*Rs)/Vt/Ns/a1)-1); Id2=Io2*(exp((V(j)+I(j)*Rs)/Vt/Ns/a2)-1); g(j) = Ipv-Id1-Id2-(V(j)+I(j)*Rs)/Rp-I(j); glin(j) = -Io1*Rs/Vt/Ns/a1*exp((V(j)+I(j)*Rs)/Vt/Ns/a1)- Io2*Rs/Vt/Ns/a2*exp((V(j)+I(j)*Rs)/Vt/Ns/a2)-Rs/Rp-1; I(j) = I(j) - g(j)/glin(j); end end % for j = 1 : size(V,2) Podemos observar que a través del método de Newton-Rapson se va obteniendo el valor de cada uno de ellos hasta el punto en donde se cumpla que el punto de máxima potencia experimental sea idéntico al punto de máxima potencia del modelo, de ésta forma garantizando que ambos valores cumplirán para el modelo requerido. [39] Se realizó una segmentación de doble nivel sobre la curva generado por la ecuación de doble diodo de 7 parámetros, dicha segmentación consistió en una segmentación de doble nivel compuesta por una segmentación no uniforme externa de 22 y una uniforme interna de 24 teniendo como total 64 segmentos distribuidos a lo largo del intervalo. Los límites de cada uno de los segmentos fueron calculados utilizando Matlab, los limites externos se calcularon dividiendo en dos el intervalo total a segmentar y luego dividiendo nuevamente entre dos la parte de la derecha, logrando así una segmentación en potencias de 2, lo limites internos fueron calculados dividiendo directamente la longitud del segmento externo entre el valor interno requerido. A continuación se presenta el código en MATLAB que realiza la segmentación hibrida: m = (mext)*(mint); valor_max = 25; %%%% Segmentación Híbrida boundaries=zeros(1,m); kronp = [1 zeros(1,mint-1)]; limitsext(1) = 1; limitsext(2) = L/2; for z=3:mext limitsext(z) = (L+limitsext(z-1))/2; end limitsext(mext+1) = L; limits = kron(limitsext,kronp); limits = limits(1:end-(mint-1)); n=0;l=0; forn = 1:mext; tamano = (limitsext(n+1)-limitsext(n))/mint; for l=2:mint; limits(((n-1)*mint)+l) = floor(limitsext(n)+ tamano*(l-1)); end end [40] boundaries = p0a1(limits) posx_values = boundaries; coef_ram = zeros (length(limits)-1,d+1); limits (1) = 0; for i=1:m vl = limits(i)+1; vu = limits(i+1); range = p0a1(vl:vu); segment = original(vl:vu); coef_ram(i,:) = polyfit(range,segment,d); end limits(1)=1; posx_values(1)=[]; A = assigncoef(posx_values, coef_ram(:,1),m,p0a1); B = assigncoef(posx_values, coef_ram(:,2),m,p0a1); C = assigncoef(posx_values, coef_ram(:,3),m,p0a1); Todos éstos valores se guardarán en una tabla que en el siguiente proceso nos servirá para identificar que segmento pertenece al valor y así poder saber que polinomio utilizaremos al resolver para el punto dado. A cada uno de éstos segmentos le corresponderá una ecuación de segundo grado limitada al sub-intervalo específico, los tres coeficientes de ésta ecuación serán almacenados para su posterior utilización en el evaluador de polinomios. [41] 4.3 Diseño de evaluador de polinomios utilizando arreglos sistólicos La arquitectura digital del evaluador de polinomios permitirá emular en hardware diversas funciones matemáticas, por ejemplo, logarítmicas, exponenciales, trigonométricas, entre otras; obteniendo un máximo desempeño con respecto a su área y velocidad. Este algoritmo DSP propuesto está descrito mediante la utilización de fórmulas matemáticas de alto nivel. En el diseño de esta arquitectura, las fórmulas matemáticas se necesitan convertir en elementos usando lenguajes de descripción de hardware (HDL, por sus siglas en inglés) o en representaciones gráficas. Para la realización del diseño, se utilizó el lenguaje Verilog, ya que provee de herramientas que permiten la realización de un diseño parametrizable. La multiplicación es una operación trascendental en prácticamente todos los algoritmos de procesamiento digital de señales. En algunas aplicaciones, la mitad o más de las operaciones realizadas por un procesador involucran la multiplicación. Por lo que la presencia de un hardware multiplicador como unidad aceleradora es fundamental para la definición de un procesador DSP. En muchos algoritmos DSP, la multiplicación está seguida por una acumulación. Por lo tanto, en muchos procesadores, el multiplicador está integrado con un sumador tal que la operación multiplicar-acumular (MAC) puede ser llevada a cabo en una instrucción por ciclo. [42] Figura 4.1 - Código en Verilog de la MAC. En este trabajo se realizarán operaciones de punto fijo de n-bits, al igual que los coeficientes de n-bits, se realiza un truncamiento del tamaño especificado en bits del resultado de la multiplicación y posteriormente se realiza un redondeo para obtener una mejor precisión de las operaciones aritméticas. Para la realización de la operación redondeo a nivel bit se considera lo siguiente: Se realiza un truncamiento de acuerdo al número de bits definido, por ejemplo, si las variables son de 12 bits, el producto de la multiplicación es de 24 bits, se toman 12 bits de acuerdo al punto fijo que se utiliza y se trunca el producto. Después, se toma el siguiente dígito menos significativo y si es 1 se le suma a la variable truncada. [43] Figura 4.2 - MAC Se implementó un multiplicador con un sumador(MAC), que en su primera instancia nos permitirá multiplicar x, el cuál es el valor a evaluar, por el coeficiente a, dando como resultado ax al final la siguiente etapa sumara el valor del coeficiente b teniendo al final como resultado de la MAC el término ax + b. En su segunda instancia, la MAC multiplicará el término ax + b por x dando como resultado ax2 + bx, y la segunda etapa sumará el valor del coeficiente c, de ésta manera obteniendo al final el valor correspondiente a la ecuación de segundo grado ax2 + bx + c. Una vez concluida la etapa del módulo MAC, los datos fluyen hacia dos flip-flops para que en el próximo pulso de reloj ingresen en la siguiente etapa de la arquitectura evaluadora utilizando múltiples arreglos de procesadores. [44] Figura 4.3 – Pipelines Verilog MAC El pipeline es una técnica utilizada para la reducción de caminos críticos en un algoritmo digital. Con esta técnica se puede explotar el incremento de la velocidad de reloj o la reducción del consumo de potencia a una misma velocidad. Los caminos críticos son el mínimo tiempo que se requiere para el procesamiento de una muestra. [45] Dicho de otra manera, una estructura pipeline funciona como una tubería en la que los datos fluyen a través de la misma y en la que cada elemento procesador está separado por flip-flops. Estos permiten que cada elemento procesador termine en un periodo de reloj todas las operaciones lógicas que se transferirán al siguiente bloque de manera síncrona y produciendo un periodo de latencia. La latencia se define como el periodo de tiempo que tarda en salir el primer dato de un sistema pipeline o de un sistema secuencial. Con el fin de apreciar la estructura del evaluador de polinomios se agruparán en un bloque las estructuras del módulo MAC y los flip-flops, el cual se le denominará como PE_module. [46] Figura 4.4 Evaluador de polinomios completo. [47] De manera similar al proceso realizado en Matlab se obtienen los valores del Diodo 1, Diodo 2 y el valor de la resistencia y al final se suman en conjunto con Ipv, obteniendo el valor de corriente I para un valor de voltaje V dado. Figura 4.5 Arquitectura sistema evaluador fotovoltaico [48] 5. Análisis de Resultados En este capítulo se presentarán los resultados que se obtuvieron en cada una de las secciones descritas en el capítulo anterior. Se realizará la validación de la ecuación de doble diodo contrastando los resultados arrojados por MATLAB con los encontrados en las hojas de datos. Se expondrán los resultados entregados por el evaluador de polinomios, así como un análisis del máximo error posible para cada una de las evaluaciones. Por último, se presentarán los resultados obtenidos por la aproximación de doble nivel utilizando la medición del SQNR como referencia. 5.1 Generación de curva fotovoltaica Mediante el uso de MATLAB se replicaron los resultados obtenidos por [2], los cuales utilizan la ecuación de doble-diodo, se contrastan los datos arrojados con los encontrados en la hoja de datos para validar la precisión de utilizar los 7 parámetros que pide la ecuación. [49] 5.1.1 Casos de estudio Se analizarán distintos casos de panel fotovoltaico a los cuáles se les aplicará el método propuesto para validar la ecuación original y utilizar éstos valores como base para la aproximación. 5.1.1.1 Celda MSX-60 Datos de modelo utilizados obtenidos de la hoja de datos: Rp_min = 55.857143 Rp = 164.585828 Rs_max = 1.142857 Rs = 0.340000 a1 = 1.000000 a2 = 1.200000 T = 25.000000 G = 1000.000000 Pmax,m = 59.850000 (model) Pmax,e = 59.850000 (experimental) tol = 0.001000 P_error = -0.000000 Ipv = 3.800000 Isc = 3.791560 Voc = 21.000000 Vmp = 17.100000 Imp = 3.500000 Io1=Io2 = 4.703980e-10 [50] Figura 5.1 – Graficas en MATLAB modelación de panel fotovoltaico MSX-60 Se realizó una comparación entre los datos arrojados por Matlab y la hoja de datos del fabricante. Tabla 5-1 Comparación valores MSX-60 hoja de datos vs ecuación de doble diodo MATLAB Característica MATLAB Hoja de datos Typical peak power 59.85 W 60 W Voltage @ peak power 17.1 V 17.1 V Current @ peak power 3.5A 3.5 A Short-circuit current (Isc) 3.8A 3.8A Open-circuit voltaje (Voc) 21.1V 21.1V En base a los datos recopilados se validó el modelo de doble diodo utilizando los 7 parámetros propuestos por Ishaque [2], el error entre la hoja de datos y el modelo propuesto es menor al 1% permitiendo utilizar ésta ecuación como base de la aproximación por polinomios. [51] 5.1.1.2 Celda Kyocera KG200GT %% Information from the Kyocera KG200GT module datasheet Iscn = 8.2; %STC short-circuit voltage (A) Vocn = 32.9; %STC array open-circuit voltage (V) Imp = 7.61; %PV Module current @ maximum power point (A) Vmp = 26.3; %PV Module voltage @ maximum power point (V) Pmax_e = Vmp*Imp; %PV Module maximum output peak power (W) Kv = -123e-3; %Voltage/temperature coefficient (V/K) Ki = .00318; %Current/temperature coefficient (A/K) Ns = 54; %Nunber of series cells in a PV Module Model information: Rp_min = 43.708991 Rp = 169.430681 Rs_max = 0.867280 Rs = 0.320000 a1 = 1.000000 a2 = 1.200000 T = 25.000000 G = 1000.000000 Pmax,m = 200.143320 (model) Pmax,e = 200.143000 (experimental) tol = 0.001000 P_error = 0.000320 Ipv = 8.200000 Isc = 8.183953 Voc = 32.800000 Vmp = 26.400000 Imp = 7.581186 Io1=Io2 = 4.122982e-10 Figura 5.2 - Panel FV Kyocera KG200GT [52] Se realizó una comparación entre los datos arrojados por Matlab y la hoja de datos del fabricante. Característica MATLAB Hoja de datos Typical peak power 200.1433220 W 200.143000 W Voltage @ peak power 26.4 V 26.3 V Current @ peak power 7.5811 A 7.61 A Short-circuit current (Isc) 8.183953 A 8.2 A Open-circuit voltage (Voc) 32.8 V 32.9 V En base a los datos recopilados se validó el modelo de doble diodo utilizando los 7 parámetros propuestos por Ishaque [2], el error entre la hoja de datos y el modelo propuesto es menor al 1% permitiendo utilizar ésta ecuación como base de la aproximación por polinomios. [53] 5.1.1.3 SQ150-PC %% Information from the SQ150-PC module datasheet Iscn = 4.8; %STC short-circuit voltage (A) Vocn = 43.4; %STC array open-circuit voltage (V) Imp = 4.4; %PV Module current @ maximum power point (A) Vmp = 34; %PV Module voltage @ maximum power point (V) Pmax_e = Vmp*Imp; %PV Module maximum output peak power (W) Kv = -161e-3; %Voltage/temperature coefficient (V/K) Ki = .0014; %Current/temperature coefficient (A/K) Ns = 72; %Nunber of series cells in a PV Module Model information: Rp_min = 82.863636 Rp = 274.792111 Rs_max = 2.136364 Rs = 0.900000 a1 = 1.000000 a2 = 1.200000 T = 25.000000 G = 1000.000000 Pmax,m = 149.600000 (model) Pmax,e = 149.600000 (experimental) tol = 0.001000 P_error = -0.000000 Ipv = 4.800000 Isc = 4.783968 Voc = 43.300000 Vmp = 34.000000 Imp = 4.400000 Io1=Io2 = 3.105979e-10 Figura 5.3 - Modulo FV SQ150-PC [54] Se realizó una comparación entre los datos arrojados por Matlab y la hoja de datos del fabricante. Característica MATLAB Hoja de datos Typical peak power 149.600 W 149.600 W Voltage @ peak power 34 V 34 V Current @ peak power 4.4 A 4.4 A Short-circuit current (Isc) 4.783968 A 4.8 A Open-circuit voltage (Voc) 43.3 V 43.4 V En base a los datos recopilados se validó el modelo de doble diodo utilizando los 7 parámetros propuestos por Ishaque [2], el error entre la hoja de datos y el modelo propuesto es menor al 1% permitiendo utilizar ésta ecuación como base de la aproximación por polinomios. [55] 5.1.1.4 Shell SP-70 %% Information from the Shell SP-70 module datasheet Iscn = 4.7; %STC short-circuit voltage (A) Vocn = 21.4; %STC array open-circuit voltage (V) Imp = 4.25; %PV Module current @ maximum power point (A) Vmp = 16.5; %PV Module voltage @ maximum power point (V) Pmax_e = Vmp*Imp; %PV Module maximum output peak power (W) Kv = -76e-3; %Voltage/temperature coefficient (V/K) Ki = .002; %Current/temperature coefficient (A/K) Ns = 36; %Nunber of series cells in a PV Module Model information: Rp_min = 35.513725 Rp = 94.964275 Rs_max = 1.152941 Rs = 0.510000 a1 = 1.000000 a2 = 1.200000 T = 25.000000 G = 1000.000000 Pmax,m = 70.125000 (model) Pmax,e = 70.125000 (experimental) tol = 0.001000 P_error = 0.000000 Ipv = 4.700000 Isc = 4.673846 Voc = 21.300000 Vmp = 16.500000 Imp = 4.250000 Io1=Io2 = 4.206466e-10 Figura 5.4 – Shell SP-70 [56] Se realizó una comparación entre los datos arrojados por Matlab y la hoja de datos del fabricante. Característica MATLAB Hoja de datos Typical peak power 70.125 W 70.125 W Voltage @ peak power 16.5 V 16.5 V Current @ peak power 4.25 A 4.25 A Short-circuit current (Isc) 4.673846 A 4.7 A Open-circuit voltage (Voc) 21.3 V 21.4 V En base a los datos recopilados se validó el modelo de doble diodo utilizando los 7 parámetros propuestos por Ishaque [2], el error entre la hoja de datos y el modelo propuesto es menor al 1% permitiendo utilizar ésta ecuación como base de la aproximación por polinomios. [57] 5.1.1.5 Shell ST ST40 %% Information from the Shell ST ST40 module datasheet % You may change these parameters to fit the I-V model % to other types of PV module. Iscn = 2.68; %STC short-circuit voltage (A) Vocn = 23.3; %STC array open-circuit voltage (V) Imp = 2.41; %PV Module current @ maximum power point (A) Vmp = 16.6; %PV Module voltage @ maximum power point (V) Pmax_e = Vmp*Imp; %PV Module maximum output peak power (W) Kv = -100e-3; %Voltage/temperature coefficient (V/K) Ki = .00035; %Current/temperature coefficient (A/K) Ns = 36; %Nunber of series cells in a PV Module Model information: Rp_min = 58.701398 Rp = 204.849192 Rs_max = 2.780083 Rs = 1.710000 a1 = 1.000000 a2 = 1.200000 T = 25.000000 G = 1000.000000 Pmax,m = 40.006000 (model) Pmax,e = 40.006000 (experimental) tol = 0.001000 P_error = -0.000000 Ipv = 2.680000 Isc = 2.657329 Voc = 23.200000 Vmp = 16.600000 Imp = 2.410000 Io1=Io2 = 3.074866e-11 [58] Se realizó una comparación entre los datos arrojados por Matlab y la hoja de datos del fabricante. Característica MATLAB Hoja de datos Typical peak power 40.006 W 40.006 W Voltage @ peak power 16.6 V 16.6 V Current @ peak power 2.41 A 2.41 A Short-circuit current (Isc) 2.657329 A 2.68 A Open-circuit voltage (Voc) 23.2 V 23.3 V En base a los datos recopilados se validó el modelo de doble diodo utilizando los 7 parámetros propuestos por Ishaque [2], el error entre la hoja de datos y el modelo propuesto es menor al 1% permitiendo utilizar ésta ecuación como base de la aproximación por polinomios. Figura 5.5 - Shell ST ST40 [59] 5.2 Segmentación de doble nivel y aproximación por polinomios Se realizó una segmentación de doble nivel sobre la curva generado por la ecuación de doble diodo de 7 parámetros, dicha segmentación consistió en una segmentación de doble nivel compuesta por una segmentación no uniforme externa de 22 y una uniforme interna de 24 teniendo como total 64 segmentos distribuidos a lo largo del intervalo. Los límites de cada uno de los segmentos fueron calculados utilizando Matlab, los limites externos se calcularon dividiendo en dosel intervalo total a segmentar y luego dividiendo nuevamente entre dos la parte de la derecha, logrando así una segmentación en potencias de 2, lo limites internos fueron calculados dividiendo directamente la longitud del segmento externo entre el valor interno requerido. Todos éstos valores se guardarán en una tabla que en el siguiente proceso nos servirá para identificar que segmento pertenece al valor y así poder saber que polinomio utilizaremos al resolver para el punto dado. Figura 5.6 - Coeficientes generados en la aproximación por polinomios segmentación de doble nivel Una vez obtenidos los límites de cada uno de los segmentos y sabiendo el polinomio que le corresponde a cada uno podemos encontrar el valor de aproximación para cualquier punto requerido dentro del intervalo de la ecuación. [60] De ésta manera logramos obtener cualquier pareja de puntos I – V sin tener que recurrir a la ecuación de doble diodo que implica mayor esfuerzo computacional. Para tener una mayor facilidad en el manejo de los datos se optó por una arquitectura de punto fijo, al estar trabajando en Matlab con punto flotante debemos realizar el procesamiento de los datos de tal manera que queden en punto fijo y poder realizar el análisis del error de manera adecuada. Esto se logró utilizando la función fi en Matlab, la cual nos arrojará los valores de coeficientes en punto fijo. Segmento Punto flotante Punto fijo 1 -1.08011012478052e-09 0 2 -2.51148176194629e-09 0 3 -5.83968372827481e-09 0 4 -1.35784324613696e-08 0 5 -3.15724702232219e-08 0 6 -7.34121377872950e-08 0 7 -1.70697411768919e-07 0 8 -3.96904416355904e-07 0 9 -9.22878704437362e-07 0 10 -2.14586655912964e-06 0 11 -4.98952667047909e-06 0 12 -1.16014592752147e-05 -1.52587890625000e-05 13 -2.69747895635521e-05 -3.05175781250000e-05 14 -6.27170053305030e-05 -6.10351562500000e-05 15 -0.000145804273724554 -0.000152587890625000 Figura 5.7 - Comparación Punto fijo vs Punto flotante Esta operación sobre los datos de la aproximación generará un error que aumentará el error de los valores aproximados respecto a los originales obtenidos por la ecuación de doble diodo. [61] Figura 5.8 - Vista de la aproximación de doble nivel en el intervalo de 0 a 25. [Rojo - Original; Negro - Aproximación punto fijo; Rosa - Aproximación punto flotante] Figura 5.9 - Detalle aproximación de doble nivel. [Rojo – Original ecuación de doble diodo; Negro - Aproximación punto fijo; Azul - Aproximación punto flotante] [62] Utilizando como parámetro de comparación el SQNR encontrando que para los valores de: Segmentación externa: 22 Segmentación interna: 24 Se obtuvo un valor de SQNR de: 71.170470 Figura 5.10 - Error absoluto punto fijo Se realizó también la gráfica del error absoluto respecto a la gráfica de ecuación original, obteniendo como resultado que el máximo error a lo largo de toda la curva es de 2.9 x 10-3. Tomando en cuenta el valor máximo de la curva en 3.44 y el máximo error, tenemos un error máximo porcentual de: 0.084% [63] 5.2.1 Casos de estudio Se tomarán como referencia 6 modelos de panel fotovoltaico cuyas características serán obtenidas directamente desde la hoja de datos. Ésta muestra contendrá 2 celdas multi-cristalinas, 3 celdas mono-cristalinas y 1 thin film Se expondrá la matriz de coeficientes generadas para cada una de ellas, análisis del error y valor del SQNR final arrojado para validar el método propuesto. 5.2.1.1 Celda MSX-60 Se obtuvieron 64 valores para cada uno de los coeficientes de la ecuación de segundo grado. Se muestran en la imagen los últimos 20 valores a manera de referencia. Figura 5.11 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente [64] Figura 5.12 - Curva aproximación celda MSX-60 En la Figura 5.12 se puede observar la calidad de la aproximación, teniendo la curva original sobre la curva aproximada. Figura 5.13 - Detalle aproximación MSX-60 [65] En el detalle de la Figura 5.13 se puede apreciar el error existente entre la curva original validada en la sección anterior, contra la curva generada en arquitectura de punto fijo el cuál es menor al 0.01 A. Figura 5.14 - Error absoluto MSX-60 Se obtuvo un valor de SQNR de: 71.170470 En la Figura 5.14 se observa que el mayor valor absoluto no sobre pasa el valor de 2.9 x 10-3. Tomando en cuenta el valor máximo de la curva en 3.44 y el máximo error, tenemos un error máximo porcentual de: 0.084% [66] 5.2.1.2 Celda Kyocera KG200GT Se obtuvieron 64 valores para cada uno de los coeficientes de la ecuación de segundo grado. Se muestran en la imagen los últimos 20 valores a manera de referencia. Figura 5.15 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente Figura 5.16 - Curva aproximación Kyocera KG200GT [67] En la Figura 5.16 se puede observar la calidad de la aproximación, teniendo la curva original sobre la curva aproximada. Figura 5.17 - Detalle aproximación Kyocera Se obtuvo un valor de SQNR de: 67.088218 con un error máximo porcentual de 0.16%. Figura 5.18 - Error absoluto Kyocera [68] 5.2.1.3 SQ150-PC Se muestran en la imagen los últimos 20 valores de coeficientes a manera de referencia. Figura 5.19 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente Figura 5.20 - Curva aproximación SQ150-PC [69] Figura 5.21 - Detalle aproximación SQ150C Se obtuvo un valor de SQNR de: 61.544190 con un error máximo porcentual de 0.229%. Figura 5.22 - Error abosluto SQ150C [70] 5.2.1.4 Shell SP-70 Figura 5.23 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente Figura 5.24 - Curva aproximación shell SP-70 [71] Figura 5.25 - Detalle aproximación curva Shell SP-70 Se obtuvo un valor de SQNR de: 79.149499 con un error máximo porcentual de 0.034%. Figura 5.26 - Error absoluto Shell SP-70 [72] 5.2.1.5 Shell ST ST40 Figura 5.27 - Coeficientes A, B y C en columnas 1, 2 y 3 respectivamente Figura 5.28 – Aproximación Shell ST40 [73] Figura 5.29 - Detalle aproximación Shell ST40 Se obtuvo un valor de SQNR de: 79.186992 con un error máximo porcentual de 0.0301%. Figura 5.30 - Error absoluto Shell ST4 [74] 5.3 Evaluador de polinomios utilizando arreglos sistólicos En la tarea de diseño de sistemas digitales siempre es importante la verificación del funcionamiento de la arquitectura a diseñar. Actualmente, existen diversas herramientas de softwares de desarrollo que permiten la verificación de la arquitectura llevando a cabo simulaciones virtuales antes de implementar el diseño en la plataforma de desarrollo. La simulación usualmente se lleva a cabo con la misma estructura HDL. Se crea un programa especial conocido como testbench para emular el funcionamiento físico. El término testbench usualmente se refiere a un código para la simulación utilizado para crear una secuencia de entradas predeterminadas de un diseño para poder observar la respuesta de la arquitectura bajo prueba. Un testbench es comúnmente implementado utilizando los lenguajes VHDL, Verilog, System-Verilog y OpenVeram pero pueden combinarse también con archivos externos o rutinas en C. Figura 5.31 - Extracto código Testbench [75] Después de que el código es desarrollado, puede ser simulado en una computadora para verificar la correcta operación del circuito y pueda ser sintetizado en un dispositivo físico. Para probar la funcionalidad de ésta etapa se ingresaron valores controlados de coeficientes y de x, y se analizó la salida esperada sacando el error. Entrada: (2.2510) 0010.01002 (3.2510) 0011.01002 Salida: 0111.01012 [7.312510] Operación decimal: 2.2510 x
Compartir