오늘은 밤새 센서와 씨름하느라 여태 안자고 있다.
센서 값을 이용해서 exponential 함수로 근사화하여 근사화한 식을 이용해서 거리를 구하는 게 목적이었다.
요구하는 조건은 아래와 같다.
1. 15cm 이상의 거리에서도 신뢰할만한 센서값이 나와야 한다.
2. 1cm 이상되는 거리에서는 센서값이 saturation 값보다 작아야 한다.
3. 근사화된 식으로 변환이 용이한 거리-센서값 그래프가 나와야 한다.
일단은 쓰고 있던 센서들(SFH484 - SFH313)로 거리-센서값 그래프를 구하며 실험을 하였다.
발광 센서를 켜는 시간을 1~6us 로 넣어보며 테스트를 했다.
그 결과 아래와 같은 그래프를 얻을 수 있었다.
발광 센서를 켜는 시간을 늘리면 늘릴 수록 가까운 거리에서 saturation 현상이 나타남을 알 수 있었다.
그래서 1~2us 로 켰을 때의 그래프를 가지고
최소자승법을 이용하여 근사식의 계수를 찾아보았다.
하지만 찾은 계수를 통해 센서값에 대한 거리 그래프를 그려보아도 실제 거리와의 차이가 상당하였다.
그 원인으로 거리-센서값 그래프가 앞에서 가정한 형태의 exponential 함수와 차이가 있기 때문이라고 생각되었다.
그래서 정말 밤새며 미친듯이 이것저것 해보았다.
일단 센서를 바꿔보았다.
한쪽은 SFH4550-TEFT4300 으로 한쪽은 SFH484-TEFT4300으로 땜하여서 동시에 실험을 진행했다.
그런데 5PI센서(SFH313)에서 3PI센서(TEFT4300)으로 센서를 바꾸어서 그런지 거리가 잘 나오지 않았다.
TEFT4300 에서는 10cm 정도에서 센서값이 많이 떨어져 발광을 쏘지 않을 때와 비슷한 값이 나와버렸다.
좌절하며 여기저기 찾아보던 중 수광 센서의 peak값을 쓰기 위해 120us정도의 delay를 사용하는 소스를 우연히 발견했다.
그래서 peak 값을 쓰는 게 맞나? 하는 생각을 하다가 일단 그렇게 해보기로 했다.
우리가 ADC 하는 방식은 발광을 잠깐동안(1~5us) 쏜 후 수광 센서에서 빛에 의해 전압이 올라갈때 그 값을 conversion 하는 방식이다. 그래서 수광 소자가 빛에 대해 온전히 peak로 올라가기 전에 그 슬로프에서 값을 받는 식이었다.
일단 발광센서의 쏘는 시간을 바꿀 수 있도록 프로그램 한 후 스위치로 값을 바꿔가며 실험하였다.
수광 소자에서 값이 올라가는 추세를 오실로스코프로 찍어보며 peak까지 가는 시간을 체크했다. 대략 80us 정도는 있어야 신뢰할만한 peak로 올라가는 것을 볼 수 있었다. 또한 80us로 바꾸었더니 더 많은 거리를 보게 되어 15cm 정도는 신뢰할만한 값을 보였다. 또한 그로 얻은 거리-센서값 그래프를 통해서 얻은 근사식 계수를 통해 센서값-거리 그래프를 그려보았더니 실제 거리와 거의 비슷하게 나오는 것을 볼 수 있었다.
이러한 이유에 대해 생각해보고 내린 나름대로의 결론은 아래와 같다.
위에서 사용한 근사식은 빛의 반사량에 대한 이론적 분석을 통해 얻어진 것으로 알고 있다. 이는 카토의 블로그에도 소개된 바 있다. 하지만 우리가 ADC 하는 방식은 발광을 잠깐동안(1~5us) 쏜 후 수광 센서에서 빛에 의해 전압이 올라갈때 그 값을 conversion 하고 빛의 량에 대한 수광소자의 peak 값을 이용하지 않기 때문이라고 생각했다.
또한 TEFT4300이 다른 센서들보다 반응 파장대역이 좁아서 그 특성 때문에 다른 외광에 강하다고 성진이형이 말씀하셨다.
지금의 테스트 마우스에는 두 가지 다른 수광 센서가 달려있기 때문에 이를 테스트 해보았다.
테스트를 위해 동방에 썩혀두고 있떤 200W 전구를 꺼냈다.(한번 켜면 엄청 뜨거워져서 손도 못댈 뿐더러 책상에도 함부로 못놓는다는.. )
실험은 간단하다. 아래 그림처럼 200W 전구를 로봇 위 약 20cm 위치에 켜놓고 수광 센서에서 얼만큼의 변화가 있는지 오실로스코프로 찍어보는 실험이다. (사진이 굉장히 어둡게 보이지만 동아리방 불은 모두 켜져 있었다. 너무나 강한 200W 전구의 영향으로 카메라가 그에 조도를 맞추었기 때문에 주변이 어둡게 보이도록 찍힌 것이다.)
이제까지의 나의 상식으로는 이정도 위치에 이정도 밝기면 바로 saturation 되어버릴 것만 같은 말도 안되는 실험이다.
하지만 놀랍게도 두 가지 센서 모두 saturation은 일어나지 않았다. 다만 이 전구의 빛에 반응하는 정도가 달랐다.
SFH313 의 경우 2V 정도의 전압이 관측되었다.
TEFT4300은 놀랍게도 450mV 정도의 전압이 관측되었다.
대회장의 빛이 아무리 밝아도 이보다 밝진 않을 것이라 생각된다. 또한 그 빛의 광원이 이보다 훨씬 멀리 떨어져 있기 때문에 수광센서에서의 값의 변화가 많지 않을 것이다. 결과적으로 TEFT4300은 굉장하다!..
졸리다 자야겠다. ㅠㅠ
최근 덧글