реклама на сайте
подробности

 
 
> Датчик температуры STM32F4xx, Формула вычисления температуры
Sanya_kv
сообщение Oct 27 2012, 19:26
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369



Аналогичная тема по датчику температуры только проц другой.
Плату использую STM32F4DISCOVERY (питание == 3.0 V; процессор STM32F407VGT6).
По поводу формулы расчета в R.M. сказано:
Цитата
Temperature (in °C) = {(VSENSE – V25) / Avg_Slope} + 25
Where:
– V25 = VSENSE value for 25° C
– Avg_Slope = average slope of the temperature vs. VSENSE curve (given in mV/°C or mkV/°C)

В D.S на STM32F407xx Rev 3.
Цитата
V25 = 0.76(V)
Avg_Slope = 2.5 (mV/°C)

Подставляем в формулу:
VSENSE = (ADC16*3.0)/4095;
Temperature (in °C) = ((VSENSE – 0.76) / 2.5) + 25;
С АЦП значения идут реальные, и адекватно реагирую на температуру. При комнатной температуре АЦП == 0х044А.

В итоге не зависимо от того грею я плату паяльником, или кладу в холодильник температура равна 25 или 24 градусам.
Если кто имеет рабочие решение по формуле расчета, отзовитесь.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bullit
сообщение Jan 9 2013, 11:08
Сообщение #2


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Добрый день!
Столкнулся с проблемой что по 16 каналу (TempSense) ADC1 значение не меняется, как процек не грей!
Код инициализации:
CODE
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);

// Enable ADC1 reset calibration register
ADC_ResetCalibration(ADC1 );
// Check the end of ADC1 reset calibration register
while (ADC_GetResetCalibrationStatus(ADC1 ));

// Start ADC1 calibration
ADC_StartCalibration(ADC1 );
// Check the end of ADC1 calibration
while (ADC_GetCalibrationStatus(ADC1 ));

ADC_InitTypeDef ADC_InitStructure;
/* ADC1 configuration ------------------------------------------------------*/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);

ADC_TempSensorVrefintCmd(ENABLE);
/* ADC1 regular channels configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_239Cycles5 );

ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);

NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);


Код запуска конвертирования (запускаем раз в секунду):
Цитата
ADC_SoftwareStartConvCmd(ADC1, ENABLE);

Код прерывания:
Код
adcdata = ADC_GetConversionValue(ADC1);
adcVolt  = adcdata*3.3/4096;
diffVolt =   0.76 - adcVolt;
temp1  = diffVolt / (2.5/1000);//0.00025;
temp2 = temp1 +25;
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC );


adcdata постоянно равен 1738 +/- 10 едениц.

вопрос снимается так как относится к 100 серии. вопрос перенёс в другую ветку.

Сообщение отредактировал bullit - Jan 10 2013, 09:03
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sanya_kv   Датчик температуры STM32F4xx   Oct 27 2012, 19:26
- - Sanya_kv   Нашел ошибку, Avg_Slope это 2,5 вольта на 1 градус...   Oct 27 2012, 20:30
|- - nis   Цитата(Sanya_kv @ Oct 28 2012, 03:30) Наш...   Oct 28 2012, 14:42
- - uriy   В Reference manual на STM32 же написано: The inter...   Nov 1 2012, 06:36
- - Sanya_kv   А так же там написано: Main features ● Suppo...   Nov 2 2012, 10:02
|- - scifi   Цитата(Sanya_kv @ Nov 2 2012, 14:02) ...   Nov 2 2012, 10:14
- - Sanya_kv   Полагаю, это все равно можно будет победить. Повер...   Nov 2 2012, 12:49
|- - scifi   Победить можно, конечно. Нужно калибровать при 2-х...   Nov 2 2012, 12:58
- - Aner   Поскольку зависимость линейная уже хорошо, но оффс...   Nov 2 2012, 17:07
- - Sanya_kv   Немного отвлёкся от темы (командировка, задачи, ов...   Dec 29 2012, 10:11
- - batson   Что-то большая погрешность получается. У меня на S...   Dec 29 2012, 17:44
|- - Ruslan1   Мне как-то пришлось решать проблему с некорректным...   Dec 30 2012, 13:50
- - kan35   Код#define REF_VOLTAGE 3000l #define V25 (76...   Jan 1 2013, 05:27
- - _Pasha   Подыму тему. Discovery Slope & V(T)@25 гуляют ...   Feb 20 2013, 16:01
- - Aner   Термостат не ужас а реальность, если это конечно н...   Feb 20 2013, 16:14
- - _Pasha   Да всего-то нужно определить температуру кристалла...   Feb 20 2013, 16:40
- - adnega   Добавлю, что в STM32F3 есть два калибровочных знач...   Feb 20 2013, 17:47
- - bullit   А для чего мерите температуру? Мы мерим для опреде...   Feb 21 2013, 07:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016