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: 17)
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
  Probleme mit Blinklicht auf bestimmte Zeit Prospekteur 15 498 20.10.2019 17:08
Letzter Beitrag: Tommy56
  Aktivierung nur in einer bestimmten Zeit Prospekteur 48 2.205 14.09.2019 12:57
Letzter Beitrag: MicroBahner
  Millis benutzen statt delay beame 9 1.281 21.06.2019 16:16
Letzter Beitrag: Franz54
  Zeit vom Nextion Enhanced mit Arduino auslesen MarkoM 47 5.540 06.03.2019 18:08
Letzter Beitrag: Tommy56
Sad Neuling verzweifelt braucht Hilfe delay durch timer ersetzen Lois 1 950 06.02.2019 16:15
Letzter Beitrag: Tommy56
  Multiple Serielle Bytes mit Startmarke synchronisieren, was mache ich falsch Mosi 8 1.075 20.12.2018 18:33
Letzter Beitrag: Mosi
  Schleife bei Zeit x abbrechen BitsAndBytes 7 1.563 23.09.2018 00:30
Letzter Beitrag: BitsAndBytes
  was ist falsch? (c++) uweq 36 4.248 18.07.2018 15:55
Letzter Beitrag: Mathias
  Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay soluman 3 1.448 05.07.2018 20:53
Letzter Beitrag: GuaAck
  Zeit-Server-Problem 182 19 4.154 07.06.2018 21:42
Letzter Beitrag: ardu_arne

Gehe zu:


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