1. RP2040 내장 온도센서를 이용한 온도 측정 방법 Basics
앞선 글에서 라즈베리파이 피코 보드는 RP2040 칩에 온도센서가 내장되어 있다는 사실과, 이를 이용하여 온도를 측정하는 방법을 소개한 바 있었다.
https://blog.naver.com/mythee1/223185333640
이처럼 라즈베리파이 피코 보드는 RP2040 칩의 내장 온도센서를 이용한 온도 측정은 아날로그 4번 채널을 통해 입력된 값을 우선 Conversion factor를 곱해, 100% 라면 3.3V라는 가정하에 전압 값으로 환산하고, 다음과 같이 Datasheet에 공개된 환산식을 이용하여, 이 전압 값을 섭씨온도로 환산하는 방법을 이용하게 된다.
그런데, 위에서 소개한 이전 글에서는 온도 환산 시, 계산된 온도와 실제 온도와의 편차 때문에 일률적으로 5.8도의 값을 더해서 간이 계산했었다.
2. 온도 편차가 왜 발생할까?
그런데 현실에서 온도를 측정하다 보면, 실제 온도와 4-7도 정도 차이가 나는 경향성을 보이게 된다. 또한 차이 값도 항상 일정한 것은 아니어서, 동일한 보드를 가지고 측정하더라도 측정 장소에 따라 편차값이 다소 달라지곤 했다. 자연스럽게 “도대체 왜 온도 편차값이 생기는 것일까?” 그리고 “어떻게 하면, 현실에서 신뢰감 있게 이 방법을 사용할 수 있을 것인가?” 하는 의문이 생겼다.
그래서 원인을 찾아보기도 했고, 환산식을 들여다 보기도 했다. 개인적으로 생각하는 편차의 원인은 크게 다음 2-3가지인듯하다.
-
사용 환경에 따라, 전압이 아주 미소하게 다르기도 한 데서 발생하는 차이이다.
내장 온도센서는 입력 전압이 100% 라면 정확히 3.3V를 나타낸다고 가정하는데, 실제로는 약간의 차이가 장치별로 발생할 수도 있기 때문에 생기는 편차이다.
만일 공급되는 전압이 아주 정확한 3,3V 아닌 경우에는 입력전압의 환산값도 실제 전압과는 다소 차이가 있게 되는 것이다. 그런데 문제는 이러한 입력전압의 지극히 미소한 차이로도 환산된 온도값은 큰 차이가 날수 있다는 점이다. (사실 이 점은 다음 원인과 연결되는 문제이기도 하다)
2. 기존 표준 환산식의 과도한 민감성(=기울기값)
현재 환산식은 온도 1도 변화에 대한 기울기가 -1/0.001721 V이다. 즉, 이 식에는 RP2040 칩이 27도씨에서 0.706V의 전압 값을 나타내며, 온도가 1도 변할 때마다 1/0.001721 V 만큼 온도와 반대 방향으로 변화한다는 의미가 담겨 있다. 그리고, 전압과 온도가 선형적으로 변화한다는 의미를 함께 담고 있다.
온도 상승 –> 입력 전압 낮아짐
온도 하강 –> 입력전압 높아짐
그런데, 기울기 -1/0.001721 V의 역수는 -581로, 전압이 1V 변화하면 계산 온도는 약 581도만큼 변화하게 된다. 즉 입력 전압 변화에 너무 민감하게 온도가 변화되도록 수식이 만들어져 있고, 이 때문에, 위에서 언급한 입력전압의 미소한 오차가 매우 큰 환산온도의 차이를 만들게 된다. 현재의 환산식은 1% 오차만으로도 다음과 같이 약 4.1도의 오차를 만들게 된다.
이러한 차이를 온도의 변화량과 비교해 보면, 계산상으로는 온도가 1% 변화했을 때 비해 전압이 1% 변했을 때는 약 15배 정도 큰 변화량을 보이게 되어 우리의 기대감과는 상당한 차이가 있게 된다.
한편, 피코 보드를 사용함에 따라 회로 내부에서 발생할 수도 있는 열로 인한 온도 측정의 편차 가능성도 확인해 보기 위해 1분 단위로 환산 전압 값과 환산온도를 점검해 보았으나, 30분~60분 정도 기간 동안 안정적인 값을 보여주어서, 피코보드 사용으로 인한 발열이 실제 온도와 내장 센서를 이용한 온도 측정값 차이의 주된 원인으로 판단되지는 않았다.
3. 나만의 온도 보정식 만들어보기
결국, Datasheet에 공개된 정보중, “주위 온도에 따라 내장 센서에서 나오는 전압 값이 달라진다”라는 사실만을 이용하여, 온도 환산식을 자체적으로 만들기로 했다.
우선, 내가 피코 보드의 내장 센서를 사용하여 온도를 측정하려는 환경에서, 측정된 전압 값과, 별도의 온도계를 이용하여 같은 시점에 측정한 온도값을 읽었다.
준비된 입력 전압과 실측된 온도는 다음과 같다.
이를 이용하여, 차트를 그리고, 다양한 방법으로 회귀분석을 시도해 보았다.
먼저 전압과 실제 온도와 선형 관계를 가정하고 회귀 분석한 결과는 다음과 같다.
기울기가 -403.38로 기존 표준환산식의 -581보다는 많이 완화된 값을 보여주었다. 회귀분석의 신뢰도 지표인 R 제곱의 값도 0.81 정도로 어느 정도 신뢰할 수 있는 값이 얻어졌다.
그리고 다항식을 이용한 회귀분석도 해보았는데, 다음과 같았다.
그리고, 이렇게 얻어진 환산식(선형회귀 분석의 식을 이용)을 이용하여, 실측 온도와의 편차를 계산해 본 결과, 다음과 같이 1도 이내로 줄어들어서, 기존 환산식을 이용하는 것보다 현실감이 높아 보였다.
4. 응용과 주의 사항
위에서 새롭게 시도해 본 환산식은 대략 22~27도 범위의 온도에서 측정된 자료를 토대로, 회귀분석 (interpolation) 하여 얻은 식인데, 이를 사용할 때 다음의 주의사항이 있다.
먼저 위의 방법은 이용하되, 각자 직접 환산식을 만들어야 한다는 점이다.
사용 환경(기기, 전기 상태, 배선상태 등)에 따라 측정되는 전압 값은 차이가 있을 수도 있기 때문이다.
두 번째 기억할 것은 실제 사용할 온도 범위를 포함하여 회귀식을 만들어야 한다는 점이다.
즉, -10 도와 50도 모두를 측정할 것이라면, 이 각각의 온도 부근의 측정값들을 토대로 회귀식을 만들어야 한다. 데이터를 토대로 회귀식을 만드는 과정에서, 원래의 데이터 범위 내부 영역에 속한 값들은 interpolation 특성상 어느 정도 잘 맞게 되지만, 분석에 사용한 데이터 범위를 벗어난 구간에 적용하게 되면(extrapolation) 선형성을 보장할 수 없어 맞지 않는 경우도 있기 때문이다.
이러한 점들을 이용하여, 각자 자신의 환산식을 만들어 잘 활용하기 바란다.

