아두이노 엔코더 펄스 카운터 - adu-ino enkodeo peolseu kaunteo

아두이노 엔코더 펄스 카운터 - adu-ino enkodeo peolseu kaunteo

엔코더는 두개의 센서가 90도 간격으로 배치된 포토인터럽터를 사용한 센서입니다.

회전 방향에 따라서 위 두개의 그림 처럼 CW와 CCW에서 A, B 신호의 위상이 바뀝니다.

MCU를 사용 해서 엔코더 펄스를 측정 한다고 하면

A신호의 폴링에지마다 카운팅을 하며, B 신호의 레벨을 체크 하면 회전 방향을 알 수 있습니다.

2체배

엔코더 신호에서 2배의 카운터를 얻는 방법입니다.

아두이노 엔코더 펄스 카운터 - adu-ino enkodeo peolseu kaunteo

A상의 폴링에지와 라이징에지에서 카운팅을 하며, 각각의 에지에서 B상의 레벨을 체크 하면 회전 방향을 알 수 있습니다.

아두이노 엔코더 펄스 카운터 - adu-ino enkodeo peolseu kaunteo

A상과 B상의 폴링에지에서 카운팅을 해도 됩니다.

A상의 폴링에지에서는 B상의 레벨을 체크 하고

B상의 폴링에지에서는 A상의 레벨을 체크 하면 회전 방향을 알 수 있습니다.

4체배

엔코더 신호에서 4배의 카운터를 얻는 방법입니다.

아두이노 엔코더 펄스 카운터 - adu-ino enkodeo peolseu kaunteo

A상과 B상의 폴링에지와 라이징에지에서 카운팅을 합니다.

A상의 폴링에지와 라이징에지에서는 B상의 레벨을 체크 하고

B상의 폴링에지와 라이징에지에서는 A상의 레벨을 체크 하면 회전 방향을 알 수 있습니다. 

	

아두이노로 펄스가 들어올 때 들어온 펄스의 개수를 세는 코드 좀 만들어주세요 

//

[Actuator] Rotary Encoder - Control - 티스토리

keneth-control.tistory.com/2

2017. 3. 12. - 회전각 변위를 측정하는 것은 Rotary Encoder 나 Shaft Encoder이고 직선 ... 다만 여기서 사용할 Arduino Uno는 외부 인터럽트 핀을 2개까지만 ..

위 예제는 엔코더 신호를 외부 인터럽트를 사용해서 카운트 하는 예제입니다.

설명도 잘 되어 있으니 읽어보시고요

위 사이트 예제를 수정해서 만들어드리죠

사이트 소스는 버그가 있는 것 같군요

// DateTime : 2018-06-26 오전 11:57:35

// by Ok-Hyun Park

//

volatile int old_count=-1,count=0;

//

void setup(){

  pinMode(2,INPUT);

//attachInterrupt(0,Interrupt_A,FALLING); // interrupt 0(pin 2)  

  attachInterrupt(0,Interrupt_A,RISING);  // interrupt 0(pin 2)

  Serial.begin(9600);

}

//

void loop(){

  if(old_count!=count){

    old_count=count;

    Serial.print("count="); Serial.println(count);

  }

}

//

void Interrupt_A(){

  count++;

}

2번핀에 펄스를 입력하면

시리얼 모니터에 카운트 값을 출력합니다.