Таймер времени DS1302

Тема в разделе "Arduino & Shields", создана пользователем allasc, 27 авг 2016.

  1. allasc

    allasc Нуб

    Прикупил такой девайс
    https://ru.aliexpress.com/item/In-s...-Cable-for-Arduino-Wholesale/32606470192.html

    [​IMG]

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

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

    проблема в том что я не могу прочитать время
    какието прыгающие цыфры считываются

    отключаю провод GND (земля) время считывается отлично вплоть до секунд, но часы не ходят
    подключаю землю, опять каша в переменных при считывании, но часы идут
    потомучто отлючаю землю, считываю время, вижу разницу

    что это может быть, как земля может портить получение данных?
    часы по идее работают у меня
    но прочитать данные я могу только при отлюченной GND, при этом часы просто останавливаются
    перепробывал кучу библиотек
     
  2. Vad33

    Vad33 Капитан-оригинал

    Секундочку, если батарея стоит, но GND не подключен к ардуино, то часы останавливаются?
    Схему подключения и программу - в студию. :)
     
  3. allasc

    allasc Нуб

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

    подключил таимер стандартно, как в учебниках написано
    питание 5 вольт, остальное по пинам

    короче если я хочу считать время я должен подключить и отключить землю
    и тогда я получу новое время на момент отключения земли
     
  4. Vad33

    Vad33 Капитан-оригинал

    Ну тогда два варианта: или модуль бракованный, или ... руки.
    Есть подозрение, что перепутано подключение ножек.
     
    9xA59kK нравится это.
  5. allasc

    allasc Нуб

    нда
    ну хоть подключать научился... поиду куплю дорогой у местных диллеров
     
  6. allasc

    allasc Нуб

    решил проблему
    надо читать первоисточник
    запоминайте
    DS1302 надо запитывать через пины
    http://playground.arduino.cc/Main/DS1302RTC

    через них подаем напряжение
    Код (C++):
      // Activate RTC module
      digitalWrite(DS1302_GND_PIN, LOW);
      pinMode(DS1302_GND_PIN, OUTPUT);

      digitalWrite(DS1302_VCC_PIN, HIGH);
      pinMode(DS1302_VCC_PIN, OUTPUT);
    и вуаля все работает

    из минусов.... целых два пина заняты под питание!

    пысы на питание с платы я подавал 5 вольт, 3 вольта... может просто меньше надо подавать... сколько там в пинах поиду проверю
     
    Последнее редактирование: 28 авг 2016
  7. Vad33

    Vad33 Капитан-оригинал

    Месье знает толк в извращениях. (c) :)
     
    Jevega нравится это.
  8. allasc

    allasc Нуб

    сам в шоке...
    вольтаж через пины практически такойже...

    ардуино уно китайский развешто
    стоит прослоичка Troyka-Shield... вроде тоже не преступление
    может там питание с платы с какойто частотой передается..... осцилографа под рукой нет
    жалко конечно два пина заняты, но пока не критично
    работает и работает
     
  9. ImrDuke

    ImrDuke Гик

    Дабы не плодить новую тему, спрошу тут.
    Часы DS1302 убегают приблизительно на 2 минуты в день вперед.
    Кварц перепаял из материнской платы - эффекта нет.
    Что то еще можно сделать или только программно корректировать?
     
  10. Vad33

    Vad33 Капитан-оригинал

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

    ImrDuke Гик

    Схему вытащил-вставил, контакты почистил.

    [​IMG] [​IMG]
     
  12. ostrov

    ostrov Гуру

    Странный порядок какой то.
    Код (C++):
      digitalWrite(DS1302_GND_PIN, LOW);
      pinMode(DS1302_GND_PIN, OUTPUT);

      digitalWrite(DS1302_VCC_PIN, HIGH);
      pinMode(DS1302_VCC_PIN, OUTPUT);
     
  13. Vad33

    Vad33 Капитан-оригинал

    upload_2017-1-13_19-7-10.png
    upload_2017-1-13_19-9-11.png

    Хорошо бы все канавки проверить с лупой и зубочисткой, чтобы нигде волосков или капелек олова не оставалось. можно еще попробовать корпус кварцевого резонатора на GND подпаять, только аккуратно, чтоб не перегреть корпус. Если не поможет, тогда пробовать саму микросхему заменить.

    P.S. А вообще DS3132 в этом плане получше, все внутри.
     
  14. ImrDuke

    ImrDuke Гик

    Это я уже перепаивал кварц с материнской платы. При заводской пайке время так же убегало.
     
  15. ImrDuke

    ImrDuke Гик

    Убегает на +1 сек каждые 10 минут.
     
    Последнее редактирование: 16 янв 2017
  16. ostrov

    ostrov Гуру

    Сделать программную корректировку. Каждую, например, полночь откатывать время на сколько там нужно назад. А вообще я бы новый RTC купил.
     
  17. ImrDuke

    ImrDuke Гик

    Сделал программно. Каждые 10 минут вычитается 1 секунда.
    Какой лучше модуль взять? DS3231 подойдет?
     
  18. Karabas

    Karabas Гик

    Если я правильно помню, модуль 1020 нужно запитывать с резистором в разрыве GND, сам удивился, но без резистора время считывалось через раз. Номинал не помню, то ли 1к, то ли 10к. Именно на GND а не VCC.
     
  19. ImrDuke

    ImrDuke Гик

    Так и сделано.
     
  20. Vad33

    Vad33 Капитан-оригинал

    Думаю замена микросхемы может все прояснить. Снаружи косяк или внутри.
    Ну и батарейка там стоит, наверно, хорошая и запаяна хорошо?!

    У меня практически такой же модуль стоит. Убегает конечно, но это недели и месяцы.