Hallo, Ich beschäftige mit nun ab und zu schon etwas längerer mit Arduino´s und wollte nun etwas neues ausprobieren. Und zwar an eine Zeitschaltuhr mit einem Arduino Uno und einer RTC. Habe mich also etwas schlau gemacht und schnell erfahren das die DS3231 einer der besten Uhren sei. Also bestellt. Mein genauer Plan ist eine Arduino-Zeitschaltuhr die über eine Relai Karte zb. Um 12 Uhr Denn Springbrunnen, um 22 Uhr die Lichter usw ein- bwz ausschaltet. Doch ich habe seit 2 Tagen glaub das ganze Internet duchsucht und nichts für mich brauchbares gefunden. Warscheinlich ist es total simpel und ihr lacht gerade über mich, Aber egal fragen kostet ja nichts :) Vielleicht hat jemand von euch einen Beispiel Sketch für mich der um bestimmte Zeiten bestimme Sachen "macht". Wenn ihr noch weitere Informationen braucht einfach sagen. Also um 12 bis 22 Uhr X Ein- und Ausschalten Und um 22 bis 24Uhr Y Ein- und Ausschalten Danke schonmal.
Wie wäre es mit selber programmieren ? Datenblatt des RTC lesen und selber ein Programm schreiben.
Das ist mir schon klar. Damit habe ich aber nichts zusammengebracht und deshalb habe ich hier gefragt ob mir jemand helfen kann. Vielleicht hat jemand soetwas schonmal gemacht und kann mir ein Paar Tipps geben. Danke
Im Grunde genommen ist das relativ simpel: 1. I²C initialisieren - dafür gibt es dutzende von Bleistiften. 2. Die nötigen Register brav der Reihe nach setzen. Sind 'nen Haufen;-) 3. Entweder auf die Unterbrechung warten oder zyklisch nachfragen ob es so weit ist. Dabei sind eigentlich nur zwei Punkte zu beachten: 1. Alle mir bekannten Uhren standen auf das BCD-Format. 2. Es kann nicht schaden die richtige Adresse (I²C) anzusprechen. - Ein oder zwei Register mit Flaggs sind zu bedienen. Ich fand es am einfachsten, immer einen ganzen Registerblock zu füttern. Dämlich ist nur, dass Du die ganze Zeit im Trüben fischen musst. Die initiale Zeit muss in die Register. Die Weckzeit auch. Hat das Teil keine Anzeige, so muss Du jedes Mal warten, ob was passiert.
Baumeister B. schrieb: > Doch ich habe seit 2 Tagen glaub das ganze Internet duchsucht und nichts > für mich brauchbares gefunden. Warscheinlich ist es total simpel und ihr > lacht gerade über mich, Aber egal fragen kostet ja nichts :) Vielleicht > hat jemand von euch einen Beispiel Sketch für mich der um bestimmte > Zeiten bestimme Sachen "macht". Wenn ihr noch weitere Informationen > braucht einfach sagen. > Also um 12 bis 22 Uhr X Ein- und Ausschalten > Und um 22 bis 24Uhr Y Ein- und Ausschalten Nein, so ganz simpel wie eine LED blinken zu lassen ist es nicht, aber mit einem Arduino-Board und einer DS3231 (sehr gute Wahl!) ist es auch nicht zu schwierig. Vom Prinzip her gibt es zwei Möglichkeiten: Nicht wenige Arduino-Programmierer installieren sich erstmal ca. ein halbes Dutzend Drittanbieter-Libraries zusätzlich zur Arduino-IDE (eine RTC-Library, eine Time-Library, eine TimeAlarms-Library und was weiß ich), aber das ist ziemlich unnötig, denn mit der "Wire" Library ist in den Arduino Core-Libraries bereits eine gute Library enthalten, um alle I2C-Geräte, einschließlich I2C-RTCs, zu steuern. Zur Kommunikation mit der RTC brauchst Du im wesentlichen zwei selbstgeschriebene Funktionen: zum RTC Zeit/Datum auslesen und Zeit/Datum stellen, und Du brauchst eine Schaltfunktion für eine 2-Kanal-Tageszeitschaltuhr mit einer Schaltzeit pro Schaltkanal. Im Forum von Arduino.cc habe ich sowohl im deutschen als auch im Programming Forumsbereich diverse RTC-Beispielprogramme gepostet. Ich glaube, auch ein Zeitschaltuhr-Beispielprogramm war dabei. Manche Programme davon nur mit Zeitausausgabe und Zeitstellung über den Serial Monitor, manche mit Ausgabe auf 1602 Text-LCD. Das von mir gepostete komlexe Zeitschaltuhrprogramm ist dabei ein "elektronisches Turmuhr-Schlagwerk", das folgendes macht: - zur vollen Stunde (nur am Tag) einen PA-Verstärker einschalten - und dann entsprechend der Stunde per MP3-Playermodul Turmuhr Stundenschläge abspielen - danach den PA-Verstärker bis zur nächsten vollen Stunde wieder ausschalten - mit automatischer Sommer-/Winterzeitumstellung - mit einem "LCD-Keypad-Shield" und einem Einstellmenü per Drehgeber (mechanical rotary encoder), über das man nicht nur Zeit/Datum einstellen kann, sondern auch firstDaytimeHour und lastDaytimeHour, also welches die Tagesstunden sind, an denen das Schlagwerk aktiv sein soll, damit die Bewohner in der Nähe ihre Nachtruhe bekommen. Das Beispielprogramm hat mich echt Mühe gekostet, aber es ist tatsächlich auf einer kleinen Insel vor der irischen Küste im Einsatz. Wenn Du möchtest, suche ich Dir mal eines meiner einfacheren Zeitschaltuhr-Beispielprogramme heraus, die Suchfunktion in dem Forum ist leider nicht so toll, aber ich weiß ja wonach ich suchen müßte.
Baumeister B. schrieb: > Vielleicht hat jemand von euch einen Beispiel Sketch für mich der um > bestimmte Zeiten bestimme Sachen "macht". Stell dir einfach vor, wie du vorgehen würdest, wenn du den Job von Hand machen sollst und nur einen einzigen Wecker hast. Klugerweise machst du dir eine Liste mit Schaltzeitpunkten und dem jeweils erforderlichen Schaltvorgang. Damit du nicht jedesmal die ganze Liste durchgucken musst, sortierst du sie nach den Zeiten. Und nun kann's losgehen.
1 | Was ist als nächstes dran? |
2 | Gucken, ob das jetzt oder später ist? |
3 | falls Später: Wecker der RTC stellen |
4 | Abwarten und Tee trinken, bis der Wecker sich meldet |
5 | Schaltvorgang ausführen |
6 | und wieder von vorne ... |
Das dürfte in wenigen Codezeilen abgehandelt sein. Der Hauptaufwand wird der Bedienkomfort zur Eingabe der Liste sein.
Jürgen S. schrieb: > - mit automatischer Sommer-/Winterzeitumstellung Habe das gerade hier gelesen. Dazu eine Frage: Ist die Sommer-/Winterzeitumstellung schon im Schaltkreis vorgesehen?
wolle g. schrieb: > Jürgen S. schrieb: >> - mit automatischer Sommer-/Winterzeitumstellung > > Habe das gerade hier gelesen. > Dazu eine Frage: Ist die Sommer-/Winterzeitumstellung schon im > Schaltkreis vorgesehen? Nein, ist es nicht, denn es gibt auf der Welt wohl weit über 50 verschiedene Sommerzeitregeln in den verschiedenen Ländern der Erde. Keine Regel ist in den RTC-Modulen integriert, weder die US-Sommerzeit noch die EU-Sommerzeit, das mußt Du in Software machen. Die RTC stellst Du am besten auf Zonenzeit (z.B. Berlin UTC+1 und läßt sie das ganze Jahr über auf Winterzeit laufen. Und wenn Du das Display einmal pro Sekunde aktualisierst, testest Du auf Sommerzeit, rechnest ggf. eine Stunde drauf (UTC+2) und zeigst die Zeit an. Ebenfalls möglich wäre: RTC stets auf UTC-Zeit laufen lassen, und je nachdem draufrechnen: Im Winter eine Stunde, im Sommer zwei Stunden. Eine entsprechende Sommerzeit-Funktion für die Zeitumstellung in der EU nach der derzeitigen Umstellungsregel ist extrem simpel, wenn sie nur zwischen dem Jahr 2000 und dem Jahr 2099 zu funktionieren braucht. Ist alles in irgendwelchen Beispielprogrammen von mir enthalten, könnte ich raussuchen. Übrigens: Die eingebaute Weckerfunktion des RTC-Moduls lasse ich bei Zeitschaltaufgaben komplett außen vor. Nicht nur wegen automatischer Sommer-/Winterzeitumstellung, sondern weil es nur maximal 2 Weckzeiten in solchen Modulen gibt, und Du spätestens dann Probleme bekommst, wenn Du eine 4-Kanal-Zeitschaltuhr mit 4 Ein- und 4 Ausschaltzeiten pro Tag und pro Schaltkanal benötigst. Ob irgendein Schaltkanal EIN oder AUS ist, kannst Du per Software leichter prüfen als durch das Setzen von Alarmzeiten in der RTC und Warten auf den Alarmausgang.
:
Bearbeitet durch User
Jürgen S. schrieb: > Nicht nur wegen automatischer > Sommer-/Winterzeitumstellung, sondern weil es nur maximal 2 Weckzeiten > in solchen Modulen gibt, und Du spätestens dann Probleme bekommst, wenn > Du eine 4-Kanal-Zeitschaltuhr mit 4 Ein- und 4 Ausschaltzeiten pro Tag > und pro Schaltkanal benötigst. Das kommt drauf an, wie man sich anstellt ... Wolfgang A. schrieb: > Stell dir einfach vor, wie du vorgehen würdest, wenn du den Job von Hand > machen sollst und nur einen einzigen Wecker hast.
Wolfgang A. schrieb: > Jürgen S. schrieb: >> Nicht nur wegen automatischer >> Sommer-/Winterzeitumstellung, sondern weil es nur maximal 2 Weckzeiten >> in solchen Modulen gibt, und Du spätestens dann Probleme bekommst, wenn >> Du eine 4-Kanal-Zeitschaltuhr mit 4 Ein- und 4 Ausschaltzeiten pro Tag >> und pro Schaltkanal benötigst. > > Das kommt drauf an, wie man sich anstellt ... Ja klar, beim Programmieren gibt es meistens mehrere Möglichkeiten. Trotzdem würde ich die RTC-eigenen Weckzeiten nur für batteriebetriebene Projekte in Erwägung ziehen, die überwiegend im PowerDown laufen und extrem Strom sparen sollen. Das kommt für Arduino UNO Boards kaum in Frage, da ziehen der Serial-USB-Wandler und der 5V Spannungswandler bereits so viel Strom, dass sich ein PowerDown-Betrieb kaum lohnt, und spätestens wenn mit Relais 230V-Lampen geschaltet werden, kommt es auf 0.25 Watt Stromverbrauch ja nicht an. Hier habe ich mal ein knapp 3 Jahre altes Beispielprogramm gefunden, in diesem Forumsbeitrag ist eine Kurzbeschreibung enthalten und der vollständige Quellcode für * ZeitschaltUhrMitTimer.ino hängt dran: http://forum.arduino.cc/index.php?topic=192958.msg1426386#msg1426386 Keine automatische Sommer-/Winterzeitumstellung in diesem Code. Kein Display. Erweiterungen auf Text-LCD-Displayanzeige und mehr Schaltkanäle mit mehr Schaltzeiten habe ich im Verlauf des Threads noch später gepostet.
Danke an alle dir mir geholfen haben aber ich bin langsam auf dem richtigen Weg! Danke nochmal!
Jürgen S. schrieb: > Nein, ist es nicht, denn es gibt auf der Welt wohl weit über 50 > verschiedene Sommerzeitregeln in den verschiedenen Ländern der Erde. Danke für den Hinweis. Dann muss mein Uhren-IS (DS32C35) weiterhin immer mit der Winterzeit laufen. Hoffentlich wird der Mist mit der Sommer-/Winterzeitumstellung bald abgeschaft. Nur Ärger und unnötige Zeitverschwendung beim Progammieren! und 2x jährlich Uhren stellen.
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.