이 튜토리얼에서는 atmega8 마이크로 컨트롤러와 조이스틱 모듈 을 인터페이스 할 것 입니다. JOY STICK는 통신에 사용되는 입력 모듈이다. 기본적으로 사용자 기계 통신을 쉽게합니다. 조이스틱은 아래 그림과 같습니다.
조이스틱 모듈에는 두 개의 축이 있습니다. 하나는 수평이고 다른 하나는 수직입니다. 조이스틱의 각 축은 전위차계 또는 포트 또는 가변 저항에 장착됩니다. 중간 지점은 Rx 및 Ry로 내려갑니다. 이 핀은 JOYSTICK의 출력 신호 핀으로 전달됩니다. 공급 전압이 존재하는 상태에서 스틱이 수평 축을 따라 움직이면 Rx 핀의 전압이 변경됩니다.
Rx의 전압은 앞으로 이동하면 증가하고 Rx 핀의 전압은 뒤로 이동하면 감소합니다. 마찬가지로 Ry의 전압은 위로 이동하면 증가하고 Ry 핀의 전압은 아래로 이동하면 감소합니다.
그래서 우리는 2 개의 ADC 채널에 4 개의 조이스틱 방향을 가지고 있습니다. 정상적인 경우 정상적인 상황에서 각 핀에 1Volt가 있습니다. 스틱을 움직이면 각 핀의 전압이 방향에 따라 높아지거나 낮아집니다. 따라서 x 축의 경우 네 방향 (채널 0의 0V, 5V)이됩니다. (채널 1의 0V, 5V) y 축의 경우.
이 작업을 수행하기 위해 ATMEGA8의 두 ADC 채널을 사용할 것입니다. 채널 0과 채널 1을 사용할 것입니다.
필요한 구성 요소
하드웨어: ATMEGA8, 전원 공급 장치 (5v), AVR-ISP PROGRAMMER, LED (4 개), 1000uF 커패시터, 100nF 커패시터 (5 개), 1KΩ 저항 (6 개).
소프트웨어: Atmel studio 6.1, progisp 또는 flash magic.
회로도 및 작동 설명
JOYSTICK의 전압은 완전히 선형이 아닙니다. 시끄러울 것입니다. 노이즈를 걸러 내기 위해 그림과 같이 회로의 각 저항에 커패시터를 배치합니다.
그림과 같이 회로에는 4 개의 LED가 있습니다. 각 LED는 JOYSTICK의 각 방향을 나타냅니다. 스틱이 한 방향으로 움직이면 해당 LED가 켜집니다.
더 나아 가기 전에 ATMEGA8의 ADC에 대해 이야기 할 필요가 있습니다.
ATMEGA8에서는 PORTC의 4 개 채널 중 하나에 아날로그 입력을 제공 할 수 있습니다. 모든 채널이 동일하므로 어떤 채널을 선택하든 상관 없습니다. PORTC의 채널 0 또는 PIN0을 선택합니다.
ATMEGA8에서 ADC는 10 비트 분해능이므로 컨트롤러는 Vref / 2 ^ 10의 최소 변화를 감지 할 수 있으므로 기준 전압이 5V이면 5 / 2 ^ 10 = 5mV마다 디지털 출력 증분을 얻습니다.. 따라서 입력이 5mV 증가 할 때마다 디지털 출력에서 1 씩 증가합니다.
이제 다음 용어에 따라 ADC의 레지스터 를 설정 해야합니다.
1. 먼저 ADC에서 ADC 기능을 활성화해야합니다.
2. ADC 변환을위한 최대 입력 전압은 + 5V입니다. 따라서 ADC의 최대 값 또는 레퍼런스를 5V로 설정할 수 있습니다.
3. 컨트롤러에는 ADC 변환이 외부 트리거 후에 만 발생한다는 것을 의미하는 트리거 변환 기능이 있습니다. ADC가 연속 자유 실행 모드에서 실행되도록 레지스터를 설정할 필요가 없기 때문입니다.
4. 모든 ADC의 경우 변환 빈도 (아날로그 값에서 디지털 값으로)와 디지털 출력의 정확도는 반비례합니다. 따라서 디지털 출력의 정확도를 높이려면 더 낮은 주파수를 선택해야합니다. 정상적인 ADC 클럭의 경우 ADC 사전 판매를 최대 값 (2)으로 설정합니다. 1MHZ의 내부 클럭을 사용하고 있기 때문에 ADC 클럭은 (1000000/2)가됩니다.
ADC를 시작하기 위해 알아야 할 4 가지 사항은 이것뿐입니다.
위의 네 가지 기능은 모두 두 개의 레지스터로 설정됩니다.
빨간색 (ADEN): ATMEGA의 ADC 기능을 활성화하려면이 비트를 설정해야합니다.
BLUE (REFS1, REFS0):이 두 비트는 기준 전압 (또는 우리가 제공 할 최대 입력 전압)을 설정하는 데 사용됩니다. 기준 전압을 5V로하고 싶기 때문에 표에 따라 REFS0을 설정해야합니다.
노란색 (ADFR): ADC가 계속 실행되도록하려면이 비트를 설정해야합니다 (자유 실행 모드).
PINK (MUX0-MUX3):이 4 비트는 입력 채널을 알리기위한 것입니다. ADC0 또는 PIN0을 사용할 것이므로 테이블과 같이 비트를 설정할 필요가 없습니다.
BROWN (ADPS0-ADPS2):이 세 비트는 ADC의 프리 스칼라를 설정하기위한 것입니다. 2의 프리 스칼라를 사용하고 있으므로 1 비트를 설정해야합니다.
DARK GREEN (ADSC): ADC가 변환을 시작하도록이 비트를 설정합니다. 이 비트는 변환을 중지해야 할 때 프로그램에서 비활성화 할 수 있습니다.