Procházet zdrojové kódy

修改MC124死区时间接近1us(实际测量1us左右)

Signed-off-by: kevin <huhui@sharkgulf.com>
kevin před 2 roky
rodič
revize
76acc26dc6

+ 5 - 4
Applications/bsp/gd32/board_mc105_v3.h

@@ -39,13 +39,14 @@
 #define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
 
 #define PWM_DEAD_TIME_NS 600u
-#define PWM_TOFF_DELAY_MAX 240u
-#define PWM_TON_DELAY_MIN 200u
-#define HW_DEAD_TIME_NS  210u
+#define MOS_TOFF_DELAY_MAX 100u //from mos datasheet
+#define MOS_TON_DELAY_MIN 30u   //from mos datasheet
+#define MOSDRV_DEAD_TIME_NS  200u //from H bridge driver's datasheet max is 190
+#define MOS_MILE_VOL_DROP_NS 100u //from mos' mile
 #define HW_RISE_TIME_NS  150u
 #define HW_NOISE_TIME_NS 300u
 
-#define CONFIG_HW_DeadTime NS_2_TCLK(HW_DEAD_TIME_NS + PWM_DEAD_TIME_NS + (PWM_TOFF_DELAY_MAX - PWM_TON_DELAY_MIN))/* ����ʱ�� */
+#define CONFIG_HW_DeadTime NS_2_TCLK(PWM_DEAD_TIME_NS + MOSDRV_DEAD_TIME_NS + (MOS_TOFF_DELAY_MAX - MOS_TON_DELAY_MIN) + MOS_MILE_VOL_DROP_NS)/* ����ʱ�� */
 #define TRise NS_2_TCLK(HW_RISE_TIME_NS)/* MOS ����ʱ��*/
 #define TNoise NS_2_TCLK(HW_NOISE_TIME_NS)/* MOS��������Ŀ�������ʱ�� */
 #define TADC  ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) *2 * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */

+ 1 - 1
Applications/foc/motor/mot_params_ind.c

@@ -100,7 +100,7 @@ static void _rs_ind_timer_handler(shark_timer_t *t) {
 		}
 		break;
 	case 3: {
-		float dtc = ((float)CONFIG_HW_DeadTime/(float)FOC_PWM_period) * motor.controller.foc.in.dc_vol * 0.667f;
+		float dtc = ((float)CONFIG_HW_DeadTime/(float)FOC_PWM_period) * motor.controller.foc.in.dc_vol * TWO_BY_THREE;
 		float vd = rs_vd_now * TWO_BY_THREE - dtc;
 		float id = motor.controller.foc.out.curr_dq.d;
 		float rs = vd / (id + 0.0001f);