Practice more and More

[AVR] DC_motor 제어

AVR&ARM2016. 5. 26. 11:49

DC모터를 타이머에 있는 PWM기능을 이용하여 제어.

 

관련 레지스터

 

TCCR1A, TCCR1B, TCCR1C, TCNT1, OCR1A, OCR1B, OCR1C

 

8bit Fast PWM을 분주비 256으로 예시로 해보면,

 

1.TCCR1A

 

 

TCCR1A 7,6번 비트의 경우 시작 파형을 선택해주는 부분인데, 10 이면 High로 시작해서 Low로 11이면 Low로 시작해서 High로 바뀌게 된다.

Waveform Generation Mode WGM1, WGM0는 TCCR1B에 있는 WGM3과 WGM 2와 같이 보면 편하다.

 

 

2. TCCR1B

 

 

TCCR1B 의 경우 WGM으로 모드 설정해주고, 분주비를 설정하는 부분이 있다.

256으로 분주할 경우 하위 3비트에 100으로 해주면 된다.

 

3. TCNT1

타이머 시간을 조정시 사용하는데 PWM 사용시에는 0으로 두고 사용가능.

 

4. OCR1A

듀티비를 조정할 수 있는 부분. 시작부터 진행되어 OCR1A값에 도달하면 값을 반전 시켜줌.

 

 

요약

Fast PWM 8bit / 256분주로 이용시

 

TCCR1A= 0x81;

TCCR1B= 0x0C;

TCNT1=0;

OCR1A=0;          //원하는  PWM 듀티비 8bit 사용중이라서 0~255까지 값 넣어주어야함.

 

테이블은 atmega128 메뉴얼 참조.