Table des matières

Système de suivi solaire bricolé : Optimisez votre utilisation de l'énergie solaire

Image de Dean Ding
Dean Ding

Concentration sur l'industrie solaire depuis 15 ans

Système de suivi solaire bricolé : Optimisez votre utilisation de l'énergie solaire

Ce tutoriel fournit un guide détaillé sur la façon de construire un système de suivi solaire à faible coût basé sur le support au sol monopôle LINKSOLAR (lien officiel), qui peut améliorer l'efficacité de la production d'énergie d'un panneau photovoltaïque de 100 W de 30%-45%. Le tutoriel comprend un code, une liste de matériaux et des solutions d'étanchéité.

1. Pourquoi avons-nous besoin d'un système de suivi solaire ?

1.1 Améliorer l'efficacité de la production d'électricité

  • Montage fixe: La capture quotidienne d'énergie est d'environ 70%.
  • Suivi d'un seul axe: L'efficacité passe à 85%-90% (données NREL).
  • Suivi à deux axes: Peut atteindre 95% (objectif de ce projet).

1.2 Avantages de la Mont LINKSOLAR

  • Capacité de charge de qualité industrielle: Un seul poteau supporte jusqu'à 6 panneaux de 100W.
  • Modification rapide: Compatible avec le moteur pas à pas NEMA17.
  • Conception résistante au vent: Poteau en acier galvanisé de 4 pouces + fondation pré-enfouie.

2. Liste des matériaux et préparation des outils

CatégorieModèle/SpécificationDescription optimisée par mot-clé
Montage du noyauLINKSOLAR Monopole Montage au solSupport solaire pour installation au sol
Moteur d'entraînementCarte de pilotage NEMA17 + DRV8825Moteur pas à pas à couple élevé pour le suivi solaire
Capteur de lumièreTSL2591 Module capteur de lumière numériqueCapteur de lumière I2C pour le suivi des panneaux photovoltaïques à l'extérieur
Contrôleur principalCarte de développement ESP32Contrôleur de suivi solaire compatible Wi-Fi

3. Guide d'installation pas à pas

3.1 Etapes de la modification de la monture

  • Renforcement des poteaux
  • Souder un palier à bride (modèle FYLC-205) sur la partie supérieure du support LINKSOLAR.
  • Fixer le moteur NEMA17 avec des boulons en U (axe de rotation horizontal).
  • Structure de réglage de l'inclinaison
  • Utilisez de l'aluminium en forme de L (6061-T6) pour relier le panneau au deuxième moteur.
  • Installer des interrupteurs de fin de course (KW12-3) pour éviter une rotation excessive.

3.2 Schéma de connexion des circuits

[Conseil de référencement] Utilisez le texte alt pour décrire l'image :
"Schéma de câblage d'un système de suivi solaire - L'ESP32 contrôle les moteurs à deux axes et le capteur de lumière".

4. Explication du code Arduino (avec algorithme PID)

4.1 Aperçu de la structure du code

Le code Arduino pour ce système est basé sur un algorithme de contrôle PID, utilisant le capteur de lumière TSL2591 et le capteur d'orientation MPU6050 pour ajuster l'angle du panneau solaire en temps réel pour un suivi à deux axes. Le code est divisé en plusieurs sections :

  • Initialisation du capteur: Comprend le capteur de lumière TSL2591 et le capteur d'orientation MPU6050.
  • Contrôle PID: Utilise l'algorithme PID pour calculer les pas du moteur afin d'obtenir un contrôle horizontal (azimut) et vertical (élévation) précis.
  • Entraînement par moteur: Contrôle la direction et les pas du moteur pas à pas en fonction de la sortie PID.
  • Contrôle des données: Affiche les données du capteur et les calculs PID via une interface série pour le débogage.

4.2 Code complet

#include 
#include 
#include 
#include 

// Objets capteurs
Adafruit_TSL2591 tslEast = Adafruit_TSL2591(0x29) ;
Adafruit_TSL2591 tslWest = Adafruit_TSL2591(0x30) ;
MPU6050 mpu ;

// Paramètres PID
double Kp = 2.0, Ki = 0.5, Kd = 0.1 ;
double inputEast, inputVertical, outputStepH, outputStepV ;
double setpointH = 0, setpointV = 45 ; // Angle d'inclinaison initial de 45°.

PID horizontalPID(&inputEast, &outputStepH, &setpointH, Kp, Ki, Kd, DIRECT) ;
PID verticalPID(&inputVertical, &outputStepV, &setpointV, Kp, Ki, Kd, DIRECT) ;

// Définitions des broches
#define STEP_H 12
#define DIR_H 13
#define STEP_V 14
#define DIR_V 15

void setup() {
  Serial.begin(115200) ;
  Wire.begin() ;

  // Initialisation des capteurs
  tslEast.begin() ;
  tslWest.begin() ;
  mpu.initialize() ;

  // Régler le gain du TSL2591
  tslEast.setGain(TSL2591_GAIN_MED) ;
  tslWest.setGain(TSL2591_GAIN_MED) ;

  // Initialisation du PID
  horizontalPID.SetMode(AUTOMATIC) ;
  verticalPID.SetMode(AUTOMATIC) ;
  horizontalPID.SetOutputLimits(-200, 200) ;
  verticalPID.SetOutputLimits(-100, 100) ;

  // Définition des modes de brochage du moteur
  pinMode(STEP_H, OUTPUT) ;
  pinMode(DIR_H, OUTPUT) ;
  pinMode(STEP_V, OUTPUT) ;
  pinMode(DIR_V, OUTPUT) ;
}

void loop() {
  // Lecture de l'intensité lumineuse à l'est et à l'ouest
  uint32_t eastLux = tslEast.getFullLuminosity() ;
  uint32_t westLux = tslWest.getFullLuminosity() ;
  inputEast = (eastLux - westLux) / 1000.0 ;

  // Lecture de l'angle d'inclinaison actuel
  int16_t ax, ay, az ;
  mpu.getAcceleration(&ax, &ay, &az) ;
  inputVertical = atan2(ay, az) * 180 / M_PI ;

  // Calcul de la sortie PID
  horizontalPID.Compute() ;
  verticalPID.Compute() ;

  // Pilotage du moteur 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) ;
    delayMicroseconds(500) ;
    digitalWrite(STEP_V, LOW) ;
    delayMicroseconds(500) ;
  }

  // Impression des données
  Serial.print("Est :") ;
  Serial.print(eastLux) ;
  Serial.print(" Ouest : ") ;
  Serial.print(westLux) ;
  Serial.print(" Angle : ") ;
  Serial.println(inputVertical) ;

  delay(1000) ;
}

4.3 Analyse des codes clés

  • Contrôle PID
  • horizontalPID et verticalPID contrôlent respectivement les moteurs horizontaux et verticaux.
  • entréeEst et inputVertical sont des entrées PID représentant la différence d'intensité lumineuse est-ouest et l'angle d'inclinaison du courant.
  • outputStepH et outputStepV sont des sorties PID, indiquant les pas du moteur.
  • Entraînement par moteur
  • Utilisation digitalWrite pour contrôler la direction du moteur (DIR_H et DIR_V).
  • Utilisation pour et delayMicroseconds pour contrôler la vitesse de pas du moteur.
  • Contrôle des données
  • Sortie de l'intensité lumineuse est-ouest et de l'angle d'inclinaison actuel via une interface série pour le débogage et la surveillance.

4.4 Installation de la bibliothèque de clés

  • Gestionnaire de bibliothèque de l'IDE Arduino
  • Recherche et installation Bibliothèque Adafruit TSL2591.
  • Recherche et installation MPU6050 par Electronic Cats.
  • Recherche et installation PID par Brett Beauregard.

4.5 Processus d'étalonnage

  • Étalonnage du capteur de lumière
  void calibrateTSL() {
    tslEast.setGain(TSL2591_GAIN_LOW) ;
    tslWest.setGain(TSL2591_GAIN_LOW) ;
    // Exécution après alignement des deux capteurs sur la même source lumineuse
    while(abs(tslEast.getLuminosity() - tslWest.getLuminosity()) > 100) {
      delay(1000) ;
    }
  }
  • Etalonnage du MPU6050
  void calibrateMPU() {
    mpu.CalibrateAccel(6) ; // Étalonnage sur 6 échantillons
    mpu.CalibrateGyro(6) ;
    mpu.PrintActiveOffsets() ;
  }

4.6 Enceintes d'impression 3D

  • Supports de moteur
  • Boîtiers de capteurs

5. Conseils de débogage et de maintenance

5.1 Processus d'étalonnage

  • Étalonnage du capteur de lumière
  • Comparez les relevés du TSL2591 avec ceux d'un luxmètre (erreur de ±3%).
  • Remise à zéro mécanique
  • Utiliser les interrupteurs de fin de course pour régler les positions horizontales/verticales initiales.

5.2 Entretien courant

  • Chèque trimestriel: Nettoyer les débris du rail et lubrifier les roulements.
  • Mise à niveau annuelle: Mise à jour des paramètres PID (optimisation en fonction des données météorologiques locales).

7. Foire aux questions (FAQ)

Agir: Contactez l'équipe officielle de LINKSOLAR et lancez votre projet d'énergie verte !

Nous espérons que ce tutoriel vous aidera à construire un système de suivi solaire efficace!

Veuillez activer JavaScript dans votre navigateur pour remplir ce formulaire.
Nom

fr_FRFrench
Veuillez activer JavaScript dans votre navigateur pour remplir ce formulaire.
Nom