Просмотр исходного кода

update motor.c foc core

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 лет назад
Родитель
Сommit
50c09f42ef
3 измененных файлов с 17 добавлено и 4 удалено
  1. 2 2
      Applications/bsp/board_mc_v1.h
  2. 4 2
      Applications/foc/motor/motor.c
  3. 11 0
      Applications/foc/motor/motor.h

+ 2 - 2
Applications/bsp/board_mc_v1.h

@@ -238,8 +238,8 @@
 
 //#define MOTOR_BLUESHARK_NEW1  //蓝鲨大功率电机,双E形
 //#define MOTOR_BLUESHARK_NEW2  //蓝鲨大功率电机,V形
-#define MOTOR_BLUESHARK_OLD   //目前量产的电机
-
+//#define MOTOR_BLUESHARK_OLD   //目前量产的电机
+#define MOTOR_BLUESHARK_ZD_100  //中动100码编码器电机样品
 //#define CONFIG_DQ_STEP_RESPONSE
 
 #endif /*_BOARD_MC_V1_H__ */

+ 4 - 2
Applications/foc/motor/motor.c

@@ -72,6 +72,7 @@ static void _mc_internal_init(u8 mode, bool start) {
 	motor.b_epm_cmd_move = false;
 	motor.epm_dir = EPM_Dir_None;
 	motor.n_autohold_time = 0;
+	motor.b_auto_hold = 0;
 }
 void mc_init(void) {
 	adc_init();
@@ -320,7 +321,7 @@ void mc_encoder_off_calibrate(s16 vd) {
 	PMSM_FOC_SetOpenVdq(vd, 0);
 	delay_ms(2000);
 	motor_encoder_set_direction(POSITIVE);
-	for (int i = 0; i < 5000; i++) {
+	for (int i = 0; i < 200; i++) {
 		for (float angle = 0; angle < 360; angle++) {
 			PMSM_FOC_Set_Angle(angle);
 			delay_ms(1);
@@ -335,7 +336,7 @@ void mc_encoder_off_calibrate(s16 vd) {
 	}
 	motor_encoder_set_direction(NEGATIVE);
 	delay_ms(100);
-	for (int i = 0; i < 5000; i++) {
+	for (int i = 0; i < 200; i++) {
 		for (float angle = 360; angle > 0; angle--) {
 			PMSM_FOC_Set_Angle(angle);
 			delay_ms(1);
@@ -356,6 +357,7 @@ void mc_encoder_off_calibrate(s16 vd) {
 	pwm_stop();
 	PMSM_FOC_Stop();
 	pwm_up_enable(true);
+	motor_encoder_data_upload();
 	motor.b_calibrate = false;
 }
 

+ 11 - 0
Applications/foc/motor/motor.h

@@ -151,6 +151,17 @@ static __INLINE bool motor_encoder_offset_is_finish(void) {
 #endif
 }
 
+static __INLINE void motor_encoder_data_upload(void) {
+#ifdef USE_ENCODER_HALL
+	
+#elif defined (USE_ENCODER_ABI)
+	encoder_detect_upload();
+#else
+	#error "Postion sensor ERROR"
+#endif
+}
+
+
 static __INLINE float motor_encoder_zero_phase_detect(void){
 #ifdef USE_ENCODER_HALL
 	return 0.0f;