INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
delay Zeit falsch
22.05.2019, 08:12 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2019 08:15 von golex.)
Beitrag #1
delay Zeit falsch
Hallo,

ich habe einen sketch, mit dem ich einige Male am Tag Relais ein- und ausschalte.
Dieser Ablauf soll sichh täglich zur gleichen Zeit wiederholen. Wenn ich sämtliche delay Zeiten addiere, komme ich auf 86400000 Tausendstel Sekunden = 24 Stunden.
Der Programmablauf startet aber bereits nach einem Tag um ca. 396 Sekunden später. Rechne ich diesen Wert um, so komme ich auf 16,5 Sekunden pro Stunde. Das heißt, der Arduino zählt etwas langsamer, 1 Stunde sind für den Arduino nich 3600 Sekunden, sondern 3616,5 Sekunden.
Kann mir jemand sagen, was hier falsch läuft?
Danke schon mal.

Grüße
golex
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.05.2019, 08:49
Beitrag #2
RE: delay Zeit falsch
(22.05.2019 08:12)golex schrieb:  Hallo,

ich habe einen sketch, mit dem ich einige Male am Tag Relais ein- und ausschalte.
Dieser Ablauf soll sichh täglich zur gleichen Zeit wiederholen. Wenn ich sämtliche delay Zeiten addiere, komme ich auf 86400000 Tausendstel Sekunden = 24 Stunden.
Der Programmablauf startet aber bereits nach einem Tag um ca. 396 Sekunden später. Rechne ich diesen Wert um, so komme ich auf 16,5 Sekunden pro Stunde. Das heißt, der Arduino zählt etwas langsamer, 1 Stunde sind für den Arduino nich 3600 Sekunden, sondern 3616,5 Sekunden.
Kann mir jemand sagen, was hier falsch läuft?
Danke schon mal.

Grüße
golex

Da läuft sicher nichts falsch.
Nur gehst du davon aus, dass der Arduino einen hochgenauen Quarz verwendet, das tut er nicht.
Wenn du genaue Zeit benötigst, solltest du eine RTC (DS3231) verwenden, die hat einen temperaturkompensierten Quarz.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.05.2019, 08:52
Beitrag #3
RE: delay Zeit falsch
(22.05.2019 08:12)golex schrieb:  .....
Kann mir jemand sagen, was hier falsch läuft?
Danke schon mal.
....

Moin,
das Problem ist bekannt. Die Timerzeit wird aus der Taktfrequeunz der CPU gewonnen und diese Frequenz ist nicht abgeglichen bzw. es kann auch sein das nur ein Keramikresonator da verbaut ist.
Wenn du die genaue Uhrzeit haben willst dann solltest dir eine Real-Time-Clock (kurz RTC) zulegen und hier empfiehlt sich ein Modul mit dem DS3231 Chip drauf.
Hier muß man allerdings noch aufpassen das wenn eine Ladeschaltung für den Batteriehalter besteht man auch einen Akku in die Halterung einsetzt und keine Batterie. An der Stelle habe ich z.B. die Batterie/Akku durch einen Gold-Cap Kondensator ersetzt der dann so um die 3 Wochen die Uhr weiterlaufen läßt was völlig ausreicht.
Im Angebot findet man auch noch DS1307 Uhrenbausteine... aber die laufen genauso weg und taugen nichts.
Wenn was wartungsfrei laufen soll dann wäre die Kombination RTC plus NTP Zeitabfrage im Netz die beste Lösung. Wenn man die Zeit öfters abfragen will dann kann man sich z.B. so manche Fritz Box als NTP Server einrichten und dann hat man ausgesorgt. Dann tut es die time.h Library und einen gelegentlichen Abruf der Zeit von der Fritz Box.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.05.2019, 22:54
Beitrag #4
RE: delay Zeit falsch
Hallo Golex,

volle Zustimmung zu dem was zu DS3231 und DS1307 gesagt wurde.

Aber 16 s am Tag kommen mir auch für den normalen CPU-Quarz viel vor. Du schreibst, Du hast die Delays addiert. Aber die Loop arbeitet doch auch und braucht Zeit. Teste doch mal mit der Funktion millis().

Trotzdem: RTC z.B. DS3231 ist auf jeden Fall besser. Und nach Stromausfall und Reset des Arduino schalten die Relais wieder zu den programmierten Zeiten.

Gruß GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.05.2019, 12:24
Beitrag #5
RE: delay Zeit falsch
(22.05.2019 22:54)GuaAck schrieb:  Aber 16 s am Tag kommen mir auch für den normalen CPU-Quarz viel vor. Du schreibst, Du hast die Delays addiert. Aber die Loop arbeitet doch auch und braucht Zeit. Teste doch mal mit der Funktion millis().
.....

Die Arduinos haben sogar nur einen keramischen Resonator drauf, dies sind halt so schlecht.
Nur wissen wir immer noch nicht, von was für einem Arduino der TO spricht.
Also am Besten alles geheim halten.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.05.2019, 07:40
Beitrag #6
RE: delay Zeit falsch
Hallo,
habe meinen UNO (Sainsmart) letzte Nacht mal mit einem kleinen Testprogramm laufen lassen: Die Uhr verliert 5 s in 24 h, passt gut zu Euren Erfahrungen; falls Interesse, Sketch anbei.

Gruß
GuaAck


Angehängte Datei(en)
.ino  Quarz.ino (Größe: 1,4 KB / Downloads: 34)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.05.2019, 09:34
Beitrag #7
RE: delay Zeit falsch
(24.05.2019 07:40)GuaAck schrieb:  Hallo,
habe meinen UNO (Sainsmart) letzte Nacht mal mit einem kleinen Testprogramm laufen lassen: Die Uhr verliert 5 s in 24 h, passt gut zu Euren Erfahrungen; falls Interesse, Sketch anbei.
Ist denn auf deinem Uno ein Quarz oder keramischer Resonator drauf ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.05.2019, 11:34 (Dieser Beitrag wurde zuletzt bearbeitet: 24.05.2019 11:35 von GuaAck.)
Beitrag #8
RE: delay Zeit falsch
(24.05.2019 09:34)hotsystems schrieb:  
(24.05.2019 07:40)GuaAck schrieb:  Hallo,
habe meinen UNO (Sainsmart) letzte Nacht mal mit einem kleinen Testprogramm laufen lassen: Die Uhr verliert 5 s in 24 h, passt gut zu Euren Erfahrungen; falls Interesse, Sketch anbei.
Ist denn auf deinem Uno ein Quarz oder keramischer Resonator drauf ?

Das weiß ich nicht; Aufschrift ist S 16000 / 1143, mehr nicht. Anbei ein Foto,

Gruß
GuaAck


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler bei delay über 32767 Kleingärtner 5 291 07.05.2020 18:51
Letzter Beitrag: Kleingärtner
  Wie bekomme ich DIESES Delay weg. DO3GE 9 484 18.04.2020 12:44
Letzter Beitrag: Fips
  Teilfunktion nur 1x nutzen, für begrenzte Zeit senseman 9 485 09.04.2020 10:31
Letzter Beitrag: Tommy56
  delay-millis()-while-Sensorenabfrage RCudino 22 1.387 01.04.2020 06:46
Letzter Beitrag: RCudino
  Denkanstoß gesucht - in Schrittkette delay() ersetzen SpaghettiCode 19 938 31.03.2020 21:31
Letzter Beitrag: MicroBahner
  for-schleife, delay, millis, interrupt Harry 8 551 31.03.2020 21:02
Letzter Beitrag: Harry
  Scrollpausen im Oled Display ohne Delay Alter Fritz 7 629 25.01.2020 13:22
Letzter Beitrag: Alter Fritz
  Loop-Teil mit Interrupt für bestimmte Zeit stoppen Alter Fritz 11 1.136 23.12.2019 23:10
Letzter Beitrag: hotsystems
  Sich wiederholende Intervalle ohne Delay Verzweiflung RobertLeRopp 52 3.492 17.12.2019 21:30
Letzter Beitrag: Tommy56
  Millis anstatt delay ThorstenP 25 2.395 29.11.2019 16:34
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste