전자회로 실무 / 센서·측정

BME280으로 기압 고도(Barometric Altitude)를 계산할 때는 기준 압력을 맞춥니다

휴대 장치를 책상에 그대로 두었는데 표시 고도가 몇 미터 올라갈 수 있습니다. 센서가 높이를 직접 재는 것으로 생각하면 장치가 잘못 움직였다고 오해하기 쉽습니다. 온도·습도·기압을 디지털 값으로 읽는 BME280은 센서가 놓인 곳의 공기 압력을 내놓고, 프로그램은 그 압력을 기준값과 비교해 높이를 계산합니다. 기준을 어떻게 정했는지와 기압이 언제 바뀌었는지를 함께 기록해야 이동에 따른 높이 변화와 날씨에 따른 표시 변화를 구분할 수 있습니다.

센서가 읽은 압력과 계산된 높이를 구분합니다

기압 고도(barometric altitude)는 대기 압력을 높이로 바꾼 추정값입니다. 같은 날 가까운 곳에서는 대체로 높은 곳의 압력이 낮지만, 한 장소의 압력도 날씨에 따라 변합니다. 따라서 압력 하나만으로 절대 높이를 알 수 없습니다. 계산에 쓰는 기준 해면기압(reference sea-level pressure)을 정해야 합니다. 이는 같은 시각, 그 지역의 압력을 해수면 높이로 환산한 기준값입니다. 널리 쓰는 1013.25 hPa는 표준 대기의 예시값이지 언제나 그 장소의 현재 기압이 아닙니다.

측정 압력을 P, 기준 해면기압을 P₀, 표시할 해수면 기준 높이를 h라고 하겠습니다. P와 P₀는 같은 단위를 써야 합니다. 여기서는 hPa(헥토파스칼, 기압 단위)를 쓰며 1 hPa = 100 Pa입니다. Pa는 파스칼(pascal)입니다. h의 단위는 m(미터)입니다. 아래 식의 44,330 m와 5.255는 표준 대기에서 압력과 높이의 관계를 근사하는 계수입니다. 센서의 분해능이나 정확도를 뜻하지 않습니다.

h = 44,330 m × [1 − (P/P₀)^(1/5.255)]

P가 P₀보다 작으면 높이는 양수로 계산됩니다. P₀를 실제보다 높게 넣으면 같은 장소도 더 높게 표시됩니다. 반대로 센서가 놓인 곳의 압력을 해면 기준값과 혼동하여 P₀에 그대로 넣으면, 그 자리의 표시가 0 m가 됩니다. 이때 구한 값은 그 자리에서 잰 상대 높이의 기준일 수는 있지만, 해수면 기준 절대 높이를 확인한 결과는 아닙니다.

알려진 높이에서 측정 압력으로 기준 해면기압을 구하고, 같은 위치에서 날씨로 압력이 낮아졌을 때 표시 고도만 올라가는 설명용 계산 도해입니다.
알려진 높이에서 측정 압력으로 기준 해면기압을 구하고, 같은 위치에서 날씨로 압력이 낮아졌을 때 표시 고도만 올라가는 설명용 계산 도해입니다.

알려진 높이에서 기준 압력을 정합니다

센서를 실제로 놓을 높이를 먼저 확인합니다. 지도에 적힌 지면 높이와 손에 든 센서의 압력 구멍 높이는 다를 수 있으므로, 비교하려는 높이의 기준을 적어 둡니다. 센서의 압력 구멍이 주변 공기와 통하도록 두고, 밀폐된 외함·직접 닿는 바람·손으로 덥힌 직후의 값은 기준으로 삼지 않습니다. BME280의 온도·압력 보정이 적용된 새 측정값을 읽고, 값이 안정된 구간의 압력과 시각을 기록합니다. 단발 측정 모드(forced mode)를 사용한다면 매번 새 변환을 시작하고 완료된 값을 읽어야 합니다. 앞선 레지스터 값을 다시 읽었다고 해서 새 기압이 측정된 것은 아닙니다.

알려진 높이를 h_ref, 그 자리에서 읽은 압력을 P_ref라고 하면 위 식을 다음과 같이 바꾸어 그때의 기준 압력 P₀를 구할 수 있습니다. 아래 첨자 ref는 기준점(reference)을 뜻합니다.

P₀ = P_ref / [1 − h_ref/(44,330 m)]^5.255

높이와 압력의 기준 시각을 함께 저장합니다. 다른 장소의 기상 자료를 대신 사용할 때는 관측소 현장 기압(station pressure)과 해면 환산 기압(sea-level pressure)을 구별하고, 관측 시각·거리·고도 환산 방식이 해당 계산과 맞는지 확인합니다. 관측소의 현장 기압을 P₀로 넣거나 오래된 예보값을 현재 측정치처럼 넣지 않습니다.

숫자로 기준값의 영향을 확인합니다

다음 값은 설명을 위한 가상 계산이며 특정 장치의 측정 결과가 아닙니다. 센서를 놓은 지점의 알려진 높이가 120 m, 그때 압력 P_ref가 994.0 hPa라고 가정하겠습니다. 기준 해면기압은 994.0 / [1 − 120/44,330]^5.255 ≈ 1008.26 hPa입니다.

같은 자리의 계산넣은 기준 압력 P₀표시 고도
표준값을 그대로 사용합니다1013.25 hPa약 161.5 m
알려진 높이에서 구한 값을 사용합니다1008.26 hPa약 120.0 m

두 표시의 약 41.5 m 차이는 센서가 갑자기 이동했다는 증거가 아닙니다. 같은 압력 994.0 hPa에 서로 다른 P₀를 넣은 결과입니다. 또한 기준점에서 120.0 m가 나오는 것은 그 값을 맞추도록 P₀를 역산했기 때문입니다. 센서나 모델의 실제 정확도를 검증하려면 기준점과 별도로 높이를 아는 다른 지점에서도 비교해야 합니다.

같은 자리에 둔 센서가 나중에 993.0 hPa를 읽었는데 저장한 P₀ = 1008.26 hPa를 그대로 쓰면 약 128.5 m로 표시됩니다. 실제 높이가 그대로여도 기압이 1.0 hPa 내려간 것만으로 표시가 약 8.5 m 오른 계산입니다. 이 예시는 짧은 시간의 근사 감도를 보여 줄 뿐, 어느 날씨에서나 1 hPa = 8.5 m로 고정된다는 뜻은 아닙니다.

이동인지 기압 변화인지 확인합니다

  1. 기준을 남깁니다. 알려진 지점에서 센서 높이, 측정 압력, 계산한 P₀, 측정 시각과 센서 설정을 함께 저장합니다. 압력 센서가 Pa로 돌려준 값을 hPa로 바꿀 때는 100으로 나눕니다. P와 P₀의 단위가 섞이면 표시가 크게 어긋납니다.
  2. 같은 지점을 다시 읽습니다. 이동 시험 전후에 기준점으로 돌아와 압력과 표시 고도를 비교합니다. 기준점에서도 값이 함께 변했다면 날씨 변화, 외함 안의 압력, 손열로 센서 온도가 막 바뀐 상태 또는 센서 읽기 상태를 먼저 확인합니다. 오랜 시간 같은 장소의 표시 고도를 비교하려면 새 기준 압력을 다시 구하고 그 시각을 기록합니다.
  3. 다른 알려진 높이로 검증합니다. 기준점에서 값을 맞춘 뒤 독립적으로 높이를 아는 두 번째 지점에서 측정합니다. 높아질 때 압력이 내려가고 계산 고도가 올라가는지, 되돌아왔을 때 재현되는지 봅니다. 두 지점을 비교하는 동안 기압이 변하면 그 영향도 기록합니다.
  4. 이상한 값을 진단합니다. 고도가 0 m에 붙어 있으면 P₀에 현장 압력을 그대로 복사했는지 확인합니다. 한 번만 갱신되면 단발 측정을 재시작하는지 확인합니다. 계단처럼 늦게 따라오면 센서의 내부 무한 임펄스 응답 필터(IIR, Infinite Impulse Response filter) 설정과 표본 간격을 확인합니다. 이 필터는 갑작스러운 압력 변동을 완화하는 대신 표시가 새 값에 도달하는 시간을 늘립니다. 밀폐 외함이나 막힌 압력 구멍에서는 주변 대기와 다른 압력을 읽을 수 있습니다.

센서 데이터시트의 압력 오차·잡음 조건은 계산 고도의 오차를 판단하는 한 요소입니다. 외함, 기준 압력의 시각·위치, 실제 대기와 표준 대기 모델의 차이도 결과에 들어갑니다. 화면에 소수점이 많이 보이거나 두 번 읽은 값이 비슷하다는 이유만으로 해수면 기준 높이가 그 자릿수까지 정확하다고 판단하지 않습니다.