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

Globazin

★✩✩✩✩✩✩
13 Янв 2020
18
26
Здесь я с @poty, согласен. Пытался тоже откалибровать модуль, но без ожидаемого результата. .выпаял неисправный впаял уже проверенный и о чудо, все работает "как в аптеке"
 

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
...
Исходя из этого - да, в момент калибровки можно добиться (наверное) от исправного модуля весьма точного хода времени, но в долговременной перспективе это вряд ли возможно.
увы, ничто не вечно под луной, как говорил товарищ Шекспир..
Если для того, чтобы откалибровать RTC каждый год нужно проводить многодневные танцы с бубном, то лучше воспользоваться тогда простой коррекцией времени через Wi-Fi, USB, GPS - любым способом, не трогая Trim Register.
Регистр не священная корова, чтобы его не трогать, он и создан для того, чтобы компенсировать уход частоты со временем. Потому и называется Aging Offset. В упомянутом вами графике ничего подозрительного нет, если не эксплуатировать модуль при экстремальных температурах. Думаю, что у подавляющего большинства температура в жилищах не опускается ниже +10 и не превышает +35°С. Если же кто-то не догадается поставить часы на батарею центрального отопления ))

"простой коррекцией времени через Wi-Fi, USB, GPS"? Это как в сказке что ли "и снесу я вам не золотое, простое.." а прошивку кто писать под esp8266 будет, да так, чтобы не отваливался Wi-Fi через пару дней? А жрать esp сколько будет?
Никаких многодневных танцев не нужно, подключаете часы через USB, заливаете прошивку, соединяете 2-й Пин с контактом SQW, калибруете и вуаля можете заливать прошивку часов обратно. Всё. Больше ничего делать не нужно, ни через год, ни через два. Это как в анекдоте про Ходжу Насреддина..
Если модуль изначально врёт настолько сильно, как у @Владимир 1234 например, то смысла его корректировать вообще не вижу никакого. Здесь либо проблемы с подключением этого модуля, либо неисправность.
не нужно приписывать мне то, чего я не говорил. если приложение покажет дрейф, скажем, в 100 ppm, то Любому, думаю, будет понятно, что нет никакого смысла в коррекции через Aging Offset. Или что-то не так?
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,257
949
В упомянутом вами графике ничего подозрительного нет, если не эксплуатировать модуль при экстремальных температурах.
Не совсем. Первое, что Вас должно было смутить, что график не соответствует расчётным (Вашим и моим) значениям коррекции. Например, при коррекции -128/127 график находится явно под горизонтом 10, а не 12,7, как в расчётах. Второе - зависимость от температуры даже в рамках комнатных значений значительно повышается. Т.е., к 2 ppm анонсированных добавляется ещё некоторая нестабильность, вызванная изменением Trim Register. У меня есть предположения на этот счёт, но смысла их высказывать не вижу, поскольку это лишь предположения.
Регистр не священная корова, чтобы его не трогать
Но и, как выясняется, не панацея. Для целей практического использования не вижу необходимости в принципе с ним заморачиваться.
не нужно приписывать мне то, чего я не говорил. если приложение покажет дрейф, скажем, в 100 ppm, то Любому, думаю, будет понятно, что нет никакого смысла в коррекции через Aging Offset. Или что-то не так?
Так, только если в часах @Владимир 1234 модуль уже показывает, что называется, "из коробки" уход за 10 минут на несколько секунд, то советовать человеку на всякий случай проверить его в приложении - не очень корректно.
Никаких многодневных танцев не нужно, подключаете часы через USB, заливаете прошивку, соединяете 2-й Пин с контактом SQW, калибруете и вуаля можете заливать прошивку часов обратно.
Из моей практики ~23 часа (т.е. сутки) вполне хватает, чтобы быть уверенным в точности показаний дрейфа до +-0,1 ppm. Десять минут это очень мало, хотя можно сразу оценить, дефектый ли кварц.
"простой коррекцией времени через Wi-Fi, USB, GPS"? Это как в сказке что ли "и снесу я вам не золотое, простое.." а прошивку кто писать под esp8266 будет, да так, чтобы не отваливался Wi-Fi через пару дней? А жрать esp сколько будет?
Т.е., вопросов к GPS и USB не возникло?
Wi-Fi для целей NTP можно реализовать и на той же nano с помощью внешних модулей (раз уж проект использует внешние модули для своей работы, тот же DS3231). В качестве альтернативы - GSM-модуль, с которого тоже можно брать время. Да и на ESP тоже делают здесь немало поделок. Коррекция не требует стабильного коннекта, предполагается, что всё исправно и уход частоты от кварца Ардуино не настолько велик, чтобы набрать проблемную ошибку за несколько часов или даже дней. При наличии DS3231 - тем более.
 

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
Не совсем. Первое, что Вас должно было смутить, что график не соответствует расчётным (Вашим и моим) значениям коррекции. Например, при коррекции -128/127 график находится явно под горизонтом 10, а не 12,7, как в расчётах. Второе - зависимость от температуры даже в рамках комнатных значений значительно повышается. Т.е., к 2 ppm анонсированных добавляется ещё некоторая нестабильность, вызванная изменением Trim Register. У меня есть предположения на этот счёт, но смысла их высказывать не вижу, поскольку это лишь предположения.

Но и, как выясняется, не панацея. Для целей практического использования не вижу необходимости в принципе с ним заморачиваться.
График графиком (тем более там опечатки), но обратимся к докам:
Positive aging values add capacitance to the array,
slowing the oscillator frequency. Negative values
remove capacitance from the array, increasing the
oscillator frequency.
The change in ppm per LSB is different at different
temperatures. The frequency vs. temperature curve is
shifted by the values used in this register. At +25°C,
one LSB typically provides about 0.1ppm change in
frequency.
Перевод:
Положительные значения (> 0) в регистре aging увеличивают емкость массива, замедляя частоту осциллятора. Отрицательные же значения (< 0) уменьшают емкость массива, увеличивая частоту осциллятора.
Изменение ppm в формате LSB (т.е. -128..+128) отличается при разных температурах. График зависимости частоты от температуры сдвигается на значения, используемые в этом регистре. (Но!) При + 25 °C на каждую единицу LSB обычно соответствует изменению частоты примерно на 0,1 ppm. (т.е. 1 ≃ 0,1 ppm)

"примерно" - связано более с целочисленной арифметикой, поэтому рассчётам можно всецело доверять. Практически это подтверждено на десятке модулей.

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

jewgenwinner

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

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

poty

★★★★★★✩
19 Фев 2020
3,257
949
Должен работать с любым модулем. "Микро" это типа "мини"? Для него немного проблемно SQW вывести
 

jewgenwinner

✩✩✩✩✩✩✩
26 Янв 2021
3
0
Должен работать с любым модулем. "Микро" это типа "мини"? Для него немного проблемно SQW вывести
Модуль вот такой
Screenshot_2021-02-04-07-46-59-1.png
А sqw я подпаял проводок к 3 ножке микросхемы ds3231. Потом при дальнейших тестах заметил, что все-таки подключается на секунду, и даже можно успеть нажать info и получить данные с модуля, но потом сразу disconect. а вот с синхронизацией времени не работает, нажимаешь, но там failed всегда.
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
Да, работать должен. А к какому Ардуино подключаете?
 

jewgenwinner

✩✩✩✩✩✩✩
26 Янв 2021
3
0
Должен работать с любым модулем. "Микро" это типа "мини"? Для него немного проблемно SQW вывести
Да, работать должен. А к какому Ардуино подключаете?
китайский клон arduino nano с драйвером ch340, через нее же подключал большой модуль. У вас маленький получилось подключить, откалибровать?Может мои мини ds3231 безнадежно бракованные, отстают ужасно, температура врет на 20 градусов, я их поэтому отбраковал, но думал вдруг калибровка им поможет. Часы с более менее нормальным мини модулем пока не пробовал калибровать, не хочется испортить по не знанию, в инструкции для приложения на githabe в качестве примера же указан большой модуль, вот я и подумал вдруг программа предназначена для калибровки только больших модулей.
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,257
949
Я этой программой не пользовался, но микросхема в обоих модулях применяется одна и та же, да и соединение тоже одинаковое, поэтому чудес быть не должно. Единственное, иногда в маленькие модули ставят микросхему DS3231М, а не DS3231S - они с этой программой работать не будут, так как SQW у них не настраивается (всегда 1Гц). Впрочем, я не знаю, на какую частоту ориентируется эта программа.
 

Dark-Dante

✩✩✩✩✩✩✩
25 Ноя 2020
26
3
китайский клон arduino nano с драйвером ch340, через нее же подключал большой модуль. У вас маленький получилось подключить, откалибровать?Может мои мини ds3231 безнадежно бракованные, отстают ужасно, температура врет на 20 градусов, я их поэтому отбраковал, но думал вдруг калибровка им поможет. Часы с более менее нормальным мини модулем пока не пробовал калибровать, не хочется испортить по не знанию, в инструкции для приложения на githabe в качестве примера же указан большой модуль, вот я и подумал вдруг программа предназначена для калибровки только больших модулей.
У меня такой же модуль как у Вас на картинке, погрешность часов менее секунды в сутки в плюс, ничего не калибровал, видимо фейковые микрухи на Ваших стоят.
 

Aleksey_37

✩✩✩✩✩✩✩
2 Янв 2021
9
1
Приветствую всех!

Собрал три экземпляра часов ГРИ v2, на прошивке v2.5. Особых проблем не возникло НО, появилась потребность в ночном режиме. Включив который, я понял, что он практически не работает. Покопавшись, понял, что беда в генераторе анодного напряжения, который при уменьшении нагрузки, идёт вразнос. (в старых устройствах, в нагрузку таких схем ставили электровакуумные стабисторы ) То, уменьшение яркости, которое задаётся параметром #define INDI_BRIGHT_N 3, (через оптопары) тут же компенсируется подъёмом анодного напряжения, и яркость ламп остаётся почти неизменной. Напряжение при этом, подскакивает со 165 до 270, а ток растёт с 180 мА до 230мА, к тому же идёт разогрев компонентов анодного генератора, да и режимы оптопар, подходят к критическим значениям.
Компенсировать всё это, и добиться нормального ночного режима, и режима анодного генератора, можно изменяя параметр #define DUTY , приблизительно по вот такой зависимости:

#define INDI_BRIGHT_N 23 - #define DUTY 170

#define INDI_BRIGHT_N 20 - #define DUTY151

#define INDI_BRIGHT_N 15 - #define DUTY148

#define INDI_BRIGHT_N 10 - #define DUTY 125

#define INDI_BRIGHT_N 5 - #define DUTY 105

#define INDI_BRIGHT_N 3 - #define DUTY 102

#define INDI_BRIGHT_N 1 - #define DUTY 99

(всё это касается и #define INDI_BRIGHT)

Напряжение, при таких параметрах, на конденсаторе, будет приблизительно 165в. Приблизительно, потому что лампы, индицируя разные цифры, потребляют немного разный ток. Во всех моих трёх часах, разброс в зависимости от индицируемого времени, составил от 163в. до 170в.
При этом ток в ночном режиме, (при #define INDI_BRIGHT_N 3) упал с 230мА до 80мА. Цифры стали светится приятным приглушённым светом совершенно не бъюшим по глазам в полной темноте. "Холодный старт" ламп, остался стабильным.
(По хорошему, надо бы, завести контроль этого напряжения, на саму ардуино, но это потребует изменения схемы.)

Поскольку сам я это не осилю, может кто возьмётся, и привяжет эти три (#define INDI_BRIGHT #define INDI_BRIGHT_N и #define DUTY ) параметра друг к дружке, по вышеприведённой зависимости. Может и сгоревших оптопар у народа поубавится.:)

IMG_20210206_163116~2.jpg
 

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
Интересная разработка! Подскажите программа работает только с большим модулем часов, микро DS3231 нельзя им откалибровать? У меня к микро модулю почему-то даже не подключается. К большому подключилось и все отрабатывает как в инструкции.
Большой модуль DS3231 ZS-042 в отличии от MINI имеет на борту флешь память AT24C256, в которую ардуино записывает дату последней установки времени (в UTC формате). Потом, по этой метке рассчитывется дрейф осциллятора. Отсутствие AT24C256 в данном случае не очень критично, т.к. дату обновления можно легко перенаправить, к примеру, в один из регистров будильника DS3231 (их у него два).

В вашем же случае проблема в другом. Судя по скрину, приложение не получает подтверждения о статусе и срабатывает таймаут. Закомментируйте в скетче строку 108
// while ( millis() - tickCounter > 998 );
и все кроме калибровки должно снова работать.

Теперь о особенностях модуля mini на DS3231. Не во всех mini модулях, которыми торгуют китайцы, выведен SQW/Interr на внешний разъем, даже если используются чипы DS3231SN. Поэтому нужно смотреть/прозвонить разводку платы и при отсутствии "дорожки" подпоять перемычку с 3-й ноги микросхемы на контакт SQW. (SQW использует 1Hz сигнал для "сброса" счетчика millis )
 
Изменено:
  • Красота! +2
Реакции: Dimasssiusis

Dimasssiusis

★✩✩✩✩✩✩
20 Янв 2020
128
49
Большой модуль DS3231 ZS-042 в отличии от MINI имеет на борту флешь память AT24C256, в которую ардуино записывает дату последней установки времени (в UTC формате). Потом, по этой метке рассчитывется дрейф осциллятора. Отсутствие AT24C256 в данном случае не очень критично, т.к. дату обновления можно легко перенаправить, к примеру, в один из регистров будильника DS3231 (их у него два).

В вашем же случае проблема в другом. Судя по скрину, приложение не получает подтверждения о статусе и срабатывает таймаут. Закомментируйте в скетче строку 108
// while ( millis() - tickCounter > 998 );
и все кроме калибровки должно снова работать.

Теперь о особенностях модуля mini на DS3231. Не во всех mini модулях, которыми торгуют китайцы, выведен SQW/Interr на внешний разъем, даже если используются чипы DS3231SN. Поэтому нужно смотреть/прозвонить разводку платы и при отсутствии "дорожки" подпоять перемычку с 3-й ноги микросхемы на контакт SQW. (SQW использует 1Hz сигнал для "сброса" счетчика millis )
Я тоже с такой проблемой столкнулся и Ваше решение помогло, Спасибо огромное! Сейчас буду пробовать калибровку, крайне полезное приложение!

Вот только при попытке коррекции времени вот такая фигня:
1612622430360.png
Я припаялся к третьей ножке DS3231, вывел на D2 на ардуинке, но не помогает

UPD: А, ну Вы и написали: "и все кроме калибровки должно снова работать. " Ну а как сделать так, чтобы калибровка работала?)) А то какой смысл в приложении калибровки, которое не умеет калибровать модуль?))
 
Изменено:

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
Я тоже с такой проблемой столкнулся и Ваше решение помогло, Спасибо огромное! Сейчас буду пробовать калибровку, крайне полезное приложение!

Вот только при попытке коррекции времени вот такая фигня:
Посмотреть вложение 21978
Я припаялся к третьей ножке DS3231, вывел на D2 на ардуинке, но не помогает

UPD: А, ну Вы и написали: "и все кроме калибровки должно снова работать. " Ну а как сделать так, чтобы калибровка работала?)) А то какой смысл в приложении калибровки, которое не умеет калибровать модуль?))
Сообщите, что за систему вы используете, версию программы и какой RTC модуль?

По поводу калибровки. Если на RTC модуле отсутствует флешь AT24C256, то чтобы калибровать нужно произвести изменения в скетче: Для хранения метки времени (4 байта) можно воспользоваться EEPROM ардуино. Для этого нужно отредактировать скейч, переписав функции работы с флеш памятью AT24C256. Я бы воспользовался библиотекой EEPROM.h и функциями EEPROM.get(address, byte) и EEPROM.put(address, byte) вместо функций i2c_eeprom_read_byte, i2c_eeprom_write_byte.
 

Dimasssiusis

★✩✩✩✩✩✩
20 Янв 2020
128
49
Сообщите, что за систему вы используете, версию программы и какой RTC модуль?

По поводу калибровки. Если на RTC модуле отсутствует флешь AT24C256, то чтобы калибровать нужно произвести изменения в скетче: Для хранения метки времени (4 байта) можно воспользоваться EEPROM ардуино. Для этого нужно отредактировать скейч, переписав функции работы с флеш памятью AT24C256. Я бы воспользовался библиотекой EEPROM.h и функциями EEPROM.get(address, byte) и EEPROM.put(address, byte) вместо функций i2c_eeprom_read_byte, i2c_eeprom_write_byte.
Да точно такое же все, как у товарища jewgenwinner
Модуль DS3231 mini, Windows 10, версия программы:
1612624832341.png
 

andrycha91

✩✩✩✩✩✩✩
11 Дек 2019
13
4
Всем привет.
Собрал часы на ИН-12.
Когда он включен в сеть, каждую минуту добавляет еще 7 секунд. Когда выключен из сети все нормально. Входной конденсатор стоит, конденсатор на питание микро ds3231 стоит керамический 0.4 мкФ. Блоки питания уже перепробував штук наверное 5. Все безрезультатно. Я так понимаю что игры с калибровкой rtc не дадут результата?
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
@andrycha91, калибровка - это модуль DS3231, который как раз работает, когда питание выключено, а в этот момент, как Вы утверждаете, всё хорошо.
При включении питания работает внутренний таймер, который синхронизируется при включении и каждые 15 минут, если правильно помню. Т.е., это часы в Ардуино идут неправильно. Это, кстати, легко поправить: найдите на вкладке 0_data строку
timerMinim dotTimer(500);
и увеличьте, если Ваши часы спешат. У Вас каждую минуту они спешат на 7 секунд, т.е., нужно увеличить на
(7/120)*1000=58 единиц.
Но вообще, странно, что Ардуино настолько уходит по времени. Впрочем, от китайцев можно ждать всего, чего угодно.
 

Dimasssiusis

★✩✩✩✩✩✩
20 Янв 2020
128
49
@andrycha91, калибровка - это модуль DS3231, который как раз работает, когда питание выключено, а в этот момент, как Вы утверждаете, всё хорошо.
При включении питания работает внутренний таймер, который синхронизируется при включении и каждые 15 минут, если правильно помню. Т.е., это часы в Ардуино идут неправильно. Это, кстати, легко поправить: найдите на вкладке 0_data строку
timerMinim dotTimer(500);
и увеличьте, если Ваши часы спешат. У Вас каждую минуту они спешат на 7 секунд, т.е., нужно увеличить на
(7/120)*1000=58 единиц.
Но вообще, странно, что Ардуино настолько уходит по времени. Впрочем, от китайцев можно ждать всего, чего угодно.
У меня попадались такие ардуинки, которые тоже сильно спешили, там вообще партия была отвратительная, все 10 штук были очень плохие, так что ничего удивительного))
 
  • Лойс +1
Реакции: andrycha91

andrycha91

✩✩✩✩✩✩✩
11 Дек 2019
13
4
@andrycha91, калибровка - это модуль DS3231, который как раз работает, когда питание выключено, а в этот момент, как Вы утверждаете, всё хорошо.
При включении питания работает внутренний таймер, который синхронизируется при включении и каждые 15 минут, если правильно помню. Т.е., это часы в Ардуино идут неправильно. Это, кстати, легко поправить: найдите на вкладке 0_data строку
timerMinim dotTimer(500);
и увеличьте, если Ваши часы спешат. У Вас каждую минуту они спешат на 7 секунд, т.е., нужно увеличить на
(7/120)*1000=58 единиц.
Но вообще, странно, что Ардуино настолько уходит по времени. Впрочем, от китайцев можно ждать всего, чего угодно.
Не знаю каким чудом, но отставание на 7 секунд прошло без изменения значений.
Но сейчас после каждой синхронизации с РТЦ (установил каждые 3 мин) часы начинают отставать на несколько секунд.
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,257
949
Приведите пример кода. Судя по всему - проблема там.
 

Кирилл_О

✩✩✩✩✩✩✩
3 Сен 2020
4
0
Люди добрые, помогите кто может. Кто может помогите.
Прочитал форум и ответа не нашел (
Такие проблемы уже были.
После установки ламп напряжение на конденсаторе на максимально выкрученном значении 164V. И ни в какую
До установки ламп выставил спокойно 180V.
Блок питания Гнусмас 5М 1А
Ничего сильно не греется.
Лампы горят тускло в тестовой прошивке.
 

Вложения

Dimasssiusis

★✩✩✩✩✩✩
20 Янв 2020
128
49
Люди добрые, помогите кто может. Кто может помогите.
Прочитал форум и ответа не нашел (
Такие проблемы уже были.
После установки ламп напряжение на конденсаторе на максимально выкрученном значении 164V. И ни в какую
До установки ламп выставил спокойно 180V.
Блок питания Гнусмас 5М 1А
Ничего сильно не греется.
Лампы горят тускло в тестовой прошивке.
Попробуйте поменять значение скважности ШИМ, например на 170 (просто увеличить на 5-10 ндиниц)
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Кирилл_О, во-первых, что касается напряжения - @Dimasssiusis сказал верно, это может помочь. Причина - скорее всего дроссель, но на рисунке не упомянут ещё диод. Он должен быть импульсный! Обязательно.
Теперь про
Лампы горят тускло в тестовой прошивке.
От напряжения это зависит, конечно, но не так сильно, как кажется. Т.е., "добив" напряжение до 170 Вы серьёзного прироста в яркости не получите. Скорее всего дело в фейковых оптронах. Это если:
а) случайно яркость не выставили маленькую в скетче;
б) не смотрели на часы в ночном режиме, где может быть выставлена совсем маленькая яркость.
Также я заметил, что у Вас не установлен входной конденсатор 470мкФ и байпас на DS3231. Установите, реально может помочь.