Калибровка RC-генератора в реальном времени

Этот надоедливый сторожевой RC-генератор находится на пределе допуска 10 % уже при комнатной температуре. Я хотел довести его до 5% (это связано с внутренним 128-кГц RC-генератором) и весь рабочий диапазон -40 ... 125 градусов Цельсия. Можно ли это надежно сделать, считывая температуру MCU и применяя алгоритм? Есть такой рабочий алгоритм?

Калибровка — это фактически настройка количества циклов (скажем, 125 мс), в течение которых будет работать сторожевой таймер. т.е. в течение 12,5 секунд я бы запускал сторожевой таймер 100 раз, номинально. Как сделать температурную компенсацию цифры 100?

, 👍-1

Обсуждение

Вы можете запустить процедуру калибровки, при которой вы запускаете таймер одновременно со сторожевым таймером, а затем сравниваете разницу между ними... Например, запустите таймер на 1 секунду и подсчитайте, сколько раз сторожевой таймер прерывается за этот период., @Majenko

Я думаю, что простого измерения фактической частоты при комнатной температуре будет достаточно, чтобы откалибровать до приемлемого уровня. Я не думаю, что вы получите гораздо большую точность, используя калибровку в зависимости от температуры. Если вам нужна большая точность, я бы предложил добавить RTC. Например DS3231., @Gerben


2 ответа


1

Ваше описание довольно подробное, но вы не указали, о каком устройстве идет речь.

Я предполагаю, что вы говорите об ATmega 328P в Arduino Uno.
Насколько я знаю, вы можете откалибровать только так называемый Калиброванный внутренний RC-генератор, который используется для основных операций.
Вы не можете откалибровать внутренний RC-генератор 128 кГц с помощью сторожевого таймера.

Я думаю, у вас могут быть некоторые накладные расходы из-за ваших циклов сна/бодрствования.
Вместо того, чтобы спать 100 раз, чтобы получить от 125 мс до 12,5 с, вы можете спать 8 с + 4 с + 0,5 с. При этом спит всего 3 раза. Это может сэкономить вам заряд батареи.

,

1

Мы использовали дельту WDT в качестве метода определения температуры:

https://thecavepearlproject.org/2019/02/25/no-parts-temperature-measurement-with-arduino-pro-mini-to-0-005c-or-better/

Дело в том, что если у вас есть эти константы калибровки, вы можете использовать их для корректировки отклонений WDT. ИЛИ вы можете обойтись гораздо более коротким интервалом, чем 1 секунда, которую мы используем, с более прямым чтением микросекунд как вашего поправочного коэффициента WDT.

,

«Другое большое ограничение заключается в том, что вы можете проделать этот трюк только в системе с регулируемым напряжением, потому что на RC-генераторы влияет приложенное напряжение», — это хороший вывод из этой статьи, хорошо, что я отказался от WDT; в противном случае он, похоже, связан с датчиком температуры Silabs., @kellogs