Rheinturm Uhr Startzeit Problem

OP (Firma: Komatsu Germany GmbH) #6307042
Lesenswert?

Hallo liebe Community,

ich arbeite aktuell an einem Fernsehturm Projekt in unserer Firma.
Der Fernsehturm soll die aktuelle Uhrzeit mit den LEDs anzeigen.
Dies funktioniert auch soweit ohne Probleme.

Das Problem ist jetzt aber nur, wir nutzen aktuell noch keinen Funkchip 
im Fernsehturm, bedeutet also man muss die Uhrzeit selber vorher richtig 
einstellen.

Aktuell müsste man den Turm um genau 23:59 einschalten, damit er die 
richtige Uhrzeit ausgibt.

Könnte mir vielleicht jemand aus dem folgenden Quelltext sagen, was ich 
genau verändern muss um dies z.B. um 12 Uhr Mittags passieren zu lassen, 
oder wie ich selber genau die Uhrzeit bestimmen kann?

#define A0 14 //ANALOG 0
#define A1 15
#define A2 16
#define INTERVAL 1000

//PINS SEKUNDEN MINUTEN STUNDEN
byte oneSecond[] = {0,1,2,3,4,5,6,7,8}; //No Serial on 0/1
byte tenSecond[] = {9,10,11,12,13};     //
byte theSwitch[] = {14,15,16};          //SEKUNDE MINUTE STUNDE
int s10=0,s1=0; //ONESECOND TENSECOND BAND
int m10=5,m1=9; // Start mit 23:59:00 Uhr
int h10=2,h1=3;

unsigned long t,t0; //TIMEINIT

void INTITIME(void){t0=millis();}
unsigned long TIMEREAD(void){return millis()-t0;}

void setup()
{int i;
for(i=0; i<sizeof(oneSecond);i++)pinMode(oneSecond[i],OUTPUT);  for(i=0; 
i<sizeof(tenSecond);i++)pinMode(tenSecond[i],OUTPUT);  for(i=0; 
i<sizeof(theSwitch);i++)pinMode(theSwitch[i],OUTPUT);  digitalWrite(A0, 
HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH); }

void loop()
{int i;
t=TIMEREAD();
do 
{for(i=0;i<sizeof(oneSecond);i++)digitalWrite(oneSecond[i],s1<=i?LOW:HIG 
H);   //EINERBAND SEKUNDEN 
for(i=0;i<sizeof(tenSecond);i++)digitalWrite(tenSecond[i],s10<=i?LOW:HIG 
H);  //ZEHNERBAND SEKUNDEN
digitalWrite(A0, LOW);//Masse an Sekunden
delay(1);             //SHOWTIME SEKUNDEN
digitalWrite(A0, HIGH); 
for(i=0;i<sizeof(oneSecond);i++)digitalWrite(oneSecond[i],m1<=i?LOW:HIGH 
);   //EINERBAND MINUTEN 
for(i=0;i<sizeof(tenSecond);i++)digitalWrite(tenSecond[i],m10<=i?LOW:HIG 
H);  //ZEHNERBAND MINUTEN
digitalWrite(A1, LOW);//Masse an MINUTEN
delay(1);             //SHOWTIME MINUTEN
digitalWrite(A1, HIGH); 
for(i=0;i<sizeof(oneSecond);i++)digitalWrite(oneSecond[i],h1<=i?LOW:HIGH 
);   //EINERBAND STUNDEN 
for(i=0;i<sizeof(tenSecond);i++)digitalWrite(tenSecond[i],h10<=i?LOW:HIG 
H);  //ZEHNERBAND STUNDEN
digitalWrite(A2, LOW);//Masse an STUNDEN
delay(1);             //SHOWTIME STUNDEN
digitalWrite(A2, HIGH);  }while(TIMEREAD()<(t+INTERVAL));
//---------------------------------
s1++;                   //s++;
if(s1>=10){s1=0;s10++;}
if(s10>=6){s10=0;m1++;} //m1++;
if(m1>=10){m1=0;m10++;}
if(m10>=6){m10=0;h1++;} //h1++;
if(h1>=10){h1=0;h10++;}
if(h10>=2 && h1>=4){h10=0;h1=0;} }
}

Vielen lieben dank, ich komme an dieser Stelle nämlich nicht weiter.

Mit freundlichen Grüßen

Sven Wesoly
Angehängte Dateien:
Gast #6307071
Lesenswert?

Sven W. schrieb:
> Aktuell müsste man den Turm um genau 23:59 einschalten, damit er die
> richtige Uhrzeit ausgibt.

Errinert mich an mein Uhr was ich vor dem Flashen im Source Code kurz 
nachziehen musste damit der RTC Baustein richtig bedatet wurde. Dann 
schnell kompilieren und flashen :)

Ist dein Uhr wirklich pünktlich? Kann es sein dass es über längere Zeit 
sich verdriftet? Es wird ja nicht durch Interrupt sondern durch Pollen 
getrieben. Daher beim update vergeht dT Zeit was nicht abgerechnet wird. 
Also sprich ide 1000 ms wartezeit wird ja 1000ms + dT.

Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen 
wird? Oder nur ein Bastelprojekt? Meiner Meinung nach fehlen da 
grundsätzliche Funktionen und die Technische Lösung ist auch nicht State 
of the Art.

- Displayantreiben würde ich ohne Delay machen. Lieber StateMachine 
nehmen.
- 1 Sekunde würde ich von einer Quarz (32kHz als Second Osci) ableiten 
und daraus einen Interrupt machen.
- Optional: Quarz abgleichen, damit der Frequenz wirklich stimmt.
- Paar Tasten spendieren für einstellen. Plus Funktionalität dazu.
- Reset oder POR Behandlung unbedingt machen damit keine falsche Uhrzeit 
angezeigt wird.
- Optional: RTC Baustein verbauen. Plus Funktionalität dazu.
- Optional: RTC Baustein Clock abgleichen.
- GPS oder DCF Empfänger optional um nicht immer korrigieren zu müssen
OP (Firma: Komatsu Germany GmbH) #6307385
Lesenswert?

HildeK schrieb:
> So schwer ist das doch nicht:
>
1
> int s10=0,s1=0; //ONESECOND TENSECOND BAND
2
> int m10=5,m1=9; // Start mit 23:59:00 Uhr
3
> int h10=2,h1=3;
4
>
> int h10=1, h1=2;
> int m10=0, m1=0;

Ok super dankeschön, war mir die ganze Zeit mit dem Zeitstellen nicht 
sicher, aber glaube so langsam das ich das jetzt auch verstanden habe.
OP (Firma: Komatsu Germany GmbH) #6307394
Lesenswert?

kyrk.5 schrieb:

> Ist dein Uhr wirklich pünktlich? Kann es sein dass es über längere Zeit
> sich verdriftet? Es wird ja nicht durch Interrupt sondern durch Pollen
> getrieben. Daher beim update vergeht dT Zeit was nicht abgerechnet wird.
> Also sprich ide 1000 ms wartezeit wird ja 1000ms + dT.
>
> Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen
> wird? Oder nur ein Bastelprojekt? Meiner Meinung nach fehlen da
> grundsätzliche Funktionen und die Technische Lösung ist auch nicht State
> of the Art.

Habe das bis jetzt noch nicht beobachtet, aber denkbar wäre es, das die 
Uhr auf dauer anfängt abzuweichen. Wir haben noch einen DCF Empfänger 
aber der ist noch nicht verbaut und ich wüsste ehrlich gesagt dann auch 
gar nicht wie ich den einzubinden habe ^^

Bis jetzt ist es erstmal nur ein Testprojekt, wenn bei dem Turm alles 
klappt, kann es sein das dieser dann später ausgestellt wird.
OP (Firma: Komatsu Germany GmbH) #6307397
Lesenswert?

RTC schrieb:
> kyrk.5 schrieb:
>> Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen
>> wird?
>
> Ich bin mir sicher es ist nur ein kleines Projekt. Die Uhr auf einem
> Fernsehturm läuft garantiert nicht auf einem Arduino und erst recht
> nicht ohne Zeitserver ;)

Ja genau ist erstmal ein kleines Projekt.

Meine Idee war auch schon, den Arduino plus RTC mit einem Funkchip zu 
bestücken, das der Fernsehturm sich dann über Funk Synchronisiert, nur 
dafür sind meine Programmierkenntnisse zu weit eingerostet, als das ich 
diesen so einfach einbinden könnte.
OP (Firma: Komatsu Germany GmbH) #6307398
Lesenswert?

kyrk.5 schrieb:

> - Reset oder POR Behandlung unbedingt machen damit keine falsche Uhrzeit
> angezeigt wird.
> - Optional: RTC Baustein verbauen. Plus Funktionalität dazu.
> - Optional: RTC Baustein Clock abgleichen.
> - GPS oder DCF Empfänger optional um nicht immer korrigieren zu müssen

Wie müsste ich denn da genau den RTC einbinden? Da der mit eingebaut 
wurde.

Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen 
einzubinden hätte.

Soweit möchte ich mich bis jetzt auch schon mal für die Antworten von 
euch allen bedanken :D
OP (Firma: Komatsu Germany GmbH) #6307812
Lesenswert?

So also, ich habe vorhin den RTC und den DCF Chip an den Arduino 
angeschlossen, in welcher Form müsste ich nun das Programm anpassen, 
damit diese beiden Bausteine richtig verwendet werden und das die Uhr 
sich dementsprechend richtig stellt?

Wer kann mir da weiterhelfen?
Gast #6307817
Lesenswert?

Sven W. schrieb:
> Wie müsste ich denn da genau den RTC einbinden? Da der mit eingebaut
> wurde.
Je nach dem, was der für Anschlüsse hat. Ein preiswertes Modul ist 
vielfach zu bekommen für wenige € mit dem DS3231. Das wird über einen 
I2C-Anschluss eingebunden und soll laut Spezifikation < 1min Ablage pro 
Jahr haben. Allerdings bleibt das Problem, dass du dessen Uhr stellen 
musst und es macht auch keine Sommer-/Winterzeitumstellung. Und das geht 
wiederum nur über Tasten oder einen Funkempfänger. Für die I2C-Anbindung 
gibt es im Netz Beispiele, z.B. von Peter Fleury.

> Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen
> einzubinden hätte.

Im Verhältnis zu deinem Ansatz und für deine 'eingerosteten 
Programmierkenntnisse' sind beide Varianten anspruchsvoll. Aber auch für 
DCF-Dekoder bzw. Uhren, die mit DCF laufen gibt es genügend SW-Lösungen 
auch hier im Forum. So hat z.B. Peter Dannegger hier 
Beitrag "DCF77 Uhr in C mit ATtiny26" eine Lösung in C 
veröffentlicht. Aber auch andere haben ihren Code zur Verfügung 
gestellt.
OP (Firma: Komatsu Germany GmbH) #6307821
Lesenswert?

HildeK schrieb:

> Je nach dem, was der für Anschlüsse hat. Ein preiswertes Modul ist
> vielfach zu bekommen für wenige € mit dem DS3231. Das wird über einen
> I2C-Anschluss eingebunden und soll laut Spezifikation < 1min Ablage pro
> Jahr haben. Allerdings bleibt das Problem, dass du dessen Uhr stellen
> musst und es macht auch keine Sommer-/Winterzeitumstellung. Und das geht
> wiederum nur über Tasten oder einen Funkempfänger. Für die I2C-Anbindung
> gibt es im Netz Beispiele, z.B. von Peter Fleury.
>
>> Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen
>> einzubinden hätte.
>
> Im Verhältnis zu deinem Ansatz und für deine 'eingerosteten
> Programmierkenntnisse' sind beide Varianten anspruchsvoll. Aber auch für
> DCF-Dekoder bzw. Uhren, die mit DCF laufen gibt es genügend SW-Lösungen
> auch hier im Forum. So hat z.B. Peter Dannegger hier
> Beitrag "DCF77 Uhr in C mit ATtiny26" eine Lösung in C
> veröffentlicht. Aber auch andere haben ihren Code zur Verfügung
> gestellt.

Dankeschön, genau der DS3231 ist verbaut. Dann suche ich mal noch etwas 
durchs Forum durch und gucke was ich da so finde. Werde dann auch mal 
gucken, das ich das Programm heute Mittag mal aufspiele um zu gucken wie 
es läuft.

Vielen dank für die schnelle Antwort. Echt cool das hier so eine aktive 
Community ist. :D
#6308098
Lesenswert?

HildeK schrieb:
> http://www.hjberndt.de/soft/rtc.html

"Das Programm entspricht den obigen Ausführungen und ist nicht 
platzoptimiert (Lesbarkeit)."

Der Kommentar ist lustig, unlesbarer geht nun wirklich nicht. Der Autor 
hat eine riesen Angst vor Leerzeichen und Zeilenvorschüben.
Er sollte dringend mal Quelltextbeispiele aus Programmierbüchern 
anschauen.

Anbei mal durch Astyle gejagt.
Angehängte Dateien:
Gast #6308106
Lesenswert?

"Aufgrund von Arduinos Strombegrenzung und der Zeitsteuerung wird auf 
Vorwiderstände verzichtet."

Ich wüsste gerne mal, in was für einem Traum der Autor von dieser 
Strombegrenzung gehört hat.

Um 23:59:59 (und andere Zeiten wo viele LED's leuchten) fließt da mit 
Sicherheit mehr Strom, als erlaubt.
#6308195
Lesenswert?

HildeK schrieb:
> Aber auch andere haben ihren Code zur Verfügung
> gestellt.
Beitrag "MSF60 Dekoder AVR Teil_2"
Hi,
also, zunächst denke ich, man braucht kein von Grund auf neues 
Uhrenprogramm, sondern man lässt eines der zahlreichen 
DCF77-Decoderprogramme auf "Quarz-Gangreserve" laufen und man nimmt 
statt der in den Programmen verwendeten Binär-zu-7-Segment-Tabellen oder
LCD-Subroutinen einfach eine Routine oder Tabelle, die die Einzellampen 
am Turm repräsentiert.
Ganz so einfach scheint es aber dann nicht zu sein, denn es sollen ja 
noch Trennleuchten eingefügt werden.
Am besten ist es, erst einmal eine Excel-Tabelle oder sowas zu machen, 
um zu gucken, was wann leuchten soll oder nicht.

ciao
gustav
Angehängte Dateien:
Gast #6308952
Lesenswert?

Sven W. schrieb:
> Ich werde es gleich mal aufspielen und testen, Dankeschön :D

Es wird sich exakt so verhalten wie dein oben angegebenes. peda hat es 
nur neu formatieren lassen, d.h. die Lesbarkeit für den Menschen 
wesentlich verbessert. Und es ist immer noch die Startzeit 23:59 drin ?.
#6309283
Lesenswert?

Sven W. schrieb:
> Müsste ich denn jetzt noch was an dem Programm noch anpassen oder kann
> ich es so direkt testen?

Hi,
Es ging nur darum, wie prinzipiell ein DCF77-Decoder aufgebaut sein kann 
und wie eine Uhr weiterzählt, auch ohne DCF77.
Übrigens: Copyright @Scott-Falk Huehn
https://s-huehn.de/elektronik/wohnuhr/wohnuhr.htm
Die Ausgaberoutinen müssten natürlich auf die Turmuhrlampenabfolge 
angepasst werden.

ciao
gustav
OP (Firma: Komatsu Germany GmbH) #6338876
Lesenswert?

Karl B. schrieb:
> Sven W. schrieb:
>> Müsste ich denn jetzt noch was an dem Programm noch anpassen oder kann
>> ich es so direkt testen?
>
> Hi,
> Es ging nur darum, wie prinzipiell ein DCF77-Decoder aufgebaut sein kann
> und wie eine Uhr weiterzählt, auch ohne DCF77.
> Übrigens: Copyright @Scott-Falk Huehn
> https://s-huehn.de/elektronik/wohnuhr/wohnuhr.htm
> Die Ausgaberoutinen müssten natürlich auf die Turmuhrlampenabfolge
> angepasst werden.
>
> ciao
> gustav

Ich versuch es jetzt mal anzupassen, war im Urlaub deswegen war ich 
nicht mehr aktiv in dem Beitrag.
OP (Firma: Komatsu Germany GmbH) #6338893
Lesenswert?

Karl B. schrieb:
> Hi,
> Es ging nur darum, wie prinzipiell ein DCF77-Decoder aufgebaut sein kann
> und wie eine Uhr weiterzählt, auch ohne DCF77.
> Übrigens: Copyright @Scott-Falk Huehn
> https://s-huehn.de/elektronik/wohnuhr/wohnuhr.htm
> Die Ausgaberoutinen müssten natürlich auf die Turmuhrlampenabfolge
> angepasst werden.
>
> ciao
> gustav

Also ich habe jetzt mal durch das Programm durch geguckt, aber das ist 
so komplex, das ich nicht mal weiß wo ich da die Anpassungen für die 
LEDs machen muss. Du kannst mir da nicht zufällig etwas unter die Arme 
greifen oder?

Also das etwas erklären oder dergleichen?

Liebe Grüße

Sven
Gast #6338999
Lesenswert?

Sven W. schrieb:
> Also ich habe jetzt mal durch das Programm durch geguckt, aber das ist
> so komplex, das ich nicht mal weiß wo ich da die Anpassungen für die
> LEDs machen muss. Du kannst mir da nicht zufällig etwas unter die Arme
> greifen oder?

Nachdem du im Eröffnungspost die beiden Werte für die 23:56 nicht in der 
vorhandenen SW gefunden hast, schließe ich daraus, dass du nicht 
programmieren kannst. Und dann werden ein paar Tipps zur Anpassung erst 
recht ein Problem für dich. Das beginnt schon mit der Anpassung, wenn 
die diversen Softwaren für verschiedene Prozessoren geschrieben wurden.
OP (Firma: Komatsu Germany GmbH) #6339068
Lesenswert?

HildeK schrieb:
> Nachdem du im Eröffnungspost die beiden Werte für die 23:56 nicht in der
> vorhandenen SW gefunden hast, schließe ich daraus, dass du nicht
> programmieren kannst. Und dann werden ein paar Tipps zur Anpassung erst
> recht ein Problem für dich. Das beginnt schon mit der Anpassung, wenn
> die diversen Softwaren für verschiedene Prozessoren geschrieben wurden.

Es ist einfach Ewigkeiten her, das ich in C Programmiert habe. Ich hab 
die Zeit und auch das Program, welches ich mit an den Post hier 
angehangen habe, verstanden.

Dauert alles nur etwas, da ich echt eingerostet in dem Thema bin.

Ich gucke jetzt noch mal was nach und dann melde ich mich dazu noch mal.
#6339070
Lesenswert?

Sven W. schrieb:
> Es ist einfach Ewigkeiten her, das ich in C Programmiert habe. Ich hab
> die Zeit und auch das Program, welches ich mit an den Post hier
> angehangen habe, verstanden.

Wo ist dann das Problem? Warum dann überhaupt dieser Thread? Du hast 
also alle Voraussetzungen um dein Problem zu lösen.

> Dauert alles nur etwas, da ich echt eingerostet in dem Thema bin.
Ist ja wohl Arbeitszeit, also sollte das kein Problem sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren