Ir ao conteúdo
  • Cadastre-se

Seguidor solar


Posts recomendados

Observar que a intensidade luminosa no painel é função do coseno do ângulo de incidência com a perpendicular ao plano do painel.

A função coseno tem os seguintes valores pontuais que eu calculei:

cos (0º) = 1 ou 100%

cos (10º) = 0,985 ou 98,5%

cos (15º) = 0,966 ou 96,6%

cos (20º) = 0,940 ou 94,0%

cos (25,842º) = 0,9 ou 90,0%

 

Observe que para um ângulo de zero grau, ou quando o painel esteja apontando diretamente para o Sol, a intensidade captada é máxima ou 100%.

Com um erro de 10º se capta 98,5% da energia total. Se o seu conversor analógico digital estiver com a tensão de referência conectada à fonte do uC (Vdd), o erro introduzido será maior que se não usasse a correção vertical do painel.

Se você incluir todas as otimizações (dois controles de motor, etc.), certifique-se de pensar em eliminar erros grosseiros de iniciante em eletrônica, como este apresentado.

Com um erro de 25,842º entre o painel e o Sol, você ainda consegue captar 90% da energia solar. Isso significa que se você colocar o painel com o ângulo vertical fixo, coincidindo com a latitude do local, você garante que vai captar mais que 90% da intensidade solar. O ângulo que a Terra faz com o Sol varia de +23º a -23º em relação a latitude do local geográfico.

 

 

Lembre-se que há um ditado que diz que "o ótimo é inimigo do bom".

MOR_AL

Link para o comentário
Compartilhar em outros sites

@MOR,

Se ele utilizar as tabelas , ele não vai precisar do conversor a/d para fazer o posicionamento, portanto este erro não vai existir. Basta apenas um bom RTC, bem preciso. O resto é pura matemática.

O CI de medição de luminosidade já forneçe o resultado via I2c, e possui referência interna, e também é independente do conversor a/ d .

Não sei como funciona o anemômetro, talvez aqui seja necessària uma boa referência como um TL431 da vida. Vou pesquisar.

Mas olhe que interessante este estudo da Unicamp :

https://www.puc-campinas.edu.br/websist/portal/pesquisa/ic/pic2011/resumos/2011822_135018_281929815_resath.pdf

De acordo com ele, não compensa nem mesmo um único eixo.... Acho melhor eu rever meus conceitos kkkkkk ! Na verdade, creio que esse problema da inclinação só deve causar um mínimo de problema no extremo Sul.

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Senhores, mil desculpas pela demora...neste meio tempo não estive parado.

Criei alguns topicos para ajudar, são eles:

 

http://forum.clubedohardware.com.br/forums/topic/1068494-leitura-analogica-com-pic-e-colocar-o-valor-da-leitura-no-display/

 

http://forum.clubedohardware.com.br/forums/topic/1068013-display-4x16/

 

Minha duvida agora é......seria melhor eu colocar 1 LDR por entrada analogica do pic ou 2 en serie assim eu economizo 1 porta por eixo????

Link para o comentário
Compartilhar em outros sites

Com isso eu não precisaria usar um AO para amplificar o sinal correto?

Mas uma coisa que me perguntaram ontem e eu não soube responder com muita clareza.... com essa tecnica de dois LDR em serie eu não perderia "precisão" ou alg do genero?

 

Outra coisa que gostaria de vocês é com matematica. Não estou conseguindo encontrar uma equação para o ascelerometro, ou seja, não estou conseguindo colocar p valor correto do angulo no display.

Encontrei alguns valores com ensaios aqui:

 

 

tensão(v)      Ângulo

0,82               -90

1,25               -40

1,43               -20

1,6                   0

1,79                20

1,94                40

2,35                88

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • 4 meses depois...

Bom dia senhores, desculpe a sumida que dei do meu proprio topico...mas não deixei de trabalhar no mesmo nem um segundo.

 

Bom quanto ao post do aphawk, eu sou de Campinas e nesse tempo visitei empresas que trabalham com esta tecnologia, laboratorios que fabricam e pesquisam as mesmas e fui tambem na Usina Tanquinho.

Nessas visitas ficou claro que a inclinação é um fator primordial sim, pois na Usina Tanquinho por exemplo a quantidade de paineis fixos sã0 3x maior que a dos moveis e eles produzem a mesma coisa.

 

Quanto ao CI de medição de luminosidade, eu pesquisei um bocado e não o encontrei, então ainda estou usando o LDR, rsrsrsrrsrsrs.

 

Abaixo segue codigo que estou fazendo agora para o track, paralelamente estou desenvolvendo codigos para implementa-lo mas ainda não é o caso de posta-los.

 

 

 

 

/*****************************************************************************/
/*                Trabalho de Curso  2014 - UNIP - Swift                          */
/*                            Solar Track                                                          */
/*                         Autor: Ivan Henrique                                              */
/*                        Compilado com o PICC-CCS                                  */ 
/*                                                                                                         */
/* Notas:                                                                                              */
/*        Lado 1,   LDR1, In = An4, Out = B7  |  Acelerometro   AN0     */
/*        Lado 2,   LDR2, In = An5, Out = B6  |  LM35           AN1         */
/*        Direita,  LDR3, In = An6, Out = B5  |  Corrente PV    AN2       */
/*        Esquerda, LDR4, In = An7, Out = B4  |  Tensão PV      AN3   */
/*        Fim de Curso direita D0             |                                             */
/*        Fim de Curso direita D1             |                                             */
/*****************************************************************************/
 
#include <16f877a.h>
#device adc=10      //Habilitar ADC de 10 bits
#use delay(clock=20000000)
 
#fuses HS          //Clock > 4Mhz
#fuses NOWDT       //No Watch Dog Timer
#fuses PUT         //Power Up Timer
#fuses NOBROWNOUT  //No brownout reset
#fuses NOLVP       //No low voltage progming, B3(PIC16)or B5(PIC18)used for I/O
#fuses NOPROTECT   //Code not protected from reading
#fuses NOCPD       //No EE protection
 
#include "C:\Users\ivan.aguiar\Desktop\Codigos\Bibliotecas\Flex_lcd_16x4_877.c"
#include "C:\Users\ivan.aguiar\Desktop\Codigos\Bibliotecas\DS1307.c"
#include <stdlib.h>
 
/*****************************************************************************/
/*                               Variaveis                                   */
/*****************************************************************************/
 
int16 angulo;       // Variáveis da Conversão do Angulo
float An;
int16 temperatura;  // Variáveis da Conversão de Temperatura
float T;
int16 corrente;     // Variáveis da Conversão da Corrente de Saída
float C;
int16 tensão;       // Variáveis da Conversão da Corrente de Saída
float Ten;
 
int16 ldr1, ldr2, ldr3, ldr4;   // Variáveis da Conversão do LDR
 
int precisao;     // Variaveis para correção do PFV
int1 fim_dir;
int1 fim_esq;
 
/*****************************************************************************/
/*                  Sub Rotinas de Leitura do conversor AD                   */
/*****************************************************************************/
 
void A0()                             //Leitura da Inclinação
  {
     int16 a, b,c;
     
     set_adc_channel(0);              // Prepara o canal leitura da Inclinação
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     angulo = ((a + b+ c)/3);
      
  } 
 
void A1()                             //Leitura da Temperatura
  {
     int16 a, b,c;
     
     set_adc_channel(1);              // Prepara o canal leitura Temperatura
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     temperatura = ((a + b+ c)/3);
      
  }
 
void A2()                             // Leitura Corrente do PFV
  {
     int16 a, b,c;
     
     set_adc_channel(2);              // Prepara o canal Corrente do PFV
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     corrente = ((a + b+ c)/3);
      
  }
 
void A3()                             // Leitura Tensão do PFV
  {
     int16 a, b,c;
     
     set_adc_channel(3);              // Prepara o canal leitura tensão PFV
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     tensão = ((a + b+ c)/3);
      
  }
 
void A4()                             // Leitura LDR1
  {
     int16 a, b,c;
     
     set_adc_channel(4);              // Prepara o canal leitura do ldr1
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     ldr1 = ((a + b+ c)/3);
      
  }
  
void A5()                             // Leitura LDR2
  {
     int16 a, b,c;
     
     set_adc_channel(5);              // Prepara o canal leitura do ldr1
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     ldr2 = ((a + b+ c)/3);
      
  }
  
void A6()                             // Leitura LDR3
  {
     int16 a, b,c;
     
     set_adc_channel(6);              // Prepara o canal leitura do ldr1
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     ldr3 = ((a + b+ c)/3);
      
  }
 
void A7()                             // Leitura LDR4
  {
     int16 a, b,c;
     
     set_adc_channel(7);              // Prepara o canal leitura do ldr1
     delay_us(10);
     a = read_adc();
     b = read_adc();
     c = read_adc();
     ldr4 = ((a + b+ c)/3);
      
  }
 
/*****************************************************************************/
/*                          Programa Principal                               */
/*****************************************************************************/
 
void main()
   {
 
     setup_adc_ports(ALL_ANALOG);        // Define as entradas analógicas
     setup_adc(ADC_CLOCK_INTERNAL);      // Define clock da conversão A/D
     
     output_a(0x00);                     //Zerando todas as saidas
     output_b(0x00);
     output_c(0x00);
     output_d(0x00);
     output_e(0x00);
     
 
     lcd_init();
     lcd_putc("\f");
     
     lcd_gotoxy(3,1);                    //Inicialização do Sistema
     printf(lcd_putc,"Solar Track");
     lcd_gotoxy(1,2);
     printf(lcd_putc,"Eng. Mecatronica");
     lcd_gotoxy(2,3);
     printf(lcd_putc,"UNIP - Swift");
     lcd_gotoxy(2,4);
     printf(lcd_putc,"Carregando...");
     delay_ms(5000);
      
   while(true)
      {
      
      precisao = 10;
      
      lcd_putc("\f");
      
      //Medida do Angulo de Inclinação   (AN0)
      A0 ();
      An = ((0.28325 * angulo)-185);  //((0.5665 * (angulo/2)-185.573));
      lcd_gotoxy(1,1);                // Coloca Angulo no Display
      printf(lcd_putc,"%.2f%c",An,0xDF);
        
      //Medida da Temperatura      (AN1)
      A1();      // Lê canal 1 do ADC
      T = (0.08145 * temperatura);    // Converte em graus Celsius
      lcd_gotoxy(1,2);                // Coloca Temperatura no Display
      printf(lcd_putc,"%.1f%cC",T,0xDF);
 
      //Medida da Corrente de Entrada das PV       (AN2)
      A2();                           // Lê canal 2 do ADC
      C= (0.01953125 * corrente);     // Converte a corrente para Amperes. 0.03 é fator de correção visto em testes empiricos.
      lcd_gotoxy(10,1);               // Coloca corrente no Display
      printf(lcd_putc,"%.2fA",C);
 
      //Medida da Tensão de Entrada das PV       (AN3)
      A3();                           // Lê canal 2 do ADC
      Ten= (0.020507812 * tensão);    // Converte a tensão para Volts, tensão maxima de 21V.
      lcd_gotoxy(10,2);               // Coloca corrente no Display
      printf(lcd_putc,"%.2fV",Ten);
           
         
/*****************************************************************************/
/*                      Sensor de Luminosidade ON/OFF                        */
/*****************************************************************************/
      A0(); //An
      A4(); //ldr1      
      A5(); //ldr2      
      A6(); //ldr3      
      A7(); //ldr4
      
      if((490 <= An) && (An <= 815))   // Fim de curso digital em -45º e 45º
         {
            if((ldr1 - ldr2) > precisao)
               {
               output_high(pin_b7);
               }
               else output_low(pin_b7);
               
            if((ldr2 - ldr1) > precisao)
               {
               output_high(pin_b6);
               }
               else output_low(pin_b6);
         }
         else
            {
             if(An < 490) //S
                {
                 output_low(pin_b7);
                 if((ldr2 - ldr1) > precisao)
                    {
                    output_high(pin_b6);
                    }
                    else output_low(pin_b6);
                }
                  
             if(An > 815)
                {
                 output_low(pin_b6);
                 if((ldr1 - ldr2) > precisao)
                    {
                    output_high(pin_b7);
                    }
                    else output_low(pin_b7);
                } 
            }
         
      fim_dir = input(pin_d0);
      fim_esq = input(pin_d1);
      
      if((fim_dir == 1) && (fim_esq ==1))
         {
            if((ldr3 - ldr4) > precisao)
               {
               output_high(pin_b5);
               }
               else output_low(pin_b5);
               
            if((ldr3 - ldr4) > precisao)
               {
               output_high(pin_b4);
               }
               else output_low(pin_b4);
         
         }
         else
            {
             if(!fim_dir)
               {
               if((ldr4 - ldr3) > precisao)
                  {
                  output_high(pin_b4);
                  }
                  else output_low(pin_b4);
               }
            
             if(!fim_esq)
               {
               if((ldr3 - ldr4) > precisao)
                  {
                  output_high(pin_b5);
                  }
                  else output_low(pin_b5);
               }
            }
            
      
      
      
      
/*============================================================================*/
delay_ms(50);
 
 
}

 

}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Salve salve pessoal,

Estou querendo montar um painel solar, e para aumentar a eficiencia queria montar um sehguidor solar.

Estou tendo dificuldade para montar o sensor desse seguidor, pois preciso que saia deste sensor 4 sinais para entrar no PIC, sendo um sinal de cada sentido.

Projeto bem proximo ao deste video:

Ja vi sensores com LDR e foto transistor, porém não estou conseguindo fazer com nenhum deles.

agradeço desde ja a ajuda de todos.

 

@ilkyest , @MOR, e @mroberto98,

Ainda me parece mais correto utilizar dois conjuntos de LDRs, sendo um ligado a um servo que movimenta a plataforma horizontalmente, e outro ligado a outro servo que faz o movimento vertical.

Fazer um projeto com um microprocessador que tenha um relógio RTC, apenas para fornecer um horário inicial e final para a procura do Sol.

Cada conjunto de LDR's seria ajustado dentro de um pequeno tubo, e usaria um canal do microprocessador para medir o brilho relativo e poder comparar entre as mudanças de posiçao, que seriam feitas alterando o servo 10 graus de cada vez. A posição-alvo é aquela em que foi detectado o maior brilho.

Assim, ao chegar o horário inicial, faria as movimentações de um eixo de cada vez, variando 180 graus no servo, para localizar o máximo de brilho. Fazendo isso para cada eixo, deve localizar o Sol com uma boa precisão, pois 10 graus de erro não são significativos para o painel solar. E a cada meia hora faria um ajuste, localizando a melhor posicão, mas variando pouco em relação à posicão atual. E assim iria mantendo, até o horário final definido no programa.

Que que vocês acham disto ?

Paulo

 

Acho uma das melhores ideias.

Eu, por exemplo, faria com 4sensores... norte, sul, leste, oeste.

Link para o comentário
Compartilhar em outros sites

Eu a algum tempo vinha pensado em investir energia solar fotovoltaica mais era muito caro as placas, inversores, baterias mais agora párese que esta um pouca mais barato, então já comecei a entrar nessa esto com quatro placa de 140w ligado em paralelo num inverso grid-tie de 600w jogando direto na rede 220V eliminado o custo das baterias, as placa fica em cima do telhado não tem seguidor solar mais da uma boa produção.

O seguidor solar depende de mecanismo e eletrônica o custo e muito alto se você for comprar aqui, mais pode sair barato se você for comprar la fora.

Eu consegui um preço bom nas placa aqui, mais o resto não teve jeito peguei la fora.   

Link para o comentário
Compartilhar em outros sites

Então estou usando esse sensor mencionado com dois conjuntos de LDR e to trabalhando no codigo do RTC, vide link abaixo:

 

http://forum.clubedohardware.com.br/forums/topic/944761-problemas-com-ds1307-pic-em-c/page-3#entry5950024

 

onde mais pra frente ele me dira o horario de começo e fim do "rastreamento solar" e outras funçoes tambem.

 

Ja a questão do motor fazer uma varredura ja não acho muito necessario mas vou pesquisar um pouco.

 

 

Mas nesse codigo que postei acham que deveria mudar alguma coisa?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!