이 프로젝트에서 우리는 ARDUINO와 ROTARY ENCODER 을 인터페이스 할 것 입니다. ARDUINO UNO는 전자 엔지니어 및 애호가를 위해 설계된 ATMEGA 컨트롤러 기반 개발 보드입니다. ARDUINO에는 20 개의 I / O 핀이 있으므로 20 개의 UNO 핀을 입력 또는 출력으로 사용하도록 프로그래밍 할 수 있습니다.
ROTARY ENCODER는 모터 축의 이동 또는 각 운동 및 위치를 알고 사용된다. 일반적으로 전원 및 접지 핀이있는 3 개의 터미널 장치로 총 5 개의 터미널이 있습니다. ROTARY ENCODER 모듈은 아래와 같습니다.
로터리 엔코더의 핀은 다음과 같습니다.
- 바닥
- + 5V에 포지티브 연결
- 출력 신호 A 핀
- 출력 신호 B 핀
- 클록 핀 또는 공통 핀
ENCODER은 시스템이 이해할 수 있도록 샤프트 위치의 변화를 나타내는 펄스를 제공합니다. ROTARY ENCODER에 전원이 공급되고 샤프트가 이동한다고 가정합니다.
위의 표에서 볼 수 있듯이 샤프트가 시계 방향으로 움직이는 것을 고려하십시오. 이것으로 A 터미널에 Falling Edge가 있고 B 터미널에 있습니다.
샤프트가 시계 반대 방향으로 움직 인 것을 고려하십시오. 이것으로 B 터미널에 Falling Edge가 있고 A 터미널에 있습니다.
이 에지는 360/20 = 18도에 대해 한 번 발생합니다 (이는 위치가 20 인 인코더의 경우이며 유형마다 변경되며 카운트가 높을수록 정확도가 높아짐).
위의 두 가지 조건으로 방향과 회전 정도를 얻을 수 있습니다. 따라서 우리는 샤프트의 위치를 얻기 위해 필요한 매개 변수를 얻습니다.
필요한 구성 요소
하드웨어: Arduino uno 보드, 연결 핀, 220Ω 저항, LED (8 개), 1KΩ 저항, 220Ω 저항 (2 개), 100nF 커패시터 (2 개), 브레드 보드.
소프트웨어: Arduino nightly
회로도 및 작동 설명
여기서 커패시터는 ENCODER에서 접촉 바운싱 효과를 중화하기위한 것입니다. 이러한 커패시터가 없으면 위치 판독에 심각한 문제가 발생합니다.
샤프트가 움직일 때 두 출력 핀 출력 사이에 시간차가 있습니다. 아두 이노 UNO는 반 시계 방향 회전의 시계 방향에 대해이 시간 차이를 인식합니다.
시계 방향으로 회전하면 이진 카운트가 1 씩 증가하고이 카운트는 그림과 같이 LED 포트에 표시됩니다.
시계 반대 방향으로 회전하면 이진 카운트가 1 씩 감소하고 이진 카운트가 LED 바이트에 표시됩니다.
Rotary Encoder 로 Arduino의 작동은 아래에 주어진 C 코드로 단계별로 설명됩니다.