STM32

MCU Internal 온도 측정하기

찬영_00 2024. 11. 24. 12:37

먼저 데이터 시트에서 온도를 어떻게 계산할 수 있는지 확인하자

 

 

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