|
|
|||
|
|
Thanks everyone. Just goes to show that you should never give up on your VTOL model. Even like in my case when you should have stopped about two years ago
![]() Stats are... Wingspan = 31" Weight with 2100 15c thunderpower 3 cell = 555 grams Weight wtih 1800 40to50c Turnigy 3 cell = 580 grams Motors up front are 1300kv blue wonders spinning CC 8" slow fly props. Rear motor is (AD-100L Micro Brushless Outrunner 1850Kv) with recommended 6 inch GWS prop. CG is about two inches behind front motors pivot point. Video showing most of the controls and how the back motor shuts off automatically when in forward flight...
|
||
|
|
|
|
|||
|
|
20th Flight, 1st one with FPV telemetry running while in 50/50 mix. Will get full forward flight footage later.
-Steve |
||
|
|
|||
|
|
The promised forward-flight video:
|
||
|
|
|
|
|
Excellent!
![]()
|
|
Latest blog entry: Quick Stick
|
|
|
|
|
|
|
I've posted a few pieces of information on the project at DIY Drones here: http://diydrones.com/profiles/blogs/...-wing-vtol-uav
The text editor at DIYD doesn't take code nicely, as this forum does, so I'll post a preview of the code here, an exclusive sneak peek: In the MultiWii.ino source file: Code:
#if defined(TRICOPTER_HYBRID_TYPE_A) || defined(TRICOPTER_HYBRID_TYPE_B)
if(rcOptions[BOXHYBD_FF] == 1 && rcOptions[BOXHYBD_INT] == 0){ // Forward Flight
hybridTiltFactor = (hybridTiltFactor>HYBRID_TILT_INCVAL)? hybridTiltFactor-HYBRID_TILT_INCVAL: 0;
#if defined(TRI_HYBRID_FOLD_MECH)
foldMechSetpoint = (hybridTiltFactor==0)? HYBRID_FOLD_FWDFLT: HYBRID_FOLD_HOVER;
#endif
} else if(rcOptions[BOXHYBD_FF] == 0 && rcOptions[BOXHYBD_INT] == 0){ // Hover Mode
hybridTiltFactor = ((hybridTiltFactor+HYBRID_TILT_INCVAL)<HYBRID_TF_MAX)? hybridTiltFactor+HYBRID_TILT_INCVAL : HYBRID_TF_MAX;
#if defined(TRI_HYBRID_FOLD_MECH)
foldMechSetpoint = HYBRID_FOLD_HOVER;
#endif
} else if(rcOptions[BOXHYBD_FF] == 0 && rcOptions[BOXHYBD_INT] == 1){ // 50/50 Mix, or middle spot between F/F and Hover
hybridTiltFactor = ((hybridTiltFactor+HYBRID_TILT_INCVAL)<(HYBRID_TF_MAX/2))? hybridTiltFactor+HYBRID_TILT_INCVAL :
((hybridTiltFactor-HYBRID_TILT_INCVAL)>(HYBRID_TF_MAX/2))? hybridTiltFactor-HYBRID_TILT_INCVAL : (HYBRID_TF_MAX/2);
#if defined(TRI_HYBRID_FOLD_MECH)
foldMechSetpoint = HYBRID_FOLD_HOVER
#endif
} else{ // R/C Knob Channel Mix, direct assignment, no incrementers. For debugging/manual flying. For the manual-transmission type of crowd.
hybridTiltFactor = (rcData[AUX1]> 1960)? 0 : ((rcData[AUX1]-1100)<0)? 120: (120-((rcData[AUX1]-1100)>>3)); // (rcData[AUX1]-1000)>>3; // and 120
#if defined(TRI_HYBRID_FOLD_MECH)
foldMechSetpoint = (hybridTiltFactor==0)? HYBRID_FOLD_FWDFLT: HYBRID_FOLD_HOVER;
#endif
}
In the Output.ino File: Code:
#elif defined(TRICOPTER_HYBRID_TYPE_B)
motor[0] = PIDMIX( 0,+3/2, 0); //REAR //+4/3
motor[1] = -axisPID[ROLL] - axisPID[PITCH]/2; //RIGHT PIDMIX(-1,-2/3, 0); //axisPID[PITCH]*2/3;
motor[2] = axisPID[ROLL] - axisPID[PITCH]/2; //LEFT PIDMIX(+1,-2/3, 0);
// servo[2] = YAW_DIRECTION * axisPID[YAW] + MIDRC + conf.hybrid_cassette_offset; //LEFT
// servo[5] = YAW_DIRECTION * axisPID[YAW] + MIDRC - conf.hybrid_cassette_offset; //RIGHT
// servo[2] -= ((HYBRID_TILT_HOVER-1000)*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2) +
// ((HYBRID_TILT_FWDFLT-1000)*((HYBRID_TF_MAX-hybridTiltFactor)>>2))/(HYBRID_TF_MAX>>2);
// servo[5] += ((HYBRID_TILT_HOVER-1000)*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2) +
// ((HYBRID_TILT_FWDFLT-1000)*((HYBRID_TF_MAX-hybridTiltFactor)>>2))/(HYBRID_TF_MAX>>2);
servo[2] = ((YAW_DIRECTION*axisPID[YAW]*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2)) + ((HYBRID_TILT_LIMIT_B-HYBRID_TILT_LIMIT_A)*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2) + HYBRID_TILT_LIMIT_A) - (conf.hybrid_cassette_offset);
servo[5] = ((YAW_DIRECTION*axisPID[YAW]*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2)) + ((HYBRID_TILT_LIMIT_A-HYBRID_TILT_LIMIT_B)*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2) + HYBRID_TILT_LIMIT_B) + (conf.hybrid_cassette_offset);
// 120 is 90 deg up, 0 is 0 deg (forward). Or, 120>>2 = 30, 30 is 90 deg. 120 *3/4.
// Actuator Left & Right Motors Rear Motor Left & Right Servos
// Pitch *= sin(t) *= sin(t)
// Roll *= sin(t) += rollPID * cos(t) * 10% ( leave off for now )
// Yaw += yawPID*(120-t)*12% ( need cos(t)? ) *= t/120 ( may want *= sin(t) )
// sin approx cos approx [0:90 deg] -> [0:120 ticks]
// 1.0 __ __
// .8 /... ...\
// .6 /.... ....\
// .4 /..... .....\
// .2 /...... ......\
// 0 /.......120 .......\
// 0 90 0 30 120
if(hybridTiltFactor<HYBRID_TF_MAX){ // 120 -> 30
if(hybridTiltFactor == 0){
motor[0] = MINTHROTTLE;
motor[1] = (YAW_DIRECTION*axisPID[YAW])>>2;
motor[2] = (-YAW_DIRECTION*axisPID[YAW])>>2;
} else {
for(uint8_t i=0; i<3; i++) motor[i] = (motor[i]>2000)? 2000: motor[i];
motor[0] = (hybridTiltFactor>(HYBRID_TF_MAX*5/8))? motor[0]:((motor[0]-MINTHROTTLE)*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2))*8/5+MINTHROTTLE;
motor[1] = (hybridTiltFactor>(HYBRID_TF_MAX*3/4))? motor[1]:((motor[1])*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2))*4/3;
motor[2] = (hybridTiltFactor>(HYBRID_TF_MAX*3/4))? motor[2]:((motor[2])*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2))*4/3;
motor[1] += ((YAW_DIRECTION*axisPID[YAW]*((HYBRID_TF_MAX>>2)-(hybridTiltFactor>>2)))/(HYBRID_TF_MAX>>2))>>2;
motor[2] += ((-YAW_DIRECTION*axisPID[YAW]*((HYBRID_TF_MAX>>2)-(hybridTiltFactor>>2)))/(HYBRID_TF_MAX>>2))>>2;
//servo[2] += ((YAW_DIRECTION*axisPID[YAW]*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2)) + The start of trying to isolate servo loop as motors are above.
}
}
// motor[0] += rcCommand[THROTTLE];
motor[1] += rcCommand[THROTTLE];
motor[2] += rcCommand[THROTTLE];
debug[0] = rcCommand[PITCH]; // servo[2]; //conf.hybrid_cassette_offset;
debug[1] = axisPID[PITCH]; // servo[5]; //MIDRC;
servo[2] = constrain( servo[2], 1005, 2000); // LEFT
servo[5] = constrain( servo[5], 1005, 2000); // RIGHT
#endif
Repeated from the DIYDrones post, attached here is a snapshot of the GUI: |
|
|
|
|
|
|
|
Here is the source code for the project:
http://www.rcgroups.com/forums/showthread.php?t=1855292 |
|
|
|
|
||
|
|
Thanks all for the kind remarks. You guys are the prime motivators for me, I hope I've added something to the group, being the lone wolf I've been.
Quote:
Eddie, Did transitioning ever work out? -Steve |
|
|
||
|
|
||
|
|
Quote:
Does your code stretch the servo signal to let them move past a 90 degree range? |
|
|
||
|
| Thread Tools | |
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Discussion QTD- Quad Tilt Duino (Arduino- Tilt Rotor) | RCvertt | VTOLs | 100 | Jun 28, 2012 12:15 AM |
| Question Tricopter: What rear tilt angle? | bb42 | Multirotor Talk | 3 | Oct 15, 2010 09:40 AM |
| New Product The new Panther tilt rotor UAV from Israel Aerospace Industries | Hunter850 | Multirotor Talk | 2 | Oct 06, 2010 08:06 AM |
| For Sale Rc lander panther complete setup with metal edf/motor/esc/servos/retracts/battery | TurboFanElectric | Aircraft - Electric - Jets (FS/W) | 3 | Mar 25, 2010 08:29 AM |
| Sold RClander Panther 70mm Fan and motor | cjdscratch | Aircraft - Electric - Power Systems (FS/W) | 7 | Mar 13, 2010 10:31 PM |