mirror of https://github.com/rusefi/bldc.git
Fixed bug introduced in PR and calculate motor current from magnitude of both axes
This commit is contained in:
parent
0b6ccb17f9
commit
80b5e7071f
|
@ -12,6 +12,7 @@
|
||||||
* Added bm_reset terminal command.
|
* Added bm_reset terminal command.
|
||||||
* Added bm support for STM32F30x and STM32L47x.
|
* Added bm support for STM32F30x and STM32L47x.
|
||||||
* App Balance updates. See https://github.com/vedderb/bldc/pull/193
|
* App Balance updates. See https://github.com/vedderb/bldc/pull/193
|
||||||
|
* Motor current now based on magnitude of both axes.
|
||||||
|
|
||||||
=== FW 5.01 ===
|
=== FW 5.01 ===
|
||||||
* Fixed PPM bug in previous release.
|
* Fixed PPM bug in previous release.
|
||||||
|
|
16
mcpwm_foc.c
16
mcpwm_foc.c
|
@ -1084,22 +1084,20 @@ bool mcpwm_foc_is_using_encoder(void) {
|
||||||
float mcpwm_foc_get_tot_current_motor(bool is_second_motor) {
|
float mcpwm_foc_get_tot_current_motor(bool is_second_motor) {
|
||||||
#ifdef HW_HAS_DUAL_MOTORS
|
#ifdef HW_HAS_DUAL_MOTORS
|
||||||
volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1;
|
volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1;
|
||||||
return SIGN(motor->m_motor_state.vq) * motor->m_motor_state.iq;
|
return SIGN(motor->m_motor_state.vq * motor->m_motor_state.iq) * motor->m_motor_state.i_abs;
|
||||||
#else
|
#else
|
||||||
(void)is_second_motor;
|
(void)is_second_motor;
|
||||||
return SIGN(m_motor_1.m_motor_state.vq) * m_motor_1.m_motor_state.iq;
|
return SIGN(m_motor_1.m_motor_state.vq * m_motor_1.m_motor_state.iq) * m_motor_1.m_motor_state.i_abs;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
float mcpwm_foc_get_tot_current_filtered_motor(bool is_second_motor) {
|
float mcpwm_foc_get_tot_current_filtered_motor(bool is_second_motor) {
|
||||||
#ifdef HW_HAS_DUAL_MOTORS
|
#ifdef HW_HAS_DUAL_MOTORS
|
||||||
volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1;
|
volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1;
|
||||||
return SIGN(motor->m_motor_state.vq) *
|
return SIGN(motor->m_motor_state.vq * motor->m_motor_state.iq_filter) * motor->m_motor_state.i_abs_filter;
|
||||||
sqrtf( SQ(motor->m_motor_state.iq_filter) + SQ(motor->m_motor_state.id_filter) );
|
|
||||||
#else
|
#else
|
||||||
(void)is_second_motor;
|
(void)is_second_motor;
|
||||||
return SIGN(m_motor_1.m_motor_state.vq) *
|
return SIGN(m_motor_1.m_motor_state.vq * m_motor_1.m_motor_state.iq_filter) * m_motor_1.m_motor_state.i_abs_filter;
|
||||||
sqrtf( SQ(m_motor_1.m_motor_state.iq_filter) + SQ(m_motor_1.m_motor_state.id_filter) );
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1185,7 +1183,8 @@ float mcpwm_foc_get_rpm_faster(void) {
|
||||||
* The motor current.
|
* The motor current.
|
||||||
*/
|
*/
|
||||||
float mcpwm_foc_get_tot_current(void) {
|
float mcpwm_foc_get_tot_current(void) {
|
||||||
return SIGN(motor_now()->m_motor_state.vq) * motor_now()->m_motor_state.iq;
|
volatile motor_all_state_t *motor = motor_now();
|
||||||
|
return SIGN(motor->m_motor_state.vq * motor->m_motor_state.iq) * motor->m_motor_state.i_abs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1197,7 +1196,8 @@ float mcpwm_foc_get_tot_current(void) {
|
||||||
* The filtered motor current.
|
* The filtered motor current.
|
||||||
*/
|
*/
|
||||||
float mcpwm_foc_get_tot_current_filtered(void) {
|
float mcpwm_foc_get_tot_current_filtered(void) {
|
||||||
return SIGN(motor_now()->m_motor_state.vq) * motor_now()->m_motor_state.iq_filter;
|
volatile motor_all_state_t *motor = motor_now();
|
||||||
|
return SIGN(motor->m_motor_state.vq * motor->m_motor_state.iq_filter) * motor->m_motor_state.i_abs_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue