(no subject)
Jul. 25th, 2018 02:26 pmНа прошлой неделе развлекался сделав цыфровые часы на микроконтроллере pic12f510
LED дисплее от ДВД прогрывателя. Плюс еще драйвер дисплея TM1650 и датчик температуры
из MF52 термистора. Самый минималистский вариант из "говна и палок".
Этот микроконтроллер имеет один 8-битный таймер, который нельзя запустить в спальном режиме на
часовом кристалле 32kHz. Поэтому весь процессор запущен на такой низкой частоте, чтобы при потере питания,
часы еще несколько часов шли на маленьком суперконденсатор 0.33F. По этой же причине
процессорную часть я отделил от драйверно-дисплейной диодом.
И вместо корпуса все залил термоклеем.
И тут обнаружил проблему. При отключении питания диод не помог, потому, что я сьекономил
на pull up резисторах в интерфейсе драйвера. А линии интерфейса защищены в чипе диодами.
И получается такой эффект: при потере питания через интерфейс микроконтроллер умудряется накачивать
питание через эти защитные диоды, а тем самым разряжать свое питания на суперконденсаторе.
На pull up резисторах конечно нельзя экономить. Но в резултате эксперимента, уменьшив
эту накачку програмным способом удалось заставить часы идти 3 часа без питания.
Еще вариант - в чипе оказывается есть один pull up резистор на линии данных.
Можно измерять ADC напряжение на этой ножке и если оно меньше напряжения питания
контроллера, то это сигнал к тому, что питание отрубили и контроллер может отдыхать,
считать время, не посылая его на дисплей, и ждать когда питание восстановится.
Хотя игра почти не стоит свеч, но как ответ Чемберлену - годится.
P.S. Еще как известно часы требуют настройки. Осциллографом измерил частоту
кристалла. Оказалось 32767.5 Hz. 0.5Hz не хватало, поэтому добавил коррекцию -
каждые 4.5 часа добавлялась секунда. Так что часы должны идти с точностью лучше чем
1 секунда в сутки. Что вроде как не так уж и плохо?
LED дисплее от ДВД прогрывателя. Плюс еще драйвер дисплея TM1650 и датчик температуры
из MF52 термистора. Самый минималистский вариант из "говна и палок".
Этот микроконтроллер имеет один 8-битный таймер, который нельзя запустить в спальном режиме на
часовом кристалле 32kHz. Поэтому весь процессор запущен на такой низкой частоте, чтобы при потере питания,
часы еще несколько часов шли на маленьком суперконденсатор 0.33F. По этой же причине
процессорную часть я отделил от драйверно-дисплейной диодом.
И вместо корпуса все залил термоклеем.
И тут обнаружил проблему. При отключении питания диод не помог, потому, что я сьекономил
на pull up резисторах в интерфейсе драйвера. А линии интерфейса защищены в чипе диодами.
И получается такой эффект: при потере питания через интерфейс микроконтроллер умудряется накачивать
питание через эти защитные диоды, а тем самым разряжать свое питания на суперконденсаторе.
На pull up резисторах конечно нельзя экономить. Но в резултате эксперимента, уменьшив
эту накачку програмным способом удалось заставить часы идти 3 часа без питания.
Еще вариант - в чипе оказывается есть один pull up резистор на линии данных.
Можно измерять ADC напряжение на этой ножке и если оно меньше напряжения питания
контроллера, то это сигнал к тому, что питание отрубили и контроллер может отдыхать,
считать время, не посылая его на дисплей, и ждать когда питание восстановится.
Хотя игра почти не стоит свеч, но как ответ Чемберлену - годится.
P.S. Еще как известно часы требуют настройки. Осциллографом измерил частоту
кристалла. Оказалось 32767.5 Hz. 0.5Hz не хватало, поэтому добавил коррекцию -
каждые 4.5 часа добавлялась секунда. Так что часы должны идти с точностью лучше чем
1 секунда в сутки. Что вроде как не так уж и плохо?