[BraLUG] Ich brauche einen guten Algorithmus

bergeruw at gmx.net bergeruw at gmx.net
Fr Feb 8 08:45:35 CET 2008


MoinMoin,

erstmal danke für die Ideenansätze, auf was ähnliches hatte ich schon mal
durchgespielt, bin aber auf keine Gleichverteilung der "Pausenschritte"
gekommen. Arnd sein Vorschlag sieht etwas anders aus und könnte
funktionieren, muß ich mal durchspielen...

Zu Reinhold Bemerkungen:

> A Zapletal wrote:
>> Wie sieht Deine Variante aus wenn die Gangabweichung zB mal 97ms oder
>> 101ms beträgt?
>
genau das ist der springende Punkt, die Gangabweichung ist dynamisch:

Zum einen gibt es einen systematischen Fehler, weil kein Uhrenquarz
verwendet wird (damit bekommt man schon mal "krumme Zahlen" beim Teilen
mit 2^x). Dies wäre noch eine konstante Abweichung, die man fest
implementieren bzw. schon mal in einem nichtflüchtigen Speicherbereich
ablegen könnte (was ich auch machen werde).

Aber: Jeder Quarz schwingt nicht genau mit der aufgedruckten Frequenz und
diese ist dann auch noch temperaturabhängig etc.. Im gewissen Rahmen
spielt auch die Auslastung des Mikrocontrollers eine Rolle, der nicht nur
die Zeit ermitteln soll, sondern "nebenbei" auch noch was anderes macht.
Und letztendlich soll die Zeitkorrektur nicht nur in meiner Hardware
funktionieren, sondern vielleicht auch allgemeingültig sein.

> Aber damit stellt sich auch die Frage, wie genau denn die Abweichung
> korrigiert werden soll bzw. für welchen Zeitraum denn die Daten des
> DCF Moduls ausfallen (wobei mir dieser Ausfall noch ein Rätsel ist,
> da das DCF Signal auf Langwelle übertragen wird und nur unter den
> widrigsten Umständen nicht zu empfangen ist).
>
och, da reicht schon Straßenbahn oder ein Auto mit defekter Lichtmaschine,
die/das an meinem Haus vorbei fährt, um den DCF77-Empfänger aus dem Tritt
kommen zu lassen (damit hast du im ungünstigsten Fall für 2min kein
Zeitnormal). Oder denke an Gebiete/Gebäude, in denen kein DCF77-Signal
(ohne Störungen) empfangbar ist. Da reichen schon ein paar gut platzierte
Stahlträger in den Wänden. (Natürlich kann man die Uhrzeit in meinem MC
auch via Netzwerkverbindung manuell einstellen, wenn kein DCF77-Signal da
ist...)

> Da diese Variable momentan nicht bekannt ist, muss ich Deinem Vorschlag,
> den Timeshift dynamisch zu berechnen, zustimmen, da damit die dichteste
> Korrelation zur wirklichen Sekunde zu erreichen sein wird.
>
jupp, das war auch der Hintergrund meiner Frage.


> Evt. sollte auch noch beachtet werden, wie gross denn die Differenz zur
> 'echten' Zeit wird, wenn das DCF Signal wieder vorhanden ist.
> @Uwe: Sind dort auch entsprechende maximale Toleranzen gefordert?
>
:-) sagen wir mal so, wenn man es rein theoretisch betrachtet, besteht
mein Anspruch so genau wie möglich zu sein. Es gibt derzeit keinen
konkreten Anwendungsfall, für den ich das Ding baue. Das ist einfach nur
ein Studienobjekt, um zu sehen, wie man soetwas macht...

Wie groß die Zeitdifferenz im obigen Beispiel ohne DCF77-Signal wird, ist
relativ einfach beantwortbar: 100ms pro Minute zu schnell -> nach 10min
geht die Uhr 1s vor -> in 12h sind es dann schon 72s usw...

Grüße Uwe




Mehr Informationen über die Mailingliste Bralug