4in / 4out Mixer
for Quadrocopter / Quadcopter
16F84A V1.12 2010/08/29 update
==============================================
Version 1.1x
Input: A0 (rudder),A1 (throttle), A2 (Eleon/Elevator),A3 (Aileon).
Output: B0 (motor left),B1(motor right), B2 (motor forward),B3 (motor back).
==============================================
we redesign the mixer function, and there is our thinking process,
If we can control all 4 rotors with one
throttle channel, why not,
when Quadcopter is inital
A0 = 50%
A1 = 0% (throttle)
A2 = 50%
A3 = 50%
=> B0 = B1 = B2 = B3 =0%
when Quadcopter fly (state hover) and balance
A0 = 50%
A1 = 60% (throttle)
A2 = 50%
A3 = 50%
=> B0 = B1 = B2 = B3 =60%
*** So B0~B3 all respond correlated to A1 throttle.
------------------
when Quadcopter fly, (state yaw rudder)
The left and right rotors are run in counter direction of forward and backward rotors.
Example:
A0 = 60% (rudder)
A1 = 60%
A2 = 50%
A3 = 50%
=> B0 = B1 = A1 - ŁGA0 = 50%
B2 = B3 = A1 + ŁGA0 = 70% => yaw left
A0 = 40% (rudder)
A1 = 60%
A2 = 50%
A3 = 50%
=> B0 = B1 = A1 - ŁGA0 = 70%
B2 = B3 = A1 + ŁGA0 = 50% => yaw right
*** B0, B1 =(A1 - ŁGA0)
*** B2, B3 =(A1 + ŁGA0)
------------------------------------
when Quadcopter fly, (state forward )
Example:
A0 = 50%
A1 = 60%
A2 = 60% (Eleon)
A3 = 50%
=> B0 = B1 = 60%
B2 = A1 - ŁGA2 = 50%
B3 = A1 + ŁGA2 = 70%
*** B2 =(A1 - ŁGA2)
*** B3 =(A1 + ŁGA2)
------------------------------------
when Quadcopter fly, (state right)
Example:
A0 = 50%
A1 = 60%
A2 = 50%
A3 = 60% (Aileon)
=> B2 = B3= 60%
B0 = A1 + ŁGA3 = 70%
B1 = A1 - ŁGA3 = 50%
*** B0 =(A1 + ŁGA3)
*** B1 =(A1 - ŁGA3)
===========================================
final functions
(V1.12) make direction, yaw control more easy (small action)
B0 = A1 - ŁGA0/2 + ŁGA3/2
B1 = A1 - ŁGA0/2 - ŁGA3/2
B2 = A1 + ŁGA0/2 - ŁGA2/2
B3 = A1 + ŁGA0/2 + ŁGA2/2
-----------------------------------
In the C source code, just replace the calculating statements as follows
PWM[0] = T[1] +(T[3]/2) -(T[0]/2);
PWM[1] = T[1] +227 -(T[0]/2) -(T[3]/2);
PWM[2] = T[1] +(T[0]/2) -(T[2]/2);
PWM[3] = T[1] +(T[0]/2) +(T[2]/2) -227 ;
===========================================
(V1.1)
B0 = A1 - ŁGA0 + ŁGA3
B1 = A1 - ŁGA0 - ŁGA3
B2 = A1 + ŁGA0 - ŁGA2
B3 = A1 + ŁGA0 + ŁGA2
-----------------------------------
In the C source code, just replace the calculating statements as follows
PWM[0] = T[1] +T[3] -T[0];
PWM[1] = T[1] +454 -T[0] -T[3];
PWM[2] = T[1] +T[0] -T[2];
PWM[3] = T[1] +T[0] +T[2] -454 ;
==========================================.
ˇ@
======================================================================================ˇ@
You MAY duplicate, modify, give away or sell the original files in the web site or anything you derive from it.
ATTENTION : It is your own responsibility, if any damage cause by using the web site.
Philip Sun / TAIWAN
copy right 2004
ˇ@