Quien no ha querido alguna vez hacerse un multicóptero que se salga de lo “normal”? (puede que no todos, pero alguno conocemos..)

Existen modelos con casi cualquier cantidad de motores; con formas de lo más variadas, desde las clásicas Y, X, +, pasando por H y V, y llegando a formas “raras” tipo Spider o con los motores en posiciones de lo más extrañas y variopintas.

Cómo podemos “crear” nuestro propio reparto de fuerzas de motores? es decir, como podemos configurar el firmware para que nuestro multicóptero pueda volar.

Teoría:

Independientemente de la posición de los motores, necesitamos que las fuerzas conjuntas de todos ellos, consigan mantener el multicóptero estable.

Cualquier mezcla de motores depende directamente de sus posiciones relativas al centro de gravedad del chasis. Dependiendo de su ubicación, cada motor necesitará aplicar una fuerza diferente de Pitch y Roll. En otras palabras, cuanto más alejado esté un motor de un eje, más fuerza deberá ejercer para trabajar y viceversa, cuanto más cerca esté un motor menos tendrá que trabajar.

Nota: Las fuerzas para cada motor se expresan en valores porcentuales que multiplicaran los valores de Pitch y Roll definiendo así su fuerza

Calculo por angulos y trigonometría:
Fuente (http://blog.oscarliang.net/custom-motor-output-mix-quadcopter/)

Con este método, todo lo que necesitamos saber son los ángulos entre motor-controladora con respecto al eje de roll y respecto al eje de pitch. No hay necesidad de medir ninguna distancia, por lo tanto, al ser todo cálculo, el resultado será más preciso.
Como ejemplo calculamos los valores de roll y pitch para el motor 0 en un ZMR250 (hay que tener en cuenta que el ZMR no es cuadrado, sino que entre los motores delanteros tenemos 20.25mm y entre los laterales 15.5mm, por eso obtenemos valores diferentes para ºA y ºB).

Primero necesitamos medir los ángulos usando un trasnportador o medidor de ángulos, y tomaremos como denominado el mayor de los dos.

ºA = 51.6
ºB = 38.2

En este caso el valor mayor es el del ángulo A.

Roll: sin(A) / sin(A) = 1
Pitch: sin(B) / sin(A) = 0.6184 / 0.7837 = 0.789

Vemos que los valores obtenidos con los dos sistemas, son muy parecidos.

Cómo sabemos que esto funciona? si miramos más en detalle, veremos que este segundo método se puede pasar al primero.

sin(A) = a / c
sin(B) = b / c

calculando pitch, tenemos sin(B) / sin(A) = (b / c) / (a / c) = b / a.

Para el roll, tenemos sin(A) / sin(A) = (a / c) / (a / c) = a / a.

Este método de cálculo por trigonometría, puede no ser el más sencillo, pero si el más preciso; para los que no se quieran complicar la vida con ángulos y cálculos trigonométricos, aquí va un segundo sistema, más simple y casi igual de eficaz:

Cálculo por distancias de motores a ejes (método usado en los ejemplos):

Para cada motor, mediremos las distancias con el eje de pitch y de roll, y tomaremos la mayor como denominador, por ejemplo en un ZMR250, las distancias serían:

Motor a eje Pitch = 7.75cm
Motor a eje Roll = 10.125cm

(hay que tener en cuenta que el ZMR no es cuadrado, sino que entre los motores delanteros tenemos 20.25mm y entre los laterales 15.5mm de ahi los valores obtenidos)

Vemos que el mayor valor es el de la distancia con el eje de roll, por tanto usaremos ese como denominador, para el motor delantero derecho, los valores serian:

Roll: 10.125/10.125 = 1
Pitch: (-) 7.75/10.125 = -0.765

Ejes Pitch(Cabeceo) y Roll (Alabeo):

Los ejes de Pitch y Roll, serán los que se usen para encontrar y calcular las fuerzas necesarias a aplicar a cada motor.

Para facilitar el entender y calcular los valores y sus signos para cada motor, podemos dibujar en un sistema de ejes:

Eje Yaw (Direccion):

El eje de Yaw es el más simple, ya que sólo depende de la dirección de rotación del motor
– Si el motor gira (CW) (ClockWise – En el sentido de las agujas del rejol), el valor de Yaw es Negativo
– Si el motor gira (CCW) (CounterClockWise – En el sentido inverso de las agujas del rejol), el valor de Yaw es Positivo

Intentaremos explicarlo con unos cuantos ejemplos con los formatos más comunes.

Nota: La numeración y sentido de giro de los motores puedes variar de una controladora a otra…

Quad modo +

Ok, empecemos por un simple quad en modo + .

Como los 4 motores están situados sobre los ejes, todos tendrán un valor de 100% o 0%, en detalle:

 Motor Pitch Roll Yaw
M0 Right CCW  0% -100% +
M1 Left  CCW  0% 100% +
M2 Front  CW  100% 0%
M3 Back   CW  -100% 0%

Aplicando estos valores, las fuerzas de cada motor quedarían así:

M0 = – (0 * Pitch) – (1 * Roll) + Yaw
M1 = + (0 * Pitch) + (1 * Roll) + Yaw
M2 = + (1 * Pitch) + (0 * Roll) – Yaw
M3 = – (1 * Pitch) – (0 * Roll) – Yaw

La configuración en CleanFlight sería:

mixer custom
mmix reset
mmix 0 , 1.0, 0, -1.0, 1.0
mmix 1 , 1.0, 0, 1.0, 1.0
mmix 2 , 1.0, 1.0, 0, -1.0
mmix 3 , 1.0,-1.0, 0, -1.0

Quad modo X

Siguiente ejemplo, Quad en modo X:

NOTA: En este caso, si usamos el valor obtenido de 71% en todos los motores, estariamos reduciendo la potencia total al 71%, por lo que al ser todos iguales, podemos usar un valor del 100%.De esta manera, estaremos manteniendo las mismas proporciones de potencia entre motores, por lo que no tendremos diferencias en la estabilidad, pero estaremos obteniendo toda la potencia posible.

Ahora los motores estan rotados 45º respecto al quad +, rotamos los motores y obtenemos los nuevos valores. En este caso tendrán todos un valor de 71% para pitch y roll. En detalle:

 Motor Pitch Roll Yaw
M0 F-Right CCW +71% -71% +
M1 B-Left  CCW -71% +71% +
M2 F-Left  CW +71% +71%
M3 B-Right   CW -71% -71%

Aplicando estos valores, las fuerzas de cada motor quedarían así:

M0 = +(0.71 * Pitch) – (0.71 * Roll) + Yaw
M1 = -(0.71 * Pitch) + (0.71 * Roll) + Yaw
M2= +(0.71 * Pitch) + (0.71 * Roll) – Yaw
M3= -(0.71 * Pitch) – (0.71 * Roll) – Yaw

La configuración en CleanFlight sería:

mixer custom
mmix reset
mmix 0 , 1.0, 1.0, -1.0, 1.0
mmix 1 , 1.0,-1.0, 1.0, 1.0
mmix 2 , 1.0, 1.0, 1.0, -1.0
mmix 3 , 1.0,-1.0, -1.0, -1.0

Hexa + en modo clásico

Siguiente ejemplo, el hexa con todos los motores a la misma distancia del centro:

Podemos ver que los 2 motores de la derecha y la izquierda tienen un pitch del 50% y un roll del 87%, mientras que los motores forntal y trasero, sólo tendrán efecto en pitch del 100% y nada para roll.

En detalle:

 Motor Pitch Roll Yaw
M7 Front CW +100% +0% +
M2 F-Left  CCW +50% +87%
M1 B-Left  CW -50% +87% +
M4 F-Right  CCW +50% -87%
M3 B-Right   CW -50% -87% +
M8 Back  CCW -100% -0%

Aplicando estos valores, las fuerzas de cada motor quedarían así:

M7 = +( 1 * Pitch) + ( 0 * Roll) – Yaw
M2 = +(0.5 * Pitch) + (0.87 * Roll) + Yaw
M1 = -(0.5 * Pitch) + (0.87 * Roll) – Yaw
M4 = +(0.5 * Pitch) – (0.87 * Roll) + Yaw
M3 = -(0.5 * Pitch) – (0.87 * Roll) – Yaw
M8 = -( 1 * Pitch) – ( 0 * Roll) + Yaw

La configuración en CleanFlight sería:

mixer custom
mmix reset
mmix 7 , 1.0, 1.0, 0, 1.0
mmix 2 , 1.0, 0.5, 0.87, -1.0
mmix 1 , 1.0,-0.5, 0.87, 1.0
mmix 4 , 1.0, 0.5,-0.87, -1.0
mmix 3 , 1.0,-0.5,-0.87, 1.0
mmix 8 , 1.0,-1.0, 0, -1.0

Hexa modo H

Siguiente, Hexa en modo H, con tres motores por lado en forma de “H”:

NOTA: Si los lados estuvieran más cercanos, tendríamos que añadir valores menores de roll, ya que tendrían que tener menos fuerza; y lo mismo aplicaria en pitch.

En detalle:

 Motor Pitch Roll Yaw
M1 F-Left CW +100% +100%
M6 Left  CCW +0% +100% +
M5 B-Left  CW -100% +100%
M2 F-Right  CCW +100% -100% +
M3 Right   CW -0% -100%
M4 B-Righ  CCW -100% -100% +

Aplicando estos valores, las fuerzas de cada motor quedarían así:

M1 = +(1 * Pitch) + (1 * Roll) – Yaw
M6 = +(0 * Pitch) + (1 * Roll) + Yaw
M5 = -(1 * Pitch) + (1 * Roll) – Yaw
M2 = +(1 * Pitch) – (1 * Roll) + Yaw
M3 = -(0 * Pitch) – (1 * Roll) – Yaw
M4 = -(1 * Pitch) – (1 * Roll) + Yaw

La configuración en CleanFlight sería:

mixer custom
mmix reset
mmix 1 , 1.0, 1.0, 1.0, -1.0
mmix 6 , 1.0, 0, 1.0, 1.0
mmix 5 , 1.0,-1.0, 1.0, -1.0
mmix 2 , 1.0, 1.0, 1.0, 1.0
mmix 3 , 1.0, 0, 1.0, -1.0
mmix 4 , 1.0,-1.0, 1.0, 1.0

Octo modo clásico

Octo clásico con un motor delante y otro detrás:

En detalle:

Motor Pitch Roll Yaw
M0 Front CW 100% +0%
M1 F-Right CCW +71% -71% +
M2 Right CW +0% -100%
M3 B-Right CCW -71% -71% +
M6 Back CW -0% -0%
M7 B-Left CCW -71% +71% +
M9 Left CCW +0% +100%
M10 F-Left CCW +71% +71% +

Aplicando estos valores, las fuerzas de cada motor quedarían así:

M0 = +(1 *Pitch) +(0 *Roll) -Yaw
M1 = +(0.71*Pitch) -(0.71*Roll) +Yaw
M2 = +(0 *Pitch) -(1 *Roll) -Yaw
M3 = -(0.71*Pitch) -(0.71*Roll) +Yaw
M6 = -(0 *Pitch) -(0 *Roll) -Yaw
M7 = -(0.71*Pitch) +(0.71*Roll) +Yaw
M9 = +(0 *Pitch) +(1 *Roll) -Yaw
M10= +(0.71*Pitch) +(0.71*Roll) +Yaw

La configuración en CleanFlight sería:

mixer custom
mmix reset
mmix 0 , 1.0, 1.0 , 0, -1.0
mmix 1 , 1.0, 0.71, -0.71, 1.0
mmix 2 , 1.0, 0, -1.0 , -1.0
mmix 3 , 1.0,-0.71, -0.71, 1.0
mmix 6 , 1.0, 0, 0, -1.0
mmix 7 , 1.0,-0.71, 0.71, 1.0
mmix 9 , 1.0, 0, 1.0 , -1.0
mmix 10, 1.0, 0.71, 0.71, 1.0

Octo modo X

Octo en modo X, 2 motores delante, 2 detrás y 2 a cada lado.

Nota:Una vez más nos pasa como en el quad X, que una vez girado, ninguno de los motores tiene la potencia máxima, por lo que para poderla conseguir, deberemos escalar a 100.
Es decir que tendremos proporcionalmente: 92% = 100% y 38% = 42%, obteniendo:

En detalle:

 Motor Pitch Roll Yaw
M0 F-Left CW +92% -38%
M1 F-Right CCW +92% -38% +
M2 FM-Right CW +38% +92%
M3 FR-Right CCW -38% +92% +
M6 B-Right CW -38% -92%
M7 B-Left CCW +38% -92% +
M9 BR-Left CW -92% +38%
M10 FM-Left CCW -92% -38% +

Aplicando estos valores, las fuerzas de cada motor quedarían así:

M0 = +(1 *Pitch) – (0.42 * Roll) -Yaw
M1 = +(1 *Pitch) + (0.42 * Roll) +Yaw
M2 = +(0.42 *Pitch) + (1 * Roll) -Yaw
M3 = -(0.42 *Pitch) + (1 * Roll) +Yaw
M6 = -(0.42 *Pitch) – (1 * Roll) -Yaw
M7 = +(0.42 *Pitch) – (1 * Roll) +Yaw
M9 = -(1 *Pitch) + (0.42 * Roll) -Yaw
M10= -(1 *Pitch) – (0.42 * Roll) +Yaw

La configuración en CleanFlight sería:

mixer custom
mmix reset
mmix 0 , 1.0, 1.0 , -0.42, -1.0
mmix 1 , 1.0, 1.0 , 0.42, 1.0
mmix 2 , 1.0, 0.42, 1.0 , -1.0
mmix 3 , 1.0,-0.42, 1.0 , 1.0
mmix 6 , 1.0,-0.42, -1.0 , -1.0
mmix 7 , 1.0, 0.42, -1.0 , 1.0
mmix 9 , 1.0,-1.0 , 0.42, -1.0
mmix 10, 1.0,-1.0 , -0.42, 1.0

Hasta aquí el misterio de las mezclas de motores en multicópteros.

Esperamos haber aportado algo de luz al tema del mezclado de motores. Ahora ya podéis diseñar vuestro propio aparato con la distribución de motores que queráis.

Más info en https://github.com/cleanflight/cleanflight/blob/master/docs/Mixer.md