Hallo! Ich möchte die Uhrzeit am PC auslesen und mit einem Mikrocontroller auswerten um bestimmte Dinge zu steuern. Hat jemand eine Idee, wie man die Uhrzeit auslesen kann? Danke!
H. G. schrieb: > Hat jemand eine Idee, wie man die Uhrzeit auslesen kann? Peter II schrieb: > echo %time% > COM1 Die Frage war wie man sie von aussen auslesen kann. Nicht wie man sie vom PC aus ausgeben kann... Allerdings ist das doch sowieso Unsinn, denn leichter lässt man eine Uhr auf dem uC laufen. Eine Schaltuhr funktioniert ja auch ganz ohne irgendeine Zeit irgendwo auszulesen? Oder habe ich das spezielle Problem nicht erkannt?
Da ich kein DCF77 Signal empfangen kann, bräuchte ich eine möglichst genaue Uhrzeit. D.h: +- 1Min. pro Jahr. Da dachte ich, ich nutze die PC-Zeit und frage die irgendwie mit einem UC ab? Nur weis ich nicht, wie das geht.
H. G. schrieb: > Nur weis ich nicht, wie das geht. steht doch schon da, lass den PC einfach die Urzeit über die Serielle schnittstelle senden (script steht schon oben) dann kannst du sie am µC einlesen. Oder gleich ein RTC Modul verwenden, diese genauigkeit sollte sie doch schaffen.
> steht doch schon da, lass den PC einfach die Urzeit über die Serielle > schnittstelle senden (script steht schon oben) dann kannst du sie am µC > einlesen. OK! Das sollte funktionieren. Wie sieht dann das Protokoll aus, welches ich über die serielle erhalte?
H. G. schrieb: > Da dachte ich, ich nutze die PC-Zeit und frage die irgendwie mit einem > UC ab? Du kannst sie nicht einfach so von aussen abfragen. Wie immer gilt: Im PC muss ein Programm (Service) laufen, welches darauf wartet, dass von aussen wer eine Anfrage stellt und dann Auskunft über das Gewünschte gibt (nachdem das Programm möglicherweise geprüft hat, ob der Fragesteller überhaupt berechtigt ist, eine Antwort zu bekommen)
H. G. schrieb: >> steht doch schon da, lass den PC einfach die Urzeit über die Serielle >> schnittstelle senden (script steht schon oben) dann kannst du sie am µC >> einlesen. > > OK! Das sollte funktionieren. > Wie sieht dann das Protokoll aus, welches ich über die serielle erhalte? Das legst DU fest. Die Serielle ist nur der Übertragungskanal, wie ein Telefon. In welcher Form dann die Zeitauskunft die Zeit übermittelt, legst du fest, weil du die Zeitauskunft programmieren musst, die die Auskunft liefert.
Wenn mein PC-Programm z.B. 1xpro Min.
> echo %time% > COM1
durchführt, dann erhalte ich doch ein Signal mit der Information der
Zeit.
Und dieses Protokoll müsste ich doch kennen, damit ich damit was
anfangen kann.
Oder bin ich da jetzt auf dem Holzweg?
H. G. schrieb: > D.h: +- 1Min. pro Jahr. > Da dachte ich, ich nutze die PC-Zeit So eine PC-Uhr ist aber nicht ausreichend genau, wenn sie nicht ab&an z.B. übers Internet synchronisiert wird. Zur Betrachtung der nötigen Genauigkeit: +-1 min/Jahr sind +-1min/525600min, und das mithin +-2ppm. Das muß schon ein recht stabiler Quarz sein... :-o
H. G. schrieb: > Wenn mein PC-Programm z.B. 1xpro Min. > >> echo %time% > COM1 > > durchführt, dann erhalte ich doch ein Signal mit der Information der > Zeit. > Und dieses Protokoll müsste ich doch kennen, damit ich damit was > anfangen kann. Wenn du das so machen willst, ist das ok. Lass dir die Ausgabe halt nicht auf die Serielle umleiten, sondern direkt ausgeben, dann weißt du, wie das daherkommt. echo %time% Und wie willst du das jetzt alle 1 Minute laufen lassen?
1 | Microsoft Windows [Version 6.0.6002] |
2 | Copyright (c) 2006 Microsoft Corporation. All rights reserved. |
3 | |
4 | C:\Users\kbuchegg>echo %time% |
5 | 12:32:16.91 |
6 | |
7 | C:\Users\kbuchegg>echo %time% |
8 | 12:32:18.04 |
9 | |
10 | C:\Users\kbuchegg>echo %time% |
11 | 12:32:19.85 |
12 | |
13 | C:\Users\kbuchegg> |
Internetanschluss ist vorhanden. Die Zeit übers Internet zu synchronisieren wäre also kein Problem.
> Und wie willst du das jetzt alle 1 Minute laufen lassen?
Ich dachte mir, ich schreibe ein kleines C#-Programm, welches einmal
gestartet wird, im Hintergrund läuft und 1x pro Min. die Zeit an die
serielle sendet.
Langer Rede kurzer Sinn. So wie es aussieht, bist du mit einer fertigen RTC besser bedient. Die kostet einen Pappenstiel, du stellst sie einmal ein und dann läuft sie von alleine.
:
Wiederhergestellt durch User
H. G. schrieb: >> Und wie willst du das jetzt alle 1 Minute laufen lassen? > > Ich dachte mir, ich schreibe ein kleines C#-Programm, welches einmal > gestartet wird, im Hintergrund läuft und 1x pro Min. die Zeit an die > serielle sendet. Also sind wir wieder dort, dass DU das Datenformat festlegst, mit dem dein C# Programm die aktuelle Uhrzeit auf der Seriellen ausgibt.
Mit welcher Abweichung pro Jahr kann ich bei einer RTC rechnen?
RTC http://en.wikipedia.org/wiki/Real-time_clock Beispiel: RTC (DS1337) Beitrag "RTC: Uhrzzeit einstellen"
H. G. schrieb: > Mit welcher Abweichung pro Jahr kann ich bei einer RTC rechnen? Genau die gleiche, die auch dein PC hat, wenn du ihn nicht regelmässig per Zeitserver synchronisieren lässt. Da ist ja schliesslich auch nichts anderes als eine RTC drinnen.
Was spricht dagegen, ein Datenblatt anzuschauen ? Schlussendlich kommt's auf den Quarz an. Ein billigst Uhrenquarz mit 32768Hz fuer 16cts an einem RTC bringt vielleicht 10ppm. Wenn man's besser haben will, und ein paar Euro hinlegt kommt man vielleicht auf 1ppm. Dann sollte man langsam die Umwelteinfluesse einberechnen. Was ist der Temperaturgang der Schaltung ? 0.1ppm ist noch zahlbar. Ist die erforderte Genauigkeit ein ueblicher akademischer Furz ohne genauen Grund ?
> Ist die erforderte Genauigkeit ein ueblicher akademischer Furz ohne > genauen Grund ? Es geht um eine Lichtsteuerung, wo die Uhrzeit eine Steueraufgabe übernimmt, die über Jahre recht genau sein soll. D.h, das Licht sollte sich auch nach 5 Jahren um z.B. 23:00 ausschalten und nicht um 22:45 oder 23:15. DCF77 kommt nicht in Frage, da kein Empfang. PC und Internet ist vorhanden, daher die Idee mit der PC-Uhr.
> PC und Internet ist vorhanden, daher die Idee mit der PC-Uhr.
Und der PC läuft auch über Jahre hinweg durch? Wäre es dann nicht
einfacher die Steuerung des Lichtes und die Schaltzeiten direkt vom PC
aus zu machen und am Mikrocontroller nur Befehle wie "Licht ein" "Licht
aus" zu Empfangen?
Ansonsten würde ich eine RTC verwenden und täglich die Zeit anpassen.
Glaube kaum das du innerhalb eines Tages so große Abweichungen bekommst
das du es merkst. Damit umgehst du auch Probleme wenn mal kurzfristig
die Internetverbindung ausfällt oder der PC anderwertig Probleme macht.
Martin
Das DIng läuft fünf jahre unbemannt, ohne Kontroller durch Dich? Sowas glaub ich niemandem. Nimm einfach eine Zeitschaltuhr aus dem Baumarkt, schau ab und an nach, ob die Uhrzeit noch stimmt. Und gut.
Nimm halt den DS32kHz ... "Key Features Accurate to ±4 Minutes/Year (-40°C to +85°C) Accurate to ±1 Minute/Year (0°C to +40°C)"
Oder gleich eine RTC die einen integrierten Quarz hat. So etwas wie die DS3234. Die Genauigkeit ist so gut wie die vom DS32kHz.
> Nimm einfach eine Zeitschaltuhr aus dem Baumarkt, schau ab und an nach, > ob die Uhrzeit noch stimmt. Und gut. ACK, Wiki meint dazu: Die Netzfrequenz im europäischen Verbundnetz eignet sich wegen der geringen Abweichungen von der Nennfrequenz als Zeitgeber für Uhren. Trotz der geringen Abweichungen können sich dabei Fehler von einigen Sekunden pro Tag ergeben. Um den Zeitfehler gering zu halten wird die Netzzeitabweichung als Differenz zwischen Koordinierter Weltzeit und der auf Basis der Netzfrequenz ermittelten Zeit zentral[4] erfasst und korrigiert. Überschreitet die Netzzeitabweichung +/-20 Sekunden, dann wird die Nennfrequenz für die Frequenzregler bei vorauseilender Netzzeit um 10 mHz auf 49,990 Hz reduziert, bei nacheilender Netzzeit um 10 mHz auf 50,010 Hz erhöht[5]. Dadurch passt sich die Netzzeit langsam wieder an die Koordinierte Weltzeit an. Die Netzzeit stellt damit eine langfristig sehr genaue Zeitbasis mit kurzfristigen Schwankungen im Sekundenbereich dar.
jetzt muss er nur noch dafür sorgen das 15Jahre lang der Strom vorhanden ist.
Ich koennt sonst noch ein GPS an der seriellen Schnittstelle anbieten. Dieses Modul muesst man alle paar Monate mal einschalten und darauf synchronisieren.
Muss es denn unbedingt ein (Windows?-)PC sein, der da läuft, der frisst ja auch einiges an Strom über die Jahre? Da wäre evtl. das Bifferboard, Beagleboard, gnublin, etc etc interessant, die brauchen sehr wenig Strom und laufen mit Linux.
Die PCs sind sowiso vor Ort und laufen rund um die Uhr. Aber ich werde eine RTC (TPS65950) verwenden und die compensation versuchen (swca024) die texas instruments vorschlägt.
H. G. schrieb: > Es geht um eine Lichtsteuerung, wo die Uhrzeit eine Steueraufgabe > übernimmt, die über Jahre recht genau sein soll. > D.h, das Licht sollte sich auch nach 5 Jahren um z.B. 23:00 ausschalten > und nicht um 22:45 oder 23:15. Musst du auch auf Sommer-/Winterzeit achten? Oder ist das egal. Zur Frage mit dem Protokoll: du bekommst die Daten einfach als ASCII-Werte über die serielle Schnittstelle. Im Mikrocontroller müsstest du das einfach in eine Uhrzeit konvertieren. Da steckt kein komplexes Protokoll dahinter.
H. G. schrieb: > Die PCs sind sowiso vor Ort und laufen rund um die Uhr. Wobei sich dann natürlich die Frage erhebt: Wozu brauchst du dann überhaupt noch einen µC?
H. G. schrieb: > Aber ich werde eine RTC (TPS65950) verwenden und die compensation > versuchen (swca024) die texas instruments vorschlägt. Ja nee, is klar :-) TPS65950: Integrated Power Management IC with 3 DC/DC's, 11 LDO's, Audio Codec, USB HS Transceiver
H. G. schrieb: >> Ist die erforderte Genauigkeit ein ueblicher akademischer Furz ohne >> genauen Grund ? > > Es geht um eine Lichtsteuerung, wo die Uhrzeit eine Steueraufgabe > übernimmt, die über Jahre recht genau sein soll. > D.h, das Licht sollte sich auch nach 5 Jahren um z.B. 23:00 ausschalten > und nicht um 22:45 oder 23:15. > > DCF77 kommt nicht in Frage, da kein Empfang. > PC und Internet ist vorhanden, daher die Idee mit der PC-Uhr. Warum kommt DCF nicht in Frage? Ich denke dabei nicht an eine Bastellösung mit einem Wurst Empfangsmodul sondern an eine vernünftige Lösung. DCF funktioniert übrigens auch im Keller!
Ich würde hier evtl. trotzdem eine DCF Variante anstreben. Wenn der Empfang schlecht ist, könnte man doch ein DCF Modul mit Auswertung und seriellen Sender irgendwo weiter weg positionieren. Sonst das Pollin Net AVR ans LAN hängen, mit NTP syncen und ggf. noch übers Netz steuern, Schaltuhrfunktion sollte noch nebenbei laufen.
Ethersex passt zum Pollin net-io und kann sowohl NTP als auch DCF77, was willst Du mehr? http://old.ethersex.de/index.php/Am_Puls_der_Zeit
wer_hat_an_der_uhr_gedreht schrieb: > Die Netzfrequenz im europäischen Verbundnetz eignet sich wegen der > geringen Abweichungen von der Nennfrequenz als Zeitgeber für Uhren. Und zwar besser als jede Quarzgetriggerte RTC. H. G. schrieb: > Die PCs sind sowiso vor Ort und laufen rund um die Uhr. Auch bei einem Systemfehler, wenn das System neu gestartet werden muss? Wo läuft die Uhr überhaupt? In einem 20 Meter tiefen Stahlbetonbunker?
Mathias schrieb: > Wo läuft die Uhr überhaupt? In einem 20 Meter tiefen Stahlbetonbunker? Im PC, direkt am Netzteil. > Die PCs sind sowiso vor Ort und laufen rund um die Uhr. Da mecker noch jemand über Energieverschwendung und Atomkraft...
DS3232 ? zusätzlich ne Software auf PC die per Windowas Timer immer mal die Frage herausschickt "Willst du Uhrzeit ?" Wenn uC dann "ja" sagt kann die Systime geschickt werden. k.
Trotzdem, wenn der (oder die) PC sowieso laeuft, dann kann der das bisschen Licht auch noch steuern. citb
Wenn der uC sonst nichts zu tun hat, Uhrenquarz als Taktquelle und eine Batterie. Mit dem PC die Zeit sync.
In meinen Augen sehe ich ganz klar ein DS1307 mit Batterie oder Goldcap Puffer, gegen die allfälligen Stromausfälle und der PC sendet 1x am Tag dem µC die aktuelle Uhrzeit, welche er selbst zu dem Zeitpunkt gerade aus dem NTP gezogen hat. Sollte der PC schon keine gescheiten Daten vom NTP bekommen, ist das wohl auch nicht tragisch, da der RTC auch über Tage/Wochen nur geringe abweichungen erzeugt. MFG Stephan
Wenn es eine gelegentliche Synchronisierung gibt, braucht man keinen zusätzlichen RTC-IC. Das kann der µC und ein Uhrenquarz auch so.
bingo schrieb: > Wenn es eine gelegentliche Synchronisierung gibt, braucht man keinen > zusätzlichen RTC-IC. Das kann der µC und ein Uhrenquarz auch so. Ja schon. Aber kann auch ein µC die Gangreserve über Tage sicherstellen, wenn mal der Strom weg sein sollte, ohne das der dann die neue aktuelle Zeit bekommen muss. Ein RTC hat dafür ja eben die Backup Batterie. Ein µC macht in der Regel ja auch anderes als nur die Zeit verwalten. Bräuchte dann ja unter umständen auch eine Lösung, das die externe Hardware weg geschalten wird, um den Stromverbrauch zu minimieren, das der akkupuffer die Zeit des Stromausfall wieder puffern kann. Ich sehe da einen RTC als die einfachere Lösung.
Wenn der Strom vom Computer weg ist, dann braucht er auch wohl keine Beleuchtung schalten ...
Hallo, bei seinen Anforderungen hat er doch längst alles mit Notstromversorgungen abgesichert - wie sollen denn sonst PCs 5 Jahre lang wartungsfrei und unbedient laufen? Natürlich liefert Microsoft brav während der ganzen Jahre die nötigen Updates, die auch niemals zu Rückfragen oder anderen Problemen führen... Gruss Reinhard
so ein Marsrover muss all das können! .. es ist also nicht abwegig. k.
Der hat aber keinen PC mit Windows dabei. Dafür wollen die nämlich nicht die wertvolle Nuklearbatterie-Energie verheizen...
Hi, es wurde üebrhaupt nicht auf den Vorschlag der Netzzeit eingegangen. RTC musst auch erstmal besorgen, dann vielleicht eine Platine machen wegen des Gehäuses, Ansteuerung etc... DCF muss für guten Empfang gesorgt werden... PC Zeit, muss vom PC zum uc, PC muss immer laufen über Jahre...etc. Einfach die 50Hz Netzfrequenz zählen, Uhr programmieren, ist eine gute Lösung und vor allem günstig und für diesen Fall die einfachste. Sie benötigt ein Minimum an Programmieraufwand und Hardwarekosten. Sie ist sehr stromsparend. Naja, muss ja jeder selber wissen. T.S:
Was für ein Licht soll das überhaupt sein, das um 23:01 Uhr nicht mehr leuchten darf? Weihnachtsbaum im Vorgarten oder was? Leute Leute... ihr habt Probleme!
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.