This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello ,
In the dual axis sensored FOC project , in the file : dual_access_servo_driveuser.h
#define M1_MAXIMUM_VOLTAGE 36.0 // DC bus maximum voltage (V) #define M1_MINIMUM_VOLTAGE 5.0 // DC bus minimum voltage (V) #define M1_VDCBUS_MAX 50.0 // maximum dc bus voltage for motor #define M1_VDCBUS_MIN 10.0 // minimum dc bus voltage for motor
I don't see where M1_MAXIMUM_VOLTAGE is used?
I see that it is assigned to initMotorParameters(), voltageLimit = M1_MAXIMUM_VOLTAGE, but it is not used anywhere
.
void initMotorParameters(MOTOR_Vars_t *pMotor, HAL_MTR_Handle mtrHandle) { HAL_MTR_Obj *obj = (HAL_MTR_Obj *)mtrHandle; if(pMotor == &motorVars[0]) { pMotor->ptrFCL = &fclVars[0]; pMotor->Ts = 0.001/M1_ISR_FREQUENCY; pMotor->voltageLimit = (float32_t)(M1_MAXIMUM_VOLTAGE); // V pMotor->currentLimit = (float32_t)(M1_MAXIMUM_CURRENT); // A
I also tried reducing the limit (M1_MAXIMUM_VOLTAGE) to 25v and increasing the dc bus to 30v, but there was no effect and the motor ran successfully?
Yes, voltageLimit and M1_MAXIMUM_VOLTAGE are not used in the example project. It's reserved for voltage protection as currentLimit is used in the example.