[매드정] 아두이노 강좌 - 16. 엔코더 모듈 동작

안녕하세요~ 매드 입니다.

이번 시간에는 생각보다 많은 곳에서 사용되고 있는 엔코더 모듈에 대해서 알아보겠습니다.


16-1. 엔코더란?

< 출처 : 구글 사진 >

보통 모터 엔코더 또는 로터리 엔코더라고도 하는데 동영상 인코딩(encoding)이랑은 조금 다른 의미로 사용되는데 전자연동장치에 사용하는 엔코더(Encoder)는 전자연동장치의 상태를 검지하고 이들 입력 신호를 기초로 하여 파형을 만들어 통신매체에 전달해주는 장치. 라고 합니다.

위의 사진에 있는 노브를 손으로 돌리면 회전에 따라 파형이 출력되는데 이것을 이용하여 회전하는 속도, 방향 등을 정확하게 알아낼 수 있습니다.


< 출처 : 구글 사진 >

엔코더를 회전시키면 위와 같이 A, B 두가지 출력을 얻을 수 있는데 여기서 발생하는 출력의 상태를 가지고 회전방향을 알 수 있고 저 펄스의 주기(시간)을 알아내면 회전속도 또한 알아낼 수 있습니다. 먼가 어려워 보이지만 아두이노가 멉니까! 이미 다 만들어져 있습니다.


16-2. 엔코더 회로

< 출처 : 구글 사진 >

엔코더는 전원을 연결하고 A,B 상이 출력되는 신호선을 아두이노의 외부인터럽트핀인 2,3번 핀에 연결하여 동작을 체크하면 됩니다.
아두이노의 다른 핀을 이용해서도 입력을 받을 수 있지만 엔코더 뿐만 아니라 다른 동작을 같이 하고 있다면 정확도에 문제가 발생할 수 있으므로 가능하면 외부 인터럽트를 사용하는 것이 좋습니다.

이외 자세한 내용들은 동영상 강좌를 통해서 전달 드리구요!~
이번 강좌는 30분 이내로 끝나게 됩니다! ㅋㅋ 먼가 짧게 성공한 느낌 후후..
참조하세요~ >.<


16-3. 펌웨어 코드

#include <Encoder.h>

Encoder myEnc(2, 3);

long oldPosition  = -999;

void setup() {
  Serial.begin(9600);
  Serial.println("Basic Encoder Test:");
}

void loop() {
  long newPosition = myEnc.read() / 4;
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }
}



다음주 강좌는 물체의 거리를 알 수 있는 초음파 센서에 대해서 다루어 보도록 하겠습니다.
점점 살짝 재밌는 것들이 나오고 있죠!

ㅎㅎ 앞으로 더 재밌는 것들이 더 많이 나오게 될테니... 기대해주시기 바랍니다. 후후..

그럼 다음주에 뵐게요~ >.<


댓글 쓰기

0 댓글