Правильная формула для расчета датчика температуры с помощью STMF401RE Nucleo?

Я использую плату STM32F401RE Nucleo для измерения температуры окружающей среды. После процесса выборки я получаю цифровое значение от ADC_CHANNEL_TEMPERATURE и хочу преобразовать это цифровое значение в C°. Я искал в интернете это и нашел два разных метода:

Метод 1: Страница 226 в http://www.st.com/content/ccc/resource/technical/document

Temp(degree) = (V_sense - V_25)/Avg_slope + 25

Метод 2: Страница 251 в http://www.st.com/content/ccc/resource/technical/document

Temp(degree) = ( ( (110 - 30)*(TS_DATA - TS_CAL1) ) / (TS_CAL_2 - TS_CAL_1) ) + 30
Where:
    - TS_CAL2: temperature sensor calibration value at 110 C°
    - TS_CAL1: temperature sensor calibration value at 30 C°
    - TS_DATA: temperature sensor output from ADC

Меня смущает, какая из формул является правильной для расчета температуры в градусах Цельсия. Хотя метод 1 взят из справочного руководства STM32F401, результат температуры выглядит неправильно. Хотя метод 2 из справочника серии STM32F0, он выглядит более разумным.

Тем не менее, я не знаю, какую формулу следует применять при использовании платы STM32F401RE Nucleo?

2 ответа

Решение

Способ 1 Temp(degree) = (V_sense - V_25)/Avg_slope + 25 это упрощенная версия, где калибровка предположительно выполняется путем предварительного измерения значения при 25° и присвоения его V_25. В этом контексте Avg_slope, вероятно, взят из таблицы данных, но это также может быть результатом некоторой калибровки.

Способ 2 Temp(degree) = ( ( (110 - 30)*(TS_DATA - TS_CAL1) ) / (TS_CAL_2 - TS_CAL_1) ) + 30 использует две точки калибровки, при 30° и 110°, и это более правильно. Обратите внимание, что также метод 1 может использовать две точки калибровки (используется для расчета среднего наклона). Кроме того, метод 2 позволит вам брать точки калибровки в любом месте (предположительно, в диапазоне, где вас больше интересует).

Оба метода, однако, страдают от нелинейности (если есть) датчика. Я предполагаю, что присутствует некоторая нелинейность, потому что метод 1 говорит об "среднем наклоне". Если вы хотите большей точности, вы можете взять несколько точек калибровки и интерполировать их.

Я в настоящее время использую микроконтроллер STM32 F030 C8T6:вопрос: TS_DATA=(значение АЦП)*(Vdd/Vref) или TS_DATA=(значение АЦП) значение АЦП датчика температуры при активации канала датчика температуры??

Другие вопросы по тегам