BASIC4MCU | 모터 | BLDC모터 | 쿼드콥터 변속기 - tgy6a 소스코드 분석시 참고하세요-1
페이지 정보
작성자 키트 작성일2017-09-05 15:05 조회993회 댓글0건본문
// **** 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등록된 댓글이 없습니다.