DS3231 не может вести учет времени

поэтому я купил часы DS3231, которые использую в этой знаменитой библиотеке .

// DS3231_Serial_Easy
// Copyright (C)2015 Rinky-Dink Electronics, Хеннинг Карлсен. Все права защищены
// web: http://www.RinkyDinkElectronics.com/
//
// Быстрая демонстрация того, как использовать мою DS3231-библиотеку для 
// быстрая отправка информации о времени и дате по последовательному каналу связи
//
// Для использования аппаратного интерфейса I2C (TWI) Arduino необходимо подключить
// выводы следующим образом:
//
// Arduino Uno/2009:
// ----------------------
// DS3231: вывод SDA - > Arduino Analog 4 или выделенный вывод SDA
// SCL pin -> Arduino Analog 5 или выделенный SCL pin
//
// Arduino Leonardo:
// ----------------------
// DS3231: вывод SDA - > Arduino Digital 2 или специальный вывод SDA
// SCL pin -> Arduino Digital 3 или выделенный SCL pin
//
// Arduino Mega:
// ----------------------
// DS3231: вывод SDA - > Arduino Digital 20 (SDA) или специальный вывод SDA
// SCL pin -> Arduino Digital 21 (SCL) или выделенный SCL pin
//
// Arduino Due:
// ----------------------
// DS3231: SDA pin -> Arduino Digital 20 (SDA) или выделенный SDA1 (Digital 70) pin

#include <DS3231.h>

// Инициализация DS3231 с помощью аппаратного интерфейса
DS3231  rtc(SDA, SCL);

void setup()
{
  // Настройка последовательного подключения
  Serial.begin(9600);
  // Раскомментируйте следующую строку, если вы используете Arduino Leonardo
  //while (!Serial) {}

  // Инициализировать объект rtc
  rtc.begin();

  // Следующие строки могут быть раскомментированы для установки даты и времени
  //rtc.setDOW(СРЕДА); // Установить День недели на ВОСКРЕСЕНЬЕ
  //rtc.setTime(12, 0, 0); // Установите время на 12:00:00 (24-часовой формат).
  //rtc.setDate(1, 1, 2014); // Установите дату на 1 января 2014 года
}

void loop()
{
  // Отправить День недели
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");

  // Дата отправки
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Время отправки
  Serial.println(rtc.getTimeStr());

  // Подождите одну секунду, прежде чем повторить :)
  delay (1000);
}

Теперь проблема в том, что после того, как я установил время, оно отлично показывает время и дату, пока я не отключу питание DS3231. будучи подключенным к моему компьютеру, когда я отключил питание DS3231, я вижу, что таймер сбрасывается, в то время как он должен был записать и продолжить таймер. Он выводит "Понедельник 1.1.2021 0.0.0".

Это проблема моего модуля? или я делаю здесь какую-то ошибку? или модуль работает именно так?

всякий раз, когда я отключаю питание arduino от ПК, он все еще продолжает считать, но всякий раз, когда я отключаю DS3231 от 5-вольтового контакта Arduino, он сбрасывается обратно. Означает ли это, что DS3231 должен использовать кристалл 16 МГц от Arduino для правильной работы??

, 👍2

Обсуждение

Правильно ли подключен аккумулятор к модулю? Возможно, вам нужно удалить кусок пластика, который предотвращает разряжение батареи во время хранения., @PMF

Там не было пластика, предотвращающего выброс. RTC работает нормально, пока Arduino выключен, но все контакты ds3231 подключены, но когда arduino выключен и провод 5v ds3231 отключен, время сбрасывается., @Subha Jeet Sikdar

Вы не написали, какой именно модуль у вас есть. Обычно батарея и чип RTC находятся на одной и той же разрывной плате и поэтому не могут быть разделены. Очевидно, что входное напряжение батареи 5 В чипа RTC должно оставаться подключенным., @PMF

Ага. Покажите, что у вас есть на самом деле., @timemage

@PMF Теперь все в порядке, понял, @Subha Jeet Sikdar


1 ответ


Лучший ответ:

2

Итак, вы отсоединяете 5 В к DS3231, но держите контакты SDA и SCL подключенными? Делая это, вы работаете вне рекомендуемых условий эксплуатации.

Если вы оставите контакты SDA и SCL подключенными, то эти контакты будут находиться на отметке 5В. В спецификации указано, что эти контакты не должны быть выше, чем Vcc+0.3 V. Где Vcc-это 0V, в вашем случае.

Удаление питания с платы Arduino также удалит питание от контактов I2C, сохраняя все в рамках спецификаций.

,

Ладно, понял. Но если я отделю scl sda и 5v gnd от Arduino и снова подключу их к arduino, который уже включен, таймер все равно сбросится?, @Subha Jeet Sikdar

@SubhaJeetSikdar попробуй и увидишь. Просто обратите внимание, что вы должны отключить их в правильном порядке. ПДД и СКЛ в первую очередь. Тогда Vcc. GND может оставаться на связи. При повторном подключении действуйте в обратном порядке. Так что подключайте Vcc перед SDA/SCL., @Gerben

Спасибо, теперь мне все ясно., @Subha Jeet Sikdar