Pages: [1] 2 3   Go Down
Author Topic: millis() genau genug für eine uhr?  (Read 5485 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo,

ich beschäftige mich jetzt das erste mal mit dem arduino und habe ein frage.
ich habe ein uhr, bzw. nur den motor (nebenuhr). die würde ich gerne mit einem rechecksignal jede minute für 600ms versorgen.
dafür habe ich ein kleines programm geschrieben und nutze millis() um die minute zu errechnen.
da auf dem arduino uno board ein quartz drauf ist, dachte ich dass der tackt schon stimmt. leider geht die uhr jetzt nach 19h schon 97s nach.

sind die millis() so genau, dass man sie für eine uhr verwenden kann (vlt is was in meinem code falsch) oder sollte ich einen externen taktgeber nutzen?
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Thomas,

ich würde diese Library verwenden. Dort gibt es als Beispiel eine "Software Realt Time Clock".


Gruß

Sebastian
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

das würde aber heißen, ich bräuchte noch etwas extra.
kann ich mich also auf den takt, den der arduino gibt nicht verlassen?
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

nein, Du benötigst nichts extra. Es ist ja eine Softwarelösung. Nur diese Library einbinden und und die Soft RTC benutzen.


Sebastian
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ahh ok danke.
leider habe ich vom arduino und programmieren nicht so viel ahnung. ich habe mir auch nin kumpel ran geholt der davon mehr weiß. vlt gehe ich mit ihm das mit der biblothek nochmal durch.
aber was macht denn die biblothek? die kann doch auch nur den takt über millis() nutzen oder?
na ich versuche da jetzt erstmal durch zu steigen. melde mich bestimmt wieder smiley-wink
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
ich würde diese Library verwenden. Dort gibt es als Beispiel eine "Software Realt Time Clock".
@stundenblume
dieses erwähnte Beispiel scheint aber nicht in der erwähnten Bibliothek zu sein.  smiley-cry
Ich befasse mich auch gerade mit dem Thema und wollte meine Library aktualisieren.
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nachtrag
Die erwähnte Software Real Time Clock benötigt zusätzlich die Time-Library.
http://www.arduino.cc/playground/Code/Time

Lösung mit der Time Library:
Quote
The main advantages of software only clock is no hardware to buy or integrate, everything runs on the Arduino.
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
dieses erwähnte Beispiel scheint aber nicht in der erwähnten Bibliothek zu sein.

mmmh, bei mir war das softRTC Beispiel bei der RTC Library mit drin...
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ahh ok danke.
leider habe ich vom arduino und programmieren nicht so viel ahnung. ich habe mir auch nin kumpel ran geholt der davon mehr weiß. vlt gehe ich mit ihm das mit der biblothek nochmal durch.
aber was macht denn die biblothek? die kann doch auch nur den takt über millis() nutzen oder?
na ich versuche da jetzt erstmal durch zu steigen. melde mich bestimmt wieder smiley-wink

Die Biliothek holst du im Code über

Code:

#include <DS1307.h>

und die dazugehörige Time-Lib über

Code:
#include <Time.h>

das Ganze schreibste über die

Code:
void setup()  {}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok. habe mir jetzt das ganze auf http://www.arduino.cc/playground/Code/Time mal angeschaut.
das is ja alles gut. doch ich brauche ja eigentlich gar nicht so viel. nur halt jede minute ein takt.
basiert denn die time bibliothek nicht auch auf millis()?
warum geht denn die uhr mit meinem code so nach?
na wenns gar nicht anders geht, werde ich wohl die biblo nehmen
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok. habe mir jetzt das ganze auf http://www.arduino.cc/playground/Code/Time mal angeschaut.
das is ja alles gut. doch ich brauche ja eigentlich gar nicht so viel. nur halt jede minute ein takt.
basiert denn die time bibliothek nicht auch auf millis()?
warum geht denn die uhr mit meinem code so nach?
na wenns gar nicht anders geht, werde ich wohl die biblo nehmen

Weil die Bibliothek nunmal anders arbeitet als Du es tust. Sie arbeitet genauer, verliert keine Zeit bei der Berechnung. Natürlich auch auf Basis des selben Quarzes.
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok. ich will das ja nur verstehen.
wenn wir, sagen wir mal millis() 60000 erreicht hat, ich berechne und dann meinen impulse raus schicke.
dann warten und wenn millis() dann 120000 erreicht hat ich wieder einen los schicke. dann dürfe sich doch kein fehler addieren und so die zeit eingehalten werden, oder?
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@foo_mep
Versuche doch beide Lösungen. So kannst du vergleichen wie die Genauigkeit ist und auch den nötigen Aufwand für die Realisierung.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

naja. scheint ja schon was dran zu sein. weil bei meine lösung geht ja die uhr nach.
aber ich glaube ich habe jetzt ne lösung gefunden. wollte ja gerne meinen code nicht so stark ändern. von daher hat mir second() nicht so gut gefallen. aber now() ist sehr gut smiley
werde jetzt mal meine code umbauen, und die uhr nin tag laufen lassen. mal sehen ob sich was ändert. resultat folgt...
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ansonsten zeig doch bitte mal den Code, mit dem Du den Takt erzeugst. Dann kann man vielleicht mehr sagen.

Sebastian
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

Pages: [1] 2 3   Go Up
Jump to: