Hallo,
ich habe zwar ein Anschlussbild gefunden:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235070596
Allerdings was muss da zw pin1 und pin2?
Hallo,
ich habe zwar ein Anschlussbild gefunden:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235070596
Allerdings was muss da zw pin1 und pin2?
Steht doch da: Das ist ein Uhrenquarz mit bestimmter Frequenz (32,768 kHz).
Steht doch im Text: ein Quartz mit 32768kHz.
Edit: zu langsam :-?
lasst mich raten... es geht nicht ohne...
Auch ein ds1307 muss sich nach einem Takt richten.
Nur zur Information: ich habe mich nämlich auch gerade mit der Tausenderpotenz vertan. Im Amerikanischen setzt man kein Komma, sondern einen Punkt. Verwechselt man schnell mit 'nem Tausenderpunkt und liegt somit schnell mal um Größenordnungen daneben...
Der Hintergrund dieser scheinbar krummen Frequenz ist folgender: Ich muss diese Frequenz nur 15mal durch zwei teilen, um einen ziemlich exakten Sekundentakt herauszubekommen. 15 Flip-Flops hintereinander und du hast 'nen genauen Sekundenzähler.
lasst mich raten... es geht nicht ohne...
Zumindest nicht für eine sinnvolle Anwendung...
Hi,
hier mal ein Schaltbild mit dem DS1307 an meinem Arduino.
Vorsicht bei der Quarzwahl. Es es muss ein Quarz mit 12,5 pF sein, andernfalls geht die Uhr deutlich falsch.
Gruß
Sebastian
Die 32.678 Quarze gibt es mit der Kapazität 12,5 und 6 pF.
ein 12,5 müßte der Richtige sein ansonsten geht die Uhr falsch (ca 20 Sekunden am Tag zu schnell)
Grüße Uwe
Kann mir jemad sagen, warum das Beispiel nicht läuft:
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by mattt on the Arduino forum and modified by D. Sjunnesson
void setup()
{
Serial.begin(9600);
RTC.stop();
RTC.set(DS1307_SEC,1); //set the seconds
RTC.set(DS1307_MIN,23); //set the minutes
RTC.set(DS1307_HR,12); //set the hours
RTC.set(DS1307_DOW,4); //set the day of the week
RTC.set(DS1307_DATE,5); //set the date
RTC.set(DS1307_MTH,3); //set the month
RTC.set(DS1307_YR,9); //set the year
RTC.start();
}
void loop()
{
Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
Serial.print(":");
Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
Serial.print(":");
Serial.print(RTC.get(DS1307_SEC,false));//read seconds
Serial.print(" "); // some space for a more happy life
Serial.print(RTC.get(DS1307_DATE,false));//read date
Serial.print("/");
Serial.print(RTC.get(DS1307_MTH,false));//read month
Serial.print("/");
Serial.print(RTC.get(DS1307_YR,false)); //read year
Serial.println();
delay(1000);
}
Als Zeit kommt immer 0:0:0 0/0/2000
ich verwende folgende Library mit Erfolg: http://www.seeedstudio.com/depot/images/product/DS1307.rar
Hi,
ich habe es nach
gemacht und es rannte.
Hi,
Hast Du schon überprüft wie genau die RTC geht? Ich habe ca. 2Sec pro Tag. Viel genauer ist wohl auch nicht möglich. Aber wie könnte eine "Trimmung" oder korrektur aussehen?
Gruß
Sebatsian
Hi Sebastian,
habe ich nicht geprüft. Kann gut sein, dass die Zeit abweicht. Ich konnte sie aber nicht mal korrekt stellen, da ich das beim ersten Kompilieren gemacht habe und seit dem ist Datum und Uhrzeit im DS. Das Setzen beim Kompilieren ist grundsätzlich nicht sekundengenau, weil man ja nie weiß wann der Code im Atmega ist und die Zeit im DS setzt... Im mir aber auch nicht so wichtig. Wenn ich's genau möchte würde ich ein DCF77 Modul zur Zeitsetzung nehmen....
Aber wie könnte eine "Trimmung" oder korrektur aussehen?
Ein paar Ideen für die Abfrage der genauen Uhrzeit:
-Webservice im Internet via Ethernet abfragen
-Abfrage NTP-Server via Ethernet
-täglicher Update via serieller Schnittstelle (Aktuelle Uhrzeit liefert PC)
-DCF77-Quelle abfragen
-Uhrzeit via GPS-Modul ermitteln
Das(2sec/Tag) sind immerhin 12Minuten pro Jahr
Gruß
Sebastian
Wenn man mit einer Abweichung von 2 Sek. pro Tag nicht leben kann, muss das eine ganz wichtige Anwendung sein.
Bei diesen Anforderungen an die Genauigkeit der Zeit muss auch mit einem entsprechenden Aufwand für den Zeitabgleich gerechnet werden.
weitere Lösungen:
-Serieller Abgleich via RF-Funkverbindung
-Abgleich via Infrarot-Verbindung
Wo ist denn diese Uhrenanwendung im Einsatz, wenn meine genannten Möglichkeiten aus vielen Gründen nicht möglich sind:
-zu teuer
-nicht möglich infolge autarker Anwendung (was auch immer das heisst)
-kein Empfang
Scheinbar ist die DCF77-Lösung der einzige Ansatz, welcher halbwegs gehen könnte. Die Antenne kann mach auch ausserhalb montieren und das Signal mittels Kabel oder kabelloser Übertragung weitersenden.
Auch Radiosender mit RDS (hoffe ich hab mich nicht mit den Buchstabene verfehlt) und entsprechenden Empfänger gibt ein genaues Zeitsignal.
Andere genaue Zeitquelle ist ein GPS Empfänger, nur leider funktioniert der in Gebäuden nicht.
ZeitServer im Internet (weiß nich ob das Protokoll aufwändig ist und ob es auf Ardino schon implementiert ist).
Grüße Uwe
Nein, es ist nichts sehr wichtiges. Aber es geht um das Prinzip Sie Anwendung soll einfach ohne Wartung drei Jahre durch laufen & möglichst genaue Zeitangaben liefern.
Wie wird es denn eigentlich bei Uhren gemacht? Die bekommen den Takt ja auch von einem (ungenauen) Quarz?
Miss doch einfach die typische Tagesabweichung (ggf. die Wochenabweichung und teile durch 7) und setze pünktlich um Mitternacht die Uhr 2 Sekunden vor oder zurück, wie du es brauchst.
Alternativ mittags eine Sekunde vor/zurück und mitternachts eine Sekunde vor/zurück.
Das war halt auch meine Idee. Einmal die Woche x Sekunden korrigieren.