Different behaviour between CW and CCW


I’m still struggling to get the things working on my setup (Flipsky 6354 and VESC 6 driver) the things is that the BLDCDriver6PWM seems to work in a different way if I spin the motor in CCW instead of CW

The problem is that the motor in CCW start to be very noisy and with a lot of vibration, thing that in CW not occour so much…

From the above figure it can be shown a +50 -50 reference and the speed control seems to be working as expected. Instead if we look at the currents we can see a lot of noise and a strange activity on the C current phase

here a video of the CW (untill 200 rad/s) and CCW (100 rad/s i think). To notice that at some point the voltage drop at 6 V and the motor start to turn slowly, things that never happen on CW direction.

Any help is appreciated…

Many thanks

Hello. Did you manage to solve the problem? I have the same(((

Hey @nikolaewich1988 not really, but plotting the iq and id I found that the id is different from zero in voltage mode, especially in CCW so I think the problem is due to the fact that the algorithm does not calculate correctly (maybe it does not take into account the Back EMF and the motor has a different behavior between CW and CCW ?) or is due to a bad choice of parameters… I really do not know.

BUT if I switch to FOC current mode instead, things get better because in this modality there is a control loop for the id that brings it to zero and so the motor runs well and equally in CW and CCW up to a certain speed.

If anyone here in the forum can give some advice that would be great. Just to get a better understanding of the problem I had made some videos.

  • Here I make a test in FOC current mode and then in voltage mode where in the latter you can see clearly the problem

  • Here instead I used the same setup and I flashed the VESC firmware to see the differences

Anyway, what kind of motor + driver are you using? If you can find out something about this issue please let me know!

thank you!

Good afternoon. I use Google translator, so maybe my explanation will look strange. I use a motor from a gyro scooter and an encoder 600 pp. I am faced with the problem that the engine rotates clockwise quickly and gently, but counterclockwise it happens slowly and with noise. If I swap the phase wires of the encoder in places, then everything happens the other way around, the motor rotates clockwise slowly and noisily, and counterclockwise quickly and quietly. It seems to me there is an error in the calibration algorithm. I

thank you! @nikolaewich1988

so it’s a kind of workaround but it seems to be working… ok so I’ll also try since we have a similar setup.


Hi Both,

I have been in a similar situation. I changed my motor and the problem was resolved. In my project, I am using two motors. So, one motor works great with the single angle in both CW and CCW but another one works fine in CW while CCW consumes more current and the speed is slow as well.

Thanks @MoidKhan for the feedback!

this is what I thought at first instance (faulty motor) when I was using the driver B-G431B-ESC1 and a 5065 skateboard motor. Unfortunately this is not the case, since then I switched to a VESC driver and a 6354 skateboard motor (so a slightly more powerful) and it has the same behavior with SimpleFOC.

To support this statement there is the fact that in the case of the B-G431B-ESC1 using the suite provided by ST (motor control suite) and instead for the VESC driver the original VESC firmware, both motors work correctly in both directions. in both case was used the internall HALL sensors to estimate the velocity.

The motors are 270 KV - 0.1 Ω and 140 KV - 0.053 Ω respectively, both supplied with 24 V so definitely not small motors.

As @Antun_Skuric commented in the parallel thread here i can say:

  1. Loop time: both MCU’s (STM32F405 and STM32G431B) are performant enough to handle the FOC algorithm, i’ve also checked by measuring the frequency in the void loop and the pheripheral clock config are correct, so i exclude this.
  2. Phase current: in fact the current control mode “fix” this behaviour (so CCW same as CW) putting down the id to zero, but with the drawback that i cannot reach higher speed like the voltage mode does (only in CW)
  3. Field weakening and electric angle offset error: i’m not using the motor in such high speed velocities, in fact i cannot reach even half of the nominal one so I excude the field weakening reason. Instead an error in the estimation of the electric angle offset could be the case, but should affect both direction and not only one (i think).

So to conclude the suspects are in point 2 because in voltage mode there could be an error in the calculation of the phase voltage, perhaps an approximation that doesn’t matter in small motor but that with these emerges, or in point 3 in the routine for the estimation of the electrical angle, and so, the parameter associated (already checked).

In addition, it could be some bad parameter set in my code (maximum current and motor resistance?) but after hours of testing I’m not convinced it’s the cause, I feel to exclude also the PID values.

At the moment I’m focused on other issues in the project, but the idea is to try the workaround proposed in the other thread and review the parameters in the code.

Meanwhile i hope for some good advice from @Antun_Skuric or other advanced users…