Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F100 и встроенный датчик температуры
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
west329_
Добрый день.

Подскажите как правильно пересчитать считанное показание на 16 канале АЦП на котором весит внутренний датчик температуры контроллера.
Даташит выкурил уже, пару раз.


Формула с даташита один к одному.
ad4 = ( (1.41-(raw_tmp*0.0007961) ) / 4.3) + 25.0;

на выходе float 25.0044689, при прогреве контроллера, вижу что значение меняется но в сотых и тысячных. Грешу на формулу.
VslavX
Функция возвращает температуру в градусах +20. То есть нулевое значение соответствует -20С, значение 45 соответствует +25С.
Функция io_adc_convert() возвращают целое беззнаковое 12-битное значение считанное с канала АЦП.
CODE

#define IO_ADC_TBAT_VSENSE_25 1750 // типичные 1.41V при 25C (3.3V опорное АЦП)
#define IO_ADC_TBAT_SLOPE_100 534 // типичные 430mV на 100C (3.3V опорное АЦП)

IO_CALL_TYPE
DWORD
IO_CALL_OPTION
io_apm_temp(void)
{
DWORD ret;

ret = io_adc_convert(ADC_MUX_TBAT);
if (ret > IO_ADC_TBAT_VSENSE_25)
{
ret = ((ret - IO_ADC_TBAT_VSENSE_25)*100)/IO_ADC_TBAT_SLOPE_100;
if (ret > 45)
{
ret = 0;
}
else
{
ret = (25 + 20) - ret;
}
}
else
{
ret = ((IO_ADC_TBAT_VSENSE_25 - ret)*100)/IO_ADC_TBAT_SLOPE_100;
ret += 20 + 25;
}
return ret;
}

ukpyr
Код
t_int = ((174968L - (adc * 100L)) / 53L) + 250;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.