TriCopter tail servo servo_trim always reset

Hello

I follow the setup guide for a tri copter, with the last 4.0.3 release on omnibusF4.
I set SERVO3_FUNCTION = 39

It is written that :

  • SERVO7_TRIM: tail servo’s PWM value close to what is required to keep the tail from spinning.

But when I set a value to SERVO3_TRIM, it is always reset to SERVO3_MIN value at boot time.
The tri copter then spin around at take off before it stabilize… when it’s possible. Did I miss something ?

Thanks a lot !

1 Like

Can you post your full parameters, have you assigned motors 1, 2 and 4? Are you using dshot or oneshot?

Here is the param file.
I tried with standard PMW and oneshot125 with the right SERVO_BLH_MASK and same behavior.
tricopter 403.param (19.7 KB)

But since, I disabled SERVO_BLH_AUTO and now it’s perfectly working. SERVO_TRIM is not set at SERVO_MIN at boot time. I did not remember having read that SERVO_BLH_AUTO=1 could do that.

yeah, so its the servo output groups, all servo outputs in the same group must be of the same type. If some are set to with the BLHeli mask then all the ouputs in that group get treated like motors (with trim at min). So you can either use normal PWM for all or put the tail servo in the next group.

https://ardupilot.org/copter/docs/common-omnibusf4pro.html#dshot-capability

The groups are (1,2,6) and (3,4,5) so have motors on one and tail servo in the other.

hum thanks for that.
But this is still not clear, unless I’m wrong, in the param file I sent, all is normal PWM (MOT_PWM_TYPE=0).
Servo 1, 2 & 4 are motor and servo5 is tail servo and when I enable SERVO_BLH_AUTO, SERVO_TRIM is reset.

I will try with normal PWM and changing output : servo 1,2 & 6 for motor and 5 for tail servo.

With normal PWM is should all be fine, if you want to use DShot on the motors then you must abide by the pwm groups

I changed the motor output to respect the group order.
1,2 & 6 are now motor and 3 is servo tail.
When SERVO_BLH_AUTO=1, whatever is the motor output, SERVO_TRIM is reset to SERVO_MIN at boot time.
My esc are blheli but not blheli_32 and are not dshot compliant, don’t if it could be the reason why.
MOT_PWM_TYPE=0 and I tried with SERVO_BLH_OTYPE=0 and 2.
So unless I misunderstood something, tricopter is not flyable when SERVO_BLH_AUTO=1 with my setup/gear.

1 Like

There might be a bug in the auto output assigning, tricopter is a bit strange in that is uses a motor output function but it is really a servo. You could try without BLH_AUTO and use BLH_MASK to manually assign the outputs. You should be able to see what the outputs are assigned to in the messages tab.

Hi, I have the same problem in a tricopter. I’m using a Kakute F7, which (according to the wiki) has the following motor mappings:

  • PWM 1, 2 and 3 in group1
  • PWM 4 and 5 in group2
  • PWM 6 in group3

My tail servo is connected to motor 6, and the three main motors are connected to motor 2, motor 3 and motor 4. So as per the groupings, there should be no conflict. Still, no matter if I have BLH_AUTO enabled or disabled + BLH_MASK set to 14, on each reboot, the tail servo is reset to 1000, 1000, 2000 (which is really unfortunate).

Any advice?

PS:

You should be able to see what the outputs are assigned to in the messages tab.

RCOut: DS600:1-5 PWM:6

It will work if you set MOT_PWM_TYPE to 0 and control the output purely through SERVO_BLH_*