1.1. 1.1.1. 1.1. 1.1 1 ELEC ELECCI CIÓN ÓN DEL DEL MODE MODELO LO DE AMPL AMPLIF IFIC ICAD ADOR OR OPER OPERAC ACIO IONA NAL L UTILIZADO EN NUESTRO EQUIPO Una vez seleccionado el modelo de fotodiodo que usaremos como sensor de irradiancia en la implementación de nuestro equipo de medida, procedemos ahora a seleccionar los componentes que usaremos para el correspondiente circui circuito to de acondi acondicio cionam namien iento to de señal. señal. Como Como coment comentamo amoss en anteri anteriore oress apartados, nuestro equipo realizará la medición de la irradiancia incidente a partir de la fotocorriente generada por el fotodiodo sometido a tensión cero. Para ello vimos que el circuito de acondicionamiento que mejor se adapta a estos condicionante condicionantess era el circuito circuito amplificad amplificador or de transimped transimpedanci ancia, a, cuyo esquema se mostraba en la figura 38. Dicho circuito consta de un amplificador oper operac acio iona nall real realime iment ntad ado o nega negatitiva vame ment nte e medi median ante te una una resi resist sten enci cia a de realimentación R r . De esta forma, suponiendo ideal al operacional, el fotodiodo se encuentra sometido a tensión nula, de forma que la corriente que circula por él es la corriente de cortocircuito, la cual, como quedó demostrado en el apartado correspondiente, es prácticamente igual a la fotocorriente generada por el dispositivo. De esta forma, idealmente obtenemos a la salida del circuito una tensión proporcional a la fotocorriente (y, por lo tanto, a la irradiancia incidente), la cual será entregada al convertidor analógico-digital de nuestro microcontrolador: V o
=
I f ⋅ Rr
Ahora bien, un aspecto importante a tener en cuenta en el circuito anterior es que, puesto que la fotocorriente es generalmente muy pequeña (del orden de entre 100 y 400 microamperios para el modelo BPX65 y entre 0,4 y 1,2 mili miliam ampe perio rioss para para el mode modelo lo BPW2 BPW21) 1),, para para obte obtene nerr tens tensio ione ness de sali salida da sign signifific icat ativ ivas as se hace hace nece necesa sari rio o util utiliz izar ar resi resist sten enci cias as de real realim imen enta taci ción ón elevadas. Por lo tanto, el error de continua en la tensión de salida debido a las no ideali idealidad dades es del amplif amplifica icador dor operac operacion ional al (tensi (tensión ón de offset offset de entrad entrada, a, corriente de polarización de entrada y corriente de desviación de entrada) puede ser significativo. Con el objetivo de reducir el error de continua en la tensió tensión n de salida salida del circui circuito to anter anterior ior se acons aconseja eja utiliz utilizar ar amplifi amplificad cadore oress operacionales de entrada FET. Otro tro fact facto or fun fundame amental ntal a tene tenerr en cue cuenta nta en la ele elecció cción n de los los componentes de este circuito es el tipo de alimentación usada en nuestro
equipo de medida. Puesto que en nuestro sistema todos los componentes electrónicos serán alimentados con una tensión continua de +5V (a excepción del motor paso a paso que será alimentado con +12V), a la hora de elegir el modelo de amplificador operacional utilizado en la implementación del circuito de acondi acondicio cionam namien iento to deber deberemo emoss consid considera erarr únicam únicament ente e dispos dispositi itivos vos que puedan operar con un voltaje de suministro individual (“single-supply voltage”) ya que, de otro modo, los operacionales diseñados para trabajar con voltajes de suministro simétricos (como el popular operacional UA741) introducen un error en continua muy elevado en la tensión de salida del circuito reduciendo en gran medida el margen lineal de la misma (mediciones realizadas por el autor del presente proyecto dieron como resultado tensiones de desviación de salida de hasta 2V para el operacional 741). A su vez, puesto que el margen de tensión de alimentación alimentación del operacional tiene una amplitud reducida de 5V, se hace aconsejable utilizar operacionales que posean un valor alto de la excursión de la tensión de salida, con el objeto de que el margen lineal de ésta no se reduzca demasiado puesto que será en dicho margen donde trabajará nuestro circuito de medida. Por esta razón, hemos decidido utilizar amplificadores operacionales del tipo “rail-to-rail”, los cuales cuales permit permiten en obtene obtenerr tensio tensiones nes de salida salida prácti prácticam camen ente te iguale igualess a las tensiones de alimentación. A la hora de seleccionar el modelo de amplificador utilizado en nuestro circuito de acondicionamiento de señal, decidimos considerar dos modelos de amplif amplifica icador dores es operac operacion ionale ales, s, muy difere diferente ntess en su precio precio,, para para poder poder así comp compar arar ar su infl influe uenc ncia ia en el comp compor orta tami mien ento to del del circ circui uito to bajo bajo dive divers rsas as condiciones de funcionamiento: 1. Por un lado, hemos usado un amplificador operacional modelo OPA350 de la empresa Texas Instruments. Se trata de un dispositivo de tecnología CMOS perteneciente a la categoría de amplificadores “Rail-to-Rail”, los cuales son capaces de trabajar con tensiones de alimentación muy bajas sin que se produzca pérdida en el margen de la tensión de salida, lo que permite obtener tensiones de salida mucho más cercanas a las tensiones de alimentación que con los amplificadores de propósito general. En este caso este dispositivo presenta entradas y salida “rail-to-rail” (“input-output rail-to-rail”), lo que significa que dicho amplificador es capaz de llegar a
equipo de medida. Puesto que en nuestro sistema todos los componentes electrónicos serán alimentados con una tensión continua de +5V (a excepción del motor paso a paso que será alimentado con +12V), a la hora de elegir el modelo de amplificador operacional utilizado en la implementación del circuito de acondi acondicio cionam namien iento to deber deberemo emoss consid considera erarr únicam únicament ente e dispos dispositi itivos vos que puedan operar con un voltaje de suministro individual (“single-supply voltage”) ya que, de otro modo, los operacionales diseñados para trabajar con voltajes de suministro simétricos (como el popular operacional UA741) introducen un error en continua muy elevado en la tensión de salida del circuito reduciendo en gran medida el margen lineal de la misma (mediciones realizadas por el autor del presente proyecto dieron como resultado tensiones de desviación de salida de hasta 2V para el operacional 741). A su vez, puesto que el margen de tensión de alimentación alimentación del operacional tiene una amplitud reducida de 5V, se hace aconsejable utilizar operacionales que posean un valor alto de la excursión de la tensión de salida, con el objeto de que el margen lineal de ésta no se reduzca demasiado puesto que será en dicho margen donde trabajará nuestro circuito de medida. Por esta razón, hemos decidido utilizar amplificadores operacionales del tipo “rail-to-rail”, los cuales cuales permit permiten en obtene obtenerr tensio tensiones nes de salida salida prácti prácticam camen ente te iguale igualess a las tensiones de alimentación. A la hora de seleccionar el modelo de amplificador utilizado en nuestro circuito de acondicionamiento de señal, decidimos considerar dos modelos de amplif amplifica icador dores es operac operacion ionale ales, s, muy difere diferente ntess en su precio precio,, para para poder poder así comp compar arar ar su infl influe uenc ncia ia en el comp compor orta tami mien ento to del del circ circui uito to bajo bajo dive divers rsas as condiciones de funcionamiento: 1. Por un lado, hemos usado un amplificador operacional modelo OPA350 de la empresa Texas Instruments. Se trata de un dispositivo de tecnología CMOS perteneciente a la categoría de amplificadores “Rail-to-Rail”, los cuales son capaces de trabajar con tensiones de alimentación muy bajas sin que se produzca pérdida en el margen de la tensión de salida, lo que permite obtener tensiones de salida mucho más cercanas a las tensiones de alimentación que con los amplificadores de propósito general. En este caso este dispositivo presenta entradas y salida “rail-to-rail” (“input-output rail-to-rail”), lo que significa que dicho amplificador es capaz de llegar a
alcanzar en la salida prácticamente los valores de la alimentación (rail-torail de salida) y también es capaz de admitir y procesar correctamente valores de tensión en la entrada muy próximos a los de alimentación (railto-rail de entrada). Además, puesto que dicho dispositivo presenta una etapa de entrada de tecnología FET, las corrientes de polarización son mínimas, reduciéndose de esta forma el error de continua a la salida debido a dichas corrientes en el operacional. 2. Por otro lado, hemos utilizado también un operacional modelo MCP6231 de la empresa Microchip Technology, el cual es también un operacional de tecnología FET que pertenece, al igual que el anterior, a la categoría de oper operac acio iona nale less de entr entrad ada a y salid salida a “rai “raill-to to-ra -railil”, ”, pero pero cuyo cuyo prec precio io es considerablemente inferior al anterior. El estudio del comportamiento de estos dos modelos de amplificadores operacionales en nuestro circuito de acondicionamiento ha sido realizado de tres formas diferentes: 1. Un estudio teórico de diversos aspectos del comportamiento del circuito partiendo de los datos suministrados por los fabricantes en las hojas de características de los dispositivos. 2. Un estudio mediante simulación en computadora, usando para ello el entorno de diseño electrónico Orcad 16 en su versión demo, perteneciente a la empresa Cadence Design Systems, junto con los modelos de los compon component entes es para para dicho dicho softwa software re sumini suministr strado adoss por los fabric fabricant antes es a través de de sus páginas páginas web. 3. Un estudi estudio o experi experimen mental tal del circuit circuito, o, montándo montándolo lo en un módul módulo o de entr entren enam amie ient nto o y midi midien endo do la resp respue uest sta a real real del del mismo mismo medi median ante te un voltímetro. En los siguientes puntos expondremos los resultados obtenidos en los diferentes estudios realizados, lo que nos permitirá comparar resultados para así proceder a la elección del modelo de operacional más adecuado para nuestro equipo de medida. 1.1.1.1.1.1
Estudio teórico ico del comporta rtamien iento del circ ircuito ito de acon acondi dici cion onam amie ient nto o para para los los dos dos mode modelo loss de oper operac acio iona nale less elegidos
A. El circuito amplificador corriente-tensión suponiendo ideal el amplificador operacional. Las excelentes prestaciones que presenta el amplificador operacional se acercan mucho a las que se podrían pedir de cualquier amplificador ideal, de tal manera que en un gran número de aplicaciones puede ser considerado como ideal sin introducir demasiados errores en el cálculo. La función que desarrolla un amplificador operacional es la de amplificar con una ganancia de tensión Ad la tensión diferencial V d según:
Figura 50. Función que realiza un amplificador operacional ideal. La consideración de idealidad del operacional queda definida por los valores extremos de los diversos parámetros que lo definen y que son los siguientes: -
Resistencia de entrada infinita, lo que obliga a que la corriente de entrada por cualquiera de sus dos entradas sea siempre nula.
-
Resistencia de salida nula, lo que implica infinita capacidad de proporcionar corriente sobre cualquier carga.
-
Ganancia de tensión Ad infinita, lo que significa que si su salida es finita, la tensión diferencial de entrada V d deberá ser nula.
-
Como consideración adicional, hay que tener en cuenta que la tensión de salida siempre se encuentra limitada por las tensiones de alimentación y no podrá sobrepasarlas en ningún caso con lo que, si el operacional está alimentado entre un valor positivo +V cc y un valor negativo –V ee, se cumplirá que la tensión V 0 siempre estará comprendida entre ellas, es decir:
Estas consideraciones de idealidad del operacional permiten un estudio simplificado del mismo y de los circuitos construidos con él. En el caso del circuito amplificador corriente-tensión, mostrado en la figura 38, la idealidad del operacional implica que el fotodiodo opera a tensión nula, lo cual, como se comentó anteriormente, aporta una serie de características óptimas a la respuesta del circuito. La expresión para la tensión de salida de este circuito ha sido obtenida teniendo en cuenta la idealidad del operacional, lo que implica que cuando éste está realimentado negativamente y no saturado, la tensión diferencial de entrada es nula. B. El circuito amplificador corriente-tensión considerando las no idealidades del amplificador operacional real. A pesar de la aparente sencillez del circuito anterior, al considerar que el operacional no es ideal sino real, aparecen una serie de efectos secundarios que pueden introducir errores en la señal de salida. Estos efectos secundarios en los amplificadores operacionales debidos a su no idealidad conducen a la aparición de términos adicionales no deseados que constituyen un error permanente en la salida del circuito. Todos estos efectos pueden tener más o menos importancia en función de su cuantía, y por ello, en los siguientes apartados trataremos de cuantificar estos errores permanentes en la salida del sistema para los dos modelos de amplificadores operacionales elegidos para nuestro equipo de medida. Teniendo en cuenta el funcionamiento de nuestro circuito, iremos analizando los diferentes parámetros en continua del operacional e iremos cuantificando la incidencia que tiene la no idealidad de los mismos sobre la tensión de salida. Todos los cálculos detallados correspondientes a los siguientes apartados se encuentran en el documento básico Anexo 6 del presente proyecto. B.1 Efecto sobre la salida del circuito de la no idealidad de la ganancia diferencial o ganancia en lazo abierto del operacional.
La ganancia diferencial Ad de un amplificador operacional real resulta no ser infinita aunque su valor puede ser muy elevado. En el caso de los dos modelos de operacional elegidos este parámetro toma típicamente los siguientes valores: -
Ganancia en lazo abierto del operacional OPA350: Ad ≈ 106
-
Ganancia en lazo abierto del operacional MCP6231: A d ≈ 3.105
Si en el circuito amplificador corriente-tensión consideramos que el operacional tiene una ganancia diferencial finita de valor Ad , la tensión de salida del circuito no será exactamente la que se indicaba en la expresión anterior, sino que en este caso vendrá dada por:
Figura 51. Influencia sobre la tensión de salida de la ganancia diferencial del operacional. Si comparamos esta expresión de la tensión de salida del circuito con la que obtuvimos suponiendo que el operacional era ideal (V 0=If .Rf ), observamos que se introduce el factor
Ad 1 + Ad
, el cual, debido al elevado valor que toma la
ganancia en lazo abierto Ad de los operacionales, podemos considerar prácticamente igual a 1. Por lo tanto, podemos concluir que el error que introduce en la tensión de salida del circuito el hecho de que la ganancia diferencial del operacional no sea infinita es despreciable.
B.2 Efecto sobre la salida del circuito de la no idealidad de la resistencia de entrada del operacional.
Las entradas de una amplificador operacional ven una alta impedancia entre ellas y también ven una impedancia elevada entre cada una de ellas y masa, pero en ambos casos, esa impedancia elevada no resulta infinita como suponíamos en el operacional ideal. De esta forma, la resistencia de entrada de un amplificador operacional real puede aproximarse bastante bien por una resistencia finita R i de elevado valor situada entre los terminales de las entradas inversora y no inversora. En el caso de nuestros operacionales esta resistencia de entrada toma los siguientes valores: -
Resistencia de entrada del operacional OPA350 : R i = 5 . 1012 Ω
-
Resistencia de entrada del operacional MCP6231: R i = 5 . 1012 Ω
Si incluimos este efecto en el circuito convertidor corriente-tensión y considerando finita la ganancia diferencial Ad del operacional, la tensión de salida del circuito toma la siguiente forma:
Figura 52. Influencia sobre la tensión de salida de la resistencia de entrada del operacional. Si comparamos esta expresión de la tensión de salida del circuito con la que obteníamos considerando ideal el operacional (V 0=If . Rf ), observamos que se
introduce el factor 1 +
1 1 Ad ⋅ Ri
+
1
, el cual, teniendo en cuenta los valores que
Ad
tienen tanto la ganancia en lazo abierto Ad de los operacionales como la resistencia de entrada R i de los mismos, podemos considerar prácticamente igual a 1.
Por lo tanto, podemos concluir que el error que introduce en la tensión de salida la no idealidad de la resistencia de entrada del operacional es despreciable. B.3 Efecto sobre la salida del circuito de la no idealidad de la resistencia de salida del operacional. La resistencia de salida R 0 de un operacional real posee, en general, valores bajos, aunque no es nula como suponíamos en el operacional ideal. En el caso de nuestros operacionales este parámetro toma típicamente los siguientes valores: -
Resistencia de salida del operacional OPA350: R 0 = 1 kΩ
(No se especifica el valor de la resistencia de salida en las hojas de características del operacional MCP6231). Si incluimos en nuestro circuito convertidor corriente-tensión esta resistencia de salida R 0 del operacional y además consideramos finita su ganancia en lazo abierto Ad , el circuito y la tensión de salida quedan de la siguiente forma:
Figura 53. Influencia sobre la tensión de salida de la resistencia de salida del operacional. Si comparamos esta expresión de la tensión de salida del circuito con la que obtuvimos considerando ideal el operacional (V 0 = If . Rr ), observamos nuevamente que aparecen nuevos términos que, al igual que en los dos casos anteriores, si tenemos en cuenta los valores que toman A d y R0 para los operacionales, pueden despreciarse. Por lo tanto, podemos concluir que el efecto que introduce en la tensión de salida del circuito la resistencia de salida no nula del operacional es también despreciable.
B.4 Efecto sobre la salida del circuito de la tensión de desviación de entrada del operacional. La tensión de desviación de entrada V io de un amplificador operacional (también llamada tensión de offset) es uno de los parámetros más importantes a la hora de introducir errores en la tensión de salida. Se debe a la discrepancia de parámetros en las dos ramas que componen la etapa diferencial de entrada del operacional, por lo cual no es posible predecir cuál será su polaridad en un operacional concreto. Esta no idealidad del operacional puede provocar que la tensión de salida de nuestro circuito sea distinta de cero para una fotocorriente nula. En este caso, el operacional se comporta como si existiese un pequeño generador de corriente continua en serie con uno de los terminales de entrada y cuyo valor es igual a la tensión de desviación del operacional. En el caso de los dos operacionales usados en nuestro estudio este parámetro toma típicamente los siguientes valores: - Tensión de desviación de entrada del operacional OPA350: V io = 150 µV - Tensión de desviación de entrada del operacional MCP62321: V io = 5 mV Por lo tanto, para introducir en nuestro circuito convertidor corriente-tensión el efecto de esta tensión de desviación, introducimos una fuente de tensión adicional de valor V io, que puede ser positiva o negativa (ya que la polaridad de la tensión de desviación es impredecible), y que puede ser colocada en cualquiera de las dos entradas del operacional. Una vez colocada esta fuente de tensión, para determinar el efecto de ésta sobre la tensión de salida del circuito, desactivamos la fuente de corriente I f que representa la fotocorriente generada por el fotodiodo y analizamos el circuito suponiendo que el operacional es ideal. En este caso, el circuito y la tensión de salida V o,off que obtenemos se representa en la siguiente figura:
Figura 54. Influencia sobre la tensión de salida de la tensión de desviación de entrada del operacional. Por lo tanto, obtenemos que el error en la tensión de salida que introduce la tensión de desviación del operacional en nuestro circuito es igual al valor de dicha tensión de desviación. Utilizando los valores típicos suministrados en las hojas de características de estos dispositivos obtenemos que, en el caso del operacional OPA350 se introduciría un error de 150 µV en la tensión de salida, mientras que para el modelo MCP6231 este error tomaría un valor de 5 mV. Si consideramos los valores máximos que los fabricantes nos proporcionan en dichas hojas de datos, este error en la tensión de salida para el OPA350 se podría elevar hasta los 500 µV mientras que para el MCP6231 se mantendría en los 5 mV. Si además de lo anterior, introducimos en este estudio la dependencia que presenta la tensión de desviación de entrada del operacional con la temperatura, observamos en las hojas de datos de nuestros operacionales que para un margen de temperatura de operación entre 0 y 70 ºC, en el caso del OPA350 el error por la tensión de desviación puede incrementarse hasta alcanzar el valor de 1 mV, mientras que para el MCP6231 podría elevarse hasta los 7 mV. No podemos incluir en este punto de nuestro proyecto un estudio de la deriva en el tiempo de la tensión de desviación del operacional debido a que este parámetro no suele ser habitual en las hojas de características de los fabricantes y no disponemos de sus valores para nuestros operacionales. De todas formas, el valor de este parámetro suele ser siempre pequeño y su incidencia prácticamente despreciable en la mayoría de los casos.
B.5 Efecto sobre la salida del circuito de las corrientes de polarización del operacional. Las corrientes de polarización de un operacional representan los valores de las corrientes que circulan por las dos entradas del operacional y son necesarias para la puesta en funcionamiento de la etapa diferencial de entrada del dispositivo, ya que los circuitos de dicha etapa están acoplados en continua. Estas corrientes continuas entran a (o salen de) los dispositivos de entrada del operacional por los elementos conectados a sus terminales de entrada. La corriente que circula por la entrada no inversora se denomina I b+ y la que entra por la entrada inversora I b-. Si las dos ramas de la etapa de entrada diferencial del operacional fuesen exactamente iguales, ambas corrientes también lo serían pero no es posible predecir cuál de las dos va a conducir más y, en consecuencia, sus valores serán similares pero diferentes. No es posible predecir el valor de estas corrientes, y los fabricantes sólo proporcionan el valor medio de ambas y la diferencia entre ellas, sin indicar cuál es la mayor y cuál es la menor. Así, los fabricantes proporcionan en las hojas de características de los dispositivos el valor de dos corrientes: 1. La corriente de polarización I b del operacional, cuyo valor es igual al valor medio de las dos corrientes anteriores: I b
=
I b +
+ I b −
2
2. La corriente de desviación I IO del operacional, cuyo valor es igual a la diferencia entre ambas corrientes: I io
= I b + −
I b −
En el caso de los dos operacionales utilizados en nuestro estudio, estos parámetros toman típicamente los siguientes valores: -
Corriente de polarización del operacional OPA350: Ib = 0,5 pA
-
Corriente de desviación del operacional OPA350: Iio = 0,5 pA
-
Corriente de polarización del operacional MCP6231: Ib = 1 pA
-
Corriente de desviación del operacional MCP6231: Iio = 1 pA
Para introducir en nuestro circuito convertidor corriente-tensión el efecto de estas dos corrientes de polarización, se introducen en el mismo fuentes de corriente continua en la entrada del amplificador operacional. Una vez hecho esto, para determinar el efecto que dichas corrientes tienen sobre la tensión de salida del circuito, simplemente desactivamos la fuente de corriente I f que representa la fotocorriente generada por el fotodiodo y analizamos el circuito resultante suponiendo que el operacional es ideal. Generalmente los efectos de ambas corrientes sobre la tensión de salida son evaluados por separado. En primer lugar, para determinar el efecto sobre la tensión de salida de la corriente de polarización I b del operacional, introducimos en nuestro circuito dos fuentes de corriente continua de valor I b conectadas a las entradas del operacional, desactivamos la fuente de corriente I f y analizamos el circuito suponiendo ideal el operacional. De esta forma, el circuito y la tensión de salida V o,bias que obtenemos se representan en la siguiente figura:
Figura 55. Influencia sobre la tensión de salida de la corriente de polarización del operacional. Por lo tanto, vemos como el efecto de la corriente de polarización sobre la tensión de salida también depende de la resistencia de realimentación R r del operacional. Los valores máximos de la corriente de polarización I b suministrados por los fabricantes de los operacionales utilizados son: 10 pA para el OPA350, mientras que para MCP6231 dicho valor no está especificado. Si además introducimos el efecto de la temperatura sobre este parámetro, obtenemos de las hojas de características de dichos operacionales que para un margen de
temperatura de trabajo entre 0 y 70 ºC, la corriente de polarización puede llegar a alcanzar los 20 pA en ambos modelos de operacionales. En segundo lugar, para determinar el efecto sobre la tensión de salida de la corriente de desviación I io, introducimos en nuestro circuito una fuente de corriente continua de valor
I io 2
entre los terminales de entrada del operacional,
desactivamos la fuente de corriente I f y analizamos el circuito resultante suponiendo que el operacional es ideal. Puesto que la dirección de la corriente de desviación es impredecible, esta fuente de corriente
I io 2
puede ser
colocada con cualquier orientación. El circuito resultante y la tensión de salida V o,ioff que se obtiene se muestran en la siguiente figura:
Figura 56. Influencia sobre la tensión de salida de la corriente de desviación del operacional. Al igual que en el caso anterior, el efecto de la corriente de desviación del operacional sobre la tensión de salida también depende de la resistencia de realimentación. Los valores máximos de la corriente de desviación I io suministrados por los fabricantes son: 10 pA para el OPA350, mientras que para el MCP6231 este parámetro no está especificado. Si además introducimos el efecto de la temperatura sobre este parámetro, de las hojas de datos de estos dispositivos obtenemos que para un margen de temperatura de trabajo entre 0 y 70 ºC, la corriente de desviación se mantiene en 10 pA para el OPA350. B.6 Error en continua a la salida del circuito de medición de irradiancia.
El efecto resultante sobre la tensión de salida del circuito de los tres parámetros anteriores del operacional (tensión de desviación de entrada V io, corriente de polarización I b y corriente de desviación I io) es añadir una tensión continua no deseada a la señal de salida pretendida. Es por ello que generalmente estos tres efectos se agrupan en una misma expresión que recibe el nombre de Error en continua del circuito. En nuestro circuito, la expresión para el error en continua de la tensión de salida tomaría la forma siguiente:
V o
= V o ,off + V o ,bias + V o ,ioff = V io + I b . Rr +
I io 2
.Rr
Cuando se pretende cuantificar dicho error, se deben tomar como parámetros del operacional los valores máximos de V io, I b, I io que aparezcan en las hojas de características del operacional en cuestión, obteniéndose de esta forma el peor caso del error en continua del circuito. 1.1.1.1.1.2
Estudio mediante simulación del error en continua del circuito de acondicionamiento para los dos modelos de operacionales elegidos
Seguidamente al estudio teórico del error en continua que introducen las no idealidades del amplificador operacional en la tensión de salida del circuito convertidor corriente-tensión, utilizamos el software de simulación OrcCAD 16 en su versión demo para contrastar resultados. Para realizar estas simulaciones, los modelos de los operacionales para dicho software fueron descargados desde la página Web de los fabricantes. En todas nuestras simulaciones ambos modelos de operacionales estarán alimentados con las siguientes tensiones de alimentación: V+ = +5V, V- = 0V. En el estudio del error en continua para nuestro circuito convertidor corrientetensión, utilizaremos una resistencia de realimentación R r de valor 5 kΩ, el cual es un valor de un orden de magnitud próximo al que se utilizará posteriormente en nuestro circuito de medición de irradiancia. En primer lugar, realizamos la simulación utilizando el operacional OPA350, y para ello montamos en el trazador de esquemas el siguiente circuito:
Figura 57. Circuito utilizado para el estudio mediante simulación del error en continua que introduce el operacional OPA350. Una vez realizada una simulación en el dominio del tiempo durante un intervalo de 20 segundos y para una temperatura de trabajo de 27 ºC, obtenemos la siguiente curva para la tensión de salida V o del circuito:
Figura 58. Curva de tensión de salida obtenida para el circuito anterior. Por lo tanto, según los resultados de la simulación, el operacional OPA350 a una temperatura de trabajo de 27 ºC introduce en la salida del circuito un error en continua de aproximadamente 24 nV.
Si ahora realizamos el estudio variando la temperatura de trabajo del circuito, realizando para ello un análisis transitorio para tres valores diferentes de temperatura: 0 ºC, 35 ºC y 70ºC, obtenemos las siguientes curvas para la tensión de salida del circuito anterior:
Figura 59. Curvas de tensión de salida obtenidas para el circuito anterior a varias temperaturas de funcionamiento. En las curvas anteriores podemos observar como el error en continua del circuito no se ve afectado por la temperatura de trabajo del mismo. Si ahora calculamos el valor del error en continua que se obtiene al sustituir los parámetros reales del operacional (obtenidos de su hoja de características) en la expresión que obtuvimos en el estudio teórico del error en continua del circ circui uito to,, obte obtene nemo moss que que para para una una temp temper erat atur ura a de trab trabaj ajo o de 25 ºC el opera peracciona ionall OPA3 OPA35 50 intr intro oduc duciría iría un error rror en conti ontinu nua a máx máximo imo de aproximadamente 0.5 mV, mientras que para una temperatura de trabajo de 70ºC este valor aumentaría hasta alcanzar 1 mV. Observamos como aparece una discrepancia entre los resultados teóricos y los de simulación para este amplificador operacional. Segu Seguid idam amen ente te,, real realiz izam amos os la simu simula laci ción ón util utiliz izan ando do el oper operac acio iona nall MCP6231, y para ello montamos en el trazador de esquemas el siguiente circuito:
Figura 60. Circuito utilizado para el estudio mediante simulación del error en continua que introduce el operacional MCP6231. Una vez realizada una simulación en el dominio del tiempo durante un intervalo de 20 segundos y para una temperatura de trabajo de 27 ºC, obtenemos la siguiente curva para la tensión de salida V o del circuito:
Figura 61. Curva de tensión de salida obtenida para el circuito anterior.
Por lo tanto, según los resultados de la simulación, el operacional MCP6231, a una temperatura de trabajo de 27 ºC introduce en la salida del circuito un error en continua de aproximadamente 470 µV. Si ahora realizamos el estudio variando la temperatura de trabajo del circuito, realizando para ello un análisis transitorio para tres valores diferentes de temperatura: 0 ºC, 35 ºC y 70ºC, obtenemos las siguientes curvas para la tensión de salida del circuito anterior:
Figura 62. Curva de tensión de salida obtenida para el circuito anterior a varias temperaturas de funcionamiento. En las curvas anteriores podemos observar como el error en continua del circuito permanece aproximadamente constante en torno a los 473 µV. Si ahora calculamos el valor del error en continua que se obtiene al sust sustititui uirr los los pará paráme metro tross real reales es del del oper operac acio iona nall (obt (obten enid idos os de su hoja hoja de caract caracterí erísti sticas cas)) en la expres expresión ión teóric teórica a del del error error en contin continua ua del del circuit circuito, o, obtenemos que para una temperatura de trabajo de 25 ºC el operacional MCP6231 introduciría un error en continua máximo de aproximadamente 5 mV, mientras que para una temperatura de trabajo de 70ºC este valor podría aumentar hasta alcanzar los 7 mV. Observ Observamo amoss nueva nuevamen mente te como como exist existe e discre discrepan pancia cia entre entre los result resultado adoss teóricos y los de simulación para este amplificador operacional.
1.1.1.1.1.3
Estudio experimental del error en continua del circuito de acondicionamiento para los dos modelos de operacionales elegidos
Debido a las diferencias que aparecen entre los valores del error en continua obtenidos, por un lado, mediante simulación y, por otro, a partir del estudio teórico del mismo junto con los valores proporcionados en las hojas de características de los operacionales, realizamos la medida real del mismo montando el circuito en un módulo de entrenamiento y midiendo directamente la salida del circuito mediante un voltímetro. Para realizar dicha medida se implementaron los siguientes circuitos, en los cuales las tensiones de alimentación de los operacionales fueron: V+ = 5.04V, V- = 0V:
Figura 63. Circuitos que fueron montados para medir el error en continua que introducen nuestros operacionales en el circuito de medición de irradiancia. Los resultados obtenidos fueron los siguientes: -
Para el amplificador operacional OPA350 se mide en ambos casos una tensión de salida de 0.001V.
-
Para el amplificador operacional MCP6231 se mide en ambos casos una tensión de salida también de 0.001V. Por lo tanto, podemos concluir que ambos modelos de operacionales
introducen un error en continua despreciable en la tensión de salida de nuestro circuito de medición de irradiancia.
1.1.1.1.1.4
Estudio de la excursión de la tensión de salida del circuito de acondicionamiento para los dos modelos de operacionales elegidos
La tensión de salida de los amplificadores operacionales reales presenta un límite máximo y un límite mínimo, de forma que dicha tensión nunca llegará a alcanzar los valores extremos de la alimentación del operacional. La máxima variación posible en la salida del operacional es la excursión de la tensión de salida (Output Voltage Swing). Como comentábamos anteriormente cuando
introducíamos los modelos de operacionales usados en nuestros estudios, existe un tipo de operacionales que permiten obtener tensiones de salida muy próximas a los valores de las tensiones de alimentación del operacional; son los denominados operacionales “rail-to-rail”, tipo al que pertenecen los modelos OPA350 y MCP6231. La ventaja que presentan este tipo de amplificadores se hace más patente cuando las tensiones de alimentación son bajas, ya que en estos casos no se puede permitir perder un margen de salida amplio debido a las limitaciones en la excursión de salida del operacional. Por ello, en estos casos se hace necesario el empleo de este tipo de operacionales, obteniéndose con ello una excursión de la tensión de salida que va desde prácticamente el valor de la alimentación negativa hasta el de la positiva. Si una señal de entrada es lo suficientemente grande como para que la salida del operacional sobrepase estos límites, la salida deja de responder y se produce un recorte, con lo que la característica de transferencia del circuito deja de ser lineal. Por ello, también podemos definir la excursión de la tensión de salida de un circuito amplificador como el margen de tensión de salida permitido antes de que se produzcan recortes. La excursión de la tensión de salida de un circuito amplificador depende del tipo de amplificador operacional utilizado, de las tensiones de alimentación y de la resistencia de carga. La influencia de la resistencia de carga sobre este parámetro del circuito tiene su fundamento en la limitación que tiene el operacional respecto a la corriente máxima que puede suministrar a una carga. De esta forma, si una determinada carga exige del operacional una corriente mayor que este límite, la forma de onda de la tensión de salida también se vería recortada. En el caso de los dos
modelos de operacionales considerados esta corriente máxima de salida toma típicamente los siguientes valores: -
Para el amplificador operacional OPA350: Corriente de cortocircuito de salida: Isc=80mA
-
Para el amplificador operacional MCP6231: Corriente de cortocircuito de salida: Isc=23mA Como comentamos anteriormente, en nuestro equipo de medida todos los
circuitos de medición de irradiancia estarán conectados a entradas del convertidor analógico-digital del microcontrolador, por lo que para tener en cuenta la limitación de la corriente máxima del operacional deberemos determinar la resistencia de entrada de dicho convertidor, la cual será la resistencia de carga de nuestro circuito amplificador. Como se comentará posteriormente cuando hablemos del modelo de microcontrolador que hemos elegido para nuestro equipo, dicho dispositivo incluye un convertidor analógicodigital cuyas líneas de entrada presentan una resistencia de 400 Ω mientras se realiza el muestreo de la señal analógica de entrada. Además, la referencia de voltaje de dicho convertidor será de 2,5V, por lo que dimensionaremos la resistencia de realimentación de nuestro circuito amplificador para que sea éste el valor máximo de la tensión de salida que pueda tomar nuestro circuito en condiciones reales de funcionamiento, todo ello introduciendo un margen de seguridad suficiente para asegurarnos de que en ningún caso se produzca la saturación del circuito. Por todo ello, tenemos que nuestro circuito amplificador de transimpedancia será calibrado para que la tensión de salida tome un valor máximo de 2,5V, siendo su resistencia de carga de 400Ω, por lo que, a partir de estos valores podemos comprobar cómo la corriente de salida del operacional en nuestro circuito no constituye limitación alguna para la excursión de la tensión de salida del mismo en ninguno de los dos modelos de operacionales considerados. Por lo tanto, en nuestro sistema, la excursión de la tensión de salida de los circuitos vendrá determinada por el tipo de operacional y por las tensiones de alimentación de los mismos. Con respecto a la alimentación, tanto los operacionales como los restantes componentes del equipo serán alimentados mediante un suministro de tensión positiva de +5V y un suministro de tensión negativa conectado a masa. Por lo
tanto, en nuestros circuitos de medición de irradiancia vamos a tener un margen de la tensión de alimentación de 5V. Este margen tan reducido nos obliga a usar operacionales del tipo “rail-to-rail” para intentar maximizar la excursión de la tensión de salida del circuito. Si atendemos a los datos suministrados por los fabricantes de los dispositivos en sus hojas de características, la excursión de la tensión de salida de ambos modelos de operacional es la siguiente: -
Para el operacional OPA350 y una temperatura de operación de 25ºC, la excursión de la tensión de salida típicamente va desde 10 mV por encima de la tensión negativa de alimentación del operacional hasta 10 mV por debajo de la tensión positiva de alimentación. Por lo tanto, teniendo en cuenta nuestras tensiones de alimentación, la excursión de la tensión de salida va desde los 10 mV hasta los 4,99 V. Si introducimos el efecto de la temperatura de operación obtenemos que, para un margen de temperatura de trabajo desde -40ºC hasta +85ºC, la excursión de la tensión de salida se puede reducir ligeramente hasta quedar en un margen que va desde los 50 mV hasta los 4,95 V.
-
Para el operacional MCP6231 y una temperatura de operación de 25ºC, la excursión de la tensión de salida típicamente va desde 35 mV por encima de la tensión negativa de alimentación del operacional hasta 35 mV por debajo de la tensión de alimentación positiva. Por lo tanto, la excursión de la tensión de salida iría desde los 35 mV hasta los 4,965 V.
Para realizar el estudio comparativo de este parámetro hemos utilizado también tanto la simulación con el paquete OrCAD como el montaje del circuito. C.1 Estudio mediante simulación de la excursión de la tensión de salida del circuito de acondicionamiento para los dos modelos de operacionales elegidos. Para realizar el estudio de la excursión de la tensión de salida de nuestro circuito mediante simulación, se utilizó una fuente de corriente continua I f para modelar el funcionamiento del fotodiodo sometido a tensión cero. Del mismo
modo, se utilizó una resistencia de realimentación de 6 kΩ y unas tensiones de alimentación del operacional de V+ = 5V, V- = 0V. Se realizó un análisis de barrido en continua en el que la variable de barrido fue la fuente de corriente I f, a la cual se hizo variar linealmente desde 0A hasta 1mA. Esto produciría en el caso de un operacional ideal un margen lineal de la tensión de salida entre 0 y 6V. En primer lugar, realizamos la simulación con el modelo del operacional OPA350, para lo cual se montó en el trazador de esquemas el siguiente circuito:
Figura 64. Circuito utilizado para el estudio mediante simulación de la excursión de la tensión de salida para el modelo de operacional OPA350. Como ya explicamos en el apartado anterior, un operacional real no podrá alcanzar nunca en su salida los valores extremos de la tensión de alimentación por lo que la tensión de salida del circuito anterior va a presentar recortes para el margen de variación de I f que hemos impuesto. Estos recortes nos van a permitir determinar la excursión de la tensión de salida del operacional OPA350 para una temperatura de trabajo de 27 ºC. Una vez realizado el análisis y la simulación del circuito anterior obtenemos las siguientes curvas para la fotocorriente I f y para la tensión de salida del operacional V 0 :
Figura 65. Curvas de fotocorriente y de tensión de salida obtenidas para el circuito anterior. Haciendo un zoom sobre las zonas correspondientes a los recortes de la tensión de salida del operacional obtenemos lo siguiente:
Figura 66. Detalle correspondiente a la tensión de salida del circuito anterior que muestra el punto inferior en el que se produce el recorte de dicha tensión.
Figura 67. Detalle correspondiente a la tensión de salida del circuito anterior que muestra el punto superior en el que se produce el recorte de dicha tensión. Por lo tanto, a la vista de estos resultados podemos concluir que para una temperatura de trabajo de 27 ºC y unas tensiones de alimentación de: V+=5V, V-=0V, V-=0V, el amplificad amplificador or operacion operacional al OPA350 OPA350 presenta presenta aproximad aproximadamen amente te un margen margen de variación variación lineal para la tensión tensión de salida que va desde los 60 mV hasta los 4.98 V. Analicemos ahora cómo afecta la temperatura de trabajo a dicho margen de variación lineal de la tensión de salida en este amplificador operacional. Para Para ello ello realiz realizamo amoss nueva nuevamen mente te en nuestr nuestro o progra programa ma de simula simulació ción n un análisis en corriente continua con dos variables independientes anidadas: por un lado, la fotocorriente I f , para la que definimos un margen de variación lineal de 0 A – 1 mA, y por otro, la temperatura de trabajo, para la que definimos el conjunto de valores: -10ºC, +15ºC,+30ºC,+50ºC y +75ºC. Una vez configurado el análisis y simulado el circuito obtenemos las siguientes curvas para la fotocorriente I f f y para la tensión de salida del operacional V 0 0 :
Figura 68. Curvas de fotocorriente y de tensión de salida obtenidas para el circuito anterior para diversas temperaturas de operación. Nuevamente, para distinguir con mayor detalle las curvas correspondientes a la tensión de salida representamos únicamente dichas curvas en la pantalla del analizador de ondas de nuestro programa de simulación:
Figura 69. Curvas de tensión de salida obtenidas para el circuito anterior para diversas temperaturas de operación.
Realizando un zoom sobre las regiones de la gráfica correspondientes a los recortes en la tensión de salida obtenemos lo siguiente:
Figura 70. Detalle de la curva anterior en el que se muestra el punto inferior en el que se produce el recorte en la tensión de salida.
Figura 71. Detalle de la curva anterior en el que se muestra el punto superior en el que se produce el recorte en la tensión de salida.
A la vista de los resultados obtenidos podemos concluir que el margen de variación lineal de la tensión de salida para el amplificador OPA350 para unas tensiones de alimentación de: V+=5V, V-=0V y para una margen de temperatura de funcionamiento entre -10ºC y +75ºC, prácticamente no se ve modificado por la temperatura de trabajo respecto al valor obtenido anteriormente, manteniéndose aproximadamente un margen de variación lineal de 60 mV a 4.98 V. Por lo tanto, como conclusión de este punto podemos decir que el amplificador operacional OPA350 presenta, para las tensiones de alimentación especificadas anteriormente y para un margen de variación de la temperatura de trabajo de entre -10ºC y +75ºC, un margen de variación lineal para la tensión de salida aproximadamente de 60 mv a 4.98V. Ahora realizamos la simulación con el modelo del operacional MCP6231, para lo cual se montó en el trazador de esquemas el siguiente circuito:
Figura 72. Circuito utilizado para el estudio mediante simulación de la excursión de la tensión de salida para el modelo de operacional MCP6231. Una vez realizado el análisis y la simulación del circuito anterior obtenemos las siguientes curvas para la fotocorriente I f y para la tensión de salida del operacional V 0 :
Figura 73. Curvas de fotocorriente y de tensión de salida obtenidas para el circuito anterior. Haciendo un zoom sobre las zonas correspondientes a los recortes de la tensión de salida del operacional obtenemos lo siguiente:
Figura 74. Detalle correspondiente a la tensión de salida del circuito anterior que muestra el punto inferior en el que se produce el recorte de dicha tensión.
Figura 75. Detalle correspondiente a la tensión de salida del circuito anterior que muestra el punto superior en el que se produce el recorte de dicha tensión. Por lo tanto, a la vista de estos resultados podemos concluir que para una temperatura de trabajo de 27 ºC y unas tensiones de alimentación de: V+=5V, V-=0V, el amplificador operacional MCP6231 presenta aproximadamente un margen de variación lineal para la tensión de salida que va desde los 0.5 mV hasta los 4.92 V. Analicemos nuevamente cómo afecta la temperatura de trabajo a dicho marg margen en de vari variac ació ión n line lineal al de la tens tensió ión n de salid salida a en este este ampl amplifific icad ador or oper operac acio iona nal.l. Para Para ello ello real realiz izam amos os nuev nuevam amen ente te en nues nuestr tro o prog progra rama ma de simulación un análisis en corriente continua con dos variables independientes anidadas: por un lado, la fotocorriente I f , para la que definimos un margen de variación lineal de 0 A – 1 mA, y por otro, la temperatura de trabajo, para la que definimos el conjunto de valores: -10ºC, +15ºC,+30ºC,+50ºC y + 75ºC. Una vez configurado el análisis y simulado el circuito obtenemos las siguientes curvas para la fotocorriente I f f y para la tensión de salida del operacional V 0 0 :
Figura 76. Curvas de fotocorriente y de tensión de salida obtenidas para el circuito anterior para diversas temperaturas de operación. Nuevamente, para distinguir con mayor detalle las curvas correspondientes a la tensión de salida representamos únicamente dichas curvas en la pantalla del analizador de ondas de nuestro programa de simulación:
Figura 77. Curvas de tensión de salida obtenidas para el circuito anterior para diversas temperaturas de operación.
Realizando un zoom sobre las regiones de la gráfica correspondientes a los recortes en la tensión de salida obtenemos lo siguiente:
Figura 78. Detalle de la curva anterior en el que se muestra el punto inferior en el que se produce el recorte en la tensión de salida.
Figura 79. Detalle de la curva anterior en el que se muestra el punto superior en el que se produce el recorte en la tensión de salida.
A la vista de los resultados obtenidos podemos concluir que el margen de variación lineal de la tensión de salida para el amplificador MCP6231 para unas tensiones de alimentación de: V+=5V, V-=0V y para un margen de temperatura de funcionamiento entre -10ºC y +75ºC, prácticamente no se ve modificado por la temperatura de trabajo respecto al valor obtenido anteriormente, manteniéndose aproximadamente un margen de variación lineal de 0.5 mV a 4.92 V Por lo tanto, como conclusión de este apartado podemos decir que el amplificador operacional MCP6231 presenta, para las tensiones de alimentación especificadas anteriormente y para un margen de variación de la temperatura de trabajo de entre -10ºC y +75ºC, un margen de variación lineal para la tensión de salida aproximadamente de 0.5 mv a 4.92V. C.2 Estudio experimental de la excursión de la tensión de salida del circuito de acondicionamiento para los dos modelos de operacionales elegidos. En este apartado realizamos un estudio experimental de la excursión de la tensión de salida de los dos modelos de operacionales que estamos usando. Para ello montamos ambos amplificadores operacionales en configuración seguidor de tensión y vamos variando la tensión de entrada del circuito mediante un potenciómetro. El circuito resultante se muestra en la siguiente figura, en la que los voltajes indicados fueron medidos mediante voltímetro previamente a realizar las mediciones:
Figura 80. Circuito utilizado para el estudio experimental de la excursión de la tensión de salida para los dos modelos de operacionales considerados.
De esta forma, variando la posición del cursor vamos variando la tensión de salida del operacional y, de esta forma, podemos observar el margen lineal de variación de dicha tensión. Los resultados obtenidos se muestran en las dos gráficas siguientes:
Característica de transferencia Operacional OPA350 6,000 5,000 ) 4,000 V ( 0 3,000 V 2,000
1,000 0,000 0,000
1,000
2,000
3,000
4,000
5,000
6,000
7,000
Vi (V)
Figura 81. Característica de transferencia del circuito anterior para el modelo de operacional OPA350.
Característica de transferencia Operacional MCP6231 6,000 5,000 ) 4,000 V ( o 3,000 V 2,000
1,000 0,000 0,000
1,000
2,000
3,000
4,000
5,000
6,000
7,000
Vi (V)
Figura 82. Característica de transferencia del circuito anterior para el modelo de operacional MCP6231.
Por lo tanto, podemos concluir finalmente que nuestro circuito de medición de irradiancia implementado con cualquiera de los dos modelos de operacional utilizados en nuestro estudio, presenta una excursión de la tensión de salida prácticamente similar al margen de la tensión de alimentación. Este hecho deberá ser tenido muy en cuenta a la hora de elegir la resistencia de realimentación del circuito ya que en todo momento la tensión de salida del mismo deberá encontrarse dentro de dicho margen de variación lineal. Como conclusión final de este apartado podemos decir que, si bien ambos modelos de operacionales se adaptan perfectamente a las condiciones de funcionamiento de nuestro circuito de medición de irradiancia, teniendo en cuenta criterios de tipo económico (ya que el modelo MCP6231 implica un coste mucho menor que el OPA350), decidimos finalmente usar en nuestro equipo de medida el modelo MCP6231 de la empresa Microchip. Puesto que para nuestros circuitos de medición de irradiancia necesitaremos ocho amplificadores operacionales (ya que, como se comentará en próximos apartados, el microcontrolador elegido posee un convertidor analógico-digital con ocho líneas de entrada, por lo que hemos dotado al equipo de 8 fotodiodos para medir la irradiancia), hemos decidido, tratando de ahorrar costes, utilizar dos integrados cuádruples modelo MCP6234, los cuales vienen en encapsulado de plástico tipo DIP con 14 terminales. En la siguiente figura se puede apreciar una imagen de este dispositivo junto con el diagrama de asignación de los pines de este encapsulado:
Figura 83. Modelo de amplificador operacional MCP6234 de la empresa Microchip.
La hoja de características de este componente puede ser consultada en el CD adjunto al presente proyecto. 1.1.1.1.2 ELECCIÓN DEL TIPO DE RESISTENCIA DE REALIMENTACIÓN UTILIZADA EN NUESTRO CIRCUITO DE MEDICIÓN Y DIMENSIONAMIENTO DE LA MISMA Una vez que hemos decidido utilizar para la implementación de nuestros circuitos de medición de irradiancia el modelo de fotodiodo BPW21 de la empresa OSRAM junto con el modelo de amplificador operacional MCP6234 de la empresa Microchip, procedemos en el presente punto a elegir y dimensionar la resistencia de realimentación R r que utilizaremos en dichos circuitos. Para ello debemos tener muy presente que la medida de la pérdida de energía por suciedad que realizará nuestro equipo será determinada a partir de la pérdida de irradiancia incidente que se produce por dicho factor. Dicha pérdida de irradiancia vendrá dada por la diferencia entre los niveles de irradiancia que nuestro equipo detecta tras las dos zonas de su cristal frontal (zona sucia y zona protegida de la suciedad). Asimismo, ambos niveles de irradiancia serán calculados a partir de las tensiones de salida de los diferentes circuitos de medición de irradiancia, cada uno de los cuales estará compuesto por un fotodiodo (sensor de irradiancia) junto con un circuito amplificador de transimpedancia (circuito de acondicionamiento de señal), y que serán implementados utilizando los mismos modelos de componentes. Por lo tanto, con el objetivo de que las diferencias en las tensiones de salida de dichos circuitos sean debidas mayoritariamente a las diferencias en el nivel de irradiancia incidente tras las diferentes zonas del cristal frontal y no a la tolerancia de los componentes usados en su implementación, se hace imprescindible minimizar la tolerancia de la resistencia de realimentación que usemos en nuestro equipo. Por todo ello, tratando de minimizar la dispersión introducida por la tolerancia de las resistencias de realimentación utilizadas en los diferentes circuitos de medición, hemos decidido utilizar resistencias de precisión de película metálica que presentan una tolerancia del 1%. Una cuestión fundamental a tener en cuenta a la hora de realizar el dimensionamiento de la resistencia de realimentación R r del circuito de
medición de irradiancia usado en nuestro equipo es que debemos asegurarnos de que, para cualquier valor de irradiancia incidente y para cualquier temperatura de funcionamiento, siempre dentro de los intervalos lógicos de variación de ambos parámetros, el valor de la tensión de salida de dicho circuito nunca sobrepase el valor límite admisible de la tensión de entrada para el convertidor analógico-digital que tiene que procesar dicha señal. Es decir, para que la lectura de la tensión de salida del circuito de medición de irradiancia por parte del microcontrolador se produzca de forma correcta, dicha tensión de salida no puede ser mayor que la tensión superior de referencia (VREF) del ADC de nuestro microcontrolador. En caso contrario, diremos que la tensión de salida del circuito ha saturado el ADC, obteniéndose una lectura igual al valor máximo que se puede obtener en función de la precisión utilizada en el convertidor (en el caso de que la precisión utilizada sea de 8 bits, la lectura obtenida sería FFh). Por todo ello, a la hora de dimensionar esta resistencia de realimentación debemos tener en cuenta, por un lado, la curva de fotocorriente generada en función de la irradiancia incidente (I f – G) que obtuvimos experimentalmente para el modelo de fotodiodo BPW21, la cual fue mostrada en la figura 48, y por otro, las características del ADC del microcontrolador, con el objeto de que las tensiones de salida de los diferentes circuitos de medición de irradiancia nunca superen el valor de voltaje de entrada máximo (V REF) que admite dicho convertidor para obtener una lectura correcta de dicha tensión. Asimismo, debemos definir unos valores máximos lógicos tanto para la irradiancia incidente G como para la temperatura de operación a los que puede verse sometido nuestro equipo de medida. Con respecto a la curva I f - G para el modelo de fotodiodo BPW21, se obtuvo experimentalmente, para valores de irradiancia incidente superiores a 500 W/m2, una recta de regresión de ecuación:
( ) = 1,623⋅ G(W / m ) − 405
I f µ A
2
siendo: If = fotocorriente generada por el fotodiodo sometido a tensión cero G = irradiancia global incidente sobre el fotodiodo
Por otro lado, como se comentará posteriormente cuando tratemos el modelo de microcontrolador elegido para nuestro equipo, el convertidor analógico-digital que recibirá las tensiones de salida de los diferentes circuitos de medición de irradiancia, presenta unas tensiones de referencia (V REF y V GND) que pueden tomar los siguientes valores: -
VREF = entre +2,4V y +3V (tensión superior de referencia)
-
VGND = 0V (tensión inferior de referencia)
En nuestro equipo de medida, esta tensión superior de referencia V REF será suministrada por un circuito integrado de referencia de voltaje de precisión, el cual ajustará dicha tensión a +2,5V. De esta forma y según las hojas de características de nuestro microcontrolador, el convertidor analógico-digital admitirá voltajes de entrada que estén dentro del margen (VGND-0.2V, VREF+0,2V), lo que implica que, en nuestro caso, las señales analógicas que llegan a dicho convertidor deben mantenerse dentro del intervalo (-0,2V , +2,7V). Por lo tanto y particularizando para nuestro equipo de medida, la resistencia de realimentación R r de los circuitos de medición de irradiancia debería ser dimensionada de forma que la tensión de salida de dichos circuitos bajo cualquier condición de operación nunca fuese mayor de +2,7V. Sin embargo, con el objeto de introducir un margen de seguridad suficiente, vamos a dimensionar dicha resistencia para que la tensión de salida se mantenga por debajo de +2,5V (lo que supone introducir un margen de seguridad del 7,4%). A la hora de considerar el nivel de irradiancia máximo al que pueden estar sometidos nuestros fotodiodos bajo condiciones reales de funcionamiento, hemos supuesto que la irradiancia incidente nunca alcanzará un valor superior a 1200 W/m2, lo que suponemos introduce otro margen de seguridad suficiente que nos permite suponer con ciertas garantías que, una vez dimensionada la resistencia de realimentación para este valor límite de irradiancia, las tensiones de salida de los circuitos de medición nunca alcanzarán el valor límite admisible por el convertidor. Teniendo en cuenta la curva de calibración Fotocorriente-Irradiancia que obtuvimos experimentalmente para el modelo de fotodiodo elegido:
( ) = 1,623⋅ G(W / m ) − 405
I f µ A
2
, obtenemos que para una irradiancia incidente de 1200 W/m 2 se generaría una fotocorriente de 1,5426 mA. Por lo tanto, debemos dimensionar la resistencia de realimentación de forma que para este valor de fotocorriente y bajo la máxima temperatura de operación considerada para nuestro equipo, el voltaje de salida del circuito de medición no supere los 2,5V. Puesto que la tensión de salida de nuestro circuito de medición viene dada por el producto de la fotocorriente generada por la resistencia de realimentación: V o
=
I f ⋅ Rr
, introduciendo en esta ecuación el valor máximo de fotocorriente considerado junto el valor máximo admisible para la tensión de salida de dicho circuito, obtenemos: Rr , max
=
V 0, max I f , max
=
2,5V −3
1,5426 ⋅10 A
≅ 1,62k Ω
Teniendo en cuenta este dato, decidimos utilizar en nuestros circuitos de medición de irradiancia resistencias de precisión de película metálica de la empresa Tyco Electronics, de Valor Nominal 1,6kΩ, Tolerancia +/-1% y Potencia nominal de disipación (medida a 70ºC de temperatura ambiente) de 0,6W. La hoja de características de este componente puede consultarse en el CD adjunto al presente proyecto. Dicho componente presenta un coeficiente de temperatura de +50 partes por millón (ppm), lo que implica que, considerando que la temperatura interior de nuestro equipo de medida puede llegar a alcanzar los 75 ºC, el valor óhmico de dicha resistencia podría aumentar hasta alcanzar un valor que viene determinado por la ecuación de variación del valor óhmico de una resistencia en función de la temperatura: RT
RTN , max ⋅[1 +α ⋅ (T −TN )]
=
siendo: RT = valor óhmico (en Ω) del componente a la temperatura T (en ºC) RTN,max = valor óhmico máximo (en Ω) que puede tomar el componente a la temperatura nominal TN (generalmente 25ºC). Este valor viene dado por el máximo valor nominal que puede tomar el componente en base a su tolerancia de fabricación. α = Coeficiente de temperatura del componente (expresado en tanto por uno)
Sustituyendo en la ecuación anterior los valores de nuestro componente, obtenemos que el valor óhmico máximo que podría alcanzar nuestra resistencia de realimentación en nuestro equipo de medida es de:
[1 +α ⋅ ( 75º C − 25º C ) ] = = (1,6 ⋅10 Ω ⋅1,01) ⋅ [1 + 50 ⋅10 ⋅ ( 75º C − 25º C ) ] =
R75ºC
= R25ºC ,max ⋅
−6
3
= 1620,04Ω
Por lo tanto, multiplicando este valor de resistencia por el valor máximo de fotocorriente que hemos considerado obtenemos que la tensión de salida máxima que cabría esperar a la salida de los circuitos de medición de irradiancia en las condiciones de operación más desfavorables (una irradiancia incidente de 1200W/m 2 y una temperatura en el interior del equipo de 75ºC), seria de: V o , max
−3
= I f , max ⋅ Rr , max = (1.5426 ⋅10
A) ⋅ (1620,04Ω)
≅
2,499V
Vemos como dicha tensión de salida se mantiene por debajo de los 2,5V incluso en las condiciones de funcionamiento más desfavorables. Tomando este valor óhmico máximo y el valor máximo considerado para la fotocorriente, tenemos que el valor máximo de la potencia disipada por nuestras resistencias de realimentación vendrá dado por: P r ,max
2
= I f ,max ⋅ Rr ,max =
−3
2
(1,5426 ⋅10 A) ⋅1620,04Ω ≅ 3,85mW
Por lo tanto, la potencia máxima de disipación del componente no supone ningún problema en nuestro equipo de medida ya que, consultando la curva de Potencia máxima de disipación frente a Temperatura ambiente suministrada por el fabricante en las hojas de datos, observamos que a una temperatura ambiente de 80ºC la potencia máxima de disipación sólo desciende hasta el 80% de la correspondiente a una temperatura de 70ºC, la cual, como se comentó anteriormente, es de 0,6W. Como conclusión final a este conjunto de apartados en los que hemos diseñado el circuito de medición de irradiancia que será utilizado en nuestro equipo de medida, presentamos un esquema en el que se muestran los modelos de componentes elegidos:
Figura 84. Diseño final del circuito de medición de irradiancia utilizado en nuestro equipo de medida. 1.1.1.2
ELECCIÓN DEL MODELO DE MICROCONTROLADOR UTILIZADO EN NUESTRO EQUIPO DE MEDIDA
Procedemos en este apartado del proyecto a describir las principales características del modelo de microcontrolador que hemos seleccionado para la implementación de nuestro equipo de medida. Dicho modelo es el AT89C51AC3 perteneciente a la empresa ATMEL. Consiste en un microcontrolador de 8 bits provisto con una memoria ROM de tipo Flash de 64 kilobytes (kB) de tamaño, y un núcleo que posee la arquitectura de la familia de microcontroladores 8051. Las características más importantes de este dispositivo son las siguientes: -
Arquitectura de núcleo 80C51
-
256 bytes de memoria RAM interna
-
2 kilobytes de ERAM (RAM extendida) incluida en el chip
-
64 kilobytes de memoria tipo Flash incluida en el chip, con una retención de los datos de 10 años a 85ºC y 100k de lectura-escritura
-
Permite la programación In-System mediante el programa de arranque UART (Recepción Transmisión Asíncrona Universal) incluido en el chip, y capacidad IAP (Interfaz de aplicación)
-
14 fuentes de interrupción con 4 niveles de prioridad
-
3 temporizadores/contadores de 16 bits
-
UART full duplex (recepción-transmisión simultánea) compatible con 80C51
-
Arquitectura de alta velocidad: •
En modo estándar: 12 periodos de reloj por cada ciclo de máquina:
40 megahertzios (MHz): Tensión de alimentación (V cc) de 3V a 5,5V, y ejecución de código externo e interno
•
60 MHz: Vcc de 4,5V a 5,5V, y sólo ejecución de código interno
En modo X2: 6 periodos de reloj por cada ciclo de máquina:
20 MHz: Vcc de 3V a 5,5V, y ejecución de código externo e interno
30MHz: Vcc de 4,5V a 5,5V, y sólo ejecución de código interno
-
5 puertos: 32+4 líneas de entrada/salida digitales
-
Doble apuntador de datos (DPTR)
-
Convertidor analógico-digital (ADC) de 10 bits de resolución con 8 entradas multiplexadas
-
Interfaz SPI (sólo disponible en los encapsulados PLCC52 y VQFP64)
-
Modos de ahorro de energía: •
Modo de parada
•
Modo de caída de energía
-
Tensión de alimentación: de 3 a 5,5V
-
Rango de temperatura de funcionamiento de tipo industrial: -40ºC→+85ºC
-
Encapsulados: VQFP44, PLCC44, VQFP64 y PLCC52
1.1.1.2.1 DESCRIPCIÓN, DIAGRAMA DE BLOQUES Y CONFIGURACIÓN DE LOS PINES Para nuestro equipo, y debido a que necesitamos disponer de un interfaz SPI para comunicar nuestro microcontrolador con el reloj en tiempo real que también incorporaremos al diseño, hemos decidido elegir, de los cuatro tipos de encapsulado disponibles, el PLCC52, el cual dispone de 52 pines distribuidos
uniformemente en los cuatro lados del encapsulado, de forma que en cada uno de ellos encontramos un total de 13 pines. El diagrama de bloques de nuestro microcontrolador se encuentra representado en la siguiente figura:
Figura 85. Diagrama de bloques del microcontrolador AT89C51AC3 de ATMEL. De la misma forma, la configuración de los pines para el tipo de encapsulado seleccionado se muestra en la siguiente figura:
Figura 86. Configuración de los pines para el encapsulado PLCC52. Este microcontrolador, cuando opera en modo de funcionamiento X2, con una velocidad máxima del reloj externo de 20 MHz, es capaz de alcanzar una duración del ciclo de máquina de 300 ns. En este modelo de microcontrolador, el puerto 0 es un puerto de entrada/salida de 8 bits bidireccional en drenador abierto, de forma que los pines del puerto 0 que tienen escrito un 1 flotan, y en este estado se pueden usar como entradas de alta impedancia. Para poder utilizar los pines del puerto 0 como líneas de salida, se requieren resistencias de “pull-up” externas para poder generar la tensión correspondiente al 1 lógico. Del mismo modo, el puerto 1 es un puerto de entrada/salida bidireccional de 8 bits dotado de transistores de pull-up internos. Un aspecto fundamental de este puerto en nuestro equipo de medida es que los pines del puerto 1 constituyen las líneas de entrada analógicas para el convertidor analógico-digital que incluye el microcontrolador. Para asignar los pines de este puerto como entradas analógicas del ADC utilizaremos el registro de función especial ADCF
situado en la dirección de memoria interna de acceso directo F6h. Cuando los pines de este puerto se utilizan con esta función, las pull-ups internas son desconectadas. El puerto 2 es un puerto de entrada/salida bidireccional de 8 bits dotado también de transistores de pull-up internos. Los pines de este puerto que tienen escrito un 1 son puestos a nivel alto por las pull-ups internas y pueden ser usados como entradas en este estado. Por otro lado, el puerto 3 es, al igual que los dos anteriores, un puerto de entrada/salida bidireccional de 8 bits dotado de transistores de pull-up internos. Al igual que antes, los pines del puerto 3 que tienen escrito un 1 son puestos a nivel alto por los transistores de pull-up internos y pueden ser usados como entradas en este estado. Un aspecto fundamental que presenta este puerto en nuestro equipo de medida son las funciones secundarias que tienen asignadas algunos de sus pines; dentro de dichas funciones secundarias, las que serán usadas en nuestro equipo serán las siguientes: -
P3.0 / RxD : Entrada de datos del receptor (asíncronos) o entrada/salida de datos (síncrono) del interfaz serie
-
P3.1 / TxD : Salida de datos del transmisor (asíncronos) o salida de reloj (síncrono) del interfaz serie
-
P3.2 / INT0 : Entrada de la interrupción externa 0
Finalmente, el puerto 4 es un puerto de entrada/salida bidireccional de 2 bits dotado de transistores de pull-up internos. Al igual que en los casos anteriores, los pines del puerto 4 que tienen escritos un 1 son puestos a nivel alto por los transistores de pull-up internos y pueden ser usados como entradas en este estado. Al igual que sucedía con algunos pines del puerto 3, un aspecto fundamental que presenta este puerto son las funciones secundarias que tienen asignados algunos de sus pines; en el caso de nuestro equipo, las funciones secundarias que serán utilizadas serán las siguientes: -
P4.2 / MISO : Entrada maestro / salida esclavo del controlador SPI
-
P4.3 / SCK : Reloj serie del controlador SPI
-
P4.4 / MOSI : Salida maestro / entrada esclavo del controlador SPI
La descripción del resto de pines de nuestro encapsulado es la siguiente: -
Vss: GND, masa del circuito.
-
TESTI: entrada que debe ser conectada a Vss.
-
Vcc: Voltaje de alimentación. En nuestro equipo este pin estará conectado a una tensión continua de +5V junto a dos condensadores de filtro de 100 nF y 10 uF.
-
VAREF: Voltaje de referencia para el convertidor analógico-digital. En nuestro equipo este pin estará conectado a la salida de un circuito integrado de referencia de voltaje de precisión de 2,5V.
-
VAGND: Referencia de masa para el convertidor analógico-digital.
-
RESET: Entrada/salida de reset. Un nivel alto en este pin durante 2 ciclos de máquina mientras el oscilador está funcionando, produce el reseteo del dispositivo. Un resistor interno de pull-down hacia V ss permite realizar un reseteo de encendido usando sólo un condensador externo hacia V cc.
-
ALE: Salida de habilitación de mantenimiento de dirección para mantener el byte bajo de la dirección durante los accesos a la memoria externa. Este pin será dejado sin conectar en nuestro equipo.
-
PSEN: Salida de habilitación de almacenamiento de programa.
-
EA: Entrada de acceso externo. Cuando se mantiene a nivel alto, las instrucciones son extraídas desde la memoria Flash interna; cuando se mantiene a nivel bajo, el microcontrolador extrae todas las instrucciones de la memoria de programa externa. En nuestro equipo, puesto que el programa a ejecutar por el microcontrolador será almacenado en la memoria Flash interna, este pin será conectado directamente a la tensión de alimentación V cc.
-
XTAL1: Entrada del amplificador oscilador inversor y entrada de los circuitos generadores de reloj internos.
-
XTAL2: Salida del amplificador oscilador inversor.
1.1.1.2.2 CONFIGURACIONES DE ENTRADA/SALIDA Cada registro de función especial de puerto (P0, P1, P2, P3 y P4) opera a través de latches tipo D. De esta forma, una señal de escritura en el latch del puerto procedente de la CPU inicia la transferencia desde el bus de datos
interno hacia el latch de tipo D. Por otra parte, una señal de lectura en el latch procedente de la CPU transfiere la salida Q del latch hacia el bus interno. De forma similar, una señal de lectura del pin transfiere a dicho bus el nivel lógico presente en el pin del puerto. Algunas instrucciones de datos de puerto activan la señal de lectura del latch mientras que otras activan la señal de lectura del pin. Las instrucciones que utilizan el latch son referidas como Instrucciones de lectura-modificaciónescritura.
Cada línea de entrada/salida puede ser programada independientemente como entrada o como salida. 1.1.1.2.3 PUERTOS 1,3 Y 4 La siguiente figura muestra la estructura de los puertos 1,3 y 4, los cuales disponen de transistores de pull-up internos:
Figura 87. Estructura interna de los puertos 1,3 y 4. Una fuente externa puede forzar el pin a nivel bajo. Cada pin de puerto se puede configurar como entrada/salida de propósito general o para su función alterna de entrada/salida. Para usar un pin como salida de propósito general, debemos activar o borrar el bit correspondiente en el registro de función especial PX (X=1, 3 o 4) De la misma forma, para usar un pin como entrada de propósito general, debemos activar el bit correspondiente en el registro PX; esto desconecta la alimentación del transistor FET de salida.
Finalmente, para configurar un pin con su función alterna, activamos el bit correspondiente en el registro PX; de esta forma, cuando el latch es activado, la señal de función de salida alterna controla el nivel de salida. 1.1.1.2.4 PUERTOS 0 Y 2 Los puertos 0 y 2 se usan como entrada/salida de propósito general o como el bus de datos/direcciones externos. El puerto 0, cuya estructura interna se muestra en la siguiente figura, difiere del resto de puertos en que no dispone de transistores de pull-up internos.
Figura 88. Estructura interna del puerto 0. Por otro lado, la estructura interna del puerto 2, mostrada en la siguiente figura, es tal que una fuente externa puede forzar el pin del puerto 2 a nivel bajo.
Figura 89. Estructura interna del puerto 2. De esta forma, para usar un pin como salida de propósito general, debemos activar o borrar el correspondiente bit en el registro de función especial PX (X=0, 2).
Por el contrario, para usar un pin como entrada de propósito general, debemos activar el bit correspondiente en el registro PX para desconectar de este modo el transistor FET de salida. 1.1.1.2.5 INSTRUCCIONES DE LECTURA-MODIFICACIÓN-ESCRITURA Como ya hemos comentado, algunas instrucciones que manejan los bits de puerto, leen los datos del latch en lugar de leer los datos del pin. Estas instrucciones basadas en el latch leen los datos, modifican dichos datos y después
reescriben el latch. Estas instrucciones
son denominadas
“instrucciones de lectura-modificación-escritura”. Una lista completa de estas instrucciones se muestra en la siguiente tabla:
Tabla 5. Instrucciones de lectura-modificación-escritura. De esta forma, cuando el operando de destino de alguna de estas instrucciones es un puerto o un bit de puerto, estas instrucciones leen el latch en lugar del pin. No resulta obvio que las últimas tres instrucciones de la lista sean instrucciones de lectura-modificación-escritura. Estas tres instrucciones leen los 8 bits del puerto, modifican el bit direccionado específicamente y finalmente escriben el nuevo byte en el latch. Estas instrucciones de lectura-modificación-escritura se dirigen al latch en lugar de al pin para evitar posibles malinterpretaciones en los niveles de voltaje (y,
por lo tanto, de valor lógico) en el pin del puerto. Por ejemplo, si un determinado bit de puerto es usado para alimentar la base de un transistor bipolar externo, el voltaje en dicho pin no puede sobrepasar el voltaje de la unión base-emisor del transistor (el cual es un valor más bajo que la tensión de entrada a nivel bajo V IL). De esta forma, con un 1 lógico escrito en el bit, los intentos por parte de la CPU de leer el pin del puerto son malinterpretados como un nivel lógico 0. Por el contrario, una lectura en el latch en lugar de en el pin devuelve el valor lógico 1 correcto. 1.1.1.2.6 OPERACIÓN DE LOS PUERTOS CUASI-BIDIRECCIONALES Como ya hemos comentado, los puertos 1, 2, 3 y 4 disponen de pull-ups internas fijas y son llamados puertos cuasi-bidireccionales. Cuando alguno de estos puertos se configura como entrada, la impedancia del pin aparece como un 1 lógico y suministra corriente en respuesta a una condición de 0 lógico externa. Por otro lado, el puerto 0 es un pin realmente bidireccional. Los pines de este puerto flotan cuando están configurados como entradas. Un aspecto importante a tener en cuenta cuando procedamos a programar nuestro microcontrolador es que el reseteo del micro escribe niveles lógicos 1 en todos los latches de los puertos. Si posteriormente se escribe un nivel lógico 0 en un latch de puerto, éste puede ser retornado a las condiciones de entrada escribiendo un nivel lógico 1 en el latch. 1.1.1.2.7 MAPA DE LOS REGISTROS DE FUNCIÓN ESPECIAL En la siguiente figura se muestra la estructura de la parte de memoria interna destinada a almacenar los registros de función especial de nuestro microcontrolador:
Figura 90. Mapa de los registros de función especial de nuestro microcontrolador. 1.1.1.2.8 RELOJ El núcleo de este microcontrolador sólo necesita 6 periodos de reloj por ciclo de máquina. Esta característica de funcionamiento, llamada “modo X2”, presenta las siguientes ventajas: -
Divide la frecuencia del cristal por 2 (cristales más baratos) mientras que se mantiene la misma potencia de la CPU
-
Ahorra consumo de energía manteniendo la misma potencia de la CPU (ahorro de energía en el oscilador)
-
Ahorra consumo de energía dividiendo la frecuencia de operación dinámica por 2 en los modos de operación y de parada
-
Incrementa la potencia de la CPU por 2 manteniendo la misma frecuencia del cristal
Para mantener la compatibilidad con el microcontrolador C51 original, se inserta un divisor por 2 entre la señal XTAL1 y la entrada de reloj principal del núcleo (generador de fase). Este divisor puede ser deshabilitado por software. El bit X2 en el registro de función especial CKCON0 permite conmutar desde 12 ciclos de reloj por instrucción (X2=0, lo que recibe el nombre de modo de operación estándar o modo STD) a 6 ciclos de reloj por instrucción (X2=1, llamado modo de operación X2 o modo X2). Un aspecto importante a tener en cuenta es que en el reseteo del aparato, se activa la velocidad estándar (modo STD). Al poner el bit X2 a 1, se activa el modo de operación X2 del micro pero únicamente para el reloj de la CPU. Por el contrario, dispositivos como los temporizadores 0,1 y 2 y el puerto serie, conmutan a modo X2 sólo si los correspondientes bits son borrados en el registro CKCON. En la siguiente figura se puede observar el diagrama de generación de la señal de reloj para la CPU y todos los periféricos:
Figura 91. Diagrama de generación de la señal de reloj para la CPU y todos los periféricos.
En nuestro equipo, el microcontrolador operará en modo estándar de forma que el bit X2 en el registro CKCON0 permanecerá en 0. De esta forma, nuestro programa dejará los registros de función especial correspondientes al control del reloj (registros CKCON0 y CKCON1) con sus valores por defecto tras reset, los cuales son los siguientes: -
CKCON0 = x000 0000b
-
CKCON1 = xxxx xxx0b
(el símbolo “x” representa a un bit reservado, cuyo valor de lectura es indeterminado y que no debe ser activado). De esta forma, tanto la CPU como todos los periféricos operarán a una velocidad de 12 periodos de reloj del oscilador por ciclo de máquina, lo que supone que: f CPU
= f PERIFERICO =
f osc 2
siendo: -
f CPU = frecuencia del reloj de la CPU y del ADC (en Hz)
-
f PERIFERICO = frecuencia del reloj de entrada al periférico (en Hz)
-
f osc = frecuencia del cristal oscilador (en Hz)
En nuestro equipo, el oscilador incorporado en el chip del microcontrolador será controlado externamente mediante un cristal de cuarzo de frecuencia nominal 24 megahertzios (MHz) conectado a las terminales 47 y 48 (pines XTAL2 y XTAL1, respectivamente). También son requeridos condensadores de estabilización, como se muestra en la siguiente figura:
Figura 92. Control del microcontrolador mediante un cristal externo.
Como se puede observar en la figura, los condensadores de estabilización serán condensadores cerámicos y tendrán un valor nominal de 27 picofaradios (pF). A la hora de elegir el cristal de cuarzo nos hemos decidido por el modelo HC94/4H de la empresa IQD Rakon, cuya hoja de características puede ser consultada en el CD adjunto al presente proyecto. Teniendo en cuenta todo lo anterior, podemos deducir que puesto que cada ciclo de máquina de nuestro micro tarda en ejecutarse 6 periodos de la señal de reloj de la CPU (1 ciclo máquina = 6 . T CPU) y, además, la frecuencia de la señal de reloj de la CPU es la mitad de la frecuencia del oscilador externo (debemos recordar que nuestro micro va a funcionar en modo estándar), entonces tenemos que: f osc
=
24 MHz → T osc
=
1 f osc
=
1 24 MHz
=
1 24
µ s
1 _ ciclo _ de _ máquina 6 T CPU =
f CPU T CPU
=
f osc
=
2
⋅
( MODO _ STD)
1
f CPU
=
2
f osc
=
2 24 MHz
=
1 12
s µ
1 µ s = 0,5µ s 12
1 _ ciclo _ de _ máquina = 6 ⋅ T CPU = 6 ⋅
luego obtenemos que cada ciclo de máquina de nuestro microcontrolador tarda en ejecutarse 0,5 µs para la frecuencia del oscilador que hemos elegido (24MHz). 1.1.1.2.9 MEMORIA DE DATOS Nuestro microcontrolador suministra acceso a memoria de datos en dos espacios diferentes: 1. El espacio de memoria de datos interna, el cual está dividido en 3 segmentos separados: •
Un primer segmento formado por los 128 bytes inferiores de la memoria RAM
•
Un segundo segmento formado por los 128 bytes superiores de la RAM
•
Un segmento formado por 2kB de memoria RAM expandida (ERAM)
2. El espacio de memoria de datos externa. Un cuarto segmento en la memoria de datos interna está disponible pero dedicado a los registros de funciones especiales (SFRs); dicho segmento es accesible mediante modo de direccionamiento directo, teniendo asignadas las direcciones de memoria de la 80h a la FFh) En las siguientes figuras se puede observar la organización de los espacios de memoria de datos externos e internos en nuestro microcontrolador:
Figura 93. Organización de la memoria de datos interna (RAM).
Figura 94. Organización de la memoria de datos interna y externa. Debido a que en nuestro equipo sólo utilizaremos la memoria de datos interna, nos vamos a centrar únicamente en esta parte de la memoria de datos.
1.1.1.2.9.1
Memoria de datos interna
A. Segmento formado por los 128 bytes inferiores de la RAM. Los 128 bytes más bajos de la RAM interna son accesibles desde las direcciones 00h hasta la 7Fh usando modos de direccionamiento directo o indirecto. Los 32 bytes más bajos de este segmento (direcciones desde la 00h hasta la 1Fh) están organizados en 4 bancos de 8 registros cada uno (R0→R7). Los dos bits RS0 y RS1 pertenecientes al registro de función especial PSW seleccionan qué banco de registros se usa, según la siguiente tabla:
Tabla 6. Selección del banco de registros activo. Los siguientes 16 bytes situados por encima de los bancos de registros forman un bloque de espacio de memoria direccionable por bit. Las direcciones de bit en esta área de memoria son 00h→7Fh. En la siguiente figura se muestra la organización de estos 128 bytes inferiores de la RAM interna:
Figura 95. Organización de los 128 bytes inferiores de la RAM interna.
En nuestro programa de funcionamiento del equipo, este bloque de memoria será utilizado para almacenar temporalmente las lecturas de irradiancia obtenidas de los diferentes circuitos de medición, así como los resultados de los diferentes cálculos que realizaremos con estos datos. B. Segmento formado por los 128 bytes superiores de la RAM. Los 128 bytes superiores de la memoria RAM interna son accesibles desde la dirección 80h hasta la FFh usando únicamente direccionamiento indirecto. En nuestro programa de funcionamiento del equipo, situaremos en este bloque de memoria la “pila” del mismo, la cual constituye un espacio de memoria de almacenamiento temporal de datos utilizados por el programa. C. Segmento de RAM expandida (ERAM). Los 2KB de RAM expandida incluidos en el chip del microcontrolador son accesibles desde la dirección 0000h a la 07FFh usando modo de direccionamiento indirecto mediante las instrucciones MOVX. En este rango de direcciones, el bit EXTRAM perteneciente al registro de función especial AUXR se usa para seleccionar la memoria ERAM (por defecto el bit EXTRAM=0) o bien la memoria RAM externa (bit EXTRAM=1). Por lo tanto, cuando el bit EXTRAM vale 0, las instrucciones MOVX@Ri y MOVX@DPTR acceden a la memoria ERAM, mientras que si dicho bit vale 1, estas instrucciones acceden a la memoria RAM externa. Puesto que en nuestro equipo no utilizaremos memoria RAM externa, el bit EXTRAM será puesto a 0 en nuestro programa. El tamaño de la memoria ERAM puede ser configurado mediante los bits XRS2, XRS1 y XRS0 pertenecientes también al registro AUXR. El valor por defecto tras reset de estos tres bits es 101, lo que configura el tamaño de la memoria ERAM a 2048 bytes. En nuestro programa dejaremos estos 3 bits con su valor por defecto. 1.1.1.2.10 DOBLE PUNTERO DE DATOS Nuestro microcontrolador implementa un segundo puntero de datos para acelerar la ejecución de código y reducir el tamaño del código en caso de uso intensivo de accesos a memoria externa. Los punteros de datos DPTR0 Y DPTR1 son vistos por la CPU como DPTR y se accede a ellos usando las
direcciones del SFR 82h y 83h, que son las direcciones de los registros de función especial DPL y DPH respectivamente. El bit DPS perteneciente al registro de función especial AUXR1 se usa para seleccionar si el DPTR es el puntero de datos 0 o el puntero de datos 1. En la siguiente figura se muestra la estructura de este doble puntero de datos:
Figura 96. Estructura del doble puntero de datos DPTR. En nuestro programa, puesto que sólo utilizaremos un puntero de datos, mantendremos este bit DPS con el valor 0. 1.1.1.2.11 MONITORIZACIÓN DE LA ALIMENTACIÓN DE ENERGÍA La función POR (Power On Reset) / PFD (Power Fail Detect) de nuestro microcontrolador realiza un seguimiento del suministro de energía interna de las memorias, del núcleo de la CPU y de los periféricos y, si es necesario, suspende su actividad cuando el suministro de energía interna cae por debajo de un umbral de seguridad. Esto último se logra aplicando un reset interno. Mediante la generación de este reset el sistema de monitorización de energía asegura un arranque correcto cuando se enciende el microcontrolador. En la siguiente figura se muestra un diagrama de bloques de este sistema de monitorización:
Figura 97. Diagrama de bloques del sistema de monitorización de energía interna de nuestro microcontrolador. Para arrancar y mantener el microcontrolador en un modo de operación correcto, la tensión V cc tiene que estar estabilizada en el rango de operación de la tensión de alimentación y el oscilador tiene que estar estabilizado con una amplitud nominal compatible con los niveles lógicos V IL Y VIH1 (consultar hoja de características eléctricas del microcontrolador en el CD adjunto al presente proyecto). Estos dos parámetros son controlados durante las tres fases siguientes: -
Encendido del aparato
-
Operación normal
-
Caída de la alimentación
El regulador de voltaje interno del micro genera un suministro interno de tensión regulada para la CPU, las memorias y los periféricos. Los picos que aparecen en la tensión de suministro V cc son suavizados por este regulador de voltaje interno. El detector de fallo de energía (PFD) realiza un seguimiento de la alimentación generada por el regulador de voltaje, de forma que genera un reset interno si dicho suministro cae por debajo de un umbral de seguridad. Por otro lado, cuando se aplica la alimentación al dispositivo, el sistema de seguimiento de energía aplica inmediatamente un reset interno (Power On Reset). Una vez que la alimentación interna procedente del regulador de voltaje alcanza un nivel de seguridad, el sistema pasa a observar la entrada de reloj
XTAL. De esta forma, el reset interno permanecerá aplicado hasta que los niveles de XTAL1 estén por encima y por debajo de V IH1 y VIL. Además, un contador interno contará 1024 periodos de reloj de la CPU antes de que el reset interno sea desactivado. 1.1.1.2.12 RESET Como acabamos de comentar, hay diferentes sistemas de control en nuestro microcontrolador que pueden generar un reset interno cuando se presentan determinadas condiciones de funcionamiento. Adicionalmente a todo esto, otra de las fuentes que puede producir el reseteo del aparato es la entrada de RESET (pin 1). Esta entrada puede ser usada para forzar un pulso de reset más largo que el reset interno controlado por el sistema de monitorización de energía. Esta entrada de reset dispone de un resistor interno de pull-down, R RST, hacia Vss que permite un reseteo de encendido conectando simplemente un condensador externo a V cc. La estructura interna de esta entrada se muestra en la siguiente figura:
Figura 98. Estructura interna de la entrada de reset. Como hemos comentado, esta resistencia interna permite realizar un reseteo de encendido del micro conectando a dicha entrada un condensador externo hacia Vcc. En la siguiente figura se muestra este arreglo:
Figura 99. Arreglo que nos permite realizar un reseteo de encendido del microcontrolador.
Como se comentó anteriormente, para provocar un reseteo a través de esta entrada es necesario aplicar en la misma un nivel de tensión alto durante al menos 2 ciclos de máquina mientras el oscilador está funcionando. Por lo tanto, teniendo en cuenta la configuración de nuestro equipo (f osc=24MHz y modo de operación estándar, lo que establece la duración del ciclo de máquina en 0,5 µs), tenemos que dicho nivel alto debe ser mantenido durante al menos 1 µs. A su vez, el voltaje de entrada a nivel alto mínimo para esta entrada de RESET (consultar hoja de características eléctricas del micro) es de: V IH 1,min
=
0,7 ⋅V cc
=
0.7 ⋅ (5V )
=
3,5V
por lo tanto, podemos concluir que para poder generar un reseteo a través de este pin de entrada debemos aplicarle un voltaje mayor o igual a 3,5V durante al menos 1µs. A la hora de dimensionar el condensador externo encargado de producir el reset de encendido, tendremos que tener en cuenta todo lo anterior junto con el valor que toma la resistencia de pull-down interna de este terminal. Consultando la hoja de características eléctricas de nuestro micro, encontramos que la resistencia R RST toma un valor mínimo de 50 kΩ, y será éste el valor que usaremos para dimensionar dicho condensador externo. Este arreglo para el reset de encendido consiste, por lo tanto, en un circuito RC en el que la resistencia es la resistencia interna de pull-down del terminal, R RST, y donde la tensión en dicha resistencia determina el nivel de tensión aplicado a dicho terminal. Suponiendo que inicialmente el condensador se encuentra descargado, la tensión en la resistencia de pull-down en función del tiempo vendrá dada por: V R (t )
−
t
= V cc ⋅ e , siendo τ = RRST.C, la constante de tiempo del circuito. τ
Por lo tanto, el valor del condensador C deberá ser lo suficientemente elevado como para garantizar que V R(1µs) ≥ 3.5V. En nuestro equipo el condensador de reset de encendido ha sido dimensionado a 1µF, lo que produce una constante de tiempo del circuito de: =RRST.C=(50kΩ).(1µF)=50 ms.
τ
Esta constante de tiempo garantiza con un amplio margen de seguridad que la tensión en el terminal RESET se mantenga por encima de los 3,5V durante más de 1µs, con lo que se garantiza la correcta operación del reset de
encendido. En la siguiente figura se muestra el arreglo correspondiente al reset de encendido utilizado en nuestro equipo:
Figura 100. Arreglo utilizado para el reset de encendido en nuestro equipo. Un aspecto importante que debemos tener en cuenta a la hora de la programación de nuestro microcontrolador es el estado de los pines de puerto durante la operación de reseteo. En la siguiente tabla se muestra el estado de estos pines durante dicha operación:
Tabla 7. Estado de diversos pines durante la operación de reseteo. 1.1.1.2.13 CONTROL DE ENERGÍA En nuestro microcontrolador hay implementados dos modos de ahorro de energía: •
El modo de parada (Modo Idle)
•
El modo de energía baja (Modo Power-Down)
1.1.1.2.13.1 El modo de parada El modo de parada es un modo de ahorro de energía en el cual la ejecución del programa se detiene. El modo de parada congela el reloj de la CPU en estados conocidos mientras que los periféricos continúan estando temporizados.
El estado de la CPU antes de activarse el modo de parada es preservado (por ejemplo, el contador de programa, PC, y el registro PSW retienen sus datos durante la duración del modo de parada). Los contenidos de los registros de función especial (SFRs) y de la memoria RAM también son retenidos. El estado de los pines de puerto durante el modo de parada se detalla en la siguiente tabla:
Tabla 8. Estado de diversos pines durante el modo de parada. Para activar el modo de parada del microcontrolador se debe poner a 1 el bit IDL perteneciente al registro de función especial PCON. Cuando esto ocurre, el microcontrolador se coloca en modo de parada tras la ejecución de la instrucción que activó dicho bit IDL; por lo tanto, la instrucción que activa el bit IDL es la última instrucción ejecutada antes de que el micro entre en modo de parada. Para salir del modo de parada hay dos formas: 1. Generándose una interrupción previamente habilitada: cuando, estando el micro en modo de parada, se produce una interrupción habilitada, el hardware borra el bit IDL en el registro PCON lo cual restablece el reloj de la CPU. De esta forma, la ejecución se reanuda con la rutina de servicio de la interrupción que se ha producido. Tras la ejecución de dicha rutina de servicio de interrupción, la ejecución del programa continúa por la instrucción inmediatamente siguiente a la instrucción que activó el modo de parada. 2. Generándose un reset: un nivel lógico alto en el pin RESET borra el bit IDL en el registro PCON directa y asíncronamente. Esto restablece el reloj a la CPU. La ejecución del programa se reinicia momentáneamente con la instrucción inmediatamente siguiente a la instrucción que activó el modo
de parada y puede continuar durante un número de ciclos de reloj antes de que el algoritmo de reset interno tome el control de la ejecución. Cuando esto ocurre, el reset inicializa el micro y los vectores de la CPU a la dirección 0000h de la memoria de programa. 1.1.1.2.13.2 El modo de baja energía El modo de energía baja coloca al micro en un estado de muy baja energía. Este modo de funcionamiento detiene el oscilador y congela todos los relojes en estados conocidos. El estado de la CPU anterior a la entrada en el modo de energía baja es preservado (por ejemplo, el PC y el PSW retienen sus datos durante la duración de este modo de funcionamiento). Además, los contenidos de los SFRs y de la memoria RAM son preservados. Los estados de los pines de puerto durante este modo de operación se muestran en la siguiente tabla:
Tabla 9. Estado de diversos pines durante el estado de energía baja. Para activar el modo de energía baja se debe activar el bit PD perteneciente al registro de función especial PCON. Cuando esto ocurre, el micro entra en el modo de baja energía tras la ejecución de la instrucción que activó el bit PD; por lo tanto, la instrucción que activa el bit PD es la última instrucción que se ejecuta antes de entrar en el modo de energía baja. Para salir del modo de energía baja hay dos formas: 1. Generándose una interrupción previamente habilitada: el micro proporciona la capacidad de salir del modo de energía baja usando las interrupciones externas INT0 e INT1. Cuando, estando el micro en estado de baja energía, se produce una de estas interrupciones previamente habilitada, el hardware borra el bit PD en el registro PCON con lo cual se
activa el oscilador y restablece los relojes a la CPU y a los periféricos. Usando la entrada INTx, la ejecución se reanuda cuando dicha entrada es liberada y comienza con la ejecución de la rutina de servicio de la interrupción generada. Después de la finalización de dicha rutina de servicio de interrupción, la ejecución del programa sigue con la instrucción inmediatamente posterior a la instrucción que activó el modo de baja energía. Un aspecto fundamental de esta forma de sacar al micro del estado de energía baja es que la interrupción externa que se utiliza para ello debe ser configurada como activada por nivel y debe tener asignada la prioridad más alta. Además, la duración de la interrupción debe ser lo suficientemente larga para permitir que el oscilador se estabilice. Una vez garantizado esto, la ejecución se reanudará sólo cuando la interrupción sea desactivada. Todo esto se representa en la siguiente figura:
Figura 101. Salida del modo de baja energía mediante interrupción externa. Esta forma de salida del modo de energía baja mediante interrupción externa no afecta los contenidos de los SFRs ni de la RAM interna. 2. Generándose un reset: al igual que sucedía con el modo de parada, un nivel lógico alto en el pin RESET borra el bit PD en el registro PCON directa y asíncronamente. Esto arranca el oscilador y restablece el reloj a la CPU y a los periféricos. La ejecución del programa se reinicia momentáneamente con la instrucción inmediatamente posterior a la instrucción que activó el modo de baja energía, y puede continuar durante un número de ciclos de reloj antes de que el algoritmo de reset interno tome el control de la ejecución. El reseteo inicializa el micro y los vectores de la CPU a la dirección 0000h de la memoria de programa. 1.1.1.2.14 MEMORIA DE DATOS EEPROM
Los 2 kilobytes de memoria EEPROM incorporada en nuestro microcontrolador están localizados en las direcciones de memoria 0000h a 07FFh del espacio de memoria ERAM/XRAM, y es seleccionada activando los bits de control en el registro de función especial EECON. Las operaciones de lectura en la memoria EEPROM son llevadas a cabo a través de la instrucción MOVX, mientras que las operaciones de escritura son llevadas a cabo en dos pasos: 1.
En primer lugar se escribe el dato en la columna de latches
2.
En segundo lugar, se transfieren todos los latches de datos a la fila de la memoria EEPROM (programación).
La estructura de la programación de esta memoria permite programar la memoria completa por bytes, por página o por un número de bytes en una página. En nuestro equipo de medida la programación de esta memoria será realizada byte por byte. Este espacio de memoria no volátil será utilizado por nuestro equipo para almacenar los resultados de las medidas que vaya realizando el sistema a lo largo del tiempo de funcionamiento del mismo, es decir, va a funcionar como un registro en el que en todo momento se encontrarán almacenadas (a salvo de cortes en el suministro de energía) los resultados de las últimas medidas realizadas por el equipo. Esto nos permitirá, mediante la implementación de una conexión serie adecuada, tener acceso a este registro de resultados de medida, lo cual puede resultar muy útil a la hora de estudiar la evolución de la suciedad depositada sobre el sistema de módulos a lo largo del tiempo. Cada resultado de medida estará formado por tres bytes codificados en formato Digital Codificado en Binario (BCD), cada uno de los cuales tendrá el siguiente significado: -
Un primer byte correspondiente al porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC que ha determinado el sistema en base a los datos obtenidos en las medidas de irradiancia realizadas.
-
Un segundo byte correspondiente al mes en el que ha sido llevada a cabo la medida anterior.
-
Un tercer byte correspondiente al día del mes en el que ha sido realizada dicha medida.
El almacenamiento de estos bytes en la memoria EEPROM será llevado a cabo en forma progresiva partiendo de la dirección de memoria 0000h. De esta forma, cuando un byte de resultado sea almacenado en la última dirección de la memoria EEPROM (dirección 07FFh), el siguiente lo será en la dirección 0000h, continuándose nuevamente el ciclo de almacenamiento a partir de esta dirección. En la siguiente figura se representa la forma y el orden en el que los bytes de resultado son almacenados en la memoria EEPROM del microcontrolador:
Figura 102. Forma en la que los bytes de resultado de medida son almacenados en la memoria EEPROM del microcontrolador. Si tenemos en cuenta, por un lado, el tamaño de este espacio de memoria (2048 bytes), y por otro, el hecho de que cada resultado de medida estará formado por 3 bytes, podemos deducir que en cada instante el número máximo de resultados de medida almacenados en nuestro equipo podrá ser de 682. Este hecho será tenido en cuenta en nuestro programa de gestión del sistema. Como hemos comentado anteriormente, la memoria EEPROM es una memoria no volátil en la que se irán almacenando de forma progresiva los resultados de las medidas que vaya realizando el equipo a lo largo del tiempo. Sin embargo, para mantener en todo momento este orden de almacenamiento progresivo de los resultados de medida, incluso tras una interrupción en el
suministro de energía del sistema, se hace necesario mantener en una memoria también no volátil aquella dirección de la memoria EEPROM en la que debe llevarse a cabo el siguiente almacenamiento de un byte de resultado. Esta dirección de memoria (que tiene un tamaño de 2 bytes) funcionará como un índice que nos marcará en todo momento la dirección de la memoria EEPROM en la que deberá realizarse el siguiente almacenamiento de un byte correspondiente a un resultado de medida. Asimismo, también marcará implícitamente la dirección de la memoria EEPROM donde se encuentra almacenado el último byte correspondiente a la última medida llevada a cabo por el equipo. Este hecho será utilizado por nuestro programa de gestión para enviar por el puerto serie todos los bytes correspondientes a los resultados de medida que se encuentren almacenados en un instante determinado en nuestro equipo. En nuestro diseño, esta memoria no volátil utilizada para almacenar la dirección de la memoria EEPROM en la que debe almacenarse el siguiente byte de resultado de medida, va a ser una memoria RAM que incorpora el reloj en tiempo real incluido en nuestro equipo. Dicha memoria, al igual que el reloj, pasará a estar alimentada por la batería de apoyo en caso de fallo en el suministro de energía del equipo, salvaguardándose de este modo los contenidos de la misma. Dicha memoria RAM tiene un tamaño de 256 bytes y explicaremos sus modos de acceso para lectura y escritura en el apartado correspondiente al reloj en tiempo real. Para concluir este apartado conviene señalar que, puesto que cuando el equipo sea puesto en funcionamiento por primera vez el almacenamiento de bytes de resultado de medida en la memoria EEPROM del microcontrolador comenzará a realizarse a partir de la dirección 0000h, y teniendo en cuenta que dicha dirección de memoria de almacenamiento será obtenida por el microcontrolador de la memoria RAM del reloj en tiempo real previamente a cada operación de almacenamiento en EEPROM, podemos deducir que las dos posiciones de la memoria RAM del RTC que sean utilizadas por nuestro programa para almacenar dicha dirección de almacenamiento en EEPROM, deberán ser puestas a cero antes del encendido del equipo en su lugar de instalación. De esta forma estaremos seguros de que el primer byte
correspondiente a un resultado de medida obtenido por el equipo será almacenado en la dirección de memoria 0000h de la EEPROM. 1.1.1.2.15 MEMORIA DE CÓDIGO/PROGRAMA Nuestro
microcontrolador
incorpora 64
kBytes
de
memoria de
código/programa de tipo flash. Este tipo de memoria funciona básicamente como una EPROM, pero su contenido puede borrarse electrónicamente por el propio programador PROM. Por lo tanto, la memoria flash aumenta la funcionalidad de la memoria ROM y de la EPROM mediante un circuito eléctrico borrable y programable. Gracias a la bomba de carga interna, el alto voltaje necesitado para programar o borrar las células de memoria flash es generado por el propio chip usando el voltaje V cc estándar. Por lo tanto, la memoria flash puede ser programada usando sólo un voltaje y permite la “Programación In-System”, comúnmente conocida como ISP. Respecto a la arquitectura de esta memoria flash, el microcontrolador incluye dos memorias flash en el chip: 1. Memoria Flash 0 (FM0): este espacio de memoria contiene 64 kBytes de memoria de programa (direcciones desde la 0000h hasta la FFFFh) y está organizada en 512 páginas de 128 bytes cada una. Esta memoria flash puede ser programada de dos formas: •
Mediante programación paralela
•
Mediante programación In-System serie
En dicho espacio de memoria será almacenado el programa de funcionamiento de nuestro equipo de medida. 2. Memoria Flash 1 (FM1): este espacio de memoria tiene un tamaño de 2 kBytes (direcciones desde la F800h hasta la FFFFh) y es utilizada para almacenar el cargador de arranque y los interfases de programación de aplicaciones (API). El bit ENBOOT perteneciente al registro de función especial AUXR1 se utiliza para mapear esta memoria flash entre las direcciones F800h y FFFFh. Puesto que en nuestro programa de funcionamiento del equipo de medida esta parte de la memoria flash no será utilizada, el bit ENBOOT será
configurado inicialmente a cero en la configuración inicial de registros. 1.1.1.2.16 EL SISTEMA DE INTERRUPCIONES Existen nueve fuentes de interrupción en nuestro microcontrolador, cada una de ellas con su vector de interrupción asociado: -
Dos interrupciones externas: INT0 e INT1
-
Tres interrupciones de temporizador: Temporizadores 0, 1 y 2
-
Una interrupción del puerto serie
-
Una interrupción de la matriz de conteo programable (PCA)
-
Una interrupción de overrun del temporizador
-
Una interrupción del convertidor analógico-digital (ADC)
Todas las interrupciones se deshabilitan después de una reinicialización del sistema y se habilitan de forma individual mediante el software. De esta forma, cada una de las fuentes de interrupción puede ser habilitada o deshabilitada individualmente activando o borrando el bit de habilitación correspondiente en los registros de habilitación de interrupciones IEN0 e IEN1, situados en el bloque de los SFRs. Así como existen en dichos registros bits individuales de habilitación para cada fuente de interrupción, hay un bit de habilitación/deshabilitación global que se desactiva para deshabilitar todas las interrupciones
o
se
activa
para
habilitarlas.
Este
bit
de
habilitación/deshabilitación general es el bit EA perteneciente al registro de función especial IEN0. Por lo tanto, se deben activar dos bits para habilitar cualquiera de las interrupciones anteriores: el bit individual de habilitación, particular para cada interrupción, y el bit de habilitación global EA. Si ocurren dos o más interrupciones de manera simultánea, o si una interrupción ocurre al mismo tiempo que se le está dando servicio a otra interrupción, existe la secuencia de sondeo y un esquema de prioridades de 4 niveles para planificar interrupciones. La secuencia de sondeo es fija, pero la prioridad de interrupción es programable.
En la siguiente figura podemos observar el sistema de control de interrupciones de nuestro microcontrolador:
Figura 103. Sistema de control de interrupciones de nuestro microcontrolador. Cada fuente de interrupción puede ser programada individualmente con uno de cuatro niveles de prioridad activando o borrando el bit correspondiente en los registros de prioridad de interrupciones (registros IPL0, IPH0, IPL1e IPH1) situados en el bloque de los SFRs. En la siguiente tabla podemos observar los valores de estos bits de prioridad y los niveles de prioridad asociados a cada combinación:
Tabla 10. Valores de los bits de nivel de prioridad. Estos registros de prioridad de interrupciones se borran después de una reinicialización del sistema para que todas las interrupciones empiecen en el nivel de prioridad más bajo de manera predeterminada. De esta forma, una interrupción de baja prioridad puede ser interrumpida por una interrupción de mayor prioridad pero no por otra interrupción de menor prioridad. Por otro lado, una interrupción de alta prioridad no puede ser interrumpida por ninguna otra fuente de interrupción. Si dos solicitudes de interrupción de diferente prioridad son recibidas por la CPU simultáneamente, es atendida la solicitud de mayor nivel de prioridad. Por otro lado, si se reciben simultáneamente dos solicitudes de interrupción de la misma prioridad, una secuencia de prioridad interna (secuencia de sondeo) determina qué petición es atendida. Por lo tanto, dentro de cada nivel de prioridad hay una segunda estructura de prioridad determinada por esta secuencia de prioridad interna. En la siguiente tabla se puede observar la secuencia de sondeo correspondiente a nuestro microcontrolador:
Tabla 11. Secuencia de sondeo de nuestro microcontrolador. Cuando ocurre una interrupción y ésta es aceptada por la CPU del micro, el programa principal se interrumpe y se producen las siguientes reacciones: -
La instrucción actual completa su ejecución
-
El registro contador de programa (PC) se almacena en la pila
-
El estado de la interrupción actual se almacena internamente
-
Las interrupciones se bloquean al nivel de interrupción
-
El contador de programa se carga con la dirección de vector de la rutina de servicio de interrupción (ISR) correspondiente
-
La ISR se ejecuta
De esta forma, la ISR se ejecuta y toma una acción en respuesta a la interrupción. La ISR termina con una instrucción RETI (retorno desde una interrupción). Esto obtiene el valor anterior del contador de programa de la pila y recupera el estado previo a la interrupción. El programa principal continúa su ejecución desde donde se quedó. Cuando se acepta una interrupción, el valor cargado en el contador de programa es conocido como Vector de interrupción asociado a la interrupción que se ha producido. Este valor es la dirección del inicio de la ISR para la fuente que causó la interrupción. Los vectores de interrupción de nuestro microcontrolador se listan en la siguiente tabla:
Tabla 12. Vectores de interrupción de nuestro microcontrolador. En nuestro programa de funcionamiento del equipo de medida vamos a utilizar las siguientes interrupciones: 1. Interrupción externa 0: El pin P3.2 / INT0 estará conectado en nuestro equipo al correspondiente terminal de nuestro reloj en tiempo real, de forma que dicha interrupción externa será utilizada para que el reloj solicite una interrupción al microcontrolador cada vez que se active la alarma del reloj. El bit de habilitación particular de la interrupción externa 0 es el bit EX0 perteneciente al registro IEN0. Por otro lado, los dos bits de asignación de prioridad de esta interrupción son los bits PX0 y PX0H pertenecientes a los registros IPL0 e IPH0 respectivamente. 2. Interrupción del puerto serie: En nuestro equipo, la lectura de todos los resultados de medida almacenados en la memoria EEPROM de nuestro microcontrolador se iniciará mediante la interrupción del puerto serie. De esta forma, cuando conectemos un PC al puerto serie incorporado al equipo, la lectura de medidas comenzará cuando se reciba un byte en el buffer de recepción de dicho puerto (dicho byte deberá ser enviado por el PC). Esta recepción activará la bandera de petición de interrupción por recepción del puerto serie (bit RI perteneciente al registro SCON). En respuesta a esta petición de interrupción, el microcontrolador ejecutará la rutina de servicio de interrupción asociada al puerto serie, en la cual son enviados por dicho puerto todos los resultados de medida que se encuentren en ese instante almacenados en la memoria EEPROM del micro. El bit de habilitación particular de la interrupción del puerto serie es el bit ES perteneciente al registro IEN0, mientras que los dos bits de asignación de prioridad de dicho puerto son los bits PS y PSH pertenecientes a los registros IPL0 e IPH0 respectivamente. 3. Interrupción del convertidor analógico-digital: Como ya hemos comentado en varias ocasiones, nuestro equipo llevará a cabo la medida de la pérdida energética por suciedad partiendo de la diferencia entre los valores de irradiancia incidente obtenidos tras
ambas zonas del cristal frontal del equipo. Esta medida de la irradiancia incidente se llevará a cabo mediante un circuito electrónico que produce a su salida una tensión continua proporcional al nivel de irradiancia incidente detectado por su sensor. Por lo tanto, nuestro microcontrolador deberá “leer” estas tensiones de salida con el objeto de determinar los diferentes valores de irradiancia detectados por los diferentes sensores. Esta lectura de las tensiones de salida de estos circuitos de medición de irradiancia serán llevadas a cabo a través del convertidor analógicodigital (ADC) incorporado en el microcontrolador. A pesar de que nosotros en nuestros cálculos vamos a utilizar una precisión de 8 bits, a la hora de obtener la lectura de cada circuito de medición de irradiancia vamos a llevar a cabo una conversión analógico-digital de precisión de 10 bits, de los cuales sólo tomaremos los 8 bits de mayor peso para llevar a cabo nuestros cálculos. La realización de esta conversión de precisión, como veremos posteriormente cuando expliquemos
las
características
del
ADC
de
nuestro
microcontrolador, requiere que éste se coloque en estado de pseudo-parada antes de la toma de la lectura, para de esta forma reducir al máximo el ruido digital introducido en la señal a medir. De esta forma, el micro continúa en este estado de pseudo-parada hasta que la conversión de precisión termina. Cuando esto sucede, se produce una petición de interrupción al micro por parte del ADC que lo saca del estado de pseudo-parada, procediendo el micro seguidamente a atender dicha petición de interrupción. El bit de habilitación particular de la interrupción del ADC es el bit EADC perteneciente al registro IEN1. Por otro lado, los dos bits de asignación de prioridad de esta interrupción son los bits PADCL y PADCH pertenecientes a los registros IPL1 e IPH1 respectivamente. Tanto la configuración de las habilitaciones como los niveles de prioridad asignados a estas tres interrupciones serán explicados con detalle cuando desarrollemos nuestro programa de funcionamiento del equipo.
1.1.1.2.17 EL CONVERTIDOR ANALÓGICO DIGITAL En esta sección vamos a describir las principales características del convertidor analógico-digital
(ADC)
incluido
en
el chip
de
nuestro
microcontrolador. Las características principales de este ADC son las siguientes: -
8 canales con entradas multiplexadas
-
Potenciómetro ADC en cascada de 10 bits
-
Tiempo de conversión típico: 16 microsegundos (μs)
-
Error de Offset: +-2LSB max
-
Margen de voltaje de referencia externo positivo (VREF): de +2,4V a +3V
-
Margen de entrada del ADC: ADCIN: de 0V a +3V
-
Bandera de conversión completada o bandera de petición de interrupción
por
conversión
completada:
bit
ADEOC
perteneciente al registro de función especial ADCON -
Reloj ADC seleccionable
Se trata pues de un ADC de 10 bits de precisión, con 8 canales disponibles para el muestreo de fuentes externas (AN0/P1.0 → AN7/P1.7). Un multiplexor analógico permite al convertidor seleccionar uno de estos ocho canales de entrada como voltaje de entrada ADC (ADCIN). Este valor de voltaje de entrada ADCIN es convertido por el potenciómetro en cascada de 10 bits del convertidor. En este ADC están disponibles dos tipos de conversión: 1. Conversión estándar: tamaño de la lectura de 8 bits 2. Conversión precisa o de precisión: tamaño de la lectura de 10 bits. Como comentamos en apartados anteriores, en nuestro equipo de medida, las 8 líneas de entrada del ADC estarán conectadas a las salidas de los 8 circuitos de medición de irradiancia encargados de medir la irradiancia existente tras las dos zonas del cristal frontal del equipo. Para llevar a cabo la
lectura de las tensiones de salida de estos circuitos, vamos a utilizar una conversión de precisión que da como resultado una lectura de tamaño 10 bits. Sin embargo, puesto que la precisión que vamos a utilizar nosotros en nuestros cálculos es únicamente de 8 bits, tomaremos como lectura de la tensión de salida del circuito de medición de irradiancia los 8 bits de mayor peso de la lectura de precisión que hayamos obtenido. Cuando se comienza a realizar una conversión de precisión, la CPU se pone en estado de pseudo-parada, de modo que ésta no funciona pero no así los periféricos, los cuales están siempre funcionando. Este modo de funcionamiento permite que el ruido digital sea tan bajo como sea posible, para así asegurar una conversión de alta precisión. Sin embargo, para poder llevar a cabo conversiones de precisión con nuestro ADC es necesario trabajar con una interrupción de fin de conversión, la cual constituye la única manera de sacar a la CPU del estado de pseudo-parada. Si se produce otra interrupción durante la conversión de precisión, ésta será tratada sólo después de que la conversión haya terminado. Los pines del puerto 1 son entradas/salidas generales que son compartidas con los canales del ADC. El bit de selección de canal en el registro de función especial ADCF define qué canal ADC/pin del puerto 1 será usado como entrada ADCIN en la siguiente conversión. En nuestro equipo de medida, puesto que todas las líneas de entrada del ADC estarán conectadas a salidas de circuitos de medición de irradiancia, todos los bits del registro ADCF serán puestos a 1. En la siguiente figura podemos ver un diagrama que describe el funcionamiento de nuestro ADC:
Figura 104. Diagrama descriptivo de nuestro ADC. En la siguiente figura podemos ver un diagrama de tiempos para una conversión completa en el ADC:
Figura 105: Diagrama de tiempos para una conversión completa en nuestro ADC. Previamente a la realización de una conversión en el ADC, se deberá definir en qué pin del puerto 1 de entre los configurados como entradas del ADC se va a llevar a cabo dicha conversión. Esta elección se realiza mediante los tres bits SCH0, SCH1 y SCH2 pertenecientes al registro ADCON. En la siguiente tabla se puede observar la entrada analógica que es seleccionada para cada combinación de valores de estos tres bits:
Tabla 13: Selección de entrada analógica en el ADC.
La operación de nuestro convertidor ADC es como sigue: -
El comienzo de una conversión AD es disparada activando el bit ADSST perteneciente al registro de función especial ADCON.
-
Una vez que la conversión AD ha terminado, el bit ADSST es borrado automáticamente por el hardware del micro.
-
Por otro lado, la bandera de fin de conversión ADEOC perteneciente al registro ADCON es activada por el hardware del micro cuando el valor obtenido en la conversión está disponible en los registros de función especial ADDH (los 8 bits de mayor peso) y ADDL (los 2 bits de menor peso). Esta bandera debe ser borrada por software.
-
Si el bit de habilitación particular de la interrupción del ADC (bit EADC perteneciente al registro de habilitación de interrupciones IEN1) está activado (suponiendo también activado el bit de habilitación general de interrupciones EA), cuando la bandera de fin de conversión ADEOC se activa se produce una petición de interrupción a la CPU por parte del ADC. Por lo tanto, si como es nuestro caso vamos a llevar a
cabo conversiones de precisión en el ADC, la rutina de servicio de interrupción correspondiente deberá contener una instrucción que borre esta bandera con el objetivo de rearmar esta interrupción del ADC para la siguiente conversión. En la siguiente figura podemos ver la estructura de la interrupción del ADC:
Figura 106: Estructura de la interrupción del ADC.
-
Cuando el voltaje de entrada analógico ADCIN es igual a la tensión de referencia externa positiva (VREF), el ADC convierte la señal al valor 3FFh=1111111111b (escala completa). Por el contrario, cuando el voltaje de entrada ADCIN es igual a la referencia de masa del ADC, VAGND, entonces el convertidor transforma la señal analógica al valor digital 000h.
-
Cuando el voltaje de entrada analógico está situado entre VAREF y VAGND, se produce una conversión lineal del valor de tensión al formato digital.
-
Todos los demás voltajes analógicos de entrada darán como resultado el valor 3FFh si ADCIN es mayor que VAREF, y 000h si ADCIN es menor que VAGND.
El reloj del ADC es el mismo que el de la CPU, sin embargo, una etapa de pre-escalado está implementada en el micro (registro de función especial ADCCLK) para generar el reloj del ADC a partir de la frecuencia del oscilador. De esta forma, los 5 bits menos significativos del registro ADCCLK (bits PRS0 a PRS4) permiten establecer la frecuencia de este periférico a partir de la frecuencia del reloj de la CPU. En nuestro equipo dejaremos estos 5 bits con
sus valores por defecto tras reset (00000b) lo cual, teniendo en cuenta que nuestra CPU va a funcionar en modo estándar, establece la frecuencia de funcionamiento del ADC como sigue: f ADC
=
f OSC 128
=
24 MHz 128
= 187.5kHz
Cuando el convertidor no es usado por el microcontrolador, es posible colocarlo en modo de stand-by borrando el bit ADEN perteneciente al registro ADCON. En este modo de operación su disipación de potencia es aproximadamente de 1 μW. Como hemos comentado anteriormente, las 8 entradas analógicas del convertidor de nuestro microcontrolador estarán conectadas a las salidas de los circuitos de medición de irradiancia encargados de medir la irradiancia incidente tras las dos zonas del cristal frontal del equipo. Como vimos en anteriores apartados, dichos circuitos de medición fueron dimensionados para que bajo ninguna condición de operación su voltaje de salida (que es el voltaje de entrada del convertidor) superara el valor de la tensión de referencia de dicho convertidor. En nuestro equipo de medida la referencia de masa del convertidor (VAGND) será la masa del circuito mientras que su referencia de voltaje (VAREF) será suministrada por una referencia de tensión de precisión de +2,5V. En la implementación de nuestro prototipo dicha referencia de tensión será proporcionada por un circuito integrado modelo REF03 de la empresa Analog Devices (La hoja de características de este componente puede encontrarse en el CD adjunto al presente proyecto). Dicha referencia de tensión proporcionará un voltaje de salida constante de 2,5V con una tolerancia máxima del 0,6%. A la hora de alimentar dicho integrado deberán colocarse entre su entrada de alimentación y masa dos condensadores de by-pass en paralelo: uno electrolítico de 10 μF y otro de 0,1 μF cerámico. Con estos valores de las tensiones de referencia del convertidor y teniendo en cuenta que la precisión que utilizaremos en nuestras conversiones será de 8 bits (debemos recordar que en las lecturas de las tensiones de salida de los circuitos de medición de irradiancia utilizaremos conversiones de precisión de tamaño 10 bits de las que sólo tomaremos para nuestros cálculos los 8 bits de mayor peso), tenemos que la relación entre la lectura tamaño byte obtenida y la
tensión analógica de entrada al convertidor (V ADCIN) vendrá dada por la siguiente expresión:
V ADCIN (V ) 8 ⋅2 = V ( V ) REF
Lectura _ tamaño _ byte = Parte _ entera _ de
V (V ) = Parte _ entera _ de ADCIN ⋅ 256 2,5 Por otro lado, la tensión analógica de entrada al convertidor, V ADCIN, es la tensión de salida del circuito de medición de irradiancia el cual debemos recordar es un circuito amplificador de transimpedancia cuya tensión de salida es igual al producto de la fotocorriente generada por el fotodiodo, I F, por la resistencia de realimentación, R r , de dicho circuito: V ADCIN
= I F ⋅ Rr
Si en esta expresión sustituimos la resistencia de realimentación R r por el valor óhmico nominal utilizado en nuestros circuitos de medición de irradiancia: Rr
= 1,6k Ω
y la fotocorriente I F por la ecuación que nos relaciona esta variable con la irradiancia global incidente G, la cual fue obtenida experimentalmente cuando calibramos el modelo de fotodiodo elegido: 2
I F ( µ A) = 1,623 ⋅ G (W / m ) − 405
siendo G ≥ 500 W/m 2
obtenemos una expresión que nos relaciona la tensión de salida del circuito de medición de irradiancia con la irradiancia global incidente:
= I F ⋅ Rr = [(1,623 ⋅ G (W / m 2 ) − 405) ⋅10 −6 ] ⋅ [1,6 ⋅10 3 ] − V ADCIN (V ) = (2,5968 ⋅ G (W / m 2 ) − 648) ⋅ 10 3 V ADCIN (mV ) = 2,5968 ⋅ G (W / m 2 ) − 648 V ADCIN (V )
siendo válida dicha expresión para valores de G ≥ 500 W/m 2. Introduciendo ahora esta ecuación en la expresión anterior que nos proporciona la lectura tamaño byte que se obtiene en la conversión AD de la tensión de entrada analógica obtenemos lo siguiente:
V ADCIN (V )
⋅ 28 = V REF (V )
Lectura _ tamaño _ byte = Parte _ entera _ de
(V ) V = Parte _ entera _ de ADCIN ⋅ 256 = 2,5 256 = Parte _ entera _ de ⋅ [2.5968 ⋅ G(W / m 2 ) − 648] ⋅ 10− 3 = 2.5 = Parte _ entera _ de[ 0,2659 ⋅ G(W / m 2 ) − 66,3552]
siendo válida esta expresión para valores de G ≥ 500 W/m 2. Por lo tanto, la expresión anterior nos relaciona la lectura tamaño byte obtenida en la conversión de la tensión de salida de los circuitos de medición de irradiancia con la irradiancia global incidente G detectada por nuestros fotodiodos. Como podemos observar se trata de una relación lineal con pendiente positiva lo que implica una variación proporcional de la lectura obtenida con la irradiancia incidente. Esta expresión será utilizada en varias ocasiones en lo que resta del texto.
1.1.1.2.18 EL PUERTO SERIE Nuestro microcontrolador incluye un puerto serial incorporado al chip, el cual puede operar en diversos modos sobre un extenso rango de frecuencias. La función esencial del puerto serie es realizar una conversión de paralelo a serie para los datos de salida, y una conversión de serie a paralelo para los datos de entrada. El acceso al puerto serie mediante el hardware se realiza a través de las terminales TxD (terminal nº 16) y RxD (terminal nº14). Estas terminales constituyen las funciones alternas de dos de los bits del puerto 3, P3.1 para TxD y P3.0 para RxD. El puerto serie cuenta con una operación full-duplex (transmisión y recepción simultáneas) y con búfer de recepción de datos, lo cual permite recibir un carácter que se almacena en un búfer mientras se recibe un segundo carácter. Los datos no se pierden si la CPU lee el primer carácter antes de que el segundo se haya recibido por completo.
La frecuencia de operación del puerto serie, o tasa de transmisión y recepción en baudios, puede ser fija (derivada del oscilador incorporado al chip) o variable. En nuestro equipo de medida utilizaremos una tasa en baudios variable que vendrá definida por el temporizador 1 del microcontrolador. Dos registros de función especial, el registro de búfer del puerto serial (SBUF) y el registro de control del puerto serial (SCON), disponen el acceso mediante software al puerto serial. En la siguiente figura se represente un diagrama de bloques del puerto serie de nuestro microcontrolador:
Figura 107: Diagrama de bloques del puerto serie. El
puerto serie
de
nuestro
microcontrolador
proporciona tanto
comunicación síncrona como asíncrona. La comunicación serie síncrona transmite un bloque completo de caracteres sincronizados mediante un reloj de referencia, mientras que la comunicación serie asíncrona transmite de manera aleatoria un carácter en cualquier momento, independientemente de cualquier reloj. El registro de búfer del puerto serie, SBUF, localizado en la dirección 99h constituye, en realidad, dos memorias intermedias. Al escribir en el registro de función especial SBUF se cargan los datos a transmitir por el puerto serie, y al leer de dicho registro se accede a los datos recibidos por dicho puerto. Éstos son dos registros separados y distintos, el registro de sólo escritura para transmisión y el registro de sólo lectura para recepción. En la recepción de datos se utiliza un registro de desplazamiento de serie a paralelo para
sincronizar los datos recibidos antes de que se transfieran al registro de sólo lectura para recepción. Por otro lado, el registro de control del puerto serie, SCON, localizado en la dirección 98h, contiene los bits de estado y de control del puerto serie. Los bits de estado (bits TI y RI) indican el fin de una transmisión o recepción de un carácter y se prueban en el software o se programan para producir una interrupción. Por otra parte, el modo de operación del puerto serie se establece mediante la escritura en los bits de control (bits SM0 y SM1). Antes de utilizar el puerto serie debemos inicializar este registro para operar en el modo correcto. El puerto serie tiene 4 modos de operación, los cuales se seleccionan en el registro de control SCON mediante la escritura en los bits SM0 y SM1. Tres de estos modos habilitan las comunicaciones asíncronas, en donde cada carácter recibido o transmitido está enmarcado por un bit de inicio y uno de detención. En el cuarto modo, el puerto serie opera como un simple registro desplazamiento. En nuestro equipo, el puerto serie va a operar en modo 1 (SM0 SM1=01). En este modo de funcionamiento el puerto serie opera como un receptor/transmisor asíncrono universal (UART) de 8 bits con velocidad en baudios variable. Un UART es un dispositivo que recibe y transmite datos seriales y donde cada carácter va precedido por un bit de inicio (bajo) y seguido por un bit de detención. La operación esencial de un UART es la conversión paralelo a serie de los datos de salida y la conversión serie a paralelo de los datos de entrada. En el modo de operación 1se transmiten 10 bits en TxD o se reciben en RxD. Estos bits constan de un bit de inicio (siempre 0), ocho bits de datos (el bit menos significativo primero), y un bit de detención (siempre 1). El bit de detención se transfiere al bit RB8 perteneciente al registro SCON para operar una recepción. La velocidad en baudios del puerto serie se establece mediante la velocidad de desbordamiento del temporizador 1. La transmisión en el puerto serie se inicia al escribir en el registro SBUF. Los datos desplazados en el registro de desplazamiento se envían como salida a la línea TxD comenzando con el bit de inicio, seguido por los 8 bits de datos, y finalmente el bit de detención. El periodo para cada bit es el recíproco de la velocidad en baudios programada en el temporizador 1. La bandera de
interrupción de transmisión (bit TI perteneciente al registro SCON) se activa tan pronto como aparece el bit de detención en TxD. Por otra parte, la recepción por el puerto serie se incia mediante una transición de 1 a 0 en RxD. El receptor incluye una “detección de bit de inicio falso” ya que requiere de ocho conteos en el estado 0 en RxD después de la primera transición de 1 a 0. Si esto no ocurre, se asume que el receptor se disparó por causa de ruido en lugar de por un carácter válido. En este caso, el receptor se reinicializa y regresa al estado de reposo, esperando la siguiente transición de 1 a 0 en RxD. Por el contrario, si se detecta un bit de inicio válido, la recepción de caracteres continúa. En este caso, el bit de inicio es ignorado mientras que los 8 bits de datos se aplican mediante un pulso de reloj al registro de desplazamiento del puerto serie. Cuando estos 8 bits se han sincronizado ocurre lo siguiente: -
El bit de detención (noveno bit) se sincroniza al bit RB8 en el registro SCON
-
Se carga el registro SBUF con los 8 bits de datos recibidos
-
Se activa la bandera de interrupción de recepción (bit RI perteneciente al registro SCON)
Sin embargo, es importante destacar que esto sólo ocurrirá cuando se verifique que RI=0, lo cual asegura que el software ha leído el carácter anterior y que ha restablecido RI en 0. Por otra parte, el bit de habilitación del receptor (bit REN perteneciente al registro SCON) debe activarse mediante el software para habilitar la recepción de caracteres. En nuestro caso, dicho bit será activado cuando inicialicemos el registro SCON, al comienzo de nuestro programa principal. En el registro SCON, las banderas de interrupción de recepción (RI) y de transmisión (TI) cumplen una función importante en las comunicaciones seriales. Ambos bits se activan mediante hardware, pero deben ser puestos a 0 mediante software. Por un lado, la bandera de interrupción de recepción, RI, se activa al final de la recepción de una carácter, e indica que el búfer de recepción está lleno. Esta condición se prueba en el software o se programa para generar una interrupción (éste será el caso de nuestro equipo de medida).
Si el software desea recibir un carácter de entrada del dispositivo conectado al puerto serie, debe esperar a que la bandera RI se establezca en 1, y luego restablecerla en 0 y leer el carácter recibido del registro SBUF. Por otro lado, la bandera de interrupción de transmisión, TI, se activa al final de la transmisión de un carácter e indica que el búfer de transmisión está vacío. Si el software desea enviar un carácter al dispositivo conectado al puerto serie, tiene que verificar primero si el puerto serial está listo. En otras palabras, si antes envió un carácter, debe esperar hasta que termine esta transmisión para poder enviar el siguiente carácter. Una vez que el hardware activa el bit TI indicando el fin de la transmisión, el software debe restablecer en 0 dicho bit y cargar en SBUF el nuevo carácter a enviar. Como ya hemos comentado, la velocidad de transmisión en baudios del puerto serie cuando éste opera en el modo de funcionamiento 1, es determinada en base a la velocidad de desbordamiento del temporizador 1. Debido a que el temporizador opera a una frecuencia relativamente alta, la velocidad de desbordamiento del temporizador se divide entre 32 (si el bit SMOD1 perteneciente al registro PCON está a 0) o entre 16 (si el bit SMOD1 está a 1) antes de proporcionar el reloj de velocidad en baudios al puerto serie. En nuestro equipo de medida, a la hora de generar la velocidad de transmisión en baudios del puerto serie, utilizaremos el temporizador 1 configurado en modo 2 de funcionamiento (modo de autorrecarga de 8 bits). Para ello configuraremos adecuadamente los bits M11 y M01 pertenecientes al registro TMOD. De esta forma, para generar la velocidad en baudios deseada para nuestro puerto serie deberemos colocar el valor de recarga adecuado en el registro TH1, teniendo en cuenta siempre que la velocidad en baudios será igual a la velocidad de desbordamiento del temporizador 1 dividida entre 32 si el bit SMOD1 en PCON está a 0, o entre 16 si dicho bit está a 1. En nuestro caso, la velocidad deseada para nuestro puerto serie será de 2400 baudios, para lo cual, teniendo en cuenta que nuestro oscilador opera a una frecuencia de 24 MHz, deberemos configurar los registros afectados del siguiente modo: -
Bits M11 M01=10 en el registro TMOD; de esta forma configuramos el temporizador 1 para que opere en modo 2 (autorrecarga de 8 bits).
-
Bit SMOD1=0 en el registro PCON; de esta forma, la velocidad en baudios generada es igual a la velocidad de desbordamiento del temporizador 1 dividida por 32.
-
Registro TH1= -26; de esta forma, introducimos en el registro TH1 el valor de recarga adecuado para generar la tasa de transmisión en baudios deseada.
Con esta configuración logramos obtener una velocidad real de 2404 baudios, lo que supone un error inferior al 0,16%. Como ya hemos comentado cuando hablábamos de la memoria EEPROM integrada en el chip del microcontrolador, nuestro equipo de medida irá almacenando en posiciones de memoria consecutivas de dicha memoria los 3 bytes correspondientes a los resultados de las diferentes medidas realizadas por el equipo. Estos tres bytes de resultado de medida se almacenarán en formato BCD y contendrán la siguiente información: -
En primer lugar, el byte correspondiente al porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC.
-
En segundo lugar, el byte correspondiente al mes en el que fue realizada la medida.
-
Finalmente, un tercer byte que indicará el día del mes en el que fue tomada la medida.
Como comentamos en aquel apartado, el almacenamiento de estos bytes de resultado en la memoria EEPROM comenzará en la posición 0000h y continuará de forma ascendente hasta alcanzar la última posición de dicha memoria (dirección 07FFh). Cuando un byte de resultado haya sido almacenado en esta última posición de memoria, el siguiente lo será en la dirección 0000h, continuándose de esta forma el ciclo de almacenamiento. El orden de almacenamiento de estos tres bytes de resultado en la EEPROM será el siguiente: 1. En primer lugar será almacenado el byte correspondiente al porcentaje de pérdida de potencia por suciedad. 2. En segundo lugar será almacenado el byte correspondiente al mes en que fue realizada la medida.
3. En
tercer
y
último
lugar
se
almacenará
el
byte
correspondiente al día del mes en el que fue llevada a cabo la medida. Con el objetivo de conocer en todo momento (incluso tras un corte en el suministro de energía del equipo) la dirección de la memoria EEPROM en la que debe ser almacenado el siguiente byte de resultado, dicha dirección (que tendrá un tamaño de 2 bytes) será almacenada en las direcciones de memoria 00h (el byte bajo de la dirección de memoria) y 01h (el byte alto de la dirección de memoria) de una memoria RAM de 256 bytes de tamaño incorporada en el reloj en tiempo real que vamos a incluir en nuestro equipo. En la siguiente figura podemos observar una representación de cómo se almacena en estas dos posiciones de memoria la dirección de la memoria EEPROM en la que deberá ser almacenado el siguiente byte de resultado:
Figura 108. Almacenamiento en la memoria SRAM del RTC de la dirección de la memoria EEPROM en la que deberá almacenarse el siguiente byte de resultado de medida.
Tanto el reloj como esta memoria RAM cuentan con una batería de apoyo que entrará en funcionamiento en caso de fallo en el suministro de energía del equipo. Por lo tanto, esta configuración nos permite disponer de un índice almacenado en una memoria no volátil que nos informa explícitamente de dónde tenemos que almacenar el próximo byte de resultado, e implícitamente de dónde se encuentra almacenado el último byte correspondiente a la última medida llevada a cabo por el equipo. Estas dos consideraciones serán utilizadas en el desarrollo de las subrutinas de nuestro programa encargadas de almacenar y leer en la memoria EEPROM los resultados almacenados. Ahora bien, para poder tener acceso a estos resultados de medida debemos incorporar a nuestro equipo un dispositivo que nos permita comunicarnos desde el exterior del mismo con el microcontrolador. El puerto serie del microcontrolador permite disponer de una interfaz a dispositivos de entrada/salida seriales, permitiéndonos conectar nuestro microcontrolador al puerto serie de un ordenador personal (PC). El puerto serie de un PC sigue el estándar de la interfaz serial RS232, y por esta razón se puede utilizar un cable RS232 normal para conectar un PC a nuestro microcontrolador. El cable RS232 termina en ambos extremos con un conector llamado DB-25, de 25 terminales. Sin embargo, debido a que no todas estas terminales se utilizan en la mayoría de las aplicaciones de un PC, apareció una nueva versión diferente del conector, llamada DB-9, que sólo dispone de las 9 terminales más comúnmente utilizadas. Las tres terminales más importantes de dichos conectores son las de recepción de datos (RxD), la de transmisión de datos (TxD), y la terminal de tierra (GND). Al conectar el microcontrolador a la interfaz serie RS232 una de las mayores preocupaciones es la diferencia que pueda haber entre los niveles de voltaje de estos dos dispositivos (microcontrolador e interfaz). Nuestro microcontrolador utiliza los niveles de voltaje TTL donde +5V indican un nivel alto mientras que 0V indican un nivel bajo. Sin embargo, para la interfaz RS232, el nivel alto está definido entre +3V a +15V, mientras que un nivel bajo está entre -5V a -15V. Debido a esta diferencia, las conexiones entre el microcontrolador y la interfaz RS232 deben realizarse a través de controladores de línea. Estos controladores de línea funcionan básicamente para efectuar la conversión entre dos diferentes niveles de voltaje, de tal manera que un nivel
alto o bajo que el microcontrolador puede descifrar también significa un nivel alto o bajo en la interfaz RS232 y viceversa. Por todo ello, en nuestro equipo de medida hemos incorporado un conector DB-9 el cual será accesible desde el exterior del equipo. Para ello hemos incorporado a la caja que contiene el equipo un orificio lateral de dimensiones adecuadas que se mantendrá cerrado herméticamente mediante un tapón de cierre de material sintético (ver Planos Nº 14, 24, 25 y 26 dentro del Documento Básico Planos). Por lo tanto, para tener acceso a dicho conector, simplemente deberemos quitar dicho tapón y conectar un cable RS232 en dicho conector. Por otra parte, el controlador de línea elegido para la implementación de nuestro prototipo es el modelo MAX232A de la empresa MAXIM (su hoja de características puede ser consultada en el CD adjunto al presente proyecto). Dicho controlador requiere de la instalación de 5 condensadores externos de 0,1 μF cada uno y dispone de 2 canales de transmisión/recepción (T1/R1 y T2/R2). En nuestro equipo de medida sólo será utilizado uno de estos dos canales para realizar la comunicación del microcontrolador con el PC conectado al puerto serie. En nuestro programa de gestión del sistema, el envío por el puerto serie de todos los resultados de medida almacenados en la memoria EEPROM comenzará cuando el microcontrolador reciba un byte por la línea de recepción RxD de dicho puerto. Dicho byte deberá ser enviado por el PC conectado al equipo. En este momento se producirá una petición de interrupción por recepción del puerto serie, activándose el bit RI en el registro SCON. Como respuesta a dicha petición de interrupción, el programa principal se interrumpirá (aunque la instrucción actual en ejecución terminará de completarse) y el microcontrolador pasará a ejecutar la rutina de servicio de interrupción del puerto serie, cargándose para ello en el registro contador de programa (PC) la dirección del vector de dicha rutina. En esta rutina de servicio de interrupción el microcontrolador, tras borrar inicialmente el bit RI en el registro SCON, procederá a leer la dirección de la memoria EEPROM almacenada en las direcciones 00h y 01h de la memoria SRAM de nuestro reloj en tiempo real. Como se indicó anteriormente, dicha dirección de memoria indica la posición en la que debería ser almacenado el siguiente byte de resultado; por lo tanto, si tenemos en cuenta la forma en la que dichos bytes son almacenados podemos
deducir que la dirección de la memoria EEPROM en la que se encuentra almacenado el último byte de resultado correspondiente a la última medida llevada a cabo por el equipo, es la dirección de memoria anterior a la almacenada en estas dos posiciones de la memoria del RTC. Por todo ello, el micro reduce en una unidad dicha dirección de memoria y, tras ello, comienza a ejecutarse un bucle de repetición con condición al final en el que se envían por el puerto serie los tres bytes correspondientes a los diferentes resultados de medida almacenados en la memoria. Teniendo en cuenta que antes de la puesta en funcionamiento por primera vez del equipo, la memoria EEPROM del micro deberá ser borrada en su totalidad (todas sus posiciones de memoria contendrán inicialmente el valor 00h), este bucle de repetición se interrumpirá cuando se presente una cualquiera de las dos siguientes situaciones: •
Que el sistema detecte que el byte correspondiente al día del mes en el que se realizó una medida es igual a 00h. Esto implicaría, por un lado, que el número de resultados almacenados en la EEPROM es menor de 682 (debemos recordar que éste es el número máximo de resultados de medida que caben en la memoria EEPROM) y, por otro, que ya han sido enviados por el puerto serie todos los resultados que estaban almacenados en la memoria.
•
Que ya hayan sido enviados 682 resultados de medida, lo que implicaría que ya habría sido enviado el número máximo de medidas que puede ser almacenado en la memoria EEPROM del micro.
Por lo tanto, el envío de resultados de medida por el puerto serie cesará, bien cuando el micro detecte que ya ha enviado todos los resultados almacenados (suponiendo que el número de estos sea inferior a 682), o bien cuando ya haya enviado un total de 682 resultados de medida. La explicación detallada del funcionamiento de la rutina de servicio de interrupción del puerto serie se realizará en el apartado correspondiente al programa de funcionamiento del equipo de medida. 1.1.1.2.19 EL INTERFAZ DE PUERTO SERIE (SPI)
El módulo interfaz de puerto serie (SPI) incorporado en el chip de nuestro microcontrolador permite comunicación full-duplex, así como comunicación serial síncrona entre el microcontrolador y aparatos periféricos, incluidos otros microcontroladores. Las características de este módulo SPI son las siguientes: -
Full-duplex, transferencias síncronas de 3 cables.
-
Operación maestro o esclavo.
-
Seis velocidades programables de reloj maestro en modo maestro.
-
Reloj serie con fase y polaridad programable.
-
Bandera de error por fallo en el modo maestro con capacidad de interrupción del microcontrolador.
En la siguiente figura se muestra la configuración típica de un bus SPI usando un controlador maestro y muchos periféricos esclavos. El bus está compuesto de 3 cables conectando todos los aparatos:
Figura 109. Interconexión típica Maestro-Esclavos en un bus SPI. Como podemos observar en la figura anterior, el aparato maestro selecciona el aparato esclavo particular usando 4 pines de un puerto paralelo para controlar los 4 pines de selección SS de los aparatos esclavos. En el interfaz serie SPI están involucradas las siguientes señales:
1. Señal MOSI (Salida Maestro / Entrada Esclavo): Esta señal de 1 bit está directamente conectada entre el aparato maestro y un aparato esclavo. Esta línea se usa para transferir datos en serie desde el dispositivo maestro hasta el dispositivo esclavo; por lo tanto, es una señal de salida desde el maestro y una señal de entrada hacia un esclavo. Cuando se transmite un byte por esta línea, el bit más significativo es transmitido en primer lugar y el bit menos significativo en último. 2. Señal MISO (Entrada Maestro / Salida Esclavo): Esta señal también de 1 bit, está directamente conectada entre el aparato esclavo y el aparato maestro. Esta línea se usa para transferir datos en serie desde el dispositivo esclavo hacia el dispositivo maestro; por lo tanto, es una señal de salida desde el esclavo y una señal de entrada hacia el maestro. Al igual que en el caso anterior, cuando se transmite un byte por esta línea, el bit más significativo es transmitido en primer lugar, mientras que el bit menos significativo lo es en último. 3. Señal SCK (Reloj Serie SPI): Esta señal se usa para sincronizar la transmisión de datos tanto de entrada como de salida de los aparatos a través de sus líneas MOSI y MISO. Es alimentada por el maestro durante 8 ciclos de reloj, lo cual permite intercambiar un byte en las líneas serie. 4. Señal SS (Selección de aparato esclavo): Cada periférico esclavo se selecciona mediante un pin de selección de esclavo denominado SS. Esta señal debe permanecer en nivel bajo durante cualquier mensaje para un esclavo. Es obvio que en un bus SPI sólo el dispositivo maestro (el cual tiene su señal SS a nivel alto) puede controlar la red. El dispositivo maestro puede seleccionar cada aparato esclavo por software a través de los pines de puerto. Para prevenir conflictos de bus en la línea MISO, sólo un esclavo debería ser seleccionado al mismo tiempo por el dispositivo maestro durante una transmisión. Un nivel alto en el pin SS pone a la línea MISO de un esclavo en un estado de alta impedancia.
Cuando nuestro microcontrolador opera en modo maestro, como es el caso de nuestro equipo de medida, la velocidad en baudios de transmisión de datos por el bus SPI puede ser seleccionada desde un generador de velocidad en baudios que está controlado por los tres bits SPR2, SPR1 y SPR0 pertenecientes al registro de control SPCON del interfaz SPI. De esta forma, el reloj maestro es seleccionado desde 1 a 7 niveles de velocidad de reloj resultantes de la división del reloj interno del periférico entre 4, 8, 16, 32, 64 o 128. En la siguiente tabla se muestran las diferentes velocidades de reloj en baudios del bus SPI en función de los valores asignados a los tres bits anteriores:
Tabla 14. Selección de velocidad en baudios del bus SPI. El módulo interfaz de puerto serie de nuestro microcontrolador puede ser configurado en uno de dos modos de operación: -
En Modo Maestro.
-
En Modo Esclavo.
Además, la configuración e inicialización del módulo SPI se lleva a cabo a través de dos registros de función especial: -
El registro de control del periférico serie: SPCON.
-
El registro de control y estado de dicho periférico: SPSCR.
Una vez que el interfaz serie SPI es configurado mediante estos dos registros, el intercambio de datos se realiza usando el registro de datos del periférico serie SPDAT.
Durante una transmisión SPI, los datos son simultáneamente transmitidos (saliendo serialmente en forma sincronizada) y recibidos (entrando serialmente en forma sincronizada). En ambos casos, la línea de reloj serie SCK sincroniza el ritmo de envío y muestreo de datos por las dos líneas de datos serie MOSI y MISO. La línea de selección de esclavo SS permite realizar una selección individual del aparato esclavo SPI. De esta forma, los aparatos esclavos que no son seleccionados por el dispositivo maestro no interfieren en las actividades del bus SPI. Cuando el aparato maestro transmite datos al aparato esclavo a través de la línea MOSI, el aparato esclavo responde enviando datos al aparato maestro a través de la línea MISO. Esto supone transmisión full-duplex tanto con los datos de entrada como con los datos de salida, sincronizados ambos con el mismo reloj. En la siguiente figura se muestra una interconexión fullduplex maestro-esclavo:
Figura 110. Interconexión full-duplex Maestro-Esclavo en un bus SPI. Como ya hemos comentado, el interfaz serie SPI en nuestro microcontrolador puede funcionar en modo maestro o en modo esclavo. Sin embargo, puesto que en nuestro equipo de medida únicamente va a funcionar en modo maestro, vamos a centrarnos únicamente en este modo de operación. El interfaz serie SPI opera en modo maestro cuanto el bit maestro MSTR perteneciente al registro SPCON está activado. Un aspecto importante a tener en cuenta a la hora de utilizar este interfaz es que, en nuestro programa de funcionamiento del equipo, el módulo SPI debe ser configurado como maestro antes de que dicho módulo sea habilitado. Esta habilitación del módulo se lleva a cabo activando el bit SPEN perteneciente al registro SPCON. A su vez, en un bus SPI, el dispositivo maestro debe ser configurado antes que el dispositivo esclavo.
Sólo un dispositivo SPI maestro puede iniciar transmisiones por el bus. El software comienza una transmisión desde el módulo SPI maestro escribiendo en el registro de datos del periférico serie (registro SPDAT). Si el registro de desplazamiento está vacío, el byte almacenado en SPDAT es inmediatamente enviado al registro de desplazamiento. El byte comienza a ser enviado a través del pin MOSI bajo el control del reloj serie SCK. Simultáneamente, otro byte es enviado desde el esclavo a través del pin MISO del maestro. La transmisión termina cuando la bandera de datos transferidos del periférico serie SPIF perteneciente al registro SPSCR, pasa a activa. Al mismo tiempo que el bit SPIF se activa, el byte recibido del esclavo es transferido al registro de datos recibidos SPDAT. El software borra el bit SPIF cuando lee el registro SPSCR con el bit SPIF activo, y leyendo posteriormente el registro SPDAT. A la hora de transmitir y recibir datos seriales a través del bus SPI, el software puede seleccionar una cualquiera de 4 combinaciones de fase y polaridad del reloj serie de dicho bus (señal SCK). Para ello utilizaremos 2 bits pertenecientes al registro SPCON: el bit de polaridad del reloj CPOL, y el bit de fase del reloj CPHA. Debemos tener en cuenta que antes de configurar la fase y la polaridad del reloj mediante estos dos bits, el módulo SPI debe ser deshabilitado poniendo a 0 su bit de habilitación SPEN en el registro SPCON. El bit de polaridad del reloj CPOL define el nivel de la línea SCK por defecto cuando el interfaz se encuentra en modo de parada. Este bit no tiene efecto significativo sobre el formato de transmisión de datos. Por el contrario, el bit de fase CPHA define los flancos en los cuales los datos de entrada son muestreados y los datos de salida son enviados. Un aspecto muy importante en la comunicación a través del bus SPI es que tanto la fase como la polaridad del reloj de dicho bus deben ser idénticos para el dispositivo maestro y para el dispositivo esclavo. En nuestro programa de funcionamiento del equipo de medida, el módulo SPI va a ser configurado de la siguiente forma: -
En primer lugar, los tres bits SPR2, SPR1 y SPR0 en el registro de control SPCON que controlan la velocidad de transmisión en baudios por el bus cuando el micro opera en modo maestro, serán configurados con los valores 1, 0 y 0, respectivamente. De esta forma, teniendo en cuenta que
nuestro microcontrolador va a operar en modo estándar con un cristal de 24 MHz, la frecuencia de la señal de reloj serie SCK del bus queda establecida de la siguiente forma: F SCK
=
F CLK _ SPI
32
F XTAL =
2 32
=
F XTAL
64
=
24MHz 64
Este valor introduce un margen de seguridad suficiente con respecto a la frecuencia máxima a la que puede operar el reloj en tiempo real que hemos elegido para nuestro equipo, la cual tiene un valor de 4 MHz. -
El bit MSTR perteneciente al registro SPCON será activado, con lo que nuestro microcontrolador funcionará en todo momento como dispositivo maestro en el bus SPI, generando la señal SCK de sincronización de datos.
-
El bit de polaridad por defecto de la señal de reloj, CPOL, será puesto a 0, con lo que establecemos que la señal de reloj SCK del bus SPI permanecerá en nivel bajo cuando este interfaz se encuentre en modo de parada. En nuestro equipo de medida, puesto que el reloj en tiempo real elegido para su implementación determina automáticamente la polaridad que tiene por defecto la señal de reloj SCK, podremos usar cualquier polaridad para dicha señal.
-
Por otro lado, el bit de fase de la señal de reloj, CPHA, será configurado con el valor 1, con lo que establecemos que el muestreo del bit de transmisión se produzca cuando el pulso de la señal de reloj SCK retorne al estado 0.
Por otra parte, el registro de control / estado del módulo SPI (registro SPSCR) se dejará con su valor por defecto tras reset. En el apartado dedicado al programa de funcionamiento de nuestro equipo de medida se detallará la configuración inicial de este periférico. 1.1.1.2.20 LOS TEMPORIZADORES/CONTADORES
Un temporizador consta de una serie de flip-flops de división entre 2, los cuales reciben una señal de entrada como su fuente de reloj. El reloj se aplica al primer flip-flop, el cual divide la frecuencia del reloj entre 2. La salida de este primer flip-flop se aplica a la entrada de reloj del segundo, que también divide la frecuencia entre 2, y así sucesivamente. De esta forma, un temporizador con un número n de etapas divide la frecuencia del reloj de entrada entre 2 n, ya que cada etapa sucesiva divide entre 2. La salida de la última etapa del temporizador se aplica a la entrada de reloj de un flip-flop de desbordamiento del temporizador, cuyo estado puede ser verificado mediante el software y su establecimiento en 1 puede generar una interrupción. Por todo ello, podemos considerar el valor binario de las salidas de los flip-flops del temporizador como la cuenta del número de pulsos del reloj desde que el temporizador se inició. En nuestro microcontrolador, los temporizadores se pueden utilizar para: -
La temporización de intervalos.
-
El conteo de eventos.
-
La generación de la tasa de transmisión y recepción en baudios para el puerto serie incorporado en el micro.
Nuestro microcontrolador implementa dos temporizadores/contadores de 16 bits de propósito general, identificados como Temporizador 0 y Temporizador
1.
Ambos
dispositivos
pueden
ser
configurados
independientemente para operar en 4 diferentes modos de funcionamiento ya sea como temporizador o como contador de eventos. Cuando un temporizador opera en modo de temporización de intervalos, el dispositivo es programado para causar un desbordamiento a intervalos regulares de tiempo, lo cual establece en 1 su bandera de desbordamiento; esta misma bandera se utiliza para sincronizar el programa para que éste realice una determinada acción. Por el contrario, cuando un temporizador opera como contador de eventos, el temporizador cuenta las transiciones negativas que se producen en un determinado pin externo del microcontrolador. Por último, los temporizadores también pueden proporcionar el reloj de la tasa de transmisión y recepción en baudios para el puerto serial interno del micro. En nuestro equipo de medida utilizaremos el Temporizador 0 en modo de temporización de intervalos, mientras que el Temporizador 1 será utilizado para
generar la tasa de transmisión en baudios del puerto serie. Los dos registros del Temporizador 0 son los registros de función especial TL0 (byte inferior) y TH0 (byte superior), mientras que los del Temporizador 1 son TL1 (byte inferior) y TH1 (byte superior). El funcionamiento de ambos temporizadores está determinado por dos registros de función especial: el registro de control de modo de operación TMOD, y el registro de control TCON. El registro TMOD contiene dos grupos de 4 bits que establecen el modo de operación para ambos temporizadores. En ambos grupos de 4 bits, la función de cada bit es la siguiente: -
Los bits de compuerta, GATE0 y GATE1, permiten que, cuando están activados, los temporizadores sólo funcionen si las señales INT0 e INT1 están a nivel alto, respectivamente. En nuestro equipo de medida, ambos bits serán configurados inicialmente con el valor 0.
-
Los bits de selección de contador/temporizador, C/T0# y C/T1#, permiten seleccionar si el temporizador va a operar en modo de temporización de intervalos (bit con valor 0), o en modo de contador de eventos (bit con valor 1). En nuestro equipo, ambos bits serán configurados con el valor 0, de modo que ambos temporizadores funcionarán en modo de temporización de intervalos.
-
Por último, las dos parejas de bits (M10 , M00) y (M11, M01) son
los
bits
de
modo
de
funcionamiento
de
los
temporizadores 0 y 1 respectivamente. Mediante las 4 posibles combinaciones de estas parejas de bits podemos seleccionar uno de los 4 modos de funcionamiento en los que pueden operar ambos temporizadores. Como ya hemos comentado, en nuestro equipo de medida el temporizador 0 será usado en modo de temporización de intervalos, mientras que el temporizador 1 será utilizado para generar la tasa de transmisión en baudios del puerto serie. Para ello, los dos bits de modo de funcionamiento del temporizador 0 (M10 y
M00)
serán
configurados
con
los
valores
0
y
1
respectivamente, con lo que dicho temporizador funcionará en modo 1 (modo de temporizador de 16 bits). Por otro lado, los dos bits de modo del temporizador 1 (M11 y M01) serán configurados con los valores 1 y 0 respectivamente, con lo que este temporizador funcionará en modo 2 (modo de autorrecarga de 8 bits). En este segundo caso, el valor de recarga que será almacenado en el registro TH1 será el adecuado para generar la tasa de transmisión en baudios deseada para nuestro puerto serie. En nuestro programa de funcionamiento del equipo, el registro TMOD se inicializará al comienzo del mismo para establecer los modos de operación de los temporizadores. Una vez configurado este registro, los temporizadores podrán iniciarse, detenerse, etc. accediendo a determinados bits del registro TCON. Por otro lado, el registro TCON contiene los bits de estado y de control para los temporizadores. Los cuatro bits superiores de este registro son utilizados para encender o apagar ambos temporizadores (bits TR0 y TR1), o para indicar el desbordamiento del temporizador (bits TF0 y TF1). En nuestro programa, el Temporizador 0 será usado en diferentes subrutinas de retardo en las que será configurado para que su desbordamiento se produzca cada determinados intervalos de tiempo. En dichos casos, este temporizador funcionará en modo 1 (modo temporizador de 16 bits). En este modo de funcionamiento, los bytes superior e inferior del temporizador (TL0 y TH0) están dispuestos en cascada para formar un temporizador de 16 bits. De esta forma, el reloj se aplica a ambos registros del temporizador combinados. El contador cuenta hacia arriba mientras se reciban los pulsos de reloj: 0000h, 0001h, 0002h, etc. En la transición de FFFFh a 0000h del conteo ocurre un desbordamiento que establece en 1 la bandera de desbordamiento del temporizador. El bit más singnificativo (MSB) del valor en los registros del temporizador es el bit 7 del registro TH0 y el bit menos significativo (LSB) es el bit 0 del registro TH0. La bandera de desbordamiento, TF0, así como los registros del temporizador, TL0 y TH0, se leen o escriben mediante el software
cuando sea necesario. En la siguiente figura se representa el modo 1 de funcionamiento de los temporizadores:
Figura 111. Representación del modo de funcionamiento 1 de los temporizadores/contadores. Por otro lado, en nuestro programa usaremos el Temporizador 1 para proporcionar el reloj de la tasa de transmisión y recepción en baudios del puerto serie. Para ello, este temporizador operará en modo 2 (modo de autorrecarga de 8 bits). En este modo de funcionamiento, el byte inferior del temporizador, TL1, opera como un temporizador de 8 bits mientras que el byte superior TH1 almacena el valor de recarga. Cuando la cuenta en TL1 se desborda después de alcanzar el valor FFh, esto no sólo establece en 1 la bandera de desbordamiento del temporizador TF1, sino que también se carga el valor en el registro TH1 a TL1. Tras ello, la cuenta sigue desde este valor hasta llegar al siguiente desbordamiento de FFh, y así sucesivamente. Este modo de funcionamiento de los temporizadores es muy útil ya que el desbordamiento del temporizador ocurre a intervalos periódicos específicos una vez que los registros TMOD y TH1 se han inicializado. En nuestro equipo, el registro TH1 se cargará inicialmente con el valor adecuado para generar una tasa de transmisión de 2400 baudios para el puerto serie. En la siguiente figura aparece
representado
temporizadores/contadores:
el
modo
de
funcionamiento
2
de
los
Figura 112. Representación del modo de funcionamiento 2 de los temporizadores/contadores. 1.1.1.3
EL RELOJ EN TIEMPO REAL
Como ya hemos explicado cuando hablábamos de los efectos que tiene la suciedad sobre el comportamiento eléctrico de los módulos fotovoltaicos, las pérdidas energéticas por este factor están influenciadas por el ángulo de incidencia de los rayos solares sobre la superficie del módulo. Esto se traduce en que, para un mismo valor de irradiancia incidente, el porcentaje de pérdida energética por suciedad de un módulo sucio variará dependiendo del ángulo con el que los rayos solares inciden sobre su superficie. Si la inclinación y orientación del módulo son fijas, este ángulo de incidencia variará a lo largo del año debido a los movimientos de rotación y de traslación de la Tierra alrededor del Sol, y al ángulo que forma el eje de rotación de la Tierra con respecto al plano de la eclíptica. Por todo ello, para un observador situado en un punto de la superficie terrestre, el Sol traza una trayectoria diferente por el cielo a lo largo del año. Teniendo esto en cuenta, podemos concluir que la orientación y la inclinación del plano de captación influyen de forma determinante sobre la cantidad de energía solar recibida. A este respecto, en el hemisferio norte, cualquier desviación con respecto al sur influye de forma negativa sobre la energía recibida, es decir, para una inclinación dada del plano de captación, cualquier desviación de este plano con respecto al sur recibirá menos energía. Por otro lado, la inclinación del plano de captación hace variar la energía recibida en función de la época del año; en verano los ángulos de inclinación pequeños reciben más energía, mientras que en invierno sucede lo contrario. Por esta razón, los módulos fotovoltaicos instalados en estructuras fijas, presentan una determinada orientación y un determinado ángulo de inclinación con respecto al plano horizontal. A la hora de ajustar ambos parámetros y
conseguir una optimización del aprovechamiento solar, debe conjugarse la distribución de la demanda de energía a lo largo del año con la inclinación del campo de colectores solares. Como ya hemos comentado, el hecho de que las pérdidas energéticas por suciedad varíen con el ángulo de incidencia solar tiene como consecuencia que un mismo módulo sucio presente diferentes valores de pérdida energética para un mismo valor de irradiancia incidente en función del ángulo que formen los rayos solares con la recta normal a la superficie del módulo. En el caso de los sistemas fotovoltaicos con sistemas de seguimiento a dos ejes, esta variación desaparece ya que el módulo se encuentra en todo momento orientado de forma perpendicular a la radiación solar directa (ángulo de incidencia igual a 0 grados). De esta forma, si nuestro equipo de medida es instalado en la misma estructura soporte de los módulos, el ángulo de incidencia de la radiación solar directa sobre su superficie acristalada permanecerá aproximadamente constante a lo largo de todo el año, con lo que las medidas obtenidas por el equipo estarán todas referidas al mismo ángulo de incidencia solar. Por otro lado, en los sistemas fotovoltaicos con sistemas de seguimiento a un eje norte-sur, el ángulo de incidencia de la radiación solar directa sobre el módulo permanecerá aproximadamente constante a lo largo de un día, pero presentará variaciones a lo largo de los diferentes días del año. Esta variación será igual a la variación que haya experimentado el ángulo de declinación solar a lo largo del tiempo considerado. Por último, en los sistemas fotovoltaicos fijos, el ángulo de incidencia solar variará tanto a lo largo de un día (desde la salida hasta la puesta de sol) como a lo largo de un año. Por un lado, el ángulo de incidencia de la radiación solar directa sobre el módulo dependerá de la hora solar en la que nos encontremos, la cual determina la posición en la que se encuentra el sol dentro de su trayectoria diaria. Por otro lado, para una misma hora solar, la variación que experimenta dicho ángulo de incidencia a lo largo de un determinado número de días será igual a la variación que ha experimentado el ángulo de declinación solar a lo largo de dicho periodo de tiempo. Teniendo en cuenta todo lo anterior y con el objetivo de que dos medidas consecutivas de nuestro equipo estén referidas aproximadamente al mismo ángulo de incidencia solar, hemos dotado al mismo de un reloj en tiempo real
(RTC) el cual nos servirá para conseguir que todas las medidas realizadas por el equipo sean llevadas a cabo aproximadamente a la misma hora solar. Por ello, nuestro equipo de medida será programado para que, cada día del año aproximadamente en el mediodía solar, intente llevar a cabo la medida de la pérdida de potencia por suciedad. Si nuestro equipo se encuentra orientado hacia el sur (orientación óptima en el hemisferio norte), al mediodía solar el sol se encontrará justo delante del mismo, con lo que conseguimos minimizar el ángulo de incidencia de la radiación directa con respecto al cristal frontal del equipo. Como hemos comentado con anterioridad, para una hora solar determinada, la variación que experimenta el ángulo de incidencia solar respecto al módulo entre un día y el siguiente vendrá dado por la variación que haya experimentado el ángulo de declinación solar en dicho periodo de tiempo. Este ángulo de declinación solar (δ) es el ángulo que forma el plano ecuatorial terrestre con el radio Sol-Tierra a lo largo del movimiento de traslación de la Tierra alrededor del Sol. Este ángulo de declinación varía permanentemente conforme la Tierra se mueve alrededor del Sol, sin embargo, a efectos de nuestros cálculos, consideraremos que permanece invariante a lo largo de un día. La expresión de Spencer para calcular el ángulo de declinación solar (en radianes (rad)) en función del día del año es la siguiente 1: δ (Γ ) = 0,006918 − 0,399912 ⋅ cos(Γ ) + 0,070257 ⋅ sen(Γ ) − 0,006758 ⋅ cos(2Γ ) + + 0,000907 ⋅ sen(2Γ ) − 0,002697 ⋅ cos(3Γ ) + 0,00148 ⋅ sen(3Γ )
donde Γ es el ángulo diario (en rad), el cual viene dado por: Γ (d n ) =
2π ⋅ (d n
− 1)
365
siendo dn el denominado “Día Juliano” correspondiente al día del año en el que nos encontremos (1≤d n≤365). Aunque esta expresión tiene en cuenta el hecho de que la velocidad angular de la Tierra en su camino sobre la eclíptica es variable y se ajusta a la Ley de Kepler según la cual los planetas barren áreas iguales en tiempos iguales, para la mayoría de las aplicaciones de la ingeniería, la aproximación de considerar que la Tierra gira alrededor del Sol con velocidad angular constante es muy cómoda y conduce a una exactitud suficiente. En José Marco Montoro, Instalaciones Solares Fototérmicas de Baja Temperatura . Diseño y Aplicaciones, Editorial SAPT Publicaciones Técnicas S.L., 2005. 1
este caso, el ángulo de declinación solar (en grados) vendría dado por la siguiente expresión: δ ( d n )
360 = 23,45 ⋅ sen ⋅ (d n + 284) 365
A la hora de evaluar esta expresión debemos tener en cuenta que el ángulo al que se le aplica la función seno viene expresado en grados. Si evaluamos esta expresión a lo largo del año, podemos comprobar que el ángulo de declinación de la Tierra varía en menos de medio grado entre un día y el siguiente. Por lo tanto, retomando el argumento anterior podemos concluir que, para una misma hora solar, la variación que experimenta el ángulo de incidencia de la radiación solar directa sobre el módulo fotovoltaico variará en menos de medio grado entre dos días consecutivos. Teniendo en cuenta todo lo anterior, el reloj en tiempo real incluido en nuestro equipo de medida nos va a permitir que todas las medidas realizadas sean llevadas a cabo aproximadamente a la misma hora solar, con lo que conseguimos que el ángulo de incidencia de la radiación solar directa bajo el que son obtenidas dos medidas consecutivas varíe la menor cantidad posible. Es decir, dos medidas realizadas a la misma hora solar en dos días consecutivos estarán referidas a ángulos de incidencia solar que difieren en menos de medio grado. Por todo ello, nuestro reloj en tiempo real será sincronizado con la “hora solar aproximada” del lugar donde se encuentre la instalación fotovoltaica en la que vamos a instalar el equipo. La hora solar de un determinado punto de la superficie terrestre viene definida por la posición que ocupa el sol respecto a dicho punto en el instante considerado. Por otro lado, la hora local de dicho punto es la hora definida por el meridiano central del uso horario al que pertenece el punto. La hora local de un punto de la superficie terrestre difiere de la hora solar en dicho punto debido a una serie de factores 2: 1. Política de ahorro energético: Las políticas de ahorro de energía introducen una modificación que se hace a la hora local para aprovechar las horas de sol durante las horas de trabajo. De esta forma se tiene que: José Marco Montoro, Instalaciones Solares Fototérmicas de Baja Temperatura . Diseño y Aplicaciones, Editorial SAPT Publicaciones Técnicas S.L., 2005. 2
•
Desde el último domingo de octubre hasta el último domingo de marzo se tiene que: Hora de reloj = Hora local + 1 hora
•
Desde el último domingo de marzo hasta el último domingo de octubre se tiene que: Hora de reloj = Hora local + 2 horas
2. Diferencia de longitud: Entre dos meridianos consecutivos, todos los puntos tienen la misma hora local (la zona comprendida entre dos meridianos consecutivos se denomina Uso Horario). Dicha hora local común viene definida por el meridiano central o de referencia de dicho uso horario. Sin embargo, a pesar de que todos los puntos pertenecientes a un mismo uso horario tienen la misma hora local, la posición del sol es diferente respecto a cada punto dependiendo de su longitud. De este modo, la corrección que tenemos que hacer a la hora local para tener en cuenta la posición del punto en el que nos encontramos (su longitud) respecto al meridiano central del uso horario correspondiente implica una modificación de 4 minutos por cada grado de desviación del punto respecto al meridiano de referencia. Esta modificación debe ser: •
Positiva, si el punto se encuentra al este del meridiano central de referencia.
•
Negativa, si el punto se encuentra al oeste del meridiano central de referencia.
3. Modificaciones producidas por la excentricidad de la órbita terrestre y por la inclinación del eje polar con respecto a la eclíptica, lo cual provoca una modificación en la duración del día solar. Esto implica que un observador terrestre no encontraría el sol exactamente en el mismo punto 24 horas después. Esta modificación viene dada por la Ecuación del Tiempo: E t (d n )
= 229,18 ⋅ [0,000075 + 0,001868 ⋅ cos(Γ ) − 0,032077 ⋅ sen(Γ ) −
− 0,014615 ⋅ cos( 2Γ ) − 0,040849 ⋅ sen(2Γ )
donde Et viene dado en minutos, Γ es el ángulo diario en radianes y d n es el día juliano considerado.
Esta ecuación del tiempo introduce una modificación que varía cada día del año y que toma valores dentro del intervalo [-14 , +16]. Teniendo en cuenta todo lo anterior podemos concluir que la hora solar exacta de un punto de la superficie terrestre puede ser calculada a partir de la hora de reloj de dicho punto mediante la siguiente expresión: Hora _ Solar _ Exacta = ( Hora _ de _ reloj) + (Corrección _ Forzada) + + (4
min grado
⋅ ( Lr − L p )) + ( E t (d n ))
donde la Corrección Forzada es la modificación introducida en la hora local debido a la política de ahorro energético, Lr es la longitud del meridiano central de referencia del uso horario correspondiente, L p es la longitud del punto en el que queremos calcular la hora solar, y E t (d n ) es la ecuación del tiempo. Sin embargo, en nuestro equipo de medida, el reloj en tiempo real será sincronizado a la hora solar aproximada de su lugar de instalación, la cual viene dada por la siguiente expresión: Hora _ Solar _ Aproximada = ( Hora _ de _ reloj ) + (Corrección _ Forzada) + min + (4 ⋅ ( Lr − L p )) grado
Si comparamos esta expresión con la de la hora solar exacta veremos que ha sido suprimida la modificación correspondiente a la ecuación del tiempo. Aunque este hecho introduce un error en nuestra hora solar que puede variar dependiendo del día del año entre -14 minutos y + 16 minutos, este hecho se compensa parcialmente por el modo de funcionamiento del equipo de medida, el cual procederá a intentar realizar la medida de la pérdida de energía por suciedad cada día del año entre las 11:30:00 y las 12:30:00 hora solar aproximada. De esta forma el mediodía solar exacto quedará siempre incluido en el intervalo horario en el que nuestro equipo intentará realizar la medida. Por lo tanto, el reloj en tiempo real incluido en nuestro equipo de medida será sincronizado con la hora solar aproximada del lugar de instalación del equipo. A partir de aquí, el sistema será programado para que intente realizar una medida diaria de la pérdida de potencia por suciedad que se está produciendo en el sistema de módulos. Los intentos de realizar esta medida serán llevados a cabo a intervalos de 15 minutos y siempre dentro de un mismo
intervalo horario solar: entre las 11:30:00 y las 12:30:00 hora solar aproximada. Es decir, cada día del año, nuestro sistema procederá a realizar el primer intento de medida de la pérdida de potencia por suciedad a las 11:30:00 hora solar aproximada. Para ello, la alarma del RTC será programada para que genere a esta hora una interrupción que saque al microcontrolador del estado de pseudo-parada en el que se encuentra siempre que no está realizando medidas. Si en este primer intento de medida las condiciones ambientales y del equipo son las adecuadas para dar validez al resultado obtenido (en próximos apartados detallaremos las condiciones que deben darse para que nuestro equipo de medida considere aceptable un resultado obtenido), el equipo se reprogramará, de forma que el microcontrolador quedará en estado de pseudoparada hasta que el proceso vuelva a repetirse al día siguiente. Sin embargo, si las condiciones de medida que se presentan en este primer intento no son las adecuadas para que nuestro equipo dé validez al resultado obtenido, se procede a reprogramar la hora de la alarma del RTC de forma que se lleve a cabo otro intento de medida 15 minutos más tarde (es decir, a las 11:45:00 hora solar aproximada), quedando el micro en estado de pseudo-parada hasta dicho instante. Nuevamente, si en este nuevo intento de medida las condiciones son favorables para dar por válido el resultado obtenido, el microcontrolador reprogramará la alarma del RTC para que se active a las 11:30:00 hora solar aproximada del siguiente día, y se colocará en estado de pseudo-parada hasta ese instante. Sin embargo, si las condiciones de medida no son las adecuadas, la alarma del RTC será nuevamente reprogramada para que se active 15 minutos más tarde (a las 12:00:00 hora solar aproximada), colocándose el micro en pseudo-parada hasta dicho instante. Este proceso se repetirá nuevamente a las 12:15:00 y, por último, a las 12:30:00 hora solar aproximada. Si tras este último intento de medida no se han presentado las condiciones favorables para la obtención de la medida, el sistema pasará a reprogramarse para repetir el proceso al día siguiente. Con este esquema de funcionamiento hemos pretendido que las medidas que realice nuestro equipo sean llevadas a cabo aproximadamente dentro de un mismo intervalo solar horario, de forma que dos medidas consecutivas realizadas por el mismo estarán referidas a ángulos de incidencia solar lo más cercanos posible.
En nuestro equipo, la comunicación entre el microcontrolador y el reloj en tiempo real se llevará a cabo a través del módulo interfaz serie SPI explicado en apartados anteriores. En dicho interfaz, nuestro microcontrolador operará como dispositivo maestro mientras que el RTC lo hará como dispositivo esclavo. A la hora de implementar nuestro prototipo, hemos elegido como reloj en tiempo real el modelo DS3234SN de la empresa MAXIM (ver hoja de características en el CD adjunto al presente proyecto). Se trata de un reloj en tiempo real con oscilador de cristal compensado en temperatura y cristal integrado, que además dispone de 256 bytes de memoria RAM integrada. Como comentamos con anterioridad, las posiciones 00h y 01h de dicha memoria serán utilizadas por el sistema para almacenar los dos bytes de la dirección de la memoria EEPROM en la que deberá almacenarse el siguiente byte de resultado que obtenga el equipo. Además, también dispone de un bus SPI que puede operar a una frecuencia máxima de 4 MHz. En este modelo de RTC, un sensor integrado muestrea periódicamente la temperatura y ajusta la carga del oscilador para compensar la desviación del cristal causada por las variaciones de temperatura. Estas velocidades de muestreo son seleccionables por el usuario. Por todo ello, el oscilador de cristal compensado en temperatura suministra un reloj de referencia estable y exacto, y mantiene al RTC dentro de una exactitud de +/- 2 minutos por año dentro de un margen de temperatura de -40ºC a +85ºC. El DS3234 es un reloj / calendario de bajo consumo con 2 alarmas programables una vez al día. El pin INT/SQW proporciona: -
o una señal de interrupción debido a condiciones de alarma
-
o bien, una señal de salida de onda cuadrada.
En nuestro equipo, dicho pin será utilizado para generar una petición de interrupción externa en el micro cuando se active la alarma del RTC a la hora prefijada.
Para
ello
será
conectado
al
pin
INT0/P3.2
de
nuestro
microcontrolador. El reloj / calendario proporciona segundos, minutos, horas, día, fecha, mes y año. La fecha al final de cada mes es ajustada automáticamente para meses con menos de 31 días, incluyendo correcciones para años bisiestos. El reloj
puede operar en formato 24 horas o bien en formato 12 horas con indicador AM/PM. El acceso a los registros internos del RTC se realiza mediante el interfaz serie SPI, de forma que las direcciones y los datos son transferidos en forma serie a través de este bus bidireccional. Cuando la alimentación principal del dispositivo (V cc) se interrumpe, el aparato conmuta a la entrada de energía de apoyo (V bat), manteniéndose de esta forma la exactitud en el reloj y el contenido de los registros internos. Cuando el dispositivo funciona desde la fuente de energía de apoyo, el acceso al mismo es deshabilitado para minimizar la corriente de suministro. El funcionamiento del oscilador, la hora, la fecha y el contenido de los registros internos pueden continuar mientras la fuente de energía de apoyo alimenta al aparato. En la siguiente figura se muestra un diagrama de bloques de este dispositivo:
Figura 113. Diagrama de bloques del RTC elegido para la implementación de nuestro prototipo.
Como hemos comentado, el DS3234 proporciona 256 bytes de memoria de lectura / escritura de propósito general con alimentación apoyada por batería. Esta memoria RAM puede ser escrita o leída siempre que la tensión de alimentación V cc esté por encima de Vbat. En la siguiente figura se muestra el mapa de direcciones para los registros de tiempo de nuestro RTC y de la memoria RAM incorporada en el mismo:
Figura 114. Mapa de direcciones de los registros de tiempo del RTC y de la SRAM. Durante un acceso multibyte a los registros internos del RTC, cuando el puntero de direcciones alcanza el final del espacio de registros (dirección 13h para lectura y 93h para escritura), dicho puntero vuelve al comienzo (dirección
00h para lectura y 80h para escritura). De esta forma, el dispositivo no responde ni a lectura ni a escritura en ninguna dirección reservada, y el puntero de direcciones interno no se incrementa. Cuando se produce un flanco descendente de la señal CS, el tiempo actual es transferido a un segundo juego de registros, de forma que la información del tiempo es leída desde estos registros secundarios, mientras que los registros internos del reloj continúan incrementándose normalmente. Como se comentó anteriormente, el RTC trabaja como un aparato esclavo en el bus serie SPI. El acceso al dispositivo se obtiene seleccionando el componente mediante su pin CS y sincronizando la entrada y salida de datos del mismo mediante sus pines SCLK, DIN y DOUT. Las transferencias de múltiples bytes son permitidas dentro del periodo en el que la señal CS está a nivel bajo. El interfaz SPI estará accesible siempre que la tensión de alimentación principal V cc esté por encima de la tensión de apoyo V bat. La información del calendario y la hora se obtiene leyendo los bytes en los registros apropiados (ver figura anterior). Los datos de calendario y hora son actualizados o inicializados
escribiendo
los
bytes
en
los registros
correspondientes. Los contenidos de los registros de calendario y hora están en formato Digital Codificado en Binario (BCD). El dispositivo puede funcionar tanto en modo 12 horas como en modo 24 horas. El bit 6 del registro de horas está definido como el bit de selección de modo 12 horas / 24 horas. Cuando este bit está a nivel alto, está seleccionado el modo 12 horas. En este modo de funcionamiento, el bit 5 del registro de horas es el bit AM / PM, el cual se pone a 1 cuando es PM. Por el contrario, en el modo 24 horas, este quinto bit es el segundo bit de las decenas de las horas (20-23 horas). En nuestro equipo de medida el RTC operará en modo 24 horas. El bit CENTURY (bit 7 del registro de mes) es conmutado cuando el registro de años se desborda desde 99 a 00. El registro de día de la semana se incrementa a medianoche. Los valores que corresponden al día de la semana son definidos por el usuario pero deben mantener un orden secuencial. Entradas ilógicas de fecha y hora dan como resultado una operación indefinida.
Por otra parte, nuestro RTC incorpora 2 alarmas de fecha y hora, una de las cuales será utilizada en nuestro equipo para que los intentos de medida del equipo sean llevados a cabo a determinadas horas del día. Por un lado, la alarma 1 se puede configurar escribiendo en los registros 07h a 0Ah, mientras que la alarma 2 se puede configurar a través de los registros 0Bh a 0Dh. Ambas alarmas pueden ser programadas (mediante los bits de habilitación de alarma y el bit INTCN en el registro de control) para que se active la señal INT / SQW en una condición de coincidencia de alarma. Un aspecto importante a tener en cuenta en estas alarmas y que será utilizado en nuestro programa de funcionamiento del equipo, será que el bit 7 de cada uno de los registros de alarma de fecha y hora del día es un bit de máscara. Cuando todos los bits de máscara de cada alarma están en 0, una alarma sólo ocurre cuando los valores en los registros de tiempo coinciden con los valores correspondientes almacenados en los registros de alarma de fecha y hora del día. Sin embargo, mediante el uso de estos bits de máscara, las alarmas pueden también ser programadas para repetirse cada segundo, minuto, hora, día, o día del mes. En la siguiente tabla se muestran las posibles configuraciones:
Tabla 15. Bits de máscara de las dos alarmas incluidas en nuestro RTC. Por otro lado, los bits DY/DT (bit 6 de los registros de día/fecha de la alarma) controlan si el valor de alarma almacenado en los bits 0-5 de ese registro refleja el día de la semana (DY/DT = 1) o bien representa el día del mes (DY/DT = 0).
Cuando los valores de los registros del RTC coinciden con las configuraciones de los registros de la alarma, la bandera de alarma correspondiente (bits A1F o A2F) de pone a 1. Si el correspondiente bit de habilitación de la alarma (bits A1IE y A2IE) está puesto a 1 y el bit INTCN también está a 1, la condición de alarma activa la señal INT / SQW, poniéndose a nivel bajo dicho pin. La coincidencia entre registros de alarma y de reloj es muestreada en la actualización una vez por segundo de los registros de fecha y hora. Como ya hemos comentado en varias ocasiones a lo largo del texto, con el objetivo de minimizar el consumo de energía del equipo, nuestro microcontrolador será colocado en modo de pseudo-parada (Idle Mode) cuando no se encuentre realizando medidas. Esto implica que excepto en aquellos cortos periodos de tiempo en los que el sistema proceda a realizar un intento de medida, el microcontrolador permanecerá en este estado de pseudo-parada, estado en el cual, como explicamos en su momento, el reloj de la CPU permanece congelado en estados conocidos mientras que los periféricos continúan estando temporizados. Como se explicó entonces, una de las formas en las que el micro podía salir de este modo de parada era mediante la generación de una petición de interrupción por parte de una de las interrupciones habilitadas. Este será el caso de nuestro equipo de medida. En nuestro caso, la interrupción que sacará al micro de su estado de pseudoparada será la interrupción externa 0 (pin INT0/P3.2 del microcontrolador) cuyo terminal será conectado al terminal de salida INT/SQW de nuestro RTC. Con esta disposición y configurando adecuadamente los dos registros de control del reloj, conseguiremos que la alarma 1 del RTC saque al micro del estado de pseudo-parada a determinadas horas del día, momentos en los cuales el equipo procederá a realizar un intento de medida. Del mismo modo, una vez realizado dicho intento de medida, se procederá a realizar la reprogramación de la alarma 1 del RTC de forma que el proceso vuelva a repetirse a la hora adecuada en función del resultado de medida obtenido. Este proceso será explicado con mayor detalle en el apartado dedicado al programa de funcionamiento del equipo.
De esta forma, para conseguir lo anterior, el registro de control, el registro de control/estado y el registro de control de temperatura del RTC deberán ser configurados de la siguiente forma: 1. Registro de control: •
Bit EOSC de habilitación del oscilador: mediante este bit de control podemos configurar nuestro reloj para que el oscilador siga funcionando (EOSC=0) o se detenga (EOSC=1) cuando el dispositivo pasa a ser alimentado desde la batería auxiliar. En nuestra configuración inicial pondremos este bit a 0 con lo que el oscilador seguirá funcionando en modo batería.
•
Bit BBSQW de habilitación de la onda cuadrada de salida en modo de alimentación por batería: este bit es utilizado para configurar la señal de salida por la terminal INT/SQW del reloj. En nuestra configuración inicial dicho bit será puesto a 0 con lo que cuando la alimentación principal del equipo V cc esté ausente, dicho terminal pasará al estado de alta impedancia.
•
Bit CONV de conversión de temperatura: mediante este bit se configura el sensor de temperatura del RTC para que convierta la temperatura ambiente a formato digital y ejecute el algoritmo encargado de actualizar la matriz de capacitancia en el oscilador, con el objeto de compensar las variaciones en la frecuencia de oscilación por temperatura. En nuestra configuración inicial asignaremos el valor 0 a este bit, con lo que los ciclos de conversión de temperatura serán realizados cada 64 segundos.
•
Bits RS2, RS1 de selección de la frecuencia de la onda cuadrada de salida: mediante estos dos bits podemos configurar la frecuencia de la onda cuadrada de salida SQW cuando dicha onda ha sido habilitada mediante el bit INTCN. Puesto que en nuestro equipo esta onda cuadrada de salida será deshabilitada, estos dos bits no tienen ningún efecto
sobre el funcionamiento del mismo, por lo que podemos asignarle un valor arbitrario. •
Bit INTCN de control de la interrupción del RTC: mediante este bit podemos controlar el funcionamiento de la señal INT/SQW de nuestro reloj. De esta forma, cuando este bit está a 0, la salida de dicho pin es una onda cuadrada. Por el contrario, cuando está a 1, una coincidencia entre los registros de temporización y los registros de alarma activa la señal INT/SQW (suponiendo que la alarma está también habilitada). La correspondiente bandera de alarma (A1F o A2F) es siempre activada sin tener en cuenta el estado de este bit. En nuestra configuración inicial este bit será puesto a 1, con lo que la terminal INT/SQW del RTC será usada para provocar en el micro una interrupción que lo saque del estado de pseudo-parada.
•
Bit A2IE de habilitación de la interrupción de la alarma 2: la activación de este bit permite que la bandera de la alarma 2 (bit A2F) en el registro de estado active la salida INT/SQW (suponiendo que el bit INTCN=1). Cuando este bit está a 0 o bien el bit INTCN está a 0, el bit A2F no inicia una señal de interrupción. Este bit está deshabilitado (nivel 0) cuando la alimentación se aplica por primera vez. Puesto que en nuestro equipo no vamos a utilizar la alarma 2 del RTC, inicialmente configuraremos este bit con el valor 0.
•
Bit A1IE de habilitación de la interrupción de la alarma 1: al igual que en el caso anterior, la activación de este bit permite que la bandera de la alarma 1 (bit A1F) en el registro de estado active la señal de salida INT/SQW (suponiendo activado el bit INTCN) cuando se produzca una condición de alarma. Este bit será activado en nuestro programa de funcionamiento del equipo una vez que haya sido configurada la hora a la que debe activarse la alarma.
2. Registro de control/estado: •
Bit OSF de bandera de parada del oscilador: este bit puede ser usado para juzgar la validez de los datos de temporización ya que se pone a 1 en cualquier momento en el que el oscilador se para. Este bit no será utilizado en nuestro programa de funcionamiento por lo que podremos asignarle inicialmente un valor arbitrario.
•
Bit BB32kHz de habilitación de la señal de salida 32kHz cuando el RTC está alimentado con batería: cuando este bit está a 1, habilita la señal de salida de 32kHz cuando el RTC es alimentado desde la batería. Por el contrario, un 0 en este bit hace que la señal 32kHz permanezca a nivel bajo cuando el componente es alimentado desde batería. En nuestro programa, el valor asignado a este bit es indiferente ya que la señal de salida 32kHz será deshabilitada.
•
Bits CRATE1 , CRATE0 de control de la velocidad de muestreo del sistema de compensación por temperatura incorporado en el RTC: mediante estos dos bits determinamos la velocidad de muestreo de este sistema. En nuestra configuración inicial, estos dos bits serán puestos a 0, con lo que la velocidad de muestreo quedará fijada en 64 segundos.
•
Bit EN32kHz de habilitación general de la señal de salida 32kHz: este bit permite habilitar (EN32kHz=1) o deshabilitar (EN32kHz=0) la señal de salida 32kHz de nuestro RTC. En nuestra configuración inicial este bit será puesto a 0, con lo que dicho pin permanecerá a nivel bajo en todo momento.
•
Bit BSY de ocupado: este bit es utilizado por el dispositivo para indicar que está ocupado ejecutando las funciones del sistema de compensación por temperatura. En nuestra configuración inicial, este bit será puesto a 0.
•
Bit A2F de bandera de activación de la alarma 2: este bit es activado por el hardware del RTC cuando los registros de la hora del reloj coinciden con los correspondientes registros de la alarma 2. Cuando esto ocurre, si los bits A2IE e INTCN están activados, el pin INT/SQW del RTC es puesto a nivel bajo. Este pin permanecerá en este nivel bajo hasta que este bit A2F sea borrado por software. Puesto que nosotros en nuestro programa no vamos a usar la alarma 2, en nuestra configuración inicial pondremos este bit a 0.
•
Bit A1F de bandera de activación de la alarma 1: al igual que en el caso anterior, este bit es activado por el hardware del RTC cuando se produce una coincidencia entre los registros de hora y fecha del reloj y los correspondientes registros de la alarma 1. En el caso de que los bits A1IE e INTCN estén activados, el pin INT/SQW del RTC pasará a nivel bajo, permaneciendo en este estado hasta que este bit de bandera A1F sea borrado por software. En nuestra configuración inicial de los registros del RTC, este bit será puesto a 0.
3. Registro de control de temperatura •
Bit BB_TD de deshabilitación de conversión de temperatura en modo de alimentación por batería: este bit previene conversiones de temperatura automáticas cuando el RTC es alimentado con el suministro de batería. En nuestra configuración inicial de los registros del RTC, este bit será puesto a 1, con lo que dichas conversiones quedan deshabilitadas, con el consiguiente ahorro de energía en la batería.
Con respecto a la memoria RAM incorporada en el RTC, el registro de direcciones proporciona la dirección de 8 bits de la matriz de memoria de 256 bytes. Como ya se ha comentado, en las direcciones 00h y 01h de dicha
memoria serán almacenados los dos bytes que forman la dirección de la memoria EEPROM del microcontrolador en la que deberá llevarse a cabo el siguiente almacenamiento de un byte de resultado de medida. Para acceder a esta memoria, la dirección de memoria a la que se quiere tener acceso debería escribirse en este registro de direcciones antes de que se acceda al registro de datos. Los contenidos de este registro de direcciones son automáticamente incrementados si el registro de datos es accedido más de una vez durante una transferencia de datos simple. Cuando el contenido del registro de direcciones alcanza el valor FFh, el siguiente acceso provoca que el registro se reinicie a 00h. Por otro lado, el registro de datos de esta memoria proporciona el dato que debe ser escrito o el dato leído de la matriz de 256 bytes que la forman. Durante un ciclo de lectura, los datos en este registro son los que se encuentran en la ubicación de memoria definida por el registro de direcciones de la RAM. Por el contrario, durante un ciclo de escritura, los datos en este registro son colocados en la ubicación de memoria definida por el registro de direcciones. Un aspecto muy importante a tener en cuenta a la hora de acceder a los registros de la memoria RAM del RTC es que cuando el registro de datos es escrito o leído, el puntero de registros interno permanece en esta dirección mientras que el registro de direcciones se incrementa después de que cada byte haya sido leído o escrito, lo cual permite realizar transferencias multibyte desde esta memoria. Finalmente, el DS3234 suministra un bus de datos serie SPI de 4 cables a través del cual se llevará a cabo la comunicación con el microcontrolador. Este dispositivo soporta tanto transferencias de byte simples como multibyte para obtener máxima flexibilidad. Los pines DIN y DOUT del RTC son los pines de entrada y salida de datos serie, respectivamente. Por lo tanto, en nuestro equipo, el pin DIN estará conectado al terminal MOSI/P4.4 del micro, mientras que el pin DOUT lo será al terminal MISO/P4.2. Por otro lado, la entrada de selección de dispositivo CS es usada para iniciar y terminar una transferencia de datos. En nuestro equipo dicho pin será controlado por el terminal P4.0 del microcontrolador. Finalmente, el pin SCLK es usado para sincronizar el movimiento de datos entre el dispositivo maestro (microcontrolador) y el aparato esclavo (RTC). En nuestro equipo, dicho pin será conectado al terminal
SCK/P4.3 del micro. Esta señal de reloj, la cual es generada por el microcontrolador, está activa solamente durante la transferencia de datos y direcciones entre el micro y el RTC por el bus SPI. Los datos de entrada al RTC, los cuales llegan a éste a través de su terminal DIN, son almacenados en el flanco del pulso interno, mientras que los datos de salida, los cuales salen del RTC a través de su terminal DOUT, son enviados en el flanco de envío. Existe un reloj para cada bit transferido. Los bits de direcciones y datos son transferidos de byte en byte, con el MSB en primer lugar, hacia la entrada de datos serie (DIN) o desde la salida de datos serie (DOUT). Cualquier transferencia por el bus SPI necesita la dirección del byte para especificar una lectura o una escritura, seguido por uno o más bytes de datos. Los datos son transferidos desde el pin DOUT para una operación de lectura, y hacia el pin DIN para una operación de escritura. En las dos siguientes figuras aparecen representadas las operaciones de lectura y escritura de un byte simple de la RAM del RTC:
Figura 115. Operación de escritura de un byte simple en la RAM del RTC.
Figura 116. Operación de lectura de un byte simple en la RAM del RTC.
El byte de dirección es siempre el primer byte introducido después de que la señal de selección de dispositivo CS ha sido puesta a nivel bajo por el microcontrolador (dispositivo maestro). El MSB de este byte determina si va a tener lugar una operación de lectura o una operación de escritura: -
Si el MSB del byte de dirección es 0, entonces se producirán uno o más ciclos de lectura
-
Por el contrario, si el MSB de este byte de dirección es 1, entonces se producirán uno o más ciclos de escritura.
Las transferencias de datos entre el microcontrolador y el RTC a través del bus SPI pueden producirse un byte cada vez, o bien en modo avalancha de múltiples bytes. Después de que la señal CS ha sido puesta a nivel bajo, una dirección es escrita en el RTC. Después de la dirección, uno o más bytes de datos pueden ser escritos o leídos: -
Para una transferencia de un byte simple, un byte es leído o escrito después de que la dirección haya sido escrita, y entonces la señal CS pasa a nivel alto.
-
Sin embargo, para una transferencia de múltiples bytes, varios bytes pueden ser leídos o escritos después de que la dirección haya sido escrita.
Cada ciclo de lectura o escritura en la memoria RAM del RTC provoca que la dirección de los registros RTC se incremente automáticamente, lo cual continúa produciéndose hasta que el reloj es deshabilitado. Durante una lectura, después de un incremento en la dirección 13h, ésta cambia a 00h. De la misma forma, durante una escritura, después de un incremento en la dirección 93h, ésta cambia a 80h. Una copia actualizada de la hora es cargada en los buffers de usuario en cada flanco descendente de la señal CS y cada vez que el puntero de direcciones se incrementa desde 13h hasta 00h. Si se accede a la memoria RAM del RTC para lectura (dirección 19h) o para escritura (dirección 99h) del registro de datos de esta memoria, los contenidos de su registro de direcciones serán automáticamente incrementados tras el primer acceso, y todos los ciclos de datos usarán el registro de datos SRAM.
Como se comentó al comienzo de este apartado, en nuestro equipo de medida el RTC será sincronizado con la hora solar aproximada de su lugar de instalación. Para llevar a cabo esta “puesta en hora solar aproximada” del RTC deberemos acceder a sus registros internos correspondientes a los segundos, los minutos, las horas, el día del mes, el mes/siglo y el año. Dicho proceso puede ser llevado a cabo a través del mismo microcontrolador previamente a la puesta en funcionamiento del equipo, de forma que éste ejecute un programa en el que, a través del bus SPI, se vayan enviando secuencialmente al RTC las direcciones para escritura de estos registros junto con los bytes de hora y fecha correspondientes. Una vez que hayamos puesto en hora el RTC, la fuente de energía de apoyo mantendrá los contenidos de estos registros aunque desconectemos el suministro de energía principal del equipo. Por otro lado, en nuestro programa de funcionamiento del equipo se llevará a cabo una configuración inicial de los registros de control y estado de este
dispositivo,
mientras
que
la
configuración
de
los
registros
correspondientes a la alarma 1 será llevada a cabo por diferentes subrutinas dependiendo de la evolución del intento de medida. Esto será explicado con mayor detalle en el apartado correspondiente al funcionamiento del equipo de medida.
1.1.1.4
LA SEÑALIZACIÓN EXTERIOR DEL EQUIPO
Con el objetivo de que el resultado de la última medida llevada a cabo por el equipo sea visible desde el exterior del mismo, hemos añadido al diseño del equipo un conjunto de 7 diodos LEDs, los cuales serán visibles a través de una serie de cubre-LEDs instalados en una de las caras laterales de la caja que contiene el equipo. Cada uno de estos diodos LEDs tendrá asociado un determinado significado, de forma que en cualquier momento únicamente estará encendido uno de ellos indicando el resultado que el sistema ha obtenido en la última medida realizada. Los significados asociados a cada uno de ellos son los siguientes: 1. LED de problema: cuando este LED se encuentra encendido significa que durante el último intento de realización de medida llevado a cabo por el equipo, se ha presentado alguna de las circunstancias siguientes:
•
No ha sido posible posicionar el disco de protección en su posición correcta para la realización de la medida. Esto puede estar debido a problemas en el sistema de accionamiento del disco, motor por pasos estropeado, disco atascado, etc.
•
No existe un mínimo de 2 fotodiodos sucios no sombreados. Esto implica que, de los 4 fotodiodos sucios de los que dispone nuestro equipo, al menos 3 de ellos están afectados por suciedad local concentrada, como puede ser la procedente de las aves.
•
Las medidas de irradiancia obtenidas tras las dos zonas del cri stal frontal del equipo son ilógicas. Esta circunstancia se produciría cuando la lectura de irradiancia correspondiente a la porción sucia del cristal fuese mayor que la correspondiente a la porción limpia, y la diferencia entre ambas lecturas no pudiera ser debida a la tolerancia de los componentes que forman los circuitos de medición de irradiancia. Esto implicaría que la porción limpia del cristal presenta mayor nivel de suciedad que la sucia.
2. LED de perdida de potencia por suciedad entre 0 y 2% : cuando este LED se encuentra encendido significa que en la última medida realizada por el equipo, el porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC obtenido en dicha medida se encuentra entre un 0 y un 2 por ciento. 3. LED de pérdida de potencia por suciedad entre un 2 y un 4% : cuando este LED se encuentra encendido significa que en la última medida realizada por el equipo, el porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC obtenido en dicha medida se encuentra entre un 2 y un 4 por ciento. 4. LED de pérdida de potencia por suciedad entre un 4 y un 6% : cuando este LED se encuentra encendido significa que en la última medida realizada por el equipo, el porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC obtenido en dicha medida se encuentra entre un 4 y un 6 por ciento. 5. LED de pérdida de potencia por suciedad entre un 6 y un 8% : cuando este LED se encuentra encendido significa que en la última
medida realizada por el equipo, el porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC obtenido en dicha medida se encuentra entre un 6 y un 8 por ciento. 6. LED de pérdida de potencia por suciedad entre un 8 y un 10% : cuando este LED se encuentra encendido significa que en la última medida realizada por el equipo, el porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC obtenido en dicha medida se encuentra entre un 8 y un 10 por ciento. 7. LED de pérdida de potencia por suciedad mayor del 10% : cuando este LED se encuentra encendido significa que en la última medida realizada por el equipo, el porcentaje de pérdida de potencia por suciedad normalizado a condiciones STC obtenido en dicha medida se encuentra por encima del 10 por ciento. Como se ha explicado en el apartado anterior, nuestro equipo de medida intentará realizar cada día una medida del porcentaje de la pérdida de energía que se está produciendo en el sistema fotovoltaico debido a la suciedad presente. Para ello, nuestro reloj en tiempo real será sincronizado a la hora solar aproximada del lugar de instalación, mientras que una de sus alarmas será programada para que genere una petición de interrupción al microcontrolador a las 11:30:00 horas. Como respuesta a esta petición de interrupción, el micro saldrá del estado de pseudo-parada en el que se encontraba y ejecutará la rutina de servicio de interrupción correspondiente. Tras ello, procederá a realizar el primer intento de medida del día. Como explicaremos posteriormente con mayor detalle en el apartado dedicado al funcionamiento del equipo, para que el sistema dé por válido un resultado de medida deben verificarse una serie de condiciones que otorguen validez al mismo en función a las consideraciones que se han tenido en cuenta en el desarrollo del algoritmo de cálculo utilizado en la medida. En el caso de que dichas condiciones se cumplan, el microcontrolador procederá en primer lugar a almacenar los 3 bytes que conforman cada resultado de medida (byte correspondiente al porcentaje de pérdida obtenido, byte correspondiente al mes de la medida y byte correspondiente al día del mes de la misma) en la dirección adecuada de su memoria EEPROM. Para ello, antes de realizar este
almacenamiento, habrá leído el contenido de las direcciones de memoria 00h y 01h de la RAM del RTC, las cuales contienen la dirección de la EEPROM en la que debe ser almacenado el siguiente byte de resultado. Tras haber almacenado estos tres bytes en la memoria EEPROM, serán almacenados en las direcciones de memoria 00h y 01h de la RAM del RTC los dos bytes correspondientes a la dirección de la EEPROM en la que deberá ser almacenado el siguiente byte de resultado que el sistema obtendrá en la siguiente medida que lleve a cabo. De esta forma, como ya ha sido explicado, las posiciones 00h y 01h de la RAM del RTC funcionarán como un puntero de datos de tamaño 2 bytes que contendrá en todo momento la dirección de la memoria EEPROM en la que deberá ser almacenado el resultado de la siguiente medida que realice el equipo. Una vez concluida esta operación, procederá a reprogramar el RTC para que su alarma se active nuevamente a las 11:30:00 del día siguiente. Por último, antes de colocarse nuevamente en estado de pseudo-parada hasta el instante en el que se produzca la siguiente petición de interrupción, el micro encenderá el diodo LED correspondiente en función del resultado obtenido en la medida. Por el contrario, si las condiciones de medida no son las adecuadas para que el equipo dé por bueno el resultado obtenido, el micro procederá a reprogramar el RTC para que su alarma se active 15 minutos más tarde (es decir, a las 11:45:00) y pasará a colocarse en estado de pseudo-parada hasta ese momento. Pasados estos 15 minutos, la alarma del RTC volverá a activarse, sacando al micro de su estado de pseudo-parada para que vuelva a realizar un nuevo intento de medida. Este proceso se repetirá a intervalos de 15 minutos hasta las 12:30:00 horas, momento en el cual el equipo intenta llevar a cabo el último intento de medida del día. Si tras este intento las condiciones de medida siguen siendo inadecuadas, el micro reprograma el RTC para que se active a las 11:30:00 horas del día siguiente y se coloca en estado de pseudo-parada hasta ese momento. Por lo tanto, teniendo en cuenta este modo de funcionamiento podemos deducir que el diodo LED que se encuentre encendido en un instante determinado en nuestro equipo de medida nos estará informando del resultado que éste ha obtenido en el último intento de medida realizado.
Para la implementación en nuestro prototipo de este sistema de diodos LEDs de indicación exterior hemos elegido LEDs de alta eficiencia de 5mm modelo HLMP-4700 de la marca Hewlett Packard (su hoja de características puede ser consultada en el CD adjunto al presente proyecto). Puesto que dichos
LEDs
serán
controlados
por
pines
de
puerto
de
nuestro
microcontrolador, para no exceder la corriente de entrada máxima que pueden soportar dichos puertos, hemos añadido a cada uno de ellos una resistencia limitadora de corriente de 1,3 kΩ de valor nominal. Se trata de resistencias estándar de carbón aglomerado del 5% de tolerancia y potencia nominal 1/8W.
1.1.1.5
LA ALIMENTACIÓN DEL MOTOR PASO A PASO
Como comentamos cuando detallábamos el diseño exterior de nuestro equipo de medida, el disco de protección encargado de mantener limpia una porción del cristal frontal del equipo será accionado por un motor paso a paso cuyo accionamiento será controlado por el microcontrolador. La utilización de este tipo de motor nos permitirá posicionar de forma precisa dicho disco. A diferencia de los motores convencionales de corriente continua, un motor paso a paso se mueve en incrementos o pasos precisos. En la mayoría de los casos, este tipo de motores tiene una parte móvil llamada rotor, la cual se fabrica por lo general a partir de un material magnético permanente (en el caso de los motores paso a paso de imanes permanentes). Este rotor está rodeado por el estator, el cual es un electroimán elaborado con dos bobinados alrededor de algunos polos conductores. En el caso de los motores unipolares de 6 hilos (como el elegido para la implementación de nuestro prototipo), estos dos bobinados del estator tienen una toma central, las cuales serán conectadas a masa en nuestro equipo de medida. De esta forma, el movimiento de giro del rotor se consigue energizando en el orden correcto las bobinas del estator. Un aspecto muy importante de los motores paso a paso consiste en este orden de energización de las bobinas estatóricas ya que si en un determinado orden el rotor gira en el sentido de las manecillas del reloj, si energizamos las bobinas en orden inverso, el rotor pasará a girar en sentido contrario. Para la implementación de nuestro prototipo hemos elegido un motor de imanes permanentes de la marca McLennan Servo Supplies Ltd perteneciente a la serie P542-M48. Se trata de un motor de corriente continua unipolar, 12V
de tensión nominal, 230 mA de corriente por fase y un ángulo de paso de 7,5º. Además, con el objetivo de aumentar el par de accionamiento del motor, le hemos incorporado una caja reductora de relación 125:1, lo que aumenta dicho par hasta los 100 N.cm (la hoja de características de este dispositivo puede ser consultada en el CD adjunto al presente proyecto). La inclusión de esta caja reductora implica que para realizar un giro completo en nuestro disco de protección deberemos aplicarle al motor un total de 6000 pasos a una frecuencia máxima de 300 Hz. Sin embargo, con el objetivo de introducir un margen de seguridad suficiente en la frecuencia de trabajo del motor, nuestro programa de funcionamiento del sistema establecerá una frecuencia de excitación para las bobinas del motor de 200 Hz utilizando para ello una subrutina de retardo de 5 ms entre la aplicación de un paso y el siguiente. La excitación de las bobinas del motor será llevada a cabo a través de 4 terminales de puerto del microcontrolador. Sin embargo, la conexión de estos 4 terminales de puerto a los bobinados del motor debe llevarse a cabo a través de un controlador de motor paso a paso, ya que las corrientes de las terminales de puerto del microcontrolador no son suficientes para excitar dichos bobinados. En la implementación de nuestro prototipo del equipo de medida, hemos optado por utilizar el modelo SN754410 de la empresa Texas Instruments (la hoja de datos de este componente puede ser consultada en el CD adjunto al presente proyecto). Se trata de un driver cuádruple de alta corriente que es capaz de entregar hasta 1A de corriente por driver y que está especialmente diseñado para aplicaciones de alimentación de motores. Además de esto, permite un amplio rango de variación para la tensión de alimentación del motor (entre 4,5 y 36V) y dispone de dos entradas separadas de suministro de tensión (V CC1 para las entradas lógicas y V CC2 para las salidas de alimentación hacia las bobinas del motor). En este dispositivo, además de las entradas lógicas (1A, 2A, 3A y 4A) y de las salidas correspondientes (1Y, 2Y, 3Y y 4Y), el componente dispone de dos estradas de habilitación (1,2EN y 3,4EN) cada una de las cuales sirve para habilitar una pareja de drivers. De esta forma, cuando una de estas entradas de habilitación está en nivel alto, los drivers correspondientes estarán habilitados y sus salidas pasarán a estar activas y en fase con sus entradas. Por el contrario, cuando la entrada de
habilitación está a nivel bajo, los drivers correspondientes estarán deshabilitados y sus salidas estarán desconectadas y en un estado de alta impedancia. Como ya hemos comentado, este dispositivo dispone de un voltaje de suministro independiente (V CC1) para la alimentación de los circuitos de las entradas lógicas (1A, 2A, 3A, 4A, 1,2EN y 3,4EN), con el objetivo de minimizar la disipación de potencia en el aparato. Por otra parte, el voltaje de alimentación V CC2 será usado para los circuitos de salida.
1.1.1.6
LA ALIMENTACIÓN DEL EQUIPO
Nuestro equipo ha sido diseñado para ser alimentado con una tensión continua de +12V, la cual puede proceder de una batería o de cualquier otro elemento generador. Por otro lado, puesto que la mayor parte del tiempo de funcionamiento del equipo (excepto en aquellos momentos en los que éste se encuentre realizando una medida) varios de sus componentes no serán usados (amplificadores operacionales de los circuitos de medición de irradiancia y drivers de alimentación del motor paso a paso), con el objetivo de reducir el consumo energético, hemos introducido en nuestro diseño un relé de estado sólido (SSR) que nos va a permitir suspender la alimentación de estos elementos cuando no están siendo usados por el equipo. De esta forma, la entrada de carga de dicho relé (+DCLOAD) será conectada a la entrada de alimentación de +12V, mientras que su salida (-DCLOAD) será utilizada, por un lado, para alimentar directamente la entrada V CC2 del driver de alimentación del motor paso a paso, y por otro lado, será conectada a un regulador de tensión de +5V cuya tensión de salida será utilizada para alimentar tanto a los operacionales de los circuitos de medición de irradiancia como a la entrada de alimentación VCC1 de los circuitos lógicos de entrada de los drivers. Esta configuración permite que, cuando el equipo entre en estado de reposo a la espera de que llegue el momento de llevar a cabo el siguiente intento de medida, el microcontrolador desconecte la alimentación tanto de los amplificadores operacionales como de los drivers de alimentación del motor, consiguiéndose de esta forma un consumo energético menor del equipo. La entrada de control de este relé de estado sólido será controlada por un terminal de puerto del microcontrolador a través de un transistor PNP cuyo
terminal de emisor será conectado a la tensión de alimentación de +5V. De esta forma, conectando el terminal de puerto a la base del transistor y colocando entre ellos una resistencia de valor adecuado, podemos conseguir que dicho transistor pase del estado de corte al estado de saturación cuando el nivel lógico del terminal cambia de 1 a 0. Conectando ahora el terminal de colector del transistor a la entrada +DCCONTROL del relé de estado sólido y la entrada –DCCONTROL a masa, conseguimos activar o desactivar la salida del relé poniendo simplemente el terminal de puerto que lo controla a 0 o 1, respectivamente. Por otra parte, el resto de los componentes del equipo será alimentado a través de un segundo regulador de tensión de +5V cuya entrada será conectada a la entrada de alimentación de + 12V. Para la implementación del prototipo de nuestro equipo de medida hemos utilizado reguladores de tensión modelo KA78T05 de la empresa Fairchild Semiconductor, mientras que el transistor elegido para el control del relé de estado sólido ha sido el modelo BC327 de la empresa NXP. Por otro lado, el relé de estado sólido seleccionado ha sido el modelo DMO063 de la empresa CRYDOM (las hoja de datos de estos componentes pueden ser consultadas en el CD adjunto al presente proyecto).
1.1.2
ESTUDIO DE LOS MÓDULOS FOTOVOLTAICOS DE LA INSTALACIÓN
El objetivo de nuestro equipo de medida es la determinación de la pérdida de energía que en un instante determinado se está produciendo en una instalación fotovoltaica debido a la suciedad depositada sobre la superficie de los módulos planos que la componen. Como ya se ha comentado en varias ocasiones, el efecto de dicha suciedad es el de reducir la cantidad de irradiancia solar que reciben las células que componen el módulo, lo que produce una disminución en la energía generada por el mismo. Puesto que la energía generada por un módulo es aproximadamente proporcional a la irradiancia que reciben sus células, existirá una relación aproximadamente lineal entre la cantidad de suciedad depositada sobre el módulo y la pérdida de energía que se produce en el mismo.
Esta pérdida energética por suciedad tradicionalmente ha sido determinada como el incremento (expresado en %) que experimenta la corriente de cortocircuito del módulo cuando pasa de estar sucio a estar limpio. Para llevar a cabo esta medida, primeramente se determina la corriente de cortocircuito que entrega el módulo sucio, para posteriormente proceder a su limpieza y medir nuevamente dicha corriente. Este método de cálculo que relaciona el porcentaje de pérdida de potencia por suciedad en el módulo con el porcentaje de pérdida de corriente de cortocircuito en el mismo, tiene su fundamento en la forma en la que las variables eléctricas de salida de un módulo (corriente de cortocircuito I SC, y tensión de circuito abierto V OC) varían con la irradiancia incidente. En la figura 5 se representaba el comportamiento de ambas variables frente a variaciones en la irradiancia incidente. En esta figura se muestra como la corriente de cortocircuito varía de forma lineal con la irradiancia, mientras que la tensión de circuito abierto presenta un comportamiento logarítmico frente a esta variable. Sin embargo, observando la curva de VOC podemos comprobar como para valores de irradiancia elevados, la tensión de circuito abierto del módulo tiende a hacerse constante. Sin embargo, en nuestro equipo de medida las pérdidas energéticas por suciedad serán calculadas como el porcentaje de potencia que el módulo está dejando de generar debido a este factor. Como explicamos cuando hablábamos
del
funcionamiento
de
los
módulos
fotovoltaicos,
el
comportamiento eléctrico de un módulo viene determinado por sus curvas I-V, cada una de las cuales está formada por los diferentes puntos de trabajo en los que puede operar el módulo para cada pareja de valores: (Irradiancia G, Temperatura de célula T C). De esta forma, para cada curva I-V, el punto de trabajo en el que opera el módulo vendrá determinado por la resistencia de carga conectada al mismo. En cada uno de estos puntos de trabajo, la potencia que genera el módulo vendrá dada por el producto de la corriente de salida (ordenada del punto de trabajo) por la tensión de salida (abscisa del punto de trabajo). Dentro de una curva I-V, existirá un determinado punto de trabajo en el que dicho producto es máximo, el cual recibe el nombre de Punto de Máxima Potencia (PMP) de la curva. Es muy común que las instalaciones fotovoltaicas dispongan de un dispositivo denominado Seguidor del Punto de Máxima Potencia cuya función es conseguir que el sistema de módulos opere en todo
momento en dicho punto, independientemente de la resistencia de carga. Por esta razón, en nuestro equipo de medida hemos considerado que los módulos de la instalación operarán siempre en dicho punto de trabajo. Teniendo presente lo anterior, si ahora tenemos en cuenta que, de las dos variables que definen el comportamiento del módulo, Irradiancia Incidente y Temperatura de célula, sólo la primera de ellas se ve afectada por la presencia de suciedad, podemos deducir que la pérdida de potencia por suciedad en un módulo vendrá determinada por la disminución que se produce en la potencia máxima de salida del mismo ocasionada por la pérdida de irradiancia que se produce debido a este factor. Es decir, si la suciedad depositada sobre la superficie del módulo ocasiona una determinada disminución en la irradiancia incidente que reciben las células, la pérdida de potencia por suciedad será igual a la disminución de la potencia máxima de salida del módulo asociada a dicha disminución de irradiancia. En nuestro equipo de medida, esta disminución en la irradiancia incidente debida a la suciedad será determinada mediante 8 circuitos de medición de irradiancia, cuyos sensores estarán situados convenientemente tras el cristal frontal del equipo. De esta forma, 4 de estos sensores estarán situados tras la parte “sucia” del cristal, mientras que el resto estará situado tras la parte de cristal que se mantiene aproximadamente limpia gracias al disco de protección. Con el objetivo de minimizar las desviaciones en las medidas de irradiancia debidas a la tolerancia de los componentes de los circuitos de medición, la irradiancia incidente tras ambas zonas del cristal será calculada como el valor medio de los valores individuales de irradiancia que miden ambos grupos de sensores. A partir de aquí, la pérdida de irradiancia incidente debido a la suciedad vendrá dada por la diferencia entre estos dos valores medios. Ahora bien, una vez que hemos determinado la pérdida de irradiancia que se produce debido a la suciedad, para que los resultados de las medidas realizadas por nuestro equipo sean comparables entre sí, todos ellos deberían estar referidos a un mismo valor de irradiancia incidente. Puesto que la mayor parte de las características de un módulo vienen dadas en Condiciones STC, los resultados de nuestro equipo de medida estarán referidos a un valor de irradiancia incidente de 1000 W/m 2 y a una temperatura de célula de 25 ºC. Para llevar a cabo esta normalización de resultados se ha considerado que,
para un determinado nivel de suciedad presente en el módulo, la pérdida de irradiancia debida a este factor se mantiene constante frente al nivel de irradiancia existente fuera del módulo; es decir, si para un determinado valor de irradiancia incidente se produce una determinada pérdida de la misma debido a la suciedad, en nuestro equipo de medida hemos considerado que dicha pérdida de irradiancia sería la misma si el nivel de irradiancia existente fuese de 1000 W/m 2. El error introducido por esta consideración se reduce si tenemos en cuenta que nuestro equipo sólo llevará a cabo medidas cuando el nivel de irradiancia existente sea mayor o igual a 800 W/m 2. Esta traslación de las medidas obtenidas para dar el resultado normalizado a un valor de irradiancia incidente de 1000 W/m 2 está representada en la siguiente figura:
Figura 117. Consideraciones que se realizan en nuestro equipo de medida para normalizar los resultados obtenidos a una irradiancia incidente de 1000 W/m 2. En la figura anterior se tiene que: -
Gsucio = Irradiancia incidente medida por el equipo tras la parte de cristal sucio.
-
Glimpio = Irradiancia incidente medida por el equipo tras la parte de cristal limpio.
-
∆G = Pérdida en la irradiancia incidente debida a la suciedad.
-
Po,sucio = Potencia máxima que el módulo genera para una irradiancia incidente de valor G sucio y una temperatura de célula de 25ºC.
-
Po,limpio = Potencia máxima que el módulo genera para una irradiancia incidente de valor G limpio y una temperatura de célula de 25ºC.
-
∆Po = Pérdida de potencia que se produce en el módulo debido a la suciedad depositada sobre el mismo.
-
P´o,sucio = Potencia máxima que el módulo genera para una irradiancia incidente de valor (1000 - ∆G) y una temperatura de célula de 25ºC.
-
P´o,limpio = Potencia máxima que el módulo genera para una irradiancia incidente de 1000 W/m 2 y una temperatura de célula de 25ºC.
Por lo tanto, nuestro equipo proporcionará como resultado de medida el porcentaje de potencia que el módulo está dejando de producir debido a la suciedad depositada sobre su superficie, normalizado a un valor de irradiancia incidente de 1000 W/m 2 y una temperatura de célula de 25ºC. Si tenemos en cuenta los símbolos utilizados en la figura anterior, dicho resultado de medida vendrá definido por la siguiente expresión: Pérdida _ Potencia _ por _ suciedad (%) G=1000W / m2 ,T = 25ºC = c
=
∆ P o
P ´o,lim pio
P ´0,lim pio − P ´o, sucio P ´o,lim pio
⋅ 100 =
⋅ 100
Teniendo en cuenta todo lo anterior, se hace necesario realizar un estudio del comportamiento del punto de máxima potencia de los módulos de la instalación frente a la irradiancia incidente, que nos permita determinar la potencia máxima que es capaz de generar un módulo en función de esta variable de funcionamiento. Debemos recordar en este punto que, dada cualquier curva I-V de un módulo fotovoltaico, la potencia máxima que puede generar el módulo en las condiciones de funcionamiento que definen dicha
curva es igual al producto de la corriente y la tensión de salida del módulo en el punto de máxima potencia de dicha curva: P max
G ,Tc
I PMP
=
G ,Tc
V PMP
⋅
G ,Tc
En la siguiente figura se representa una gráfica que nos muestra la curva de variación del punto de máxima potencia en función de la irradiancia incidente para un módulo fotovoltaico típico:
Figura 118. Curva de variación del punto de máxima potencia en función de la irradiancia incidente. Si observamos detenidamente la figura anterior podemos ver como para valores elevados de la irradiancia incidente, la pendiente de la curva de potencia máxima tiende a hacerse infinita. Este hecho implica que para valores elevados de la irradiancia incidente se verifica que: -
Por un lado, la tensión de salida del módulo en el punto de máxima
potencia,
VPMP,
se
mantiene
prácticamente
constante. -
Por otro lado, la corriente de salida del módulo en el punto de máxima potencia, IPMP, varía de forma proporcional a la irradiancia incidente.
Por lo tanto, de todo lo anterior podemos concluir que para valores elevados de irradiancia incidente, la potencia máxima de salida del módulo varía aproximadamente de forma proporcional a la irradiancia incidente. Esta relación lineal entre ambas variables es debida a que la tensión V PMP permanece aproximadamente constante mientras que la corriente I PMP varía de forma proporcional con la irradiancia. Para la mayoría de los módulos comerciales de silicio cristalino, el voltaje en el punto de máxima potencia, V PMP, es aproximadamente igual al 80% del voltaje a circuito abierto, V OC, que presenta el módulo en las condiciones de funcionamiento consideradas 3. Puesto que nuestro equipo únicamente realizará medidas cuando el nivel de irradiancia incidente sea mayor o igual a 800 W/m 2, vamos a considerar que la potencia máxima que puede generar el módulo para cada valor de irradiancia incidente G(W/m2) va a ser igual al producto de la corriente en el punto de máxima potencia que el módulo genera para dicho valor de irradiancia por la tensión de salida en dicho punto, la cual vamos a considerar constante e igual al 80% del valor de la tensión de circuito abierto que presenta el módulo en condiciones STC: P max (G )
I PMP (G )
=
[0,8
⋅
V OC
⋅
STC
]
La tensión de circuito abierto que presenta el módulo en condiciones STC es uno de los datos que facilitan los fabricantes en sus hojas de características. Sin embargo, la curva de variación de I PMP en función de la irradiancia incidente debe ser determinada experimentalmente realizando múltiples mediciones en los módulos de la instalación, con el objetivo de que se ajuste lo más fielmente posible al comportamiento real de dichos dispositivos. Para el diseño del prototipo que se desarrolla en el presente proyecto, hemos utilizado dos módulos fotovoltaicos modelo KV-150/12(24)M de silicio cristalino de la marca KVAZAR pertenecientes al Laboratorio de Energía Solar de la Escuela Superior de Ingeniería de Cádiz. Se trata de dos módulos de 150 WP de potencia nominal, compuestos por una única cadena de 72 células conectadas en serie (la hoja de datos de este módulo puede ser consultada en
Varios autores, Instalaciones de energía solar. Tomo V. Sistemas de conversión eléctrica. Editorial Progensa. 5ª Edición. 2008. 3
el CD adjunto al presente proyecto). En la siguiente imagen podemos ver los dos módulos utilizados en el diseño del presente proyecto:
Figura 119. Módulos fotovoltaicos KV-150/24(12)M de la empresa KVAZAR pertenecientes al Laboratorio de Energía Solar de la Escuela Superior de Ingeniería de Cádiz usados en el diseño del presente Proyecto. Para llevar a cabo la caracterización de la curva de I PMP en función de la irradiancia incidente G para este modelo de módulo elegido, fueron realizadas un total de 377 mediciones de las variables de salida de ambos módulos en diversas condiciones de funcionamiento a lo largo de 3 meses. Dichas medidas fueron realizadas en las instalaciones de la Escuela Superior de Ingeniería de Cádiz. Cada día, previamente a la realización de las medidas, ambos módulos fueron limpiados con agua destilada con el objeto de que estuvieran en todo momento en las mismas condiciones de limpieza. Para la realización de las medidas fue utilizado un Trazador de Curvas I-V para módulos fotovoltaicos, modelo PVPM 6020C de la marca Photovoltaic Engineering, propiedad del Laboratorio de Energía Solar de la citada Escuela. En la siguiente figura podemos ver distintas imágenes de dicho dispositivo:
Figura 120. Aparatos de medida utilizados en la caracterización de la curva I PMP – G para el modelo de módulo utilizado en el diseño de nuestro prototipo. Este dispositivo es capaz de trazar la curva I-V de salida que presenta el módulo en las condiciones de operación existentes en el momento de realizar la medida. Además de esto, suministra datos referentes a distintos puntos de dicha curva como la potencia máxima, la corriente y la tensión en el punto de
máxima potencia, la corriente de cortocircuito y la tensión de circuito abierto. Para determinar la irradiancia incidente G y la temperatura de célula T C bajo las que se lleva a cabo la medida, dicho dispositivo dispone de un sensor exterior que debe ser instalado junto a los módulos, con la misma orientación e inclinación que éstos. En nuestro caso se trata de un sensor modelo SOZ-03 mono#2910, cuya imagen se muestra en la siguiente figura:
Figura 121. Sensor utilizado por el trazador de curvas I-V para medir la irradiancia y la temperatura de célula existentes en el momento de realizar la medida. En la siguiente figura se muestra una imagen de los módulos utilizados en el diseño de nuestro prototipo, junto con el sensor anterior instalado en la misma estructura soporte:
Figura 122. Módulos utilizados en el diseño de nuestro prototipo junto con el sensor utilizado por el trazador de curvas I-V.
Los resultados de todas las medidas llevadas a cabo se encuentran recogidos en el Anexo 7 dentro del Documento Básico Anexos. Tras la realización de un total de 377 mediciones con ambos módulos, los resultados obtenidos muestran claramente que la corriente de salida del módulo en el punto de máxima potencia presenta un comportamiento lineal frente a la irradiancia incidente, y que la temperatura de célula no influye de forma importante en dicho comportamiento. En la siguiente figura aparecen representados todos los resultados obtenidos en dichas mediciones:
Ipmp(A) Vs G(W/m2) 5,00 4,00 ) A ( 3,00 p m2,00 p I
1,00 0,00 0
200
400
600
800
1000
1200
G(W/m2)
Figura 123. Resultados obtenidos en las 377 mediciones realizadas con los dos módulos anteriores. Puesto que nuestro equipo únicamente realizará medidas cuando el nivel de irradiancia incidente existente en el momento de la medición sea mayor o igual a 800 W/m 2, a la hora de caracterizar la curva I PMP-G de nuestro modelo de módulo, únicamente hemos considerado los resultados de medida correspondientes a estos valores de irradiancia. En la siguiente figura se encuentran representados estos resultados de medida junto con la recta de regresión correspondiente:
Ipmp(A) Vs G(W/m2) 4,40
y = 0,0043x - 0,1331
4,20
R2 = 0,9415
) 4,00 A ( 3,80 p m3,60 p I 3,40
3,20 3,00 800
850
900
950
1000
1050
G(W/m2)
Figura 124. Resultados de medida obtenidos correspondientes a una Irradiancia incidente mayor o igual a 800 W/m 2. Por lo tanto, para el diseño de nuestro prototipo del equipo de medida, consideraremos que la variación de la corriente de salida del módulo en el punto de máxima potencia (I PMP) frente a la irradiancia incidente (G), para cualquier temperatura de módulo, viene definida por la siguiente ecuación: I PMP (G )
= 0,0043 ⋅ G − 0,1331 , siendo G≥800W/m2.
En esta expresión, la corriente está expresada en A y la irradiancia incidente en W/m2. Si en la expresión anterior sustituimos G por el valor 1000, obtendremos la corriente en el punto de máxima potencia en condiciones STC obtenida de forma experimental, la cual toma un valor de: I PMP
G =1000W / m
2
= 0,0043 ⋅ (1000) − 0,1331 = 4,17 A
Si ahora consultamos la hoja de características de nuestro modelo de módulo, encontramos que la corriente en el punto de máxima potencia en condiciones STC facilitada por el fabricante tiene un valor de 4,2 A, lo que implica que la diferencia entre este valor teórico y el valor obtenido experimentalmente en nuestras mediciones es del 0,7%. Repitiendo lo dicho anteriormente respecto a la potencia máxima de salida de un módulo para valores elevados de irradiancia incidente, en nuestro equipo de medida dicha potencia máxima vendrá dada por el producto de la corriente en el punto de máxima potencia correspondiente a cada valor de irradiancia (IPMP(G)) y la tensión de salida en dicho punto, la cual vamos a considerar que