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

SergKara

✩✩✩✩✩✩✩
6 Июл 2020
9
0
@SergKara, показываются 4 разных цифры на лампах? Точка мигает?
Показывает например 23:42 секундная точка не мигает подсветка тоже не "дышит". Просто зависает и пока не перезапустить ничего не изменяется.
 

poty

★★★★★★✩
19 Фев 2020
3,250
948
@SergKara, яркость при этом относительно нормы меняется? Прошивка какая?
 

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
Показывает например 23:42
Забавно. Значит, прерывания отрабатываются - динамическая индикация работает. Но где-то в программе глухой цикл или что-то подобное. Надо подумать. Пока просто совет: вывести кнопку Reset для доступа снаружи.
 
  • Лойс +1
Реакции: SergKara

poty

★★★★★★✩
19 Фев 2020
3,250
948
@DmitryZ, самое очевидное место - опрос DS3231. Но тут очень многое зависит от того, какой скетч применяется.
 
  • Лойс +1
Реакции: DmitryZ

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
@poty, согласен. Но подумать не мешает. У меня самого на разных часах - и на Atmega328, и на ESP8266 - годами работают DS3231, а вот месяца 2 как началось: то время не считают, то при инициализации подвисают, то количество звёзд в видимой части Млечного Пути вместо времени выдают... Причём, эти модули приобретались давно, вместе с теми, что работают без нареканий.
 

SergKara

✩✩✩✩✩✩✩
6 Июл 2020
9
0
@SergKara, яркость при этом относительно нормы меняется? Прошивка какая?
Яркость относительно нормы не меняется, прошивка - nixieClock_2_v2.5

Забавно. Значит, прерывания отрабатываются - динамическая индикация работает. Но где-то в программе глухой цикл или что-то подобное. Надо подумать. Пока просто совет: вывести кнопку Reset для доступа снаружи.
Идея с выносом кнопки, конечно, интересная, но каждые четыре часа прожимать reset такое себе занятие)
 

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

★★★★★★★
14 Авг 2019
4,269
1,303
Москва
Я на ответственные вещи ставлю вочдог, что бы он сам перегрузил плату если что. Можно и тут поставить и скорее всего будет работать, но все же надо выяснять причину зависания, т.к. вочдог это средства нештатных ситуаций все же, а не регулярного использования. Т.е. он то из за этого не испортится, но сама ситуация не правильная
 
  • Лойс +1
Реакции: DmitryZ и SergKara

АртёмЗ

✩✩✩✩✩✩✩
11 Фев 2021
2
0
просматривал прошивку и возник вопрос надо ли что то указывать в этих
/ распиновка ламп
#if (BOARD_TYPE == 0)
const byte digitMask[] = {7, 3, 6, 4, 1, 9, 8, 0, 5, 2}; // маска дешифратора платы in12_turned (цифры нормальные)
const byte opts[] = {KEY0, KEY1, KEY2, KEY3}; // порядок индикаторов слева направо
const byte cathodeMask[] = {1, 6, 2, 7, 5, 0, 4, 9, 8, 3}; // порядок катодов in12

#elif (BOARD_TYPE == 1)
const byte digitMask[] = {2, 8, 1, 9, 6, 4, 3, 5, 0, 7}; // маска дешифратора платы in12 (цифры вверх ногами)
const byte opts[] = {KEY3, KEY2, KEY1, KEY0}; // порядок индикаторов справа налево (для IN-12 turned) и ин-14
const byte cathodeMask[] = {1, 6, 2, 7, 5, 0, 4, 9, 8, 3}; // порядок катодов in12

#elif (BOARD_TYPE == 2)
const byte digitMask[] = {9, 8, 0, 5, 4, 7, 3, 6, 2, 1}; // маска дешифратора платы in14
const byte opts[] = {KEY3, KEY2, KEY1, KEY0}; // порядок индикаторов справа налево (для IN-12 turned) и ин-14
const byte cathodeMask[] = {1, 0, 2, 9, 3, 8, 4, 7, 5, 6}; // порядок катодов in14

#elif (BOARD_TYPE == 3)
const byte digitMask[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // тут вводим свой порядок пинов
const byte opts[] = {KEY0, KEY1, KEY2, KEY3}; // свой порядок индикаторов
const byte cathodeMask[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // и свой порядок катодов
?
PS. Собираю на ин14 с диодной точкой.
 

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
@Старик Похабыч, вот когда оно у тебя работает годами, то, вроде, всё складывается, как надо. А когда на известном "поле" вдруг спотыкаешься, то растерянность и удивление порождают фразы, близкие к приписываемой Черномырдину: "как же так, никогда ничего подобного не было - и вот опять".

Обычно грешим мы на качество китайских комплектующих. Не без основания. Отсюда идея первая: заменить DS3231 на "честную" микросхему от Maxim - в рознице она может стоить и $5-7, но не $1 на плате вместе с доставкой. (Никто из моих знакомых, кто решался на приобретение такого предположительно "честного" варианта микросхемы, не жаловался на проблемы с ней.)
Против этой идеи может выступать практика: как уже писал, я годами ставил в разные устройства модули с DS3231, купленные на Ali, и только недавно нарвался на проблемы. Так стоит ли платить больше, если замена дефектного модуля всё равно дешевле получается "честной" микросхемы?..

Ещё мысль. Для DS3231 время нарастания сигнала должно быть до 1 мкс (1000 нс) в стандартном режиме (до 100 кГц) и до 300 нс в быстром (до 400 кГц). По умолчанию Ардуино инициализирует i2c-шину на 100 кГц. Тут приведены графики, из которых следует, что даже с рекомендованными резисторами подтяжки на 4,7 кОм не получается 1 мкс - только 1,3 мкс, а менее 1 мкс - от 3,3 кОм и ниже. В стандартном режиме высокий уровень SCL должен удерживаться не менее 4 мкс, что недостижимо при размытом фронте. Предполагаю, это одна из возможных причин нестабильности DS3231.
Опять же, питание может быть недостаточным для обеспечения стабильности - потому может плавать и форма переднего/заднего фронта, и амплитуда сигналов (уровни HIGH/LOW).
DS3231 можно сбросить (RESET) внешним сигналом, можно попытаться запустить шину, дёргая мастером SCL и ожидая высокого уровня на SDA - это уже при программной поддержке.

В общем, можно изучать эту схему в поисках причины зависания шины, можно строить предположения в теории и пытаться подобрать решение. Вот я сейчас (из теории) предлагаю уменьшить значения резисторов подтяжки SCL и SDA к +5 В (или добавить к имеющимся 10-килоомные в параллель). Осциллографа нет, увы, чтобы самому понаблюдать за результатом. Да и RTC в часах пока не глючит.
 

poty

★★★★★★✩
19 Фев 2020
3,250
948
@DmitryZ, впервые вижу эту статью и меня терзают смутные сомнения, что здесь что-то не так. Поясню: все мы знаем, что t = RC , но какое R и какое C учитывать? Дело в том, что в этой формуле R - это внутреннее сопротивление источника питания (т.е., выхода Ардуино), а не резистора подтяжки! Доказательства? Если бы в качестве R выступал резистор подтяжки, то картина фронта и спада была бы симметричной, а у нас спады вполне себе крутые! Я далёк от мысли, что автор статьи подсунул нам поддельные осциллограммы, но чем-то они должны быть обусловлены? И потом я заметил, что импульсы измерялись на шине SCL! Но! Шина SCL не управляется монопольно ведущим устройством. Если ведомое устройство не успевает принимать импульсы оно может само выставить на шине низкий уровень сигнала, и ведущее устройство должно это определить и установить паузу в передаче. Т.е., высокий уровень сигнала формируется как раз за счёт подтягивающего резистора путём перевода порта передачи в третье состояние (как вход). На шине SDA таких ограничений нет, поэтому там фронты импульсов будут весьма крутыми, как спады на приведённых осциллограммах.
Вывод: это не может быть причиной неправильной работы шины I2C.
 

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
Удивлён, что автор статьи смотрел только на один сигнал. Я бы оба сигнала посмотрел - хотя бы просто из любопытства. Но в статье приведены картинки - я из них и делаю вывод. Что t=RC - это немного не то, понятно. Но и то, что сигнал вместо прямоугольного становится пилой, тоже не хорошо.
Да и то, что сопротивление подтяжки влияет на устойчивость работы, - факт. В учебниках так и пишут: хочешь устойчивости к помехам - снижай сопротивление подтяжки.
 

psyx86

★★★★✩✩✩
31 Янв 2020
420
238
Задумка прикольная - но только при условии, что все навесным монтажем сделать - без платы )
Так и задумано, все навесным монтажом, провод в лаке от старого СССР транса. платы только нано и модуль часов (но они не бросаются в глаза)
 

9dron9

★✩✩✩✩✩✩
11 Окт 2019
25
16
Подскажите пожалуйста, проблема в отставании часов.Могут ли часы отставать из-за каких-либо наводок или из-за металлического корпуса? Сделал часы но они отставали,поменял 3 модуля ds3231 mini,все равно отстают.Психанул и вынул плату из рабочих часов которые не отставали но стояли в деревянном корпусе,в итоге и они отстают. Отстают примерно секунд на 40 в сутки,как быть не знаю.
 

poty

★★★★★★✩
19 Фев 2020
3,250
948
@9dron9, используемый вариант платы, скетч, фото.
Напряжение на питании DS3231 измеряли? Конденсатор по питанию нормальный стоит?
 

9dron9

★✩✩✩✩✩✩
11 Окт 2019
25
16
Плата вроде как Алекса только мини формата,скетч пробовал и 2.5 и 2.6, конденсатор нормально стоит, напряжение не измерял и к сожалению сейчас возможности измерить нету-корпус не разборный) просто вся суть в том что в дереве все было норм,а тут прям беда
 

poty

★★★★★★✩
19 Фев 2020
3,250
948
Если нет возможности отладки, я здесь вряд ли помогу. С наводками это слабо связано, думаю, что просто где-то коротит на этот самый металлический корпус. Те платы, что видел я, разведены на грани фола, часто дорожки идут в десятых долях миллиметра от края, причём платы не режутся в заводских условиях, а самостоятельное разрезание может ещё больше приблизить дорожку к краю. Я бы попробовал внутреннюю поверхность корпуса покрыть лаком, но он у Вас неразборный, так что...
 

wladimir

✩✩✩✩✩✩✩
24 Фев 2021
9
0
Разрешите вклиниться с вопросами. ИН-12, 4 индикатора, прошивка - nixieClock_2_v2.5, все напряжения в норме, часы работают, время показывают, подсветка работает. Кнопками все режимы перебираются, работают.
1. Не мигает разделительный светодиод между индикаторами часов и минут. На выходе ардуины D10 нет напряжения. Короткого и обрыва нет. Прошивал несколько раз. Хотя это и не критично, но хотелось бы сделать.
2. Можно ли с этой прошивкой и схемой заменить ардуину nano на микросхему atmega 328, или надо изменять схему и другую прошивку? Слаб я в этом.
 

poty

★★★★★★✩
19 Фев 2020
3,250
948
@9dron9, чудес не бывает. Если в одном корпусе всё нормально, а в другом нет, то версии может быть только две:
  • внешние элементы (питание, например);
  • что-то где-то коротит или, наоборот, отваливается.
Не знаю, что там был за предыдущий корпус, но здесь, как я понимаю, индикаторы подключены к плате проводами. То же, видимо, с подсветкой (если вообще есть). Легко может где-нибудь коротнуть (и не обязательно на корпус).
Если корпус разобрать совсем нет возможности, то можно залить скетч, в котором в setup сделать вывод состояния DS3231 и времени, которое считывается из микросхемы. Посмотреть, отвечает ли DS3231 в принципе. Если нет - смотреть питание DS3231, тут однозначно всё.
Если да - выключить часы из сети на сутки и включив посмотреть, убежало ли время? Если убежало - искать способы улучшить питание DS3231 (конденсаторы параллельно ножкам питания и т.п.). Вообще, я бы эти манипуляции для начала провёл на другом корпусе, в котором работало всё хорошо, чтобы понять, не была ли проблема там?
Не мигает разделительный светодиод между индикаторами часов и минут. На выходе ардуины D10 нет напряжения.
Залейте скетч с миганием светодиода из примеров Ардуино для проверки.
Можно ли с этой прошивкой и схемой заменить ардуину nano на микросхему atmega 328, или надо изменять схему и другую прошивку?
Что значит - заменить? ATMega 328 - это микропроцессор, который стоит в Ардуино нано. Он отдельно от минимальной обвязки работать не будет.
Если электрически его включить правильно, залить бутлоадер, выставив необходимые фьюзы, потом залить прошивку - всё работать будет. Только как Вы будете это делать? Для этого нужны некоторые другие устройства и минимальные знания.
 
  • Лойс +1
Реакции: DmitryZ

Died_on_lifr

✩✩✩✩✩✩✩
18 Фев 2021
7
0
Подскажите пожалуйста, на конденсаторе милливольты, что делать?
 

wladimir

✩✩✩✩✩✩✩
24 Фев 2021
9
0
Залейте скетч с миганием светодиода из примеров Ардуино для проверки.
Скетч заливал сразу - мигает светодиод на ардуине. Да и часы в остальном работают. Можно ли мигание с D10 переключить на D13 (свободный)? Если можно, то как это сделать в скетче?
 
Изменено: