simplefoc / Arduino-FOC

Arduino FOC for BLDC and Stepper motors - Arduino Based Field Oriented Control Algorithm Library
https://docs.simplefoc.com
MIT License
1.94k stars 510 forks source link

driverAlign() ignores gain sign, always "MOT: Success: 3" #386

Open 4ndreas opened 4 months ago

4ndreas commented 4 months ago

I try to get current sensing working on a custom STM32G431CUBx board. With low side current sensing based on three shunt resistors and the internal op amps.

So far the motor spins fine without current sensing. Also I tested the CS with a DC current on each phase to calibrate the Gain and verify the hardware -> all ok.

But the dirverAlign() funktion always returns MOT: Success: 3

I set the Gain to "70" and stepp thru the calibration

ab_ratio and ac_ratio are about ~2

CS_align1

at the end of the function all gains are <0 ->MOT: Success: 3

CS_align2

But if I invert the gain to "-70"

the currents are inverted and the ratio is ~2 so:

CS_align3

this changes the gains again: -> Success: 3

CS_align4

So something is wrong I'm not where the problem is, my gain should be positive since if I disconnect the motor and input a DC current to on phase the ADC value goes up. To test this I just enabled the low side mosfet and hocked up a second power supply ind constant current mode.

Also my Currents are off by a factor of 10 my opamp gain is 7 but then the measured current values are by 10 to high (but this is probably a different problem) The DC supply is set to 1A and the ADC values go up by like ~80 digits my shunt resistor is 0.01 Ohms.

IDE you are using

Candas1 commented 4 months ago

Hi,

This is how the code works. It will just give you success 3 if the gains are negative, even if it's correct.

That's not a problem but it could be improved.

runger1101001 commented 4 months ago

I agree we should change the code to only return 3 (or 4) if the gains were actually inverted compared to the user supplied setting. It's not a hard fix, so could be in the next release.

4ndreas commented 4 months ago

Thank you, it is a little bit confusing and I was not sure if the output was intended. It would help, if you change the sign of the gain it should somehow influence the outcome downstream ...