PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sonnenbahnberechnung mit BASCOM



Dirk
03.09.2006, 15:40
Hallo Leute,

hat schon jemand von euch die Berechnung der Sonnenposition (Eingabe: aktueller Standort und Uhrzeit, Ausgabe: Position) in BASCOM (oder in einem anderen BASIC-Dialekt) umgesetzt?

Wer kann mir da helfen?

Gruß Dirk

Manf
03.09.2006, 16:16
Die Berechnung des Sonnenstands ist auch hier beschrieben, noch ohne BASCOM.
http://de.wikipedia.org/wiki/Sonnenstand

hifish
03.09.2006, 17:52
Hallo Dirk,
ich bin auch an der Umsetzung interessiert hauptsächlich Sonnenauf und -untergang. hab schon mal das gefunden...

http://lexikon.astronomie.info/zeitgleichung/

gruss
hifish

U-1110
19.08.2012, 08:35
Hallo an Alle:cool:
Irgendwie geht da in Bascom keiner so richtig ran!
Hab mal ne Excel berechnung in Bascom umgeschrieben und herrausgekommen ist das hier:

'++++++++ Sonnenstandberechnung 2012 ++++++++++
'Vorlage: Excel-berechnung
'nachvollziebar auf: http://www.solartopo.com/sonnenumlaufbahn.htm zum überprüfen der zahlen
'$sim
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 70
'$prog &HFF , &HFF , &HD9 , &H00
'Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
' Config Adc = Single , Prescaler = Auto , Reference = Avcc
Ddra = &B11111111
Ddrb = &B11111111
Config Portc.1 = Output
Config Portd.7 = Output
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Initlcd
Cursor Off
Config Dcf77 = Pind.6 , Inverted = 0 , Timer = 1 , Debug = 1 , , Check = 1 , Update = 0 , Gosub = Sectic
Config Date = Dmy , Separator = .
Enable Interrupts
Signal_kontroll_led Alias Portc.1
Dim Neue_sekunde As Bit
Dim Synchron As Bit
Dim Tag_im_jahr As Byte
Dim Diff_zu_utc As Byte
'Dim Pi As Single
'Dim Pi2 As Single
'Dim Pi3 As Single
'Dim K_pi As Single
Dim Tageszahl As Integer
Dim Diff_utc As Single
Dim Sekunde As Single
Dim Minute As Single
Dim Stunde As Single
'---------------------------
Dim S_0 As Single
Dim S_1 As Single
Dim S_2 As Single
Dim S_3 As Single
Dim S_4 As Single
Dim S_5 As Single
Dim S_6 As Single
Dim S_7 As Single
Dim S_8 As Single
'---------------------------
Dim D_0 As Single
Dim D_1 As Single
Dim D_2 As Single
Dim D_3 As Single
Dim D_4 As Single
Dim D_5 As Single
Dim D_6 As Single
Dim D_7 As Single
Dim D_8 As Single
Dim D_9 As Single
Dim D_10 As Single
Dim D_11 As Single
Dim D_12 As Single
Dim D_13 As Single
Dim D_14 As Single
Dim D_15 As Single
Dim D_16 As Single
Dim D_17 As Single
Dim D_18 As Single
Dim D_19 As Single
Dim D_20 As Single
Dim D_21 As Single
Dim D_22 As Single
Dim D_23 As Single
Dim D_24 As Single
Dim D_25 As Single
Dim D_26 As Single
Dim D_27 As Single
Dim D_28 As Single
'--------------------------
Dim Z_0 As Single
Dim Z_1 As Single
Dim Z_2 As Single
Dim Z_3 As Single
Dim Z_4 As Single
Dim Z_5 As Single
Dim Z_6 As Single
Dim Z_7 As Single
Dim Z_8 As Single
Dim Z_9 As Single
Dim Z_10 As Single
Dim Z_11 As Single
Dim Z_12 As Single
Dim Z_13 As Single
Dim Z_14 As Single
Dim Z_15 As Single
Dim Z_16 As Single
'--------------------------
Dim W_0 As Single
Dim W_1 As Single
Dim W_2 As Single
Dim W_3 As Single
Dim W_4 As Single
Dim W_5 As Single
Dim W_6 As Single
Dim W_7 As Single
'--------------------------
Dim H_0 As Single
Dim H_1 As Single
Dim H_2 As Single
Dim H_3 As Single
Dim H_4 As Single
Dim H_5 As Single
Dim H_6 As Single
Dim H_7 As Single
Dim H_8 As Single
Dim H_9 As Single
Dim H_10 As Single
Dim H_11 As Single
Dim H_12 As Single
Dim H_13 As Single
Dim H_14 As Single
'--------------------------
Dim R_0 As Single
Dim R_1 As Single
Dim R_2 As Single
Dim R_3 As Single
Dim R_4 As Single
'-------------------------
Dim Ca_0 As Single
Dim Ca_1 As Single
Dim Ca_2 As Single
Dim Ca_3 As Single
Dim Ca_4 As Single
Dim Ca_5 As Single
Dim Ca_6 As Single
Dim Ca_7 As Single
Dim Ca_8 As Single
Dim Ca_9 As Single
Dim Ca_10 As Single
Dim Ca_11 As Single
Dim Ca_12 As Single
Dim Ca_13 As Single
Dim Ca_14 As Single
'--------------------
Dim Az_0 As Single
Dim Az_1 As Single
Dim Az_2 As Single
Dim Az_3 As Single
Dim Az_4 As Single
Dim Az_5 As Single
Dim Az_6 As Single
Dim Az_7 As Single
Dim Az_8 As Single
Dim Az_9 As Single
Dim Az_10 As Single
Dim Az_11 As Single
Dim Az_12 As Single
Dim Az_13 As Single
Dim Az_14 As Single
Dim Az_15 As Single
Dim Az_16 As Single
Dim Az_17 As Single
Dim Azimut As Single
Dim A As Single
Dim A1 As Single
Dim C As Single
Dim D As Single
'--------------------
'---------------------------Const Deklination---------------------------
Const De_1 = 0.006918
Const De_2 = 0.399912
Const De_3 = 0.070257
Const De_4 = 0.006758
Const De_5 = 0.000907
Const De_6 = 0.002697
Const De_7 = 0.00148
Const De_1_2 = -0.392994
'----------------------------------
'--------------------------Const Zeitgeichung-----------------
Const Zg_1 = 229.18
Const Zg_2 = 0.000075
Const Zg_3 = 0.001868
Const Zg_1_2 = 0.001943
Const Zg_4 = 0.032077
Const Zg_5 = 0.014615
Const Zg_6 = 0.040849
'Const Arcsin = 0.5333333333333333
Const Pi = 3.14159265358
Const Pi2 = 6.2831853071
Const Pi3 = 12.5663706143
Const K_pi = 0.0174532925
'----------------------------------
Const L = 48.11602 'München DC Lat
Const B = 11.57954 'google earth Long
'------------------------
Time$ = "13:18:00"
Date$ = "17.08.12"
'--------------------------
Declare Sub Sonnenaufgang
Declare Sub Sonnenuntergang
Declare Sub Anzeige
'------------------------------------
Deflcdchar 1 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32 ' Grad
Cls
Do
'
Tageszahl = Dayofyear()
'Goto Anzeige
'------------------Jahresteil S-S_6---------------------------------
'| /|
'| =(Tageszahl-1+((Stunde+Minute/60)-12)/24)/365 \/ |
'-------------------------------------------------------------------
Minute = _min
Stunde = _hour
S_0 = Stunde
Stunde = Stunde - 1
S_1 = Minute
S_2 = S_0 + S_1
S_3 = S_2 / 60
S_4 = Tageszahl + 1 '- 1
S_5 = S_3 - 12
S_6 = S_5 / 24
S_7 = S_6 + S_4
S_8 = S_7 / 365
'Print S_0 ; " " ; S_1 ; " " ; S_2 ; " " ; S_3 ; " " ; S_4 ; " " ; S_5 ; " " ; S_6 ; " " ; S_7 ; " " ; S_8
'** S_6 ** 0.092579897
'--------------------Deklination D-D_28-------------------------------------------------
'| |
'| =(0,006918-0,399912*COS(Pi2()*S_6)+0,070257*SIN(2*PI()*S_6)-0,006758*COS(2*S_6*PI()) |
'| /|
'| +0,000907*SIN(2*S_6*PI())-0,002697*COS(3*S_6*PI())+0,00148*SIN(3*S_6*PI()))/K_pi \/ |
'---------------------------------------------------------------------------------------
D_0 = Pi2 * S_8
D_1 = Cos(d_0)
D_2 = De_2 * D_1
D_3 = De_1 - D_2
D_4 = Pi2 * S_8
D_5 = Sin(d_4)
D_6 = De_3 * D_5
D_7 = D_3 + D_6
D_8 = 2 * S_8
D_9 = D_8 * Pi
D_10 = Cos(d_9)
D_11 = D_10 * De_4
D_12 = D_7 - D_11
D_13 = 2 * S_8
D_14 = D_13 * Pi
D_15 = Sin(d_14)
D_16 = D_15 * De_5
D_17 = D_16 + D_12
D_18 = 3 * S_8
D_19 = D_18 * Pi
D_20 = Cos(d_19)
D_21 = D_20 * De_6
D_22 = D_17 - D_21
D_23 = 3 * S_8
D_24 = D_23 * Pi
D_25 = Sin(d_24)
D_26 = D_25 * De_7
D_27 = D_26 + D_22
D_28 = D_27 / K_pi
'-------------------------------------------------------------------------------------------------
'------------------Zeitgleichung Z-16----------------------------------------------------------
' |
' =229,18*(0,000075+0,001868*COS(2*PI()*F26)-0,032077*SIN(2*PI()*F26) / |
' -0,014615*COS(2*2*PI()*F26)-0,040849*SIN(2*2*PI()*F26)) |
'Zeitgleichung=-0,171*SIN(0,0337*A1+0,465)-0,1299*SIN(0,01787*A1-0,168) |
'-----------------------------------------------------------------------------------------------------
Z_0 = Pi2 * S_8
Z_1 = Cos(z_0)
Z_2 = Z_1 * Zg_3
Z_3 = Z_2 + Zg_2
Z_4 = Pi2 * S_8
Z_5 = Sin(z_4)
Z_6 = Z_5 * Zg_4
Z_7 = Z_3 - Z_6
Z_8 = Pi3 * S_8
Z_9 = Cos(z_8)
Z_10 = Z_9 * Zg_5
Z_11 = Z_7 - Z_10
Z_12 = Pi3 * S_8
Z_13 = Sin(z_12)
Z_14 = Z_13 * Zg_6
Z_15 = Z_11 - Z_14
Z_16 = Zg_1 * Z_15

'-------------------------------------------------------------
'------------------Stundenwinkel W-7-----------------------------
' /|
' =($B$6*60+$B$7+H25+4*$B$5-60)/4-180 \/ |
'----------------------------------------------------------------
W_0 = Stunde * 60
W_1 = W_0 + Minute
W_2 = W_1 + Z_16
W_3 = 4 * B
W_4 = W_2 + W_3
W_5 = W_4 - 60
W_6 = W_5 / 4
W_7 = W_6 - 180
'Print W_0 ; " " ; W_1 ; " " ; W_2 ; " " ; W_3 ; " " ; W_4 ; " " ; W_5 ; " " ; W_6 ; " " ; W_7
'----------------------------------------------------------------------------
'----------------sin(Sonnenhöhe)-----------------------------------------------
' /|
' =-(SIN($Q$16*$B$4)*J26-SIN($Q$16*G26))/(COS($Q$16*$B$4)*SIN(ARCCOS(J26)))
'------------------------------------------------------------------------------
H_0 = K_pi * L
H_1 = Sin(h_0)
H_2 = K_pi * D_28
H_3 = Sin(h_2)
H_4 = H_1 * H_2
H_5 = K_pi * L
H_6 = Cos(h_5)
H_7 = K_pi * D_28
H_8 = Cos(h_7)
H_9 = K_pi * W_7
H_10 = Cos(h_9)
H_11 = H_1 * H_3
H_12 = H_6 * H_8
H_13 = H_12 * H_10
H_14 = H_4 + H_13
'--------------------------------------------------------------
'-------------------(SONNENHÖHE)---------------------------------
' -3,2 |
' =ARCSIN(J25)/$B$9 ?????? |
'--------------------------------------------------------------------------
R_0 = Asin(h_14)
'R_1 =Acos (r_0)
R_2 = R_0 / K_pi
'R_2 = R_2 + 4.03
R_4 = R_2
'-------------------------------------------------------------------------
'-------------------cos(Azimut)----------------------------------------------
' |
' =-(SIN($B$9*$B$4)*J25-SIN($B$9*G25))/(COS($B$9*$B$4)*SIN(ARCCOS(J25))) ? |
' |
'----------------------------------------------------------------------------
Ca_0 = K_pi * L
Ca_1 = Sin(ca_0)
Ca_2 = Ca_1 * H_14 '***
Ca_3 = K_pi * D_28
Ca_4 = Sin(ca_3)
Ca_5 = Ca_4 - Ca_2 '**********
Ca_6 = Cos(ca_0) '***
Ca_7 = Acos(h_14)
Ca_8 = Sin(ca_7)
Ca_9 = Ca_8 * Ca_6
Ca_10 = Ca_5 / Ca_9
' Print Ca_0 ; " " ; Ca_1 ; " " ; Ca_2 ; " " ; Ca_3 ; " " ; Ca_4 ; " " ; Ca_5 ; " " ; Ca_6 ; " " ; Ca_7 ; " " ; Ca_8 ; " " ; Ca_9 ; " " ; Ca_10
'---------------------------------------------------------------------------------------
'---------------------Azimut---------------------------------------------------------------
' Prüfung: | Dann_Wert | Sonst_Wert ???? |
' =WENN($B$6+$B$7/60<=12+(15-$B$5)/15-H25/60;ARCCOS(L25)/$B$9;360-ARCCOS(L25)/$B$9) |
' | | |
'------------------------------------------------------------------------------------------
Az_0 = Stunde
Az_1 = Minute / 60
Az_3 = Az_0 + Az_1
A = Az_3 'prüfung a
'
Az_4 = 15 - B
Az_5 = Az_4 / 15
Az_6 = Az_5 + 12 '***
Az_7 = Z_16 / 60
Az_8 = Az_6 - Az_7 ' prüfung b
A1 = Az_8
'-----------------------------------------------------------------------------------------------
Az_11 = Acos(ca_10)
Az_12 = Az_11 / K_pi 'ergebnis wahr (Dann_Wert)
C = Az_12
'---------------------------------------------------------------------------------------------
Az_13 = Acos(ca_10)
Az_14 = Az_13 / K_pi
Az_15 = 360 - Az_14 'ergebnis falsch (Sonst_Wert)
D = Az_15
'---------------------------------------------------------------------------------
If Neue_sekunde = 1 Then
Neue_sekunde = 0
Call Anzeige
End If
If A > A1 And Az_15 > 190.0 Then
Call Sonnenuntergang
End If
If A < A1 Then
Call Sonnenaufgang
End If
Signal_kontroll_led = Dcf_status.0
If Dcf_status.2 = 1 Then
Portd.6 = 1
End If
'Print S_4 ; " " ; S_8 ; " " ; D_28 ; " " ; Z_16 ; " " ; W_7 ; " " ; H_14 ; " " ; R_2 ; " " ; Ca_10 ; " " ; Az_12 ; " " ; Az_15
Print A ; " " ; A1 ; " " ; R_2
Loop
End
Sectic:
Neue_sekunde = 1
If _sec = 59 Then Synchron = Dcf_status.2
'
If Synchron = 1 Then
Portd.7 = 1
Else
Portd.7 = 0
End If
Return
'
Sub Anzeige
Locate 1 , 1
Lcd ; "48.11" ; Chr(1) ; " " ; Time$
Locate 2 , 1
Lcd "Zenith :" ; Fusing(r_2 , "##.##") ; Chr(1) ; " "
Locate 3 , 1
Lcd "11.57" ; Chr(1) ; " " ; Date$
If A < A1 Then
Locate 4 , 1
Lcd "Azimut :" ; Fusing(az_12 , "##.##" ) ; Chr(1) ; " "
Else
Locate 4 , 1
Lcd "Azimut :" ; Fusing(az_15 , "##.##" ) ; Chr(1) ; " "
End If
End Sub
'
Sub Sonnenaufgang
Select Case R_2
Case -9.9 To -7.3:
Porta = &B00000000
Portb = &B00000000
Case -7.0 To -6.5:
Porta = &B00000001
Case -6.4 To -6.0:
Porta = &B00000011
Case -5.9 To -5.5:
Porta = &B00000111
Case -5.4 To -5.0:
Porta = &B00001111
Case -4.9 To -4.3:
Porta = &B00011111
Case -4.2 To -3.2:
Porta = &B00111111
Case -3.1 To -2.1:
Porta = &B01111111
Case -2.0 To 1.5:
Porta = &B11111111
Case 1.6 To 2.0:
Portb = &B00000001
Case 2.1 To 3.0:
Portb = &B00000011
Case 3.1 To 10.0: '1.7 max
Porta = &B00000000
Portb = &B00000000
End Select
End Sub
'
Sub Sonnenuntergang
Select Case R_2
Case 9.8 To 10.5:
Porta = &B11111111
Portb = &B00000011
Case 6.5 To 9.4:
Porta = &B11111111
Portb = &B00000001
Case 6.0 To 6.4:
Porta = &B11111111
Portb = &B00000000
Case 5.3 To 5.9 :
Porta = &B01111111
Portb = &B00000000
Case 4.9 To 5.2:
Porta = &B00111111
Portb = &B00000000
Case 3.9 To 4.8:
Porta = &B00011111
Portb = &B00000000
Case -0.8 To 3.8:
Porta = &B00001111
Portb = &B00000000
Case -2.5 To -0.9:
Porta = &B00000111
Portb = &B00000000
Case -5.0 To -2.6:
Porta = &B00000011
Portb = &B00000000
Case -6.6 To -5.1 :
Porta = &B00000001
Portb = &B00000000
Case -10.0 To -6.7:
Porta = &B00000000
Portb = &B00000000
End Select
End Sub

Kampi
19.08.2012, 08:38
Hi,

setzt deinen Code mal bitte zwischen ["code] und ["/code] (die " aber weglassen).
Sonst wird dein Post vieeeeeeeeeeeeeeeeeeeeel zu lang (wie du vielleicht selber siehst ;) )

U-1110
19.08.2012, 08:48
Soooooooo zufrieden!!!!!!!!!!!!!!!!!

dolivo
20.08.2012, 14:56
Hallo,
ich habe nach http://lexikon.astronomie.info/zeitgleichung/ ein BASCOM-Programm geschrieben, das allerdings noch nicht ausführlich getestet ist. Als Zeitgeber soll eine DCF-Uhr dienen.

'Sonnentest 13.4.12
'lexikon.astronomie.info/zeitgleichung/
'für Radebeul: 13°37' Ost, 51°06' Nord


$crystal = 1000000
$regfile = "m48def.dat"

$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40

Dim Woz_moz As Single , Term1 As Single , Term2 As Single , Term3 As Single
Dim Deklination As Single , Zeitdiff As Single , Sa As Single , Su As Single
Dim Samin As Single , Sumin As Single
Dim Tag As Integer , Diff2 As Integer
Dim Sahour As Byte , Samin1 As Byte , Suhour As Byte , Sumin1 As Byte
Dim Sastrmin As String * 3 , Sustrmin As String * 3

Anfang:
Input "Tagzahl " , Tag

Term1 = 0.0337 * Tag 'Berechnung Differenz Wahre + Mittlere
Term1 = Term1 + 0.465 'Ortszeit
Term1 = Sin(term1)
Term1 = -0.171 * Term1

Term2 = 0.01787 * Tag
Term2 = Term2 - 0.168
Term2 = Sin(term2)
Term2 = 0.1299 * Term2

Woz_moz = Term1 - Term2 'Zeitgleichung /in Stunden
Diff2 = Woz_moz * 60 'auf Minuten gerechnet

Term1 = Tag - 80.086 'Berechnung Deklination
Term1 = Term1 * 0.016906
Term1 = Sin(term1)
Deklination = Term1 * 0.4095

Term1 = Sin(deklination) 'Berechnung Zeitdifferenz
Term1 = 0.7771 * Term1 'B=0,89 für Radebeul
Term1 = -0.0145 - Term1
Term2 = Cos(deklination)
Term2 = 0.6294 * Term2
Zeitdiff = Term1 / Term2
Zeitdiff = Acos(zeitdiff)
Zeitdiff = 3.8197 * Zeitdiff

Sa = 12 - Zeitdiff 'Sonnenaufgang
Sa = Sa - Woz_moz
Sa = Sa - 0.9067
Sa = Sa + 1 'MEZ, bei MESZ +2
Samin = Frac(sa)
Sahour = Sa - Samin
Samin1 = Samin * 60
Sastrmin = Str(samin1)
Sastrmin = Format(sastrmin , "00")

Su = 12 + Zeitdiff
Su = Su - Woz_moz
Su = Su - 0.9067
Su = Su + 1
Sumin = Frac(su)
Suhour = Su - Sumin
Sumin1 = Sumin * 60
Sustrmin = Str(sumin1)
Sustrmin = Format(sustrmin , "00")


Print "WOZ-MOZ: " ; Woz_moz
Print "min: " ; Diff2
Print "Deklination: " ; Deklination
Print "Zeitdifferenz: " ; Zeitdiff
Print "Sonnenaufgang: " ; Sahour ; ":" ; Sastrmin
Print "Sonnenuntergang: " ; Suhour ; ":" ; Sustrmin
Print
Goto Anfang

End

U-1110
20.08.2012, 15:45
Hi
Schau mal hier :http://suncalc.net/#/51.1116,13.6494,13/2012.08.20/16:42
Da kannst du deine zahlen überprüfen
achso eine Sache Term1 = Term1 - 1 dann ist es Perfekt
Gruß
Andreas

dolivo
28.08.2012, 14:58
Hallo, da ich oft term1 nehme, finde ich nicht die Stelle, die Du meinst :(.
Im Moment komme ich nicht zum Testen, ist aber vorgemerkt.
Dolivo

U-1110
28.08.2012, 16:25
Hi dolivo
Term1 = 0.0337 * Tag 'Berechnung Differenz Wahre + Mittlere
Term1 = Term1 + 0.465 'Ortszeit
Term1 = Sin(term1)
Term1 = -0.171 * Term1
Term1 = Term1 - 1 'dann stimmt die Uhrzeit(Sommerzeit)
Habs grad mal laufen lassen ,um eine Minute daneben als im Internet \\:D/
Echt Super!!!!!

mat-sche
30.09.2012, 18:21
Hi Dolivo,

Dein Code sieht ganz chick aus! Nun würde ich diesen gern bei mir in meine Haussteuerung einsetzen. Leider nur kann ich nicht einen Bezugspunkt im Code finden, bei dem ich meine Standortkoordinaten einfügen kann. Könntest Du mir bitte mal kurz unter die Arme greifen und helfen :) .
Danke und Grüße MAT

dolivo
01.10.2012, 09:03
Hallo,
ich habe die im lexikon.astronomie aufgeführten Formeln einfach nur "aufgetröselt", damit sie in Bascom verarbeitet werden können. Wenn Du Dir das Zahlenbeispiel von Berlin ansiehst, wird auch manches klarer. Ich hänge aber noch einmal mein Programm an, in dem ich ein paar Erläuterungen mehr eingefügt habe.

mat-sche
01.10.2012, 18:13
Hi,

dank für Deine Antwort!
habe mal versucht den Code im Simulator laufen zu lassen, natürlich mit meinen Koordinaten.
Was ich bei Deinem Code nicht so recht verstehe ist:
'Sonnenaufgang
Sa = 12 - Zeitdiff
Sa = Sa - Woz_moz
Sa = Sa - 0.9067 '13°37'/15°=0,9067
...wie kommst Du auf 0,9067?

Und dann ist da noch... welche Zeit wird genau ausgerechnet? Wenn ich die Ergebnisse mit http://www.suncalc.net/#/51.7236,12.1505,18/2012.10.01/18:37 vergleiche, gibt es mehrere Arten der Sonnen auf/untergänge...
hmmmmm.... werde wohl noch weiter testen.

dolivo
04.10.2012, 14:18
Hallo, mat-sche,

ja, da habe ich falsch gerechnet. Richtig ist 0,9078.
Ich habe meine Werte bisher nur mit den Zahlen verglichen, die im Kalender stehen und die Zeitdifferenz zwischen meinem Ort und dem angegebenen (hier Kassel, ermittelt mit der Längengraddifferenz) abgezogen (da östlich). Das stimmt recht gut überein innerhalb des genannten Fehlerbereichs.

Nun noch zum Beitrag von U-1110 v. 28.8.: Ich berücksichtige die Sommer- bzw. Normalzeit beim Sonnenauf- bzw. -untergang. An der Stelle interessiert mich ja nur das Zwischenergebnis.

dolivo

mat-sche
14.10.2012, 19:29
Hi Dolivo,

nun endlich habe ich Deinen Code in meine Haussteuerung integriert und nun läuft die Berechnung dank dcf77 um die 1min genau.
Danke für die Codezeilen!
Grüße MAT

Accenter
12.01.2014, 16:34
Bin gerade auf diesen Code hier gestoßen und frage mich wie ich das ganze für Wien umschreiben kann?

Meine Werte sind:
Breitengrad : 48.2667
Längengrad : 16.4


Würde mich über Hilfe freuen, ich verstehe nur Teile von diesem Code. :-(

dolivo
12.01.2014, 17:35
Ich habe die Erklärung etwas kurz gelassen, weil die Berechnung im Astrolexikon gut beschrieben ist. Ich hatte das ja nur auf Bascom umgesetzt und die Werte, die für den Ort konstant sind, gleich eingesetzt um die Rechenzeit zu kürzen.
Für Wien muss man bei der Berechnung der Zeitdifferenz so rechnen:
B=pi*48,267/180 = 0,843, sin B= 0,747 (natürlich mit Bogenmaß rechnen);
Sonnenaufgang: 16,4/15 = 1,093
Viel Erfolg
dolivo

Accenter
12.01.2014, 23:00
Danke! Teste ich gleich mal :-)

Accenter
14.01.2014, 00:46
Ich habe jetzt mal den Code nach deinen Werten die du mir errechnet hast umgebaut. Die Sonnenuntergangszeit stimmt auf die Minute genau, jedoch liegt die Sonnenaufgangszeit um 10 Minuten daneben. :-(
Was habe ich falsch gemacht?

Hier mal mein Code:



Zone = 1
Term1 = 0.0337 * Tagimjahr
Term1 = Term1 + 0.465
Term1 = Sin(term1)
Term1 = -0.171 * Term1
Term2 = 0.01787 * Tagimjahr
Term2 = Term2 - 0.168
Term2 = Sin(term2)
Term2 = 0.1299 * Term2
Woz_moz = Term1 - Term2 'Zeitgleichung /in Stunden
Diff2 = Woz_moz * 60 'auf Minuten gerechnet

'Berechnung Deklination
Term1 = Tagimjahr - 80.086
Term1 = Term1 * 0.016906
Term1 = Sin(term1)
Deklination = Term1 * 0.4095

'Berechnung Zeitdifferenz
Term1 = Sin(deklination)
Term1 = 0.747 * Term1 'B=pi*48,267/180 = 0,843, sin B= 0,747
Term1 = -0.0145 - Term1 'sin(h)=-0,0145
Term2 = Cos(deklination)
Term2 = 0.6024 * Term2 'cos(B)=0,6294
Zeitdiff = Term1 / Term2
Zeitdiff = Acos(zeitdiff)
Zeitdiff = 3.8197 * Zeitdiff '12/pi=3,8197

'Sonnenaufgang
Sa = 12 - Zeitdiff
Sa = Sa - Woz_moz
Sa = Sa - 1.093 '16.4 / 15 = 1.093
Sa = Sa + Zone 'MEZ, bei MESZ +2
Samin = Frac(sa)
Sahour = Sa - Samin
Samin1 = Samin * 60
Sastrmin = Str(samin1)
Sastrmin = Format(sastrmin , "00")

'Sonnenuntergang
Su = 12 + Zeitdiff
Su = Su - Woz_moz
Su = Su - 0.9067
Su = Su + Zone
Sumin = Frac(su)
Suhour = Su - Sumin
Sumin1 = Sumin * 60
Sustrmin = Str(sumin1)
Sustrmin = Format(sustrmin , "00")

dolivo
20.01.2014, 13:31
Natürlich muss auch bei der Sonnenuntergangsberechnung Dein Wert von Wien eingesetzt werden. Also auch 1,093 statt o,9067!

'Sonnenuntergang Su = 12 + Zeitdiff
Su = Su - Woz_moz
Su = Su - 0.9067
...

Accenter
20.01.2014, 13:43
danke, oft sieht man den wald vor lauter bäumen nicht :-)

charly013
04.02.2023, 06:46
moinmoin,

danke dolivo f. das schoene Programm, habe es leicht angepasst,
man kann jetzt in die variablen Lg & Bg seine eigenen Koordinaten
eintragen, fertig ( Tag der berechnung nicht vergessen )
viel spass damit