Sistema de seguimiento solar DIY: Optimice el uso de la energía solar
Este tutorial proporcionará una guía detallada sobre cómo construir un sistema de seguimiento solar de bajo coste basado en el soporte de tierra monopolo LINKSOLAR (enlace oficial), que puede mejorar la eficiencia de generación de energía de un panel fotovoltaico de 100W en 30%-45%. El tutorial incluye el código, una lista de materiales y soluciones de resistencia a la intemperie.
1. ¿Por qué necesitamos un sistema de seguimiento solar?
1.1 Mejora de la eficiencia de la generación de energía
- Montaje fijo: La captación diaria de energía es de unas 70%.
- Seguimiento de un eje: La eficiencia aumenta hasta 85%-90% (datos del NREL).
- Seguimiento de doble eje: Puede alcanzar hasta 95% (objetivo de este proyecto).
1.2 Ventajas de Montaje LINKSOLAR
- Capacidad de carga industrial: Un solo poste soporta hasta 6 paneles de 100 W.
- Modificación rápida: Compatible con motor paso a paso NEMA17.
- Diseño resistente al viento: Poste de acero galvanizado de 4 pulgadas + cimentación preenterrada.
2. Lista de materiales y preparación de herramientas
Categoría | Modelo/Especificación | Descripción optimizada por palabras clave |
---|---|---|
Montaje en el núcleo | Monopolo LINKSOLAR para montaje en suelo | Soporte solar para instalación en el suelo |
Motor de accionamiento | NEMA17 + Placa de controladores DRV8825 | Motor paso a paso de alto par para seguimiento solar |
Sensor de luz | Módulo sensor de luz digital TSL2591 | Sensor de luz I2C para seguimiento fotovoltaico en exteriores |
Controlador principal | Placa de desarrollo ESP32 | Controlador de seguimiento solar con WiFi |
3. Guía de instalación paso a paso
3.1 Pasos de la modificación del montaje
- Refuerzo de postes
- Soldar un cojinete de brida (modelo FYLC-205) a la parte superior del soporte LINKSOLAR.
- Fije el motor NEMA17 con pernos en U (eje de rotación horizontal).
- Estructura de ajuste de la inclinación
- Utilice aluminio en forma de L (6061-T6) para conectar el panel al segundo motor.
- Instale interruptores de fin de carrera (KW12-3) para evitar la rotación excesiva.
3.2 Diagrama de conexión del circuito
[Sugerencia SEO] Utilice un texto alternativo para describir la imagen:
"Diagrama de cableado del sistema de seguimiento solar - ESP32 controla motores de doble eje y sensor de luz".
4. Explicación del código Arduino (con algoritmo PID)
4.1 Estructura del código
El código Arduino para este sistema se basa en un algoritmo de control PID, utilizando el sensor de luz TSL2591 y el sensor de orientación MPU6050 para ajustar el ángulo del panel solar en tiempo real para el seguimiento de doble eje. El código se divide en las siguientes secciones:
- Inicialización del sensor: Incluye el sensor de luz TSL2591 y la configuración del sensor de orientación MPU6050.
- Control PID: Utiliza el algoritmo PID para calcular los pasos del motor para un control horizontal (acimut) y vertical (elevación) preciso.
- Accionamiento del motor: Controla la dirección y los pasos del motor paso a paso basándose en la salida PID.
- Supervisión de datos: Salida de datos de sensores y cálculos PID vía serie para depuración.
4.2 Código completo
#include
#include
#include
#include
// Objetos sensores
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 entradaEste, entradaVertical, salidaPasoH, salidaPasoV;
double setpointH = 0, setpointV = 45; // Ángulo de inclinación inicial 45
PID horizontalPID(&inputEast, &outputStepH, &setpointH, Kp, Ki, Kd, DIRECT);
PID verticalPID(&inputVertical, &outputStepV, &setpointV, Kp, Ki, Kd, DIRECTO);
// Definiciones de pines
#define STEP_H 12
#define DIR_H 13
#define STEP_V 14
#define DIR_V 15
void setup() {
Serial.begin(115200);
Wire.begin();
// Inicializar sensores
tslEast.begin();
tslWest.begin();
mpu.initialize();
// Ajustar ganancia TSL2591
tslEast.setGain(TSL2591_GAIN_MED);
tslWest.setGain(TSL2591_GAIN_MED);
// Inicializar PID
horizontalPID.SetMode(AUTOMATIC);
verticalPID.SetMode(AUTOMATIC);
horizontalPID.SetOutputLimits(-200, 200);
verticalPID.SetOutputLimits(-100, 100);
// Configura los modos de los pines del motor
pinMode(STEP_H, OUTPUT);
pinMode(DIR_H, OUTPUT);
pinMode(STEP_V, OUTPUT);
pinMode(DIR_V, OUTPUT);
}
void loop() {
// Leer intensidad de luz este y oeste
uint32_t eastLux = tslEast.getFullLuminosity();
uint32_t westLux = tslWest.getFullLuminosity();
inputEast = (eastLux - westLux) / 1000.0;
// Leer ángulo de inclinación actual
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
inputVertical = atan2(ay, az) * 180 / M_PI;
// Calcular salida PID
horizontalPID.Compute();
verticalPID.Compute();
// Accionar 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);
delayMicrosegundos(500);
digitalWrite(PASO_V, BAJO);
delayMicrosegundos(500);
}
// Imprimir datos
Serial.print("Este:");
Serial.print(esteLux);
Serial.print(" Oeste:");
Serial.print(westLux);
Serial.print(" Ángulo:");
Serial.println(entradaVertical);
delay(1000);
}
4.3 Análisis de códigos clave
- Control PID
horizontalPID
yverticalPID
controlan los motores horizontal y vertical, respectivamente.entradaEste
yentradaVertical
son entradas PID, que representan la diferencia de intensidad luminosa este-oeste y el ángulo de inclinación de la corriente.outputStepH
youtputStepV
son salidas PID, que indican los pasos del motor.- Accionamiento del motor
- Utilice
digitalWrite
para controlar la dirección del motor (DIR_H
yDIR_V
). - Utilice
para
bucle yretardoMicrosegundos
para controlar la velocidad de paso del motor. - Supervisión de datos
- Salida de intensidad luminosa este-oeste y ángulo de inclinación actual vía serie para depuración y monitorización.
4.4 Instalación de la biblioteca de llaves
- Gestor de bibliotecas del IDE Arduino
- Buscar e instalar
Biblioteca Adafruit TSL2591
. - Buscar e instalar
MPU6050 de Electronic Cats
. - Buscar e instalar
PID por Brett Beauregard
.
4.5 Proceso de calibración
- Calibración del sensor de luz
void calibrarTSL() {
tslEast.setGain(TSL2591_GAIN_LOW);
tslWest.setGain(TSL2591_GAIN_LOW);
// Ejecutar después de alinear ambos sensores a la misma fuente de luz
while(abs(tslEast.getLuminosity() - tslWest.getLuminosity()) > 100) {
delay(1000);
}
}
- MPU6050 Calibración
void calibrarMPU() {
mpu.CalibrateAccel(6); // Calibración de 6 muestras
mpu.CalibrateGyro(6);
mpu.PrintActiveOffsets();
}
4.6 Carcasas de impresión 3D
- Soportes de motor
- Cajas de sensores
5. Consejos de depuración y mantenimiento
5.1 Proceso de calibración
- Calibración del sensor de luz
- Compare las lecturas del TSL2591 con un luxómetro (error dentro de ±3%).
- Puesta a cero mecánica
- Utilice los finales de carrera para fijar las posiciones horizontales/verticales iniciales.
5.2 Mantenimiento rutinario
- Cheque trimestral: Limpiar los residuos del carril y lubricar los cojinetes.
- Actualización anual: Actualizar los parámetros PID (optimizar en función de los datos meteorológicos locales).
7. Preguntas más frecuentes (FAQ)
Actúa: Póngase en contacto con el personal oficial de LINKSOLAR y ponga en marcha su proyecto de energía verde.
Esperamos que este tutorial te ayude a construir con éxito un sistema de seguimiento solar eficiente!