2015년 6월 5일 금요일

비글본블랙과 파이썬으로 기울기 센서 실험하기


 기울기 센서는 디지털형과 아날로그형으로 나뉜다. 디지털형은 일정한 각도 이상으로 기울어지면 신호가 바뀌는 것이고 (저가형 아두이노 모듈이 많이 있다.) 아날로그형은 기울어진 각도를 얻을 수 있는 소자이다.
 아날로그형 기울기센서 중에 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을 반환한다. 이 값을 읽어서 스케일링을 하면 기울어진 각도를 계산할 수 있다.
실험 동영상을 만들어 보았다.


댓글 없음:

댓글 쓰기