Pt100 온도테이블 엑셀 - pt100 ondoteibeul egsel

PT100 온도센서, 저항에서 온도계산하는 공식

PT100은 온도센서로 많이 사용하고 있는데, 찾다보니 저항온도 표는 많은데,

저항에서 온도구하는 공식은 못 찾아서 1차 근사식을 만들었습니다.

간단한 1차 근사식: 

  온도썹씨(T, °C) = (저항R - 100) / (0.39083) 

이렇게 해도 근사적으로 맞습니다.

예를 들어, 저항 111.67이 측정되면, 정확한 온도는 30도(°C)인데,

위식으로 계산하면,

 ( 111.67 - 100 ) / 0.39083 = 29.86

입니다.

또, 예를 들어, 저항 138.51이 측정되면, 정확한 온도는 100도(°C)인데,

위식으로 계산하면,

 ( 138.51 - 100 ) / 0.39083 = 98.53

입니다.

좀더 정확하게 2차 근사식으로 만들면,

온도썹씨(T, °C) = 0.0011* 저항R * 저항R + 2.3368 * 저항R - 244.58 

입니다.

또, 예를 들어, 저항 138.51이 측정되면, 정확한 온도는 100도(°C)인데,

위식으로 계산하면,

 (0.0011* 138.51 * 138.51) + (2.3368 * * 138.51)  = 100.2 °C

입니다.

예를 들어, 저항 111.67이 측정되면, 정확한 온도는 30도(°C)인데,

위식으로 계산하면,

 = 30.1 °C  

입니다.

확실히, 1차식보다 2차식이 정확하군요,,

원래공식은,

근거자료(Pt100_en.pdf)는 첨부합니다. 

문의사항은 메일 ()으로 주세요,

저가의 써미스터를 사용해서 온도 테이블을 만들고

프로그램으로 온도를 얻는 방법을 설명 하겠습니다.

첨부 파일에 두개의 파일을 올려두었습니다.

PDF에 권한 설정이 되있어서 복사가 안되므로 일일이 키인해야 하니다.

키입력이 빠른 분이 엑셀에 데이터좀 키인 해주세요^^

//-----------

입력을 해주셔서 편하게 만들 수 있게 되었습니다.^^

//-----------

써미스터가 상온 25도에서 10K이므로 직렬로 10K저항을 넣겠습니다.

써미스터와 저항이 바뀌어도 되지만 위 회로로 만들겠습니다.

공부 잘하는 초등 학생도 풀수 있는 간단한 비례식을 적어보면

VCC는 5V, 써미스터저항을 Rth, 10K에 걸리는 전압을 Vr이라고 하면

10K/(Rth+10K) = Vr/5V = ADC변환값/1023

10K에 걸리는 전압이 adc입력핀에 걸리는 전압이고, adc 변환 했을 때의 값입니다.

중간에 전압으로 변환 하는 식은 필요 없으므로

10K/(Rth+10K) = ADC변환값/1023 이렇게 되고

ADC변환값에 관해서 이항 정리하면

ADC변환값 = 1023 * 10K / (Rth+10K)

이처럼 쉬운 이항정리를 모르면 초등학교 과정 부터 산수 공부를 다시 하셔야 합니다.

Rth는 엑셀에 테이블로 입력 되어 있으므로 엑셀에서 ADC변환값을 만들 수 있습니다.

우선 엑셀 데이터의 그래프 모양을 보겠습니다.

써미스터의 온도특성 곡선은 로그 곡선 비슷한 모양입니다.


엑셀 수식을 이용해서 계산을 해줍니다.(자세한 것은 웹검색으로 엑셀 사용법을 찾아보세요)

정수로 만들기 위해서 셀 서식을 변경 했습니다.

 

 다시 서식을 이용해서 복사 합니다.(더 편한 방법은 알아서 찾으세요^^)


30(-50도) 부터 965(120도)까지의 adc변환 값을 얻었습니다.

작업이 완료된 엑셀파일을 첨부 파일에 추가 했습니다. 써미스터-LNTK103FW-1.xls


 메모장에 복사해서



컨트롤-H로 스페이스를 컴마로 모두 바꿉니다.

 

int th_temp[171]={
     30, 32, 34, 36, 38, 40, 42, 44, 47, 49, //-50 ~ -41
     52, 54, 57, 60, 63, 66, 70, 73, 77, 81, //-40 ~ -31
     84, 88, 93, 97,101,106,111,116,121,126, //-30 ~ -21
    132,137,143,149,155,161,168,174,181,188, //-20 ~ -11
    195,202,210,217,225,233,241,249,257,266, //-10 ~  -1
    274,283,292,301,310,319,328,338,347,356, //  0 ~   9
    366,376,385,395,405,414,424,434,444,453, // 10 ~  19
    463,473,483,492,502,512,521,531,540,549, // 20 ~  29 색칠한 곳은 25도(10K이므로 중간값)
    559,568,577,586,595,604,613,621,630,638, // 30 ~  39
    646,655,663,670,678,686,694,701,708,715, // 40 ~  49
    722,729,736,743,749,756,762,768,774,780, // 50 ~  59
    786,791,797,802,807,813,818,822,827,832, // 60 ~  69
    837,841,845,850,854,858,862,866,869,873, // 70 ~  79
    877,880,884,887,890,893,896,899,902,905, // 80 ~  89
    908,911,913,916,918,921,923,926,928,930, // 90 ~  99
    932,934,936,938,940,942,944,946,948,949, //100 ~ 109 // 105도 오타수정
    951,953,954,956,957,959,960,961,963,964, //110 ~ 119
    965                                      //120
};

메모장에서 작업해서 위처럼 만들었습니다.

ADC값을 변환 한 뒤에 위 배열에서 크기를 비교 한 뒤

해당하는 배열 인덱스가 온도가 됩니다.

예를들면 ADC변환값이 31이라면 배열의 0번과 1번 사이에 있게되고

배열의 인덱스는 0번보다 크고 1번 보다 작으니 0번이 됩니다.

0번과 같다면 -50도가 되는 것이고

0번과 1번 사이라면 -49도와 -50도 사이가 됩니다.

두 값의 차이가 1밖에 안나서 정밀한 값을 체크 하지 못하지만( 31이라면 49.5도)

25도 근처라면 1도에 ADC값이 10정도가 나오므로 0.1도 단위로도 만들 수 있습니다.

예를 들어서 ADC 변환값이 505라면

배열 인덱스는 24와 25 중간이고

25도의 512와 24도의 502를 빼주면 그 차이가 10이 나옵니다.

0.1도로 읽기 위해서는 차이값을 10으로 나눠주면 0.1도에 ADC값은 1이 됩니다.

(505-502)/1=3이 되고 0.3도가 됩니다.

따라서 24.3도가 되는 것입니다.

Toplist

최신 우편물

태그