Essayez-vous d'obtenir le plus de soleil pour votre panneau solaire rotatif? Si c'est le cas, vous pouvez vous en sortir en réglant simplement la position entre l'Est et l'Ouest en fonction de votre horloge (vous pouvez améliorer cela en prenant la position long/lat dans le compte pour calculer les heures d'ensoleillement). Vous aurez besoin de beaucoup de calculs d'astronomie si vous voulez contrôler l'azimut et l'élévation avec précision. Arduino ne supporte pas le double, et avec single vous n'aurez pas de résultats très précis (ils suffiront pour le tracker du panneau solaire, mais pas assez si vous voulez que le télescope puisse suivre un objet du ciel). Mon conseil serait soit d'enquêter beaucoup sur le sujet, ou de jeter un coup d'œil sur un logiciel d'astronomie open source et d'extraire les calculs nécessaires de la source (si les termes de la licence le permettent). Juste pour vous donner une idée, voici un petit extrait de PilotLogic composant TMoon que vous pouvez obtenir dans CodeTyphon/Lazarus/FPC package d'installation trouvé here:
procedure Sun_Position_Horizontal(date:TdateTime; longitude,latitude: extended; var elevation,azimuth: extended);
var
pos1: T_Coord;
begin
pos1 := sun_coordinate(date);
calc_horizontal(pos1,date,longitude,latitude);
end;
function sun_coordinate(date:TDateTime):t_coord;
var
l,b,r: extended;
lambda,t: extended;
begin
earth_coord(date,l,b,r);
(* convert earth coordinate to sun coordinate *)
l := l+180;
b := -b;
(* conversion to FK5 *)
t := (julian_date(date)-2451545.0)/365250.0*10;
lambda:=l+(-1.397-0.00031*t)*t;
l := l-0.09033/3600;
b := b+0.03916/3600*(cos_d(lambda)-sin_d(lambda));
(* aberration *)
l := l-20.4898/3600/r;
(* correction of nutation - is done inside calc_geocentric *)
{ calc_epsilon_phi(date,delta_phi,epsilon); }
{ l := l+delta_phi; }
(* fill result and convert to geocentric *)
result.longitude := put_in_360(l);
result.latitude := b;
result.radius := r*AU;
calc_geocentric(result,date);
end;
procedure calc_horizontal(var coord:t_coord; date:TDateTime; longitude,latitude: extended);
var
h: extended;
begin
h := put_in_360(star_time(date)-coord.rektaszension-longitude);
coord.azimuth := arctan2_d(sin_d(h), cos_d(h)*sin_d(latitude)-
tan_d(coord.declination)*cos_d(latitude));
coord.elevation := arcsin_d(sin_d(latitude)*sin_d(coord.declination)+
cos_d(latitude)*cos_d(coord.declination)*cos_d(h));
end;
Si vous aviez un cas que votre appareil ne bouge pas après l'installation (ce qui n'est pas le cas après avoir relu votre question pour que vous puissiez ignorer le reste du message), votre longitude et votre latitude sont corrigées et vous les connaissez au moment de la compilation. est d'abord installé. De cette façon, le GPS n'est pas nécessaire. Vous pouvez également trouver Nord une fois au moment de l'installation, donc vous n'avez pas besoin de boussole non plus.
Le nord magnétique et le vrai nord semblent assez proches, non? – fingerman
Une horloge et un GPS suffisent? C'est super, puisque le GPS et l'Arduino ont déjà une horloge. Y at-il un calcul dont j'ai besoin pour déterminer la position des soleils n'importe où avec seulement GPS + Horloge? En fait, dans une position stationnaire, comment déterminez-vous votre direction? à un degré ou plus? – user701052
Sans boussole, votre appareil ne peut pas déterminer précisément le nord s'il tourne à gauche ou à droite sans avancer ou reculer. Vous pouvez voir l'effet si vous jetez un oeil à un logiciel de cartographie GPS sur un téléphone mobile ou un dispositif de navigation automobile sans boussole intégrée. Lorsque vous tournez à gauche ou à droite, votre direction est beaucoup retardée sur un écran, car le logiciel a besoin d'un mouvement important pour déterminer le changement de direction. – avra