Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

Componentes e Materiais

Arduino UNO × 1
Servos (Tower Pro MG996R) × 1
Fotorresistor (LDR) × 2
Resistor 10k ohm × 2
Conversor Boost 2.5V para 5V - USB Adaptado × 1
Painel Solar - Tamanho Hobby × 2

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Indo Verde

Tenho trabalhado na indústria de energia renovável na Austrália e mexido com Arduinos há algum tempo, mas foi apenas neste projeto que finalmente decidi combinar os dois e construir meu próprio pequeno dispositivo solar. Uma pequena observação: este projeto obviamente requer 5V para alimentar o Arduino e o servo, que são usados para maximizar a saída de painéis solares que, na melhor das hipóteses, produzem 3.4V. Então não é exatamente auto-sustentável. No entanto, o conceito é escalável. Se, por exemplo, você usasse este conceito em um array de 8 painéis, produzindo 12V, então você poderia alimentar o Arduino e carregar seu telefone sem fonte de energia externa. Planejo fazer isso um dia e adicionarei um link aqui quando acontecer.

Enquanto estou aqui, é melhor dar crédito às minhas fontes...

Ambos são boas fontes de informação sobre o assunto, e de onde tirei o conceito.

COMEÇANDO

Primeiro, você precisa de alguns painéis solares. Usei dois, embora possa usar quantos quiser, apenas pense em quanto um servo de 9g será capaz de levantar/abaixar (não torne muito pesado). Os painéis que encontrei eram classificados em 1.5V, 0.75W de saída, que está na extremidade inferior disponível hoje. Mas eram leves e baratos e, dado que este é um projeto de prova de conceito para mim, a saída não é super importante.

Uni meus dois painéis na borda com epóxi. Para conectar os painéis em série, apenas solde o fio positivo de um painel ao negativo do outro, o que deve deixar você com um fio positivo e um negativo sobrando. Prenda seus dois LDRs em cada lado do painel solar (Leste e Oeste), e solde uma ponta de um jumper em cada um de seus terminais. É mais fácil soldar um jumper se você cortar a ponta de um lado e descascar o terminal cerca de 5mm para expor os fios.

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

Para o Arduino ler os LDRs, precisamos de um circuito divisor de tensão para cada. Veja aqui para divisores de tensão. Neste circuito, o LDR é R1, e usamos um resistor de 10kohm para R2, e conectamos jumpers ao Arduino onde os dois resistores se encontram. Se estiver montando este projeto em uma protoboard, um terminal do LDR irá para o divisor de tensão, o outro vai para o rail de alimentação positivo. Veja o diagrama Fritzing abaixo.

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

A Estrutura do Rastreador

A próxima coisa que você precisa construir é uma estrutura de suporte giratória para o painel sentar. Meu design é basicamente um comprimento de aço de mola suportado por dois frames em A. A parte inferior do array de painéis tem pequenas estruturas de madeira, com furos para o aço de mola. Fiz tudo de madeira balsa para manter barato, fácil e leve, mas se fosse para ser um fixo permanente, você iria querer de aço fino ou madeira compensada tratada. Não documentei bem a construção do suporte giratório, mas o vídeo abaixo deve mostrar como é feito, bem como a localização do servo. Construí o meu com o painel em um ângulo para baixo, de forma a poder apontar a base da estrutura para o norte, então seja qual for a direção que o painel balanceie enquanto rastreia o sol, ele sempre estará inclinado um pouco para o norte para maximizar a saída. (Estou no hemisfério sul)

Montando o Servo

O Servo fica em uma das vigas de suporte da estrutura em A, e levanta/abaixa um lado do painel. Dobrei algum aço de mola com alicates para obter extremidades ganchadas que você pode passar pela estrutura do painel e braço do servo. Pode ser necessário alargar os furos no braço do servo para encaixar o aço. Usei a menor broca que encontrei. Não cole o aço nem no braço do servo nem na estrutura do painel, pois ele deve ser capaz de girar dentro dos furos para o painel subir suavemente. Uma vez no lugar, retire o painel da estrutura, para que apenas o servo permaneça, para que você possa fazer a calibração.

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

Calibrando o Servo

Abra um novo sketch e insira o seguinte código.

#include <Servo.h>
Servo myservo1; // Cria objeto servo para controlar o servo
int pos = 10;
void setup() {
  myservo1.attach(9); // anexa o objeto servo ao pino PWM 9
}
void loop() {
  myservo1.write(pos);
}

Faça upload para seu Arduino, e veja para onde o servo move. Continue mudando o valor 'pos' entre 0 e 180 no sketch e reenviando o sketch, até encontrar as posições onde o braço do servo aponta reto para cima e para baixo. Esses são seus valores máximo e mínimo. Para mim, foram 15 e 140. Se o valor de alguma forma sobrepor de 180 de volta a 0, retire o braço do servo e reposicione-o para que possa ser alinhado corretamente.

Juntando Tudo

Vá em frente e conecte tudo, e insira o seguinte sketch.

// Sun Tracker Sketch
// Este sketch é projetado para uso com servo 9g, capaz
// de ser alimentado diretamente do Arduino sem fonte
// de energia externa. Para diagrama Fritzing, veja repositório Github
// https://github.com/nickalanf/Arduino--Projects
// A seção Serial Monitor é para propósitos de debug, ou interesse geral,
// uma vez que o dispositivo está funcionando corretamente, pode ser desabilitada
// Sketch por FIELDING - 8/2/18
#include <Servo.h>
Servo servo; // Cria objeto servo para controlar o servo
int eLDRPin = A0; // Atribui pinos aos LDRs
int wLDRPin = A1;
int eastLDR = 0; // Cria variáveis para armazenar leituras dos LDRs
int westLDR = 0;
int difference = 0; // Cria variável para comparar os dois LDRs
int error = 10; // Variável para diferença perceptível entre os dois LDRs
int servoSet = 130; // Variável para posição do servo - será diferente para cada dispositivo
void setup() {
  servo.attach(9); // anexa objeto servo ao pino PWM 9
  Serial.begin(9600);
}
void loop() {
  eastLDR = analogRead(eLDRPin); // Lê valores dos LDRs
  westLDR = analogRead(wLDRPin);
  if (eastLDR < 400 && westLDR < 400) {
    // Verifica se há pouca luz em ambos os LDRs
    while (servoSet <=140 && servoSet >=15) {
      // se sim, envia painéis de volta para leste para o nascer do sol
      servoSet++;
      servo.write(servoSet);
      delay(100);
    }
  }
  difference = eastLDR - westLDR; // Verifica a diferença
  if (difference > 10) {
    // Envia o painel em direção ao LDR com leitura maior
    if (servoSet <= 140) {
      servoSet++;
      servo.write(servoSet);
    }
  } else if (difference < -10) {
    if (servoSet >= 15) {
      servoSet--;
      servo.write(servoSet);
    }
  }
  Serial.print(eastLDR); // Serial monitor útil para debug/configuração
  Serial.print(" - "); // Use para ver se seus LDRs são notavelmente diferentes quando
  Serial.print(westLDR); // Eles têm luz igual brilhando neles, se sim, corrija com o valor error
  Serial.print(" - ");
  Serial.print(difference);
  Serial.print(" - ");
  Serial.print(servoSet); // Ajuste fino das configurações do servo, para maximizar oscilação disponível
  Serial.print(" - ");
  Serial.println(".");
  delay(100);
}

Abra o Monitor Serial e ilumine os LDRs. Tente iluminar uniformemente ambos, e verifique qual o valor da diferença sendo impresso no monitor serial. Se for maior que cerca de 25, ou menor que -25, você precisa adicionar uma calibração de erro. Adicione o valor de erro relevante no código, e então adicione ou subtraia esse valor do LDR relevante. Se os valores de diferença estiverem próximos, deve ficar bem como está.

Você está pronto para testar! O mais fácil é entrar em um quarto escuro e com uma lanterna/lâmpada. Balançe a luz de um LDR lentamente para o outro e observe o painel mover. Você também pode cobrir um LDR e o painel deve balançar para longe daquele.

BÔNUS - CARREGADOR DE TELEFONE

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

Se você quiser realmente fazer uso da saída dos painéis, pode ligar um conversor boost DC-DC 2.5V-5V diretamente nos fios saindo dos painéis. É um circuito totalmente separado do Arduino/protoboard. Note que um telefone padrão carrega a 5V, e seus painéis podem estar produzindo 5V mas com corrente baixa, então se sua bateria estiver cheia ou a luz solar baixa, você não terá saída suficiente para carregar. A maneira mais fácil de contornar isso é simplesmente adicionar mais painéis!

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

Código

Sun Tracker Processing
// Sun Tracker Sketch
// Este sketch é projetado para uso com servo 9g, capaz
// de ser alimentado diretamente do Arduino sem fonte
// de energia externa. Para diagrama Fritzing, veja repositório Github
// https://github.com/nickalanf/Arduino--Projects
// A seção Serial Monitor é para propósitos de debug, ou interesse geral,
// uma vez que o dispositivo está funcionando corretamente, pode ser desabilitada
// Sketch por FIELDING - 8/2/18
#include <Servo.h>
Servo servo; // Cria objeto servo para controlar o servo
int eLDRPin = A0; // Atribui pinos aos LDRs
int wLDRPin = A1;
int eastLDR = 0; // Cria variáveis para armazenar leituras dos LDRs
int westLDR = 0;
int difference = 0; // Cria variável para comparar os dois LDRs
int error = 10; // Variável para diferença perceptível entre os dois LDRs
int servoSet = 130; // Variável para posição do servo - será diferente para cada dispositivo
void setup() {
  servo.attach(9); // anexa objeto servo ao pino PWM 9
  Serial.begin(9600);
}
void loop() {
  eastLDR = analogRead(eLDRPin); // Lê valores dos LDRs
  westLDR = analogRead(wLDRPin);
  if (eastLDR < 400 && westLDR < 400) {
    // Verifica se há pouca luz em ambos os LDRs
    while (servoSet <=140 && servoSet >=15) {
      // se sim, envia painéis de volta para leste para o nascer do sol
      servoSet++;
      servo.write(servoSet);
      delay(100);
    }
  }
  difference = eastLDR - westLDR; // Verifica a diferença
  if (difference > 10) {
    // Envia o painel em direção ao LDR com leitura maior
    if (servoSet <= 140) {
      servoSet++;
      servo.write(servoSet);
    }
  } else if (difference < -10) {
    if (servoSet >= 15) {
      servoSet--;
      servo.write(servoSet);
    }
  }
  Serial.print(eastLDR); // Serial monitor útil para debug/configuração
  Serial.print(" - "); // Use para ver se seus LDRs são notavelmente diferentes quando
  Serial.print(westLDR); // Eles têm luz igual brilhando neles, se sim, corrija com o valor error
  Serial.print(" - ");
  Serial.print(difference);
  Serial.print(" - ");
  Serial.print(servoSet); // Ajuste fino das configurações do servo, para maximizar oscilação disponível
  Serial.print(" - ");
  Serial.println(".");
  delay(100);
}

Esquemáticos

Carregador Solar Portátil com Rastreador Solar Arduino e Controle por Servo

Processo de manufatura

  1. Células Solares: Dos Primeiros Experimentos à Fotovoltaica Moderna – Tecnologia, Produção e Perspectivas Futuras
  2. Monitoramento em Tempo Real de Painel Solar com Arduino: Sistema de Aquisição de Dados de Baixo Custo
  3. Rastreador Solar V2.0 – Sistema Avançado de Rastreamento Solar DIY
  4. Rastreador Solar IoT: Gestão Inteligente de Energia com Arduino
  5. Sistema Solar de Rastreamento Solar DIY com Arduino UNO (Duplo Eixo)
  6. SmartPostBox: Caixa de Correio Inteligente IoT com Notificação por Email
  7. Plataforma de Rastreamento Solar de Precisão com Servos para Captura Ótima de Energia
  8. Rastreador Solar de Dois Eixos com Controle Automático e Manual - Sistema Eficiente de Rastreamento Solar
  9. Qualidade de Painéis Solares: Pontos de Controle Essenciais para Desempenho Ótimo
  10. Como Painéis Solares São Fabricados: Guia Passo a Passo para Produção de Energia Solar de Alta Qualidade