Как прилепить часы DS1302?

Paratruper
Offline
Зарегистрирован: 03.11.2012

Господа! Помогите ламеру!

Есть вот такие часики на DS1302:

Как я понимаю - эти часы не могут общаться с Arduino по протоколу I²C / TWI? Как подключить?

Ну "VVC" к + 5 V, "GND" - на землю. Это понятно.

А вот как CLK, DAT и RST куда пристроить?

Как подключить? Может у кого библиотеки и скетчи имеются?

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

У DS1302 свой трех-проводной интерфейс более простой чем I2C. 

А вот по поводу библиотеки.... библиотеку можно скачать с сайта по самой первой ссылке

в гугле по запросу "ds1302 arduino"  

 

Paratruper
Offline
Зарегистрирован: 03.11.2012

Спасибо!

https://github.com/msparks/arduino-ds1302 - именно оно. Теперь есть от чего плясать.

Спасибо!

 

P.S. Ну и по ходу разобрался в обозначениях:

SCLK = CLK

IO = DAT

CE = RST

 

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

Насчет RST не знаю, посмотрите в даташите на какой ноге CE и к какой ноге идет дорожка от RST, но скорее всего так и есть.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Ну вот, и maksim начал голос повышать :) Меня тут кто-то обвинил в заболевании синдромом "гуру", я теперь стараюсь молчать :)

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

Это кстати так текст копипаститься стал ))) поэтому не всегда голос повышаю, а просто лень источник редактировать.

imbeat
Offline
Зарегистрирован: 18.10.2011

А как установить корректное время на DS1302?

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

Что значит корректное?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Наверно, он имел в виду "правильное" или "текущее"

В библиотечном примере есть установка времени и запуск часов (после установки батарейки они изволят стоять :)

leshak
Offline
Зарегистрирован: 29.09.2011

AlexFisher пишет:

Ну вот, и maksim начал голос повышать :) Меня тут кто-то обвинил в заболевании синдромом "гуру", я теперь стараюсь молчать :)

Гуру - тоже развиваются :)  Осознание ценности молчания - один из этапов. Проходящий. Все циклично ;)

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Согласен. Но я в последнее время молчу, потому что просто некогда :( Изредка набегами по форуиу...

imbeat
Offline
Зарегистрирован: 18.10.2011

Да, нашел. Большое спасибо. Что то я не догадался туда посмотреть.

Я вообще web-разработчик, и вся это аппаратная магия для меня кажется именно магией.

Взял за основу библиотечный пример. Устанавливаю текущее время. Но в год и минуты стабильно вытягивается ноль (устанавливаю начальное значение года и минут огтличное от нуля). Кто нибудь сталкивался или может быть знает почему так?

Монитор серийного порта показывает примерно следущее:

 

Tuesday 2000-01-15 19:00:00
Tuesday 2000-01-15 19:00:57
Tuesday 2000-01-15 19:00:00
Tuesday 2000-01-15 19:00:59
Tuesday 2000-01-15 19:15:00
Tuesday 2000-01-15 19:15:01
Tuesday 2000-01-15 19:15:00
 
То есть как минута переходит на след.. .минуты начинают идти правильно... а вот год почему то как был 2000. И секунды "скачут" через одну... и кстати минуты как оказалось позже тоже через одну... то ноль то правильно. 
Есть мысли, почему так происходит?
Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

imbeat пишет:

Я вообще web-разработчик, 

Есть мысли, почему так происходит?

Если Вы web-разработчик, то наверное знаете, что разный код может выдавать разные результаты. Добавьте отладочных строчек, или покажите здесь код, которым получаете данные...

JackDaniels
Offline
Зарегистрирован: 14.05.2013

imbeat пишет:

Да, нашел. Большое спасибо. Что то я не догадался туда посмотреть.

Я вообще web-разработчик, и вся это аппаратная магия для меня кажется именно магией.

Взял за основу библиотечный пример. Устанавливаю текущее время. Но в год и минуты стабильно вытягивается ноль (устанавливаю начальное значение года и минут огтличное от нуля). Кто нибудь сталкивался или может быть знает почему так?

Монитор серийного порта показывает примерно следущее:

 

Tuesday 2000-01-15 19:00:00
Tuesday 2000-01-15 19:00:57
Tuesday 2000-01-15 19:00:00
Tuesday 2000-01-15 19:00:59
Tuesday 2000-01-15 19:15:00
Tuesday 2000-01-15 19:15:01
Tuesday 2000-01-15 19:15:00
 
То есть как минута переходит на след.. .минуты начинают идти правильно... а вот год почему то как был 2000. И секунды "скачут" через одну... и кстати минуты как оказалось позже тоже через одну... то ноль то правильно. 
Есть мысли, почему так происходит?

Есть, тоже такой модуль брал, методом проб и ошибок определил, что если землю протянуть через резистор 10 ком всё стабилизируется. Видимо из-за большого тока шумы появляются.

PASHASV
Offline
Зарегистрирован: 13.06.2013

JackDaniels пишет:
Есть, тоже такой модуль брал, методом проб и ошибок определил, что если землю протянуть через резистор 10 ком всё стабилизируется. Видимо из-за большого тока шумы появляются.

Была проблемка - некорректное отображение даты и времени, (резистор на 10К впаял) например Год 2165, месяц 45, день 38, ну и.т.д. Оказалось, что та библиотека, которую я использовал не совсем корректна. Заменил на более старую, от 26.01.2012, все заработало.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Подскажите, пожалуйста.

Вы модуль часов от 5В контроллера запитывали?

Читал, что при переходе на встроенный источник могут быть проблемы, если вдруг возникнут сигналы на входах.

alex25ru
Offline
Зарегистрирован: 24.07.2013

Уважаемые, помогите разобраться с сабжем.

Скачал библиотеку ( https://github.com/msparks/arduino-ds1302 ), запускаю пример из архива с библиотекой, Arduino (1.5.4) ругается на 

set_clock.ino: In function 'void<unnamed>::printTime()':
set_clock:47: error: 'const class String' has no member named 'c_str'

Подскажите что делать %)

alex25ru
Offline
Зарегистрирован: 24.07.2013

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

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

А какая у вас ардуина? DUE?

alex25ru
Offline
Зарегистрирован: 24.07.2013

Arduino Uno

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

Тогда зачем, если не секрет, вы пользуетесь ArduinoIDE 1.5.4 Beta?

alex25ru
Offline
Зарегистрирован: 24.07.2013

maksim пишет:

Тогда зачем, если не секрет, вы пользуетесь ArduinoIDE 1.5.4 Beta?

Намек понял. Попробовать на 1.0.4? или? 

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

От 1.0 до 1.0.5 - любую.

alex25ru
Offline
Зарегистрирован: 24.07.2013

 

Запустил на Arduino 1.0.5, ошибки с

set_clock.ino: In function 'void<unnamed>::printTime()':
set_clock:47: error: 'const class String' has no member named 'c_str'

нет, но время так и не удалось установить.

Библиотека https://github.com/msparks/arduino-ds1302.

Цитата:

(unknown day) 2000-00-31 00:04:72
(unknown day) 2000-00-00 00:04:73
(unknown day) 2000-00-00 00:04:74
(unknown day) 2000-00-00 00:04:75
(unknown day) 2000-00-00 00:04:76
(unknown day) 2000-00-00 00:04:77
(unknown day) 2000-00-00 00:04:78
(unknown day) 2000-00-00 00:04:79
(unknown day) 2000-00-00 00:05:40

Ulysses
Offline
Зарегистрирован: 15.10.2013

Купил такие же часы.

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

Подаю 5 V - установка времени срабатывает, показания считываются некорректно.

Это дефект устройства или с этим как-то можно бороться?

r511
Offline
Зарегистрирован: 22.11.2013

У меня DS1302 часы на синем текстолите + Nano 3.0

Поначалу запустил без подведения внешнего питания к часам. Отсчет начался с 2000-00-01 00:00:00

Изменение дня и месяца в установке даты приводило к странным закономерностям в изменении года+месяца+дня

Когда таки подключил 5v к часам, то и установка, и считывание оказались корректными.

Тоже, кстати были глюки с некомпилируемостью, когда перепробовал несколько библиотек. Наверное это происходило из-за одинаковых названий классов и других тонкостей

Когда запутался, решил все переустановить заново (IDE 1.0.5 + либы) и вроде получилось )

брал отсюда : http://www.henningkarlsen.com/electronics/download.php?f=DS1302.rar

Zets
Offline
Зарегистрирован: 20.04.2014

У кого Arduino Mini Pro

Переназначайте лапы, которые стоят по умолчанию (2,3,4) например 8,9,10.
Я так понял что он общается с А2, А3, А4. У меня не распаяны, не проверял.

Самое интересное что на UNO работает без проблем с 2,3,4

Nike_com
Offline
Зарегистрирован: 20.02.2015

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

bwn
Offline
Зарегистрирован: 25.08.2014

Nike_com пишет:

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

Хотите чессна, возьмите что нибудь по I2C и спокойно с ним работайте. Пины сэкономите и от геммора избавитесь. А больше у 1302 никаких преимуществ нет.

Nike_com
Offline
Зарегистрирован: 20.02.2015

bwn пишет:

Nike_com пишет:

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

Хотите чессна, возьмите что нибудь по I2C и спокойно с ним работайте. Пины сэкономите и от геммора избавитесь. А больше у 1302 никаких преимуществ нет.

так и планирую

Fluff
Offline
Зарегистрирован: 26.03.2015

Гуру, не откажите новичку  в консультации )))

Подключил модуль часов с батарейкой, залил скетч, все заработало. Индикатор TX моргает каждую секунду. Вроде все ОК, но при каджом открытии окна Монитора порта показания начинаются с установленных в скетче значений.

Разве в пямяти 1302 не должны храниться значения от момента первоначальной установки?

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

bwn
Offline
Зарегистрирован: 25.08.2014

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

SuperPesBarbos
Offline
Зарегистрирован: 17.04.2015

Была такая же проблема как у Ulysses. При питании 3.3 В или без питания все отлично считывается, но часы не ставятся никак. При питании 5 В часы ставятся, но при чтении проблема. Проблема в согласовании уровней, то есть на стороне микроконтроллера - все ок, ему и размах в 3,3 и в 5 нормально, а вот этому DS1302 все плохо.

Землю подключить через 10кОм - не работает ничего. Через 1 кОм - работает, но считывается зачастую ерунда.

А вот если DATA подключить через 1 кОм работает и установка и чтение стабильно при питании 5В!

Купил модуль на buyincoins, но часы вначале не шли ни в какую - поменял кварц - стало ОК.

Всем удачи! Может поможет

MXPain
Offline
Зарегистрирован: 13.06.2014

SuperPesBarbo, спасибо помогло!

Fluff
Offline
Зарегистрирован: 26.03.2015

Еще вопросик...

Устанавливать часы с компа крайне неудобно.

Как можно прикрутить кнопки для установки?

Может есть ссылка на пример?

 

заранее спасибо.

 

bwn
Offline
Зарегистрирован: 25.08.2014

Fluff пишет:

Еще вопросик...

Устанавливать часы с компа крайне неудобно.

Как можно прикрутить кнопки для установки?

Может есть ссылка на пример?

 

заранее спасибо.

 

Да какой там пример, работа с кнопками+изменение переменной+запись в память часов.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

AlexFisher пишет:

Ну вот, и maksim начал голос повышать :) Меня тут кто-то обвинил в заболевании синдромом "гуру", я теперь стараюсь молчать :)

а зря ! и зачем ? если есть чё сказать...

Fluff
Offline
Зарегистрирован: 26.03.2015

Спасибо за совет ))))

 

Буду изучать. Это мои первые шаги )))

Гриша
Offline
Зарегистрирован: 27.04.2014

Fluff пишет:

Еще вопросик...

Устанавливать часы с компа крайне неудобно.

Как можно прикрутить кнопки для установки?

Может есть ссылка на пример?

http://arduino.ru/forum/programmirovanie/saa1064-ds18x20-ds130#comment-92802

курите примерчик... он совсем простой, правда коментов маловато...

tixon
Offline
Зарегистрирован: 11.01.2016

Столкнулся с проблемкой... на uno и nano всё работает корректно а на due вместо даты и времени в serial летит хххххх--хххххх

flat
Offline
Зарегистрирован: 05.02.2015

такая же проблемма .... нагуглил RTCdue библиотеку.... теперь вижу пятницу а время дата также иксами ... 

#include <DS1302.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);

d2 rst 

d3 dat

d4 clk

 

код теста

// DS1302_Serial_Easy (C)2010 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// A quick demo of how to use my DS1302-library to 
// quickly send time and date information over a serial link
//
// I assume you know how to connect the DS1302.
// DS1302:  CE pin    -> Arduino Digital 2
//          I/O pin   -> Arduino Digital 3
//          SCLK pin  -> Arduino Digital 4

#include <DS1302.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);

void setup()
{
  // Set the clock to run-mode, and disable the write protection
  rtc.halt(false);
  rtc.writeProtect(false);
  
  // Setup Serial connection
  Serial.begin(9600);

  // The following lines can be commented out to use the values already stored in the DS1302
  rtc.setDOW(FRIDAY);        // Set Day-of-Week to FRIDAY
  rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(6, 8, 2010);   // Set the date to August 6th, 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);
}

выдает friday xxxxxx-xxxx

 

Strels99-78
Offline
Зарегистрирован: 03.02.2016

Я в этом деле совсем новичёк, так-что не судите строго. То-же 2 часа потерял, но стоило GMD взять с порта 13 подключив его как ноль всё заработало. Пример:  

 

после void setup() {

pinMode(13,OUTPUT);

digitalWrite(13,LOW);
  
Порт можно установить любой.
 
Можно подключить GND к GND ардуины через резистор 10кОМ эфект тот же.
При подключение GND на массу часы  не устанавливались и выдовали не правельные дату и время.
advisor
Offline
Зарегистрирован: 04.12.2015

Сам намучался вначале с этими часами, то время собьется, то остановятся, но потом почему то все стало ок. Часы подключены к портам 8,9,10, ардуино про микро.работает от 3 и 5 вольт ардуино вполне стабильно. Заметил проблему при питании ардуины от кроны.

zhirov
Offline
Зарегистрирован: 05.03.2016

Ребята. я новичек и постоянно сталкиваюсь с каким то гемороем...
Скажите пожалуйста, как запихнуть в переменную только часы или минуты, что бы потом использовать в сравнениии или условии в программе?
Часы ds1302  и такая же библиотека....
Как с ней работать? Совсем запутался...
Гуглил до посинения.... так ничего и не нашел.

Гриша
Offline
Зарегистрирован: 27.04.2014

zhirov пишет:

Ребята. я новичек и постоянно сталкиваюсь с каким то гемороем...
Скажите пожалуйста, как запихнуть в переменную только часы или минуты, что бы потом использовать в сравнениии или условии в программе?
Часы ds1302  и такая же библиотека....
Как с ней работать? Совсем запутался...
Гуглил до посинения.... так ничего и не нашел.

что на экране по команде

Serial.println(rtc.getTimeStr());
// rtc.getTimeStr() - получает  и хранит информацию о времени

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

dvmstudio
Offline
Зарегистрирован: 25.08.2016

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

Я хочу создать автоматические часы для звонка в школе где работаю.

Купил ардуино борд, реле, и часи RTC DS1302. Как их правильно связать и программировать? 

Что делаю не получается.

Заранее благодарен спасителям и читателям.

DVM

Гриша
Offline
Зарегистрирован: 27.04.2014

dvmstudio пишет:

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

Я хочу создать автоматические часы для звонка в школе где работаю.

Купил ардуино борд, реле, и часи RTC DS1302. Как их правильно связать и программировать? 

Что делаю не получается.

Заранее благодарен спасителям и читателям.

DVM

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

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

dvmstudio
Offline
Зарегистрирован: 25.08.2016

Спасибо за столь ценный савет. 

Если попрашу (за денги конечно) сможете написать? и сколько будет стоить? 

Гриша
Offline
Зарегистрирован: 27.04.2014

dvmstudio пишет:

Спасибо за столь ценный савет. 

Если попрашу (за денги конечно) сможете написать? и сколько будет стоить? 

Если очень хочется, а времени нет, создайте тему в этом разделе

только не забудьте подробнее расписать, так сказать черновой вариант ТЗ с подробным описанием хотелок, и ссылками на уже приобретенные детали (именно ссылками, а не словами типа "у меня УНО и шилд реле")

ЗЫ я помогаю, но не делаю вместо (даже за деньги)

ufofly
Offline
Зарегистрирован: 15.10.2017

Привет, Народ. Почитал я комментарии выше... тоже помучался с модулем 1302.

сначала скачал библиотеку arduino-ds1302 с https://github.com/msparks/arduino-ds1302поковырял, и вправду, через резистор на DATA (поставил на 150 ом) заработало без глюков. Библиотека не особо удобная, режим am/pm там я не нашел.

ковыряю второй день, попробовал найти другую библиотеку, нарвался на Универсальная библиотека iarduino_RTC для RTC DS1302, DS1307, DS3231 к Arduino. Сорри за ссыль на другой сайт, но что поделать... http://iarduino.ru/file/235.html   Сначала работала вроде нормально без резистора, потом при долгом использовании, я все таки вернул его на место. На мой взгляд библиотека проще с объяснениями на русском и функиональнее. Не отрицаю, если они какую то библиотеку взяли и переворотили