Go Down

Topic: DS 3231 Zeitschaltuhr mit LCD-Display (Read 8907 times) previous topic - next topic

ElEspanol

#15
Nov 25, 2016, 11:11 am Last Edit: Nov 25, 2016, 11:12 am by ElEspanol
Quote
parse_cmd("T003321424112016",16);
Bist du sicher, dass die 4 dahin gehört?

HotSystems

Und zu dieser Zeitangabe:
In dem Fall 24.11.2016, Donnerstag, 21:33:00 Uhr
fällt mir nur ein:
Das ist eine ungültige Zeitangabe, es gibt keine 33:00Uhr, was soll das sein?
Soll das mit den 33:00Uhr eventuell für 09:00 Uhr vormittags am nachfolgenden Tag stehen?

Da steht doch 21:33:00 Uhr, oder ?

Und zur ständigen Rücksetzung der Zeit, vermute ich, die wird immer im Setup gestellt, muss also im Setup auskommentiert werden.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

jurs

Bist du sicher, dass die 4 dahin gehört?
Die Zeitangabe mit einem Großbuchstaben "T" gefolgt von etlichen Ziffern deutet darauf hin, dass er die Uhr mit einer "Unixtime" Zeitangabe füttern möchte, also der Anzahl vergangener Sekunden eit dem 1.1.1970 um 00:00 UTC-Zeit.

Wenn er das macht und die von ihm verwendete Library-Funktion das korrekt umsetzt, läuft seine RTC danach allerdings wohl auf UTC-Zeit (Zeitzone von London).

Um diese Zeit aufauf deutsche Zeit umzurechnen, muß er in der Winterzeit dann immer eine Stunde und in der Sommerzeit zwei Stunden auf die Zeit draufrechnen, um auf "amtliche deutsche Zeit" zu kommen.

Ich werde es bei mir hier anders machen:
- Die RTC-Uhr läuft auf Zonenzeit (Zeitzone von Berlin, Deutschland ist UTC+1) und es wird in der Winterzeit direkt diese Zeit zum Anzeigen und Schalten verwendet, und nur während der Sommerzeit eine Stunde draufgeschlagen.

jurs

#18
Nov 25, 2016, 11:26 am Last Edit: Nov 25, 2016, 11:30 am by jurs
Da steht doch 21:33:00 Uhr, oder ?
Ja, in der Tat, Du hast Recht, ich habe mich verlesen, ein kleiner Lapsus von mir.
Ich war nicht davon ausgegangen, dass er die Uhrzeit sekundengenau einstellen öchte, wenn das Programm anschließend nur minutengenaue Schaltzeiten bekommt, die minutengenau eingehalten werden sollen.

Ich glaube, in meinem Sketch werde ich für die RTC erstmal nur eine minutengenaue Zeiteinstellung "auf die volle Minute" vorsehen. Und zwar nicht per "Einstellung nach Londoner Zeitzone mit Angabe von "Unixzeit", sondern per Einstellung in der "Zeitzone von Deutschland (UTC+1), mit automatischer Umrechnung auf Sommerzeit während der Sommermonate für Zeitanzeige und Schaltzeiten.

ElEspanol

Die Zeitangabe mit einem Großbuchstaben "T" gefolgt von etlichen Ziffern deutet darauf hin, dass er die Uhr mit einer "Unixtime" Zeitangabe füttern möchte, also der Anzahl vergangener Sekunden eit dem 1.1.1970 um 00:00 UTC-Zeit.
Ich sehe da eher die Zeit im Klartext 003321424112016
00 Sekunden
33 Minuten
21 Stunden
4 ?? falsch?? Fehler verursachend?
24 Tag
11 Monat
2016 Jahr vierstellig

G4rt3l

#20
Nov 25, 2016, 05:12 pm Last Edit: Nov 25, 2016, 05:39 pm by G4rt3l
Ich weiß nicht genau wie der Sketch funktioniert. Es ist ja im Grunde der Standard-Sketch von Rodan - Github zur DS3231

https://github.com/rodan/ds3231


Richtig die Aufgliederung in diesem Sketch funktioniert mit Angabe des Wochentages
003321424112016:
00 Sekunden
33 Minuten
21 Stunden
4 Wochentag = Donnerstag; 1 wäre Montag and so on
24 Tag
11 Monat
2016 Jahr vierstellig

Die Sekundenschaltung ist nicht nötig und war nur ein zusätzliches Gimmik in dem Sketch... Das LCD.Clear erfolgt auch sekundlich.

Zu dem DS3231: Grundsätzlich steht hier nichts drauf vermerkt

DS3231M
1125A3
625AA

und dann ist da noch ein kleiner chip, könnte jetzt nur vermuten das es sich hierbei um das Thermometer handelt:
ATMEL632
24C32M
SU27   D

Generell draufgedruckt steht noch ZS-042

Link von den Teilen:
http://www.ebay.de/itm/391499267511


Also ich vermute da eher einen Platinenfehler / Also Fehler in meiner Verlötung die sich gelöst hat.
Ich werde das nochmal alles neu punktieren und versuchen. Weil das gleich zwei Stück nicht richtig funktionieren halte ich für unwahrscheinlich.

jurs

und dann ist da noch ein kleiner chip, könnte jetzt nur vermuten das es sich hierbei um das Thermometer handelt:
ATMEL632
24C32M
Nein, das Thermometer (Auflösung 0,25°C, Genauigkeit 3°C) ist direkt im DS3231 Chip EINGEBAUT! Das Thermometer ist kein eigenes Bauteil auf der Platine.

Und der Chip AT24C32 ist ein zusätzliches I2C Speichermodul mit einer Speichergröße von 8192 Bytes.
(Nichtflüchtger Speicher, Inhalt bleibt ohne Stromversorgung bestehen)

Wenn Du dieses Uhrenmodul korrekt an die Spannungsversorgung, GND und den I2C-Bus anschließt, dann hast Du danach zwei I2C-Geräte am I2C-Bus:
1. das Uhrenmodul DS3231
2. das Speicher EEPROM 24C32

Lade Dir mal einen "I2C Scanner" Sketch auf das Board hoch und schaue Dir an, ob und wie viele Geräte am I2C-Bus gefunden werden, wenn Du die RTC-Modulplatine angeschlossen hast!
Der I2C-Scanner Sketch sollte dann zwei Geräte an zwei verschiedenen Adressen finden, wenn alles funktioniert.

Was bekommst Du?


G4rt3l

Ja Ja der liebe unbekannte Fehler!! =D Ich hab meine Platine komplett nochmal auf dem Breadboard nachgebaut und dort funktioniert die Zeit wunderbar fortlaufend! =D Daraufhin habe ich nochmal meine eigentlich Platine angeschmissen und bums, läuft es dort auch wieder... Bin kurz davor mir in Hintern zu beißen.

i2c Scanner sagt:

I2C Scanner
Scanning...
I2C device found at address 0x57  !
I2C device found at address 0x68  !
done

Also alles Paletti :)

G4rt3l

Okay Fehler gefunden... Menschliches Versagen... Menschliches Denkliches Versagen =D

Ich spiele den Sketch auf mit der richtigen Zeit:

  Serial.println("Setting time");
  parse_cmd("T102118525112016",16);


Und muss Ihn dann ohne Ihn vom Strom zu nehmen nochmal hochladen bloß als Text:

  //Serial.println("Setting time");
  //parse_cmd("T102118525112016",16);

Weil wenn ich den Arduino sonst immer wieder neu starte, setzt er immer wieder die alte Zeit...

Tut mir leid um die vergeudete Zeit =D

michael_x

Und zur ständigen Rücksetzung der Zeit, vermute ich, die wird immer im Setup gestellt, muss also im Setup auskommentiert werden.
Das ist der beliebteste Fehler, denke ich mal

HotSystems

#25
Nov 25, 2016, 07:42 pm Last Edit: Nov 25, 2016, 07:46 pm by HotSystems
Und muss Ihn dann ohne Ihn vom Strom zu nehmen nochmal hochladen bloß als Text:

  //Serial.println("Setting time");
  //parse_cmd("T102118525112016",16);

Weil wenn ich den Arduino sonst immer wieder neu starte, setzt er immer wieder die alte Zeit...

Tut mir leid um die vergeudete Zeit =D
Man sollte doch immer die Posts der "Helfer" komplett lesen.
Siehe mein Post #16.

Ups, das habe ich jetzt überlesen, michael_x.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

G4rt3l

Ja ich hab es gelesen aber nicht verstanden was du mit auskommentieren meintest

michael_x

Quote
Ups, das habe ich jetzt überlesen
;) Ich hab gleich gemerkt, dass den Tip schon jemand gegeben hatte ;)

@G4rt3l:
Ist zwar der "beliebteste" Fehler, aber schon ziemlich blöde, sich so wenig um seinen "eigenen" Sketch zu kümmern.

Wenn man eh Serial verwendet, könnte man ja auch per Serial.read() eine Uhrzeit-Stellfunktion machen, statt die Primitiv-Demo unreflektiert zu übernehmen.

HotSystems

Ja ich hab es gelesen aber nicht verstanden was du mit auskommentieren meintest
Da könnte man aber nachfragen.
Z.B. Code als Kommentar setzen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

G4rt3l

Scheint nicht bei jeden durchgedrungen zu sein, das ich nur über minimalste Grundkenntnisse im Programmieren verfüge und mir nicht eigene Sketche ausdenken kann. Ich kann ein wenig dran rumfummeln und noch ein wenig hinzufügen, das war es aber auch. Von daher sagt mir Serial.read() mal überhaupt nichts.
 

Go Up