Правильная формула для расчета датчика температуры с помощью 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=(значение АЦП) значение АЦП датчика температуры при активации канала датчика температуры??