Rotary knob thrust limiter

RipAir

Member
hello!

any one know if theres a way to use one of the rotary knobs on the taranis, to set a maximum thrust?
setting a fixed thrust value seems to be quite straight forward, but i didnt pick up how to use it as a max value yet

the idea is basically limiting buddies that have never flown before, when they want to have a go :p

cheers!
 
Last edited:

pressalltheknobs

Posted a thousand or more times
An easy way to do it is to use the weight and offset on the THR input

Set weight to 80 and offset to -20 and the max throttle will be limited to 80%

You can then have 2 or 3 inputs lines like that on a switch so you can switch between them. This is pretty much the same as setting up "rates" except there you generally only adjust the weight . You have to adjust the offset for the throttle because you still want it to start at zero.

If you really want an adjustable knob then there are a couple of ways but it's a bit trickier to set up. Don't have time to explain right now but I'll get back to you.
 

Mid7night

Jetman
Mentor
Off the top of my head, I think you could use a Global Variable. Have the knob set a GV, then set the upper limit of the throttle to the same GV. I could be off though...I'll poke around on mine and get back to you.
 

Mid7night

Jetman
Mentor
Well, I was almost right. You still use a GV to set the limit, but you also need two logical switches to tell the throttle whether or not to 'listen' to the limit or the throttle. I've attached a model file you can use as a starting point. The key features happen in Mixes, Logical Switches and Special Functions.
 

Attachments

  • ThrottleLimitModel.zip
    6.6 KB · Views: 3

pressalltheknobs

Posted a thousand or more times
No need for GVARs or Logical switches. You can use GVARS and it's a bit clearer what is going on with them but...

Attached is MaxThrKnob.eepe created with OpenTX Companion 2.1.8. Let me know if you need an example for 2.0 or 1.0 since they used different names.

There are 3 example models

01 - MaxThrRates shows the the "Rates" method I described above where you use a switch, SA here, to switch between 3 different options for max throttle. All the action is on the INPUT. I chose SA^(wt 70, offset -30 ), SA-(wt 85, offset -15), SAv(wt 100, offset 0). The weight scales the range of the Throttle input (the "Rate") and the offset moves it back to start at -100. Note: The last line with no switch is a defensive programming technique to ensure there is always an active Input line in-case you delete one of the lines and leave the switch position undefined.
MaxThrRates.jpg

02. - MaxThrKnobGV shows a method using a knob to change the value of two global variables which are then used to set the [THR] Input weight and Offset. The action is divided between the INPUTS and Special Functions page. Basically the same as model 01 but the "Rate" is continuously variable. The variation in the range is limited to upper 40% of the total range (+20 to +100 of total -100,+100). The offset moves the range back so the throttle starts at -100. This is active when SA is back SA^. When SA is not back then the Thr Input takes the default wt +100 offset 0 curve.
MaxThrKnobGV.jpg
MaxThrKnobGV_spfunc.jpg

03. - MaxThrKnobMx shows a method using a knob to change the value of two mixes which scale and offset the Throttle mix. All the action is on the MIXES page. Essentially this works just like model 02 but it uses a "Multiply" mix *= to scale the throttle range and an add mix += to offset the scaled Thr mix to start at -100. It is important to put the multiply mix first or you will also multiply the offset creating unexpected behavior. The first three mix lines act together when SA is back, SA^. When SA is not back, !SA^ then the Throttle has a regular wt +100 offset 0 mix. The REPLACE mix is used for this line as being the best descriptive match but does not act.
MaxThrKnobMx.jpg

Personally I think solution 01 may be the best for the application...limiting max throttle for easier flying...since its very similar to setting "Rates" on Ail or Elv which serves the same purpose.

I only included solution02 because it makes understanding solution 03 a bit easier...or maybe it doesn't...anyway, it uses up two global variables unnecessarily (there are only 9 per flight mode) and it adds some complexity by spreading things across two config pages but it shows that you can dynamically change the weight and offset of an INPUT or a MIX.

Solution 03 is the coolest and a bit of a mind bender when you first see it. It's a little hard to explain without doing the math but essentially the "multiply" mix line varies the Thr weight with the value of S1 restricting the range and the "add" mix moves the mix range back to start at -100. You should note that the numbers used for Weight and Offset are the same numbers used to Scale S1 in the 02 solution

Note: In the above solutions I chose SA^ to enable the most restrictive Input or Mix because that corresponds to the default Switch Test when you first enable a model. SA^ is the default "safe" or starting position. Obviously you don't have to use switch A and you could chose different switch starting positions or different inputs or mixes as your "safe" or starting configuration.
 

Attachments

  • maxthrottleknob.zip
    7 KB · Views: 0
Last edited:

pressalltheknobs

Posted a thousand or more times
Well, I was almost right. You still use a GV to set the limit, but you also need two logical switches to tell the throttle whether or not to 'listen' to the limit or the throttle. I've attached a model file you can use as a starting point. The key features happen in Mixes, Logical Switches and Special Functions.

I took a look at these and there are a few problems...

1. You are using a>b and a<b in your logical switches. This means that when S1 is at 100 and the Throttle goes to 100, L1 becomes false and the throttle jumps back from +100 to 0. Similarly when S1 is -100 and the Throttle goes to -100, L2 becomes false and the throttle jumps up from -100 to 0....yikes!!! The reason for this is that if both L1 and L2 are inactive there is nothing driving CH1 any more and it will default to 0%

2. When the throttle is below zero and S1 is at 0 then the throttle is limited to -100 and 0 but the whole top half of the throttle stick movement has no effect...I could see this as being useful in this application but I don't think it was the intent. The reason it does this is because you are using a REPLACE mix, := which stops the Thr Input from acting.

3. If S1 is less than 0 then the CH1 throttle corresponds to the throttle stick until L1 goes true where CH1=S1 and then CH1 jumps to a fixed +ve value which correspond to the S1 + 100...yikes!! This is because you are using a replace mix so the Thr input no longer acts and the CH1 value gets calculated from the value of S1 with a weight of GV1

4. If S1 is greater than 0 then the then the throttle corresponds to the throttle stick until L1 goes true where Thr=S1 and then the Thr jumps back to a fixed +ve value. This is because you are using a replace mix so the Thr input no longer acts and the CH1 value gets calculated from the value of S1 with a weight of GV1

So I think it might need a bit of reworking....
 
Last edited:

Mid7night

Jetman
Mentor
I took a look at these and there are a few problems...

So I think it might need a bit of reworking....

Well good thing there's more than one of us offering solutions! :p

Seriously tho; thanks for troubleshooting my model - if I came across as "this is THE solution", that's not what I meant. I tried doing it with mixes and curves, but didn't get to the level of double-mixes as in yours. I'm glad you jumped in with some alternatives.
 

pressalltheknobs

Posted a thousand or more times
Well good thing there's more than one of us offering solutions! :p

Seriously tho; thanks for troubleshooting my model - if I came across as "this is THE solution", that's not what I meant. I tried doing it with mixes and curves, but didn't get to the level of double-mixes as in yours. I'm glad you jumped in with some alternatives.

No problem...hope what I wrote made sense.

Be nice to get some feedback to know if this helped the OP...
 

Epitaph

Ebil Filleh Pega-Bat ^.^
Mentor
If it were to do it on Deviation, I would just set up multiple rates that affect the top end of the throttle channel only... maybe something like that in Taranis can be done.
 

pressalltheknobs

Posted a thousand or more times
If I understand what you mean, you could use custom curves to do that. That's pretty much the same as my model 01 but using a custom curve instead of a calculated one. In model 01 above I used way you set up "rates" in OpenTX but on the Throttle channel, hence the offset. That keeps it all in the the input calculation.

The advantage of the custom curve is that you could easily have regions of the stick throw that don't act. But then you have to create a curve. Not hard but it's another screen and another thing you have to create It's possible you could offset a pre-existing curve. OpenTX has several available to inputs but I haven't played around with those much.

I'm not sure there is an advantage of having regions of the throw that do not act though. The whole point for beginners is to spread out the control so larger stick movements have less effect...the point of rates and expo for non throttle use.