DS1307 показывают странное время, которое стоит.

ситх
Offline
Зарегистрирован: 26.10.2012
#include <DS1307.h>

// Init the DS1307
DS1307 rtc(4, 5);

void setup()
{
  // Set the clock to run-mode
  rtc.halt(false);
  
  // Setup Serial connection
  Serial.begin(57600);

  // The following lines can be commented out to use the values already stored in the DS1307
  rtc.setDOW(SUNDAY);        // Set Day-of-Week to SUNDAY
  rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(3, 10, 2010);   // Set the date to October 3th, 2010
}

void loop()
{
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating :)
  delay (1000);
}

 

ситх
Offline
Зарегистрирован: 26.10.2012

Имеется такой вот код и модуль RTC DS1307, при запуске терминала выдает следующее:

xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85

Если нужно, выкину схему платы на которой монтировал.  

maksim
Offline
Зарегистрирован: 12.02.2012

Ну а если так попробовать?

#include <DS1307.h>

// Init the DS1307
DS1307 rtc(A4, A5);

void setup()
{
  
  rtc.halt(1);
  
  // Setup Serial connection
  Serial.begin(57600);

  // The following lines can be commented out to use the values already stored in the DS1307
  rtc.setDOW(SUNDAY);        // Set Day-of-Week to SUNDAY
  rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(3, 10, 2010);   // Set the date to October 3th, 2010
  // Set the clock to run-mode
  rtc.halt(false);
}

void loop()
{
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating :)
  delay (1000);
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

ситх пишет:

Имеется такой вот код и модуль RTC DS1307, при запуске терминала выдает следующее:

xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85
xxxxxxxxx 85.85.2165 -- 27:85:85

Если нужно, выкину схему платы на которой монтировал.  

Это похоже на то что у вас нет связи с модулем, как подключаете модуль? к каким выводам?

ситх
Offline
Зарегистрирован: 26.10.2012

Тогда такая хурма выскакивает:

xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85
xxxxxxxxx 00.00.2000 -- 00:00:85

А модуль подключаю к цифровым 4 и 5, т.к. автор библиотеки, которую юзаю делал на это акцент.

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Возможно, ножки перепутали... Если подключаетесь к "цифровым" - то это не i2c шина.

Питание - точно 5 вольт подано? У меня на 3.3 не захотело работать...

Резисторы подтягивающие линии clock и data на "+" имеются?

ситх
Offline
Зарегистрирован: 26.10.2012

Совершенно верно не i2c. Сама микросхема запитана на 3 вольта, а весь модуль на 5. Подтягивающие резисторы имеются, Перемена мест проводов ничего не меняет....

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

ситх пишет:

Перемена мест проводов ничего не меняет....

Я бы, все-таки, попробовал подключить по классике - через библиотеку Wire и аналоговые пины чтобы убедиться, что плата рабочая. Насколько я понимаю, цифровые пины - это софтовая эмуляция того, что аппаратно работает на аналоговых...

Еще одна неприятная особенность: авторы скетчей, в цикле setup(), любят не предупреждая снести текущие настройки часов.

ситх
Offline
Зарегистрирован: 26.10.2012

Вот попробовал такой скетч:









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

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

Подключал к аналоговым входам. Но та же петрушка. Видать, собрал неправильно...

maksim
Offline
Зарегистрирован: 12.02.2012

Удаляете свою либу из arduino-1.0.3\libraries или перемещаете ее куда нибудь, качаете вот эту либу и туда же в arduino-1.0.3\libraries распаковываетеперезапускаете IDE. Подключать исключительно к А4 и А5, не забываем про подтягивающие резисторы, если таковых нет не модуле.вместе с либой есть такой пример

// This is for compatibility with both arduino 1.0 and previous versions
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif


#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnesson

void setup()
{
  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);        //set the seconds
  RTC.set(DS1307_MIN,23);     //set the minutes
  RTC.set(DS1307_HR,12);       //set the hours
  RTC.set(DS1307_DOW,4);       //set the day of the week
  RTC.set(DS1307_DATE,5);       //set the date
  RTC.set(DS1307_MTH,3);        //set the month
  RTC.set(DS1307_YR,9);         //set the year
  RTC.start();

}

void loop()
{

  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,false));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,false));//read date
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,false));//read month
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,false)); //read year
  Serial.println();

  delay(1000);

}

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

ситх пишет:

Вот попробовал такой скетч:

Подключал к аналоговым входам. Но та же петрушка. Видать, собрал неправильно...

Начните с i2cscanner-а из туториала. Он покажет - есть кто-то на линии, или нету...

http://arduino.ru/forum/programmirovanie/perevod-ds1307-biblioteki-v-v10

http://playground.arduino.cc//Main/I2cScanner

ситх
Offline
Зарегистрирован: 26.10.2012

Все заработало) Просто устранил махонький недопай на ноге scl и установил ide 1.0.3. Спасибо всем отклинувшимся, да прибудет с вами Сила;)

km77
Offline
Зарегистрирован: 10.12.2012

maksim пишет:

Удаляете свою либу из arduino-1.0.3\libraries или перемещаете ее куда нибудь, качаете вот эту либу и туда же в arduino-1.0.3\libraries распаковываетеперезапускаете IDE. Подключать исключительно к А4 и А5, не забываем про подтягивающие резисторы, если таковых нет не модуле.вместе с либой есть такой пример



// This is for compatibility with both arduino 1.0 and previous versions
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif


#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnesson

void setup()
{
  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);        //set the seconds
  RTC.set(DS1307_MIN,23);     //set the minutes
  RTC.set(DS1307_HR,12);       //set the hours
  RTC.set(DS1307_DOW,4);       //set the day of the week
  RTC.set(DS1307_DATE,5);       //set the date
  RTC.set(DS1307_MTH,3);        //set the month
  RTC.set(DS1307_YR,9);         //set the year
  RTC.start();

}

void loop()
{

  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,false));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,false));//read date
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,false));//read month
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,false)); //read year
  Serial.println();

  delay(1000);

}

 

Подскажите пожалуйста,сделал все как здесь:скачал IDE 1.0.3,скачал и перенес нужную либу в папку libraries,соединил SDA с А4,SCL с А5.

Скетч не скомпилировался и не залился, выскакивает вот что:
  
Подскажите что можно сделать,что залить скетч? 

maksim
Offline
Зарегистрирован: 12.02.2012

Не верно распаковали библиотеку. Вы скорее всего распаковали архив так что у вас в папке DS1307 лежит еще папка DS1307 - вот ее и нужно поместить в libraries, после чего не забудьте перезапустить IDE.

km77
Offline
Зарегистрирован: 10.12.2012

Все верно,в этом ошибка была.  В той  библиотеки которую вы советовали нет примера для вывода времени на дисплей,только для контроля времени в мониторе порта? Этот скетч скомпилировался,залился.
Есть какой то скетч рабочий для данной библиотеки чтобы запустить наконец время на LCD? 

maksim
Offline
Зарегистрирован: 12.02.2012

Напишите его сами, объединив свой пример с этим. Сложного в этом ничего нету.

km77
Offline
Зарегистрирован: 10.12.2012

Написал, время пошло,только осталось-появилось 3 проблемы с выводом на дисплей:
1) Время и дата слиты в одной строке
2) Символы мерцают
3)  Символы отображаются на фоне белых квадратов
Подскажите что можно изменить в скетче,чтобы исправить и сделать чтобы хотя бы отображалось нормально все?

/******************************************************************
// Программа часов на DS1307 и LCD 16x2
//******************************************************************
// Подключаем все необходимые библиотеки и указываем пины подключения
#include <Wire.h>
#include <LiquidCrystal.h> // Подключение библиотеки для LCD с кириллицей
#include <DS1307.h> //Подключение библиотеки для DS1307
// Указываем пины подключения LCD 16х2 к Arduino
#define pinRS  14 // RS  к аналоговому пину 0
#define pinE   15 // E   к аналоговому пину 1
#define pinDB4  9 // DB4 к цифровому пину 9
#define pinDB5  6 // DB5 к цифровому пину 6
#define pinDB6  8 // DB6 к цифровому пину 8
#define pinDB7  7 // DB7 к цифровому пину 7
LiquidCrystal lcd(pinRS, pinE, pinDB4, pinDB5, pinDB6, pinDB7); //Подключаем дисплей
//******************************************************************************
void setup()
{
  Serial.begin(9600);
  //ustanovkaChasov(); //функция настройки часов, если в этом есть необходимость
}
//******************************************************************************
//Объявляем функцию установки даты и времени
void ustanovkaChasov()
  {
  RTC.stop();              // останавливаем ход часов
  RTC.set(DS1307_SEC,0);   // устанавливаем секунды
  RTC.set(DS1307_MIN,58);  // устанавливаем минуты
  RTC.set(DS1307_HR,16);   // устанавливаем часы
  RTC.set(DS1307_DOW,4);   // устанавливаем номер дня недели
  RTC.set(DS1307_DATE,31);  // устанавливаем число
  RTC.set(DS1307_MTH,1);   // устанавливаем месяц
  RTC.set(DS1307_YR,13);    // устанавливаем год
  RTC.start();             // запускаем ход часов
  }
//**************************************************************

void loop()
{
  // Вывод единиц в сегменте единиц дней
  if (RTC.get(DS1307_DATE,false)<=9)//если едициц дней меньше-равно 9, то выводим на 1 шаг правее
  { lcd.setCursor(0, 0);
    lcd.print(" ");
    lcd.setCursor(1, 0);
    lcd.print (RTC.get(DS1307_DATE,false));}
  else // иначе (т.е. если единиц дней больше 9, то выводим на 1 шаг левее
  { lcd.setCursor(0, 0);
    lcd.print (RTC.get(DS1307_DATE,false));}
    
  //Отображение текущего месяца
  lcd.setCursor(2, 0); //указываем место печати названия месяца
  switch (RTC.get(DS1307_MTH,false)) // в зависимости от значения месяца печатаем название
  {
    case 1:    lcd.print("-01-");    break;
    case 2:    lcd.print("-02-");    break;
    case 3:    lcd.print("-03-");    break;
    case 4:    lcd.print("-04-");    break;
    case 5:    lcd.print("-05-");    break;
    case 6:    lcd.print("-06-");    break;
    case 7:    lcd.print("-07-");    break;
    case 8:    lcd.print("-08-");    break;
    case 9:    lcd.print("-09-");    break;
    case 10:   lcd.print("-10-");    break;
    case 11:   lcd.print("-11-");    break;
    case 12:   lcd.print("-12-");    break;
  }
  
  //Отображение текущего года гггг
  lcd.setCursor(6, 0); // указываем место печати значения года
  lcd.print(RTC.get(DS1307_YR,false)); // печатаем год

  // Отображение текущего дня недели 
  lcd.setCursor(11,0); //указываем место печати дня недели
  switch (RTC.get(DS1307_DOW,false))// в зависимости от номера дня недели выводим на экран
  {
    case 1:    lcd.print("/MON/");    break;
    case 2:    lcd.print("/TUE/");    break;
    case 3:    lcd.print("/WED/");    break;
    case 4:    lcd.print("/THU/");    break;
    case 5:    lcd.print("/FRI/");    break;
    case 6:    lcd.print("/SAT/");    break;
    case 7:    lcd.print("/SUN/");    break;
  }
  
  // Отображение времени чч:мм:сс
  lcd.setCursor(3,1);
  lcd.print(RTC.get(DS1307_HR,true)); // печатаем час
  lcd.setCursor(5,1);
  lcd.print(":"); // печатаем разделитель
  lcd.setCursor(6,1);
  lcd.print(RTC.get(DS1307_MIN,false)); // печатаем минуты
  lcd.setCursor(8,1);
  lcd.print(":"); // печатаем разделитель
  lcd.setCursor(9,1);
  lcd.print(RTC.get(DS1307_SEC,false)); // печатаем секунды
 
  
  Serial.print(RTC.get(DS1307_HR,true)); //часы
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,false));//минуты
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,false));//секунды
  Serial.print("      ");                
  Serial.print(RTC.get(DS1307_DATE,false));//дата
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,false));//месяц
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,false)); //год
  Serial.println();
  
  delay(100);
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

Не проинициализировали дисплей

lcd.begin(16, 2); // Инициализация работы с дисплеем размером 16х2

 

km77
Offline
Зарегистрирован: 10.12.2012

Все готово,разделения на 2 строки добились. 
Как изменять дату и время теперь? После первой установки времения значение больше не изменяется если пишешь нужное в скетче. И во-вторых вместо 1го месяца прописанного в скетче,над дисплей вывелось 3,а вместо 16 часов 17.

LDmitry
Offline
Зарегистрирован: 05.02.2013

Подскажите плз - почему могут останавливаться часы при отключении arduino от usb питания? По идее ведь должны продолжать идти от внутренней 3v батарейки 

Модуль часов  и подключение точно такие как на схеме выше (только без использования выхода DS). Скетч и библиотека тоже, в скетче после первой заливки закоментарил блок установки времени и перезалил еще раз. При включенном arduino часы работают как надо. Но если arduino выключить на какое-то время, то после включения время будет продолжено с момента отключения. Т.е. часы без питания не сбрасываются но и не идут.

И еще вопрос - eeprom на этой плате это просто бонус к часам или он нужен для совместной работы с 1307 ?

Спасибо

maksim
Offline
Зарегистрирован: 12.02.2012

1. Мертвый кварц. Впаять новый кварц.
2. Посаженная батарейка. Мерить вольтаж бесполезно, на ней всегда около 3 вольт, просто попробовать заменить на новую.

LDmitry
Offline
Зарегистрирован: 05.02.2013

Дело в том что от внешнего питания часы идут, наверно вряд ли кварц

Покупал одновременно 2 модуля, поведение одинаковое.

maksim
Offline
Зарегистрирован: 12.02.2012

Ну и что? думаете не могут на обоих модулях быть разряженны обе батарейки?
Может модули пролежали года 3... или батарейки были выпущенны 10 лет назад.
Кстати, а что за модули? описание на них есть? или фото хотябы?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

LDmitry пишет:

И еще вопрос - eeprom на этой плате это просто бонус к часам или он нужен для совместной работы с 1307 ?

Тот, что в самой микросхеме часов - частично нужен, а вторая микруха: бонус в 32К, про который не все продавцы вкурсе. :) Правда как его полноценно задействовать - я пока не придумал.

LDmitry
Offline
Зарегистрирован: 05.02.2013

maksim пишет:

Ну и что? думаете не могут на обоих модулях быть разряженны обе батарейки?
Может модули пролежали года 3... или батарейки были выпущенны 10 лет назад.
Кстати, а что за модули? описание на них есть? или фото хотябы?

Модуль самый распространенный -I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR точно как на первом рисунке в этой теме. Батарейки 3.1в. Правда почему-то по схеме батарейка соединена с выводом №3 ds1307 через резистор(R6 на схеме), в рез-те на выводе было 1.7в Пробовал закоротить резистор - все равно часы стоят без внешнего питания.

Я честно говоря думал что проблема в программной части, как-то маловероятно что оба модуля неисправны.

Кто-то пробовал использовать этот модуль? Нет подобной проблемы?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

LDmitry пишет:

Кто-то пробовал использовать этот модуль? Нет подобной проблемы?

У меня похожий i2s модуль, проблему специально не отслеживал, но вроде бы нету: часы не сбрасываются между выключениями и показывают примерно так, как их удалось поставить.

maksim
Offline
Зарегистрирован: 12.02.2012

LDmitry пишет:

Батарейки 3.1в.

Еще раз повторяю мерить напряжение на батарейке бесполезно, просто установите новую батарейку.

LDmitry пишет:

Я честно говоря думал что проблема в программной части, как-то маловероятно что оба модуля неисправны.

Можете так думать дальше, если вам так удобнее.

 

LDmitry
Offline
Зарегистрирован: 05.02.2013

Andrey_Y_Ostanovsky пишет:

У меня похожий i2s модуль, проблему специально не отслеживал, но вроде бы нету: часы не сбрасываются между выключениями и показывают примерно так, как их удалось поставить.

Не сбрасываются и продолжают считать, пока нет внешнего питания?

 

Поставил новую батарейку - без изменений 

maksim
Offline
Зарегистрирован: 12.02.2012

maksim
Offline
Зарегистрирован: 12.02.2012

Често говоря, не понятно зачем напряжение батарейки тоже понижается делителем R4,R6. Такое ощущение что расчет был не на батарейку, а на какой-то 4-х вольтовый аккумулятор, более логично подключить батарейку к выводу BatVcc.

Для нормальной работы таймера на VBAT должно подаваться напряжение от 2 до 3,5 вольт. Замерьте напряжение на выводе VBAT при включенном питании и выключенном (1,7в?). Если батарейка новая, то напряжение на VBAT при выключенном питании должно быть чуть больше двух вольт. Так же проверьте смыт ли флюс сплаты. 

Я бы сделал следующее:
резистор 
R4 перепаял бы на место резистора R5, а на место резистора R4 впаял бы конденсатор емкостью 0,1мкФ, но можно и без кондера обойтись.
резистор 
R6 убрал бы и закоротил площадки ("повесил соплю"). 

 

 

LDmitry
Offline
Зарегистрирован: 05.02.2013

Спасибо за схему!

Действительно, очень похоже что разработчики планировали подзаряжать батарейку/аккумулятр от внешнего источника.

Как только достану лупу и паяльник с тонким жалом попробую разорвать R5, R4, R7, R8. А R6 я уже закоротил. Т.е. приведу схему к стандартному подключению ds1307.

Интересно вот, все эти модули с таким дефектом, или мне 'повезло' 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

LDmitry пишет:

Интересно вот, все эти модули с таким дефектом, или мне 'повезло' 

Если Вам это действительно интересно - покажите крупные фото модуля с двух сторон, т.к. делает эти модули далеко не один сборщик...

LDmitry
Offline
Зарегистрирован: 05.02.2013

Заработало. Перерезал по-очереди дорожки у резисторов, каждый раз проверяя часы. В итоге заработало после последнего резистора - R7, между кварцем и питанием.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

LDmitry пишет:

Заработало. Перерезал по-очереди дорожки у резисторов, каждый раз проверяя часы. В итоге заработало после последнего резистора - R7, между кварцем и питанием.

А у моей схемы R7 (рядом с кварцем) - не запаян.

paf
Offline
Зарегистрирован: 25.01.2013

Вовремя вы это дело вскрыли! Ко мне подобный модуль должен добраться. Правда если это ему удастся. Рашенпост - в последнее время сильно укрепила свои рубежи. Все меньшему количеству китайских товаров удается просочиться через ее доставку. :(

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

paf пишет:

Вовремя вы это дело вскрыли! Ко мне подобный модуль должен добраться. Правда если это ему удастся. Рашенпост - в последнее время сильно укрепила свои рубежи. Все меньшему количеству китайских товаров удается просочиться через ее доставку. :(

Да не, с почтой - это каждый новоый год так. В этом году, кстати, полегче.

По результатам - надо бы попросить модераторов перенести эту тему в "аппаратные вопросы".

paf
Offline
Зарегистрирован: 25.01.2013

Кстати. да. тема оттуда.  А свои слепил из чего попало, как попало! кварц прямо к выводам, без пикушек к земле, и работало. Только могли тупо встать! Ну желтый дом! Как механические! Тупо стоят и одно и то же время кажут! Как то даже не по себе. Смотришь на них также тупо! Ах, какая картина для живописца! "Опять стоят!" Но, братия самодельщики предупредили, описали клинику! Емкость по питанию лишает м\с задумчивости.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

maksim пишет:

Еще раз повторяю мерить напряжение на батарейке бесполезно, просто установите новую батарейку.

Да нет, не бесполезно. Я у себя мерял - показало 2.8 вместо номинала 3.5. Из-за этого часы допускали 10 минутные перерывы питания, но на следующие сутки уже показывали ахинею. После замены - все пошло нормально. Правда 3.1 я бы тоже отбраковал...

maksim
Offline
Зарегистрирован: 12.02.2012

Для вас тоже повторю - бесполезно. Номинал у CR2032 не 3,5 вольта, а 3 вольта.

Andrey_Y_Ostanovsky пишет:
Правда 3.1 я бы тоже отбраковал...
Вот поэтому и бесполезно.

paf
Offline
Зарегистрирован: 25.01.2013

Ну если очень хочется измерить, то можно! Прижмите к шупам мультиметра светодиод и к батарейке. Если светодиод горит, то смотрим на мультиметр. Ну что полярность поменять если попытка не удалась, это как бы по умолчанию. Светодиод не горит - отрабатываем точность метания батарейки в мусорницу. :)

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

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

В случае вот такой упаковки (за $4) - никаких дырочек нет.

 

paf
Offline
Зарегистрирован: 25.01.2013

Ну тогд........скока?! 4 за 20?! Кто последний?!  :)

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012
Item number
321013445523

На ибее - чуть дороже ($4.30), но до 14 февраля все равно нет смысла покупать: у китайцев все новый год отмечают...

vahegan
Offline
Зарегистрирован: 22.03.2013

Внесу и я свои 5 копеек. Думаю, многим нервы сбережет.

Пару дней мучался с таким RTC модулем - выдавал 2165 год: менял кварц, микросхему, отрезал резисторный делитель на ноге Vbat - ничего не помогало.

При том, у меня 4-5шт. таких модулей, купленных у разных продавцов на eBay - ни один не работал (подключал к Меге 2560 через отрезок шлейфа сантиметров 10-15 длиной с разъемом на конце). И в то же время, подключал на тот же разъем аналогичный модуль на базе более продвинутого RTC чипа DS3231 - все работало "как часы" ;)

Потом решил воткнуть модуль с 1307 напрямую в ардуину (на меге ноги SDA и SCL втыкаются в A20, A21, питание подал через соседние ноги меги, программно установив высокий и низкий уровни, ну и штырек выхода секундных импульсов модуля болтается в водухе). И, о чудо, все заработало. Убрал свой кабель с разъемчиком, припаял штырьки SCL, SDA напрямую к ардуино, и все заработало.

Таким образом, проблема была в длинных проводах I2C - уже при 10-15см с этим модулем перестает работать. DS3231 может работать на частоте I2C до 400кГц, и видимо, он более помехоустойчив, поэтому с ним все работало.

maksim
Offline
Зарегистрирован: 12.02.2012

vahegan пишет:

Таким образом, проблема была в длинных проводах I2C - уже при 10-15см с этим модулем перестает работать. DS3231 может работать на частоте I2C до 400кГц, и видимо, он более помехоустойчив, поэтому с ним все работало.

Может все-таки дело в подтягивающих резисторах линий SDA и SCL ? , а не в длинне проводов... может на модуле DS1307 у вас их нет или они большого номинала, в то время как на модуле DS3231 они есть и у них верное сопротивление.

vahegan
Offline
Зарегистрирован: 22.03.2013

maksim пишет:

Может все-таки дело в подтягивающих резисторах линий SDA и SCL ? , а не в длинне проводов... может на модуле DS1307 у вас их нет или они большого номинала, в то время как на модуле DS3231 они есть и у них верное сопротивление.

Есть конечно. На модуле с DS1307 они по 3.3к - КМК, меньше делать не имеет смысла. Какой номинал стоит на модуле с 3231 - сейчас не помню, вечером посмотрю. Думаю, там и вовсе 10к стоит, но уж точно не меньше 3.3к.

Вообще, модуль DS1307 готовый, и один в один совпадает с приведенной Вами схемой. Только R7 не распаян.

Кстати, по поводу этого:

maksim пишет:
Често говоря, не понятно зачем напряжение батарейки тоже понижается делителем R4,R6. Такое ощущение что расчет был не на батарейку, а на какой-то 4-х вольтовый аккумулятор, более логично подключить батарейку к выводу BatVcc.

У меня на модуле стоит батарейка на 3.6В, но мультиметром на ней меряются все 4В, благо, ток потребления чипа мизерный. По даташиту на DS1307 напряжение Vbat должно быть в пределах 2,,3,5В, при этом оно должно быть по крайней мере в 1.25 раз меньше напряжения питания чипа, в противном случае чтение/запись блокируются. Учитывая, что питание чипа 5В, то батарейное напряжение 4В как раз на границе: 5/1.25=4, поэтому китайцы поставили этот делитель, после него напряжение на ноге Vbat становится равным 2.9В.

Вообще, завязываю с DS1307, после этого буду пользовать только DS3231 - разница в цене невелика, зато нет зависимости от дурацких китайских кварцов (у 3231 точность 2ppm - это ход около минуты в год), потребление намного ниже чем у 1307, а вместо батарейки можно поставить ионистор - он меньше и дешевле батарейки с держателем, срок службы намного дольше, и кондера на 0.33F должно хватить на 2 недели работы чипа при отключенном питании - для большинства применений этого более, чем достаточно.

 

 

paf
Offline
Зарегистрирован: 25.01.2013

С кварцами подтверждаю. В помойку.  

chk
Offline
Зарегистрирован: 14.04.2013

мой китайский модуль DS1307 шел с батарейкой LIR2032  3.6V. Часы сами останавливались после отключения платы. А при включении часто продолжали стоять. Да и при запущенной вроде не всегда хотели идти. Вольтметр показал на батарейке в холостую 3.96 В. Поставил вместо нее CR2032  3V - все заработало. Не знаю, проседало ли сильно при нагрузке напряжение на лире, но это вряд ли тк кушают часы совсем мало. Так что в моем случае дело было скорее всего в завышенном напряжении батарейки))  Скорее всего у  vahegan  проблема тоже в этом. И, кстати, часы эти уже за несколько часов на полсекунды или около того ушли вперед, как мне субьективно кажется. А модули на DS3231 в 3 раза дороже..

 

vahegan
Offline
Зарегистрирован: 22.03.2013

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

Проблема была сугубо в длине проводов и связанной с ней нестабильной работе I2C. Сократив провода, проблема полностью решена.

Kvanto
Offline
Зарегистрирован: 26.04.2013

Залил стандартный скетч для RTC и дисплея. А в мониторе порта и на дисплее вот что, В чем может быть дело?

msng
Offline
Зарегистрирован: 07.06.2012

проверьте правильность подключения модуля ртс, без подключенного модуля будет показывать тоже самое...