File tree Expand file tree Collapse file tree 1 file changed +13
-5
lines changed Expand file tree Collapse file tree 1 file changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -17,8 +17,12 @@ float CurrentSense::getDCCurrent(float motor_electrical_angle){
17
17
i_alpha = current.a ;
18
18
i_beta = _1_SQRT3 * current.a + _2_SQRT3 * current.b ;
19
19
}else {
20
- i_alpha = 2 *(current.a - (current.b - current.c ))/3.0 ;
21
- i_beta = _2_SQRT3 *( current.b - current.c );
20
+ // signal filtering using identity a + b + c = 0. Assumes measurement error is normally distributed.
21
+ float mid = (1 .f /3 ) * (current.a + current.b + current.c );
22
+ float a = current.a - mid;
23
+ float b = current.b - mid;
24
+ i_alpha = a;
25
+ i_beta = _1_SQRT3 * a + _2_SQRT3 * b;
22
26
}
23
27
24
28
// if motor angle provided function returns signed value of the current
@@ -44,9 +48,13 @@ DQCurrent_s CurrentSense::getFOCCurrents(float angle_el){
44
48
// if only two measured currents
45
49
i_alpha = current.a ;
46
50
i_beta = _1_SQRT3 * current.a + _2_SQRT3 * current.b ;
47
- }else {
48
- i_alpha = 0.6666667 *(current.a - (current.b - current.c ));
49
- i_beta = _2_SQRT3 *( current.b - current.c );
51
+ } else {
52
+ // signal filtering using identity a + b + c = 0. Assumes measurement error is normally distributed.
53
+ float mid = (1 .f /3 ) * (current.a + current.b + current.c );
54
+ float a = current.a - mid;
55
+ float b = current.b - mid;
56
+ i_alpha = a;
57
+ i_beta = _1_SQRT3 * a + _2_SQRT3 * b;
50
58
}
51
59
52
60
// calculate park transform
You can’t perform that action at this time.
0 commit comments