View Single Post
Old 03-14-2021, 03:01 AM   #61 (permalink)
Registered Users

Join Date: Jan 2021
Location: Brookside Village, TX

Originally Posted by ArchmageAU View Post
Yes, you are correct.

Formula should be as you described.
cell B5=IF(($A5-$B$3)>0,(($A5-$B$3)/100*$B$1),(($A5-$B$3)/100)*(-$B$2))
Thank you for pointing that out. I will ocrrect the original post.

(Hopefully that relieves the itch )
I realize that this is an old post, but with the Blade S3 requiring a 20% offset on channel 5 with high and low rates at 100%, I've been trying to understand Spektrum mixing. That said, I don't understand why the low rate is negated in the above formula. Equivalently, I don't understand the reversal of M-OS and OS-M in the following:

if (M-OS) is positive --> ADJ = ((M-OS)/100)*RH
if (M-OS) is negative --> ADJ = ((OS-M)/100)*RL

I understand how "-(M-OS) = (OS-M) , so ((M-OS)/100)*RH and ((M-OS)/100)*-RL also work as formulas" I just don't see how these get the values that are output by Spektrum TXs given what I've seen.

I will note that I have a DX6i that does not support this type of mixing (with an offset), so my ideas of how this mixing should work are based on videos and other forum posts.

My understanding is based, in part, on this video:
Mixing on a spektrum radio (9 min 43 sec)

In that video, given a rate of 100% (high), 100% (low) and 0% offset (OS), then the slave channel (assuming a 0 initial value) will output exactly what the master channel is set at. So if the master, M, is 100, the slave outputs 100, if the master is -100 the slave outputs -100.

For M=-100, M-OS = -100 - 0 = -100

Now, according to what's written above since M-OS is negative, ADJ=((OS-M)/100)*RL, which is:
(0-(-100)/100))*100 = (100/100)*100 = 100. Adding this to 0 gives 100, but the final mix value should be -100.

If instead, we use ((M-OS)/100)*RL, we get ((-100-0)/100)*100) = -1*100 = -100, and then after adding to 0, we get the correct value.

The video also shows how changing the low rate to a negative value, gives positive values for negative values of the master. This also requires using either M-OS or leaving the negative off the RL in the alternative formula.

I only started looking into this because the new Blade S3, requires the panic button to mix Ch5 to itself with high and low rates of 100% and 20% offset. CH5 is controlled by a three way switch to change between Z, Stability and 3D modes. Flipping on the panic button, shifts channel 5 according to the specified mix. I only learned after contacting HH support, that my DX6i was not compatible, because it does not support the required mix. Instead, I set up the S3 on my TX16S, but could not get panic mode to work.

Pascal (hpnuts) programmed the mix on a DX6 and reported the following values:


"I have access to a DX6 G3 which I'm guessing is supported. I've setup the mixer GER->GER, Rate 100% and Offset 20%.
I see the following: FM0: 100%=1706, FM1:0%=1024, FM2: -100%=342, now if I activate panic: FM0: 150%=2047, FM1:-20%=888, FM2: -150%=1. The value 1706, 1024,... are the values that I get from Multi in DSM RX mode so directly what the DX6 G3 is sending over the air. Also throttle cut=-130%=138."

So master -> slave (with mix) values are as follows:

100% -> 150%
0% -> -20%
-100% -> -150%

Since this is mixing channel 5 with itself, we can assume that the initial slave channel value to which the adjustment is applied, is equal to the master channel value.

The equations given in the original posts, work for the first line above. 100%-20 = 80 is positive, so the adjustment is 80/100*100 = 80, resulting in 100+80 which is clipped to 150%.

The equations don't work for the next two lines:

0 - 20 = -20 is negative, so ADJ= (20-0)/100*100= 20, and 0 + 20 = 20 which is incorrect, because it should be -20.

-100 - 20 = -120 is negative, so ADJ = (20-(-100))/100*100=80, and -100+80=-20 when it should be -150.

I may be missing a % vs. value unit conversion here, but I believe that the interactive dashboard I put up on Tableau Public is correct. You can see it here:

This allows you to specify the two rates, an initial value for the slave channel, and two different offsets to see how the offsets affect the curve. I believe that the offset simply shifts the curve, such that a positive offset shifts the curve to the right on the graph and negative offset to the left.

The code I use for the adjustment is:

IF [Master - Offset1] < 0 THEN [Master - Offset1] * [Rate Low]/100
ELSE [Master - Offset1] * [Rate High]/100 END

Slave channel output is then:

IF [Slave Channel Initial Value] + [Adjustment1] > 150 THEN 150
ELSEIF [Slave Channel Initial Value] + [Adjustment1] < -150 then -150
ELSE [Slave Channel Initial Value] + [Adjustment1] END
helifun15 is offline        Reply With Quote