Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move servo from S1 to S6 pin for MATEKF405 #2954

Merged
merged 4 commits into from
Apr 4, 2018
Merged

Move servo from S1 to S6 pin for MATEKF405 #2954

merged 4 commits into from
Apr 4, 2018

Conversation

alexeystn
Copy link
Contributor

When SERVO_TILT is enabled, servo signal goes to S1 output. Motor 1 stops working therefore.
Now servo can be attached to S6 output of MatekF405:
feature SERVO_TILT
servo 0 1000 2000 1500 100 8

#2644

@stronnag
Copy link
Collaborator

stronnag commented Mar 21, 2018

Please don't break my existing tri-copters. We've been through this before.
#2566

@alexeystn
Copy link
Contributor Author

Oh, sorry.
So, what's the solution? Is there a chance to keep motors at S1..S4 and servo at S6 for quads and don't break tri-copters?

@stronnag
Copy link
Collaborator

stronnag commented Mar 21, 2018

It would have to be another target. I agree this is really inconvenient one way or the other. The way the MATEKF405_OSD is a "fork" of the MATEKF405 target.

@alexeystn
Copy link
Contributor Author

Thank you, now I understood.
Do you have F405-OSD on your tri-copters? That one with through-hole S1..S4 pads and difficult-to-solder S5..S6, right?
I guess, another target for my F405-CTR is the only way out.

@stronnag
Copy link
Collaborator

I have MATEK-OSD on one, and MATEK-STD on the other.
You are correct, having assembled the board with S1-S4 pins / through-holes, retro-fitting S5 would be quite difficult, at least for my soldering ability.

@alexeystn
Copy link
Contributor Author

All right, let's think about how these targets can be separated.
There are 4 boards in Matek F405 family: OSD, STD, AIO, CTR.

  1. Boards OSD and STD have through-hole pads for S1...S4.
  2. Boards AIO and CTR have surface pads for all S1...S6 channels. No difference, but S1..S4 are good for quad motors, because they are located in the corners, and S5 or S6 is perfect for camera-tilt servo.
  3. OSD has software I2C.

The question is: do we need to create separate targets for all of these boards?

@alexeystn
Copy link
Contributor Author

Another option is to create MATEKF405_SERVOS5 or MATEKF405_SERVOS1 target.
I don't know if producing so many targets for each particular case is a good practice. But I can't see any other way to satisfy both quad and tri-copter users.

@stronnag
Copy link
Collaborator

This is not a particularly helpful target name, as it may confuse tricopter users with a MATEKF405-STD board. Perhaps MATEKF405FW would be an alternative?

@alexeystn
Copy link
Contributor Author

I can explain, It's not for fixedwing, it's for quadcopter users like me, who need S1..S4 for motors and S5 or S6 for camera-tilt servo.

@stronnag
Copy link
Collaborator

OK, but it's still confusing to name it for a particular FC when it's a servo configuration setting across multiple FCs (F405, F405CTR, F405STD).

@stronnag
Copy link
Collaborator

And however the variant is named, the Boards documentation file will need to be updated, to avoid further user confusion.

@alexeystn
Copy link
Contributor Author

Ok, I agree. Thank you for reminding me of documentation.
I tried to find a solution, where servo can be easily remapped from S1 to S6 in configurator, depending on aircraft type (tri/quad). But it requires serious changes in code.
So I believe, the easiest solution is MATEKF405_SERVOS6 target. What do you think?

@stronnag
Copy link
Collaborator

stronnag commented Mar 26, 2018

We have a winner! In fact, I think your solution is the correct one, and the initial setup was a mistake (with the benefit of hindsight, of course).

In a perfect world, we would rename the original target to MATEKF405_LEGACY and call your solution MATEKF405, but that might just be too confusing (even if it's my preferred outcome).

@digitalentity
Copy link
Member

Let's create a SERVOS6 target and see some usage statistics. Then we could make a decision renaming them

@stronnag stronnag merged commit 6a3ea09 into iNavFlight:development Apr 4, 2018
@stronnag
Copy link
Collaborator

stronnag commented Apr 4, 2018

merging per @digitalentity's advice

@stronnag stronnag mentioned this pull request Apr 7, 2018
2 tasks
@markandkymward
Copy link

Thank you for your work @alexeystn. I believe that this is exactly what I am looking for. I've posted a comment on RCGROUPS that explains some problems I'm having. Here is the text -

Subject flight controller with S6 pad connected to tilt servo, running development (@alexeystn ) MKF4 firmware dtd Apr 6. SERVO_TILT feature is active. In INAV servo tab I can successfully attach the servo0 to a flight control output but am unable to get a servo mix that will add stabilized pitch. Also, changing rates to negative does not appear to change servo direction.
Here's the dump:

version

INAV/MATEKF405_SERVOS6 1.9.1 Apr 6 2018 / 10:23:25 (7332ceb)

resources

mixer

mixer QUADX

mmix reset

servo mix

smix reset

smix 0 0 1 100 0

servo

servo 0 1000 2000 1500 -124 1
servo 1 1000 2000 1500 100 -1
servo 2 1000 2000 1500 100 -1
servo 3 1000 2000 1500 100 -1
servo 4 1000 2000 1500 100 -1
servo 5 1000 2000 1500 100 -1
servo 6 1000 2000 1500 100 -1
servo 7 1000 2000 1500 100 -1

feature

feature -RX_PPM
feature -VBAT
feature -TX_PROF_SEL
feature -MOTOR_STOP
feature -SERVO_TILT
feature -SOFTSERIAL
feature -GPS
feature -TELEMETRY
feature -CURRENT_METER
feature -3D
feature -RX_PARALLEL_PWM
feature -RX_MSP
feature -RSSI_ADC
feature -LED_STRIP
feature -DASHBOARD
feature -BLACKBOX
feature -CHANNEL_FORWARDING
feature -TRANSPONDER
feature -AIRMODE
feature -SUPEREXPO
feature -VTX
feature -RX_SPI
feature -PWM_SERVO_DRIVER
feature -PWM_OUTPUT_ENABLE
feature -OSD
feature -FW_LAUNCH
feature -TRACE
feature VBAT
feature TX_PROF_SEL
feature SERVO_TILT
feature GPS
feature TELEMETRY
feature CURRENT_METER
feature PWM_OUTPUT_ENABLE
feature OSD

beeper

beeper RUNTIME_CALIBRATION
beeper HW_FAILURE
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 ACTION_SUCCESS
beeper ACTION_FAIL
beeper READY_BEEP
beeper MULTI_BEEPS
beeper DISARM_REPEAT
beeper ARMED
beeper SYSTEM_INIT
beeper ON_USB
beeper LAUNCH_MODE
beeper CAM_CONNECTION_OPEN
beeper CAM_CONNECTION_CLOSED

map

map AETR

name

name -

serial

serial 20 1 115200 38400 0 115200
serial 0 64 115200 38400 0 115200
serial 1 0 115200 38400 0 115200
serial 2 1 115200 38400 0 115200
serial 3 2 115200 38400 0 115200
serial 4 0 115200 38400 0 115200

led

led 0 0,0::C:0
led 1 0,0::C:0
led 2 0,0::C:0
led 3 0,0::C:0
led 4 0,0::C:0
led 5 0,0::C:0
led 6 0,0::C:0
led 7 0,0::C:0
led 8 0,0::C:0
led 9 0,0::C:0
led 10 0,0::C:0
led 11 0,0::C:0
led 12 0,0::C:0
led 13 0,0::C:0
led 14 0,0::C:0
led 15 0,0::C:0
led 16 0,0::C:0
led 17 0,0::C:0
led 18 0,0::C:0
led 19 0,0::C:0
led 20 0,0::C:0
led 21 0,0::C:0
led 22 0,0::C:0
led 23 0,0::C:0
led 24 0,0::C:0
led 25 0,0::C:0
led 26 0,0::C:0
led 27 0,0::C:0
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

aux

aux 0 0 0 1775 2100
aux 1 5 1 1100 1450
aux 2 6 1 1100 1450
aux 3 3 1 1100 1450
aux 4 0 0 900 900
aux 5 0 0 900 900
aux 6 0 0 900 900
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

master

set looptime = 1000
set gyro_sync = OFF
set align_gyro = DEFAULT
set gyro_hardware_lpf = 42HZ
set gyro_lpf_hz = 60
set moron_threshold = 32
set gyro_notch1_hz = 0
set gyro_notch1_cutoff = 1
set gyro_notch2_hz = 0
set gyro_notch2_cutoff = 1
set vbat_adc_channel = 1
set rssi_adc_channel = 3
set current_adc_channel = 2
set airspeed_adc_channel = 0
set acc_notch_hz = 0
set acc_notch_cutoff = 1
set align_acc = DEFAULT
set acc_hardware = MPU6000
set acc_lpf_hz = 15
set acczero_x = 163
set acczero_y = -25
set acczero_z = -453
set accgain_x = 4095
set accgain_y = 4112
set accgain_z = 4023
set rangefinder_hardware = NONE
set rangefinder_median_filter = OFF
set align_mag = CW270FLIP
set mag_hardware = HMC5883
set mag_declination = 0
set magzero_x = 80
set magzero_y = -20
set magzero_z = 121
set mag_calibration_time = 30
set align_mag_roll = 0
set align_mag_pitch = 0
set align_mag_yaw = 0
set baro_hardware = BMP280
set baro_median_filter = ON
set pitot_hardware = NONE
set pitot_use_median_filter = ON
set pitot_noise_lpf = 0.600
set pitot_scale = 1.000
set receiver_type = SERIAL
set mid_rc = 1500
set min_check = 1100
set max_check = 1900
set rssi_channel = 7
set rssi_scale = 100
set rssi_invert = OFF
set rc_smoothing = ON
set serialrx_provider = CRSF
set serialrx_inverted = OFF
set rx_spi_rf_channel_count = 0
set spektrum_sat_bind = 0
set rx_min_usec = 885
set rx_max_usec = 2115
set serialrx_halfduplex = OFF
set blackbox_rate_num = 1
set blackbox_rate_denom = 1
set blackbox_device = SDCARD
set sdcard_detect_inverted = OFF
set min_throttle = 1150
set max_throttle = 1850
set min_command = 1000
set motor_pwm_rate = 2000
set motor_pwm_protocol = MULTISHOT
set failsafe_delay = 5
set failsafe_recovery_delay = 5
set failsafe_off_delay = 200
set failsafe_throttle = 1000
set failsafe_throttle_low_delay = 100
set failsafe_procedure = NONE
set failsafe_stick_threshold = 50
set failsafe_fw_roll_angle = -200
set failsafe_fw_pitch_angle = 100
set failsafe_fw_yaw_rate = -45
set failsafe_min_distance = 0
set failsafe_min_distance_procedure = DROP
set align_board_roll = 0
set align_board_pitch = 0
set align_board_yaw = 0
set gimbal_mode = NORMAL
set vbat_scale = 1130
set vbat_max_cell_voltage = 424
set vbat_min_cell_voltage = 330
set vbat_warning_cell_voltage = 350
set battery_capacity = 0
set battery_capacity_warning = 0
set battery_capacity_critical = 0
set battery_capacity_unit = MAH
set current_meter_scale = 150
set current_meter_offset = 0
set current_meter_type = ADC
set yaw_motor_direction = 1
set yaw_jump_prevention_limit = 200
set 3d_deadband_low = 1406
set 3d_deadband_high = 1514
set 3d_neutral = 1460
set servo_center_pulse = 1500
set servo_pwm_rate = 50
set servo_lpf_hz = 20
set flaperon_throw_offset = 200
set tri_unarmed_servo = ON
set reboot_character = 82
set imu_dcm_kp = 2500
set imu_dcm_ki = 50
set imu_dcm_kp_mag = 10000
set imu_dcm_ki_mag = 0
set small_angle = 25
set fixed_wing_auto_arm = OFF
set disarm_kill_switch = ON
set auto_disarm_delay = 5
set gps_provider = UBLOX7
set gps_sbas_mode = AUTO
set gps_dyn_model = AIR_1G
set gps_auto_config = ON
set gps_auto_baud = ON
set gps_ublox_use_galileo = OFF
set gps_min_sats = 6
set deadband = 5
set yaw_deadband = 5
set pos_hold_deadband = 20
set alt_hold_deadband = 50
set 3d_deadband_throttle = 50
set fw_autotune_overshoot_time = 100
set fw_autotune_undershoot_time = 200
set fw_autotune_threshold = 50
set fw_autotune_ff_to_p_gain = 10
set fw_autotune_ff_to_i_tc = 600
set inav_auto_mag_decl = ON
set inav_gravity_cal_tolerance = 5
set inav_use_gps_velned = ON
set inav_reset_altitude = FIRST_ARM
set inav_max_surface_altitude = 200
set inav_w_z_surface_p = 3.500
set inav_w_z_surface_v = 6.100
set inav_w_z_baro_p = 0.350
set inav_w_z_gps_p = 0.200
set inav_w_z_gps_v = 0.500
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 = OFF
set nav_use_midthr_for_althold = OFF
set nav_extra_arming_safety = OFF
set nav_user_control_mode = ATTI
set nav_position_timeout = 5
set nav_wp_radius = 100
set nav_wp_safe_distance = 10000
set nav_auto_speed = 300
set nav_auto_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_climb_first = ON
set nav_rth_climb_ignore_emerg = OFF
set nav_rth_tail_first = OFF
set nav_rth_allow_landing = ALWAYS
set nav_rth_alt_mode = MAX
set nav_rth_abort_threshold = 50000
set nav_rth_altitude = 1000
set nav_mc_bank_angle = 30
set nav_mc_hover_thr = 1500
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_loiter_radius = 5000
set nav_fw_land_dive_angle = 2
set nav_fw_launch_velocity = 300
set nav_fw_launch_accel = 1863
set nav_fw_launch_max_angle = 45
set nav_fw_launch_detect_time = 40
set nav_fw_launch_thr = 1700
set nav_fw_launch_idle_thr = 1000
set nav_fw_launch_motor_delay = 500
set nav_fw_launch_spinup_time = 100
set nav_fw_launch_min_time = 0
set nav_fw_launch_timeout = 5000
set nav_fw_launch_max_altitude = 0
set nav_fw_launch_climb_angle = 18
set telemetry_switch = OFF
set telemetry_inversion = OFF
set frsky_default_latitude = 0.000
set frsky_default_longitude = 0.000
set frsky_coordinates_format = 0
set frsky_unit = METRIC
set frsky_vfas_precision = 0
set report_cell_voltage = OFF
set hott_alarm_sound_interval = 5
set smartport_uart_unidir = OFF
set smartport_fuel_unit = MAH
set ibus_telemetry_type = 0
set ltm_update_rate = NORMAL
set telemetry_halfduplex = ON
set ledstrip_visual_beeper = OFF
set osd_video_system = 0
set osd_row_shiftdown = 0
set osd_units = IMPERIAL
set osd_stats_energy_unit = MAH
set osd_rssi_alarm = 20
set osd_time_alarm = 10
set osd_alt_alarm = 100
set osd_artificial_horizon_reverse_roll = OFF
set osd_crosshairs_style = DEFAULT
set osd_left_sidebar_scroll = NONE
set osd_right_sidebar_scroll = NONE
set osd_sidebar_scroll_arrows = OFF
set osd_main_voltage_pos = 2060
set osd_main_voltage_decimals = 1
set osd_rssi_pos = 2073
set osd_flytimer_pos = 311
set osd_ontime_pos = 279
set osd_flymode_pos = 2412
set osd_throttle_pos = 2113
set osd_vtx_channel_pos = 200
set osd_crosshairs_pos = 0
set osd_artificial_horizon_pos = 2248
set osd_current_draw_pos = 2145
set osd_mah_drawn_pos = 2177
set osd_wh_drawn_pos = 161
set osd_bat_remaining_capacity_pos = 193
set osd_bat_remaining_percent_pos = 2065
set osd_craft_name_pos = 84
set osd_gps_speed_pos = 2264
set osd_gps_sats_pos = 2400
set osd_gps_lon_pos = 402
set osd_gps_lat_pos = 384
set osd_home_dir_pos = 366
set osd_home_dist_pos = 33
set osd_altitude_pos = 2049
set osd_vario_pos = 183
set osd_vario_num_pos = 248
set osd_pid_roll_pos = 322
set osd_pid_pitch_pos = 354
set osd_pid_yaw_pos = 386
set osd_power_pos = 47
set osd_air_speed_pos = 163
set osd_ontime_flytime_pos = 2391
set osd_rtc_time_pos = 2423
set osd_messages_pos = 2433
set osd_gps_hdop_pos = 320
set osd_main_cell_voltage_pos = 2092
set osd_throttle_auto_thr_pos = 70
set osd_heading_graph_pos = 82
set osd_efficiency_mah_pos = 161
set osd_efficiency_wh_pos = 161
set i2c_speed = 400KHZ
set debug_mode = NONE
set acc_task_frequency = 500
set attitude_task_frequency = 250
set async_mode = NONE
set throttle_tilt_comp_str = 0
set input_filtering_mode = OFF
set mode_range_logic_operator = OR
set stats = OFF
set stats_total_time = 0
set stats_total_dist = 0
set tz_offset = -240
set display_force_sw_blink = OFF

profile

profile 1

set mc_p_pitch = 72
set mc_i_pitch = 20
set mc_d_pitch = 31
set mc_p_roll = 72
set mc_i_roll = 20
set mc_d_roll = 31
set mc_p_yaw = 30
set mc_i_yaw = 45
set mc_d_yaw = 0
set mc_p_level = 20
set mc_i_level = 15
set mc_d_level = 75
set fw_p_pitch = 5
set fw_i_pitch = 7
set fw_ff_pitch = 50
set fw_p_roll = 5
set fw_i_roll = 7
set fw_ff_roll = 50
set fw_p_yaw = 6
set fw_i_yaw = 10
set fw_ff_yaw = 60
set fw_p_level = 20
set fw_i_level = 5
set fw_d_level = 75
set max_angle_inclination_rll = 300
set max_angle_inclination_pit = 300
set dterm_lpf_hz = 40
set yaw_lpf_hz = 30
set dterm_setpoint_weight = 0.000
set fw_iterm_throw_limit = 165
set fw_reference_airspeed = 1000.000
set fw_turn_assist_yaw_gain = 1.000
set dterm_notch_hz = 0
set dterm_notch_cutoff = 1
set pidsum_limit = 500
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
set heading_hold_rate_limit = 90
set nav_mc_pos_z_p = 50
set nav_mc_pos_z_i = 0
set nav_mc_pos_z_d = 0
set nav_mc_vel_z_p = 100
set nav_mc_vel_z_i = 50
set nav_mc_vel_z_d = 10
set nav_mc_pos_xy_p = 20
set nav_mc_pos_xy_i = 10
set nav_mc_pos_xy_d = 10
set nav_mc_vel_xy_p = 40
set nav_mc_vel_xy_i = 15
set nav_mc_vel_xy_d = 50
set nav_mc_heading_p = 60
set nav_fw_pos_z_p = 50
set nav_fw_pos_z_i = 0
set nav_fw_pos_z_d = 0
set nav_fw_pos_xy_p = 75
set nav_fw_pos_xy_i = 5
set nav_fw_pos_xy_d = 8
set nav_fw_heading_p = 60
set thr_mid = 50
set thr_expo = 0
set tpa_rate = 0
set tpa_breakpoint = 1500
set fw_tpa_time_constant = 0
set rc_expo = 70
set rc_yaw_expo = 20
set roll_rate = 20
set pitch_rate = 20
set yaw_rate = 20
set manual_rc_expo = 70
set manual_rc_yaw_expo = 20
set manual_roll_rate = 100
set manual_pitch_rate = 100
set manual_yaw_rate = 100

@markandkymward
Copy link

My bad. I neglected to enable CAMSTAB. This works great for pitch stabilization - even with a small 9g servo. thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants