Mise en oeuvre du suiveur solaire

Expression du besoin

On a besoin d’une alimentation électrique fiable pour alimenter les équipements nécessaires mais la présence d’un réseau électrique fonctionnel n’est pas toujours assurée. Si aucun réseau n’est disponible, un générateur serait le choix logique pour générer de l’électricité. Cependant, les générateurs sont bruyants et très polluants. De plus, les directives européennes et nationales encouragent fortement la création d’unités locales de production d’énergies renouvelables.

Le solaire fait partie de ces énergies considérée comme inépuisable, n’émettant potentiellement aucune particule nocive et de plus disponible en grande quantité sur Terre. Le solaire étant un secteur qui reste onéreux, il ressort l’importance d’améliorer le rendement des installations solaires, pour exploiter au mieux les ressources potentielles. Celui-ci pourrait être augmenté de deux manières : la première consisterait à améliorer techniquement la cellule photovoltaïque, la seconde à optimiser l’angle d’éclairement du panneau en fonction de la position du soleil.

En retenant la seconde solution, il s’agira désormais d’orienter efficacement les panneaux solaires photovoltaïques afin d’augmenter la production journalière d’électricité.

Suiveur solaire

Un tracker solaire ou suiveur de Soleil est une installation de production d’énergie solaire utilisant le principe de l’héliostat. C’est une structure portante qui permet d’orienter des panneaux solaires afin d’en augmenter la productivité.

La commande des deux axes d’orientation des panneaux est réalisée par le Solar Positioner MICRO POZSOL36A1DR :

Il se raccorde au PC via une liaison USB qui sera gérée comme un port série virtuel. Le Solar Positioner MICRO POZSOL36A1DR émet périodiquement les paramètres courants tous les 400 ms. Le protocole est constitué de caractères ASCII dont la structure est la suivante : START_BYTE INDEX DATA.

  • START_BYTE est toujours le caractère ‘$’ (0x24). Il indique le début d’une transmission de données
  • INDEX indique le paramètre qui est transmis (dans la plage 0x25…0xFF)
  • DATA sont les octets d’informations du paramètre en ASCII

Il est aussi possible d’émettre une commande vers le Solar Positioner MICRO POZSOL36A1DR.

Le protocole est détaillé dans ce document.

Le système est fourni avec le logiciel Helios Analytics.

Réception de paramètres

Exemples de paramètres reçus périodiquement :

0x24 0x30 0x38 0x35 0x2E 0x36       -> Angle B (Elevation) : 85.6
0x24 0x31 0x31 0x31 0x35 0x34 0x37  -> Position B (Elevation) : 11547
0x24 0x32 0x31 0x31 0x35 0x34 0x37  -> Destination B (Elevation) : 11547
0x24 0x33 0x30 0x2E 0x30 0x30       -> I motor B (Elevation) : 0.00 A   
0x24 0x5E 0x30 0x2E 0x30            -> Wide panel : ^0.0
0x24 0x89 0x2D 0x6E 0x61 0x6E       -> ?? : -nan
0x24 0x5F 0x30 0x2E 0x30            -> space panel : 0.0
0x24 0x8A 0x2D 0x6E 0x61 0x6E       -> ?? : -nan
0x24 0x53 0x32                      -> Geometry mode A : 2
0x24 0x74 0x30                      -> Rtc correction : 0
0x24 0x75 0x37                      -> Go to reference A : 7
0x24 0x76 0x37                      -> Go to reference B : 7
0x24 0x28 0x31 0x33                 -> Hours : 13
0x24 0x29 0x30 0x31                 -> Minutes : 01
0x24 0x2A 0x32 0x38                 -> Seconds : 28
0x24 0x80 0x30 0x30 0x30 0x30       -> Snow clean angle A : 0000
0x24 0x81 0x30 0x30 0x30 0x31       -> Snow clean angle B : 0001
0x24 0x2C 0x2D 0x34 0x39 0x2E 0x31  -> Hour angle : -49.1
0x24 0x2D 0x32 0x35 0x32 0x31       -> Hposition : 2521
0x24 0x2E 0x32 0x35 0x32 0x32       -> Hdestination : 2522
0x24 0x2F 0x30 0x2E 0x30 0x30       -> Imotor A : 0.00
0x24 0x30 0x38 0x35 0x2E 0x36       -> Elevation : 85.6
0x24 0x31 0x31 0x31 0x35 0x34 0x37  -> Position B (Elevation) : 11547
0x24 0x32 0x31 0x31 0x35 0x34 0x37  -> Destination B (Elevation) : 11547
0x24 0x33 0x30 0x2E 0x30 0x30       -> I motor B (Elevation) : 0.00 A
0x24 0x46 0x33 0x35 0x35 0x2E 0x30  -> A1 A : 355.0
0x24 0x47 0x33 0x33 0x35 0x2E 0x30  -> A2 A : 335.0
0x24 0x48 0x33 0x39 0x2E 0x36       -> A3 A : 39.6
0x24 0x49 0x34 0x30 0x2E 0x34       -> A4 A : 40.4
0x24 0x4A 0x30 0x2E 0x30            -> A5 A : 0.0
0x24 0x4B 0x30 0x2E 0x30            -> A6 A : 0.0
0x24 0x28 0x31 0x33                 -> Hours : 13
0x24 0x29 0x30 0x31                 -> Minutes : 01
0x24 0x2A 0x32 0x38                 -> Seconds : 28
0x24 0x80 0x30 0x30 0x30 0x30       -> Snow clean angle A : 0000
0x24 0x81 0x30 0x30 0x30 0x31       -> Snow clean angle B : 0001
0x24 0x2C 0x2D 0x34 0x39 0x2E 0x31  -> Hour angle : -49.1
0x24 0x2D 0x32 0x35 0x32 0x31       -> Hposition : 2521
0x24 0x2E 0x32 0x35 0x32 0x32       -> Hdestination : 2522
0x24 0x2F 0x30 0x2E 0x30 0x30       -> Imotor A : 0.00
0x24 0x30 0x38 0x35 0x2E 0x36       -> Elevation : 85.6
0x24 0x31 0x31 0x31 0x35 0x34 0x37  -> Position B (Elevation) : 11547
0x24 0x32 0x31 0x31 0x35 0x34 0x37  -> Destination B (Elevation) : 11547
0x24 0x33 0x30 0x2E 0x30 0x30       -> I motor B (Elevation) : 0.00 A
0x24 0x4C 0x33 0x31 0x2E 0x32       -> B1 A : 31.2
0x24 0x4D 0x30 0x2E 0x30            -> B2 A : 0.0
0x24 0x4E 0x33 0x38 0x30 0x2E 0x38  -> Gear ratio A : 380.8
0x24 0x4F 0x31 0x39 0x35 0x35 0x30 0x30 0x2E 0x30 -> Max range A : 195500.0
0x24 0x50 0x33 0x24 0x34 0x34 0x33 0x2E 0x39      -> Coordinate mode A : 34443.9

Emission de commandes

Les deux axes sont commandés par :

  • moteur A : commande l’axe A correspond à l’angle azimutal (angle négatif le matin, positif l’après-midi) relatif à l’heure
  • moteur B : commande l’axe B correspond à l’angle d’élévation (hauteur du soleil en fonction de la saison) relatif à la date

Extrait du protocole :

Hour angle :
- Angle between the Sun and the South measured on Sun's path
- index : 0x2C
- data format is XX.x or –XX.x or X.x (angle in degrees)
- example set hour angle to 30.0° : 0x24 0x2C 0x33 0x30 0x2E 0x30 0xEF (0xEF = checksum)
- example set hour angle to -30.0° : 0x24 0x2C 0x2D 0x33 0x30 0x2E 0x30 0xC2 (0xC2 = checksum)

Elevation :
- Vertikal angle between horizontal plane and the Sun.
- index: 0x30
- data format is XXX.x or XX.x or X.x (angle in degrees)
- example set elevation to 105.0° : 0x24 0x30 0x31 0x30 0x35 0x2E 0x30 0xB8 (0xB8 = checksum)

User's latitude :
- index : 0x34
- data format is XX.x (max value=67.9)
- example set latitude to 46.4° : 0x24 0x34 0x34 0x36 0x2E 0x34 0xDC (0xDC = checksum)

Hemisphere :
- index :0x35
- data format is ‘N' for North or ‘S' for South
- example set hemisphere to South : 0x24 0x35 0x53 0x54 (0x54 = checksum)

Moving interval :
- How often is SunTracer correcting the position
- index : 0x36
- data format is ‘int', which toggle interval between 1 minute and 15 minutes.
- example switch interval from 1 to 15 minutes : 0x24 0x36 0x69 0x6E 0x74 0x5B (0x5B = checksum)

Automatic tracking :
- Automatic tracking enabled (solar time is used) or disabled (moving will be manually with commands)
- index : 0x38
- data format is ‘n' for manual tracking and ‘y' for automatic tracking.
- example disable automatic tracking : 0x24 0x38 0x6E 0x36 (0x36 = checksum)

Manual move :
- motor will shift H axe for 50 impulses or V axe for 100 impulses. Sending this command constantly is
needed for continuosly moving in one direction.
- index : 0x39
- Data format is: 0x32 = left, 0x34 = right, 0x31 = up and 0x33 = down.
- example move the first axis for 50 impulses to right : 0x24 0x39 0x34 0x6F (0x6F = checksum)

Remarque : il est aussi possible de régler l’heure et la date (cf. document).

SunTracer Type:      index: 0x25 receive-only
SunTracer Version:   index: 0x26 receive-only
Usupply:             index: 0x27 receive-only Supply voltage used for powering SunTracer
Hours:               index: 0x28 two-way data format is HH
Minutes:             index: 0x29 two-way data format is MM
Seconds:             index: 0x2A receive-only
Day:                 index: 0x2B two-way data format is DD
Month:               index: 0x3B two-way data format is MM

En résumé :

Commande Moteur A Moteur B
Monter $91r
Descendre $93p
A gauche(est) $94o
A droite (ouest) $92q
Retour reference $95n $96m

Mode automatique :

  • enable : $8yt
  • disable : $8n6

Fonction clear (index 0x88) :

0x24 0x88 0x63 0x6C 0x65 0x61 0x72 0x4D

Prise en charge sous Raspberry Pi

Brancher le suiveur solaire sur un port USB de la raspberry

Modifier les droits d’accès manuellement au fichier de périphérique :

$ sudo chmod 666 /dev/ttyACM0

Pour obtenir une modification permanente et automatique, éditer le fichier :

$ sudo vim /etc/udev/rules.d/51.ttyusb.rules

Ajouter :

# adaptateur Helios
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0666", NAME="ttyACM0", SYMLINK+="helios"

Sauvegarder et quitter avec :wq

Exemple

Lire la mise en oeuvre d’un port série sous Qt [PDF].

Code source : test-mo-commande-suiveur.zip

Retour au sommaire