Limit maximum motor rpm

Hi there.

Because I want to try 12" propellers instead of 10" propellers on my emax motors, I need to limit the max rpm of my motors. This to protect it is not drawing to much current and burning my motors. I’ve setup a test setup where I tied down the quadcopter and can measure the current of one motor. I’m trying to set servo max value and/or MOT_PWM_MAX, however both values doesn’t seem to work to limit the motor rpm. Can someone tell me how I can do that?

I think there is a parameter that directly limits the battery current:
https://ardupilot.org/copter/docs/current-limiting-and-voltage-scaling.html

I don’t have hooked up a current sensor (yet). But that’s not what I want; I need to limit each motor, not the total power.

Arducopter wont just spin the motors to max RPM for no reason unless you command it in Stabilise or Acro modes. For testing you wouldn’t need to change anything and just use ALTHOLD or LOITER. A current sensor is a very good idea, since you will be able to check what current is being used, and limit it.
In fact I’d go so far as to say anything other than a quick and simple flight test of motors and props requires a current sensor.

I’m currently working on a current sensor; but it seems not to be working very well in Ardupilot.
But other then that, it hits 10 amps already on 50% throttle. I just want to make sure it never goes higher than a certain value. And I want to limit that. I would say servo max is used for that, but that’s ignored. Also motor pwm max doesn’t do anything.

So the question is, how do I limit it?

What motors do you have? Need the EXACT nomenclature, Kv rating, pole count and battery cell count rating.

Making parameter changes ain’t gonna work.

Which flight controller are you using? With a Pixhawk, or a Cube there is a current sensor in the power monitor. This sensor measures TOTAL current being drawn as well as battery voltage. This data and total current consumed is stored in a data flash log. So you can use the data flash logs to find out what total current draw is and then divide that by the number of motors. Easy as pi… Of course this is predicated on have the power monitor calibrated for voltage and current, but that’s easy to do…

Motors: EMAX mt2213
Battery: 3s

Omnibus f4 v3 with external current sensor (buy I’m unable to get it working; amperage is jumping all over the place. Seems that the ADC is not able to measured is precisely.)

But again, what does it matter. Sure in flight data is important and handy to monitor, I agree. But I’ve a great test bench setup, one motor with propellor connected, a multimeter connected. If I’m on 50% throttle I already see the max current draw allowed by my motors ( on full battery that is). So I want to set this as the max allowed pwm value going to the ESC in ardupilot. THAT is easy as pi. Well should be if the parameters work.

So the question again is, how can I limit the pwm going to the ESC?

Depending on your radio, you could set a custom curve on the transmitter to map 0-100% throttle to say 0-75%. I’ve done this before as I could not get the pwm limit parameters to limit as I thought they would. You would also have to set max angle limits and yaw speeds to prevent high rpms when rolling/pitching or during yaw

Thanks for the suggestion! I also was thinking about this, limiting the RC throttle value. But this indeed would not help if it flies in stable/loiter mode.

I guess servoX_max would not work because I’m using oneshot125 protocol. But what I don’t understand is why MOT_PWM_MAX won’t work. I would assume this parameter is exactly made for this use case, but simply won’t work?

OneShot125 need PWM range 1000-2000 to activate.

That’s interesting too; I didn’t know that. How can I very in which mode it is communicating?

MOT_SPIN_MAX could solve your problem.

https://ardupilot.org/copter/docs/parameters.html#mot-spin-max-motor-spin-maximum

Regarding OneShot125 output monitoring, there is no more easy way to visualise it unless using oscilloscope on Rc out motor channel. With 3.5.x or 3.6.x arducopter, RC_OUT log data was in the 125-250 range when Oneshot125 was activated. Now, the RC-OUT (log data) is in the 1000-2000 range.

Mmh; so you say setting MOT_SPIN_MAX to say 0.5 will limit it to, 50%? That sounds great!
I guess the throttle stick will not be scaled according that; but that’s something I can configure in my transmitter.

There is a banner message shown on the messages screen in Mission Planner on boot that shows what output protocol is used.

After setting the protocol to oneshot125 (apparently it was still on normal) I could limit using the MOT_PWM_MAX ! So that is great :). Also the suggesting using MOT_SPIN_MAX would have worked!

However, I’m unable to confirm it is using oneshot125. There is no banner message shown.

Really? Not shown in the messages screen on boot?

rcout