이 튜토리얼에서는 ATmega8 마이크로 컨트롤러와 로터리 엔코더를 인터페이스 할 것입니다. ATmega8은 임베디드 애플리케이션을 위해 설계된 atmel의 마이크로 컨트롤러 시리즈입니다. 로터리 엔코더 는 모터 또는 축의 이동 위치와 각도 이동을 파악하는 데 사용됩니다. 일반적으로 전원 및 접지 핀이 5 개인 3 개의 터미널 장치입니다. 로터리 엔코더 모듈은 아래와 같습니다.
로터리 엔코더의 핀은 다음과 같습니다.
- 바닥.
- + 5V에 포지티브 연결
- 출력 신호 A 핀
- 출력 신호 B 핀
- 클록 핀 또는 공통 핀.
ENCODER은 시스템이 이해할 수 있도록 샤프트 위치의 변화를 나타내는 펄스를 제공합니다. ROTATORY ENCODER에 전원이 공급되고 샤프트가 이동한다고 가정합니다.
위의 표에서 볼 수 있듯이 샤프트가 시계 방향으로 움직이는 것을 고려하십시오. 이것으로 A 터미널에 Falling Edge가 있고 B 터미널에 있습니다.
샤프트가 시계 반대 방향으로 움직 인 것을 고려하십시오. 이것으로 B 터미널에 Falling Edge가 있고 A 터미널에 있습니다.
이 에지는 360/20 = 18도에 대해 한 번 발생합니다 (이는 위치가 20 인 인코더의 경우이며 유형마다 변경되며 카운트가 높을수록 정확도가 높아짐).
위의 두 가지 조건으로 방향과 회전 정도를 얻을 수 있습니다. 따라서 우리는 샤프트의 위치를 얻기 위해 필요한 매개 변수를 얻습니다.
구성품
하드웨어: ATMEGA8, 연결 핀, AVR-ISP PROGRAMMER, 220Ω 저항, LED (8 개), 1KΩ 저항, 220Ω 저항 (2 개), 100nF 커패시터 (2 개), 브레드 보드.
소프트웨어: Atmel studio 6.1, progisp 또는 flash magic.
회로도 및 작동 설명
여기서 커패시터는 ENCODER에서 접촉 바운싱 효과를 중화하기위한 것입니다. 이러한 커패시터가 없으면 위치 판독에 심각한 문제가 발생합니다.
샤프트가 움직일 때 두 출력 핀 출력 사이에 시간차가 있습니다. ATMEGA8은 시계 반대 방향 회전의 시계 방향에 대해이 시간 차이를 인식합니다.
시계 방향으로 회전하면 이진 카운트가 1 씩 증가하고이 카운트는 그림과 같이 LED 포트에 표시됩니다.
시계 반대 방향으로 회전하면 이진 카운트가 1 씩 감소하고 이진 카운트가 LED 바이트에 표시됩니다.
여기서 우리는 atmega8의 퓨즈 비트를 설정하지 않았으므로 컨트롤러는 1Mhz 기본 내부 크리스탈에서 작동합니다.
로터리 엔코더와 ATmega8 마이크로 컨트롤러를 연결하는 작업은 아래 코드에 설명되어 있습니다.