34
UNIVERSIDAD NACIONAL DE ASUNCIÓN FACULTAD POLITÉCNICA PROYECTO: POSICIONADOR DE PANEL SOLAR GUIADO POR TRAYECTORIA INTEGRANTES: Carlos Waimberg. Hector Paredes. Oscar Zaracho. PROFESOR:

Informe GiraSol controlador Pic 16f877

Embed Size (px)

Citation preview

Page 1: Informe GiraSol controlador Pic 16f877

UNIVERSIDAD NACIONAL DE ASUNCIÓN

FACULTAD POLITÉCNICA

PROYECTO:

POSICIONADOR DE PANEL SOLAR GUIADO POR TRAYECTORIA

INTEGRANTES:

Carlos Waimberg.Hector Paredes.Oscar Zaracho.

PROFESOR:

Ing. Lucas Frutos.

2008

Page 2: Informe GiraSol controlador Pic 16f877

La energía alternativa, hoy en día, se ha convertido en una salida a la gran demanda

de derivados energéticos y como solución a la problemática de la contaminación

ambiental debido principalmente al uso de productos derivados del petróleo y otros

como plantas térmicas nucleares. Tratar de prescindir completamente de los sistemas

de generación de energía convencional resulta hasta el momento imposible, debido a

que algunos sistemas alternativos se encuentran en fase de investigación y pruebas.

Desde el punto de vista económico, las energías renovables se sitúan en una posición

adecuada al lado de las energías fósiles, para hacer frente a la demanda creciente y

sin perjuicio. Además, las energías renovables pueden en forma ascendente jugar un

papel de sustitución dado que no solo el agotamiento de los recursos fósiles sino

también problemas medio ambientales actúan en contra de este tipo de energías y a

favor de las renovables.

Dentro de las alternativas, la energía solar fotovoltaica es, hoy en día y sin lugar a

dudas, una forma limpia y fiable de producción de energía eléctrica a pequeña escala.

Podemos definirla como la tecnología utilizada para el aprovechamiento eléctrico de la

energía solar que se deriva de las células fotovoltaicas.

Las ventajas de la utilización de la Energía Solar fotovoltaica son las siguientes:

* La energía que procede del sol es limpia y renovable, no cuesta dinero.

* Disminuye costes de mantenimiento de las líneas eléctricas, sobre todo en zonas

aisladas.

* Mantenimiento y riesgo de avería muy bajo de las instalaciones fotovoltaicas,

silenciosas y sencillas.

* Tecnología de rápido desarrollo que tiende a reducir el coste y aumentar el

rendimiento.

La idea de este proyecto se basa fundamentalmente en la monitorización de la energía

solar aprovechada por un panel solar, con fines de optimización y análisis, de modo a

obtener una proyección acerca de la rentabilidad para un sistema proveedor a gran

escala de energía eléctrica, mediante un lote de paneles solares. Diseñar un sistema

prototipo capaz de realizar las mediciones y análisis de la energía solar es el

principal objetivo de este proyecto.

Page 3: Informe GiraSol controlador Pic 16f877

Panel Solar

Mediante las células fotovoltaicas (Panel Solar), la radiación se transforma

directamente en electricidad aprovechando las propiedades de los materiales

semiconductores. Las celdas fotovoltaicas conocidas también como celdas solares

están hechas de materiales semiconductores, en especial de silicio, el mismo que se

emplea en la industria de la microelectrónica. Se emplea una delgada rejilla

semiconductora para poder originar un campo eléctrico, positivo en un lado y negativo

en el otro, claro está; cuando la energía proveniente de los rayos solares llega a la

celda fotovoltaica, los electrones son golpeados por fotones y sacados de los átomos

del material semiconductor Fig.1, en ese instante los electrones son capturados en

forma de corriente eléctrica. Las celdas son aquellas que, juntas, forman un panel

fotovoltaico, pero un arreglo de varias celdas conectadas eléctricamente unas con

otras en una estructura generan un módulo fotovoltaico.

El panel cuenta con otros elementos a parte de las células solares, que hacen posible

la adecuada protección del conjunto frene a los agentes externos; asegurando una

rigidez suficiente, posibilitando la sujeción a las estructuras que lo soportan y

permitiendo la conexión eléctrica, estos elementos son los siguientes.

Cubierta exterior de cara al Sol. Es de vidrio que debe facilitar al máximo la

transmisión de la radiación solar. Se caracteriza por su resistencia mecánica, alta

transmisividad y bajo contenido en hierro.

Marco metálico. De Aluminio, que asegura una suficiente rigidez y estanqueidad al

conjunto, incorporando los elementos de sujeción a la estructura exterior del panel. La

unión entre el marco metálico y los elementos que forman el módulo está realizada

mediante distintos tipos de sistemas resistentes a las condiciones de trabajo del panel.

Encapsulante. De silicona o más frecuentemente EVA (etilen-vinil-acetato). Es

especialmente importante que no quede afectado en su transparencia por la continua

exposición al sol, buscándose además un índice de refracción similar al del vidrio

protector para no alterar las condiciones de la radiación incidente.

Cableado y bornes de conexión. Habituales en las instalaciones eléctricas,

protegidos de la intemperie por medio de cajas estancas.

Diodo de protección. Su misión es proteger contra sobre-cargas u otras alteraciones

de las condiciones de funcionamiento de panel.

Page 4: Informe GiraSol controlador Pic 16f877

Los módulos son construidos con el objetivo de brindar un determinado nivel de

voltaje, un ejemplo es un sistema de 12 voltios; la corriente que se produzca

dependerá siempre de cuanta luz el módulo capte. Los sistemas de este estilo pueden

funcionar aisladamente o conectados en red; con respecto a estos último, los mismos

interaccionan a través de una interfaz electrónica, es decir, un inversor, que transforma

la corriente directa en alterna para poder ser utilizada luego.

Page 5: Informe GiraSol controlador Pic 16f877

Fig. 1

Trayectoria Solar

Es necesario precisar la posición del Sol en cada instante para optimizar el

rendimiento de los generadores fotovoltaicos. El sistema más apropiado para

comprender cada una de estas posiciones es el de coordenadas polares Fig. 2. En

este sistema el origen está situado en la posición del receptor (la referencia). El plano

fundamental es el horizontal, tangente a la superficie terrestre. La perpendicular a este

plano en dirección a la semiesfera celeste superior define la posición del ZENIT del

lugar o zenit local. En la dirección opuesta, a través de la Tierra, se sitúa el NADIR.

Las direcciones principales sobre el plano horizontal son la Norte-Sur, intersección con

el plano meridiano del lugar, y la perpendicular a ella Este-Oeste, intersección con el

plano denominado primer vertical.

Fig. 2

Respecto al sistema anteriormente descrito, la posición del Sol se define mediante los

siguientes parámetros:

CARGA

Page 6: Informe GiraSol controlador Pic 16f877

Latitud del lugar: Es la localización angular por encima o por debajo del

ecuador que dependerá de la posición del observador o el punto de ubicación del

panel. (-90≥≤ LAT ≤ 90)

Declinación: Posición angular del sol al medio día solar respecto al plano del

ecuador. (-23,45 ≤ DEC ≤ 23,45)

Azimut: Es el ángulo que forma la proyección de la normal de la superficie

sobre un plano horizontal respecto del meridiano local. Este ángulo es cero si el plano

está orientado al Oeste, y negativo al Este. (-180 ≤ AZ ≤ 180)

Angulo horario: Indica el desplazamiento angular del Sol al Este o al Oeste del

meridiano local debido a la rotación terrestre sobre su eje, a 15/horas.

El movimiento aparente del Sol respecto de un sistema de coordenadas

cartesianas fijo de referencia tal como el de la Fig. 3 viene dado por el vector :

Fig. 3

Donde:

, /hora , /hora = 0,985648

Z

su

Y (este)

X (sur)

Page 7: Informe GiraSol controlador Pic 16f877

Para la mayor parte de los cálculos, es suficientemente precisa la aproximación:

Donde:

Día del año contado a partir del equinoccio de primavera. Para el día 21

de marzo,

Hora solar.

Diagrama en bloques

Como se observa en el esquema se utilizó un Microcontrolador PIC 16F877, dos motores paso a paso para controlar el panel solar en la posición horizontal y vertical; con sus respectivos controladores, como también una PC la cual se comunica con el Microcontrolador PIC; es decir envía y recibe datos vía puerto serie. Entre la PC y el Microcontrolador PIC se utiliza una interfaz en este caso un MAX 232 para manejar los niveles de voltaje del protocolo.

MICROCONTROLADORPIC

PC

CONTROLADOR DEMOTORMOTOR

Page 8: Informe GiraSol controlador Pic 16f877

El modo de operación para la comunicación en base al Microcontrolador que utilizamos es el modo asíncrono para la recepción y transmisión, utilizando el protocolo de comunicación RS 232.

Las principales características para utilizar el modo asíncrono son: No requiere una señal de reloj para control. Versatilidad y Rapidez. Puede utilizarse para transmisión y recepción al mismo tiempo.

El Software utilizado en la PC es Visual Basic 6.0 y las líneas de programación de esta se detallan a continuación.

Dim dd, mm, aa // Declaración de variables Dim hh, mi, ss, td As Integer Public hourd As Single Dim lat, hourdc, d_rec, latc, tdc, elc, azc, aux 'Public finish As Variant Dim i, iant, vgrafant, unavez, vgraf Private Sub Command_Posinicial_Click() If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If 'For a = 1 To 3 MSComm1.Output = "u" 'Next a MSComm1.PortOpen = FalseEnd Sub

'Private Sub Command_Recibir_Click() ' Do ' MSComm1.PortOpen = True ' MSComm1.Output = "a" ' Do ' d_rec = MSComm1.Input ' aux = Right(d_rec, 1) ' Loop While (aux = "P") 'azc = d_rec 'Picture_Azimut.Print azc 'MSComm1.Output = "e" 'Do ' d_rec = MSComm1.Input ' aux = Right(d_rec, 1) 'Loop While (aux = "P") 'elc = d_rec 'Picture_Elevación.Print elc 'MSComm1.Output = "g" 'vgrafant = 0 'd_rec = MSComm1.Input 'i = 0 'i = i + 20 'If i = 3000 Then ' Picture1.Cls 'Else ' vgraf = d_reg ' Picture1.Line (0, vgrafant)-(i, vgraf) ' vgrafant = vgraf 'End If 'Loop While finish <> False'End Sub

Private Sub Label_Año_Click()

Page 9: Informe GiraSol controlador Pic 16f877

aa = InputBox("Introduzca año", "Año", "1") Picture_Año.Print aaEnd Sub

Private Sub Label_Mes_Click() mm = InputBox("Introduzca Mes", "Mes", "3") Picture_Mes.Print mmEnd Sub

Private Sub Label_Día_Click() dd = InputBox("Introduzca día", "Día", "21") Picture_Día.Print ddEnd Sub

Private Sub Label_Latitud_Click() lat = InputBox("Introduzca latitud (entero)", "Latitud", "25") Picture_Latitud.Print latEnd Sub

'Private Sub Enviar_Click()' Call Calc_td((dd), (mm), (aa))' hh = Text_Hora.Text' mi = Text_Minuto.Text' ss = Text_Segundo.Text' Timer1.Enabled = True' Call Calc_hora((hh), (mi), (ss))' latc = CStr(lat) + "p"' hourdc = CStr(hourd) + "p"' hourdc = Replace(hourdc, ".", ",")' tdc = CStr(td) + "p"' tdc = Replace(tdc, ".", ",")' MSComm1.PortOpen = True' Do' d_rec = MSComm1.Input' For i = 1 To 100' Next i' MSComm1.Output = "b"' Loop While d_rec <> "L"' Do' d_rec = MSComm1.Input' For i = 1 To 100' Next i' MSComm1.Output = latc' Loop While d_rec <> "T"' Do' d_rec = MSComm1.Input' For i = 1 To 100' Next i' MSComm1.Output = tdc' Loop While d_rec <> "H"' Do' d_rec = MSComm1.Input' For i = 1 To 100' Next i' MSComm1.Output = hourdc' Loop While d_rec <> "F"'End Sub

Private Sub Option1_transmitir_Click() Label_Latitud.Enabled = True Label_Día.Enabled = True Label_Minuto.Enabled = True Label_Hora.Enabled = True Label_Segundo.Enabled = True Label_Mes.Enabled = True Label_Año.Enabled = True Option2_adquirir.Value = False

Page 10: Informe GiraSol controlador Pic 16f877

Picture1.Cls If Option1_transmitir.Value = True Then Frame3.ForeColor = &H80000012 Frame5.ForeColor = &H80000012 Label_Latitud.ForeColor = &H80000012 Label_Día.ForeColor = &H80000012 Label_Mes.ForeColor = &H80000012 Label_Año.ForeColor = &H80000012 Label_Hora.ForeColor = &H80000012 Label_Minuto.ForeColor = &H80000012 Label_Segundo.ForeColor = &H80000012 Frame4.ForeColor = &H80000011 Frame6.ForeColor = &H80000011 Label_Azimut.ForeColor = &H80000011 Label_Elevación.ForeColor = &H80000011 Option1_Trasmitir = MsgBox("Presione sobre Latitud,Fecha, hora, minuto y segundo para ir introduciendo los valores", 0 + 0, "Transmisión") End If

End Sub

'Private Sub Option2_adquirir_Click()

' Label_Latitud.Enabled = False' Label_Día.Enabled = False' Label_Minuto.Enabled = False' Label_Hora.Enabled = False' Label_Segundo.Enabled = False' Label_Mes.Enabled = False' Label_Año.Enlabled = False' Dim i As Integer' Dim j As Integer' PortOpen = True' Option1_transmitir.Value = False ' If Option2_adquirir.Value = True Then' Frame4.ForeColor = &H80000012' Frame6.ForeColor = &H80000012' Label_Azimut.ForeColor = &H80000012' Label_Elevación.ForeColor = &H80000012' Frame3.ForeColor = &H80000011' Frame5.ForeColor = &H80000011' Label_Latitud.ForeColor = &H80000011' Label_Día.ForeColor = &H80000011' Label_Mes.ForeColor = &H80000011' Label_Hora.ForeColor = &H80000011' Label_Minuto.ForeColor = &H80000011' Label_Segundo.ForeColor = &H80000011' ' For a = 1 To 3000 Step 300 ' Picture1.Line (a, 255)-(a, 0) ' For j = 1 To 255 Step 25.5 ' Picture1.Line (0, j)-(3000, j) ' Next j ' Next a 'End If 'i = 0'End Sub

'Public Sub Calc_td(d As Integer, m As Integer, a As Integer)' Dim daux As Integer, maux As Integer, aaux As Integer, dia As Integer' maux = 3' dia = 21' td = 1' If ((d > 0 And d < 32) And (m > 0 And m < 13) And (a > 0 And a < 100)) Then' If m = 1 Then' daux = 31' ElseIf m = 2 Then

Page 11: Informe GiraSol controlador Pic 16f877

' If (m Mod 4 = 0) Then' daux = 29' Else' daux = 28' End If' ElseIf m = 3 Then' daux = 31' ElseIf m = 4 Then' daux = 30' ElseIf m = 5 Then' daux = 31' ElseIf m = 6 Then' daux = 30' ElseIf m = 7 Then' daux = 31' ElseIf m = 8 Then' daux = 31' ElseIf m = 9 Then' daux = 30' ElseIf m = 10 Then' daux = 31' ElseIf m = 11 Then' daux = 30' ElseIf m = 12 Then' daux = 31' End If' If (m = 3) And (d = 21) Then' td = 1' Else' While (dia <> d) Or (maux <> m)' dia = dia + 1' td = td + 1' If (dia = daux) Then' maux = maux + 1' dia = 0' If maux = 1 Then' daux = 31' ElseIf maux = 2 Then' If (maux Mod 4 = 0) Then' daux = 29' Else' daux = 28' End If' ElseIf maux = 3 Then' daux = 31' ElseIf maux = 4 Then' daux = 30' ElseIf maux = 5 Then' daux = 31' ElseIf maux = 6 Then' daux = 30' ElseIf maux = 7 Then' daux = 31' ElseIf maux = 8 Then' daux = 31' ElseIf maux = 9 Then' daux = 30' ElseIf maux = 10 Then' daux = 31' ElseIf maux = 11 Then' daux = 30' ElseIf maux = 12 Then' daux = 31' End If

' If maux = 13 Then' maux = 1

Page 12: Informe GiraSol controlador Pic 16f877

' daux = 31' End If' End If' Wend' End If' End If'End Sub

'Public Sub Calc_hora(h As Integer, mi As Integer, s As Integer)' If (mi >= 0) And (mi <= 15) Then' hourd = h' ElseIf (mi > 15) And (mi <= 30) Then' hourd = h + 0.25' ElseIf (mi > 30) And (mi <= 45) Then' hourd = h + 0.5' ElseIf (mi > 45) And (mi <= 59) Then' hourd = mi + 0.75' End If'End Sub

Private Sub Command_Start_Click() If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If For a = 1 To 3 MSComm1.Output = "b" Next a If unavez = 0 Then vgrafant = 255 iant = 0 unavez = 1 Else vgrafant = vgraf iant = i End IfEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) MSComm1.PortOpen = FalseEnd SubPrivate Sub Command_Stop_Click() ' Parar = True If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If For a = 1 To 3 MSComm1.Output = "x" Next a MSComm1.PortOpen = False ' finish = FalseEnd SubPrivate Sub Command_Continuar_Click() If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If For a = 1 To 3 MSComm1.Output = "z" Next a MSComm1.PortOpen = FalseEnd Sub'Private Sub Form_Load()' dd = Text2.Text' mm = Text5.Text' aa = Text6.Text' hh = Text7.Text' mm = Text8.Text' ss = Text9.Text

Page 13: Informe GiraSol controlador Pic 16f877

' MSComm1.PortOpen = False' Label_Latitud.Enabled = False' Label_Día.Enabled = False' Label_Minuto.Enabled = False' Label_Hora.Enabled = False' Label_Segundo.Enabled = False' Label_Mes.Enabled = False' Label_Año.Enabled = False'End Sub

Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvReceive Then For a = 1 To 3000 Step 300 Picture1.Line (a, 255)-(a, 0) For j = 1 To 255 Step 25.5 Picture1.Line (0, j)-(3000, j) Next j Next a d_rec = MSComm1.Input i = i + 5 If i = 3000 Then Picture1.Cls i = 0 'vgrafant = 255 iant = i Else vgraf = Asc(d_rec) vgraf = 255 - vgraf Picture1.Line (iant, vgrafant)-(i, vgraf), vbGreen vgrafant = vgraf iant = i End If End IfEnd Sub

'Private Sub Timer1_Timer()' ss = ss + 1' If ss = 60 Then' ss = 0' Text_Segundo.Text = ss' mi = mi + 1' If mi = 60 Then' mi = 0' Text_Minuto.Text = mi' hh = hh + 1' If hh = 24 Then' hh = 0' End If' Text_Hora.Text = hh' End If' Text_Minuto.Text = mi' End If' Text_Segundo.Text = ss'End Sub

El Microcontrolador PIC se programó en el lenguaje C con el software MPLAB y las líneas de programación son las siguientes. 1: #include<pic.h>

2: #include<math.h>

3: #include"delay.h"

4: #include"delay.c"

Page 14: Informe GiraSol controlador Pic 16f877

5:

6: #define ang 0.0200 //0.0195 //0.0175 //0.0145

7: #define a 0.436332313 //latitud

8: #define b 0.2617993878 //cte

9: #define ctetd 0.01721420632 //factor de td

10: #define XTAL_FREQ 20MHZ

11: #define signo (-1)

12:

13:

14: bank2 int man,f,z,d,ban0,ban1,ban2,aux,nsec1,nsec2,ult_sec_az,ult_sec_el,i,td,hour,min,j;

15: bank1 double saveel,saveaz;

16: bank1 double hourd,alfa,ux,uy,uz,mod,daz,del,az,el;

17: bank2 char conv, secq[16]={0b00000110,0b00000010,0b00001100,0b00010000,0b00011000,0b00110000,0b00101100,0b00100010,0b00100110,0b00100011,0b00101101,0b00110001,0b00011001,0b00010001,0b00001101,0b00000011};

18: bank2 float h;

19: //-----------------------var usart------------------------//

20: bank1 int contador,auxi,lat,k,azentaux,azent,cntazent,azdec,elent,elentaux,cntelent,eldec;

21: bank1 unsigned char d_rec,valdig;

22: bank1 unsigned char latc[2];

23: bank1 unsigned char tdc[3];

24: bank1 unsigned char hourdc[5];

25: bank1 unsigned char azc[]="000,00P";

26: bank2 unsigned char elc[]="00,00P";

27:

28: void ctrlsec();

29: void calpos();

30: void inisec();

31: void pos_inicial();

32: void set_var();

33: void atoda_pu();

34: void vert();

35:

36: void main(){

Page 15: Informe GiraSol controlador Pic 16f877

37: ADCON1=0x0E;

38: set_var();

39: PSPMODE=0;

40: TRISC=0x80;

41: TRISB=0b10000000;

42: TRISD=0b11000000;

43: PORTB=0x00;

44: PORTD=0X00;

45: BRGH=1;SPBRG=129;SYNC=0;SPEN=1;TXEN=1;TXIE=0;TX9=0;RX9=0;CREN=1;FERR=0;OERR=0;

46: for (;;){

47: PORTD=0x00,PORTB=0x00;

48: while(i==0){

49: i=RCIF;

50: d_rec = RCREG;

51: }

52: if (d_rec=='u'){

53: pos_inicial();

54: }

55: i=0;

56: while(i==0){

57: i=RCIF;

58: d_rec = RCREG;

59: }

60: if (d_rec=='b'){

61: break;

62: }

63: }

64: auxi=0;

65: for(;;) {

66: d_rec = RCREG;

67: DelayMs(1);

68: man=1;

69: if(d_rec=='x'){

Page 16: Informe GiraSol controlador Pic 16f877

70: do

71: {

72:

73: ADCON0=0xC5;

74: DelayMs(1);

75: conv=ADRESH;

76: TXREG=conv; //valor de ADRESH

77: while(!TXIF);

78: d_rec = RCREG;

79: DelayMs(5);

80: if (d_rec=='z'){

81: man=0;

82: }

83: DelayMs(100);

84: }

85: while(man==1);

86:

87: }

88: // i=RB7;

89: // if(i==0){

90: ADCON0=0xC5;

91: DelayMs(1);

92: conv=ADRESH;

93: TXREG=conv; //valor de ADRESH

94: while(!TXIF);

95: if(conv>=0x9D){ // comparación con el valor del panel

96: RB6=1;

97: DelayMs(300);

98: }

99: else{

100: if(aux==1){

101: hourd=hour+0.2;

102: calpos();

Page 17: Informe GiraSol controlador Pic 16f877

103: ctrlsec();

104: saveaz=az;

105: saveel=el;

106: el=0,az=0;

107: aux=0;

108: }

109: min=min++;

110: DelayMs(250);

111: if(min==15){

112: hourd=hour+0.25;

113: calpos();

114:

115: ctrlsec();

116: saveel=el;

117: el=0,az=0;

118: }

119: if(min==30){

120: hourd=hour+0.5;

121: calpos();

122: ctrlsec();

123: saveel=el;

124: el=0,az=0;

125: }

126: if(min==45){

127: hourd=hour+0.75;

128: calpos();

129: ctrlsec();

130: saveel=el;

131: el=0,az=0;

132: }

133: if(min==60){

134: hour++;

135: min=0;

136: hourd=hour;

Page 18: Informe GiraSol controlador Pic 16f877

137: calpos();

138: ctrlsec();

139: saveaz=az;

140: saveel=el;

141: el=0,az=0;

142:

143: }

144: if(hour==17){

145: td++;

146: hour=0;

147: }

148:

149: }

150: // }

151: // else if(i==1){

152: //

153: // if(aux==1){

154: // set_var();

155: // pos_inicial();

156: // aux=0;

157: // }

158: // atoda_pu();

159: // }

160: }

161: }

162:

163: void calpos(){

164: if(aux==1){

165: alfa=ctetd*td;

166: alfa=sin(alfa);

167: alfa=(alfa*sin(a));

168: alfa=asin(alfa); // valor final de alfa

169: }

Page 19: Informe GiraSol controlador Pic 16f877

170: ux=sin(a);

171: ux=ux*cos(alfa);

172: hourd=b*hourd;

173: ux=ux*cos(hourd);

174: ux=ux-(cos(a)*sin(alfa)); //valor final de ux

175: uy=sin(hourd);

176: uy=uy*cos(alfa); //valor final de uy

177: uz=cos(a);

178: uz=uz*cos(alfa);

179: uz=uz*cos(hourd);

180: uz=uz+(sin(a)*cos(alfa)); //valor final de uz

181: mod=pow(ux,2);

182: mod=mod+pow(uy,2);

183: mod=(sqrt(mod)); //modulo de ux y uy

184: daz=(uy/mod);

185: del=(uz/mod);

186: az=acos(daz);

187: el=atan(del);

188: //ux=0,uy=0,uz=0,mod=0,daz=0,del=0;

189:

190: }

191: void ctrlsec(){

192: if(el<0){

193: nsec1=(az-saveaz)/ang;

194: for(i=0;i<nsec1;i++){

195: PORTD=secq[ult_sec_az]; //posicion azimut inicial

196: DelayMs(70);

197: ult_sec_az++;

198: inisec();

199: //if(i==0){

200: // saveaz=az;

201: // az=0;

202: //}

203: }

Page 20: Informe GiraSol controlador Pic 16f877

204: el=el*signo;

205: if(saveel>el){

206: ban1=1;

207: }

208: if(ban1==0){

209: nsec2=(el-saveel)/ang;

210: for(j=0;j<=nsec2;j++){

211: PORTB=secq[ult_sec_el]; //posicion elevación inicial

212: DelayMs(70);

213: ult_sec_el++;

214: inisec();

215: //if(j==0){

216: // saveel=el;

217: // el=0;

218: //}

219: }

220: }

221: if(ban1==1){ //cond de referencia de mov. agular de elev

222: nsec2=(saveel-el)/ang;

223: for(j=0;j<=nsec2;j++){

224: PORTB=secq[ult_sec_el]; //posicion elevación inicial

225: DelayMs(70);

226: ult_sec_el--;

227: inisec();

228: //if(j==0){

229: // saveel=el;

230: // el=0;

231: //}

232: }

233: }

234:

235: }

236: else{

Page 21: Informe GiraSol controlador Pic 16f877

237: PORTB=0x00,PORTD=0x00;

238: pos_inicial();

239: set_var();

240:

241: }

242: }

243:

244: void inisec(){

245:

246: if(ult_sec_az==15){

247: ult_sec_az=0;

248: }

249: if(ban1==0){

250: if(ult_sec_el==15){

251: ult_sec_el=0;

252: }

253: }

254: if(ban1==1){

255: if(ult_sec_el==0){

256: ult_sec_el=15;

257: }

258: }

259: }

260: void pos_inicial(){

261:

262: for(ult_sec_az=15;ult_sec_az>=0;ult_sec_az--){

263: PORTD=secq[ult_sec_az]; //posicion azimut inicial

264: if(ult_sec_az==0){

265: ult_sec_az=15;

266: }

267: DelayMs(30);

268: i=RD7;

269: if(i==1){

270: //for(i=0;i<=3;i++){

Page 22: Informe GiraSol controlador Pic 16f877

271: // PORTD=secq[i];

272: //}

273: break;

274: }

275: }

276: for(ult_sec_el=15;ult_sec_el>=0;ult_sec_el--){

277: PORTB=secq[ult_sec_el];

278: if(ult_sec_el==0){

279: ult_sec_el=15;

280: }

281: DelayMs(30);

282: i=RD6;

283: if(i==1){

284: for(;ult_sec_el<=15;ult_sec_el++){

285: PORTB=secq[ult_sec_el];

286: DelayMs(30);

287: if(ult_sec_el==15){

288: ult_sec_el=0;

289: contador++;

290: }

291: if(contador==3){

292: contador=0;

293: break;

294: }

295: }

296: break;

297: }

298:

299: }

300: }

301: void set_var(){

302: // if()

303:

Page 23: Informe GiraSol controlador Pic 16f877

304:

305: aux=1;saveaz=0,h=0.1,saveel=0,min=0,hour=8,td=1,ban1=0,ban0=0,hourd=0,el=0,az=0,ult_sec_az=0,ult_sec_el=0,i=0;

306:

307: }

308:

309: void atoda_pu(){

310: for(;;){

311: for(ult_sec_az=0;ult_sec_az<=15;ult_sec_az++){

312: ADCON0=0xC5;

313: DelayMs(5);

314: conv=ADRESH;

315: while (conv>=0x9D){ // comparación con el valor del panel

316: RB6=1;

317: }

318: PORTD=secq[ult_sec_az]; //posicion azimut inicial

319: if(ult_sec_az==15){

320: ult_sec_az=0;

321: }

322: DelayMs(5);

323: i=RD7;

324: if(i==1){

325: vert();

326: break;

327:

328: }

329: }

330:

331: for(ult_sec_az=0;ult_sec_az>=0;ult_sec_az--){

332: ADCON0=0xC5;

333: DelayMs(5);

334: conv=ADRESH;

335: while (conv>=0x9D){ // comparación con el valor del panel

336: RB6=1;

Page 24: Informe GiraSol controlador Pic 16f877

337: }

338: PORTD=secq[ult_sec_az]; //posicion azimut inicial

339: if(ult_sec_az==0){

340: ult_sec_az=15;

341: }

342: DelayMs(5);

343: i=RD7;

344: if(i==0){

345: vert();

346: break;

347: }

348: }

349:

350: }

351: }

352:

353: void vert(){

354: f=0;

355: do{

356: for(;ult_sec_el<=15;ult_sec_el++){

357: ADCON0=0xC5;

358: DelayMs(5);

359: conv=ADRESH;

360: while (conv>=0x9D){ // comparación con el valor del panel

361: RB6=1;

362: }

363: PORTB=secq[ult_sec_el];

364: if(ult_sec_el==15){

365: ult_sec_el=0;

366: }

367: DelayMs(5);

368: z=RD6;

369: if(z==1){

Page 25: Informe GiraSol controlador Pic 16f877

370: pos_inicial();

371: }

372:

373: }

374: f++;

375: }

376: while(f<=5);

377:

378: }

Circuito Impreso (PCB).

Diagrama Esquemático del Circuito.

Page 26: Informe GiraSol controlador Pic 16f877
Page 27: Informe GiraSol controlador Pic 16f877

Conclusión

Para iniciar este proyecto procedimos a verificar la veracidad de la ecuación de

trayectoria, para lo cual generamos una tabla de variables y fórmulas en EXCEL donde

se podía verificar la variación de los ángulos de azimut y elevación a medida que

trascurría el tiempo (8 AM – 17 AM) y se comprobó que los resultados eran bastante

aproximados y coherentes.

A la hora de la programación del PIC con lenguaje C se debía hacer correctamente la

asignación de bancos pues los cálculos extensos y complejos a veces desbordaba la

asignación por defecto que realizaba el compilador.

Por otra parte surgió otro inconveniente al configurar el USART pues el texto en inglés

del datasheet del PIC fue interpretado erróneamente en un principio, el mismo

proponía setear los pines de transmisión y recepción, es decir establecer los dos como

entrada. Pero luego se probó la otra interpretación posible, que sugería configurar el

pin de recepción como entrada y el pin de transmisión como salida con otros arreglos,

de ese modo se logró el buen funcionamiento de la comunicación serial.

De manera a adoptar un solo esquema y de la manera más sencilla, tanto en Visual

Basic como en C, con el protocolo RS 232; se prefirió trabajar exclusivamente con

caracteres de manera que un dato numérico se convertía a cadena para su posterior

envío en ambas direcciones.

Cabe destacar que en el posicionamiento inicial también se realiza una corrección

aproximada de 3 grados con respecto a la elevación del panel, debido a un efecto

conocido como aberración cromática que aparenta el sol más elevado de lo que se

encuentra cerca del horizonte, debido a la refracción de la luz en la capa atmosférica.

Todas las prestaciones del sistema están enfocadas hacia estudios meteorológicos

pues se puede mejorar el software de la PC para generar una base de datos de

manera a tener un registro del comportamiento radiaciones solares durante ciertas

épocas del año, determinar el comportamiento de trayectoria solar; así también

analizar la incidencia de radiación solar en ciertas áreas, factor importante a la hora de

determinar la factibilidad y rentabilidad de la instalación de una planta generadora de

energía eléctrica.

Page 28: Informe GiraSol controlador Pic 16f877

Por último recordamos que este sistema de seguimiento mejora el rendimiento del

panel solar, lo cual nos permite adquirir mayor cantidad de energía bajo las mismas

condiciones ambientales y en el mismo día. Pues se logra ensanchar la curva de

Gauss de adquisición de energía, comprobando que el pico máximo de energía se

obtendrá cerca del medio día.