Alphasole-automation
Général
Présentation et Fonctionnement
On intégre dans l’absorbeur les capteurs de pression et de débit. On place aussi deux capteurs de température dont le rôle sera de vérifier que le fluide contenu ne soit pas entièrement vaporisé à chaque extrémité du tuyau (côté supérieur et inférieur). Pour l’orientation des miroirs, on utilise une photoresistance pour évaluer la luminosité ambiante pour déterminer le mode dans lequel se trouve le concentrateur solaire. Deux photodiodes sont utilisées pour suivre le soleil de manière réactive. On utilise aussi deux capteurs de butées pour pouvoir connaître les orientations maximales du concentrateur.
Le système doit être initialisé lors d'un jour ensoleillé pour que le système fonctionne en mode réactif. En effet, le premier jour, les données du prévisionnel ne sont pas initialisées.
Fonctionnalités
Le fonctionnement de l’automatisation du concentrateur solaire est écrit dans le fichier main.ino, sensorFunctions.ino, et sleepModeControl.ino. Il fait appel aux fonctions des autres modules écrient dans les fichiers datalogger.ino, heliostat.ino, motorControl.ino, solarConcentrator.h.
main.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
setup | Initialisation des pins, interruptions, du datalogger et du timer. | X | X |
timer | Toutes les 5 minutes, on appelle les fonctions permettant de :
- Calculer les valeurs de capteurs. - Sauvegarder les données dans le datalogger. - Sauvegarder les données sur la carte SD si c’est la fin de journée. |
X | X |
loop | Fonction appelée en boucle.
- Calcule la valeur du luxmètre, et appelle les fonctions permettant de passer en mode réactif ou en mode prévisionel selon la valeur du luxmètre. - Vérifie les conditions aux limites, si elles sont dépassées, le mode d’urgence est activer. |
X | X |
sensorFunctions.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
calculateTemperature | Récupère la valeur d’un capteur de température et calcule la température en Celsius. | Numéro de la pin correspondant au capteur mesuré. | Température au capteur. |
calculateFlow | Récupère la valeur du capteur de débit et calcule le débit en L/min. | X | X |
calculatePressure | Récupère la valeur du capteur de pression et calcule la pression en bar. | X | X |
calculatePower | Calcul la valeur de la puissance thermique en kCal/h. | X | X |
pulseCounter | Compteur qui s’incrémente à chaque interruption, pour le calcul du débit. | X | X |
calculateLux | Récupère la valeur de la photorésistance et calcule la luminosité en une unité proche du lux. | X | X |
checkLimits | Vérifie que toutes les valeurs de pression, débit et température ne dépassent pas les valeurs maximales supportées. | X | Retourne 1 si une valeur dépasse la valeur maximale supportée, sinon 0. |
sleepModeControl.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
ISR(WDT_vect) | Interruption du Watchdog. Est appelée lorsque le Watchdog expire. | X | X |
enterSleep | Fait rentrer l’arduino en veille. | X | X |
wdtInitialisation | Initialisation du Watchdog. | X | X |
Automatisation des miroirs
Les fonctionnalités de l’automatisation des miroirs sont écrites dans le fichier motorControl.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
sweeper | Recherche l’endroit où se trouve l’ensoleillement maximum. | X | X |
initialization | Est appelée par sweeper. Va faire tourner le moteur jusqu’à une extrémité, et ainsi détermine le sens dans lequel tourne le moteur. | X | X |
sweep | Est appelée par sweeper. Vérifie si la luminosité est maximale à chaque étape. | - La luminosité au moment de l’appel de la fonction.
- La direction dans laquelle le moteur doit tourner. |
Luminosité maximale. |
runMotor | Permet de faire tourner le moteur d’un certain nombre de tours. | - Pourcentage correspondant à la vitesse du moteur.
- Nombre de tours. |
X |
nbRevs | Attend que le moteur effectue un certain nombre de tours avant de terminer. | Nombre de tours | Retourne 0 si on a effectué le nombre de tours, renvoie 1 si on arrive sur un capteur de butée. |
exitstop | Est appelé quand on a atteint un capteur de butée. Fait reculer de 20 tours. | Pourcentage correspondant à la vitesse du moteur en sortie. S'il est positif, tourne en polarité positive sinon négative | X |
emergencyMode | Est appelée lorsque la fonction checkLimits() retourne 1 ou lorsqu’elle est activée par l’interrupteur de l’interface. Fait rentrer le système dans le mode d’urgence : le moteur fait tourner le système jusqu’à une extrémité. | X | X |
Heliostat
Présentation et Fonctionnement
L’Héliostat a pour objectif de contrôler la position des miroirs du concentrateur solaire en fonction des conditions météorologiques. L’héliostat fonctionne selon 2 modes: - S’il y a de la lumière direct, il travaille en mode réactif. Le module se sert de photodiodes pour déterminer de façon réactive l’orientation que doit prendre ces miroirs, de plus les données sur la position du soleil sont enregistrées dans le datalogger. - S’il n’y a pas de lumière direct (des nuages par exemple), il travaille en mode prévisionnel. Le module va se servir des données sur la position du soleil enregistrées par le datalogger, dans la carte SD.
Fonctionnalités
Les fonctionnalités de l’héliostat sont écrites dans le fichier heliostat.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
heliostatReaction | Lis la valeur des photodiodes gauche et droite et en fonction de la valeur d’écart delta entre les deux capteurs, fait tourner le moteur de 1 tour. Si le delta est positif, on tourne dans la polarité positive, sinon on tourne dans la polarité négative. | X | X |
heliostatForecast | Prend la position correspondant à la capture courante et déplace les miroirs à cette position | X | X |
Datalogger
Présentation et Fonctionnement
Le datalogger a pour but, dans un premier temps, de récupérer les données des capteurs de pression, température, débit et de les enregistrer dans un fichier texte dans la carte SD. Et dans un second temps,il doit récupérer les données sur la position du soleil lorsque l’héliostat est en mode réactif, grâce aux photodiodes. Ce module communique donc avec l’interface utilisateur qui doit utiliser les informations de puissances, débit, pression et température, ainsi qu’avec l’héliostat mode réactif car il récupère la position du soleil et l’héliostat prévisionnel car il doit envoyer les valeurs sur la position du soleil.
Fonctionnalités
Les fonctionnalités du datalogger sont écrites dans le fichier datalogger.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
saveDatalogger | Enregistre dans le fichier une capture contenant puissance, température des capteurs 1 et 2 et pression. | X | X |
initDatalogger | Lors d’une nouvelle journée, la fonction va initialiser un nouveau fichier correspondant au jour. | X | X |
refreshHeliostat | Enregistre dans le fichier «sun.txt» une capture contenant la position du moteur. | X | X |
initHeliostat | Au début de la journée, on récupère les positions du moteur du jour précédent, et on le stock dans un tableau. | X | X |
Interface Utilisateur
Présentation et Fonctionnement
L’interface permet d’avoir une visualisation de tous les états du système. On peut distinguer 2 modes visibles:
- Réactionnel
- Prévisionnel
Sur l’interface on a une visualisation d’une jauge correspondant à la puissance que le système fournie. 4 leds signalent la présence respectivement d’une surtempérature, surpression, surdébit et bug. De plus, on retrouve un interrupteur permettant de passer en mode d'urgence, un interrupteur permettant d'alimenter la carte (interrupteur POWER). Enfin, un bouton poussoir RESET permet de réinitialiser le système.
Fonctionnalités
Les fonctionnalités de l’interface utilisateur sont écrites dans le fichier interface.ino
Nom | Description | Entrées | Sorties |
---|---|---|---|
Ini_led | Initialise les pins des leds sur la carte arduino. | X | X |
Power_Led_Wall | Affiche sur l’interface le niveau de puissance dans le tuyau. | X | X |
refreshInterface | Change les états des LEDs en fonction de la valeur des flags. | X | X |
EmergencySwitch | Appelle la fonction d’urgence si le switch est activé. | X | X |