BASIC4MCU | 모터 | 서보모터 | RC서보 & DC모터 FAST PWM 모드14 구동
페이지 정보
작성자 키트 작성일2017-09-05 16:54 조회872회 댓글0건본문
//=====================================================================//
//RC서보 - 타이머1 FAST PWM MODE14로 구동
//DC모터 - 타이머3 FAST PWM MODE14로 구동
//=====================================================================//
//전체 주기 20000usec중애서 아래 시간 만큼 high를 주면 해당 각도로 이동
// 600usec=-90도 포지션
//1500usec= 0도 포지션
//2400usec=+90도 포지션
//=====================================================================//
// 코드비젼 컴파일러
//=====================================================================//
// 코드 최적화 금지
#pragma opt-
//=====================================================================//
#include <mega128.h> //16MHz
#include <delay.h>
//=====================================================================//
void RC_Motor(int angle){ // angle : -90도 ~ +90도
int i;
if(angle<-90)angle=-90;
if(angle> 90)angle= 90;
i=(angle)*18 + 3000;
OCR1A=i; //PB5
}
void DC_Motor(int speed){ // speed : 0% ~ 100%
int i;
if(speed>100)speed=100;
i=(speed)*480;
OCR1B=i; //PB6
}
//=====================================================================//
void main(void){
DDRB=0x60; // PB5,6 out
TCCR1A=0xAA; // FAST PWM
TCCR1B=0x1A; // 8분주=0.5usec
ICR1=47999; // 0.5usec*48000=24000usec=41.67Hz
//RC서보모터
OCR1A=3000; // 1500usec=0도
//DC모터
OCR1B=0; // 속도0
//
while(1){
RC_Motor(-90); DC_Motor( 50); delay_ms(1000);
RC_Motor( 0); DC_Motor(100); delay_ms(1000);
RC_Motor( 90); DC_Motor( 50); delay_ms(1000);
RC_Motor( 0); DC_Motor( 0); delay_ms(1000);
}
}
//=====================================================================//
댓글 0
조회수 872등록된 댓글이 없습니다.