Détection de la position du soleil

Objectif

Pour améliorer le rendement d’une installation de panneaux photovoltaïques, on désire asservir l’orientation des panneaux. Pour cela, il est nécessaire de suivre la course du soleil tout au long de la journée.

Suivre le soleil peut se faire sur deux axes : en azimut (d’est en ouest, à mesure de l’avancée de la journée) et en hauteur (selon la saison et, de nouveau, l’avancée de la journée) :

L’éclairement lumineux

L’éclairement lumineux est la grandeur définie par la photométrie correspondant à la sensation humaine de l’éclairement. Plus un objet qui n’est pas totalement noir et qui ne produit pas de lumière par lui-même est éclairé, plus il est visible distinctement. La photométrie définit cette grandeur rigoureusement, afin de pouvoir la calculer, connaissant l’intensité lumineuse des sources de lumière, leur distance et leur direction.

L’éclairement lumineux se différencie de l’éclairement énergétique par l’application d’une pondération par longueurs d’onde qui correspond à la sensibilité de la vision humaine. La Commission internationale de l’éclairage a défini les tables d’efficacité lumineuse spectrale qui représentent la sensibilité de l’« observateur de référence ». Les appareils de mesure doivent avoir une sensibilité spectrale similaire.

En photométrie, l’éclairement lumineux correspond à un flux lumineux reçu par unité de surface. Son unité dans le système international d’unités est le lux : 1 lux (lx) correspond à un flux lumineux de 1 lumen (lm) couvrant uniformément 1 mètre carré (m^2) : 1 lx = 1 lm /m^2.

Remarque : Compte tenu des caractéristiques de la vision photopique chez les êtres humains, il n’y a pas de facteur de conversion unique entre le lux (lumen par mètre carré) et le watt par mètre carré, mais des facteurs de conversion différents pour chaque longueur d’onde. Par exemple, pour une couleur vert-jaune, par exemple, un éclairement énergétique de 1 W⋅m-2 correspond à 683 lux, tandis que pour du rouge ou du bleu, il s’agit de moins de 50 lux. Il est donc impossible de faire une conversion sans connaitre la répartition spectrale de la lumière.

Le lux sert de cadre normatif pour définir, dans les législations française et européenne, les niveaux minimums requis pour l’éclairage public et l’éclairage des lieux de travail.

Situation Éclairement moyen
Nuit pleine lune 0,5 lux
Nuit bien éclairée 20 à 70 lux
Ciel couvert 500 à 25 000 lux
Plein soleil 50 000 à 100 000 lux

L’appareil de mesure de l’éclairement lumineux est le luxmètre.

Terminologie

Lux
Le lux est une unité de mesure de l’éclairement lumineux (symbole : lx). Il caractérise le flux lumineux reçu par unité de surface. Un lux est l’éclairement d’une surface qui reçoit, d’une manière uniformément répartie, un flux lumineux d’un lumen par mètre carré.
Lumen
Le lumen (du latin, lumière) est l’unité dérivée du système international du flux lumineux. Son symbole est lm.
Candela
La candela ou candéla (symbole cd, du mot latin qui signifie « chandelle ») est l’une des sept unités de base du système international. Elle sert à mesurer l’intensité lumineuse ou éclat perçu par l’œil humain d’une source lumineuse.
Éclairement énergétique
L’éclairement énergétique ou irradiance est un terme radiométrique qui quantifie la puissance d’un rayonnement électromagnétique frappant par unité de surface. Dans le système international d’unités, elle s’exprime en watts par mètre carré (W/m² ou W⋅m-2).
Azimut
En astronomie, dans le système de coordonnées horizontales (système local), la direction d’un objet céleste peut être donnée par son azimut, angle horizontal mesuré depuis le nord géographique dans le sens des aiguilles d’une montre, et sa hauteur. En astronomie, on compte l’azimut à partir du Sud : l’avantage est qu’au moment de son passage au méridien, l’azimut et l’angle horaire d’un astre sont tous deux nuls.
Hauteur
En astronomie, la hauteur est l’angle que fait la direction visée par rapport à l’horizontale. La hauteur et l’azimut constituent le système de coordonnées horizontales.

Capteurs

Une cellule photoélectrique (dite aussi cellule photovoltaïque ou photorésistance) est un dispositif composé d’un capteur photosensible, dont les propriétés électriques (tension, résistance, …) varient en fonction de l’intensité du rayonnement lumineux capté.

Une photodiode est un composant semi-conducteur ayant la capacité de détecter un rayonnement du domaine optique et de le transformer en signal électrique.

Une photorésistance est un composant électronique dont la résistivité varie en fonction de la quantité de lumière incidente. On peut également la nommer LDR (Light-Dependent Resistor) pour résistance photo-dépendante. Il existe des éléments ayant une résistance allant de quelques mégohms en obscurité à quelques centaines d’ohm pour des éclairements intenses.

On utilisera une platine de détection composée de 4 photorésistances montées en pont de Wheatstone.

Lien : www.f1lzr.fr

Cette platine de détection est chargée de déterminer la direction du rayonnement solaire incident tout au long de la journée :

  • l’azimut du rayonnement incident qui varie d’Est en Ouest
  • l’élévation du rayonnement incident par rapport à l’horizon (la hauteur)

Objectifs

Être capable d’acquérir une tension analogique image de l’éclairement lumineux.

Préparation

Pour acquérir les tensions IN1 et IN2 de la platine, il faudra mettre en œuvre un Convertisseur Analogique Numérique (C.A.N). Ici, on utilisera le LTC2309 que possède le shield ArduPi :

Le shield est exploitable à partir d’une bibliothèque arduPi.

Mise en oeuvre

Un programme de test pour lire une tension :

#include "arduPi.h"

/* Avec le shield Arduino TO Raspberry Pi */

void lireTension(int canal) 
{
   const float VDD        = 5.0; //5 Volts
   const int NB_PAS_12B   = 4096; //convertisseur 12 bits
   const int NB_PAS_10B   = 1024; //convertisseur 10 bits
   int data               = 0; 
   float tension          = 0.;
   
   if(canal >= 0 && canal < 8)
   {
      //data = analogRead(canal); // sur 10 bits
      data = analogRawRead(canal); // sur 12 bits (modif arduPi by tv)
      printf("# Data CAN (12 bits) : 0x%03X\n", data);
      tension = (float)( (float)(data & 0x0FFF) * (float)(VDD/(float)NB_PAS_12B) );
      printf("# Tension CAN = %2.2f V\n", tension);         
   }
   else
      printf("Erreur canal !\n");
}

int main() 
{
   printf("Test CAN Shield ArduPi\n\n");
   
   while(1)
   {
      lireTension(0); // A0
      delay(1000);
      printf("\n");
   }
  
   return 0;
}

Retour au sommaire