Myxa response tuning

Hello,

I’m trying to achieve rapid accelerations on multirotor motor. The motor is a 28 magnetic pole and thus needed electrical radians per mechanical rotation is higher. That causes that I cannot get idle speed over 680rpm (min.eangvel = 1000) for example. The startup starts the motor nicely most of the times, but sometimes it needs rather long time and current to make motor start. I couldn’t make it work better.

I have done “full” motor identification and motor runs nicely on full speed curve as long as there is no rapid accelerations. When there is high accelerations, the motor starts to twitch on low speeds quite often.

Control mode is RPM control mode.

I have tried several different parameter combinations but haven’t found suitable ones yet

eangvel_ctl_kp = 0.012
eangvel_ctl_ki = 0.005

m.eangvel_rampup = 15 000 → very slow acceleration
m.eangvel_rampdn = 5 000 → very slow deceleration

These accelerations on this motor would be suitable for plane, but not for multirotor. Then i tried following.

m.eangvel_rampup = 80 000 → Acceptable acceleration
m.eangvel_rampdn= 40 000 → Acceptable deceleration

But this causes the motor controller to twitch the motor and give following message: Telega: IRQ: CONTROL RUNAWAY

Higher eangvel_ctl_kp causes the motor to twitch too. What other parameters could help me to achieve similar accelerations that are possible with other “normal” BLDC controllers?

I have set the PWM control so that the bot and mid are both 1000us. Is this same as the bot (reverse rotation) would be disabled?

Hello, I took the liberty to move this question into a separate topic in order to not pollute the tentative documentation with discussions.

As it turned out shortly after the release, the RPM controller has some limitations. They are expected to be fixed with the next firmware release v0.2 due in June. As a temporary resolution, I recommend you to use the voltage control mode (disregard the warnings provided in the tentative user guide). In the voltage control mode, the only parameter that you should use to tune the response is m.voltage_ramp. Reduce it if there are stability issues, increase it to improve response.

I have set the PWM control so that the bot and mid are both 1000us. Is this same as the bot (reverse rotation) would be disabled?

Yes.

Good to hear that this is not working the intended way. I’m very interested on this product as I was earlier studying vector control for “hobby” motors as about year ago there was no options on market and I was planning to do my own design, but my software skills aren’t yet up to it. I would be happy if this product could fulfill the FOC needs as this seems to be very nice product on both HW and SW sides. However I would choose MOSFet with a bit better rds(on)/gc, but i don’t know if it could make any noticeable difference.

I have done some testing so far and have noticed a ~9% efficiency gain and I’m hoping to get it bit higher later on with better tuning.

I’ll be waiting for the next firmware update.

Back to problems:

Am I correct that this voltage control mode “negates” all FOC positive efficiency effects?

Do you have specification for maximum acceleration in electrical radians per second. The quick start guide 0.1 states following

Do not exceed 5000 radian/second^2.

and later on same guide

Set the acceleration rate to 10 000 ~ 15 000 electrical radian per second per second, depending on the needs of your application.
Set the deceleration rate close to 10 000 electrical radian per second per second or lower (higher values should be avoided).

This 15 000 electrical radian/s2 acceleration should be same as ~256 mechanical revolutions/s2 on this motor and that should be more than enough by my calculations. With 15000 electical radian/s2 would mean that the motor could ideally accelerate from idle 750 rpm to 5400rpm withing 300ms. However the motor is not accelerating that fast and I couldn’t get the PI controller any tighter (it would start to twitch as earlier mentioned).

Is this caused by the limited RPM controller as I wasn’t able to get high P gains without the twitching? Is there any other relevant parameters?

Am I correct that this voltage control mode “negates” all FOC positive efficiency effects?

The drawback of the voltage control mode is related to the stability of the control loops. Under the voltage control mode, the quadrature axis current becomes a dependent quantity rather than an effected quantity, which may lead to wild current oscillations, which in turn undermines the stability of the state observer and the field synchronization.

The direct axis current is still controlled as usual though.

The stability issues may also lead to unnecessary energy losses under certain transients, but these are short-term effects and they shouldn’t lead to any significant efficiency issues overall.

This 15 000 electrical radian/s2 acceleration should be same as ~256 mechanical revolutions/s2 on this motor and that should be more than enough by my calculations. With 15000 electical radian/s2 would mean that the motor could ideally accelerate from idle 750 rpm to 5400rpm withing 300ms. However the motor is not accelerating that fast and I couldn’t get the PI controller any tighter (it would start to twitch as earlier mentioned).

The conflicting guidelines are due to the temporary nature of this documentation. I’m going to try and add some elaboration there right now.

You couldn’t achieve better response because of the missing D term in the PID controller (and a couple of other known minor issues); that should be fixed soon.

How it’s going with the v0.2 firmware? Can you give update for release date?

It’s going well. Stay tuned, we’re going to post an announcement when it’s released.

The voltage control mode does not help.

The motor does behave very strangely when asking a sudden deceleration.

in red the rpm order, in green the effective rpm returned by the controller.

Sudden acceleration and deceleration does not work for the moment with the myxa. We are looking forward for the new firmware as for the time being we are totally stuck.
to have the correct rpm, man has to multiply by 10000 the value shown in the y axis

here is our complete parameters list
image

Hi Philippe, the plot looks as if the controller was configured either in RPM mode or in the current (torque) control mode. Could you please verify that you are indeed using the voltage control mode? Perhaps you could share the relevant parameter settings (in the form of screenshot or as a log file of Kucher)? Kucher log files are stored in ~/.zubax/kucher/log/. What interface was used to control Myxa in this test?

apparently it was really the voltage mode, but the result is the same with rpm or current mode.

Here is the log.20180709-093206-5991.log (657.1 KB)
the motor is controlled with a pixhawk

Hello,

Does the new firmware is available?
In fact, I trying to have an efficient configuration for multirotor use,but I also have twitching issue on sudden deceleration.
I’ve try to reduce m.eangvel_rampdn but there were no effect on it.

Do you have any advises to have better performances?

Use the voltage mode and control the ramp via m.voltage_ramp and increase m.current_ctl_bw a bit (try 0.06 – 0.1). Check out the recent edits in the quick start guide.

The new firmware is delayed a bit again, stay tuned.