Multiwii and larger Single Rotor heli's: why/not?

Post Reply
interestingfellow
Posts: 9
Joined: Wed Apr 12, 2017 8:19 pm

Multiwii and larger Single Rotor heli's: why/not?

Post by interestingfellow »

Total noob, here, but very interested in using multiwii for plane and heli stabilization. I'm reading as much as I can, hut am curious why Multiwii is not recomended for larger heli's, like a Trex 550, etc?

I'll just leave it at that for now.

Thanks!

User avatar
Hamburger
Posts: 2578
Joined: Tue Mar 01, 2011 2:14 pm
Location: air
Contact:

Re: Multiwii and larger Single Rotor heli's: why/not?

Post by Hamburger »

I use it on all my gaui200 and clones up to 325mm blades.
Another heli with 465mm blades is waiting for MultiWii.

interestingfellow
Posts: 9
Joined: Wed Apr 12, 2017 8:19 pm

Re: Multiwii and larger Single Rotor heli's: why/not?

Post by interestingfellow »

I think I've just added multiwii and/or cleanflight diy gyro on a larger sr heli to the list of 300 other or my projects, 1/2 way started, somewhat finished, started stockpiling parts for, might get to one day....

interestingfellow
Posts: 9
Joined: Wed Apr 12, 2017 8:19 pm

Re: Multiwii and larger Single Rotor heli's: why/not?

Post by interestingfellow »

Hamburger wrote:I use it on all my gaui200 and clones up to 325mm blades.
Another heli with 465mm blades is waiting for MultiWii.


Well, here we are again!

I'm finally getting around to trying to use multiwii as an FBL controller.

Where should I start to find the CP settings?

If I use a nano and MPU6050, can I use S.bus? Cppm?

Can I drive a fet directly off the nano (for throttle and yaw)?

I sure would love to know more about how you set up multiwii on those helis! :D

User avatar
Hamburger
Posts: 2578
Joined: Tue Mar 01, 2011 2:14 pm
Location: air
Contact:

Re: Multiwii and larger Single Rotor heli's: why/not?

Post by Hamburger »

setup transmitter following opentx university tutorial,
for MWii have a look at what I changed for a nano-wii board

Code: Select all

/* gaui200 mit promicro nanowii board configs */

/* max size unter promini-compile ist 24938 --> 28672 @ promicro */

// extra pins beschaltet:
// reset  -   braun
// buzzer D4  orange
// vbat   A3  rot

#undef BOARD_NAME
#undef ACC_LPF_FACTOR
#undef GYR_CMPF_FACTOR
#undef COLLECTIVE_PITCH
#undef COLLECTIVE_RANGE
#undef CONTROL_RANGE
#undef MINTHROTTLE
#undef MAXTHROTTLE
#undef VBATSCALE
#undef VBATLEVEL_WARN1
#undef VBATLEVEL_WARN2
#undef VBATLEVEL_CRIT
#undef NO_VBAT
#undef VBATNOMINAL
#undef PINT2mA
#undef FAILSAFE_THROTTLE
#undef SERVO_RFR_RATE


#define A32U4_4_HW_PWM_SERVOS
#define SERVO_RFR_RATE  66      // for savox sh-253
#define SERVO_PIN5_RFR_RATE 165 // for s3154

#define BOARD_NAME "GAUIhw1541 V-.--"
//                  123456789.123456

#define PID_CONTROLLER 1

//#define MPU6050_LPF_256HZ     // This is the default setting, no need to uncomment, just for reference
//#define MPU6050_LPF_188HZ
//#define MPU6050_LPF_98HZ
//#define MPU6050_LPF_42HZ
//#define MPU6050_LPF_20HZ
#define MPU6050_LPF_10HZ
//#define MPU6050_LPF_5HZ       // Use this only in extreme cases, rather change motors and/or props

#define GYRO_SMOOTHING {70, 70, 50}
/* Set the Low Pass Filter factor for ACC
 Increasing this value would reduce ACC noise (visible in GUI), but would increase ACC lag time
 Comment this if  you do not want filter at all.
 unit = n power of 2 */
// this one is also used for ALT HOLD calculation, should not be changed
#define ACC_LPF_FACTOR 6 // default 4 // that means a LPF of 16
/* Set the Gyro Weight for Gyro/Acc complementary filter
 Increasing this value would reduce and delay Acc influence on the output of the filter*/
#define GYR_CMPF_FACTOR 11 // 2000 // default 600

#define HELI_120_CCPM
#define COLLECTIVE_PITCH      AUX2 //THROTTLE
#define FORCE_SERVO_RATES      {30,30,100, 2 , 5 , 1 , 2 ,100}
//      yaw.direction in [5]    0   1  2   3   4   5   6   7 - value & 1 ? -1 : 1
// Set Maximum available movement for the servos. Depending on modell.
#define SERVO_MIN  {1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020}
#define  SERVO_MAX {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000}
#define  SERVO_MID {1500, 1500, 1500, 1500, 1500, 1500, 1550, 1500}
//  0,1,2 nn          nn    nn    nn   nick left   yaw  right  motor
//  3 nick
//  4 left
//  5 tail = yaw servo
//  6 right
//  7 motor

// Limit the range of Collective Pitch. 100% is Full Range each way and position for Zero Pitch
#define COLLECTIVE_RANGE { 60, -100, 60 }// {Min%, ZeroPitch, Max%}.
#define YAWMOTOR                0       // If a motor is use as YAW Set to 1 else set to 0.
// Limit Maximum controll for Roll & Nick  in 0-100%
#define CONTROL_RANGE   { 60, 60 }      //  { ROLL,PITCH }
// Servo mixing for heli 120 Use 1/10 fractions (ex.5 = 5/10 = 1/2)
//                   {Coll,Nick,Roll}

#undef HELI_USE_SERVO_FOR_THROTTLE

#define NANOWII
//  default:
//  #define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -Y; accADC[PITCH]  =  X; accADC[YAW]  =  Z;}
//  #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -X; gyroADC[PITCH] = -Y; gyroADC[YAW] = -Z;}
// real nanowii with usb to right (trex250)
//#define FORCE_ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = X; accADC[PITCH]  =  Y; accADC[YAW]  =  Z;}
//#define FORCE_GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] = X; gyroADC[YAW] = -Z;}
// real nanowii with usb to left (gaui200)
#define FORCE_ACC_ORIENTATION(X, Y, Z)  {imu.accADC[ROLL]  = -X; imu.accADC[PITCH]  = -Y; imu.accADC[YAW]  =  Z;}
#define FORCE_GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] =  Y; imu.gyroADC[PITCH] = -X; imu.gyroADC[YAW] = -Z;}
// 2

#undef ALLOW_ARM_DISARM_VIA_TX_ROLL
#define ALLOW_ARM_DISARM_VIA_TX_YAW

// 3

#define SPEKTRUM 1024
//#undef RCAUX2PINRXO
//#define D8BUZZER

// nur LED, nicht port 4
#define OVERRIDE_LEDPIN_PINMODE   DDRD |= (1<<5);  // must set D5 to output for loading w/o bootlaoder
#define OVERRIDE_LEDPIN_TOGGLE  PIND |= (1<<5);     //switch LEDPIN state (Port D5)
#define OVERRIDE_LEDPIN_OFF     PORTD |= (1<<5);
#define OVERRIDE_LEDPIN_ON      PORTD &= ~(1<<5);

// invertiert:
#define OVERRIDE_BUZZERPIN_PINMODE  DDRD |= (1<<4);            //D4 to output
#define OVERRIDE_BUZZERPIN_ON       PORTD &= ~(1<<4);
#define OVERRIDE_BUZZERPIN_OFF      PORTD |= (1<<4);

#define MINTHROTTLE 1100
#define MAXTHROTTLE 2000

#define BUZZER

#define VBAT
#define VBATSCALE    208
#define VBATLEVEL_WARN1 69 // 6.9V unter Last
#define VBATLEVEL_WARN2  67 // 6.4V unter Last
#define VBATLEVEL_CRIT   64 // 6.1V unter Last
#define NO_VBAT          50 // Avoid beeping without any battery
#define VBATNOMINAL      84 // 8.4V full battery nominal voltage - only used for lcd.telemetry
#define POWERMETER_SOFT
#define PINT2mA 36 // 55 //111

#define ARMEDTIMEWARNING 330 // 6 min = 360 seconds
#define OLED_DIGOLE // 0x27; <<1 gibt 0x4E oder 0x4e
#define DISPLAY_FONT_DSIZE

#define LCD_CONF
#define LCD_CONF_AUX
#define SUPPRESS_LCD_CONF_AUX2
#define SUPPRESS_LCD_CONF_AUX34

#define LCD_TELEMETRY
//#define LCD_TELEMETRY_AUTO "1"
#define LCD_TELEMETRY_STEP "F14$5R"
//#define SUPPRESS_TELEMETRY_PAGE_1
#define SUPPRESS_TELEMETRY_PAGE_2
#define SUPPRESS_TELEMETRY_PAGE_3
//#define SUPPRESS_TELEMETRY_PAGE_4
//#define SUPPRESS_TELEMETRY_PAGE_5
#define SUPPRESS_TELEMETRY_PAGE_6
#define SUPPRESS_TELEMETRY_PAGE_7
#define SUPPRESS_TELEMETRY_PAGE_8
#define SUPPRESS_TELEMETRY_PAGE_9
//#define SUPPRESS_TELEMETRY_PAGE_R

//#define GOVERNOR_P 1
//#define GOVERNOR_D 4
#define VOLTAGEDROP_COMPENSATION

#define RCOPTIONSBEEP

#define FAILSAFE
#define FAILSAFE_DELAY     10
#define FAILSAFE_THROTTLE  MINTHROTTLE
//#define LOG_VALUES 1
//#define DEBUG
#define LOG_PERMANENT
//#define LOG_PERMANENT_SHOW_AT_STARTUP
//#define LOG_PERMANENT_SHOW_AT_L
#define LOG_PERMANENT_SHOW_AFTER_CONFIG
//#define LOG_PERMANENT_SERVICE_LIFETIME 18000

//#define SUPPRESS_ALL_SERIAL_MSP
#define SUPPRESS_OTHER_SERIAL_COMMANDS
#define SUPPRESS_DEFAULTS_FROM_GUI
#define NO_FLASH_CHECK
//#define DISABLE_SETTINGS_TAB
#define DEBUG_FREE

//#undef SERVO_RFR_50HZ
/* up to 160Hz servo refreshrate .. works with the most analog servos*/
//#define SERVO_RFR_160HZ

#ifdef INTERNAL_I2C_PULLUPS
#error "for nanowii board, you MUST undefine internal i2c pullups. Else you destroy board!"
#endif


User avatar
Hamburger
Posts: 2578
Joined: Tue Mar 01, 2011 2:14 pm
Location: air
Contact:

Re: Multiwii and larger Single Rotor heli's: why/not?

Post by Hamburger »

you no doubt will keep us updated on progress (and evolving issues), I presume.
(I read your pm, all good and fair)

interestingfellow
Posts: 9
Joined: Wed Apr 12, 2017 8:19 pm

Re: Multiwii and larger Single Rotor heli's: why/not?

Post by interestingfellow »

Absolutely.

So far, I think I've figured out

-some/most of the settings required in multiwii code for singlerotor
-the 328p chip has only 1 uart and since I will need that for programming, I can't use s.bus.
I'll have to use a 32u4 that has it's own usb built in and the uart for s.bus.
-I may have to use uninverted signal off my XM rx (and how found out how to do *that)
-I want to use AO3400 sot23 transistors to drive the main and tail motors

Once I figure out how to output to drive motors off THR and RUD instead of servos I'll be able to bread board everything, start working out the kinks, and try to fly it!

Post Reply