모터 > 쿼드콥터 변속기 - tgy6a 소스코드 분석시 참고하세요-1

TODAY747 TOTAL2,229,305
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 모터 | BLDC모터 | 쿼드콥터 변속기 - tgy6a 소스코드 분석시 참고하세요-1

페이지 정보

작성자 키트 작성일2017-09-05 15:05 조회993회 댓글0건

본문

 

3660040649_xaofteFn_25C125A625B825F1_25BE25F825C025BD1.PNG3Ftype3Dw740

 

 

 

3660040649_8QLZNjAe_6a25C825B825B725CE25B525B53.PNG3Ftype3Dw740

 

 

 


// **** running control loop ****
run1:
    wait_comp_lo_hi(); wt_OCT1_B4_sw();                // Bp_on+Cn_pwm->comp A↑
    BpFET_off; ApFET_on; ADMUX=mux_b;   // Bp_off Ap_on
    update_tm(wt_comp_scan); wt_OCT1();
run2:
    wait_comp_hi_lo(); wt_OCT1_B4_sw();                // Ap_on+Cn_pwm->comp B↓
    nFET_Sel=Bn_Ch; CnFET_off; BnFET_on; ADMUX=mux_c;   // Cn_off Bn_on
    update_tm(wt_comp_scan); wt_OCT1();
run3:
    wait_comp_lo_hi(); wt_OCT1_B4_sw();                // Ap_on+Bn_pwm->comp C↑
    ApFET_off; CpFET_on; ADMUX=mux_a;   // Ap_off Cp_on
    update_tm(wt_comp_scan); wt_OCT1();
run4:
    wait_comp_hi_lo(); wt_OCT1_B4_sw();                // Cp_on+Bn_pwm->comp A↓
    nFET_Sel=An_Ch; BnFET_off; AnFET_on; ADMUX=mux_b;   // Bn_off An_on
    update_tm(wt_comp_scan); wt_OCT1();
run5:
    wait_comp_lo_hi(); wt_OCT1_B4_sw();                // Cp_on+An_pwm->comp B↑
    CpFET_off; BpFET_on; ADMUX=mux_c;   // Cp_off Bp_on
    update_tm(wt_comp_scan); wt_OCT1();
run6:
    wait_comp_hi_lo(); wt_OCT1_B4_sw();                // Bp_on+An_pwm->comp C↓
    nFET_Sel=Cn_Ch; AnFET_off; CnFET_on; ADMUX=mux_a;   // An_off Cn_on
    update_tm(wt_comp_scan); wt_OCT1();
    //
    goto run1;

} 

B 채널과 C 채널 FET가 소스코드에서 바뀌어 있는 점 주의하세요

소스는 큰 골격만 남겨서 올려드린 것이니 분석 하실 때에 참고하세요^^

(일부분이라 별 도움은 안되겠지만..)

 

//----------------------------------------------------------------------
// *** commutation utilities ***
void comuApBn1(){ CpFET_off; if(PW_ON_flg)ApFET_on; ADMUX=mux_c; }
void comuApCn2(){ BnFET_off; if(PW_ON_flg)CnFET_on; ADMUX=mux_b; }
void comuBpCn3(){ ApFET_off; if(PW_ON_flg)BpFET_on; ADMUX=mux_a; }
void comuBpAn4(){ CnFET_off; if(PW_ON_flg)AnFET_on; ADMUX=mux_c; }
void comuCpAn5(){ BpFET_off; if(PW_ON_flg)CpFET_on; ADMUX=mux_b; }
void comuCpBn6(){ AnFET_off; if(PW_ON_flg)BnFET_on; ADMUX=mux_a; }
//----------------------------------------------------------------------

// **** running control loop ****
run1: wt_comp_L2H(); wt_OCT1_B4_sw(); comuApBn1(); update_tm(wt_comp_scan); wt_OCT1(); // Cp_on+Bn_pwm->comp A↑
run2: wt_comp_H2L(); wt_OCT1_B4_sw(); comuApCn2(); update_tm(wt_comp_scan); wt_OCT1(); // Ap_on+Bn_pwm->comp B↓
run3: wt_comp_L2H(); wt_OCT1_B4_sw(); comuBpCn3(); update_tm(wt_comp_scan); wt_OCT1(); // Ap_on+Cn_pwm->comp C↑
run4: wt_comp_H2L(); wt_OCT1_B4_sw(); comuBpAn4(); update_tm(wt_comp_scan); wt_OCT1(); // Bp_on+Cn_pwm->comp A↓
run5: wt_comp_L2H(); wt_OCT1_B4_sw(); comuCpAn5(); update_tm(wt_comp_scan); wt_OCT1(); // Bp_on+An_pwm->comp B↑
run6: wt_comp_H2L(); wt_OCT1_B4_sw(); comuCpBn6(); update_tm(wt_comp_scan); wt_OCT1(); // Cp_on+An_pwm->comp C↓
//----------------------------------------------------------------------
B와 C를 소스에서 바꿔 본 것입니다. (에러처리등 일부 코드는 제외한 상태)

 

pwm 제어는 P채널은 그냥 Full로 구동하고 N채널만 pwm제어를 하고 있습니다.

 

rpm 계산이라든가 pwm 타이밍 계산등이 복잡하게 얽혀있어서

며칠 분석해봤지만 소스만으로 분석 하는 것은...포기 상태에 빠졌있습니다. ㅎㅎㅎ

밀린 일좀 끝내고 다음달에는 보드를 돌려가면서 분석 해야겠습니다.^^

댓글 0

조회수 993

등록된 댓글이 없습니다.

모터HOME > 모터 > 전체 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기