기울기 센서는 디지털형과 아날로그형으로 나뉜다. 디지털형은 일정한 각도 이상으로 기울어지면 신호가 바뀌는 것이고 (저가형 아두이노 모듈이 많이 있다.) 아날로그형은 기울어진 각도를 얻을 수 있는 소자이다.

 아날로그형 기울기센서 중에 SCA61T-FA1HiG 라는 모델명의 센서를 사 둔 것이 있었는데 꺼내서 비글본블랙(이하 BBB)의 아날로그핀에 물려서 실험을 해 보았다.

   

[그림 1] 기울기 센서의 외형과 핀 기능

이 그림에서 보듯 8핀 소자인데 5V를 입력으로 받는다. SPI 통신 또는 아날로그 전압값(7번 핀) 두 가지를 모두 얻을 수 있는데 아날로그 전압은 0도 일 경우 2.5V를 내고 각도에 따라서 0V~5V 사이의 전압값을 가진다.

[그림 2] 센서의 동작 방식


그런데 한 가지 문제가 있는데 BBB의 아날로그 핀은 1.8V 가 최대 허용 전압이므로 직결해서 사용할 수는 없다. 그래서 저항 두 개로 이루어진 간단한 전압 분배 회로를 이용하였다.

[그림 3] 전압 분배 회로


이 그림에서 7번 핀이 5V 즉, 최대 전압일 때 AIN0 단자가 1.8V 이도록 저항 x, y가 선택되어야 한다. 이것을 공식을 세워보면 다음과 같다.

이 식에서 저항 x, y의 관계식이 얻어진다. 먼저 x=910 으로 먼저 선정한 후 이 식에 의해서 y=510오옴으로 선택했다. 저항은 소모 전력을 고려하여 선정해야 한다. 이 경우 OUT핀이 5V일 때 5/(910+510)  = 3.5 mA 정도가 흐르게 된다.

 파이썬 코드는 0.01초(10ms)마다 한 번씩 ADC를 수행해서 화면에 보여주도록 하는 간단한 프로그램이다. PyBBIO 모듈을 이용하였다.


from bbio import *
import time
bbio_init()
while True:
   print(analogRead(AIN0))
   time.sleep(0.01)
bbio_cleanup()

analogRead()함수는 ADC된 전압을 mV 단위로 반환한다. 예를 들면 1.8V 일때는 1800을, 0.9V 일때는 900을 반환한다. 이 값을 읽어서 스케일링을 하면 기울어진 각도를 계산할 수 있다.

실험 동영상을 만들어 보았다.



Posted by 살레시오
,