ARDUINO Часы на ГРИ v2. Обсуждение проекта

poty

★★★★★★✩
19 Фев 2020
3,257
949
На самой микросхеме (черный прямоугольник на модуле RTC) есть надписи, я просил именно их написать в тему.
Если применяется оригинальный скетч Алекса, то ход времени регулируется таймером dotTimer. Чтобы ускорить ход часов нужно на вкладке 0_data уменьшить число 500, которое стоит в его инициализации. Для замедления, соответственно, увеличить.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,271
1,303
Москва
@Владимир 1234,
Выходит, что что то подвешивает ардуино на 40 мс в каждую минуту, причем так жестко, что даже таймер не работает.
Ну вот если посмотреть одну из прошивок, то видим такую функцию calculateTime - она как раз увеличивает число секунд.
А вызывается она 2 раза в секунду, что бы мигать точками. И работает через таймер: GTimer_ms dotTimer(500);
Так вот у вас получается. что часы отстают на 40 мс каждую минуту. можно ПОПРОБОВАТЬ, не факт. что сработает нормально, сделать этот таймер 480 вместо 500.
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Старик Похабыч, таймер здесь применяется софтверный. Отсюда и нестабильность с периодом его обновления. Я бы просто заменил софтверный таймер на подсчёт в прерывании - оно (прерывание) уже есть. Было бы гораздо стабильнее и можно было бы легко изменять ход часов.
 

Владимир 1234

✩✩✩✩✩✩✩
4 Янв 2021
25
2
Менял 480, 460, 520, 540 без в видимых изменений
Старик Похабыч написал(а): а вашим скетчем по
Что то не то! Либо поменяли не там, либо скетч не оригинальный.
Полусекундный таймер для часов
Скачен с сайта Алекса

@poty,Согласен. Но пока проще всего вот так попробовать.
Ваш скетч по коррекции RTC ,не поможет?
 

Вложения

Владимир 1234

✩✩✩✩✩✩✩
4 Янв 2021
25
2
Нет,ведь часы идут в целом верно, а тут что то другое
Друзья спасибо за помощь
Проблему мою вы знаете, пишите если будут мысли
Я поставил таймер на синхронизацию на 1000000 минут
Это 694 дня:D:D:D:D:D:D, а там подкорректирую
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
Вопросы:
  • сейчас, когда не идёт синхронизация, часы спешат/отстают? На сколько?
  • Ваша запись "1.04" означает 1 минуту 4 секунды или точка - это десятичная точка?
  • хотел бы понять что от чего отличается. Синхронизация идёт каждую минуту по внутренним часам Ардуино. Проходит минута, часы перескакивают вперёд?
 

Владимир 1234

✩✩✩✩✩✩✩
4 Янв 2021
25
2
Вопросы:
  • сейчас, когда не идёт синхронизация, часы спешат/отстают? На сколько?
  • Ваша запись "1.04" означает 1 минуту 4 секунды или точка - это десятичная точка?
  • хотел бы понять что от чего отличается. Синхронизация идёт каждую минуту по внутренним часам Ардуино. Проходит минута, часы перескакивают вперёд?
*Когда Не идёт синхронизация, часы идут ровно.
*1.04 это я так, 1минута 4секунды
* перескока нет. Минута в часах одна за другой, только по секундомеру вижу ,что каждая длится 1м4сек.
Я ставлю синхронизацию через1 минуту, чтобы ежеминутно видеть отклонение
Если поставить ,например через 5 минут, то 4 минуты по секундомеру ровно , а на пятой минута уже длиться 1м 17сек
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
Понятно, то есть это - всё же модуль RTC подвирает. Тогда в коде править бесполезно, возможно, стоит попробовать ускорить RTC с помощью скетча, предложенного @Старик Похабыч .
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,271
1,303
Москва
@poty, Так вроде проверялся модуль часов, и он не врал, за 12 часов проверки не ушел никуда. Ну или тест сделан криво. В любом случае дез модуля часов идет отставание в 4 секунды каждую минуту (по секундомеру).
 

Владимир 1234

✩✩✩✩✩✩✩
4 Янв 2021
25
2
Понятно, то есть это - всё же модуль RTC подвирает. Тогда в коде править бесполезно, возможно, стоит попробовать ускорить RTC с помощью скетча, предложенного @Старик Похабыч .
Да, мне тоже так кажется, если время модуля ГЛАВНЕЕ чем ардуино, то буду пробовать.
Сначала поставить там значение (88) или можно мои 4 секунды пересчитать сразу?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,271
1,303
Москва
Не надо ставить никакие значения сначала ! Там изначально должен быть 0! Вот с нулем и проверьте сутки. А 88 это была корректировка к МОЕМУ модулю, ВАМ она не подойдет.
Прошейте 0, запишите время часов на состояние например 17-00-00 по точному времени и посмотрите сколько будут показывать часы в это время через сутки. Но смотреть надо не по лампам на собранных часах, а любой программой из примеров, которая не устанавливает время, а только выводит его в монитор порта
 

Владимир 1234

✩✩✩✩✩✩✩
4 Янв 2021
25
2
Не надо ставить никакие значения сначала ! Там изначально должен быть 0! Вот с нулем и проверьте сутки. А 88 это была корректировка к МОЕМУ модулю, ВАМ она не подойдет.
Прошейте 0, запишите время часов на состояние например 17-00-00 по точному времени и посмотрите сколько будут показывать часы в это время через сутки. Но смотреть надо не по лампам на собранных часах, а любой программой из примеров, которая не устанавливает время, а только выводит его в монитор порта
Спасибо
Завтра займусь (уже на работе)
1. Загружаю скетч rtc (0)
2.загружаю скетч часов
Ставлю там период синхронизации через 15 мин (как в оригинале)
Записываю время и ждём сутки.
 

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
Не пойму, зачем все эти танцы с бубном для проверки модуля DS3231, когда уже есть готовое приложение для калибровки и установки точного времени. С ним можно протестировать модуль в режиме реального времени, оценить уход частоты кварца, узнать шансы на "спасение". Заодно, установить время с точностью до 1мс, а уход времени, то есть дрейф отрегулировать до 0,1 пи-пи-м. И все это за пару кликов мышкой.

Модуль DS3231 даже не нужно выпаивать для проверки с платы часов. Первое, что нужно сделать, залить в ардуино скетч synchro_RTC.ino. Второе, перекинуть провод с со 2-го пина ардуино на контакт SDW модуля (я это делаю с помощью проводка с двумя "крокодилами" на концах). Третье, установить в программе правильный порт, чтобы получить соединение по USB. Далее действовать согласно инструкции.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,271
1,303
Москва
1) Потому что проще спросить чем искать.
2) Лично мне проще сделать руками , чем через какое то приложение. Приложений нынче столько, что не знаешь какому доверять.
 
  • Лойс +1
Реакции: x3mEr

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
Синхронизация с RTC идет каждую минуту (судя по скрин-фото) и если 4 минуты идет нормально, а потом нет, то даже не знаю что предположить.
На свежесобранных часах с прошивкой 2.5 после старта наблюдал такую картину: при первом включении время установилось по времени компиляции, а затем каждые 15 минут сбрасывалось на это исходное. Например, компиляция была в 09:12, часы стартовали с 09:12, честно отсчитывали время до 09:26, а вместо 09:27 снова появлялось 09:12.
Не знаю, что тут причиной было: вероятнее, настройки в calculateTime() (timeTicker.ino, строки 15-21 - там, где каждые 15 минут синхронизация с RTC), но может быть, период антиотравления катодов (#define BURN_PERIOD 15 в nixieClock_2_v2.5.ino), который тоже на 15 минут настроен.

После прошивки nixieClock_2_v2.6_mod часы вообще не шли. То есть индикация стартового времени была, точка мигала (значит, процессор функционировал), а отсчёта, изменения времени не было. Оно и понятно - в этой прошивке синхронизация с RTC ежеминутная заложена (строка 976 в nixieClock_2_v2.6_mod.ino), и вместо увеличения минут сбрасывалось в стартовое время.
Заменил RTC-модуль - заработали часы. Более глубоко проблему не исследовал.

Может, и у @Владимир 1234 так хитро проблемный RTC-модуль себя обнаруживает?..
 
  • Лойс +1
Реакции: Kyuubey

Старик Похабыч

★★★★★★★
14 Авг 2019
4,271
1,303
Москва
@DmitryZ, Сброс на текущее может происходить только в одном случае - при старте МК, строка с установкой времени на время компиляции прописана именно в setup и при потере питания часами. Получается раз в 15 минут часы перегружают МК.
 
  • Лойс +1
Реакции: Kyuubey

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
Предполагал и такое. Стабильность питания - традиционно первый подозреваемый. На нескольких источниках питания проверял - одинаково проявлялось. Оставлял работать более суток - и всё равно на следующий день часы показывали не более +15 минут от стартовых. А заменой RTC-модуля вылечилось это. Да и не смог я объяснить, почему и как RTC-модуль раз в 15 минут перегружает процессор.
А вот что модуль не считает время, возвращая записанное при первом старте часов значение, объясняет ситуацию вполне. Да и смена программы с другим периодом опроса тоже в соответствии с этой гипотезой проявилась. Что, кстати, сняло подозрение с конденсаторов по питанию.

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

Я впервые с таким дефектом RTC-модулей на DS3231 столкнулся, до этого даже к точности хода китайских модулей претензий особых не было у меня.
Но осциллографа под рукой нет, и особого любопытства к уже решённой проблеме тоже. Потому глубоко не копал, найдя подходящее объяснение.
 
  • Лойс +1
Реакции: Kyuubey

Alex13

★✩✩✩✩✩✩
11 Мар 2020
16
17
Не могу понять почему у народа проблемы с этими часами, собрал прошлым летом и ни каких проблем. Ни в скетч не лазил, ни детали не тусовал, залил,запаял и тикают точно и красиво!
 

Вложения

  • Лойс +1
Реакции: Wan-Derer