Buggfix Plus
Aktuellt datum och tid: 19.46 2019-09-15

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 29 inlägg ]  Gå till sida 1, 2  Nästa
Författare Meddelande
InläggPostat: 01.29 2019-03-04 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Åkte till Kjell och köpte en Kjell Academy klon av Arduino Uno R3 samt en RTC breakoutmodul med DS3231. Den senare var det ont om i Stockholmsbutikerna, men jag lyckades reservera en, med bara ett absolut minimum av signalerna anslutna. Den hade dock batteri(?) till skillnad från modulen som jag hade föredragit.

Använd pollande testkod hittills (får själv försöka löda in mig på 32kHz och/eller fyrkantsvågpinnen, om jag vill åt dem):
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
  1. // Include the libraries
  2. #include <RtcDS3231.h>
  3. //Open the Library Manager and search for "Rtc by Makuna" and install
  4.  
  5. #include <Wire.h>
  6.  
  7. // Create new RTC module
  8. RtcDS3231<TwoWire> Rtc(Wire);
  9.  
  10. // Create variables for time
  11. byte hours;
  12. byte minutes;
  13. byte seconds;
  14. byte old;
  15. byte oldM;
  16. uint16_t year;
  17. byte month;
  18. byte day;
  19.  
  20. void setup() {
  21.   // put your setup code here, to run once:
  22.   Serial.begin(115200);
  23.   Rtc.Begin();
  24.  
  25.   // Update RTC module time to compilation time
  26.   RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
  27.   compiled += 7;  //transfer time
  28.   //Already set, comment this out:
  29.   //Rtc.SetDateTime(compiled);
  30.   //set 2019-03-03 ~15 EET
  31.  
  32.   old = 0;
  33.   oldM = 0;
  34. }
  35.  
  36. void loop() {
  37.   // put your main code here, to run repeatedly:
  38.   delay(10);
  39.   updateTime();
  40.   if(minutes != oldM){
  41.     printDate();
  42.   }
  43.   else if(seconds != old){
  44.     printTime();
  45.   }
  46. }
  47.  
  48. void updateTime() {
  49.    RtcDateTime now = Rtc.GetDateTime();
  50.    hours = now.Hour();
  51.    minutes = now.Minute();
  52.    seconds = now.Second();
  53.    year = now.Year();
  54.    month = now.Month();
  55.    day = now.Day();
  56. }
  57.  
  58. #define countof(a) (sizeof(a) / sizeof(a[0]))
  59.  
  60. void printTime(){
  61.     char timestring[9];
  62.     snprintf_P(timestring,
  63.             countof(timestring),
  64.             PSTR("%02u:%02u:%02u"),
  65.             hours,
  66.             minutes,
  67.             seconds );
  68.     Serial.println(timestring);
  69.     old = seconds;
  70. }
  71.  
  72. void printDate(){
  73.     oldM = minutes;
  74.     char datestring[12];
  75.     snprintf_P(datestring,
  76.             countof(datestring),
  77.             PSTR("%04u-%02u-%02u "),
  78.             year,
  79.             month,
  80.             day );
  81.     Serial.print(datestring);
  82.     printTemperature();
  83.     printTime();
  84. }
  85.  
  86. void printTemperature(){
  87.     RtcTemperature temp = Rtc.GetTemperature();
  88.     Serial.print(temp.AsFloatDegC());
  89.     Serial.println("°C");
  90. }
  91.  


På datorn (vars klocka jag inte litar på alltför mycket, men som regelbundet synkas från nätet) prövade jag att sätta tidsstämplar med python:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
  1. import serial
  2. import time
  3. import datetime
  4.  
  5. ser = serial.Serial(
  6.     port='COM18',\
  7.     baudrate=115200,\
  8.     parity=serial.PARITY_NONE,\
  9.     stopbits=serial.STOPBITS_ONE,\
  10.     bytesize=serial.EIGHTBITS,\
  11.         timeout=0)
  12.  
  13. print("connected to: " + ser.portstr)
  14.  
  15. size = 10
  16. while (size > 0):
  17.     line = ser.readline()
  18.     if(line!=""):
  19.         timestamp = str(time.time())
  20.         print timestamp + ": " + line
  21.         size -= 1
  22.  
  23. ser.close()


Resultaten ser hyfsade ut tillsvidare. Får ta till bättre metoder eller vänta längre, för att kunna uttala mig hur klockan ligger i frekvens.

Inledande "mätning":
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
connected to: COM18
1551640907.06: 2019-03-03 26.50┬║C

1551640907.06: 21:21:46
1551640907.06:

1551640907.18: 21:21:47

1551640908.19: 21:21:48

1551640909.18: 21:21:4
1551640909.19: 9

1551640910.18: 21:21:50

1551640911.19: 21:21:51

1551640912.19: 21:21:52

...och nästan fem timmar senare:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
connected to: COM18
1551658807.0: 2019-03-04 26.25┬░C

1551658807.0: 02:20:06

1551658807.23: 02:20:07

1551658808.22: 02:20:08

1551658809.23: 02:20:09

1551658810.23: 0
1551658810.23: 2:20:10

1551658811.23: 02:20:11

1551658812.22: 02:20:12

1551658813.23: 02:20:13

Som väl blir ca 2 ppm, men vilken del av det datorn står för låter jag tillsvidare vara osagt.

Projekt? ...tja vi får se hur det utvecklar sig, om jag deltar i Kjells tävling. Ligger här i "öppen tråd" oavsett.


Upp
 Profil  
 
InläggPostat: 21.00 2019-03-04 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Så har klockan gått ett dygn. 0.19 s på 24 h => +2.2 ppm eller ~70 s / år.
Specen säger +/- 2 ppm mellan 0°C och 40°C, så det "duger" om man avrundar. Fortfarande påstår jag inte att den här datorns klocka är rätt, men nu tog jag med den inbyggda GPS:n som dock inte hade fix, men trackade ett par satelliter litet tidigare och hade haft fix när jag öppnade fönstret ännu tidigare.

Dagens officiella sampel:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
connected to: COM6
1551727204.76: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727205.76: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727206.76: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727207.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727208.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E

connected to: COM18
1551727213.95: 2019-03-04 26.00┬░C

1551727213.95: 21:20:13

1551727214.37: 21:20:14

1551727215.38: 21:20:15

1551727216.37: 21:20:16

1551727217.37: 21:20:17
1551727217.37:

1551727218.38: 21:20:
1551727218.38: 18

1551727219.38: 21:20:19

connected to: COM6
1551727224.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727225.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727226.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727227.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551727228.77: $GPGSA,A,1,,,,,,,,,,,,,,,*1E


Upp
 Profil  
 
InläggPostat: 22.39 2019-03-05 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Senaste bud: +3 ppm jämfört med gårdagens mätning: 1000000 * ((.70-.37)-(.82-.77))/(25.33*3600)
Blir snart dags att använda bättre referens, än den här datorn, men tillsvidare har jag varit lat.
Bilaga:
DS3231_1.jpg
Modulen i närbild.

Dagens data:
connected to: COM6
1551818559874: 204239.8
1551818560827: $GPGSA,A,3,07,13,27,30,,,,,,,,,326.0,178.1,273.0*3F
1551818561827: $GPGSA,A,3,07,13,27,30,,,,,,,,,666.6,666.6,666.6*31
1551818562825: $GPGSA,A,3,07,13,27,30,,,,,,,,,338.2,184.8,283.2*35
1551818563826: $GPGSA,A,3,07,13,27,30,,,,,,,,,666.6,666.6,666.6*31
1551818564826: $GPGSA,A,3,13,27,30,,,,,,,,,,666.6,666.6,666.6*36

connected to: COM18
1551818577520: 2019-
1551818577524: 03-05 22.75┬░C
1551818577525: 22:42:56
1551818577700: 22:42:57
1551818578696: 22:42:58
1551818578700:
1551818579703: 22:42:
1551818579707: 59
1551818580703: 2019-03-05 23.00┬░C
1551818580704: 22:43:00

connected to: COM6
1551818587847: 204307.8
1551818588824: $GPGSA,A,3,07,13,27,30,,,,,,,,,614.4,336.9,513.8*36
1551818589828: $GPGSA,A,3,07,13,27,30,,,,,,,,,639.4,350.6,534.7*3C
1551818590824: $GPGSA,A,3,07,13,27,30,,,,,,,,,655.0,359.2,547.7*3B
1551818591824: $GPGSA,A,3,07,13,27,30,,,,,,,,,685.8,376.2,573.5*36
1551818592824: $GPGSA,A,3,07,13,27,30,,,,,,,,,709.6,389.3,593.3*34


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 23.03 2019-03-06 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Insåg att förtecknet blev fel, minus ska det va när modulen går för långsamt, eftersom datorns tidsstämplar ökar jämfört med modulens sekundomslag.

Dagens rådata:
connected to: COM6
1551908686833: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1551908686878: 214446.8
1551908687832: $GPGSA,A,3,08,13,15,,,,,,,,,,666.6,666.6,666.6*3C
1551908688832: $GPGSA,A,3,08,13,15,,,,,,,,,,666.6,666.6,666.6*3C
1551908689830: $GPGSA,A,3,08,15,,,,,,,,,,,666.6,666.6,666.6*3E
1551908690837: $GPGSA,A,3,08,15,,,,,,,,,,,666.6,666.6,666.6*3E
1551908691830: $GPGSA,A,3,08,15,,,,,,,,,,,666.6,666.6,666.6*3E
1551908692830: $GPGSA,A,3,08,15,30,,,,,,,,,,666.6,666.6,666.6*3D
1551908693837: $GPGSA,A,3,08,15,30,,,,,,,,,,666.6,666.6,666.6*3D
1551908694831: $GPGSA,A,3,08,15,30,,,,,,,,,,666.6,666.6,666.6*3D
1551908695831: $GPGSA,A,3,08,15,30,,,,,,,,,,666.6,666.6,666.6*3D

connected to: COM18
1551908707614: 2019-03-06 24.75┬░C
1551908707617:
1551908707618: 23:45:06
1551908707970: 23:45:07
1551908708965: 23:45:08
1551908709973: 23:45:09
1551908709976:
1551908710972: 23:45:10
1551908711967: 23:45:11
1551908712975: 23:45:12

connected to: COM6
1551908719882: 214519.8
1551908720838: $GPGSA,A,3,08,15,,,,,,,,,,,666.6,666.6,666.6*3E
1551908721833: $GPGSA,A,3,08,15,,,,,,,,,,,666.6,666.6,666.6*3E
1551908723833: $GPGSA,A,3,08,15,,,,,,,,,,,666.6,666.6,666.6*3E
1551908725837: $GPGSA,A,3,08,15,27,30,,,,,,,,,365.7,221.7,290.8*3A
1551908727834: $GPGSA,A,3,08,13,15,27,30,,,,,,,,16.8,9.8,13.6*30
1551908729832: $GPGSA,A,3,08,13,15,27,30,,,,,,,,16.8,9.9,13.6*31
1551908731832: $GPGSA,A,3,08,13,15,30,,,,,,,,,16.8,9.9,13.6*34
1551908732834: $GPGSA,A,3,08,13,15,30,,,,,,,,,666.6,666.6,666.6*3F
1551908733833: $GPGSA,A,3,08,15,30,,,,,,,,,,666.6,666.6,666.6*3D
1551908734835: $GPGSA,A,3,08,15,30,,,,,,,,,,666.6,666.6,666.6*3D


Tar en till i samma inlägg, så blir det inte så mycket spammande.
connected to: COM6
1551969614886: 144014.8
1551969615832: $GPGSA,A,3,03,14,19,22,32,,,,,,,,12.9,7.0,10.8*39
1551969616827: $GPGSA,A,3,03,14,19,22,32,,,,,,,,12.9,7.0,10.8*39
1551969617832: $GPGSA,A,3,03,14,19,22,32,,,,,,,,12.9,7.0,10.8*39
1551969618832: $GPGSA,A,3,03,14,19,22,32,,,,,,,,12.9,7.0,10.8*39
1551969619832: $GPGSA,A,3,03,14,19,22,32,,,,,,,,12.9,7.0,10.8*39
1551969620828: $GPGSA,A,3,03,14,19,22,32,,,,,,,,12.9,7.0,10.8*39
1551969621833: $GPGSA,A,3,03,14,19,32,,,,,,,,,12.9,7.0,10.8*39
1551969622833: $GPGSA,A,3,03,14,19,32,,,,,,,,,14.1,7.3,12.1*3F
1551969623832: $GPGSA,A,3,03,14,19,32,,,,,,,,,14.1,7.3,12.1*3F
1551969624828: $GPGSA,A,3,03,14,19,32,,,,,,,,,14.1,7.3,12.1*3F

connected to: COM18
1551969628996: 2019-03-07 25.50┬░C
1551969628997: 16:40:27
1551969629139: 16:40:28
1551969630147: 16:40:29
1551969631147: 16:40:30
1551969632142: 16:40:31
1551969633138: 16:40:32
1551969634145: 16:40:33
1551969635145: 16:40:34
1551969636140: 16:40:35

connected to: COM6
1551969639858: 144039.8
1551969640829: $GPGSA,A,3,03,12,14,19,22,24,32,,,,,,2.5,1.3,2.1*3E
1551969641829: $GPGSA,A,3,03,12,14,19,22,24,32,,,,,,2.6,1.3,2.3*3F
1551969642829: $GPGSA,A,3,03,12,14,19,24,32,,,,,,,2.6,1.3,2.3*3F
1551969643830: $GPGSA,A,3,03,12,14,19,24,32,,,,,,,2.6,1.3,2.3*3F
1551969644838: $GPGSA,A,3,03,12,14,19,24,32,,,,,,,2.6,1.3,2.3*3F
1551969645830: $GPGSA,A,3,03,12,14,19,24,29,32,,,,,,1.8,1.0,1.5*3F
1551969646829: $GPGSA,A,3,03,12,14,19,24,29,32,,,,,,1.9,1.1,1.5*3F
1551969647834: $GPGSA,A,3,03,12,19,24,29,32,,,,,,,1.9,1.1,1.5*3A
1551969648828: $GPGSA,A,3,03,12,19,24,29,32,,,,,,,1.9,1.1,1.5*3A
1551969649828: $GPGSA,A,3,03,12,19,24,29,32,,,,,,,1.9,1.1,1.5*3A


Enligt data där GPS är med, så ser datorklockan tillräckligt tillförlitlig ut för hundradelar, förutsatt att internetsladden är kopplad, annars sticker den i väg minst ett par sekunder över en natt. Mer upplösnig än så är inte meningsfull just nu när Arduinon samplar klockam med ca 100 Hz.

RTC frekvensfel uträknat från hela tidsperioden med data: -2.89 ppm ( 1000000*(0.18-1.13)/(1551969632-1551640909) )
Börjar bli dags att snegla på kretsens Aging Offset register, som ska kunna kalibrera i steg motsvarande 0.1 ppm, men jag är rädd att det kan kosta större fel, om temperaturen blir långt från de ca 25°C där jag ligger nu. Ett annat sätt är att köra korrigeringar i mjukvara, men hur som helst speccade +/-2ppm borde jag ha fått kunna vänta mig.


Upp
 Profil  
 
InläggPostat: 00.04 2019-03-08 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Då ska vi se om klockan börjar gasa på litet mer än nödvändigt, när jag satte Ageing Offset till -32.

Utgångsläge, med nya inställningen:
connected to: COM6
1551999144898: 225224.8
1551999145848: $GPGSA,A,3,08,15,27,28,32,,,,,,,,3.5,2.0,2.9*3F
1551999146849: $GPGSA,A,3,08,15,27,28,32,,,,,,,,3.5,2.0,2.9*3F
1551999147849: $GPGSA,A,3,08,15,27,32,,,,,,,,,3.5,2.0,2.9*35
1551999148849: $GPGSA,A,3,08,15,27,32,,,,,,,,,11.1,6.5,9.0*01
1551999149849: $GPGSA,A,3,08,15,27,32,,,,,,,,,666.6,666.6,666.6*3A
1551999150847: $GPGSA,A,3,15,27,28,32,,,,,,,,,4.0,2.1,3.4*38
1551999151848: $GPGSA,A,3,15,27,28,32,,,,,,,,,4.0,2.1,3.4*38
1551999152843: $GPGSA,A,3,15,27,28,32,,,,,,,,,4.0,2.1,3.4*38
1551999153843: $GPGSA,A,3,15,27,28,32,,,,,,,,,4.0,2.1,3.4*38
1551999154844: $GPGSA,A,3,15,27,28,32,,,,,,,,,4.0,2.1,3.4*38

connected to: COM18
1551999161750: 2019-03-08 26.25┬░
1551999161753: C
1551999161754: 00:52:40
1551999161755: The Aging Offset is set as: -32
1551999162241: 00:52:41
1551999163236: 00:52:42
1551999164232: 00:52:43
1551999165231: 00:52:44
1551999166239: 00:52:45
1551999167234: 00:52:46

connected to: COM6
1551999171900: 225251.8
1551999172848: $GPGSA,A,3,15,20,27,32,,,,,,,,,3.3,2.3,2.3*30
1551999173847: $GPGSA,A,3,15,20,27,32,,,,,,,,,3.3,2.3,2.3*30
1551999174846: $GPGSA,A,3,15,20,27,32,,,,,,,,,3.3,2.3,2.3*30
1551999175847: $GPGSA,A,3,15,20,27,32,,,,,,,,,3.3,2.3,2.3*30
1551999176847: $GPGSA,A,3,15,20,27,32,,,,,,,,,3.3,2.3,2.3*30
1551999177847: $GPGSA,A,3,15,27,32,,,,,,,,,,666.6,666.6,666.6*32
1551999178848: $GPGSA,A,3,15,27,32,,,,,,,,,,666.6,666.6,666.6*32
1551999179847: $GPGSA,A,3,15,27,32,,,,,,,,,,666.6,666.6,666.6*32
1551999180845: $GPGSA,A,3,15,27,32,,,,,,,,,,666.6,666.6,666.6*32
1551999181847: $GPGSA,A,3,27,32,,,,,,,,,,,666.6,666.6,666.6*36


Följande dag:
connected to: COM6
1552041866399: 104426.3
1552041867380: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041868379: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041869387: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041870379: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041871397: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041872378: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041873381: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041874379: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041875378: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041876380: $GPGSA,A,1,,,,,,,,,,,,,,,*1E

connected to: COM18
1552041885063: 2019-03-08 25.50┬░C
1552041885063: 12:44:43
1552041885064: The Aging Off
1552041885066: set is set as: -32
1552041885242: 12:44:44
1552041886237: 12:44:45
1552041887232: 12:44:46
1552041888240: 12:44:4
1552041888244: 7
1552041889239: 12:44:48

connected to: COM6
1552041892396: 104451.3
1552041893385: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041894378: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041895379: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041896379: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041897378: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041898377: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041899377: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041900376: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041901377: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552041902377: $GPGSA,A,1,,,,,,,,,,,,,,,*1E


Då ska vi tro att den nu ligger på +0.72 ppm ( 1000 * ((1231 - (846.9-800)) - (1232 - (378.55-300))) / (1552041887 - 1551999165) )

...Nytt bud: +0.76 ppm ( 1000 * ((1231 - (846.9-800)) - (1143 - (324.11-300))) / (1552084807.143 - 1551999165) )
Från:
connected to: COM6
1552084786369: 223946.3
1552084787321: $GPGSA,A,3,11,20,27,32,,,,,,,,,2.7,1.5,2.2*35
1552084788326: $GPGSA,A,3,11,20,27,32,,,,,,,,,2.7,1.5,2.2*35
1552084789324: $GPGSA,A,3,11,20,27,32,,,,,,,,,2.7,1.5,2.2*35
1552084790323: $GPGSA,A,3,11,20,27,32,,,,,,,,,666.6,666.6,666.6*34
1552084791323: $GPGSA,A,3,11,20,27,32,,,,,,,,,666.6,666.6,666.6*34
1552084792322: $GPGSA,A,3,11,20,32,,,,,,,,,,666.6,666.6,666.6*31
1552084793323: $GPGSA,A,3,20,32,,,,,,,,,,,666.6,666.6,666.6*31
1552084794324: $GPGSA,A,3,20,32,,,,,,,,,,,666.6,666.6,666.6*31
1552084795322: $GPGSA,A,3,11,20,32,,,,,,,,,,666.6,666.6,666.6*31
1552084796326: $GPGSA,A,3,11,20,32,,,,,,,,,,666.6,666.6,666.6*31

connected to: COM18
1552084801827: 2019-03-09 24.75┬░C
1552084801828: 00:40:00
1552084801829: The Aging Offs
1552084801831: et is set as: -32
1552084802150: 00:40:01
1552084803145: 00:40:02
1552084804145: 00:40:03
1552084805152: 00:40:04
1552084806148: 00:40:05
1552084807143: 00:40:06
1552084808151: 00:40:07
1552084809151: 00:40:08
1552084810146: 00:40:09
1552084811154: 00:40:10
1552084812149: 00:40:11
1552084813149: 00:40:12
1552084814144: 00:40:13
1552084815152: 00:40:14
1552084816147: 00:40:15
1552084817146: 00:40:16

connected to: COM6
1552084821349: 224021.3
1552084822323: $GPGSA,A,3,08,11,15,28,32,,,,,,,,2.5,1.2,2.2*31
1552084823324: $GPGSA,A,3,08,11,15,28,32,,,,,,,,3.1,2.0,2.3*34
1552084824324: $GPGSA,A,3,08,11,15,28,32,,,,,,,,666.6,666.6,666.6*35
1552084825324: $GPGSA,A,3,08,11,28,32,,,,,,,,,666.6,666.6,666.6*31
1552084826329: $GPGSA,A,3,28,32,,,,,,,,,,,666.6,666.6,666.6*39
1552084827329: $GPGSA,A,3,28,32,,,,,,,,,,,666.6,666.6,666.6*39
1552084828323: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552084829323: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552084830326: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552084831348: $GPGSA,A,3,27,32,,,,,,,,,,,666.6,666.6,666.6*36


Upp
 Profil  
 
InläggPostat: 15.12 2019-03-09 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Med den här takten (+ 0.84 ppm*) tar det ca två veckor att nå ikapp rätt tid.
*) 1000 * ((1231 - (846.9-800)) - (1140 - (371.899-300))) / (1552137554.140 - 1551999165.231)

connected to: COM6
1552137535404: 131855.3
1552137536373: $GPGSA,A,3,12,15,17,25,32,,,,,,,,2.8,1.3,2.4*3B
1552137537373: $GPGSA,A,3,12,15,17,32,,,,,,,,,2.8,1.3,2.4*3C
1552137538372: $GPGSA,A,3,12,15,17,32,,,,,,,,,2.8,1.3,2.4*3C
1552137539373: $GPGSA,A,3,12,15,17,32,,,,,,,,,666.6,666.6,666.6*32
1552137540372: $GPGSA,A,3,12,15,17,24,32,,,,,,,,2.5,1.5,2.0*35
1552137541373: $GPGSA,A,3,15,17,24,32,,,,,,,,,666.6,666.6,666.6*37
1552137542369: $GPGSA,A,3,15,24,32,,,,,,,,,,666.6,666.6,666.6*31
1552137543368: $GPGSA,A,3,15,24,32,,,,,,,,,,666.6,666.6,666.6*31
1552137544373: $GPGSA,A,3,15,24,32,,,,,,,,,,666.6,666.6,666.6*31
1552137545373: $GPGSA,A,3,15,24,32,,,,,,,,,,666.6,666.6,666.6*31

connected to: COM18
1552137551138: 2019-03-09 22.00┬░C
1552137551139: 15:19:09
1552137551140: The Aging Offset is set
1552137551141: as: -32
1552137551149: 15:19:10
1552137552145: 15:19:11
1552137552149:
1552137553144: 15:19:12
1552137554140: 15:19:13
1552137555147: 15:19:14
1552137556142: 15:19:
1552137556146: 15
1552137557142: 15:19:16
1552137558150: 15:19:17
1552137559145: 15:19:18
1552137560140: 15:19:1
1552137560144: 9
1552137561148: 15:1
1552137561152: 9:20
1552137562147: 15:19:21

connected to: COM6
1552137565384: 131924.3
1552137566366: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552137567388: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552137568366: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552137569368: $GPGSA,A,3,15,17,,,,,,,,,,,666.6,666.6,666.6*30
1552137570366: $GPGSA,A,3,15,17,,,,,,,,,,,666.6,666.6,666.6*30
1552137571366: $GPGSA,A,3,15,17,,,,,,,,,,,666.6,666.6,666.6*30
1552137572369: $GPGSA,A,3,15,17,,,,,,,,,,,666.6,666.6,666.6*30
1552137573365: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552137574365: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
1552137575368: $GPGSA,A,1,,,,,,,,,,,,,,,*1E
Datorn har varit utan nät ett tag och är här på väg att mjukt söka sig till "nättid". Därav interpolation mellan GPS offseten före och efter samplet från RTC-modulen. För GPS tidstämplarna tar jag medelvärde (utan eventuella outliers, där datorn kanske varit upptagen med nåt annat). För samplen från RTCn tar jag helt enkelt den minsta offseten jag hittar. Den är ofta en hundradels sekund mindre än den största. Det stämmer bra överens med att den inte samplas oftare än så. Med den minsta offseten har Arduinon råkat sampla precis strax efter att sekunden stegat fram. Motsvarande maximalt lång offset blir det när föregående sampling sker strax före omslag och Arduinon tar 10 ms kaffepaus innan den gör nästa försök.

Kanske snart dags att löda en tråd från DS3231:s SQW-utgång, som alltså inte finns på break out kontakten på den modul jag nu har.


Upp
 Profil  
 
InläggPostat: 18.06 2019-03-09 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Nu ha ja en löödi bygel ti SQW. (SV: Nu har jag lött en bygel till SQW.)
Bilaga:
bygel.jpg

Det fanns en NC i break out kontakten, som nu blev ~INT/SQW.


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 21.47 2019-03-10 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Gick över till en linuxmaskin, nu när jag fått igång interrupt från RTCn på Arduinon. Arduinos serial monitor har tidsstämplar i ms, men jag kör på med pythonscriptet, som jag nu modifierat till python 3.
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
  1. import serial
  2. import time
  3. import datetime
  4.    
  5. ser = serial.Serial(
  6.     port='/dev/ttyACM4',\
  7.     baudrate=230400,\
  8.     parity=serial.PARITY_NONE,\
  9.     stopbits=serial.STOPBITS_ONE,\
  10.     bytesize=serial.EIGHTBITS,\
  11.         timeout=0)
  12.    
  13. print("connected to: " + ser.portstr)
  14.    
  15. size = 100
  16. while (size > 0):
  17.     line = ser.readline().decode('utf-8')
  18.     if(line!=""):
  19.         timestamp = str(time.time())
  20.         print(timestamp + ": " + line, end ="")
  21.         size -= 1
  22.    
  23. ser.close()


Arduinokoden ser för tillfället ut såhär:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
  1. // Include the libraries
  2. #include <RtcDS3231.h>
  3. //Open the Library Manager and search for "Rtc by Makuna" and install
  4.  
  5. #include <Wire.h>
  6.  
  7. // Create new RTC module
  8. RtcDS3231<TwoWire> Rtc(Wire);
  9.  
  10. const byte OFFSET = -32;
  11. const uint8_t INT_SECOND_TICK_PIN = 2; //2 or 3 on Uno. (Must have pin change interrupt.)
  12.  
  13. // Create variables for time
  14. byte hours;
  15. byte minutes;
  16. byte seconds;
  17. byte old;
  18. byte oldM;
  19. uint16_t year;
  20. byte month;
  21. byte day;
  22.  
  23. volatile int32_t _rtcTotalSecondsSince2000 = 0;
  24. volatile boolean _newSecond = false;
  25.  
  26. void secondInterupt() {
  27.   _rtcTotalSecondsSince2000++;
  28.   _newSecond = true;
  29.   digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  30. }
  31.  
  32. void setup() {
  33.   // put your setup code here, to run once:
  34.   //Serial.begin(115200);
  35.   pinMode(LED_BUILTIN, OUTPUT);
  36.   Serial.begin(230400);
  37.   //Serial.begin(2000000);
  38.   Rtc.Begin();
  39.  
  40.   // Set up 1Hz square wave
  41.   //Rtc.writeSqwPinMode(DS3231_SquareWave1Hz);
  42.   Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeClock);
  43.   Rtc.SetSquareWavePinClockFrequency(DS3231SquareWaveClock_1Hz);
  44.  
  45.   // Attach the interrupt and use the internal pull up
  46.   attachInterrupt(digitalPinToInterrupt(INT_SECOND_TICK_PIN), secondInterupt, FALLING);
  47.   digitalWrite(INT_SECOND_TICK_PIN, HIGH);
  48.  
  49.   // Update RTC module time to compilation time
  50.   RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
  51.   //compiled += 7;  //transfer time W7
  52.   compiled += 9;  //transfer time U18
  53.   //Already set, comment this out:
  54.   //Rtc.SetDateTime(compiled);
  55.   //re set 2019-03-10 ~11 EET
  56.   //set 2019-03-03 ~15 EET
  57.  
  58.   //Trying out Ageing Offset
  59.   //Rtc.SetAgingOffset(OFFSET);
  60.   //Set as -32 on 2019-03-08 00:20 EET
  61.  
  62.   old = 0;
  63.   oldM = 0;
  64. }
  65.  
  66. void loop() {
  67.   // put your main code here, to run repeatedly:
  68.   /*
  69.   delay(10);
  70.   updateTime();
  71.   if(minutes != oldM){
  72.     printDate();
  73.   }
  74.   else if(seconds != old){
  75.     printTime();
  76.   }
  77.   */
  78.   if(_newSecond) {
  79.     Serial.println("*");
  80.     _newSecond = false;
  81.     //delay(100);
  82.  
  83.     if(_rtcTotalSecondsSince2000 < 1000) {  
  84.       //_rtcTotalSecondsSince2000 = Rtc.now().secondstime();
  85.       _rtcTotalSecondsSince2000 = Rtc.GetDateTime();
  86.       //.GetDateTime()
  87.     }
  88.    
  89.     // Display the  time
  90.     /*    
  91.     int32_t dayTotalSecondsNow = _rtcTotalSecondsSince2000;
  92.     uint8_t hour = dayTotalSecondsNow / 3600 % 24;
  93.     uint8_t minute = dayTotalSecondsNow / 60 % 60;
  94.     uint8_t second = dayTotalSecondsNow % 60;
  95.  
  96.     Serial.print(hour);
  97.     Serial.print(":");
  98.     Serial.print(minute);
  99.     Serial.print(":");
  100.     Serial.println(second);
  101.     */
  102.     updateTime(_rtcTotalSecondsSince2000);
  103.     printTime();
  104.   }
  105. }
  106.  
  107. void updateTime(RtcDateTime now) {
  108.    //RtcDateTime now = Rtc.GetDateTime();
  109.    hours = now.Hour();
  110.    minutes = now.Minute();
  111.    seconds = now.Second();
  112.    year = now.Year();
  113.    month = now.Month();
  114.    day = now.Day();
  115. }
  116.  
  117. #define countof(a) (sizeof(a) / sizeof(a[0]))
  118.  
  119. void printTime(){
  120.     char timestring[9];
  121.     snprintf_P(timestring,
  122.             countof(timestring),
  123.             PSTR("%02u:%02u:%02u"),
  124.             hours,
  125.             minutes,
  126.             seconds );
  127.     Serial.println(timestring);
  128.     //old = seconds;
  129. }
  130.  
  131. void printDate(){
  132.     oldM = minutes;
  133.     char datestring[12];
  134.     snprintf_P(datestring,
  135.             countof(datestring),
  136.             PSTR("%04u-%02u-%02u "),
  137.             year,
  138.             month,
  139.             day );
  140.     Serial.print(datestring);
  141.     printTemperature();
  142.     printTime();
  143.     printAgingOffset();
  144. }
  145.  
  146. void printTemperature(){
  147.     RtcTemperature temp = Rtc.GetTemperature();
  148.     Serial.print(temp.AsFloatDegC());
  149.     Serial.println("°C");
  150. }
  151.  
  152. void printAgingOffset(){
  153.   int8_t ao = Rtc.GetAgingOffset();
  154.   Serial.print("The Ageing Offset is set as: ");
  155.   Serial.println(0+ao);
  156. }

Nån gång under/efter lödarbetet hade klockan nollats, så jag har fått ställa den i tid igen. Ageing Offset inställninged höll sig kvar på innställda -32 och där är den än, så klockan går litet för fort. Men hur mycket? ...det får tiden utvisa! :mrgreen: :mrgreen: :mrgreen:

Testdata i ny tappning, med en viss regelbunden osäkerhet på ett par ms, som kanske kan skyllas på Arduinofirmwaren eller datorns OS(?)
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
rvl@EB56:~/kod/py/egi$ ntptime
ntp_gettime() returns code 0 (OK)
  time e02fedae.66dedaec  Sun, Mar 10 2019 22:10:22.401, (.401838604),
  maximum error 264720 us, estimated error 425 us, TAI offset 37
ntp_adjtime() returns code 0 (OK)
  modes 0x0 (),
  offset 577.661 us, frequency 22.766 ppm, interval 1 s,
  maximum error 264720 us, estimated error 425 us,
  status 0x2001 (PLL,NANO),
  time constant 10, precision 0.001 us, tolerance 500 ppm,
rvl@EB56:~/kod/py/egi$ python3 sertest.py
connected to: /dev/ttyACM4
1552248627.853289: *
1552248627.85345: 22:10:28
1552248628.8528016: *
1552248628.8529553: 22:10:29
1552248629.8522816: *
1552248629.8524394: 22:10:30
1552248630.8516521: *
1552248630.851781: 22:10:31
1552248631.8511636: *
1552248631.8512971: 22:10:32
1552248632.8506377: *
1552248632.850785: 22:10:33
1552248633.850095: *
1552248633.8502288: 22:10:341552248633.854115:
1552248634.8495314: *
1552248634.8537061: 22:10:35
1552248635.853119: *
1552248635.853247: 22:10:36
1552248636.8525844: *
1552248636.8527138: 22:10:37
1552248637.8520672: *
1552248637.8521938: 22:10:38
1552248638.851573: *
1552248638.8517141: 22:10:39
1552248639.851043: *
1552248639.8511899: 22:10:40
1552248640.8505352: *
1552248640.8506837: 22:10:41
1552248641.8499706: *
1552248641.8500912: 22:10:1552248641.8540194: 42
1552248642.849398: *
1552248642.8535764: 22:10:43
1552248643.8530092: *
1552248643.8531356: 22:10:44
1552248644.8525133: *
1552248644.8526568: 22:10:45
1552248645.8519795: *
1552248645.8521237: 22:10:46
1552248646.8514516: *
1552248646.8515935: 22:10:47
1552248647.8509202: *
1552248647.8510642: 22:10:48
1552248648.850401: *
1552248648.8505435: 22:10:49
1552248649.8498106: *
1552248649.8498867: 22:1552248649.8539279: 10:50
1552248650.8534071: *
1552248650.853528: 22:10:51
1552248651.8529136: *
1552248651.853062: 22:10:52
1552248652.852369: *
1552248652.8524969: 22:10:53
1552248653.851837: *
1552248653.851965: 22:10:54
1552248654.8513167: *
1552248654.851445: 22:10:55
1552248655.8507917: *
1552248655.8509183: 22:10:56
1552248656.8502772: *
1552248656.850421: 22:10:57
1552248657.8497026: *
1552248657.8497627: 21552248657.8538618: 2:10:58
1552248658.8533037: *
1552248658.8534431: 22:10:59
1552248659.8527749: *
1552248659.8529022: 22:11:00
1552248660.852247: *
1552248660.8523746: 22:11:01
1552248661.8517342: *
1552248661.8518617: 22:11:02
1552248662.8511906: *
1552248662.8513184: 22:11:03
1552248663.8506732: *
1552248663.8508003: 22:11:04
1552248664.850169: *
1552248664.8503141: 22:11:05
1552248665.8495774: *
1552248665.853764: 22:11:06
1552248666.8532388: *
1552248666.8533676: 22:11:07
1552248667.8526905: *
1552248667.8528352: 22:11:08
1552248668.8522263: *
1552248668.85237: 22:11:09
1552248669.8516252: *
1552248669.8517663: 22:11:10
1552248670.8511865: *
1552248670.8513358: 22:11:11
1552248671.8505766: *
1552248671.8507183: 22:11:12
1552248672.8500473: *
1552248672.8501844: 22:11:131552248672.8541803:
1552248673.849458: *
1552248673.8536575: 22:11:14
rvl@EB56:~/kod/py/egi$ ntptime
ntp_gettime() returns code 0 (OK)
  time e02fede4.3052f7f4  Sun, Mar 10 2019 22:11:16.188, (.188766842),
  maximum error 291720 us, estimated error 425 us, TAI offset 37
ntp_adjtime() returns code 0 (OK)
  modes 0x0 (),
  offset 570.095 us, frequency 22.766 ppm, interval 1 s,
  maximum error 291720 us, estimated error 425 us,
  status 0x2001 (PLL,NANO),
  time constant 10, precision 0.001 us, tolerance 500 ppm,

851.429 ± 2.0 ms (Min: 849.398 Max: 853.4071) låg asteriskradernas tiddstämplar på där, utan hänsyn till datorn tidsoffset som var 578..570 µs enligt ntptime.


Upp
 Profil  
 
InläggPostat: 23.11 2019-03-10 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Som sagt regelbunden:
Bilaga:
regelbunden.png


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 19.21 2019-03-11 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
En klocka ska väl ha en "display" också! Kanske såhär?
https://youtu.be/KokWIfygoMs


Upp
 Profil  
 
InläggPostat: 23.02 2019-03-11 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Nu blev det + 1.2475 ppm (849398 - 737067.7)/(1552338686.7370677 - 1552248642.849398) utan att orka beakta datorns offset, som åtminstone idag var obetylig jämfört med sågtandsavvikelsen, där jag valde minsta värde.

Ska skruva upp Ageing Offsetten tillbaka mot noll nu och se hur det går.

Utdrag ur kvällens data:
rvl@EB56:~/kod/py/egi$ ntptime
ntp_gettime() returns code 0 (OK)
time e0314d2b.f6f6a50c Mon, Mar 11 2019 23:10:03.964, (.964701972),
maximum error 169433 us, estimated error 452 us, TAI offset 37
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset 95.070 us, frequency 22.727 ppm, interval 1 s,
maximum error 169433 us, estimated error 452 us,
status 0x2001 (PLL,NANO),
time constant 7, precision 0.001 us, tolerance 500 ppm,

...
1552338678.737196: *
1552338678.7413683: 23:11:19
1552338679.7408328: *
1552338679.7409573: 23:11:20
1552338680.740308: *
1552338680.7404335: 23:11:21
1552338681.7397819: *
1552338681.7399077: 23:11:22
1552338682.7392573: *
1552338682.7393832: 23:11:23
1552338683.7387326: *
1552338683.7388577: 23:11:24
1552338684.7382228: *
1552338684.7383628: 23:11:25
1552338685.7376604: *
1552338685.7377274: 231552338685.7417574: :11:26
1552338686.7370677: *1552338686.7412124:
1552338686.7413354: 23:11:27
1552338687.740713: *
1552338687.7408383: 23:11:28
1552338688.7402194: *
1552338688.7403593: 23:11:29
1552338689.7396657: *
...
rvl@EB56:~/kod/py/egi$ ntptime
ntp_gettime() returns code 0 (OK)
time e0314d9d.74343b70 Mon, Mar 11 2019 23:11:57.453, (.453922738),
maximum error 226433 us, estimated error 452 us, TAI offset 37
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset 76.076 us, frequency 22.727 ppm, interval 1 s,
maximum error 226433 us, estimated error 452 us,
status 0x2001 (PLL,NANO),
time constant 7, precision 0.001 us, tolerance 500 ppm,


Upp
 Profil  
 
InläggPostat: 21.54 2019-03-13 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Ageing 0ffset nu innställd till -21, som torde vara optimalt för min modul och temperatur. Efter ca 11 h med den inställningen har mina tidsstämplar vandrat en dryg millisekund. Motsvarar - 0.0266 ppm, eller dvs -27 ppb (utrikiska biljoner), som blir rätt nära en sekund per år, OM modulen och temperaturen är stabila.

En hel del osäkerhet i att mäta absoluta submillisekunder, med min nuvarande setup, så mätintervallet är fortfarande för kort för att ens definitivt uttala sig om frekvensfelets förtecken (de första timmarna verkade det gå åt andra hållet).


Upp
 Profil  
 
InläggPostat: 07.26 2019-03-14 

Blev medlem: 13.42 2011-08-15
Inlägg: 162
Roligt och spännande - tid är statistik. :)

Nästa steg är väl då nu att lägga till en super-exakt temperatursensor och dynamiskt korrigera offset baserat på uppmätt temperatur?


Upp
 Profil  
 
InläggPostat: 17.38 2019-03-14 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Ser man på. Första avbrottet i min monolog. 8) Kul. Nja, olika temperaturer börjar jag inte med än, även om modulen har sin egen temperatursensor. Inte kanske "precicions-sådan", men med bra termisk koppling till där temperaturen är av intresse. Och egentligen gör modulen redan allt det där, men inte ens med utlovad noggrannhet - inte min modul i alla fall - för att inte ens tala om de noggrannheter jag nu har med akttuell temperatur.

Har automatiserat mitt kalibreringshjälpscript:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
  1. import serial
  2. import time
  3. import datetime
  4. import subprocess
  5. import sys
  6.    
  7. def getOffset():
  8.     output = subprocess.check_output('ntptime|grep \ \ offset', shell=True)
  9.     print(output.decode("utf-8"))
  10.     output = output.split(b' ')
  11.     offs = (output[3].decode("utf-8"))
  12.     pntp = float((output[6].decode("utf-8")))
  13.     toff = float(offs)/1000000.0
  14.     return(toff,pntp)
  15.  
  16. SAMPLETRIES = 100
  17. SLEEPTIME = 30
  18.  
  19. t0 = time.time()
  20. o0,p0 = getOffset()
  21.  
  22. time.sleep(SLEEPTIME)
  23.  
  24. t1 = time.time()
  25. o1,p1 = getOffset()
  26.  
  27. ser = serial.Serial(
  28.     port='/dev/ttyACM0',\
  29.     baudrate=230400,\
  30.     parity=serial.PARITY_NONE,\
  31.     stopbits=serial.STOPBITS_ONE,\
  32.     bytesize=serial.EIGHTBITS,\
  33.         timeout=0)
  34.    
  35. print("connected to: " + ser.portstr)
  36.    
  37. size = SAMPLETRIES
  38. timestamps = []
  39. tsf = []
  40. while (size > 0):
  41.     line = ser.readline().decode('utf-8')
  42.     if(line!=""):
  43.         ts = time.time()
  44.         print(ts, ": " + line, end ="")
  45.         if '*' in line:
  46.             size -= 1
  47.             timestamps.append(ts)
  48.             tsf.append(ts%1)
  49.    
  50. ser.close()
  51.  
  52. t2 = time.time()
  53. o2,p2 = getOffset()
  54.  
  55. time.sleep(SLEEPTIME)
  56.  
  57. t3 = time.time()
  58. o3,p3 = getOffset()
  59.  
  60. raw = timestamps[tsf.index(min(tsf))]
  61. print('raw:')
  62. print(raw)
  63. '''
  64. print(t0,t1,t2,t3)
  65. print(o0,o1,o2,o3)
  66. print(p0,p1,p2,p3)
  67. '''
  68. if(p1==p2):
  69.     print('interpolating')
  70.     tsample = raw + o1 + (raw-t1)/(t2-t1)*(o2-o1)
  71.  
  72. elif(p2==p3):
  73.     print('extrapolating')
  74.     tsample = raw + o2 + (raw-t2)/(t3-t2)*(o3-o2)
  75.  
  76. elif(p1==p2):
  77.     print('extrapolating2')
  78.     tsample = raw + o0 + (raw-t0)/(t1-t0)*(o1-o0)
  79.  
  80. else:
  81.     print('else')
  82.     tsample = raw + (o0+o1+o2+o3)/4
  83. print(tsample)
  84.  
  85.  
  86. def s2ppm(t1, t2):
  87.     ppm = 1000000. * (t1%1-t2%1) / (t2-t1)
  88.     return ppm
  89.  
  90. if len(sys.argv)>1:
  91.     for i in range(1,len(sys.argv)):
  92.         ts_ref = float(sys.argv[i])
  93.         print(s2ppm(ts_ref,tsample), 'ppm (',datetime.datetime.fromtimestamp(ts_ref).strftime('%Y-%m-%d %H:%M:%S'),')')
  94.  

Koden har kända brister, då jag t.ex. ännu inte behövt bekymra mig om att sampel kan komma på både före och efter helsekund.

Exempeloutput, med Ageing Offset -21:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
...
1552578699.7788537 : 17:51:40
1552578700.7781558 : *
1552578700.7782788 : 17:51:41
1552578701.7776508 : *
1552578701.7777889 : 17:51:42
1552578702.776998 : *
1552578702.7770765 : 17:1552578702.7811046 : 51:43
1552578703.7764342 : *1552578703.780635 :
1552578703.7807496 : 17:51:44
1552578704.780148 : *
1552578704.7802725 : 17:51:45
1552578705.7796392 : *
1552578705.7797625 : 17:51:46
1552578706.7790623 : *
1552578706.779179 : 17:51:47
1552578707.778521 : *
1552578707.7786384 : 17:51:48
1552578708.7779927 : *
1552578708.7781105 : 17:51:49
1552578709.7774553 : *
1552578709.777609 : 17:51:50
1552578710.7768772 : *
1552578710.7810528 : 17:51:51
1552578711.7804687 : *
1552578711.7805789 : 17:51:52
1552578712.7799757 : *
  offset -421.499 us, frequency 22.819 ppm, interval 1 s,

  offset -418.422 us, frequency 22.819 ppm, interval 1 s,

raw:
1552578703.7764342
interpolating
1552578703.7760117
-0.028885766492609936 ppm ( 2019-03-13 11:25:58 )
-0.028539486322882897 ppm ( 2019-03-13 22:12:08 )
-0.06085233286533193 ppm ( 2019-03-14 11:03:16 )
0.5452317252919902 ppm ( 2019-03-14 17:22:47 )


Sista referensen där helt tydligt alldeles för nära, med onogrannhetem i datorns ntp-synkronisering med yttervärden. Kanske jag borde sätta upp en egen stratum-1 NTP-server med GPS-referens. ...eller kanske hellre köra bare metal med PPS signal från GPS:n istället för omvägar via datorer.


Upp
 Profil  
 
InläggPostat: 08.48 2019-03-15 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1829
Ort: Helsingfors
Nu håller jag på att ställa tiden rätt genom att köra med minsta tillgängliga frekvens. Det borde ta ca tre timmar att "flytta tiden" de 0,2 s som den var var före sin tid.

Såhär går det med Ageing Offset 127:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
...
1552635419.8061888 : *
1552635419.8062787 : 09:371552635419.8106258 : :00
1552635419.8108048 : 2019-03-15 25.50°C
1552635419.8110638 : The Ageing Offset is set as: 127
1552635420.809746 :  *
1552635420.8098664 : 09:37:01
1552635421.8092697 : *
  offset -990.674 us, frequency 22.939 ppm, interval 1 s,

  offset -989.949 us, frequency 22.939 ppm, interval 1 s,

raw:
1552635405.805307 @ 2019-03-15 09:36:45
interpolating
1552635405.8043125
-17.42905691448558 ppm ( 2019-03-15 09:15:17 )
-17.479793609010446 ppm ( 2019-03-15 09:18:33 )
-17.39436081826314 ppm ( 2019-03-15 09:20:41 )
-17.783793090615617 ppm ( 2019-03-15 09:23:04 )
-17.911971635993904 ppm ( 2019-03-15 09:26:20 )
-17.669247372215736 ppm ( 2019-03-15 09:27:20 )
-17.633169374185233 ppm ( 2019-03-15 09:29:13 )
-17.780928539936834 ppm ( 2019-03-15 09:30:36 )


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 29 inlägg ]  Gå till sida 1, 2  Nästa

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Anahka1975, Mickecarlsson, ojjan och 4 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010