먼저 데이터 시트에서 온도를 어떻게 계산할 수 있는지 확인하자
Temperature (in C) = {(V25 - VSENSE) / Avg_Slope} + 25 이고
VSENSE = ADC 채널의 값 * 3000 / 4096
V25는 0.76 = mV로 바꾸면 760이다.
Avg_Slope은 mV이니까 그대로 2.5
따라서 {( VSENSE- 760 ) / 2.5 } + 25 이 된다.
나중에 수식에 넣어주면 된다
다음을 따라서 ADC를 설정해주자
다음으로 코드를 짜주자 (폴링방식으로 진행함)
uint32_t adc_data;
float Temp;
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
adc_data = HAL_ADC_GetValue(&hadc1);
Temp = (float)adc_data*3000 /4096;
Temp = (Temp-760)/2.5 +25;
HAL_ADC_Start_IT(&hadc1);
}
HAL_ADC_Start_IT(&hadc1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
printf("Temp=%f\r\n", Temp);
HAL_Delay(200);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
실행하면 다음과 같은 결과를 얻는다.
'STM32' 카테고리의 다른 글
I2C로 LCD 제어해보기 (0) | 2024.11.25 |
---|---|
STM32F407VE - 기초 7) Timer (0) | 2024.11.25 |
STM32F407VE - 기초 6) ADC-2 (0) | 2024.11.24 |
STM32F407VE - 기초 5) ADC (0) | 2024.11.23 |
STM32F407VE - 기초 4) USART-2 (0) | 2024.11.22 |