로터리 엔코더의 동작을 확인해 보았습니다.
버튼이 없는 경우 3핀으로 구성됩니다.
왼편부터 B, C, A라고 하겠습니다.
우선 회로를 아래처럼 구성했습니다.
실제 구성한 회로는 아래와 같습니다.
A와 B신호 출력핀이 5V로 풀업되어있고, 가운데 C핀은 접지로 연결됩니다.
이제 시계/반시계방향으로 로터리를 돌려보겠습니다.
우선 시계방향으로 돌린경우,
A(파랑)와 B(노랑)모두 Low로 같이 떨어지는데,
B(노랑)가 먼저 High가 되고 이후 B가 High 돌아옵니다.
반시계방향으로 돌린 경우,
A(파랑)이 먼저 Low로 떨어지고,
그다음 B(노랑)이 Low로 떨어집니다.
이후 동시에 High로 되는 군요.
위의 신호를 참조하면 A의 신호를 기준으로 하강엣지 트리거를 이용하고,
그 직후의 시점에서의 B신호값을 가지고 방향을 알 수가 있습니다.
Case1. A의 하강엣지 직후에서 B값이 Low이면 시계방향으로 한칸
Case2. A의 하강엣지 직후에서 B값이 High이면 반시계방향으로 한칸
다른 방법으로 B신호의 상승엣지를 트리거를 이용해 보겠습니다.
B신호의 상승엣지 직후의 시점에서,
Case1. B의 상승엣지 직후에 B값이 Low이면 시계방향으로 한칸
Case2. B의 상승엣지 직후에 B값이 High이면 반시계방향으로 한칸
마지막으로, 엔코더를 돌린 속도에 대해 알아보겠습니다.
위의 신호를 확인하는실험시,
시계방향으로 돌릴때 반시계방향으로 돌릴때 대비 훨씬
빠르게 돌렸습니다.
시계방향으로 돌린 시점의 A가 Low가 된 시간을 보면 대략 5ms정도입니다.
반면에 반시계 방향으로 돌린 시점의 A가 Low가 된 시간을 보면 12ms정도로
시계방향으로 돌릴때 보다길게 됩니다.
이를 이용해 하강엣지 부터 상승엣지까지의 시간을 카운터로 계산한다면,
돌리는 속도를 감지할 수 있게습니다.
이상으로 마치겠습니다.
다음에는 이를 이용한 실제 동작을 확인해 보도록 하겠습니다~
감사합니다~^^
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/002.gif)
'전자공작' 카테고리의 다른 글
STM32CubeIDE 프로젝트 GITHUB 연동하기 (0) | 2023.06.18 |
---|---|
ATMEL 7.0(Microchip Studio 7.0) STK500관련 인식 문제 점검 (0) | 2023.02.14 |
로터리 엔코더(Rotary Encoder)의 아두이노 작동 예제 (0) | 2023.01.19 |
MP3 모듈을 이용한 휴대용 MP3/라디오 스피커 만들기 (0) | 2021.05.24 |
충전 가능 초소형 손전등 DIY (0) | 2021.05.04 |