2017-01-31 1 views
0

나는 주위 온도를 측정하기 위해 STM32F401RE Nucleo 보드를 사용하고 있습니다. 샘플링 프로세스가 끝나면 ADC_CHANNEL_TEMPERATURE에서 디지털 값을받습니다.이 디지털 값을 C °로 변환하고 싶습니다. 나는 이것에 대한 인터넷 검색과 나는 두 가지 방법을 발견 : http://www.st.com/content/ccc/resource/technical/documentSTMF401RE Nucleo를 사용하여 온도 센서를 계산하는 올바른 공식은 무엇입니까?

Temp(degree) = (V_sense - V_25)/Avg_slope + 25 

방법 2 페이지 226 :

방법 1 그것은 나를 혼란 http://www.st.com/content/ccc/resource/technical/document

Temp(degree) = (((110 - 30)*(TS_DATA - TS_CAL1))/(TS_CAL_2 - TS_CAL_1)) + 30 
Where: 
    - TS_CAL2: temperature sensor calibration value at 110 C° 
    - TS_CAL1: temperature sensor calibration value at 30 C° 
    - TS_DATA: temperature sensor output from ADC 

페이지 251있는 하나는 C °로 온도를 계산하기위한 올바른 공식입니다. 방법 1은 STM32F401의 참조 설명서에 있지만 온도 결과가 올바르게 표시되지 않습니다. 방법 2는 STM32F0 시리즈의 참조 매뉴얼에서보다 합리적인 것처럼 보입니다.

아직도 STM32F401RE Nucleo 보드를 사용할 때 어떤 공식을 적용해야합니까?

+0

호기심에서 벗어나 두 가지 방법으로 무엇을 측정하고 기준 온도로 무엇을 사용합니까? –

+0

두 번째 수식이 잘못되었습니다. "80"또는 "110 - 30"이어야합니다. –

+0

안녕하세요, 두 번째 수식에 오타가있었습니다 (지금 수정 됨). 온도를 조절할 수있는 오븐이 있습니다. 기준 온도로 실내 온도 (20oC), -10oC, 60oC를 사용했습니다. 방정식 2에서 얻은 결과는 기준 온도보다 더 합리적입니다. – bienle

답변

2

방법 1 Temp(degree) = (V_sense - V_25)/Avg_slope + 25은 교정이 아마도 25 °에서 값을 사전 측정하고 V_25에 할당함으로써 단순하게 수행됩니다. 이 문맥에서 Avg_slope는 아마도 데이터 시트에서 가져온 것일 수 있지만 일부 교정의 결과 일 수도 있습니다.

방법 2 Temp(degree) = (((110 - 30)*(TS_DATA - TS_CAL1))/(TS_CAL_2 - TS_CAL_1)) + 30은 두 교정 점을 30 °와 110 °에서 사용하며 더 정확합니다. 또한 방법 1은 두 개의 보정 점 (평균 기울기를 계산하는 데 사용됨)을 사용할 수 있습니다. 또한 방법 2를 사용하면 어디에서나 교정 포인트를 가져갈 수 있습니다 (아마도 관심이있는 범위에서).

그러나 두 가지 방법 모두 센서의 비선형 성 (있는 경우)이 있습니다. 방법 1은 "평균 기울기"에 대해 알려주기 때문에 일부 비선형 성이 있다고 가정합니다. 정밀도를 높이려면 여러 보정 포인트를 가져 와서 보정하십시오.

+0

감사합니다. @ linuxfan, 이제 온도 센서 계산에 대해 더 잘 이해하게되었습니다. – bienle

+1

@bienle 안녕하세요. 이 사이트의 도움으로 말했듯이, 당신은 대답하지 않고 대답을 받아 들여야 만합니다. :-) – linuxfan

+1

@bienle, 중요한 메모가 있습니다. STM32F0xx에는 보정 된 온도 센서가 함께 제공됩니다. 각 MCU에는 TS_CAL1 및 TS_CAL2 값이 있으며 플래시 메모리의 고정 주소에 저장됩니다. 이 MCU를 사용하면 ADC의 값을 읽고 플래시의 값을 읽고 정확한 온도를 계산할 수 있습니다. MCU에는 보정이 없으므로 일반적인 용도로 사용하기 전에 MCU에 보정 작업을 수행해야합니다. –

0
나는 현재 마이크로 STM32 F030의 c8t6 사용하고

: 온도 센서 채널 인 경우 TS_DATA = (ADC 값) * (Vdd에/VREF) 또는 TS_DATA = (ADC 값) 온도 센서 ADC 값이다 질문을 활성화 ??

관련 문제