Всем доброго времени суток. Собирал электронные часы на Arduino UNO с использованием RTC-модуля на DS1307; для отображения даты/времени использован 4-разрядный семисегментный индикатор KEM-5645AB (ОК, соединение через токоограничивающие резисторы по 5.1 кОм. Опрос RTC-модуля производится с периодичностью ~1000 мс (за вычетом времени отображения цифр на экране). В первый день эксплуатации столкнулся со следующей проблемой: изначально схема работает исправно (время исправной работы может доходить до ~40 минут). В неопределенный момент времени индикатор гаснет (в т.ч. и двоеточие, как будто выполнение программы полностью останавливается, т.к. информация должна выводиться на экран в каждой итерации void loop). Работа восстанавливается лишь после перезагрузки Arduino, однако счет времени сбивается (индикатор показывает ерунду: ЧЧ = 52, ММ = 35), для восстановления работы часов необходима повторная настройка через порт. Причина прекращения работы неясна. Может возникать без явной причины или при прикосновении к плате RTC-модуля (хотя все входы изолированы, батарейка не люфтит, обрывов в подключении к плате визуально не наблюдается). Более того, замечена большая ошибка в счете времени (~30-60 сек вперед за 2 суток) при том, что батарейка новая и ранее не эксплуатировалась (CR2032, фирма-производитель SONY). Скетчи для отображения времени и настройки/проверки часов прилагаются. Схема подключения индикатора аналогична представленной по ссылке http://codius.ru/articles/Arduino_UNO_4разрядный_7сегментный_идикатор_12_pin_3641BS_red (с точностью до полярности). В чем может заключаться проблема? Каковы шансы купить бракованный RTC-модуль или повредить его при установке батарейки? Заранее благодарен
На кварцах очень малые токи, любая грязь, несмытый флюс будут их тупить. "Двуногий" кварц паяется максимально близко к выводам микросхемы, причем обязательно с конденсаторами, посаженными на землю. Дорожка земли на эти конденсаторы должна быть отдельной, на нее ничего нельзя цеплять. Конденсаторы выбираются в районе 20 пик, одинаковые должны быть. Точность будет зависеть от них и от кварца. Кварцы разной точности бывают - чем меньше число ppm, тем лучше. В итоге стоимость доработок превысит стоимость DS3231, где все это уже встроено в корпус.
Учитывая высокую чувствительность RTC к малым токам, есть ли риск внесения погрешности в подсчет времени при частом (>1 Гц) опросе модуля по I2C?