https://bbangpan.tistory.com/67
IR송수신기를 사용한 주기적인 속도 측정(RPM 등)용 센서를 활용해보자..
▶ 이 가이드를 따라하면
- 회전하는 바퀴의 RPM 등을 측정할 수 있는 Tachometer 센서를 이해할 수 있다.
▶ 부품 설명 및 회로 구성
IR(Infra Red/적외선)은 다양한 활용도가 있는데, 그 중에 하나가 바로 이 타코미터(Tachmeter)이다. 따로 적외선 송수신기를 달아 만들기도 하지만, 이미 만들어진 모듈이 존재한다. 바로 아래 그림이다. RPM 측정에도 광범위하게 사용되는데, 무언가 사이를 지나가는 것을 측정할 수 있다. 기본적으로는 양 옆에는 IR 송출부와 수신부가 있고, 가운데를 막으면 IR 신호가 막히는 것을 이용해 digital로 signal을 내어준다(해당 IR 센서의 측정 값을 analog로도 같이 내주는 경우도 흔하다.) 레이저와 광센서로도 유사한 측정이 가능한데 물론 이 IR이 훨씬 저렴하게 가능하다.
<FC-03 Tachometer, VCC/GND/D0/A0가 보인다. A0는 analog 센서 측정 값으로, 필요시만 사용한다.>
상기 센서 모듈의 검은색 두개의 타워 사이에 무언가 지나가면, 노란색LED(On/Off)에 불이 꺼졌다가 들어오게 된다(빨간색 LED는 전원 유무). 배선은 간단해서 모듈과 보드를 VCC->5V, GND->GND, D0->D2에 연결하면 된다.
<모듈의 D0를 D2에 연결했다.>
이 센서는 매우 정확하게 지나간 타이밍을 측정하는데, 어떤 책에서는 이를 통해 중력가속도를 측정하는 예를 본 적도 있다.(진자의 통과 시간을 측정해서 계산하면 되었던 것 같다. 해당 사이 간격이 넓은 유사 센서가 존재한다.)
실제에서는 바퀴에 구멍을 뚫어서 회전시에 구멍이 주기적으로 노출되는 시간 간격을 측정해 RPM(회전속도)을 계산한다. 아래가 그 개념도이다.
<반사되어 온다는게 FC-03과 다르나 RPM 측정 원리는 같다. 구멍이 지나가는 시간을 측정한다. www.ikalogic.com 발췌>
여기서는 간단하게 무언가 사이를 지나가는 횟수를 count하는 방법을 보자.
▶ 소스 코드 입력 및 구동
attachInterrupt라는 function을 사용하게 되는데, 센서의 디지털 핀이 HIGH->LOW로 바뀔때마다 이벤트 기반으로 숫자를 세준다(지속적으로 해당 핀의 HIGH/LOW를 검사해서 숫자를 세는 것보다 훨씬 더 효율적이다). 다만, 신기한 것은 다양한 이유로 생기는 잡음 때문에 이 HIGH->LOW로 변하는 것이, 순간적으로 잠깐씩 발생할 수 있어서 생각보다 count가 많이 잡힌다. 대표적인 것이 센서의 상태가 변하는 바로 전후인데, 이를 위해 아래의 소스코드에서는 상태 변화 후, 10msec미만에서 발생한 것들은 무시한다. 이 이슈 관련한 글은, 영문이지만 궁금한 분들을 위해 참조로 밝힌다. http://forum.arduino.cc/index.php?topic=342650.0
GitHub 원본 소스 링크 / https://github.com/bbangpan/bbangpan.com/blob/master/neibc_fc03_tachometer/neibc_fc03_tachometer.ino
/* Originally posted on www.bbangpan.com
Program Description: FC-03 IR tachometer sensor test code
Tested on : Arduino 1.7.6, Arduino UNO R3, FC-03
Copyright (c) 2015 www.bbangpan.com. All rights reserved.
This program can be used for any non-commercial purpose freely. */
unsigned long ignoremilli = 10; // to prevent unexpected peak (무시할 시간 타이밍을 결정한다.)
if( (time - oldtime) > ignoremilli ) {
<실행 후 tachometer 사이에 무언가를 통과시키면 count가 올라간다>
<센서 값 변화에 따른 실제 Digital pin의 신호 변화 개념도. 초기 신호 전환시 잡음까지 있다. forum.arduino.cc 발췌>
'프로세싱+아두이노+안드로이드' 카테고리의 다른 글
NKC Motorshield + Interrupt (0) | 2022.05.14 |
---|---|
아두이노 인터럽트의 이해 (interrupt) (0) | 2022.05.14 |
아두이노 차량에 스피드 센서 사용 방법 (0) | 2022.05.13 |
Arduino 포토 인터럽터 사용하기 (0) | 2022.05.13 |
Adding External I2C EEPROM to Arduino (24LC256) (0) | 2022.05.13 |
댓글