Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

arduino и DS3231 Установка точного времени

Пн апр 03, 2023 21:15:55

Устанавливаю время в DS3231 таким вот образом:

Код:
#include <Arduino.h>
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup ()
{
  Serial.begin(9600);
  delay(3000); // ждать открытия консоли

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
   
   // Закомментируйте ниже строки, как только вы установите дату и время
    // Следующая строка устанавливает RTC на дату и время компилирования этого скетча
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
   
   
  }
}

void loop ()
{
    //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

    DateTime now = rtc.now();

    Serial.println("Current Date & Time: ");
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
}


Сравниваю время, которое выводится на Serial монитор с временем на компьютере - разница в лучшем случае 30 сек. На таймере на 30 сек меньше. Почему так? И как тогда выставить время секунда в секунду?
Последний раз редактировалось planus Пн апр 03, 2023 21:55:03, всего редактировалось 2 раз(а).

Re: arduino и DS3231

Пн апр 03, 2023 21:23:06

выставляется время компиляции, но на прошивку и перезапуск микроконтроллера тоже уходит время, отсюда и отставание.

Re: arduino и DS3231

Пн апр 03, 2023 21:34:18

выставляется время компиляции, но на прошивку и перезапуск микроконтроллера тоже уходит время, отсюда и отставание.


Я в общем-то подозревал это, но есть ли способ установить точное время? Иначе какой смысл в этой суперточной микросхеме?

Добавлено after 6 minutes 39 seconds:
Первое, что приходит в голову, это прописать в скетче время руками, которое наступит, к примеру через две минуты, запрограммировать это все на нажатие кнопки, запустить скетч, дождаться указанного времени и нажать на кнопку. Как обычные часы, короче. Но может есть более продвинутый метод?

Re: arduino и DS3231

Пн апр 03, 2023 21:36:07

А какие варианты? На ваш взгляд?
Ну и для начала не мешало бы код научиться вставлять как надо. не?
Ну и при чём здесь точность ко времени установки?

Re: arduino и DS3231

Пн апр 03, 2023 21:39:28

А какие варианты? На ваш взгляд?
Ну и для начала не мешало бы код научиться вставлять как надо. не?


Спасибо, про код. Я тут редко бываю, но теперь буду знать))

Вот нашел вариант:

https://doma35.ru/computers/ds3231-usta ... ompyutera/

буду пробовать

Re: arduino и DS3231 Установка точного времени

Пн апр 10, 2023 01:16:21

Микросхема RTC это не какаято высокоточная схема, это необходимость, без ней даже с плохой точностью не сделать.
Если это китайская микросхема, то там нет такой точности, хорошо что она вообще работает.
Часы на МК не могут быть точными даже с кварцем, который кстати больше потребляет и требует мощный высоковольтный источник.
В процессе работы код может быть занят чемто другим и програмные часы будут уплывать, и это не говоря о прерываниях которые некоторые впихивают.
Счётчики времени тоже не бесконечные, и ещё и кривые. В итоге если код не оптимизировать под проц, то он или встанет или будет брехать и в добавок будет много жрать.
Куча ненужных проблем с которыми даже никто не борется, а просто ставят микросхему с батарейкой.

Я не нашёл никаких автономных способов установки времени в схемах с часами.

Видимо это отдельный код обработки кнопок про который не пишут, додумывай сам.
И это зависит как от индикаторов так и от управления, может там энкодер быть со своим кодом или джостик.

Но всё что я видел это как раз синхронизация по uart с компа по проводу. Сложно неудобно, но видимо всем лень приделывать кнопки.

Есть ещё один вариант синхронизация по GPS модулю, но это поднимет цену

Re: arduino и DS3231 Установка точного времени

Пн апр 10, 2023 10:59:55

Во все времена вполне хватало нажима кнопы по сигналу точного времени.
Режим кнопки "исполнение по нажатию", а запись всего лишь 0 в счетчик секунд RTC.
Далее уже можно читать содержимое из RTC учитывай время обмена.
Максимум +/- секунду расхождение будет.
8)

Re: arduino и DS3231 Установка точного времени

Ср май 03, 2023 16:04:30

А никто не знает как прописать DS3234 вместо DS3231?

Re: arduino и DS3231 Установка точного времени

Ср май 03, 2023 21:56:30

https://github.com/search?q=DS3234
может почитать и получится?
Ответить