Arduino Forum

International => Français => Tutoriels et cours => Topic started by: bricoleau on Oct 30, 2014, 10:06 pm

Title: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Oct 30, 2014, 10:06 pm
Bonjour

Comme déjà évoqué dans d'autres topics, voici en pièce jointe un exemple de code qui donne de manière très précise les heures de lever et coucher du soleil.
Utile pour commander un éclairage depuis un arduino.

J'avais pas mal fouiné sur le net pour trouver quelque chose d'assez précis à mon goût, mais sans succès. Et vu le temps que j'ai passé à mettre au point ces quelques lignes de code, je me dis que cela peut faire économiser un paquet de neurones à d'autres  :D à charge de revanche

Sur les quelques milliers de tests que j'ai pu faire, l'écart par rapport à la référence officielle (site imcce) était au maximum de 2 secondes.

Ce n'est pas une librairie toute faite, mais il vous suffit de reprendre les deux fonctions de calcul et de les intégrer dans votre propre code ou librairies. Donc prévoir quand même d'y sacrifier quelques neurones.

Au passage je me suis amusé à construire un exemple en C "de base" qui s'exécute aussi bien sur arduino que sur PC.
Arduino est plus lent : 5 millisecondes par calcul d'éphéméride
Et parfois les résultats ne sont pas strictement identiques : différence d'implémentation des double et/ou fonctions trigonométriques.

Bonne lecture
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Oct 30, 2014, 10:09 pm
L'attachement d'une pièce jointe *.c ne semble pas fonctionner.

=> Joie du nouveau forum ?  :smiley-mr-green:

Du coup je le remets en .txt
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: Heloderma-kris on Oct 31, 2014, 08:58 am
bien jouer c'est une autre version avec des calcul diferent !

sur quel crepuscule ce base tes calcul nautique civil ou militaire?
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: 68tjs on Oct 31, 2014, 09:06 am
Beau travail qui aurait mérité d'être dans tuto et cours, ici il disparaître dans. les profondeurs du forum.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: roccesar on Oct 31, 2014, 09:18 am
bonjour, merci pour ce travail mais je n'ai pas compris comment tu rentrais la longitude / latitude

Quote
void calculerEphemeride(int jour, int mois, int annee, double longitude_ouest, double latitude_nord, double *lever, double *meridien, double *coucher);

 //Ephéméride à la tour Eiffel en novembre 2014
  testerEphemeride(1, 11, 2014, 30, -2, 17, 40, 48, 51, 28);
par exemple avec comme valeurs :

#define _latD 48
#define _latM 36
#define _lonD 2
#define _lonM 18

merci
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Oct 31, 2014, 09:31 am
Ben _latD + _latM/60.0

y a un minimum de lecture à code à effectuer pour maîtriser le sujet...
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Oct 31, 2014, 09:39 am
bien jouer c'est une autre version avec des calcul diferent !

sur quel crepuscule ce base tes calcul nautique civil ou militaire?
Ce n'est pas un calcul d'aube/crépuscule qui, par définition, est basé sur une luminosité qui précède/suit le lever/coucher du soleil, avec plusieurs normes (nautique, civil, militaire).

Là c'est juste le calcul de l'instant où le centre du disque solaire passe l'horizon
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Oct 31, 2014, 11:33 am
Ben _latD + _latM/60.0

y a un minimum de lecture à code à effectuer pour maîtriser le sujet...

Désolé pour ma réponse un peu sèche  :smiley-red:

La fonction principale attend une longitude exprimée en degré décimalisé.
La fonction de test prend les degrés minutes secondes séparément.

Entre les deux, il y a justement une fonction
Code: [Select]

double calculerCoordonneeDecimale(int degre, int minute, int seconde);

Qui montre bien comment passer de l'un à l'autre.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Oct 31, 2014, 12:09 pm
Ce n'est pas un calcul d'aube/crépuscule qui, par définition, est basé sur une luminosité qui précède/suit le lever/coucher du soleil, avec plusieurs normes (nautique, civil, militaire).

Là c'est juste le calcul de l'instant où le centre du disque solaire passe l'horizon
En fait, y a une idée qui me titille pour aller plus loin dans la simulation d'un éclairage naturel.

Avec l'heure exacte de lever/coucher du soleil, on a déjà une bonne base.
Mais par exemple, pour piloter un éclairage led dimmable, il est vite utile de disposer d'une fonction qui permette de gérer la montée en éclairage à l'aube, et la descente au crépuscule.

Par exemple une fonction qui prendrait en paramètre les coordonnées GPS et l'heure UTC, et qui restituerait l'éclairage en pourcentage :0% nuit noire => 100% plein jour / intensité maximum (=midi solaire au solstice d'été).

Une première approche rudimentaire serait par exemple de prévoir une montée linéaire de 0 à 100%, de 5 minutes avant le lever du soleil à 15 minutes après, et inversement pour le coucher.
Mais c'est très grossier.

J'ai cherché sans succès le modèle mathématique de montée en éclairement naturel en fonction de la hauteur du soleil. Si quelqu'un a des infos là-dessus je suis preneur.

L'étape ultime serait ensuite d'ajouter un algorithme "nuages", pseudo aléatoire mais paramétrable en fonction de la localité. Pas sûr qu'on puisse trouver sur le net une base du nombre de jours d'ensoleillement par mois et par zone géographique, mais c'est l'idée.

Et évidemment, doubler le système avec une reproduction d'éclairage solaire + une reproduction d'éclairage lunaire (incluant les nuages une nuit de pleine lune).

Par exemple en aquariophilie marine, la reproduction du cycle lunaire peut avoir une grande influence sur la reproduction des coraux.

Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: roccesar on Oct 31, 2014, 12:49 pm
Désolé pour ma réponse un peu sèche  :smiley-red:

La fonction principale attend une longitude exprimée en degré décimalisé.
merci, comme le dit mon profil je suis news sur le forum, tant qu'avec l'arduino et les éphémérides et le codage C que j'ai découvert il y a moins d'une semaine

Je vois en lisant autre post que vous avez tenu compte aussi via une autre librairie des heures d'été et d'hiver.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: icare on Oct 31, 2014, 02:19 pm
Bonjour,
Le crépuscule.
C'est la lueur croissante avant le lever du Soleil ou décroissante après son coucher qui provient de l'éclairement des couches supérieures de l'atmosphère par les rayons du Soleil situé sous l'horizon, mais très voisin de celui-ci.
Par exemple, le crépuscule du soir commence au coucher du bord supérieur du Soleil et finit lorsque le centre du Soleil est abaissé de l'angle alpha au-dessous de l'horizon.
Pour le crépuscule civil alpha = 6°
Pour le crépuscule nautique alpha = 12°
Pour le crépuscule astronomique alpha = 18°
@+
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: Heloderma-kris on Oct 31, 2014, 02:20 pm
desoler je met du temps a repondre mais j'ai toujour pas les notification de reponse au poste ( ça me gonfle)bref

pour repondre a ton interogation consernant les monté en luminosité , il y a quelque temps je me suis amusé a partire sur ce terrain et vraisemblablement la variation lumineuse au cour d'une journée semble s'aproché d'une courbe de gause.

des que je retrouve mon fichier exel je te le joint !

Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: Heloderma-kris on Oct 31, 2014, 03:30 pm
voila le fichier tu verra si cela t'intérése , l'idée tu rentre dans les casse jaune la valeur max du PWM que tu souhaite et la duree du jour , tu visualise ensuite la variation sur le graphe en desous .
je l'ai fait de magniere empirique donc c'est pas forcément ce qu'il y a de mieu mais ça represente un debut de travail.

pour le choix des gausiene j'était tombé sur la these d'un francais qui avais travaillé sur "l'energie/ou luminosité" que recevai la surface de l'ocean au cour de la journée, mais pas moyen de retrouvé le lien


http://christophe.boulic.free.fr/arduino/courbe%20de%20gauss.xlsx (http://christophe.boulic.free.fr/arduino/courbe%20de%20gauss.xlsx)
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: manuetnini on Jan 20, 2016, 05:38 pm
Bonjour

Comme déjà évoqué dans d'autres topics, voici en pièce jointe un exemple de code qui donne de manière très précise les heures de lever et coucher du soleil.
Utile pour commander un éclairage depuis un arduino.

J'avais pas mal fouiné sur le net pour trouver quelque chose d'assez précis à mon goût, mais sans succès. Et vu le temps que j'ai passé à mettre au point ces quelques lignes de code, je me dis que cela peut faire économiser un paquet de neurones à d'autres  :D à charge de revanche

Sur les quelques milliers de tests que j'ai pu faire, l'écart par rapport à la référence officielle (site imcce) était au maximum de 2 secondes.

Ce n'est pas une librairie toute faite, mais il vous suffit de reprendre les deux fonctions de calcul et de les intégrer dans votre propre code ou librairies. Donc prévoir quand même d'y sacrifier quelques neurones.

Au passage je me suis amusé à construire un exemple en C "de base" qui s'exécute aussi bien sur arduino que sur PC.
Arduino est plus lent : 5 millisecondes par calcul d'éphéméride
Et parfois les résultats ne sont pas strictement identiques : différence d'implémentation des double et/ou fonctions trigonométriques.

Bonne lecture
Salut et merci pour ton boulot.

Juste une question, on a le droit de l'utiliser de modifier ton code ? Sous quelles conditions ??

++
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Jan 20, 2016, 06:54 pm
Bonjour

Ce bout de code est mis à dispo pour un usage libre et sans engagement de ma part sur le résultat.
Bien sûr tu peux le modifier pour en faire ce que tu veux.

Ma seule demande est de partager ici avec la collectivité toute amélioration ou correction de ce code, mais ce n'est pas une obligation.

La partie calculs purs a été particulièrement étudiée.
Je serais surpris qu'elle puisse être significativement améliorée.
Par contre elle pourrait être étendue :
- aux calculs des divers aubes / crépuscules
- au paramétrage de la convention de calcul des levers et couchers du soleil. Là, j'ai suivi la convention française appliquée par l'imcce : les calculs sont basés sur l'instant où le centre du disque solaire franchit l'horizon. Dans la plupart des autres pays, il me semble que la convention est de considérer l'instant où le bord supérieur du disque solaire franchit l'horizon (plus naturel pour les calculs d'éclairement).

De plus, une encapsulation propre au sein d'une librairie ne serait pas du luxe.

a+
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: Lancien on Jan 20, 2016, 07:23 pm
J'ai envisagé de faire un tracker solaire basé sur éphéméride. Je me suis donc intéressé à toute cette palanquée d'angles ..
J'ai résumé ce que j'en avais compris sur une feuille OpenOffice.calc.
Au vu de ce que vous avez fait, cette feuille est assez simpliste, mais si elle peut vous être utile.
(En l'ouvrant il faut accepter l'activation des macros)
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: 68tjs on Jan 20, 2016, 07:38 pm
Tu t'es fait avoir par ce forum --> ils ne connaissent pas les fichiers normalisés ISO ils ne connaissent que les bouses microsofts.

Il faut ruser : tu zippe le fichier calc et il sera accepté.

Oui je sais OpenDocument est déjà zippé et zipper un fichier déjà zippé c'est idiot mais c'est comme cela que fonctionne le forum.
J'ai déjà demandé à ce que ce soit modifié : le webmestre semble être un trou noir.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: manuetnini on Jan 21, 2016, 09:03 am
Bonjour

Ce bout de code est mis à dispo pour un usage libre et sans engagement de ma part sur le résultat.
Bien sûr tu peux le modifier pour en faire ce que tu veux.

Ma seule demande est de partager ici avec la collectivité toute amélioration ou correction de ce code, mais ce n'est pas une obligation.

La partie calculs purs a été particulièrement étudiée.
Je serais surpris qu'elle puisse être significativement améliorée.
Par contre elle pourrait être étendue :
- aux calculs des divers aubes / crépuscules
- au paramétrage de la convention de calcul des levers et couchers du soleil. Là, j'ai suivi la convention française appliquée par l'imcce : les calculs sont basés sur l'instant où le centre du disque solaire franchit l'horizon. Dans la plupart des autres pays, il me semble que la convention est de considérer l'instant où le bord supérieur du disque solaire franchit l'horizon (plus naturel pour les calculs d'éclairement).

De plus, une encapsulation propre au sein d'une librairie ne serait pas du luxe.

a+

Salut et merci,
on peut effectivement faire "mieux" en prennant comme tu dis le haut du disque solaire etc etc ... mais franchement, on en est pas a la "minute" pres ! Le but est de connaitre (a mon avis) le décalage le matin, midi et soir, pour adapter une action/temps.
J'ai commencé a modifier ton code en améliorant deux trois trucs bateau, je vais faire une lib au final pour intégration dans mon projet et je posterai ici mes modifs, merci en tout cas.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: standardUser on Mar 17, 2016, 01:23 pm
Merci Bricoleau pour ce code.


Pourrais-je connaître l'origine de vos formules.

Pour ma part, j'ai récupéré des formules sur ce site  (http://jean-paul.cornec.pagesperso-orange.fr/heures_lc.htm)et ai créé le code correspondant en C#.
Mon code étant correct (je l'ai simplifié au maximum pour ne m'en tenir qu'aux formules), je constate une erreur de 12 minutes environ sur l'heure de lever du soleil à partir des formules de ce site.

J'ai trouvé d'autres formules, mais aucune ne donne l'heure correcte en mon lieu, sauf la vôtre !
Je vais donc intégrer certaines parties de votre code dans mon programme C#.

Cordialement.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Mar 29, 2016, 06:49 pm
Oups désolé pour cette réponse tardive

L'origine de mes formules, c'est un savant mélange de tout ce que j'ai trouvé sur le net  :D, que j'ai (à peu près) compris et réassemblé en gardant ce qui me semblait le plus précis.
Le site de Jean-Paul Cornec que tu indiques était effectivement dans mon périmètre d'analyse.

Enfin compris, c'est assez présomptueux. Quand on descend dans la théorie on se retrouve vite dépassé, sauf à avoir bac + xx (deux chiffres) d'études en astronomie, ce qui n'est pas mon cas.

Les diverses équations trouvées sur le net ne sont que des approximations des modèles théoriques (souvent en séries dérivées).

Par endroits, ma compréhension est venue de l'analyse des écarts entre mes résultats et ceux de l'IMCCE.
La mise au point était aussi très expérimentale. Le site de l'IMCCE m'a été très utile pour mesurer la précision des divers calculs.
Je me souviens avoir buté sur une analyse d'écarts pendant une semaine, jusqu'à réaliser qu'il y avait un bug sur le site de l'IMCCE. Pas dans leurs calculs évidemment, mais dans leur affichage des résultats (glissement de colonne).
J'ai même osé leur écrire pour leur signaler le problème. Ils m'ont répondu de manière très sympa et quelques mois plus tard j'ai pu constater que le bug était corrigé.

Pour finir, j'ai procédé à une optimisation purement informatique des calculs (factorisations + précalcul des constantes par le compilo). Ainsi par exemple l'équation du temps ou autre joyeuseté se trouve mélangée à la soupe, et n'apparaît plus clairement dans le code.

Donc on peut dire que c'est une recette 100% bricoleau.

J'y ai quand même passé quelques dizaines d'heures de boulot, la majeure partie dans Excel  :D

a+
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Mar 29, 2016, 08:01 pm
Sur la démarche :

J'ai pris 10 points géographiques en référence, répartis sur le globe.
En évitant quand même les cercles polaires, où les équations peuvent ne pas avoir de solution du fait que le soleil ne s'y couche pas ou ne s'y lève pas. Les arduinistes esquimaux n'ont qu'à se débrouiller !

Pour chaque point, j'ai extrait du site de l'IMCCE les levers / méridiens / couchers sur deux ans = 730 jours consécutifs.
Cela me faisait donc une base exacte de plus de 7000 références, rangée dans Excel.

Puis j'ai commencé à tester les diverses formules trouvées en calculant automatiquement leur écart moyen par rapport aux 7000 références.

Le calcul du méridien est le premier élément à ajuster.
Pour le lever ou coucher, les erreurs d'approximation dues aux séries dérivées augmentent avec la valeur absolue de la latitude.
etc.

A la fin j'étais aussi confronté à l'imprécision de l'implémentation des calculs eux-mêmes, utilisant le type "double" en C.
Là en gros, l'imprécision des calculs binaires est du même ordre de grandeur que celle des formules utilisées.
Ainsi, le même programme exécuté sur mon PC ne donne pas strictement les mêmes résultats que sur arduino. La marge d'erreur entre les deux est la même qu'avec la référence IMCCE.

Je pense que pour être plus précis (sans utilité dans notre contexte d'utilisation), il ne serait pas suffisant d'augmenter la complexité des formules (pour prendre en compte le quart de poil de mollet de fourmi). Il serait aussi nécessaire de passer sur des codages de données plus longs. Et encore, en supposant qu'il n'y ait pas de déperdition dans les fonctions trigonométriques proposées en standard.
 
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: standardUser on Mar 30, 2016, 06:31 pm
Merci pour ces informations.
En tout cas très très beau travail ; le code est hyper-propre et intelligemment structuré.

Le code tel quel fonctionne sans problème sous Mac (environnement Xcode).
Mais je rencontre de gros problèmes de conversion lors du passage en C#. Je dois utiliser des passages en unsafe et pour le moment, les valeurs résultantes sont totalement fausses. Je persiste dans cette voie !

PS : réponse différée, suite à l'absence de réseau téléphonique pendant 5 jours due au passage de la tempête dans le Pas de Calais...
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 17, 2016, 05:16 pm
@bricoleau

merci pour cet algo

j'aurai aimeé avec un peu plus de detail notament sur les variable deja calculé...

m0
m1
l0
l1
c0
c1

etc ...

pourrais tu nous donner les hypothese de travail et de calcul de ces valeur, car je n arrive pas a recouper ces valeur avec ce que j'ai trouve dans les algo sur le net

merci d'avance
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Aug 17, 2016, 11:47 pm
Bonjour

Il s'agit de ceci
Code: [Select]
  const double M_2PI = 2.0 * M_PI;
  const double degres = 180.0 / M_PI;
  const double radians = M_PI / 180.0;
  const double radians2 = M_PI / 90.0;
  const double m0 = 357.5291;
  const double m1 = 0.98560028;
  const double l0 = 280.4665;
  const double l1 = 0.98564736;
  const double c0 = 0.01671;
  const double c1 = degres * (2.0*c0 - c0*c0*c0/4.0);
  const double c2 = degres * c0*c0 * 5.0 / 4.0;
  const double c3 = degres * c0*c0*c0 * 13.0 / 12.0;
  const double r1 = 0.207447644182976; // = tan(23.43929 / 180.0 * M_PI / 2.0)
  const double r2 = r1*r1;
  const double d0 = 0.397777138139599; // = sin(23.43929 / 180.0 * M_PI)
  const double o0 = -0.0106463073113138; // = sin(-36.6 / 60.0 * M_PI / 180.0)



Je passe celles de conversion degrés / radians

Pour le nom des constantes, je me suis inspiré de leur nom usuel que l'on trouve dans les formules
m0/m1 famille M (anomalie)
l0/l1 famille L (longitude ecliptique)

Je pense que tu trouveras ton bonheur tout simplement en recherchant ces valeurs constantes sur google (par ex cherche 357.5291)

Pour te donner un aperçu de leur signification, voir par exemple le second post de ce topic d'un autre forum (http://forums.futura-sciences.com/astronomie-astrophysique/607670-calcul-heure-lever-and-coucher-soleil.html).

Pour les constantes issues d'une formule de calcul, au lieu de mettre la valeur en dur, j'ai préféré laisser le compilateur faire le calcul.
Cela revient au même code exécutable généré, mais c'est plus compréhensible en retro analyse.

Par contre le compilo ne sait pas évaluer les fonctions trigonométriques, donc pour celles-ci j'ai du mettre directement la valeur en dur, en prenant soin d'indiquer la formule utilisée en commentaire sur la ligne.
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 18, 2016, 08:03 pm
@bricoleau

merci pour ces infos le lien vers le post futura est ce que je cherchais....

une autre question ...

j adapte ce code pour une automate programmable siemens s7-400

peux tu me confirmer que fmod est bien le reste de la division ....

que l expression >>2 est bien un decalage vers la droite de 2 bit donc une division entiere par 4.

que la valeur lever coucher est une valeur entre -0.5 et 0.5 correspond a une valeur qui faudra utiliser pour calculer les heure de lever et coucher .

qu il faut suite effectue le calcul pour replacer cela en heure tenant compte du decalage horaire et de la gestion heure ete heure hiver


merci d avance...

Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 18, 2016, 08:16 pm
@bricoleau

j ai trouve ta fonction afficherheure ....  :smiley-confuse:


pour la conversion d vers hh:mm:ss
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 19, 2016, 11:31 am
@bricoleau

j'ai code tu algo dans mon api, mais j'ai un gros ecart entre les valeur que je calcule et les valeur recuperer sur le net pour controle que tout va bien environ 40 m d'ecart !!!!

pour mes calcul j'utilise des variable float qui sont sur 32 bits dans mon api

dans l'arduino le double est t il sur 32 ou 64 bits ? il semble que se soit 64bits.

penses tu que cela explique le decalage de 40min ???

Merci
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 19, 2016, 12:17 pm
@bricoleau

pour pouvoir confirmé pourrai tu me communiquer la valeur de lever et coucher pour le 19 08 2016

merci afin de voir s'il s'agit d'une erreur de precision ou autre

Cordialement
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 19, 2016, 01:00 pm
@bricoleau


j'ai trouvé mes erreur : la longitude en une longitude ouest il fallait donc que je paramete -2.xx et non 2.xxx

et j'avais egalement une erreur lors de la conversion en hh mm ss a cause d'une conversio  reel vers entier ou je faisait un arrondi plutot que recupere la partie entiere ....


je dois encore relire tout cela et nettoyer mon code ...

j'ai pour le 18 08 16 2 minute d'ecart pour le lever et 1 pour le coucher....

merci pour ce bel exemple

Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: vinceducat on Aug 21, 2016, 11:56 am
info ... pour les curieux


sur le site  http://www.ecy.wa.gov/programs/eap/models.html



vous trouverez un fichier excel avec macro ... et tous les algo ... pour calcul sunset sunrise ...etc ...

calcul excel complet .....
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: B83s on Aug 25, 2016, 03:47 pm
Pour moi, ces formules me conviennent parfaitement ...

Merci du boulot Mr Bricoleau !
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: MicroQuettas on Dec 01, 2018, 05:21 pm
@ Bricoleau

Un grand merci pour ce programme que j'ai incorporé dans la nouvelle mouture de ma commande de volets roulants.
J'ai comparé les résultats avec ceux du site IMCCE. La précision (<=3 min) est largement suffisante pour l'usage que j'en fais.

Encore bravo et merci !

MicroQuettas
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: bricoleau on Dec 03, 2018, 01:40 pm
C'est gentil mais y a un truc qui me titille sévère : une précision à 3 minutes par rapport à l'IMCCE, c'est très loin de mon objectif initial.

Lorsque j'avais développé ce truc, j'y avais consacré un gros paquet d'heures, en amont du coding en lui-même, pour appréhender les équations associées, et comparer leurs diverses formes d'approximation.
Sa précision n'est pas censée être de 3 minutes, mais de 2 secondes !
Précision vérifiée sur plusieurs milliers d"échantillons avec le site IMCCE de l'époque.

Sauf que ce site a évolué.
A l'époque, il y avait une page où on pouvait saisir des coordonnées GPS, une plage de dates, et cela restituait le tableau complet des levers/méridiens/couchers de soleil sur la plage de dates demandée.

Point important : le soleil n'est pas un point à l'horizon, mais un disque, avec un centre et un rayon.
Il y a deux conventions possibles pour déterminer l'instant où le soleil se couche (ou se lève).
C'est soit le moment où le centre du disque franchit l'horizon (le soleil est alors à moitié visible), soit le moment où le haut du disque franchit l'horizon (le soleil n'est alors plus du tout visible).
Entre les deux, il y a un délai plus ou moins important selon la latitude (en gros : cela dépend si le soleil se couche en descendant verticalement ou en biais).
La convention IMCCE, que j'ai appliquée, est la première option, celle du centre du disque.
Mais au niveau internationnal il me semble que la convention la plus usuelle est la seconde.

A présent, sauf erreur de ma part, le site de l'IMCCE ne contient que des liens externes vers d'autres sites qui permettent le calcul d'éphémérides.
Il est possible (enfin j'espère) que l'écart constaté de 3 minutes provient juste d'une différence de convention.

Est-ce que tu peux me donner l'url précise que tu utilises pour avoir l'éphéméride officielle ?
Title: Re: Calcul éphéméride précis : lever et coucher de soleil
Post by: MicroQuettas on Dec 03, 2018, 08:49 pm
Bonsoir,

J'ai comparé avec le site suivant "promenade.imcce" (https://promenade.imcce.fr/fr/pages5/585.html). Ils disent eux mêmes que leurs calculs sont approchés... Quant au véritable site de l'IMCCE, je dois dire que je n'y comprends que pouïc... Doit falloir avoir un doctorat d'état en astronomie pour trouver l'heure de lever du soleil...
J'ai aussi comparé avec la feuille Excel US Ephémérides Excel (http://www.ecy.wa.gov/programs/eap/models.html). Elle suit le site "promenade.imcce" à une minute...

Ceci dit, il est fort possible que ce soit ton programme le plus précis. Je l'ai utilisé sur un ESP8266 et je ne suis pas certain que la trigo double soit vraiment en double...

En attendant, encore une fois, ton programme est parfait pour ce que je fais. Avec les différences de luminosité dues aux variations météo, une précision de 15mn serait encore parfaitement OK.

Dernière précision, je n'ai fait les calculs que sur ma position (44'24N, 2'29E). Ce sont les coordonnées de l'aéroport de Rodez. Je suis en ville, à qq km de là. J'ai rentré les coordonnées exactes de mon lieu (obtenues avec géoportail.gouv.fr). Une minute de différence au maximum, pas de quoi s'énerver...

Encore merci et bonne bidouille

MicroQuettas