RTC DS1302 (Модуль часов реального времени)
- Войдите на сайт для отправки комментариев
Пнд, 22/01/2018 - 16:36
Здравствуйте.
При подключении RTC к ардуино возникла проблема - RTC никак не хочет устанавливать и запоминать время. Менял код, библиотеки, подключение к ардуино - все попусту, выводится 00-00-2000, 00:00:00, DEC, и даже секунды не "идут", монитор порта выводит каждую секунду одно и то же число. Если же отсоединить два или три вывода от цифровых пинов, в мониторе порта выходит 45-25-2099, 45:85:85, SAT (одним словом, белиберда какая - то). В интернете есть аналогичная проблема, но там столкнувшийся с проблемой сам писал библиотеку, я же использовал готовую, и пример из нее. Что это может быть?
Скетч:
// Бибилиотека разработана для RTC модуля http://iarduino.ru/shop/Expansion-payments/chasy-realnogo-vremeni-rtc-tr... // Данный пример устанавливает на модуле заданное время #include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1302, 1, 2, 3); // подключаем RTC модуль на базе чипа DS1302, указывая выводы Arduino подключённые к выводам модуля RST, CLK, DAT // подключаем RTC модуль на базе чипа DS3231, используется аппаратная шина I2C void setup() { delay(300); Serial.begin(9600); time.begin(); time.settime(0,51,21,27,10,15,2); // 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник } void loop(){ if(millis()%1000==0){ // если прошла 1 секунда Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс } }
поиграться с другими библиотеками не пробовали ?
Да, библиотека с официального сайта ардуино. Но там намудрили, простых примеров нет. Пробовал залить что - то - попросту не загружает, выдает ошибку.
Только что еще одну опробовал - то же самое
ну и что что с официального сайта.
баблиотек разных для часов куча.
Ну одну official и две iarduino_RTC. Не помогает
Вообще-то не плохо знать к чему подключал и правильно ли. Возможно нужно подключить библиотеку "Wire.h"
Иван_123, судя по коду в первом сообщении, вы подключаете RTC к ногам 1, 2, 3, при этом используя Сериал-порт. А вы в курсе, что Сериал использует ноги 0 и1? - если у вас в программе используется Serial - к ногам контроллера 0 и1 ничего подключать нельзя
Вы постоянно сбрасываете часы. Уйдите с пина 1 и никогла не трогайте ни грязными руками, ни чистыми (пин 0 - тоже).
.
Окей, поясню: какие только пины не пробовал. Подключал к 3, 4, 5; к 10, 11, 12; 10, 12, 13. Менял код соответственно. Ничего не меняется
Этот код - просто пример из библы, и кстати интересно кто такой пример написал.
Вообще-то не плохо знать к чему подключал и правильно ли. Возможно нужно подключить библиотеку "Wire.h"
пробовал различные комбинации пинов. В интернете куча схем и скетчей для подключения RTC, нигде Wire не используют
Уберите 1, 2, 3 - вы постоянно ресетите модуль сериал портом, как вам написали выше.
Конструктор у библиотеки такой: iarduino_RTC (uint8_t,uint8_t=SS,uint8_t=SCK,uint8_t=MOSI);
Т.е. по умолчанию ожидает увидеть часы на след.пинах: SS, SCK, MOSI.
Посмотрите по картинке распиновки _вашей_ ардуины где у нее эти ноги. Или найдите их вот так: Serial.println(MOSI); ...
Вообще-то не плохо знать к чему подключал и правильно ли. Возможно нужно подключить библиотеку "Wire.h"
пробовал различные комбинации пинов. В интернете куча схем и скетчей для подключения RTC, нигде Wire не используют
Вот пример:
Это реально рабочий код.
Это реально рабочий код.
Только есть одна проблема DS1302 - не I2C.
Это реально рабочий код.
Только есть одна проблема DS1302 - не I2C.
Блин, точно, извиняюсь.
Нет идей?... Может, неисправен DS1302? Или это маловероятно?
Уберите 1, 2, 3 - вы постоянно ресетите модуль сериал портом, как вам написали выше.
Конструктор у библиотеки такой: iarduino_RTC (uint8_t,uint8_t=SS,uint8_t=SCK,uint8_t=MOSI);
Т.е. по умолчанию ожидает увидеть часы на след.пинах: SS, SCK, MOSI.
Посмотрите по картинке распиновки _вашей_ ардуины где у нее эти ноги. Или найдите их вот так: Serial.println(MOSI); ...
А вот интересно, что это за SS, SCK, MOSI. На моем RTC выходы CLK, DAT и RST, что к чему подключать? На различных сайтах разные версии подключения.
И еще, какую библиотеку то брать? Есть одна с официального сайта ардуино; есть универсальная Iarduino_RTC для всех типов RTC, которую почти на всех сайтах с описанием подключения RTC советуют
Т.е. по умолчанию ожидает увидеть часы на след.пинах: SS, SCK, MOSI.
А вот интересно, что это за SS, SCK, MOSI. На моем RTC выходы CLK, DAT и RST, что к чему подключать? На различных сайтах разные версии подключения.
1, 2, 3 куда подключали? Вот в той же последовательности и SS, SCK, MOSI.
Не факт что я 123 правильно подключал)
Вот выдержка из библиотечного файла:
Эххх...
Подключение: RST - 10, DAT - 11, CLK - 13
Как вариант, для проверки работоспособности модуля взять скетч вот отсюда и залить не изменяя: https://playground.arduino.cc/Main/DS1302
Пины там другие, но в дефайнах отмечены.
Может, модуль неисправен?
Хорошо , попробую
Мда. Как то так. Изменил в коде только пины
В этом случае я бессилен. Начинайте прозванивать ноги модулю и провода, если не имеете иных средств диагностики (например анализатора, чтобы посмотреть, дёргает в принципе модуль ногами или нет). У меня такое было (не с часами правда) - на чипе ногу забыли припаять к плате.
Хех. Я то думал я дурак, а эта болезнь с часами оказалась патологией, эпидемией.
Блин а может быть проблема в том что на модуле кварц, допустим, непропаян? Или то, что я взял батарейку CR2025 вместо CR2032?
Я не пойму чем DS3231 хуже? Тем более это последняя разработка. У меня двое часов на этой микрохе - проблем никаких не было. Точность отличная.
Блин а может быть проблема в том что на модуле кварц, допустим, непропаян? Или то, что я взял батарейку CR2025 вместо CR2032?
Причем здесь батарейка? Батарейка - это автономность. А вот кварц имеет смысл проверить.
Я не пойму чем DS3231 хуже? Тем более это последняя разработка. У меня двое часов на этой микрохе - проблем никаких не было. Точность отличная.
DS3231 у меня есть). Согласен, сразу заработало как только включил. Но это не мой модуль(. Брал на время. Поэтому пытаюсь завести тот модуль который был в наборе ардуино. Ну, если ничего не поможет с 1302, закажу 3231.
Долго мучился с такой же проблемой. На просторах интернета нашел библиотеку DS1302RTC. Можно здесь оставлять файлы, не знаю . Ссылка на скачивание https://drive.google.com/open?id=1uPGQjQKTPknnW9WThLQe9tiihFeUOXE9
Таже проблема, часы не включаются. микросхема DS1302 1705C2 +163AN микросхем 3 штуки картина не менятся. при этом, вставляю в эти часы микросхему DS1302 0136A4 619AA все работает.
dub,а Вы это, запустите скетч,который включает часы. А потом уже скетч при котором часы работают.
А Вы думаете я этого не делал? ставлю библиотеку, пробую все примеры и т.д. кстати вторую микросхему и останавливал и снова запускал. большое подозрение что требуется принципиально новая библиотека.
Пробовал библиотеки; DS1302, DS1302RTC, RTC, iarduino_RTC, arduino-ds1302-master . и еще какую то, точно не помню.
Столкнулся с такой же проблемой. В наличии две платы UNO3 обе китайские аналогии, три (модуля DS1302 покупал вместе) и один модуль HYM1302 (надпись на DIP корпусе) шел в комплекте с набором ардуино.
Так вот три модуля DS1302 (надпись на DIP корпусе) не запускаются, а тот что из комплекта вообще проблем не знал? все сразу запустилось и заработало. На разных платах ардуино пробовал заметил интересную особеность с питанием +5 V рабочий модуль (HYM1302) время начинает показывать с 00:00:00 (время идет как таймер),выключаю UNO, перетыкаю на +3V (без других манипуляций) включаю UNO время показывает как надо (14:52:11). Установку и настройку времени делел через программу FLPROG встроеной утилитой(программой) (если правильно все понял то там используют библиотеку iarduino_RTC).
Время смотрел на дисплее 1602,если надо могу схемку выложить
Достал микросхему HYM1302 заменил её на микруху DS1302 с не рабочего модуля (потенциально, запустить пока не могу) подаю питание и на дисплее вижу 00:00:00 время идет как таймер. Взял пример из библиотеки iarduino_RTC gettime, поменял пины на свои, прошил уно, включил монитор порта, там веселые надписи 00-00-2000, 00:00:00, Dec
. Подозреваю все же неисправность именно микрух DS1302 1705с2+163AN.
Кстати пробовал еще так со старой материнки кварц 32768п рипоял его напрямую к ногам микрухи (2 и 3ноги) корпус на землю (4 нога) попробывал нифига или кварц убил или схему добил или просто руки кривые но ничего нового не произошло. Буду искать кондеры на 6 пФ и резисторы добавить может поможет.
Кстати вставил HYM1302 в модуль откуда достал DS1302 все сразу заработало...похоже все же проблема в микрухе.
Всем привет!
Я бы посоветовал выкинуть все DS1302, но если других нет, то просто поставьте резистор на 4,7-10 кОм между выводами GND Ваших часов и выводом GND Arduino. Еще один способ - подключить питание к часам не от вывода 5V а от вывода 3V3 Arduino.
Но все же лучше выкинуть DS1302 и не жалеть об этом, так как точность их хода иногда достигает ±5 мин в неделю. Песочные часы точнее будут!
Всем привет!
Я бы посоветовал выкинуть все DS1302, но если других нет, то просто поставьте резистор на 4,7-10 кОм между выводами GND Ваших часов и выводом GND Arduino. Еще один способ - подключить питание к часам не от вывода 5V а от вывода 3V3 Arduino.
Но все же лучше выкинуть DS1302 и не жалеть об этом, так как точность их хода иногда достигает ±5 мин в неделю. Песочные часы точнее будут!
Добрый день. Какой модуль реального времени посоветуте? Я пробывал несколько китайских модулей, но все спешат на 5-10 в месяц. Лучше взять один раз нормальный модуль, чем перебирать разные китайские некорректно рабочие.
Заранее благодарен.
DS3231, лучше вряд-ли отыщете.
можно еще за PCF8583 паматреть, у ей вся мощь Филипса за спиной, но там самому паять надо
PCF8563, лежит в коробке, на тесте работала, точность не измерял.
https://ru.aliexpress.com/item/1PCS-PCF8563-PCF8563T-8563-IIC-Real-Time-...
Проблемма в кварце.
Замена на выпаянный из материнки сильно помогает.
Модуль DS1302 в итоге оказался действительно не на I2C или SPI, а на некой 3-wire шине.
Делал очередной псевдо-астротаймер для цветочной подсветки и в итоге всё завелось.
Вот код:
АЛГОРИТМ:
Если часы не установлены спросит в UART часы, минуты и год.
Иначе Включит нагрузку на 3 сек и перейдёт в рабочий режим.
Раз в минуту смотрит который час и переключает нагрузку по условию.
ОПИСАНИЯ ПАРАМЕТРОВ ФУНКЦИЙ:
Модуль DS1302 в итоге оказался действительно не на I2C или SPI, а на некой 3-wire шине.
Сначала нужно испробовать все варианты, а затем прочесть инструкцию. Как обычно.