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
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
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!
@ Albert Doe Welche Einstellungen hast du im makefile vorgenommen, die Grösse ist ja deutlich geringer?
Hallo, bist Du mit dem Programm weitergekommen, gibt es mittlerweile einen aktuelleren Stand? MfG, wborck
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
Nein hab leider noch nicht daran weiter arbeiten können, bin erst mal mit einem Platinen-Layout beschäftigt.
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
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
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
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.
Hallo, bist Du mit Deinem Projekt weiter gekommen?! Grüße, wborck
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.
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. ;-)
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
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. ;-)
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
Hat gerade 30 Sekunden gedauert, das zu finden: http://diseqc.org.ua/projects/hard/diseqc/diseqc31.pdf http://diseqc.org.ua/projects/hard/diseqc/7.pdf
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/Sonnenfolger_/_Heliostat
Verzeihung, das geht ja auch automatisch: Sonnenfolger/Heliostat
Mit Unterstrichen um den Schrägstrich? : Sonnenfolger_/_Heliostat
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?
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.