modified big motor as it is using 12v version, limiting max pwm

This commit is contained in:
Nicolas Trimborn
2021-08-24 17:08:44 +02:00
parent 58bba21ef3
commit 6f1ca06830
7 changed files with 455 additions and 21 deletions

View File

@@ -381,7 +381,9 @@ void BLDC_runCurrentCntl(BLDCMotor_t *motor, const float32_t curfbk, const float
}
volatile float32_t duty_pu = f_abs((motor->controllers.Pi_Idc.Out_pu * motor->VoneByDcBus_pu));
motor->motor_status.duty_cycle = (uint16_t)f_clamp(duty_pu * (float32_t)MAX_PWM, 0.0f, (float32_t)MAX_PWM);
//motor->motor_status.duty_cycle = (uint16_t)f_clamp(duty_pu * (float32_t)MAX_PWM, 0.0f, (float32_t)MAX_PWM);
//motor->motor_status.duty_cycle = (uint16_t)f_clamp(duty_pu * (float32_t)MAX_PWM, 0.0f, (float32_t)MAX_PWM);
motor->motor_status.duty_cycle = (uint16_t)f_clamp(duty_pu * motor->motor_param->motor_MaxPWM, 0.0f, (float32_t)MAX_PWM);
// Remove Low duty cycle values
//if(duty_cycle < 80.0) motor->duty_cycle = (uint16_t)0;
//else motor->duty_cycle = (uint16_t)duty_cycle;

View File

@@ -17,7 +17,7 @@
#include "statemachine.h"
#define PWM_TOP (1000)
#define MAX_PWM (300)
#define MAX_PWM (800)
//#define MAX_VEL 3800
#define CW (0) //CBA

View File

@@ -153,7 +153,9 @@ int main(void)
/* BLDC INIT */
BldcInitStruct(&Motor1, &FH_22mm24BXTR);
BldcInitStruct(&Motor2, &FH_32mm24BXTR);
BldcInitStruct(&Motor2, &FH_32mm12BXTR);
//Motor2.VdcBus_pu = 12.0;
//Motor2.VoneByDcBus_pu = 1.0/Motor2.VdcBus_pu;
Motor1.readHall = &readHallSensorM1;
Motor2.readHall = &readHallSensorM2;
@@ -175,13 +177,13 @@ int main(void)
custom_logic_enable();
angle_sensor_init();
initialize_ads();
//initialize_ads();
/* External IRQ Config */
__enable_irq();
enable_NVIC_IRQ();
ext_irq_register(GPIO_PIN(ADS_DATA_RDY), ADS1299_dataReadyISR);
ADS1299_START();
//ext_irq_register(GPIO_PIN(ADS_DATA_RDY), ADS1299_dataReadyISR);
//ADS1299_START();
/* Replace with your application code */
while (1) {
@@ -212,14 +214,14 @@ int main(void)
if (Motor1.timerflags.current_loop_tic) {
Motor1.timerflags.current_loop_tic = false;
APPLICATION_StateMachine();
exec_commutation(&Motor1);
exec_commutation(&Motor2);
//APPLICATION_StateMachine();
//exec_commutation(&Motor1);
//exec_commutation(&Motor2);
}
if (ADS1299.data_ReadyFlag){
ADS1299.data_ReadyFlag = false;
ADS1299_UPDATECHANNELDATA();
//ADS1299_UPDATECHANNELDATA();
}
if (run_ECAT) {ECAT_STATE_MACHINE();}

View File

@@ -133,6 +133,7 @@ typedef struct
const float32_t motor_Max_Spd_ELEC;
const float32_t motor_Max_Current_IDC_A;
MOTOR_Control_Structs controller_param;
float32_t motor_MaxPWM;
} BLDCMotor_param_t;
//static BLDCMotor_param_t FH_22mm24BXTR;
@@ -158,6 +159,34 @@ const static BLDCMotor_param_t FH_22mm24BXTR = {
//.controller_param.Pid_Speed.Ki = 0.0000001f,
.controller_param.Pi_Pos.Kp = 50.0f,
.controller_param.Pi_Pos.Ki = 0.0f,
.motor_MaxPWM = 800.0,
};
/* Big Motor - 3216W012BXTR */
const static BLDCMotor_param_t FH_32mm12BXTR = {
.pwm_desc = &PWM_1,
.speedtimer_hw = TC4,
.motor_Poles = 14,
.motor_polePairs = 7,
.motor_commutationStates = 42, //polePairs * 6
.motor_RS_Ohm = 0.88,
.motor_LD_H = 0.000331,
.motor_LQ_H = 0.000331,
.motor_Flux_WB = 0.0063879968,
.motor_Max_Spd_RPM = 3000,
.motor_MeasureRange_RPM = 3200, //(1.2f * MOTOR_MAX_SPD_RPM)f // give 20% headroom
.motor_Max_Spd_ELEC = 12000, //(MOTOR_MAX_SPD_RPM/60)*MOTOR_POLEPAIRS
.motor_Max_Current_IDC_A = (1.6),
.controller_param.Pid_Speed.Kp = 0.0004f,
.controller_param.Pid_Speed.Ki = 0.0000001f,
.controller_param.Pi_Pos.Kp = 50.0f,
.controller_param.Pi_Pos.Ki = 0.000f,
//.controller_param.Pid_Speed.Kp = 0.00002f,
//.controller_param.Pid_Speed.Ki = 0.0f,
//.controller_param.Pi_Pos.Kp = 4.0f,
//.controller_param.Pi_Pos.Ki = 0.0f,
.motor_MaxPWM = 300.0,
};
/* Big Motor - 3216W024BXTR */
@@ -179,6 +208,7 @@ const static BLDCMotor_param_t FH_32mm24BXTR = {
.controller_param.Pid_Speed.Ki = 0.0000001f,
.controller_param.Pi_Pos.Kp = 40.0f,
.controller_param.Pi_Pos.Ki = 0.0f,
.motor_MaxPWM = 800.0,
//.controller_param.Pid_Speed.Kp = 0.00002f,
//.controller_param.Pid_Speed.Ki = 0.0f,
//.controller_param.Pi_Pos.Kp = 4.0f,