Как откалибровать значение внутреннего датчика температуры в STM32 L496ZGT4

Я создаю простой проект с использованием STM32 L946ZGT4. Хочу использовать внутренний датчик температуры. Я настроил АЦП и могу извлечь из этого пользу. Моя проблема связана с калибровкой этого датчика. Используя справочное руководство и технические данные, мое окончательное значение в градусах Цельсия равно -17. Значение АЦП около 800. Вот мой код для калибровки сенсора.

    #include "Myfun.h"
    #include "HD44780.h"
    
    extern uint16_t tab[100];
    char buf[16];
    float sum, avg;
    
    #define TS_CAL1((uint16_t*)((uint32_t) 0x1FFF75A8))
    #define TS_CAL2((uint16_t*)((uint32_t) 0x1FFF75CA))
    #define TS_CAL1_TEMP 30.0 f
    #define TS_CAL2_TEMP 130.0 f
    
    int32_t temperature;
    
    int main(void)
    {
        SysTick_Config(4000000 / 1000);
        LCD_Init();
        Led_Conf();
        ADC_Conf_DMA_TempSensor();
        while (1)
        {
            sum = 0;
            for (int i = 0; i < 100;)
            {
                sum = sum + tab[i];
                ++i;
            }
            avg = sum / 100;    // here is my value from ADC
            temperature = (int32_t)(((TS_CAL2_TEMP - TS_CAL1_TEMP) / ((float)(*TS_CAL2) - (float)(*TS_CAL1))) *
                (avg - (float)(*TS_CAL1)) + 30.0);
            sprintf(buf, "%d C", temperature);
    
            LCD_Clear();
            LCD_WriteText(buf);
    
            delay_ms(60);
        }
    }

person Darek N    schedule 27.01.2021    source источник


Ответы (1)


вам нужно преобразовать показания АЦП в вольты следующим образом:

ADC_value / ADC_maxvalue * ADC_refvoltage

with ADC_value: значение, которое вы получаете обратно из АЦП ADC_maxvalue: 2 ^ 12 = 4096, когда вы выполняете выборку в 12-битном режиме ADC_revoltage: обычно 3,3 В, за исключением того, что вы используете другое опорное напряжение

Затем примените формулу из таблицы, глава Электрические характеристики - ›Условия эксплуатации -› Датчик температуры, где вы найдете смещение и шкалу (плюс формулу) для преобразования напряжения в температуру ...

person Chris_B    schedule 30.01.2021