BASIC4MCU | 모터 | BLDC모터 | 쿼드콥터 변속기 - 간이 ESC 테스트
페이지 정보
작성자 키트 작성일2017-09-05 15:08 조회941회 댓글0건본문
#define F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//
ISR(TIMER1_COMPA_vect){
static int duty=2000;
if(duty<2500)OCR1A=duty;
else OCR1A=(2999-duty)+2000;
if(++duty==3000){ duty=2000; }
}
//
int main(){
DDRB=0xFF;
TCCR1A=0x82; TCCR1B=0x1A;ICR1=39999; // PB5 OUT, FAST14번 모드
OCR1A=4000; _delay_ms(3000); //2ms 최대 속도로 3초동안 출력
OCR1A=2000; _delay_ms(1000); //1ms 최저 속도로 1초동안 출력
TIFR=0xFF; TIMSK=0x10; sei();
while(1){}
}
//
2000(1ms)~2500(1.25ms) 속도 증가 후2500(1.25ms)~2000(1ms) 감속하는 것을 반복하는 예제입니다.
이정도만 해도 상당히 빠르게 동작합니다.
더 빠르게 동작 시키려면
아래 코드로 동작시키세요 1.5ms 까지만 출력합니다.
#define F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//
ISR(TIMER1_COMPA_vect){
static int duty=2000;
if(duty<3000)OCR1A=duty;
else OCR1A=(3999-duty)+2000;
if(++duty==4000){ duty=2000; }
}
//
int main(){
DDRB=0xFF;
TCCR1A=0x82; TCCR1B=0x1A;ICR1=39999; // PB5 OUT, FAST14번 모드
OCR1A=4000; _delay_ms(3000); //2ms 최대 속도로 3초동안 출력
OCR1A=2000; _delay_ms(1000); //1ms 최저 속도로 1초동안 출력
TIFR=0xFF; TIMSK=0x10; sei();
while(1){}
}
//
제어가 잘 안되는 분은 아래 글처럼 제어를 변경 해보세요
1) pwm on low 128의 pwm을 low(1ms) 출력 합니다.2)power esc, wait for beep(s) 변속기 전원을 그 후에 넣고서 비프음을 기다립니다.
3)pwm to high for about 2secs, wait for more beeps 비프음 후에는 high(2ms) 2초동안
4)pwm low\ 다시 low(1ms) 출력
5) on final low esc is hot, and any pwm adjustment will now fire motor;
댓글 0
조회수 941등록된 댓글이 없습니다.