CranialRectosis' Twitchity Mini-Tricopter build

jhitesma

Some guy in the desert
Mentor
I'm following this thread pretty closely. Just starting with multirotors myself, so I'm probably multiple years from what y'all are doing, but I love the Electrohub tri, and how it flies, so imagine a mini tri would be incredible -- even if it would be a handful for me.

You may be surprised at how quickly these things proliferate :)

October 2013 all I had was a Syma X1 when I set a $100 budget to build a Knuckle (not counting batteries and TX/RX which I already had.)

That knuckle has gone through several MAJOR revisions and no longer even remotely resembles it's original self...the screws on it are the only original part left :)

I built 3 250 acro quads - one for a friend, one which was to tide me over while I waited on Twitchitys first frame and was then cannibalized to finish that build so I only have 1 actually still in my "hanger".

I was given an emax FPV 250 to build as a GPS experimentation platform - though due to Naze issues and lack of time to fly with a spotter that project has been going much slower than I had hoped.

My wife and daughter got me a proto-x for fathers day.

And now I've got a Hex and a new frame for the twitchity :)

These things will multiply like rabbits if given a chance ;)

I actually probably have enough bits laying around I could toss together a beater from bits I've worn out or upgraded from. And while my first quad had a homebrewed FC partly to save money but mostly because KK's were never in stock at the time, Naze was considered experimental and I couldn't decide which MW board was worth buying - but I had an arduino on hand and some wii controllers I could hack up for sensors...now I have a MW Flip Pro and an afro mini looking for homes and enough arduino bits and spare MPU-6050's to toss together a few more FC's if I needed them (It was cheaper to buy bits for more than one and I want to experiment with them on a plane for stabilization at some point...and do an integrated RX/FC one of these days.)

Admittedly a good portion of my fleet was gifted to me - but even on a tight budget spending $40-$60 every other month or so I've collected way more parts than I ever expected to have on hand due to my constant need to experiment.

Once the bug bites...these things really start to proliferate!
 

Twitchity

Senior Member
Nothing exploded when I connected the lipo. The servo pushed hard to the right so I gotta figure out what that's about.

The Naze connected to Baseflight, flashed and I have it set up as a tricopter with my preferred PID and receiver settings. We're in the home stretch now!

It's possible you might need to adjust the servo pwm rate depending on if its digital or not. From my searching when I was trying to setup my G10 tri I found this from some forum, "servo pwm rate 50 (default) 100 digital." I had so many problems getting the Naze to play nice with the tricopter I forgot what I had changed. Hopefully that is of some use to you.

Once you get it flying and tuned, please post your Naze settings as I still haven't been able to get mine just right.
 

cranialrectosis

Faster than a speeding face plant!
Mentor
Wow Twitchity, you aren't kidding on the Naze tri-copter thing.

Do you have any clue where to connect the servo on the Naze?

By going to tricopter have I really changed where motor 1 connects to the flight controller?
 

Twitchity

Senior Member
Yes, the servo now connects to M1, and M3-M5 are now M1, M2, M3... I'm glad (somewhat) that I'm not the only one having problems with the Naze32 and a tri setup. Information is extremely scarce as far as tuning/configuration goes too.

For "Servo Mode" which is required for the tricopter config, M1-M6 get changed to S1, S2, M1, M2, M3, M4 where S1 is the tail servo. This is about the only information Abusemark offers in terms of setup for a tricopter. While searching trying to eliminate my yaw servo oscillation I found all of this information from various sources. Hopefully some of it will help you in your journey :) No idea what most of it means, or if it helped as I still had a slow oscillation but the tri was able to fly after hours of tinkering. I still had an issue where it would over-correct itself coming out of a yaw which was quite bothersome.

Not my information, just stuff I found over multiple forums (some translated from multiple languages too)... Seems the folk across the pond had more info on a tri setup than anywhere I could find.

servo pwm rate 50 (default) 100 digital
acc and gyro influence lpf
gyro_cmpf_factor

gyro_lpf Hardware lowpass filter for gyro. Allowed values ​​depend on the driver - For example MPU6050 Allows 5,10,20,42,98,188,256Hz, while MPU3050 does not allow 5Hz. If you have to set gyro lpf below 42Hz gene rally Means the frame is vibrating too much, and That shouldering be fixed first. Usually range will be ignored configure value Values ​​outside or supported by drivers, and will lpf to default or 42Hz.

Anyhow ... I did notice that moving from 2.2 to 2.3 , the LPF from the Gyro at hardware level it become a must ... I'm using 190Hz on my MW2.2 tricopter, and I was having same on my Micro Y4 when it was on MW2.2 ... but I'm down to 42Hz on my MW2.3 for KK2.x and on the Micro Y4 I think I'm at 98Hz that is possible the reason why it is not as perfect as I would wish

With MW2.3 after the LPF change, that it is looking that old PID start to work again.
Some people report to be even more happy with 20Hz LPF .. that is what APM use by default.
I see other speaking of 42Hz ... anyhow ... the consensus is for high LPF

I did start out on 2.3 using the LPF on i think 20 and 42Hz but for some reason thought that it would make the board more sensitive running on full capacity. The only problem i had without the filters was that the tail would be jittering and shaking while on the ground. Then i put the Moving average gyros on at 15 and that helps take away the jitter. Some say it couses more problems than it fixes but i really feel no difference. Maybe a little tail drift.
 

Twitchity

Senior Member
Any thoughts on Cleanflight for a tri-copter?

I was wondering this exact same thing (in fact I just sent an email to jhitesma since I figured if anyone he would know :) ).

makattack, thank you for the information. I'll check the setting on my board to see what its set to, and adjust it accordingly. Most of the information I've found has been for a MW and has helped to an extent.
 

makattack

Winter is coming
Moderator
Mentor
Sure thing! Good luck with that. I'm definitely keen on a mini tri, and love that you've got what looks like a great design. Just a note that, while I don't know if your tilt mounts allow a full servo travel or not, the mount I used on my tricopter didn't allow full servo travel, and before I set the limits, when I was testing it and banging full yaw stick travels, the one good servo I got (out of an order of 2) started to get really warm. Adding the servo limits keeps it very cool and also helped to get rid of a jittery yaw movement along with the higher refresh rate.
 

mpbiv

New member
I've been running the full Naze32 on my larger Titan Tri for probably 6 months now, with a mediocre tune. I never really went and dug through everything to fine tune all the details.

If you do a #dump in the CLI you can get the full list of parameters, and there are several that are tricopter unique. I'll check mine when I get home, but I believe there is even one parameter for setting the mid point for the yaw servo (just in case your yaw mech is slightly offset).
 

Twitchity

Senior Member
I've been running the full Naze32 on my larger Titan Tri for probably 6 months now, with a mediocre tune. I never really went and dug through everything to fine tune all the details.

If you do a #dump in the CLI you can get the full list of parameters, and there are several that are tricopter unique. I'll check mine when I get home, but I believe there is even one parameter for setting the mid point for the yaw servo (just in case your yaw mech is slightly offset).

That would be amazing. I'll do the same when I get home from work and post the settings here.
 

Twitchity

Senior Member
Alright, I did the "dump" command in the CLI and this is what I got for my tri:

# dump
Afro32 CLI version 2.3 Oct 22 2014 / 19:03:34Current Config: Copy everything below here...
aux 0 0
aux 1 0
aux 2 4
aux 3 0
aux 4 0
aux 5 0
aux 6 0
aux 7 0
aux 8 0
aux 9 0
aux 10 0
aux 11 0
aux 12 0
aux 13 0
aux 14 0
aux 15 0
aux 16 0
aux 17 0
aux 18 0
aux 19 0
aux 20 0
mixer TRI
feature -PPM
feature -VBAT
feature -INFLIGHT_ACC_CAL
feature -SERIALRX
feature -MOTOR_STOP
feature -SERVO_TILT
feature -SOFTSERIAL
feature -LED_RING
feature -GPS
feature -FAILSAFE
feature -SONAR
feature -TELEMETRY
feature -POWERMETER
feature -VARIO
feature -3D
feature VBAT
feature SERIALRX
feature MOTOR_STOP
feature FAILSAFE
map TAER1234
set looptime = 3500
set emf_avoidance = 0
set midrc = 1500
set minthrottle = 1050
set maxthrottle = 1950
set mincommand = 1100
set mincheck = 1100
set maxcheck = 1900
set deadband3d_low = 1406
set deadband3d_high = 1514
set neutral3d = 1460
set deadband3d_throttle = 50
set motor_pwm_rate = 400
set servo_pwm_rate = 100
set pwm_filter = 0
set retarded_arm = 0
set disarm_kill_switch = 1
set flaps_speed = 0
set fixedwing_althold_dir = 1
set reboot_character = 82
set serial_baudrate = 115200
set softserial_baudrate = 9600
set softserial_1_inverted = 0
set softserial_2_inverted = 0
set gps_type = 0
set gps_baudrate = 0
set gps_ubx_sbas = 0
set serialrx_type = 1
set sbus_offset = 988
set telemetry_provider = 0
set telemetry_port = 0
set telemetry_switch = 0
set vbatscale = 110
set currentscale = 400
set currentoffset = 0
set multiwiicurrentoutput = 0
set vbatmaxcellvoltage = 43
set vbatmincellvoltage = 33
set power_adc_channel = 0
set align_gyro = 0
set align_acc = 0
set align_mag = 0
set align_board_roll = 0
set align_board_pitch = 0
set align_board_yaw = 0
set yaw_control_direction = 1
set acc_hardware = 0
set mag_hardware = 0
set max_angle_inclination = 500
set moron_threshold = 32
set gyro_lpf = 42
set gyro_cmpf_factor = 600
set gyro_cmpfm_factor = 250
set pid_controller = 0
set deadband = 0
set yawdeadband = 0
set alt_hold_throttle_neutral = 40
set alt_hold_fast_change = 1
set throttle_correction_value = 0
set throttle_correction_angle = 800
set rc_rate = 100
set rc_expo = 20
set thr_mid = 50
set thr_expo = 0
set roll_pitch_rate = 80
set yaw_rate = 0
set tpa_rate = 0
set tpa_breakpoint = 1500
set failsafe_delay = 10
set failsafe_off_delay = 200
set failsafe_throttle = 1000
set failsafe_detect_threshold = 985
set rssi_aux_channel = 0
set rssi_adc_channel = 0
set rssi_adc_max = 4095
set rssi_adc_offset = 0
set yaw_direction = 1
set tri_unarmed_servo = 1
set gimbal_flags = 1
set acc_lpf_factor = 4
set accxy_deadband = 40
set accz_deadband = 40
set acc_unarmedcal = 1
set small_angle = 25
set acc_trim_pitch = 0
set acc_trim_roll = 0
set baro_tab_size = 21
set baro_noise_lpf = 0.600
set baro_cf_vel = 0.985
set baro_cf_alt = 0.965
set accz_lpf_cutoff = 5.000
set mag_declination = 0
set gps_pos_p = 11
set gps_pos_i = 0
set gps_pos_d = 0
set gps_posr_p = 20
set gps_posr_i = 8
set gps_posr_d = 45
set gps_nav_p = 14
set gps_nav_i = 20
set gps_nav_d = 80
set gps_wp_radius = 200
set nav_controls_heading = 1
set nav_speed_min = 100
set nav_speed_max = 300
set nav_slew_rate = 30
set p_pitch = 33
set i_pitch = 30
set d_pitch = 23
set p_roll = 33
set i_roll = 30
set d_roll = 23
set p_yaw = 20
set i_yaw = 15
set d_yaw = 45
set p_alt = 50
set i_alt = 0
set d_alt = 0
set p_level = 90
set i_level = 10
set d_level = 100
set p_vel = 120
set i_vel = 45
set d_vel = 1
 

C0d3M0nk3y

Posted a thousand or more times
Here are the settings I use on my Bat Bone tri. I haven't fiddled with servo pwm rate or LPF at all, and it flies way better than it ever did running a KK2 board. I did use the 'Servo' tab in Baseflight Configurator to set the min, max, and mid point of the servo so the mid value was where I wanted it.


# dump
Afro32 CLI version 2.3 Sep 29 2014 / 22:38:56Current Config: Copy everything below here...
aux 0 0
aux 1 0
aux 2 4
aux 3 0
aux 4 0
aux 5 0
aux 6 0
aux 7 0
aux 8 0
aux 9 0
aux 10 0
aux 11 0
aux 12 0
aux 13 2048
aux 14 0
aux 15 0
aux 16 0
aux 17 256
aux 18 0
aux 19 0
aux 20 0
mixer TRI
feature -PPM
feature -VBAT
feature -INFLIGHT_ACC_CAL
feature -SERIALRX
feature -MOTOR_STOP
feature -SERVO_TILT
feature -SOFTSERIAL
feature -LED_RING
feature -GPS
feature -FAILSAFE
feature -SONAR
feature -TELEMETRY
feature -POWERMETER
feature -VARIO
feature -3D
feature PPM
feature INFLIGHT_ACC_CAL
feature MOTOR_STOP
map TAER1234
set looptime = 2500
set emf_avoidance = 0
set midrc = 1500
set minthrottle = 1050
set maxthrottle = 1950
set mincommand = 1050
set mincheck = 1070
set maxcheck = 1930
set deadband3d_low = 1406
set deadband3d_high = 1514
set neutral3d = 1460
set deadband3d_throttle = 50
set motor_pwm_rate = 400
set servo_pwm_rate = 50
set retarded_arm = 0
set disarm_kill_switch = 1
set flaps_speed = 0
set fixedwing_althold_dir = 1
set reboot_character = 82
set serial_baudrate = 115200
set softserial_baudrate = 9600
set softserial_1_inverted = 0
set softserial_2_inverted = 0
set gps_type = 0
set gps_baudrate = 0
set gps_ubx_sbas = 0
set serialrx_type = 0
set sbus_offset = 988
set telemetry_provider = 0
set telemetry_port = 0
set telemetry_switch = 0
set vbatscale = 110
set currentscale = 400
set currentoffset = 0
set multiwiicurrentoutput = 0
set vbatmaxcellvoltage = 0
set vbatmincellvoltage = 0
set power_adc_channel = 0
set align_gyro = 0
set align_acc = 0
set align_mag = 0
set align_board_roll = 0
set align_board_pitch = 0
set align_board_yaw = 0
set yaw_control_direction = 1
set acc_hardware = 0
set mag_hardware = 0
set max_angle_inclination = 500
set moron_threshold = 32
set gyro_lpf = 42
set gyro_cmpf_factor = 600
set gyro_cmpfm_factor = 250
set pid_controller = 0
set deadband = 0
set yawdeadband = 0
set alt_hold_throttle_neutral = 40
set alt_hold_fast_change = 1
set throttle_correction_value = 0
set throttle_correction_angle = 800
set rc_rate = 160
set rc_expo = 65
set thr_mid = 50
set thr_expo = 0
set roll_pitch_rate = 0
set yaw_rate = 40
set tpa_rate = 25
set tpa_breakpoint = 1500
set failsafe_delay = 10
set failsafe_off_delay = 200
set failsafe_throttle = 1050
set failsafe_detect_threshold = 985
set rssi_aux_channel = 0
set rssi_adc_channel = 0
set rssi_adc_max = 4095
set rssi_adc_offset = 0
set yaw_direction = 1
set tri_unarmed_servo = 1
set gimbal_flags = 1
set acc_lpf_factor = 4
set accxy_deadband = 40
set accz_deadband = 40
set acc_unarmedcal = 1
set small_angle = 25
set acc_trim_pitch = 0
set acc_trim_roll = 0
set baro_tab_size = 21
set baro_noise_lpf = 0.600
set baro_cf_vel = 0.985
set baro_cf_alt = 0.965
set accz_lpf_cutoff = 5.000
set mag_declination = 0
set gps_pos_p = 11
set gps_pos_i = 0
set gps_pos_d = 0
set gps_posr_p = 20
set gps_posr_i = 8
set gps_posr_d = 45
set gps_nav_p = 14
set gps_nav_i = 20
set gps_nav_d = 80
set gps_wp_radius = 200
set nav_controls_heading = 1
set nav_speed_min = 100
set nav_speed_max = 300
set nav_slew_rate = 30
set p_pitch = 33
set i_pitch = 32
set d_pitch = 25
set p_roll = 33
set i_roll = 32
set d_roll = 25
set p_yaw = 40
set i_yaw = 20
set d_yaw = 0
set p_alt = 50
set i_alt = 0
set d_alt = 0
set p_level = 90
set i_level = 10
set d_level = 100
set p_vel = 120
set i_vel = 45
set d_vel = 1
 

Twitchity

Senior Member
Thank you, Code. I'm going to give those settings a try. It looks like the PIDs are about the only ones that are different than mine. I'm at a loss so it can't hurt to try it out! I always have my setting posted above so I can go back to that if needed.

Cranial, your inbox is full (or was earlier today)
 

cranialrectosis

Faster than a speeding face plant!
Mentor
Cool. Thank you Codemonkey! I see you set your looptime to 2500. Makes a difference in PIDs doesn't it?


Twitchity, I fixed the inbox thing. :)
 
Last edited:

jhitesma

Some guy in the desert
Mentor
Cool. Thank you Codemonkey! I see you set your looptime to 2500. Makes a difference in PIDs doesn't it?


Twitchity, I fixed the inbox thing. :)

Yep, looptime will affect the PID's. I see Twitchity has his up at 3500 which is from what I understand too high to really benefit anything (it's faster than the ESC's can update so the FC is wasting effort calculating updates that never get sent to the ESC's)

I'd try dropping that down to 2500 like CM first. PID's are pretty close between the two so that looptime would be what I'd look at first.
 

C0d3M0nk3y

Posted a thousand or more times
Cool. Thank you Codemonkey! I see you set your looptime to 2500. Makes a difference in PIDs doesn't it?

You're welcome. I definitely had to do some PID tuning after I changed the looptime. I've been running looptime at 2500 and motor_pwm_rate at 400 with SimonK ESCs, and looptime at 2000 and motor_pwm_rate at 490 with KISS ESCs (when I had them on my hex).
 
Last edited: