www.mikrocontroller.net

Forum: Projekte & Code Sonnenstandberechnung mit Atmega 8


Autor: Jörg B. (cusoe)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielleicht sucht jemand so etwas, evtl. für eine Solarzellennachführung. 
Das Programm berechnet die Sonnenpostion in Abhängigkeit des eigenen 
Standortes und der Uhrzeit kontinuierlich (Schaltjahre werden 
berücksichtigt). Ein- und Ausgabe der Daten erfolgt derzeit noch über 
die serielle Schnittschelle und einem Terminalprogramm, soll evtl. 
später in Verbindung mit einem LCD-Display und entsprechender Ein- und 
Ausgangsbeschaltung für die Ansteuerung / Rückmeldung der Azimut und 
Elevationsmotoren erweitert werden. Vielleicht nicht so elegant aber die 
Berechnung scheint so i.O. zu sein zumindest stimmen die berechneten 
Werte mit dem Programm "Orbitron" (http://www.stoff.pl/) überein.

Zeit, Datum und der eigene Standort können über die Tastertur während 
des Programmlaufs verändert werden:

s, S = +/- Stunden
m, M = +/- Minuten
s, S = +/- Sekunden

t, T = +/- Tage
o, O = +/- Monate
j, J = +/- Jahre

b, B = +/- eigener Breitengrad (Nord = positiv)
l, L = +/- eigener Längengrad (Ost = positiv)

cusoe

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lang ist das Programm nach dem Übersetzen?

Autor: Jörg B. (cusoe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin wrote:
> Wie lang ist das Programm nach dem Übersetzen?

Leider noch relativ gross

Size after:
AVR Memory Usage
----------------
Device: atmega8

Program:    6782 bytes (82.8% Full)
(.text + .data + .bootloader)

Data:        138 bytes (13.5% Full)
(.data + .bss + .noinit)

Der meiste Speicher wird noch für die Ausgabe "verbraucht", da sie zum
Teil mit dem Befehl "dtostrf" erfolgt. Ohne Ausgabe sind es ca. 4500
bytes.

cusoe

Autor: Albert D. (albert32)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg B. wrote:
> Martin wrote:
>> Wie lang ist das Programm nach dem Übersetzen?
>
> Creating Extended Listing: son.lss
avr-objdump -h -S son.elf > son.lss

Creating Symbol Table: son.sym
avr-nm -n son.elf > son.sym

Size after:
son.elf  :
section            size      addr
.text              5588         0
.data               116   8388704
.bss                 22   8388820
.stab               888         0
.stabstr            113         0
.debug_aranges       32         0
.debug_pubnames     284         0
.debug_info        1380         0
.debug_abbrev       571         0
.debug_line        1608         0
.debug_frame        224         0
.debug_str          339         0
.debug_loc         1016         0
Total             12181


AVR Memory Usage:
-----------------
Device: atmega8

Program:    5704 bytes (69.6% Full)
(.text + .data + .bootloader)

Data:        138 bytes (13.5% Full)
(.data + .bss + .noinit)


-------- end --------


> Process Exit Code: 0
> Time Taken: 00:05

Kommt auf die Einstellungen im Makefile an!

Autor: Jörg B. (cusoe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Albert Doe

Welche Einstellungen hast du im makefile vorgenommen, die Grösse ist ja 
deutlich geringer?

Autor: wborck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bist Du mit dem Programm weitergekommen, gibt es mittlerweile einen 
aktuelleren Stand?

MfG,
wborck

Autor: Albert D. (albert32)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jörg B. wrote:
> @ Albert Doe
>
> Welche Einstellungen hast du im makefile vorgenommen, die Grösse ist ja
> deutlich geringer?

Entschuldigung, hatte viel um die Ohren!

mfg

albert

Autor: Jörg B. (cusoe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein hab leider noch nicht daran weiter arbeiten können, bin erst mal 
mit einem Platinen-Layout beschäftigt.

Autor: Oliver Köhler (oliverk23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jörg (Cusoe),
ich suche ungefähr sowas wie du geschrieben hast, jedoch hab ich leider 
keine Ahnung von der µc Programmierung. Wäre net wenn du dich mal bei 
mir melden könntest damit ich dir mein genaues Problem beschreiben kann, 
ist vielleicht auch schon mit deinem bestehenden Programm machbar, musst 
es auch nicht umsonst machen.

meine Email : olli@koehlerlgbg.de

gruss Olli

Autor: Jörg B. (cusoe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo oliver,

kannst mir ja mal schreiben was du vor hast, aber nur soviel, wenn´s um 
programmieren geht hab ich da auch nicht all zu viel zeit für. hab 
jedoch zwischenzeitlich wieder etwas daran erweitert, es gibt jetzt eine 
kleine platine mit lcd und einige diveres ergänzungen im programm, aber 
es ist noch lange nicht fertig.

gruss jörg

Autor: Oliver Köhler (oliverk23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jörd,
wow das ging aber flott :-)
aber es wäre mir lieber wenn wir uns mal im chat oder per email 
unterhalten könnten oder telefonieren, da wie gesagt du die sache ja net 
umsonst machen musst und ich weiss net ob des so wirklich hier ins forum 
gehört dann.
Aber das mal en groben Überblick hast was ich suche bzw brauche.
eigentlich nur einen µc der mir den aktuellen Sonnenstand berechnet 
brauche auch nur den Azimut Winkel.
Die lokalen GPS Daten am besten beim flashen des µc fest mit ins 
Programm eingeben, und wenn möglich Datum und Uhrzeit über ne DCF Uhr 
holen.
Und den Azimut Winkel dann wenn möglich als analog Signal an ne 
Steuerung übergeben.
Das mal im groben, wie gesagt müssten wir uns mal unterhalten was ich 
dafür alles benötige und was du dafür haben willst wenn du mir sowas 
machen würdest bzw das jetzige Programm umzuschreiben,bin gern bereit 
dafür einige Euros springen zu lassen, aber das will ich net unbedingt 
hier im Chat machen.

Meld dich mal bitte unter olli@koehlerlgbg.de.
Da sag ich dir dann genaueres.

Gruss olli

Autor: Jörg B. (cusoe)
Datum:
Angehängte Dateien:
  • preview image for 1.jpg
    1.jpg
    202 KB, 1778 Downloads
  • preview image for 2.jpg
    2.jpg
    487 KB, 2102 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Nur mal zur Info, so sieht der derzeitige Stand aus. Leider komme ich 
aus Zeitmangel nur langsam weiter, aber vielleicht nutzt es euch etwas. 
Details könnt ihr ja aus dem Schaltplan nehmen. Als µC verwende ich 
jetzt den Atmega 328P, da das Programm mittlerweile 17KB groß geworden 
ist. Dafür läßt es sich jetzt standalone über Taster bedienen und die 
Anzeige erfolgt über ein 4x20 Zeichen LCD.

Autor: wborck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bist Du mit Deinem Projekt weiter gekommen?!

Grüße,
wborck

Autor: Thilo M. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jörg (Cusoe),

muss aus aktuellem Anlass den Thread aufwärmen. ;-)
Ich habe mir eine Photovoltaikgespeiste Notstromversogung gebaut, die 
Photovoltaik wird nachführbar.

Dafür habe ich deine Berechnung hinzugezogen, läuft prima, Lob dafür!

Ich habe den Code mit einer DCF77-Empfangsroutine und RTC (eigene 
Kreation, sehr zuverlässig) erweitert, LCD-Ausgabe (HD44780, hier aus 
dem Forum) 2x16 Zeichen und Zeitzonen- sowie Sommerzeiteinstellung ist 
auch drin. Prozessor musste ein ATmega32 (oder 644) werden, da sonst der 
Speicher nicht mehr reicht.

Eigentlich fehlt nur noch die Ansteuerung und Messung der Mechanik. 
Sobald die feststeht, werde ich mich wieder melden.
Evtl. hilft meine Erweiterung dem Einen oder Anderen ja weiter.

Gruß Thilo

P.S.: die DCF-Aktivantenne ist die von Conrad, falls es die noch gibt, 
der low-aktive Ausgang wurde benutzt.

Autor: Thilo M. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
OK, hier nochmal eie überarbeitete Version.
UART Zeiteinstellung ist vereinfacht (RX per Interrupt), PWM für 
Sanftanlauf der Motoren implementiert. Die Motorsteuerung ist für die 
Ansteuerung nacheinander (erst X, dann Y-Richtung) geplant. Die Messung 
der Stellung habe ich mit Winkelsensoren von Conrad, Nr.182865, 
realisiert. Die Messung wird gemittelt (100 Messwerte) und anschließend 
noch per SW gedämpft, um "hibbeliges" Regeln zu vermeiden.

Die direkte Ansteuerung der Motoren ist für jeden individuell, darum 
habe ich sie hier weggelassen.

Evtl. hilft's ja jemand weiter. ;-)

Autor: Horst Hahn (horha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mal eine prinzipielle Frage.
Wozu diese Genauigkeit mit der Sonnenposition von 0.01 Grad -> 
http://de.wikipedia.org/wiki/Sonnenstand, die so enorm viel Aufwand bei 
der Berechnung hat, dass dies mehrere Kilobyte nur für die 
transzendenten Funktionen in Anspruch nimmt.
Wenn der Winkel zwischen Sonne und Normalenvektor der sonnenbeschienene 
Fläche kleiner als arccos(0.99) = 8,1096... Grad == 32 min 26 sek ist, 
dann ist die bestrahlte Fläche eben 0.99 statt 1 also 1% kleiner.Wäre es 
nicht erheblich einfacher eine Tageskurve Höhenwinkel = f( Uhrzeit, 
aktueller Breitengrad) vom 21.März zu nehmen, die +-tagesaktuelle 
Deklination auf den Höhenwinkel aufzuaddieren ( Sinuskurve ) und die 
Zeitverschiebung des Zenitdurchganges der Sonne/Analemmnas in der 
Uhrzeit http://www.analemma.com/Pages/framesPage.html zu 
berücksichtigen.
Das sind 3 kleine Tabellen.
Wie klein kann man sich ja ausrechnen, wenn man alle 15 min == 4 Grad => 
cos(4) = 0.997 die Lage nachregelt.
Das sind 96 Einträge für einen Tag, ohne Interpolation.
Mit linearer Interpolation noch weniger.
Die Höhenwinkelverschiebung und Azimutverschiebung braucht man höchstens 
nur einmal täglich berechnen,da tut sich nicht viel.
Dies sieht man anhand der Daten dieser Tabellen Spalte T und V:
http://www.srrb.noaa.gov/highlights/sunrise/calcdetails.html

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Horst Hahn schrieb:
> Wozu diese Genauigkeit mit der Sonnenposition von 0.01 Grad ->
> http://de.wikipedia.org/wiki/Sonnenstand, die so enorm viel Aufwand bei
> der Berechnung hat, dass dies mehrere Kilobyte nur für die
> transzendenten Funktionen in Anspruch nimmt.

Du hast natürlich Recht, die Genauigkeit ist viel zu groß.
Es ist mir aber, ehrlich gesagt, egal wieviel kB die Berechnung in 
Anspruch nimmt, solange genügend Platz zur Verfügung steht. ;-)
Mein Ziel war, schnell zum Ziel zu gelangen, darum habe ich diese 
Berechnungen aufgegriffen. Die Anzahl Pins hätten beim mega8 für meine 
Anwendung sowieso nicht ausgereicht und der Preisunterschied ist 
minimal.
Ich führe auch nur alle 2..3° nach, anders ist es regeltechnisch 
ziemlich aufwändig und stromfressend, außerdem ist beim Ertrag kaum ein 
Unterschied festzustellen.

Du kannst ja mal ein Speicherplatzoptimiertes Beispiel 'reinstellen, 
würde mich auch interessieren. ;-)

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat sich in diesem Zusammenhang schon mal Jemand mit der Verwendbarkeit 
von Digital gesteuerten Satellitenschüssel-Motoren beschäftigt?
Ein Kumpel hat mir so ein "defektes" Ding mal mitgebracht, hat es 
indessen wieder mitgenommen, da das Teil nur über einen Endschalter 
gelaufen war..

Das was da an Mechanik drin war, sah recht stabil aus, Drehgeber war 
auch drin. Mit 2 solchen Motoren sollte man eigentlich Elevation und 
Azimut von PV auch einstellen können. Gesteuert werden die über DISEQ, 
Stromversorgung über das SAT Kabel. Ich habe nur nichts Detailliertes 
über das Steuerprotokoll finden können..

Gruß,

Holm

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Informant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solche SAT Stellmotoren kosten bei €bay etwa 50 €, sind m.E. aber nur 
einachsig.

Es gibt noch andere Threads hier im Forum, vielleicht kann man sie in 
diesem Artikel sammeln, der auf dem in diesem Thread vorgestellten Code 
basiert:

http://www.mikrocontroller.net/articles/Sonnenfolg...

Autor: Informant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verzeihung, das geht ja auch automatisch:  Sonnenfolger/Heliostat

Autor: Informant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Unterstrichen um den Schrägstrich? : Sonnenfolger_/_Heliostat

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wärme das Thema nochmal auf. ;-)

@ Jörg B.:
Nach längerem Betrieb habe ich festgestellt, dass die Berechnung der 
Elevation im negativen Bereich seltsame Sprünge vollzieht.

So ab -4° geht es los.

Evtl. ein kleiner Bug in der Berechnung?

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thilo M. schrieb:
> So ab -4° geht es los.
>
> Evtl. ein kleiner Bug in der Berechnung?

Dann nenn doch mal die Parameter (Datum, Zeit, Standort), bei denen du 
den Werten nicht traust. Dann kann man sich das mal im Debugger ansehen 
und nachrechnen.

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hier die Koordinaten:
float laenge = 8.58886, breite = 49.9409;
Zeit war der 24.03.2013, Abends eben, Elevation <0. :-)

Ich habe das Ganze per RS232 im Terminalprogramm verfolgt.
Da sieht man die Sprünge deutlich, so ab -11° hört das Ganze wieder auf 
und die Werte bleiben stabil.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.