서보모터 | 가변저항으로 RC서보모터 구동 - 2채널
페이지 정보
작성자 키트 작성일17-09-05 17:20 조회1,996회 댓글0건본문
1 2 3 4 5 6 7 | //=====================================================================// //RC서보 - 타이머1 FAST PWM MODE14로 구동 //=====================================================================// //전체 주기 20000usec중애서 아래 시간 만큼 high를 주면 해당 각도로 이동 // 600usec=-90도 포지션 //1500usec= 0도 포지션 //2400usec=+90도 포지션 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //=====================================================================// // CVAVR //=====================================================================// #include <io.h> #include <delay.h> // void RC_Motor1(int angle){ OCR1A=angle*20+3000; } //PB5 // angle : -90도 ~ +90도 void RC_Motor2(int angle){ OCR1B=angle*20+3000; } //PB6 // angle : -90도 ~ +90도 // void main(void){ int i; DDRB=0x60; // PB5,PB6 out TCCR1A=0xA2; TCCR1B=0x1A; OCR1A=3000; OCR1B=3000; ICR1=39999; ADCSRA=0xE7; while(1){ ADMUX=0x40; delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor1(i-90); //PF0 ADMUX=0x41; delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor2(i-90); //PF1 } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //=====================================================================// // AVRstudio //=====================================================================// #include <avr/io.h> #define F_CPU 16000000UL // 16 MHz #include <util/delay.h> // void RC_Motor1(int angle){ OCR1A=angle*20+3000; } //PB5 // angle : -90도 ~ +90도 void RC_Motor2(int angle){ OCR1B=angle*20+3000; } //PB6 // angle : -90도 ~ +90도 // int main(void){ int i; DDRB=0x60; // PB5,PB6 out TCCR1A=0xA2; TCCR1B=0x1A; OCR1A=3000; OCR1B=3000; ICR1=39999; ADCSRA=0xE7; while(1){ ADMUX=0x40; _delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor1(i-90); //PF0 ADMUX=0x41; _delay_ms(10); i=ADCW; i=(int)( (float)i*180.0/1023.0 ); RC_Motor2(i-90); //PF1 } } | cs |
간단한 설명을 추가합니다.
1 2 3 | ADMUX=0x40; _delay_ms(10); i=ADCW; // 0~1023 PF0(ADC0) 변환값을 읽고 i=(int)( (float)i*180.0/1023.0 ); // 0~180으로 변환 RC_Motor1(i-90); // -90~+90으로 바꾼 후 모터 함수 실행 | cs |
댓글 : 0
조회수 : 1,996
등록된 댓글이 없습니다.