Sistema di inseguimento solare fai da te: Ottimizzare l'uso dell'energia solare
Questo tutorial fornisce una guida dettagliata su come costruire un sistema di inseguimento solare a basso costo basato sul supporto a terra monopolare LINKSOLAR (link ufficiale), che può migliorare l'efficienza di produzione di energia di un pannello fotovoltaico da 100W di 30%-45%. Il tutorial include il codice, l'elenco dei materiali e le soluzioni per la protezione dalle intemperie.
1. Perché abbiamo bisogno di un sistema di inseguimento solare?
1.1 Migliorare l'efficienza della produzione di energia elettrica
- Montaggio fisso: La cattura giornaliera di energia è di circa 70%.
- Tracciamento a singolo asse: L'efficienza aumenta a 85%-90% (dati NREL).
- Tracciamento a doppio asse: Può raggiungere 95% (obiettivo di questo progetto).
1.2 Vantaggi di Monte LINKSOLAR
- Capacità di carico di livello industriale: Un singolo polo supporta fino a 6 pannelli da 100W.
- Modifica rapida: Compatibile con il motore passo-passo NEMA17.
- Design resistente al vento: Palo in acciaio zincato da 4 pollici + fondazione preinterrata.
2. Elenco dei materiali e preparazione degli strumenti
Categoria | Modello/Specifiche | Descrizione ottimizzata per le parole chiave |
---|---|---|
Montaggio del nucleo | LINKSOLAR Monopolo con montaggio a terra | Supporto solare per installazione a terra |
Motore di azionamento | NEMA17 + scheda driver DRV8825 | Motore passo-passo ad alta coppia per l'inseguimento solare |
Sensore di luce | Modulo sensore di luce digitale TSL2591 | Sensore di luce I2C per l'inseguimento del fotovoltaico all'aperto |
Controllore principale | Scheda di sviluppo ESP32 | Regolatore di inseguimento solare abilitato al WiFi |
3. Guida all'installazione passo-passo
3.1 Fasi di modifica del supporto
- Rinforzo dei pali
- Saldare un cuscinetto a flangia (modello FYLC-205) alla parte superiore del supporto LINKSOLAR.
- Fissare il motore NEMA17 con bulloni a U (asse di rotazione orizzontale).
- Struttura di regolazione dell'inclinazione
- Utilizzare alluminio a L (6061-T6) per collegare il pannello al secondo motore.
- Installare i finecorsa (KW12-3) per evitare la rotazione eccessiva.
3.2 Schema di collegamento del circuito
[Utilizzate il testo alt per descrivere l'immagine:
"Schema di cablaggio del sistema di inseguimento solare - ESP32 controlla i motori a doppio asse e il sensore di luce".
4. Spiegazione del codice Arduino (con algoritmo PID)
4.1 Panoramica della struttura del codice
Il codice Arduino per questo sistema si basa su un algoritmo di controllo PID, che utilizza il sensore di luce TSL2591 e il sensore di orientamento MPU6050 per regolare l'angolo del pannello solare in tempo reale per l'inseguimento su due assi. Il codice è suddiviso nelle seguenti sezioni:
- Inizializzazione del sensore: Include la configurazione del sensore di luce TSL2591 e del sensore di orientamento MPU6050.
- Controllo PID: Utilizza l'algoritmo PID per calcolare i passi del motore per un preciso controllo orizzontale (azimut) e verticale (elevazione).
- Azionamento del motore: Controlla la direzione e i passi del motore passo-passo in base all'uscita PID.
- Monitoraggio dei dati: Emette i dati del sensore e i calcoli PID via seriale per il debug.
4.2 Codice completo
#include
#include
#include
#include
// Oggetti sensore
Adafruit_TSL2591 tslEast = Adafruit_TSL2591(0x29);
Adafruit_TSL2591 tslWest = Adafruit_TSL2591(0x30);
MPU6050 mpu;
// Parametri PID
double Kp = 2,0, Ki = 0,5, Kd = 0,1;
double inputEast, inputVertical, outputStepH, outputStepV;
double setpointH = 0, setpointV = 45; // angolo di inclinazione iniziale di 45°
PID horizontalPID(&inputEast, &outputStepH, &setpointH, Kp, Ki, Kd, DIRECT);
PID verticalPID(&inputVertical, &outputStepV, &setpointV, Kp, Ki, Kd, DIRECT);
// Definizioni dei pin
#define STEP_H 12
#define DIR_H 13
#define STEP_V 14
#define DIR_V 15
void setup() {
Serial.begin(115200);
Wire.begin();
// Inizializza i sensori
tslEast.begin();
tslWest.begin();
mpu.initialize();
// Impostare il guadagno del TSL2591
tslEast.setGain(TSL2591_GAIN_MED);
tslWest.setGain(TSL2591_GAIN_MED);
// Inizializza il PID
horizontalPID.SetMode(AUTOMATIC);
verticalPID.SetMode(AUTOMATIC);
horizontalPID.SetOutputLimits(-200, 200);
verticalPID.SetOutputLimits(-100, 100);
// Impostazione delle modalità dei pin del motore
pinMode(STEP_H, OUTPUT);
pinMode(DIR_H, OUTPUT);
pinMode(STEP_V, OUTPUT);
pinMode(DIR_V, OUTPUT);
}
void loop() {
// Leggere l'intensità luminosa di est e ovest
uint32_t eastLux = tslEast.getFullLuminosity();
uint32_t westLux = tslWest.getFullLuminosity();
inputEast = (eastLux - westLux) / 1000.0;
// Leggere l'angolo di inclinazione corrente
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
inputVertical = atan2(ay, az) * 180 / M_PI;
// Calcolo dell'uscita PID
horizontalPID.Compute();
verticalPID.Compute();
// Azionare il motore orizzontale
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);
ritardoMicrosecondi(500);
digitalWrite(STEP_V, LOW);
delayMicrosecondi(500);
}
// Stampa dei dati
Serial.print("Est:");
Serial.print(eastLux);
Serial.print(" Ovest:");
Serial.print(westLux);
Serial.print(" Angolo:");
Serial.println(inputVertical);
ritardo(1000);
}
4.3 Analisi dei codici chiave
- Controllo PID
orizzontalePID
everticalePID
controllano rispettivamente i motori orizzontali e verticali.ingressoEst
eingressoVerticale
sono ingressi PID che rappresentano la differenza di intensità luminosa est-ovest e l'angolo di inclinazione della corrente.uscitaFaseH
euscitaFaseV
sono uscite PID che indicano i passi del motore.- Azionamento del motore
- Utilizzo
digitaleScrittura
per controllare la direzione del motore (DIR_H
eDIR_V
). - Utilizzo
per
ciclo eritardoMicrosecondi
per il controllo della velocità di rotazione del motore. - Monitoraggio dei dati
- Uscita dell'intensità luminosa est-ovest e dell'angolo di inclinazione corrente via seriale per il debug e il monitoraggio.
4.4 Installazione della libreria delle chiavi
- Gestore delle librerie dell'IDE Arduino
- Ricerca e installazione
Libreria Adafruit TSL2591
. - Ricerca e installazione
MPU6050 di Electronic Cats
. - Ricerca e installazione
PID di Brett Beauregard
.
4.5 Processo di calibrazione
- Calibrazione del sensore di luce
void calibrateTSL() {
tslEast.setGain(TSL2591_GAIN_LOW);
tslWest.setGain(TSL2591_GAIN_LOW);
// Eseguire dopo aver allineato entrambi i sensori alla stessa sorgente luminosa
while(abs(tslEast.getLuminosity() - tslWest.getLuminosity()) > 100) {
delay(1000);
}
}
- Calibrazione MPU6050
void calibrateMPU() {
mpu.CalibrateAccel(6); // calibrazione a 6 campioni
mpu.CalibrateGyro(6);
mpu.PrintActiveOffsets();
}
4.6 Involucri per la stampa 3D
- Supporti motore
- Custodie per sensori
5. Suggerimenti per il debug e la manutenzione
5.1 Processo di calibrazione
- Calibrazione del sensore di luce
- Confrontare le letture del TSL2591 con un luxmetro (errore entro ±3%).
- Azzeramento meccanico
- Utilizzare i finecorsa per impostare le posizioni orizzontali e verticali iniziali.
5.2 Manutenzione ordinaria
- Controllo trimestrale: Pulire i detriti della rotaia e lubrificare i cuscinetti.
- Aggiornamento annuale: Aggiornare i parametri PID (ottimizzare in base ai dati meteo locali).
7. Domande frequenti (FAQ)
Agire: Contattate il personale ufficiale di LINKSOLAR e iniziate il vostro progetto di energia verde!
Speriamo che questo tutorial vi aiuti a costruire con successo un sistema di inseguimento solare efficiente!