본문 바로가기

[AVR]/ATTiny

[AtTiny13 EVM] ADC, PWM 테스트 - PWM을이용한 모터 속도 제어

[AtTiny13 EVM] ADC, PWM 테스트 - PWM을이용한 모터 속도 제어
사용자 삽입 이미지

AtTiny13은 2개의  Output Compare Unit(PB0, PB1)이 있고 이를 이용하면 PWM출력이 가능하다.



AtTiny13 OC0 구조



AtTiny13 PWM을 이용하여 고휘도 LED테스트 진행



LED제어를 위해서는 고속의 PWM보다 저주파의 정밀한 PWN이 피요하다.



소스코드
pwm.c
void InitPWM0_B(void)
{
    Sbi(PWM0A_DDR, PWM0B_BIT); //Output for PWM
    
    //고속 PWM모드
    //TCCR0A |= (PWM0B_CLEAR|PWM_MODEA_FAST);
    //TCCR0B |= (PWM0_PRESCALE_DIV8);
   
   //정밀 PWM 모드
   TCCR0A |= (PWM0B_SET|PWM_MODEA_PHASE); 
   TCCR0B |= (PWM0_PRESCALE_DIV256);
 
    SetPwm0B(0);
}

 
main.c
#include "system.h"
#include "pwm.h"
#include "adc.h"

//-----------------------------------------------------------------------------
int main(void)
{
 unsigned char pwm = 0;
 unsigned char flag = 0;
 //시스템 초기화
 SystemInit();

 AdcInit(); 
 InitPWM0_B();

 while(1)
 {
  SetPwm0B(~(AdcRead(3)>>2));
  Led3Toggle();
  Delay(50);  
 }
}
//-----------------------------------------------------------------------------
 

Attiny13 PWM을 이용한 모터 제어 테스트 동영상



Attiny13 ADC, PWM을 이용한 고휘도 LED제어 테스트 동영상
가변 저항의 변화값에 따라 고휘도 LED의 밝기 조절


반응형