RTC 역량 조사

17092 단어 RTCM5stack

RTC인 DS1307의 역량 조사


추월전자가 실시간 클록 모듈의 실력을 얻을 수 있는지 조사하다.시간을 설정한 뒤 81일 후의 인터넷 시간과의 차이를 조사했다.
(원래는 100일 후가 될 예정이었으나 실수로 울다가 81일 만에 끝났다.)

컨디션


Arduino IDE에서 M5 Stack을 활용하십시오.이 모듈은 Grove 커넥터를 사용하므로 동일한 커넥터가 있는 M5 Stack을 선택합니다.

소스 코드


기본적으로 여기.의 원본 코드를 직접 사용합니다.

시간 설정

#include <Wire.h>
#include "DS1307.h"

DS1307 clk;//define a object of DS1307 class
void setup() {
    Serial.begin(9600);
    clk.begin();
    Serial.println("Waiting new line ...");
}

int done = 0;
void loop() {
    while (!done) {
      if (Serial.available()) {
        clk.fillByYMD(2021, 5, 31);
        clk.fillByHMS(18, 52, 00);
        clk.fillDayOfWeek(MON);
        clk.setTime();//write time to the RTC chip
        (void)Serial.readStringUntil('\n'); 
        done = 1;       
      }
      delay(1);
    }

    printTime();
}
/*Function: Display time on the serial monitor*/
void printTime() {
    clk.getTime();
    Serial.print(clk.hour, DEC);
    Serial.print(":");
    Serial.print(clk.minute, DEC);
    Serial.print(":");
    Serial.print(clk.second, DEC);
    Serial.print("  ");
    Serial.print(clk.month, DEC);
    Serial.print("/");
    Serial.print(clk.dayOfMonth, DEC);
    Serial.print("/");
    Serial.print(clk.year + 2000, DEC);
    Serial.print(" ");
    //Serial.print(clk.dayOfMonth);
    //Serial.print("*");
    switch (clk.dayOfWeek) { // Friendly printout the weekday
        case MON:
            Serial.print("MON");
            break;
        case TUE:
            Serial.print("TUE");
            break;
        case WED:
            Serial.print("WED");
            break;
        case THU:
            Serial.print("THU");
            break;
        case FRI:
            Serial.print("FRI");
            break;
        case SAT:
            Serial.print("SAT");
            break;
        case SUN:
            Serial.print("SUN");
            break;
    }
    Serial.println(" ");
    delay(3000);
}
시퀀스에서 무언가를 입력할 때는'2021년 5월 31일 18시 52분'으로 설정한다.

표시 시간

#include <Wire.h>
#include "DS1307.h"

DS1307 clk;//define a object of DS1307 class
void setup() {
    Serial.begin(9600);
    clk.begin();
}
void loop() {
    printTime();
}
/*Function: Display time on the serial monitor*/
void printTime() {
    clk.getTime();
    Serial.print(clk.hour, DEC);
    Serial.print(":");
    Serial.print(clk.minute, DEC);
    Serial.print(":");
    Serial.print(clk.second, DEC);
    Serial.print("  ");
    Serial.print(clk.month, DEC);
    Serial.print("/");
    Serial.print(clk.dayOfMonth, DEC);
    Serial.print("/");
    Serial.print(clk.year + 2000, DEC);
    Serial.print(" ");
    //Serial.print(clk.dayOfMonth);
    //Serial.print("*");
    switch (clk.dayOfWeek) { // Friendly printout the weekday
        case MON:
            Serial.print("MON");
            break;
        case TUE:
            Serial.print("TUE");
            break;
        case WED:
            Serial.print("WED");
            break;
        case THU:
            Serial.print("THU");
            break;
        case FRI:
            Serial.print("FRI");
            break;
        case SAT:
            Serial.print("SAT");
            break;
        case SUN:
            Serial.print("SUN");
            break;
    }
    Serial.println(" ");
    delay(1000);
}

자명하다.

결실


인터넷 시시각각 이용이쪽 정보.예를 들어 10일 후의 결과는 다음과 같다.

열흘 뒤 인터넷 시간과는 6초가량 차이가 났다.81일 후의 결과는 다음과 같다.
일수
10
20
30
40
50
60
70
81
차(초)
6
10
16
22
27
33
38
43
최초 목적의 100일 이후에는 1분가량의 편차(차)가 생길 것으로 추정된다.이 RTC는 정밀도가 그렇게 좋다고 말할 수 없다.다만, 보유 아이폰6가 기내 모드에서 상당한 일수를 뒀을 때(말하자면 한 달도 지나지 않았음) 1분 이상 편차가 있었다.결국 RTC의 실력은 이 정도일지도 모른다.
보통 인터넷과 GPS에서 정확한 시간을 얻기 때문에 RTC의 의미 자체가 미묘하다.

좋은 웹페이지 즐겨찾기