나뭇잎 교과서

첨단 과학기술 속 과학 원리

아두이노 같은 작은 컴퓨터에 센서를 꽂으면 1초에 수십 번씩 값을 잽니다. 그런데 그 숫자는 어떻게 온도가 되고, 얼마나 믿을 수 있을까요?

먼저 알면 좋은 것 센서와 디지털 신호
본문

첨단 과학기술 속 과학 원리

본문

아두이노 같은 작은 컴퓨터에 온도 센서를 연결하면 1초에 수십 번씩 숫자가 들어온다. 그런데 그 숫자는 '23 °C'가 아니라 '512' 같은 값이다. 센서는 온도를 직접 보내지 않고, 온도에 따라 바뀌는 전압을 0에서 1023 사이의 숫자로 바꾸어 보낸다. 이 숫자를 어떻게 온도로 바꿀까? 그리고 그렇게 얻은 온도는 얼마나 믿을 수 있을까?

그림 1. 얼음물(0 °C)에서 180, 끓는 물(100 °C)에서 820을 보낸 센서의 두 점 보정. 두 점을 잇는 직선으로 다른 값을 온도로 바꾼다.
먼저 알아야 할 것센서와 디지털 신호(통합과학), 일차함수와 직선 그래프(수학), 측정과 오차.

2.1.1센서와 디지털 값

온도 센서는 온도에 따라 저항이나 전압이 변하는 소자이다. 예를 들어 서미스터는 온도가 오르면 저항이 줄어든다. 마이크로컨트롤러는 그 전압을 아날로그–디지털 변환기로 재어 정수로 바꾼다. 10비트 변환기는 0 V에서 5 V까지를 \(2^{10} = 1024\)단계로 나누므로, 한 단계는 약 5 mV이다. 이 숫자는 전압일 뿐이고, 몇 °C인지는 우리가 정해 주어야 한다.

정리 2.1.1 두 점 보정

온도를 정확히 아는 두 상태(예를 들어 0 °C와 100 °C)에서 센서 값 \(x_1\), \(x_2\)를 재면, 그 사이에서 온도와 센서 값이 직선 관계라고 가정하여 \[T = T_1 + (T_2 - T_1)\frac{x - x_1}{x_2 - x_1}\] 로 바꾼다.

그림 1에서 센서 값을 바꾸어 보자. 값 500은 \(\dfrac{500 - 180}{640} \times 100 = 50\) °C이다. 이렇게 기준과 비교하여 측정 기구의 눈금을 정하는 일을 보정이라 한다. 그런데 서미스터의 실제 관계는 정확한 직선이 아니라 곡선이라, 두 점 사이 가운데에서는 몇 °C 어긋날 수 있다. 그래서 정밀하게 재려면 세 점 이상으로 보정하거나 곡선 식을 쓴다.1

2.1.2믿을 수 있는 값인가

센서 값을 믿으려면 몇 가지를 확인해야 한다. 같은 온도에서 값이 얼마나 흔들리는지(정밀도), 참값과 평균이 얼마나 가까운지(정확도), 온도가 바뀐 뒤 값이 따라오기까지 얼마나 걸리는지(응답 시간)이다. 센서가 공기의 온도가 아니라 햇빛에 데워진 자기 몸의 온도를 잴 수도 있으므로, 설치 위치도 중요하다.

확인할 것뜻확인 방법 정확도참값과의 차이기준 온도계와 비교 정밀도같은 조건에서의 흔들림반복 측정의 퍼짐 응답 시간변화를 따라가는 빠르기찬물과 더운물 사이 옮기기
그림 2. 숫자가 나온다고 다 믿을 수 있는 것은 아니다.

2.1.3예제 풀이

예제 2.1.2

그림 1의 센서가 교실에서 값 330을 보냈다. 두 점 보정으로 온도를 구하여라. 센서 값이 1만큼 바뀌면 온도는 몇 °C 바뀌는가? 같은 기준 온도계로 교실을 재니 22.0 °C였다면, 이 센서의 오차는 얼마인가?

\(T = 0 + 100 \times \dfrac{330 - 180}{820 - 180} = 100 \times \dfrac{150}{640} \approx 23.4\) °C이다.

값 1당 \(\dfrac{100}{640} \approx 0.16\) °C이므로, 이 센서로는 0.16 °C보다 작은 변화를 구별할 수 없다. 기준 온도계와 비교하면 오차는 \(23.4 - 22.0 = 1.4\) °C이다. 직선 가정 때문일 수 있으므로, 실온 근처에서 기준 온도계로 한 점을 더 보정하면 이 구간의 오차를 줄일 수 있다. 즉 센서의 숫자를 믿을 만한 온도로 만드는 것은 센서 자체보다 보정과 확인의 과정이다.

아래 탐구 카드에서 온도계가 정말 온도를 재는지, 소리가 숫자가 되는 원리, 센서 값을 온도로 바꾸는 과정을 직접 확인해 보자.

  1. 물이 끓는 온도는 기압에 따라 달라, 높은 산에서는 100 °C보다 낮다. 그래서 끓는 물로 보정할 때는 그날의 기압을 확인하거나, 정확한 기준 온도계와 함께 잰다.
마무리

센서는 온도에 따라 변하는 전압을 디지털 숫자로 보내며, 온도를 아는 두 상태에서 값을 재어 직선으로 바꾸는 두 점 보정으로 온도를 얻는다. 그 값을 믿으려면 정확도, 정밀도, 응답 시간과 설치 위치를 확인해야 한다. 그래서 처음 질문의 센서 숫자는 기준 온도와 비교한 보정식으로 온도가 되고, 기준 온도계와 비교하여 얼마나 믿을지 정한다.

탐구 1

온도계는 정말 온도를 잴까?

센서 · 서미스터 · 전압 나눔 · ADC
서미스터 저항
—
전압
—
ADC 숫자
—
숫자 한 칸 =
—

부품값은 흔히 쓰는 대표값으로, 25 °C에서 10 kΩ, B = 3950 K인 NTC 서미스터와 10 kΩ 고정 저항, 5 V 전원이다.

  1. 질문디지털 온도계의 화면에는 ‘25.0 °C’가 뜬다. 그런데 전자 회로는 전압과 전류만 다룬다. 온도계 속 부품은 무엇을 재는 걸까?
  2. 복원물질의 성질 가운데는 온도에 따라 달라지는 것이 많다. 수은은 부피가 늘고, 금속은 저항이 커진다. 그래서 이 변화를 재면 온도를 거꾸로 알아낼 수 있다.
  3. 설명서미스터는 온도가 오르면 저항이 크게 줄어드는 반도체 부품이다. 고정 저항과 이어 전압을 걸면, 저항 비율에 따라 가운데 지점의 전압이 바뀐다. 그리고 이 전압을 아날로그-디지털 변환기(ADC)가 0~1023 같은 정수로 바꾼다.
  4. 연결즉 온도가 저항으로, 저항이 전압으로, 전압이 숫자로 바뀐다. 센서가 직접 재는 것은 온도가 아니라 저항 변화이고, 컴퓨터는 이 과정을 거꾸로 계산해 온도를 표시한다. 빛 센서, 압력 센서, 가속도 센서도 모두 재기 쉬운 전기량으로 바꾸는 단계를 거친다.
  5. 적용온도 막대를 −20 °C에서 100 °C까지 움직이며 ‘숫자 한 칸’이 몇 °C인지 보자. 곡선이 가장 가파른 온도에서 가장 섬세하게 재고, ADC를 8비트로 바꾸면 한 칸이 네 배 거칠어진다.
  6. 판단화면에 소수점 아래 숫자가 나온다고 그만큼 정확한 것은 아니다. 부품값의 오차(흔히 ±1%), 서미스터가 제 몸의 전류로 데워지는 현상, 전원 전압의 흔들림이 모두 오차가 되기 때문이다. 이 그래프의 곡선도 부품 규격으로 계산한 모형이다.

확인조건이 달라지면

같은 회로에서 ADC만 10비트에서 12비트로 바꾸면, 25 °C 부근에서 ‘숫자 한 칸’이 나타내는 온도 폭은?

탐구 2

소리는 어떻게 숫자가 될까?

아날로그–디지털 변환 · 표본화 · 양자화
높이 층 수
—
담을 수 있는 최고음
—
1초 데이터 (모노)
—
들리는 소리
—
  1. 질문마이크가 만든 전압은 매끄럽게 오르내리는 곡선이다. 곡선 위의 점은 무한히 많은데, 어떻게 유한한 숫자 몇 개로 저장할까?
  2. 복원n비트로는 2n가지 수를 나타낼 수 있다. 3비트면 000부터 111까지 8가지, 16비트면 65,536가지이다.
  3. 설명그래서 곡선을 두 번 자른다. 먼저 시간을 일정한 간격으로 잘라 그 순간의 값만 뽑고(표본화), 그다음 뽑은 값을 정해진 층 가운데 가장 가까운 층으로 반올림한다(양자화). 그러면 소리는 ‘몇 번째 층’이라는 정수의 목록이 된다.
  4. 연결1초에 fs번 뽑으면 진동수가 fs / 2보다 낮은 소리만 제대로 담을 수 있다(표본화 정리). 사람은 약 20 kHz까지 들으므로 CD는 그 두 배가 넘는 44.1 kHz로 뽑는다. 또 비트 수를 1 늘리면 층이 2배로 촘촘해져 반올림 오차가 절반이 된다.
  5. 적용‘거친 설정’을 누르고 비트 수를 1씩 올려 보면, 계단이 원래 곡선에 빠르게 가까워진다. 반면 ‘너무 드문 표본화’에서는 뽑은 점들이 실제와 전혀 다른, 훨씬 낮은 소리(점선)를 그린다. 이 현상을 에일리어싱이라고 한다.
  6. 판단디지털이 아날로그보다 늘 ‘더 정확한’ 것은 아니다. 변환할 때 이미 정보를 버리기 때문이다. 대신 한번 숫자가 되면 복사하고 전송해도 더 나빠지지 않는다. 다만 촘촘하게 뽑을수록 데이터가 커지므로, 무엇을 담아야 하는지에 맞춰 설정을 고른다.

확인조건이 달라지면

박쥐는 약 50 kHz의 초음파를 낸다. 이 소리를 녹음해 분석하려면 표본화 주파수는 적어도 얼마여야 할까?

탐구 3

센서가 보낸 숫자를 어떻게 온도로 바꿀까?

실험 · 마이크로컨트롤러 · 센서 보정
보정식
—
지금 센서가 말하는 온도
—
기록한 점의 최대 오차
—

센서는 10 kΩ 서미스터(B = 3950)와 10 kΩ 고정 저항으로 전압을 나누고, 10비트 ADC(0~1023)로 읽는다. 기준 온도계는 눈금 0.1 °C, 오차 ±0.2 °C쯤이고, ADC 값은 전기 잡음으로 ±2쯤 흔들린다.

  1. 탐구 문제마이크로컨트롤러에 온도 센서를 연결하면 화면에는 “512” 같은 정수가 찍힌다. 이 숫자를 섭씨온도로 바꾸는 식은 어디서 나올까? 그리고 그 식은 얼마나 믿을 수 있을까?
  2. 복원여기서 쓰는 NTC 서미스터는 온도가 오르면 저항이 줄어드는 소자이다. 고정 저항과 직렬로 연결하면 서미스터 저항에 따라 나뉜 전압이 바뀌고, ADC가 이 전압을 0~1023 사이 정수로 바꾼다. 그런데 이 관계는 직선이 아니다.
  3. 설계그래서 보정(캘리브레이션)이 필요하다. 보정은 믿을 수 있는 기준 기기와 같은 조건에서 함께 재어, 센서 값을 실제 값으로 바꾸는 식을 만드는 일이다. 센서와 기준 온도계를 같은 물에 담그고, 물 온도를 바꿔 가며 두 값을 짝지어 기록한다.
  4. 분석2점 보정은 두 점만으로 직선을 정해 간단하지만, 두 점 가운데 하나라도 오차가 있으면 식 전체가 틀어진다. 여러 점에 직선을 맞추면 우연 오차가 줄어든다. 다만 실제 관계가 S자 곡선이라, 0~80 °C처럼 범위를 넓히면 직선으로는 양 끝에서 오차가 커진다.
  5. 측정20~30 °C 사이에서 다섯 점을 기록해 보정한 뒤, 물 온도를 5 °C나 70 °C로 바꿔 센서가 말하는 온도를 확인해 보자. 그다음 0~80 °C 전체에서 다시 기록하고 보정하면 최대 오차가 어떻게 달라지는지 비교해 보자.
  6. 오차·안전보정식은 보정한 범위 안에서만 믿을 수 있고, 범위 밖으로 늘여 쓰는 것(외삽)은 위험하다. 넓은 범위가 필요하면 구간을 나누어 보정하거나, 서미스터의 곡선식(스타인하트-하트 식)을 쓴다. 뜨거운 물을 다룰 때는 전선과 회로가 물에 닿지 않게 한다.

확인조건이 달라지면

20~30 °C에서 잘 보정한 센서로 냉동실(−15 °C) 온도를 쟀더니 −10 °C로 나왔다. 가장 알맞은 해석은?

AI 출제 문항연습문제 풀어보기37문항
Esc

↑↓ 고르기Enter 열기