DS1307 показывают странное время, которое стоит.
- Войдите на сайт для отправки комментариев
Пнд, 21/01/2013 - 15:42
#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); }
Имеется такой вот код и модуль 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
Если нужно, выкину схему платы на которой монтировал.
Ну а если так попробовать?
Имеется такой вот код и модуль 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
Если нужно, выкину схему платы на которой монтировал.
Это похоже на то что у вас нет связи с модулем, как подключаете модуль? к каким выводам?
Тогда такая хурма выскакивает:
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, т.к. автор библиотеки, которую юзаю делал на это акцент.
Возможно, ножки перепутали... Если подключаетесь к "цифровым" - то это не i2c шина.
Питание - точно 5 вольт подано? У меня на 3.3 не захотело работать...
Резисторы подтягивающие линии clock и data на "+" имеются?
Совершенно верно не i2c. Сама микросхема запитана на 3 вольта, а весь модуль на 5. Подтягивающие резисторы имеются, Перемена мест проводов ничего не меняет....
Перемена мест проводов ничего не меняет....
Я бы, все-таки, попробовал подключить по классике - через библиотеку Wire и аналоговые пины чтобы убедиться, что плата рабочая. Насколько я понимаю, цифровые пины - это софтовая эмуляция того, что аппаратно работает на аналоговых...
Еще одна неприятная особенность: авторы скетчей, в цикле setup(), любят не предупреждая снести текущие настройки часов.
Вот попробовал такой скетч:
Подключал к аналоговым входам. Но та же петрушка. Видать, собрал неправильно...
Удаляете свою либу из arduino-1.0.3\libraries или перемещаете ее куда нибудь, качаете вот эту либу и туда же в arduino-1.0.3\libraries распаковываете, перезапускаете IDE. Подключать исключительно к А4 и А5, не забываем про подтягивающие резисторы, если таковых нет не модуле.
вместе с либой есть такой пример
Вот попробовал такой скетч:
Подключал к аналоговым входам. Но та же петрушка. Видать, собрал неправильно...
Начните с i2cscanner-а из туториала. Он покажет - есть кто-то на линии, или нету...
http://arduino.ru/forum/programmirovanie/perevod-ds1307-biblioteki-v-v10
http://playground.arduino.cc//Main/I2cScanner
Все заработало) Просто устранил махонький недопай на ноге scl и установил ide 1.0.3. Спасибо всем отклинувшимся, да прибудет с вами Сила;)
Удаляете свою либу из arduino-1.0.3\libraries или перемещаете ее куда нибудь, качаете вот эту либу и туда же в arduino-1.0.3\libraries распаковываете, перезапускаете IDE. Подключать исключительно к А4 и А5, не забываем про подтягивающие резисторы, если таковых нет не модуле.
вместе с либой есть такой пример
Подскажите пожалуйста,сделал все как здесь:скачал IDE 1.0.3,скачал и перенес нужную либу в папку libraries,соединил SDA с А4,SCL с А5.
Скетч не скомпилировался и не залился, выскакивает вот что:

Подскажите что можно сделать,что залить скетч?
Не верно распаковали библиотеку. Вы скорее всего распаковали архив так что у вас в папке DS1307 лежит еще папка DS1307 - вот ее и нужно поместить в libraries, после чего не забудьте перезапустить IDE.
Все верно,в этом ошибка была. В той библиотеки которую вы советовали нет примера для вывода времени на дисплей,только для контроля времени в мониторе порта? Этот скетч скомпилировался,залился.
Есть какой то скетч рабочий для данной библиотеки чтобы запустить наконец время на LCD?
Напишите его сами, объединив свой пример с этим. Сложного в этом ничего нету.
Написал, время пошло,только осталось-появилось 3 проблемы с выводом на дисплей:
1) Время и дата слиты в одной строке
2) Символы мерцают
3) Символы отображаются на фоне белых квадратов
Подскажите что можно изменить в скетче,чтобы исправить и сделать чтобы хотя бы отображалось нормально все?
Не проинициализировали дисплей
Все готово,разделения на 2 строки добились.
Как изменять дату и время теперь? После первой установки времения значение больше не изменяется если пишешь нужное в скетче. И во-вторых вместо 1го месяца прописанного в скетче,над дисплей вывелось 3,а вместо 16 часов 17.
Подскажите плз - почему могут останавливаться часы при отключении arduino от usb питания? По идее ведь должны продолжать идти от внутренней 3v батарейки
Модуль часов и подключение точно такие как на схеме выше (только без использования выхода DS). Скетч и библиотека тоже, в скетче после первой заливки закоментарил блок установки времени и перезалил еще раз. При включенном arduino часы работают как надо. Но если arduino выключить на какое-то время, то после включения время будет продолжено с момента отключения. Т.е. часы без питания не сбрасываются но и не идут.
И еще вопрос - eeprom на этой плате это просто бонус к часам или он нужен для совместной работы с 1307 ?
Спасибо
1. Мертвый кварц. Впаять новый кварц.
2. Посаженная батарейка. Мерить вольтаж бесполезно, на ней всегда около 3 вольт, просто попробовать заменить на новую.
Дело в том что от внешнего питания часы идут, наверно вряд ли кварц
Покупал одновременно 2 модуля, поведение одинаковое.
Ну и что? думаете не могут на обоих модулях быть разряженны обе батарейки?
Может модули пролежали года 3... или батарейки были выпущенны 10 лет назад.
Кстати, а что за модули? описание на них есть? или фото хотябы?
И еще вопрос - eeprom на этой плате это просто бонус к часам или он нужен для совместной работы с 1307 ?
Тот, что в самой микросхеме часов - частично нужен, а вторая микруха: бонус в 32К, про который не все продавцы вкурсе. :) Правда как его полноценно задействовать - я пока не придумал.
Ну и что? думаете не могут на обоих модулях быть разряженны обе батарейки?
Может модули пролежали года 3... или батарейки были выпущенны 10 лет назад.
Кстати, а что за модули? описание на них есть? или фото хотябы?
Модуль самый распространенный -I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR точно как на первом рисунке в этой теме. Батарейки 3.1в. Правда почему-то по схеме батарейка соединена с выводом №3 ds1307 через резистор(R6 на схеме), в рез-те на выводе было 1.7в Пробовал закоротить резистор - все равно часы стоят без внешнего питания.
Я честно говоря думал что проблема в программной части, как-то маловероятно что оба модуля неисправны.
Кто-то пробовал использовать этот модуль? Нет подобной проблемы?
Кто-то пробовал использовать этот модуль? Нет подобной проблемы?
У меня похожий i2s модуль, проблему специально не отслеживал, но вроде бы нету: часы не сбрасываются между выключениями и показывают примерно так, как их удалось поставить.
Батарейки 3.1в.
Я честно говоря думал что проблема в программной части, как-то маловероятно что оба модуля неисправны.
У меня похожий i2s модуль, проблему специально не отслеживал, но вроде бы нету: часы не сбрасываются между выключениями и показывают примерно так, как их удалось поставить.
Не сбрасываются и продолжают считать, пока нет внешнего питания?
Поставил новую батарейку - без изменений
Често говоря, не понятно зачем напряжение батарейки тоже понижается делителем R4,R6. Такое ощущение что расчет был не на батарейку, а на какой-то 4-х вольтовый аккумулятор, более логично подключить батарейку к выводу BatVcc.
Для нормальной работы таймера на VBAT должно подаваться напряжение от 2 до 3,5 вольт. Замерьте напряжение на выводе VBAT при включенном питании и выключенном (1,7в?). Если батарейка новая, то напряжение на VBAT при выключенном питании должно быть чуть больше двух вольт. Так же проверьте смыт ли флюс сплаты.
Я бы сделал следующее:
резистор R4 перепаял бы на место резистора R5, а на место резистора R4 впаял бы конденсатор емкостью 0,1мкФ, но можно и без кондера обойтись.
резистор R6 убрал бы и закоротил площадки ("повесил соплю").
Спасибо за схему!
Действительно, очень похоже что разработчики планировали подзаряжать батарейку/аккумулятр от внешнего источника.
Как только достану лупу и паяльник с тонким жалом попробую разорвать R5, R4, R7, R8. А R6 я уже закоротил. Т.е. приведу схему к стандартному подключению ds1307.
Интересно вот, все эти модули с таким дефектом, или мне 'повезло'
Интересно вот, все эти модули с таким дефектом, или мне 'повезло'
Если Вам это действительно интересно - покажите крупные фото модуля с двух сторон, т.к. делает эти модули далеко не один сборщик...
Заработало. Перерезал по-очереди дорожки у резисторов, каждый раз проверяя часы. В итоге заработало после последнего резистора - R7, между кварцем и питанием.
Заработало. Перерезал по-очереди дорожки у резисторов, каждый раз проверяя часы. В итоге заработало после последнего резистора - R7, между кварцем и питанием.
А у моей схемы R7 (рядом с кварцем) - не запаян.
Вовремя вы это дело вскрыли! Ко мне подобный модуль должен добраться. Правда если это ему удастся. Рашенпост - в последнее время сильно укрепила свои рубежи. Все меньшему количеству китайских товаров удается просочиться через ее доставку. :(
Вовремя вы это дело вскрыли! Ко мне подобный модуль должен добраться. Правда если это ему удастся. Рашенпост - в последнее время сильно укрепила свои рубежи. Все меньшему количеству китайских товаров удается просочиться через ее доставку. :(
Да не, с почтой - это каждый новоый год так. В этом году, кстати, полегче.
По результатам - надо бы попросить модераторов перенести эту тему в "аппаратные вопросы".
Кстати. да. тема оттуда. А свои слепил из чего попало, как попало! кварц прямо к выводам, без пикушек к земле, и работало. Только могли тупо встать! Ну желтый дом! Как механические! Тупо стоят и одно и то же время кажут! Как то даже не по себе. Смотришь на них также тупо! Ах, какая картина для живописца! "Опять стоят!" Но, братия самодельщики предупредили, описали клинику! Емкость по питанию лишает м\с задумчивости.
Еще раз повторяю мерить напряжение на батарейке бесполезно, просто установите новую батарейку.
Да нет, не бесполезно. Я у себя мерял - показало 2.8 вместо номинала 3.5. Из-за этого часы допускали 10 минутные перерывы питания, но на следующие сутки уже показывали ахинею. После замены - все пошло нормально. Правда 3.1 я бы тоже отбраковал...
Для вас тоже повторю - бесполезно. Номинал у CR2032 не 3,5 вольта, а 3 вольта.Andrey_Y_Ostanovsky пишет: Правда 3.1 я бы тоже отбраковал... Вот поэтому и бесполезно.
Ну если очень хочется измерить, то можно! Прижмите к шупам мультиметра светодиод и к батарейке. Если светодиод горит, то смотрим на мультиметр. Ну что полярность поменять если попытка не удалась, это как бы по умолчанию. Светодиод не горит - отрабатываем точность метания батарейки в мусорницу. :)
А вот при покупке батарейки тоже не следует торопиться рвать упаковку. На блистере заводом изготовителем предусмотрена "дырочка в правом боку" а бумажечку с обратной стороны аккуратно иголочкой... ферштейн?
В случае вот такой упаковки (за $4) - никаких дырочек нет.
Ну тогд........скока?! 4 за 20?! Кто последний?! :)
На ибее - чуть дороже ($4.30), но до 14 февраля все равно нет смысла покупать: у китайцев все новый год отмечают...
Внесу и я свои 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кГц, и видимо, он более помехоустойчив, поэтому с ним все работало.
Таким образом, проблема была в длинных проводах I2C - уже при 10-15см с этим модулем перестает работать. DS3231 может работать на частоте I2C до 400кГц, и видимо, он более помехоустойчив, поэтому с ним все работало.
Может все-таки дело в подтягивающих резисторах линий SDA и SCL ? , а не в длинне проводов... может на модуле DS1307 у вас их нет или они большого номинала, в то время как на модуле DS3231 они есть и у них верное сопротивление.
Есть конечно. На модуле с DS1307 они по 3.3к - КМК, меньше делать не имеет смысла. Какой номинал стоит на модуле с 3231 - сейчас не помню, вечером посмотрю. Думаю, там и вовсе 10к стоит, но уж точно не меньше 3.3к.
Вообще, модуль DS1307 готовый, и один в один совпадает с приведенной Вами схемой. Только R7 не распаян.
Кстати, по поводу этого:
У меня на модуле стоит батарейка на 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 недели работы чипа при отключенном питании - для большинства применений этого более, чем достаточно.
С кварцами подтверждаю. В помойку.
мой китайский модуль DS1307 шел с батарейкой LIR2032 3.6V. Часы сами останавливались после отключения платы. А при включении часто продолжали стоять. Да и при запущенной вроде не всегда хотели идти. Вольтметр показал на батарейке в холостую 3.96 В. Поставил вместо нее CR2032 3V - все заработало. Не знаю, проседало ли сильно при нагрузке напряжение на лире, но это вряд ли тк кушают часы совсем мало. Так что в моем случае дело было скорее всего в завышенном напряжении батарейки)) Скорее всего у vahegan проблема тоже в этом. И, кстати, часы эти уже за несколько часов на полсекунды или около того ушли вперед, как мне субьективно кажется. А модули на DS3231 в 3 раза дороже..
Я же написал, на модуле стоит резисторный делитель чтобы привести напряжение батарейки в требуемую область.
Проблема была сугубо в длине проводов и связанной с ней нестабильной работе I2C. Сократив провода, проблема полностью решена.
Залил стандартный скетч для RTC и дисплея. А в мониторе порта и на дисплее вот что, В чем может быть дело?
проверьте правильность подключения модуля ртс, без подключенного модуля будет показывать тоже самое...