Sistema de monitorização solar "faça você mesmo": Optimize a sua utilização da energia solar
Este tutorial fornecerá um guia detalhado sobre como construir um sistema de rastreamento solar de baixo custo baseado no suporte de solo monopolar LINKSOLAR (link oficial), que pode melhorar a eficiência de geração de energia de um painel fotovoltaico de 100W por 30%-45%. O tutorial inclui código, uma lista de materiais e soluções de proteção contra as intempéries.
1. Porque é que precisamos de um sistema de monitorização solar?
1.1 Melhorar a eficiência da produção de eletricidade
- Montagem fixa: A captação diária de energia é de cerca de 70%.
- Seguimento de um eixo: A eficiência aumenta para 85%-90% (dados NREL).
- Seguimento de eixo duplo: Pode atingir até 95% (objetivo deste projeto).
1.2 Vantagens da Montagem LINKSOLAR
- Capacidade de carga de nível industrial: Um único poste suporta até 6 painéis de 100W.
- Modificação rápida: Compatível com o motor de passo NEMA17.
- Design resistente ao vento: Poste de aço galvanizado de 4 polegadas + fundação pré-enterrada.
2. Lista de materiais e preparação de ferramentas
Categoria | Modelo/Especificação | Descrição optimizada por palavra-chave |
---|---|---|
Montagem do núcleo | LINKSOLAR Monopolo Montagem no solo | Suporte solar para instalação no solo |
Motor de acionamento | NEMA17 + placa do controlador DRV8825 | Motor passo a passo de elevado binário para seguimento solar |
Sensor de luz | Módulo de sensor de luz digital TSL2591 | Sensor de luz I2C para monitorização fotovoltaica exterior |
Controlador principal | Placa de desenvolvimento ESP32 | Controlador de seguimento solar com WiFi |
3. Guia de instalação passo a passo
3.1 Etapas da modificação do suporte
- Reforço do poste
- Soldar um rolamento de flange (modelo FYLC-205) na parte superior do suporte LINKSOLAR.
- Fixar o motor NEMA17 com parafusos em U (eixo de rotação horizontal).
- Estrutura de ajuste da inclinação
- Utilize alumínio em forma de L (6061-T6) para ligar o painel ao segundo motor.
- Instalar os interruptores de limite (KW12-3) para evitar a rotação excessiva.
3.2 Esquema de ligação dos circuitos
[Dica de SEO] Utilize texto alternativo para descrever a imagem:
"Esquema elétrico do sistema de seguimento solar - o ESP32 controla os motores de eixo duplo e o sensor de luz."
4. Explicação do código Arduino (com o algoritmo PID)
4.1 Descrição geral da estrutura do código
O código Arduino para este sistema é baseado num algoritmo de controlo PID, utilizando o sensor de luz TSL2591 e o sensor de orientação MPU6050 para ajustar o ângulo do painel solar em tempo real para o seguimento de dois eixos. O código está dividido nas seguintes secções:
- Inicialização do sensor: Inclui a configuração do sensor de luz TSL2591 e do sensor de orientação MPU6050.
- Controlo PID: Utiliza o algoritmo PID para calcular os passos do motor para um controlo preciso horizontal (azimute) e vertical (elevação).
- Acionamento do motor: Controla a direção e os passos do motor passo a passo com base na saída PID.
- Monitorização de dados: Emite dados do sensor e cálculos PID via série para depuração.
4.2 Código completo
#include
#include
#include
#include
// Objectos do sensor
Adafruit_TSL2591 tslEast = Adafruit_TSL2591(0x29);
Adafruit_TSL2591 tslWest = Adafruit_TSL2591(0x30);
MPU6050 mpu;
// Parâmetros PID
double Kp = 2,0, Ki = 0,5, Kd = 0,1;
double inputEast, inputVertical, outputStepH, outputStepV;
double setpointH = 0, setpointV = 45; // Ângulo de inclinação inicial 45°
PID horizontalPID(&inputEast, &outputStepH, &setpointH, Kp, Ki, Kd, DIRECT);
PID verticalPID(&inputVertical, &outputStepV, &setpointV, Kp, Ki, Kd, DIRECT);
// Definições de pinos
#define STEP_H 12
#define DIR_H 13
#definir STEP_V 14
#define DIR_V 15
void setup() {
Serial.begin(115200);
Wire.begin();
// Inicializar sensores
tslEast.begin();
tslWest.begin();
mpu.initialize();
// Definir o ganho do TSL2591
tslEast.setGain(TSL2591_GAIN_MED);
tslWest.setGain(TSL2591_GAIN_MED);
// Inicializar o PID
horizontalPID.SetMode(AUTOMATIC);
verticalPID.SetMode(AUTOMATIC);
horizontalPID.SetOutputLimits(-200, 200);
verticalPID.SetOutputLimits(-100, 100);
// Definir os modos dos pinos do motor
pinMode(STEP_H, OUTPUT);
pinMode(DIR_H, OUTPUT);
pinMode(STEP_V, OUTPUT);
pinMode(DIR_V, OUTPUT);
}
void loop() {
// Ler a intensidade da luz a este e a oeste
uint32_t eastLux = tslEast.getFullLuminosity();
uint32_t westLux = tslWest.getFullLuminosity();
inputEast = (eastLux - westLux) / 1000.0;
// Ler o ângulo de inclinação atual
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
inputVertical = atan2(ay, az) * 180 / M_PI;
// Calcular a saída do PID
horizontalPID.Compute();
verticalPID.Compute();
// Acciona o motor horizontal
digitalWrite(DIR_H, outputStepH > 0 ? HIGH : LOW);
for(int i=0; i 0 ? HIGH : LOW);
for(int i=0; i<abs(outputStepV); i++){
digitalWrite(STEP_V, HIGH);
delayMicrossegundos(500);
digitalWrite(STEP_V, LOW);
delayMicrossegundos(500);
}
// Imprimir dados
Serial.print("Leste:");
Serial.print(eastLux);
Serial.print(" Oeste:");
Serial.print(westLux);
Serial.print(" Ângulo:");
Serial.println(inputVertical);
delay(1000);
}
4.3 Análise do código-chave
- Controlo PID
horizontalPID
everticalPID
controlam os motores horizontal e vertical, respetivamente.entradaLeste
einputVertical
são entradas PID, que representam a diferença de intensidade luminosa este-oeste e o ângulo de inclinação da corrente.outputStepH
eoutputStepV
são saídas PID, indicando os passos do motor.- Acionamento do motor
- Utilização
digitalWrite
para controlar a direção do motor (DIR_H
eDIR_V
). - Utilização
para
laço eatrasoMicrossegundos
para controlar a velocidade de passo do motor. - Monitorização de dados
- Saída da intensidade da luz este-oeste e do ângulo de inclinação atual via série para depuração e monitorização.
4.4 Instalação da biblioteca de chaves
- Gestor de bibliotecas do IDE Arduino
- Pesquisar e instalar
Biblioteca Adafruit TSL2591
. - Pesquisar e instalar
MPU6050 por Electronic Cats
. - Pesquisar e instalar
PID por Brett Beauregard
.
4.5 Processo de calibração
- Calibração do sensor de luz
void calibrateTSL() {
tslEast.setGain(TSL2591_GAIN_LOW);
tslWest.setGain(TSL2591_GAIN_LOW);
// Executar depois de alinhar ambos os sensores com a mesma fonte de luz
while(abs(tslEast.getLuminosity() - tslWest.getLuminosity()) > 100) {
delay(1000);
}
}
- Calibração do MPU6050
void calibrateMPU() {
mpu.CalibrateAccel(6); // calibração de 6 amostras
mpu.CalibrateGyro(6);
mpu.PrintActiveOffsets();
}
4.6 Caixas de impressão 3D
- Suportes do motor
- Caixas para sensores
5. Dicas de depuração e manutenção
5.1 Processo de calibração
- Calibração do sensor de luz
- Comparar as leituras do TSL2591 com um luxímetro (erro de ±3%).
- Reposição mecânica do zero
- Utilizar os interruptores de limite para definir as posições horizontais/verticais iniciais.
5.2 Manutenção de rotina
- Controlo trimestral: Limpar os resíduos dos carris e lubrificar as chumaceiras.
- Atualização anual: Atualizar os parâmetros PID (otimizar com base nos dados meteorológicos locais).
7. Perguntas mais frequentes (FAQ)
Tomar medidas: Contacte o pessoal oficial da LINKSOLAR e inicie o seu projeto de energia verde!
Esperamos que este tutorial o ajude a construir com sucesso um sistema de rastreamento solar eficiente!