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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
planus
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср фев 17, 2016 21:17:36
Откуда: Москва

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

Сообщение planus »

Устанавливаю время в 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 раза.
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: arduino и DS3231

Сообщение JackSmith »

выставляется время компиляции, но на прошивку и перезапуск микроконтроллера тоже уходит время, отсюда и отставание.
planus
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср фев 17, 2016 21:17:36
Откуда: Москва

Re: arduino и DS3231

Сообщение planus »

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


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

Добавлено after 6 minutes 39 seconds:
Первое, что приходит в голову, это прописать в скетче время руками, которое наступит, к примеру через две минуты, запрограммировать это все на нажатие кнопки, запустить скетч, дождаться указанного времени и нажать на кнопку. Как обычные часы, короче. Но может есть более продвинутый метод?
OKF
Это не хвост, это антенна
Сообщения: 1382
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: arduino и DS3231

Сообщение OKF »

А какие варианты? На ваш взгляд?
Ну и для начала не мешало бы код научиться вставлять как надо. не?
Ну и при чём здесь точность ко времени установки?
planus
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср фев 17, 2016 21:17:36
Откуда: Москва

Re: arduino и DS3231

Сообщение planus »

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


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

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

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

буду пробовать
74LS00
Друг Кота
Сообщения: 7651
Зарегистрирован: Вс июл 24, 2011 11:38:09
Контактная информация:

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

Сообщение 74LS00 »

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

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

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

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

Есть ещё один вариант синхронизация по GPS модулю, но это поднимет цену
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15540
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Во все времена вполне хватало нажима кнопы по сигналу точного времени.
Режим кнопки "исполнение по нажатию", а запись всего лишь 0 в счетчик секунд RTC.
Далее уже можно читать содержимое из RTC учитывай время обмена.
Максимум +/- секунду расхождение будет.
8)
Makar
Прорезались зубы
Сообщения: 233
Зарегистрирован: Чт дек 03, 2009 22:26:45

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

Сообщение Makar »

А никто не знает как прописать DS3234 вместо DS3231?
Аватара пользователя
Energizer-A
Вымогатель припоя
Сообщения: 617
Зарегистрирован: Вт мар 03, 2015 20:13:46
Откуда: рядом с "не резиновой" живу в деревне

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

Сообщение Energizer-A »

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

Вернуться в «Arduino»