기압센서를 이용한 기압 및 온도 측정
지구상에 살아있는 모든 생물이 생명을 유지하는 데 있어 꼭 필요한 요소 중 하나로 ‘대기’를 꼽을 수 있다. 대기권은 대류권과 성층권, 중간권, 열권 총 네 가지로 분류된다. 그 중 우리가 살아가고 있는 대기는 지표면에서 약 10km 정도 떨어진 ‘대류권’으로, 활발한 대류로 인한 기상현상이 나타난다. 또, 고도와 온도의 영향으로 다양한 날씨형성이 이뤄지면서 온도가 시시각각 변하는 것을 알 수 있다.
높은 산에 올라가서 밥이나 라면을 끓여 먹을 때, 지상에서 먹는 것보다 설익는 현상이 나타난다는 것을 알 수 있다. 우리가 기압에 관한 정보를 수치상으로 확인하고 바로 확인할 수 있는 방법을 아두이노를 통해 구현해보면 어떨까? 이번 장에서는 직접 드론을 만들어 하늘에 날릴 때, 기압센서를 이용한 기압 및 온도 측정 내용을 바탕으로 고도와 온도 변화 등을 빠르게 표시하고 나중에 직접 드론을 만들어 작동해볼 때 여러 가지 도움을 줄 수 있는 방법들에 대하여 배워보고 예제를 통해 직접 구현해보자.
기압계란?
공기의 무게에 의해 생긴 압력을 ‘기압’이라고 한다. 기압은 해수면을 기준으로 고도에 따라 변하므로 기압계는 고도를 측정하는 데도 사용될 수 있다. 기압센서는 공기의 압력을 측정하는 센서로, 초기의 기압센서는 압력이 변화되면 얇은 막(다이어프램, Diaphragm)이 움직이면서 전압이 변화되는 형식이었다. 최근 들어서는 압전소자를 이용한 반도체식 기압센서를 많이 사용한다. 또, 반도체 기술이 발전함에 따라 작은 압력변화에도 빠르게 반응하면서도 소형 경량화가 가능해져 기압센서를 회로기판(PCB)에 직접 설치하는 경우도 많다.
기압센서는 스트레인 게이지(Strain gauge)의 저항치가 압력에 비례해 변화하는 것을 이용해 압력을 아날로그 전압으로 변화시키는 반도체 피에조(Piezo) 저항형 센서로, 기압력을 아날로그 전압으로 변환한 신호를 이용하여 기압고도(Pressure altitude)를 계산하므로 물체의 고도를 알 수 있다. MEMS(Micro Electro Mechanical Systems) 기압센서인 BMP180도 마찬가지로 피에조 저항 효과를 이용하고 있다. 기압계 원리 중 하나인 피에조 효과는 특정 방향으로 압력을 받으면 표면에서 전압이 발생하는 현상으로, 구체적인 원리는 저항에 가해진 응력에 의해 전기 도전율, 즉 저항률이 변화하는 현상이다. 이러한 현상은 가해진 응력(stress)에 의해 결정격자에 변형이 발생하여, 반도체의 캐리어 수 및 이동도가 변화하기 때문에 발생한다. 다이어프램 (수압부)이 압력을 받아 휘어지면 각 게이지 저항에는 다이어프램의 휨 정도에 따른 응력이 발생한다. 이러한 응력에 비례하여 게이지 저항(피에조 저항)의 저항률이 변화하고, 이에 따른 전기 저항의 변화를 전압 변화를 검출하여 기압을 감지한다.
전자식 기압센서의 구조
기압측정센서 | BMP180
온도의 기압을 측정할 수 있는 BMP180를 사용해볼 것이다. BMP180은 독일의 BOSCH사의 온도·기압센서로 정밀한 기압 및 온도를 측정할 수 있다. 기압은 지표면에서 가장 높고, 지표면으로부터 높이가 증가함에 따라 감소되는데, 이 원리를 기초로 계산되는 고도를 기압고도(Pressure Altitude)라고 한다.
기압은 날마다 다르고 날씨에 따라 변하기 때문에 캘리브레이션(Calibration)을 해야 한다. BMP180은 영하 40도부터 85도까지 측정할 수 있는 온도센서가 내장돼 있으며, 분해능은 0.1도이다. BMP180에는 풀업 저항과 레귤레이터, 콘덴서 등이 모두 붙어 있기 때문에 바로 아두이노에 연결해서 사용이 가능하며, 아두이노와 연결하면 배터리로 작동하는 기압계, 온도계, 고도계를 비롯해 개인 기상장치 등을 직접 만들어 볼 수 있다.
BMP180 센서
데이터에 대한 확인은 기상청 홈페이지에서 자신이 위치한 지역의 자료와 비교해서 보면 된다.
날씨누리 기상청 국가기상종합정보시스템 http://www.kma.go.kr/weather/observation/currentweather.jsp
연결회로도
스케치코드
코드설명
온도·기압센서를 이용하여 OLED 디스플레이 장치에 시각적으로 표현하는 예제를 수행해보았다. 이번 예제의 코드에 중요한 부분은 기압 고도(altitude)를 계산하는 식이다. 다음 순서도(flow chart)를 통하여 이번 예제의 전체적인 흐름을 파악하고 기압 고도를 계산하는 수식을 이해한다면 프로그램 코드를 쉽게 이해하는데 어려움이 없을 것이다.
OLED-BMP180의 순서도
해수면의 압력 계산식 : pressure.sealevel( ) 함수
절대고도(meter)에서 측정한 압력 P(mb)가 주어지면 해발등가압력(mb)으로 반환한다. 이로 인해 기상관측에 사용할 수 있는 압력 판독 값이 생성된다.
측정된 압력(mb) p와 측정 장소의 해발고도(meter) altitude를 이용하여 해수면의 압력(대기압)을 계산할 수 있다.
절대 고도 계산식 : pressure.altitude( ) 함수
주어진 측정압력 P(mb)와 기저선(baseline)에서의 압력(p0(mb))이 주어지면, 기저선 위의 고도를 반환한다. 측정한 헥토파스칼(hPa) 단위의 압력(p)과 해수면의 압력(p0)을 국제 기압계 공식(international barometric formula)을 이용하여 미터(meter) 단위의 고도를 계산할 수 있다 :
'교육 자료 > Raduino' 카테고리의 다른 글
9. 초음파센서를 이용한 거리측정 (0) | 2018.10.04 |
---|---|
8. 적외선센서를 이용한 거리측정 (0) | 2018.10.04 |
6. OLED 디스플레이를 이용한 움직이는 이미지 만들기 (0) | 2018.09.28 |
5. OLED 디스플레이를 이용한 시계 만들기 (1) | 2018.09.28 |
4. 라이브러리를 이용한 관성센서 제어 (0) | 2018.09.13 |