Home Forums Everything about the Tricopter V4 F3FC & iNav experiences

This topic contains 163 replies, has 22 voices, and was last updated by  Marlon 1 year, 1 month ago.

Viewing 15 posts - 1 through 15 (of 164 total)
  • Author
  • #33056



    I had promised some time ago to write some notes about my experiences using the F3FC tricopter frame board with the great iNav software.
    iNav releases

    For those who only fly cleanflight, and/or Triflight:
    iNav is a branch of cleanflight, optimized for GPS functions.
    It provides very reliable RTH, POS HOLD and ALT-hold functions, and also waypoint navigation.

    It does this, by combining ACC X/Y/Z information (inertial navigation) with the GPS / BARO information. Not simply GPS / Baro (without ACC) as the default Cleanflight / Triflight does.

    I’m not saying, it is as good as for example a DJI Inspire in pos-hold, but it’s damn close…. The price difference makes that easy to accept….
    For me, it easily manages to keep the location within ½ meter, even in quite strong winds. And this is using a cheap GPS (new one on the way).

    ALT-hold is also hugely superior to standard cleanflight. It uses ACC-Z acceleration data to ‘feel’ if the copter is moving up/down, before the baro even sees a variation.

    The only thing ‘missing’ in iNav, is the improved tail servo control provided by tri-flight, but I’m pretty sure, sooner or later, this will be added.
    I’m flying a V3 tricopter, just for slow FPV (no racing), so the lacking tail control improvements in triflight are not a big issue for me. I want autonomous flight, and a good reliable position hold…. RTH is nice to have.

    The iNav team did a very good job !

    This all is very nice, BUT there is one great drawback.
    Because of the high dependency from the iNav GPS / Althold functions on ACC sensor data (inertial navigation), it becomes very sensitive to vibrations.
    MUCH more so than regular cleanflight / triflight (and I assume baseflight / betaflight / whatever).

    My tricopter V3 is already a few years old, and has seen its fair share of crashes…. Although the motors are pretty good quality T-motors, the prop adapters are not perfectly straight / balanced anymore. This never turned out to be a problem using cleanflight and an old Flip32 board (naze clone), but became a problem when using iNav in combination with the F3FC tricopter frame board.

    The F3FC was added only recently to iNav thanks to Lauka/Ikaino. I also received a lot of help from digitalentity in troubleshooting the issues. Thanks again !

    Originally, I flew iNav using the flip32 board. This board was mounted using doublesided tape to the frame (original tricopter V3 frame). This flew reasonably well… alt-hold wasn’t perfect, but still way better than original cleanflight.

    Because of the limitations of the F1 processors (running out of memory), I decided to buy the F3FC. Very nice clean solution, with a minimum amount of wiring. And the F3 processor promises future expandability…
    The F3FC tricopter frame however has one major drawback, and that is it is much more sensitive to vibrations because the controller IS the frame. (the loose F3FC board, i.e. NOT the tricopter frame, doesn’t have that issue).

    With the F3FC, It flew perfectly fine in acro / level mode, as well as GPS modes. It’s only problem was ALT hold….

    When trying to hold altitude, it would shoot up in a number of short power bursts…. Each single burst lasting less than ½ a second… It would climb like 10..20 meters, (or even more, depending on alt-hold PID settings) before dropping back again, and then it would repeat.
    It first puzzled me completely. I tried every possible combination of ALT and VEL P&ID’s, and it wouldn’t solve anything…. It randomly got these power bursts and would shoot up, regardless of settings.

    digitalentity already quite early suggested vibrations, but this didn’t seem like normal vibration issues to me. I’m flying different multicopters for nearly 5 years now, and this one has the least vibrations of all of them. And it never was a problem on any of them before. So I was initially a little reluctant to accept that.

    In the blacklog files, you could see no vibrations on the gyro nor ACC readings when holding it down.
    Only when flying, there we sections were it would show approx. 3 hz variations in ACC-Z values. ACC-X and ACC-Y values were not affected. The variations to ACC-Z seemed to originate from the real acceleration of the copter, rather than vibrations. I could clearly hear/see the motors fluctuating at approx. 3 hz.

    So far, my understanding of vibrations was to look for something in the order of magnitude of 100 hz… (not 3 hz). And there was nothing visible suggesting 100 Hz vibrations.
    I’m running 900 kV motors using 9×5 props, on 3 or 4 cells… When hovering, the motors run something like 6000 RPM, which is 100 hz). Very far away from the 3 Hz ACC-Z cycle I saw in the blackbox logs.

    I tried many things to balance the motors, to exclude the possibility that it was vibrations after all, but I simply couldn’t get them better. The props are perfectly balanced.
    I still think, my motors are just as good as most other copters out there…. Sure, they are not perfect, but still pretty ok.

    And when testing, while holding down the copter with my hand NOTHING showed up… Sure I could feel the motor vibrations, but it didn’t seem to have an significant effect on the vibration graphs (motor test tab in iNav configurator)

    It was only when bk79 suggested to tie-down the copter, rather than holding it with my hand, that things became clear.

    So I took a few large stones, and tied the copter to those using large ty-raps. Making sure to leave some play.
    Initially, I still didn’t see the vibrations, but when really slowly increasing the throttle, I found there was one very distinct speed (approx. 1600us in my case on a 3S), where the ACC-Z readings would go completely crazy…. It was only a very narrow range (forget the exact numbers, but less the 30mS wide).. I was seeing ACC-Z values as low as 0.5 and as high as 1.5 (supposed to be 1.0 exactly).

    Now if that gets fed into the altitude information, no wonder the copter would respond like it did…. The strange thing was, it wasn’t visible when holding, and it happened only at one very specific motor speed.
    And even more strange, it ALSO showed up when the props where removed….. The bearings are perfectly fine though… it seems to be the prop adapter that has a slight unbalance.
    (yes, I tried adding tape to the props, and moving the orientation, to offset the slight unbalance in the adapter).

    It seems to be not a direct vibrations issue, but a resonance issue…. Somehow, it hit a resonant frequency of the ACC sensor, which causes it to go crazy on ACC-Z alone. ACC-X/Y nor the gyros where affected.
    Also tried to filter it in software, but to no avail….

    My theory is (and that may be completely wrong) the resonance causes the sensor to exceed its maximum/minimum values, and the value is clamped internally by the sensor electronics (anything outside the measurable range cut-off / thrown away, or clamped at maximum value). Pure coincidence may be causing a few very high numbers to be discarded, while some of the lower ones happen to be just within limits. This would lead to an average which is way too low… And this shows up at a much lower frequency (3hz) as the vibrations / resonance that caused it in the first place (100 hz, or some harmonics).
    Again, just my theory, and probably wrong, but it gives a convenient explanation on what it looks like 😉

    So the trick became to change / shift the resonance frequency sufficient, so it wouldn’t become a problem in flight.

    Because isolating the flight controller board from the frame isn’t an option when the controller board IS the frame, I had to try to mechanically dampen the arms from the central frame / FC

    I used some 3M VHB doublesided tape I had lying around…. This is the same stuff you often get to mount action cams to helmets, surf board, tricopters, etc….

    I simply put some on top and below the arms, where it comes in contact with the frame plate. Don’t tighten the screws too much, because then it doesn’t work anymore….

    That improved things already a lot, but not sufficient.

    So I did the same also to the motors/arms… simply some of this 3M stuff between the arm and the motor holders, and not overtightening the screws too much….
    It is still plenty rigid so the motors won’t fall off, but sufficiently ‘soft’ so the critical vibrations no longer cause the ACC-Z to go crazy….

    Now, it flies better than ever…. It holds altitude nearly perfect.
    Let’s say, it holds altitude less than ½ meter variations in flight, and that mainly comes from the baro noise. Add something over the baro sensor to keep out wind (and also light)… Even though it is mounted inside the front spacer, it still wouldn’t hurt.

    – relative minor vibrations can cause big problems, if they happen to cause resonance….
    – iNav and also the F3FC board are much more sensitive for this, than other external boards (easier for vibration damping) or other firmware (not relying so heavily on inertial navigation).
    – the same vibrations may not cause any problems on other firmware
    – Vibrations MAY not show up immediately
    – it is a hardware problem of the complete system (not just the FC or the motors, but an unlucky combination of the whole thing).…. Definitely not a software problem.
    – the F3FC is a great board, but do understand it is inherently more susceptible to potential vibration issues.


    During my attempts to get iNav working, I ran into another ‘problem’, which others may also encounter, and took some time to find.

    The F3FC has the barometer on board. This barometer (5611) is connected through the I2C bus.
    For iNav, you also need a compass. This compass is usually mounted on the GPS mast, away from any power wiring. The compass must be connected to the I2C bus as well.

    In earlier years, when I still was using Multiwii, problems with the I2C bus always became clear when the I2C error counter would go crazy.
    In cleanflight / iNav, sensor detection is a little more sophisticated, and the software will automatically detect which sensors are connected to the I2C bus.
    The downside is, when the I2C bus is not optimal, the software may not ‘see’ one of the sensors on startup… So it will no longer try to communicate with it, and it seems ‘not connected’… there will however be no I2C errors (or only 1 or 2).
    The strange thing was, it did detect the external compass just fine, but the build in barometer was ‘gone’…. In an earlier version of iNav (one of the pre-1.2 betas) it seemed to work just fine…. But then the programmers changes something in the way how the sensors were detected and it no-longer worked….

    It turned out the external compass I was using, has 10kOhm pull-up resistors installed….
    The I2C bus always needs some pull-up resistors to work, but the overall value is important.
    The F3FC board itself has already some build-in pull-up resistors installed. Those are 10 kOhm already, which is perfect.
    However, when adding the external compass, with its additional resistors (now in parallel to the ones on the F3FC), made the overall resistance too low, which messed up the signal quality.
    Apparently, the on-board barometer (5611) is a little more picky on its signal quality than the 5883 compass, so it wasn’t detected when the compass was connected…. The compass worked though.
    The baro worked just fine again when I removed the compass wiring…

    The trick was simply to remove the pull-up resistors from the external compass, and everything started working just fine…. I2C only needs one set of pull up resistors….

    You can find out if your external compass has pull-up resistors by measuring with a multimeter between the +5V pin and the SDA or SCL lines (with everything DISCONNECTED)… if it shows open loop (high resistance) it has no pull-ups…. If you measure 10 kOhm (or some other value), those are the pull-up resistors…. You need to find a way to remove them from the external compass (probably using a soldering iron).


    One more thing worth noting.

    ACC calibration works different in iNav compared to cleanflight…. It has a 6 position calibration procedure described in the iNav Wiki.
    sensor calibration

    Important to note: for calibration, the BOARD/sensors should be in the orientation mentioned, NOT the copter…. So you have to hold the board upside down (= electronics facing UP) in the first calibration step.
    Please note: ‘normal’ for the board is electronics facing down.

    So the correct sequence for ACC calibration for the BOARD is:
    1) up-side down 2) up-side up 3) usb up 4) tail down 5) usb down 6) nose down

    Check the ACCgain values in the CLI are indeed no longer 4096 as mentioned in the Wiki…. it may SEEM to be correct on the 3D model even if the calibration failed, but if you wait long enough, you will notice it slowly drifts….
    Check the ACCgain values !!!

    Just as in Davids videos, the board orientation is 180 deg PITCH (so upside down).
    However, please note, the iNav firmware uses different units. make sure to use the iNav configurator to set this. If using the cleanflight configurator, you should enter 1800, instead of 180 (10x) to get it correct….
    just avoid the confusion, and use iNav configurator for everything.

    For compass, you will have to experiment to find the proper orientation…. the old Multiwii rules on what to sensor changes to expect when moving are no longer valid…
    There are only 8 possible compass orientations… only one will be correct…. just watch the 3D model when moving until it looks ‘right’.
    mine turned out to be: set align_mag = CW180

    just make sure the compass and the flight controller move together (so properly mounted on the copter, not hanging loose on a wire).

    here are my settings….

    # version
    # INAV/RCEXPLORERF3 1.2.0 Aug 20 2016 / 13:45:47 (b21fec2)
    # pflags
    # Persistent config flags: 0x00000001
    # dump master
    # mixer
    mixer TRI
    mmix reset
    smix reset
    # feature
    feature -RX_PPM
    feature -VBAT
    feature -INFLIGHT_ACC_CAL
    feature -RX_SERIAL
    feature -MOTOR_STOP
    feature -SERVO_TILT
    feature -SOFTSERIAL
    feature -GPS
    feature -FAILSAFE
    feature -SONAR
    feature -TELEMETRY
    feature -CURRENT_METER
    feature -3D
    feature -RX_PARALLEL_PWM
    feature -RX_MSP
    feature -RSSI_ADC
    feature -LED_STRIP
    feature -DISPLAY
    feature -ONESHOT125
    feature -BLACKBOX
    feature -TRANSPONDER
    feature -AIRMODE
    feature -SUPEREXPO
    feature -VTX
    feature -RX_NRF24
    feature -SOFTSPI
    feature RX_PPM
    feature VBAT
    feature GPS
    feature FAILSAFE
    feature TELEMETRY
    feature CURRENT_METER
    feature ONESHOT125
    feature BLACKBOX
    # beeper
    beeper RX_LOST
    beeper RX_LOST_LANDING
    beeper DISARMING
    beeper ARMING
    beeper ARMING_GPS_FIX
    beeper BAT_CRIT_LOW
    beeper BAT_LOW
    beeper GPS_STATUS
    beeper RX_SET
    beeper READY_BEEP
    beeper MULTI_BEEPS
    beeper DISARM_REPEAT
    beeper ARMED
    beeper SYSTEM_INIT
    beeper ON_USB
    # map
    map TAER1234
    # serial
    serial 20 1 115200 38400 0 115200
    serial 0 2 115200 38400 0 115200
    serial 1 32 115200 38400 0 115200
    serial 2 129 115200 38400 0 115200
    # led
    led 0 15,15:ES:AI:0
    led 1 15,8:E:FW:0
    led 2 15,7:E:FW:0
    led 3 15,0:NE:AI:0
    led 4 8,0:N:F:0
    led 5 7,0:N:F:0
    led 6 0,0:NW:AI:0
    led 7 0,7:W:FW:0
    led 8 0,8:W:FW:0
    led 9 0,15:SW:AI:0
    led 10 7,15:S:FW:0
    led 11 8,15:S:FW:0
    led 12 7,7:U:FW:0
    led 13 8,7:U:FW:0
    led 14 7,8:D:FW:0
    led 15 8,8:D:FW:0
    led 16 8,9::R:3
    led 17 9,10::R:3
    led 18 10,11::R:3
    led 19 10,12::R:3
    led 20 9,13::R:3
    led 21 8,14::R:3
    led 22 7,14::R:3
    led 23 6,13::R:3
    led 24 5,12::R:3
    led 25 5,11::R:3
    led 26 6,10::R:3
    led 27 7,9::R:3
    led 28 0,0::C:0
    led 29 0,0::C:0
    led 30 0,0::C:0
    led 31 0,0::C:0
    # color
    color 0 0,0,0
    color 1 0,255,255
    color 2 0,0,255
    color 3 30,0,255
    color 4 60,0,255
    color 5 90,0,255
    color 6 120,0,255
    color 7 150,0,255
    color 8 180,0,255
    color 9 210,0,255
    color 10 240,0,255
    color 11 270,0,255
    color 12 300,0,255
    color 13 330,0,255
    color 14 0,0,0
    color 15 0,0,0
    # mode_color
    mode_color 0 0 1
    mode_color 0 1 11
    mode_color 0 2 2
    mode_color 0 3 13
    mode_color 0 4 10
    mode_color 0 5 3
    mode_color 1 0 5
    mode_color 1 1 11
    mode_color 1 2 3
    mode_color 1 3 13
    mode_color 1 4 10
    mode_color 1 5 3
    mode_color 2 0 10
    mode_color 2 1 11
    mode_color 2 2 4
    mode_color 2 3 13
    mode_color 2 4 10
    mode_color 2 5 3
    mode_color 3 0 8
    mode_color 3 1 11
    mode_color 3 2 4
    mode_color 3 3 13
    mode_color 3 4 10
    mode_color 3 5 3
    mode_color 4 0 7
    mode_color 4 1 11
    mode_color 4 2 3
    mode_color 4 3 13
    mode_color 4 4 10
    mode_color 4 5 3
    mode_color 5 0 9
    mode_color 5 1 11
    mode_color 5 2 2
    mode_color 5 3 13
    mode_color 5 4 10
    mode_color 5 5 3
    mode_color 6 0 6
    mode_color 6 1 10
    mode_color 6 2 1
    mode_color 6 3 0
    mode_color 6 4 0
    mode_color 6 5 2
    mode_color 6 6 3
    mode_color 6 7 6
    mode_color 6 8 0
    mode_color 6 9 0
    mode_color 6 10 0
    set looptime = 1000
    set i2c_overclock = OFF
    set gyro_sync = OFF
    set gyro_sync_denom = 2
    set mid_rc = 1500
    set min_check = 1100
    set max_check = 1900
    set rssi_channel = 12
    set rssi_scale = 30
    set rssi_ppm_invert = OFF
    set rc_smoothing = ON
    set input_filtering_mode = OFF
    set min_throttle = 1150
    set max_throttle = 2000
    set min_command = 1000
    set servo_center_pulse = 1500
    set 3d_deadband_low = 1406
    set 3d_deadband_high = 1514
    set 3d_neutral = 1460
    set 3d_deadband_throttle = 1000
    set motor_pwm_rate = 400
    set servo_pwm_rate = 50
    set disarm_kill_switch = ON
    set auto_disarm_delay = 5
    set small_angle = 25
    set reboot_character = 82
    set gps_provider = UBLOX
    set gps_sbas_mode = EGNOS
    set gps_dyn_model = AIR_1G
    set gps_auto_config = ON
    set gps_auto_baud = ON
    set inav_auto_mag_decl = ON
    set inav_accz_unarmedcal = ON
    set inav_use_gps_velned = OFF
    set inav_gps_delay = 200
    set inav_gps_min_sats = 6
    set inav_w_z_baro_p =  0.500
    set inav_w_z_gps_p =  0.200
    set inav_w_z_gps_v =  0.200
    set inav_w_xy_gps_p =  1.000
    set inav_w_xy_gps_v =  2.000
    set inav_w_z_res_v =  0.500
    set inav_w_xy_res_v =  0.500
    set inav_w_acc_bias =  0.010
    set inav_max_eph_epv =  1000.000
    set inav_baro_epv =  100.000
    set nav_disarm_on_landing = ON
    set nav_use_midthr_for_althold = OFF
    set nav_extra_arming_safety = OFF
    set nav_user_control_mode = CRUISE
    set nav_position_timeout = 5
    set nav_wp_radius = 100
    set nav_max_speed = 400
    set nav_max_climb_rate = 500
    set nav_manual_speed = 500
    set nav_manual_climb_rate = 200
    set nav_landing_speed = 200
    set nav_land_slowdown_minalt = 500
    set nav_land_slowdown_maxalt = 2000
    set nav_emerg_landing_speed = 500
    set nav_min_rth_distance = 500
    set nav_rth_tail_first = OFF
    set nav_rth_alt_mode = AT_LEAST
    set nav_rth_altitude = 1000
    set nav_mc_bank_angle = 30
    set nav_mc_hover_thr = 1375
    set nav_mc_auto_disarm_delay = 2000
    set nav_fw_cruise_thr = 1400
    set nav_fw_min_thr = 1200
    set nav_fw_max_thr = 1700
    set nav_fw_bank_angle = 20
    set nav_fw_climb_angle = 20
    set nav_fw_dive_angle = 15
    set nav_fw_pitch2thr = 10
    set nav_fw_roll2pitch = 75
    set nav_fw_loiter_radius = 5000
    set serialrx_provider = SBUS
    set spektrum_sat_bind = 0
    set telemetry_switch = OFF
    set telemetry_inversion = ON
    set frsky_default_lattitude =  0.000
    set frsky_default_longitude =  0.000
    set frsky_coordinates_format = 0
    set frsky_unit = IMPERIAL
    set frsky_vfas_precision = 0
    set hott_alarm_sound_interval = 5
    set battery_capacity = 0
    set vbat_scale = 110
    set vbat_max_cell_voltage = 43
    set vbat_min_cell_voltage = 33
    set vbat_warning_cell_voltage = 30
    set current_meter_scale = 360
    set current_meter_offset = 0
    set multiwii_current_meter_output = OFF
    set current_meter_type = ADC
    set align_gyro = DEFAULT
    set align_acc = DEFAULT
    set align_mag = CW180
    set align_board_roll = 0
    set align_board_pitch = 1800
    set align_board_yaw = 0
    set gyro_lpf = 42HZ
    set moron_threshold = 32
    set imu_dcm_kp = 2500
    set imu_dcm_ki = 50
    set imu_dcm_kp_mag = 10000
    set imu_dcm_ki_mag = 0
    set pos_hold_deadband = 20
    set alt_hold_deadband = 50
    set yaw_motor_direction = 1
    set yaw_jump_prevention_limit = 200
    set tri_unarmed_servo = OFF
    set servo_lowpass_freq = 400
    set servo_lowpass_enable = OFF
    set failsafe_delay = 10
    set failsafe_off_delay = 200
    set failsafe_throttle = 1300
    set failsafe_kill_switch = OFF
    set failsafe_throttle_low_delay = 100
    set failsafe_procedure = SET-THR
    set rx_min_usec = 885
    set rx_max_usec = 2115
    set acc_hardware = 0
    set baro_use_median_filter = ON
    set baro_hardware = 0
    set mag_hardware = 0
    set blackbox_rate_num = 1
    set blackbox_rate_denom = 5
    set blackbox_device = SERIAL
    set magzero_x = 14
    set magzero_y = -100
    set magzero_z = -58
    set acczero_x = -250
    set acczero_y = -194
    set acczero_z = 750
    set ledstrip_visual_beeper = OFF
    set accgain_x = 4100
    set accgain_y = 4091
    set accgain_z = 4217
    # rxfail
    rxfail 0 a
    rxfail 1 a
    rxfail 2 a
    rxfail 3 a
    rxfail 4 h
    rxfail 5 h
    rxfail 6 h
    rxfail 7 h
    rxfail 8 h
    rxfail 9 h
    rxfail 10 h
    rxfail 11 h
    rxfail 12 h
    rxfail 13 h
    rxfail 14 h
    rxfail 15 h
    rxfail 16 h
    rxfail 17 h
    # dump profile
    # profile
    profile 0
    # aux
    aux 0 1 0 1300 1700
    aux 1 4 2 1300 2100
    aux 2 3 2 1300 2100
    aux 3 10 2 1300 1700
    aux 4 9 2 1800 2100
    aux 5 24 1 1300 1700
    aux 6 27 1 1800 2100
    aux 7 0 0 900 900
    aux 8 0 0 900 900
    aux 9 0 0 900 900
    aux 10 0 0 900 900
    aux 11 0 0 900 900
    aux 12 0 0 900 900
    aux 13 0 0 900 900
    aux 14 0 0 900 900
    aux 15 0 0 900 900
    aux 16 0 0 900 900
    aux 17 0 0 900 900
    aux 18 0 0 900 900
    aux 19 0 0 900 900
    # adjrange
    adjrange 0 0 0 900 900 0 0
    adjrange 1 0 0 900 900 0 0
    adjrange 2 0 0 900 900 0 0
    adjrange 3 0 0 900 900 0 0
    adjrange 4 0 0 900 900 0 0
    adjrange 5 0 0 900 900 0 0
    adjrange 6 0 0 900 900 0 0
    adjrange 7 0 0 900 900 0 0
    adjrange 8 0 0 900 900 0 0
    adjrange 9 0 0 900 900 0 0
    adjrange 10 0 0 900 900 0 0
    adjrange 11 0 0 900 900 0 0
    # rxrange
    rxrange 0 1000 2000
    rxrange 1 1000 2000
    rxrange 2 1000 2000
    rxrange 3 1000 2000
    # servo
    servo 0 1000 2000 1500 90 90 100 -1
    servo 1 1000 2000 1500 90 90 100 -1
    servo 2 1000 2000 1500 90 90 100 -1
    servo 3 1000 2000 1500 90 90 100 -1
    servo 4 1000 2000 1500 90 90 100 -1
    servo 5 1000 2000 1500 90 90 100 -1
    servo 6 1000 2000 1500 90 90 100 -1
    servo 7 1000 2000 1500 90 90 100 -1
    set nav_alt_p = 100
    set nav_alt_i = 0
    set nav_alt_d = 0
    set nav_vel_p = 100
    set nav_vel_i = 10
    set nav_vel_d = 80
    set nav_pos_p = 65
    set nav_pos_i = 120
    set nav_pos_d = 0
    set nav_posr_p = 180
    set nav_posr_i = 15
    set nav_posr_d = 100
    set nav_navr_p = 10
    set nav_navr_i = 5
    set nav_navr_d = 8
    set deadband = 5
    set yaw_deadband = 5
    set throttle_tilt_comp_str = 0
    set flaperon_throw_offset = 250
    set flaperon_throw_inverted = OFF
    set mode_range_logic_operator = OR
    set default_rate_profile = 0
    set gimbal_mode = NORMAL
    set mag_declination = 130
    set mag_hold_rate_limit = 90
    set p_pitch = 80
    set i_pitch = 50
    set d_pitch = 60
    set p_roll = 80
    set i_roll = 20
    set d_roll = 60
    set p_yaw = 100
    set i_yaw = 40
    set d_yaw = 100
    set p_level = 20
    set i_level = 15
    set d_level = 75
    set max_angle_inclination_rll = 300
    set max_angle_inclination_pit = 300
    set gyro_soft_lpf_hz = 60
    set acc_soft_lpf_hz = 15
    set dterm_lpf_hz = 40
    set yaw_lpf_hz = 30
    set yaw_p_limit = 300
    set iterm_ignore_threshold = 200
    set yaw_iterm_ignore_threshold = 50
    set rate_accel_limit_roll_pitch = 0
    set rate_accel_limit_yaw = 10000
    # dump rates
    # rateprofile
    rateprofile 0
    set rc_expo = 70
    set rc_yaw_expo = 20
    set thr_mid = 50
    set thr_expo = 20
    set roll_rate = 40
    set pitch_rate = 40
    set yaw_rate = 18
    set tpa_rate = 0
    set tpa_breakpoint = 1500

    Hope this helps…..

    BTW: this became quite a long story, but not everyone is an expert (certainly not me), and I often read stories where some small detail is not mentioned, which might be obvious for an expert, but not always clear to the reader struggling with a problem…. I try to explain as much as possible, even if that is double.
    Hope you don’t mind….



    For what its worth, I also experienced the huge resonance vibrations that you described. In my case, the resonance was at exactly 1573us throttle, but in the Y axis. I eventually solved this by painstakingly balancing the motors themselves (without the props). I described the issue here:

    Tricopter rolls to the right in angle mode

    I also considered adding vibration dampening between the frame/arms and arms/motors, but never quite got there. Perhaps I should revisit this.

    Thanks for sharing!




    I bought few days ago a china GPS Neo M8N with compass integrated prob 5883L. The GPS itself works great but the problem starts when i connect the integrated compass from GPS to I2C bus. The F3FC barometer is going crazy with values over -15xx to 3000. Barometer is not always getting detected. Theres allot of I2C errors like 4000. Apparently the GPS is working on 3.3V but – well works too on 5V i checked it. If i remove the I2C connection from the compass, barometer works just fine. Is it possible that the integrated compass from the GPS is working on 3.3V logic while the F3FC logic is 5V?

    Tested Inav and triflight same errors.

    Any help would be appreciated.



    From the first post in this thread:

    It turned out the external compass I was using, has 10kOhm pull-up resistors installed….
    The I2C bus always needs some pull-up resistors to work, but the overall value is important.
    The F3FC board itself has already some build-in pull-up resistors installed. Those are 10 kOhm already, which is perfect.
    However, when adding the external compass, with its additional resistors (now in parallel to the ones on the F3FC), made the overall resistance too low, which messed up the signal quality.
    Apparently, the on-board barometer (5611) is a little more picky on its signal quality than the 5883 compass, so it wasn’t detected when the compass was connected…. The compass worked though.
    The baro worked just fine again when I removed the compass wiring…

    The trick was simply to remove the pull-up resistors from the external compass, and everything started working just fine…. I2C only needs one set of pull up resistors….



    Ty for the quick answer, but the PCB from the GPS does have 2x 10K resistors i removed them but no change after in resistance while checking with multimeter 🙁 and there are still errors.



    then you probably removed the wrong resistors….

    look for resistors which measure approx 0 (zero) ohm between +5V and one side of the resistor, and 0 ohm between SDA (or SCL) line on the other side….

    One resistor connects (with one side) to the SDA, the other resistor to the SCL line
    +5V should connect to one side of both resistors

    If you measure anything else, they are NOT the pull-up resistors (could be anything).

    The resistors themselves are probably something like 10kOhm, but could be anywhere between 3 and 20 kOhm (I would guess).

    Oh, and make sure, you measure WITHOUT the GPS/compass being connected to the flight controller board (or you will be measuring the F3FC’s onboard pull-ups resistors).

    I think I have the same GPS coming from china (or at least similar)…. apparently, that also has pull-up’s installed which will have to be removed.
    When it arrives, I will have a look and post some pictures.



    Heres o foto. I removed those 2 10kOhm resistors near each other with the red arrow and no change. The other too are 10Ohm resistors and theres no other appart on upside resistors for diodes.



    can’t really tell from the picture, but perhaps you can trace the track that goes from the connector SDA (SCL) line, to see to which part it goes….



    Well 🙂 the SDA goes to pin 1 to the compass chip bottom right on picture and SCL to pin16 and on both traces theres no resistors on way.



    Then are you sure you measured 10 kOhm WITHOUT it being connected to the flight controller board ?

    If you had it connected, and you measured 10 kOhm, those would be the pull-ups of the F3FC, and your compass wouldn’t have pull-ups at all.

    Then your problems would be something else, but I have no clue what else it might be….

    I ordered this one…. seems different from what you got.

    Beitian BN-880 GPS / compass



    Hmm.. ye decripton for mine says its compatible with APM 2.8 and Pixhawk im sure i measured it right 🙁 there must be something else then the pull-up resistors which we prob dont find out… My guess is its something with IO/logic output voltage bettwen F3FC and GPS integrated compass. Mayby its not 100% compatible with naza32 based platforms.

    For testing i connected a I2C OLED 0,96′ display, of course i did remove the pull-up resistors (2x10kOhm) it does not block the baro – both work, but everytime the page with data is changing/refreshing the baro values are jumping from 0,06 to 0,50 and then to like -0.35. If i disable the display in cleanflight, baro values goes back to very stable 0,05-0,10 when idle. The Display is connected to 6V as BEC is set to 6V. If i touch the front of F3FC it is hot but u can touch it without issue. Theres nothing else to BEC connected apart from tx, oled, servo. Battery is 4S 2300mAh.



    the GPS and the compass ‘should’ be pretty much independant of each other…. they should only share the +5V and the GND.

    Easy to find out, if you only connect the compass (so +5V, GND, SDA, SCL lines) and leave RX/TX lines of the GPS disconnected (only for a test).

    GPS is just a normal serial protocol. Should work on any serial based board (as long as they are 5V based).

    As far as I understood, pixhawk or APM ‘compatible’ only refers to the connector type / pinout… electrically, they should be the same. Have never tried though, so not 100% sure…

    That your F3FC front becomes hot is worrying… never noticed that on mine… but I’m out of the country, so cannot test right now. Did it only become hot with the Oled display ? or also with the compass connected…. and what without anything connected ?
    Did it also do that before you removed the (I suppose we can conclude they where the wrong) resistors ?
    Did you solder them back on ?

    I would also double-check the wiring, and measure if there is anything suggesting a short.

    BTW, could you post a link to your GPS model ?



    Hi wilco 🙂

    ad. compass – yes it works standalone without gps serials connected.

    there is the compass model:


    it says supplay voltage is up to 3.6V and in other description says up to 5V both work i checked.

    The rest i will check in few minutes and let u know.



    The BEC is getting quiet warm now even OLED wiring is disconnected only working now is servo and tx over ppm. The GPS resistors i did solder back becouse there was no difference in baro and mag working. BEC is getting warm all time if thinks are connected or not about the same temp. when i pcb.



    You see that a lot….. The GPS chip itself (Ublox) is rated for 3.3V, but they probably put a regulator on the board so you can connect it directly to the 5VDC from the flight controller…. These chinese manuals are not always ‘accurate’

    I am just guessing, but those resistors you removed, might have been part of the voltage regulator.

    What happens if you take the servo wire off ? does it still get hot….
    Before, I had a flip32 board, with the old tricopter V3 power distribution board…. that would also get rather hot, but that was mainly due to the servo always moving.

    It there is a real short, something WILL burn (and you’ll find out ;-)….

    I managed to burn a trace on the F3FC by accidently connecting something wrong…. had to solder a jumper wire to get it working again… I’m only using the main 5V supply for everything (not the 3.3 or 6/8 volt option jumpers).

Viewing 15 posts - 1 through 15 (of 164 total)

You must be logged in to reply to this topic.