APM固件中的“RC”和“SERVO”两类参数的区别

 在APM固件的全部参数列表中,有“RC7_OPTION”和“SERVO7_FUNCTION”这两种参数,两者功能看似非常类似,同时又跟RC6_MAX、SERVO6_MAX这种参数混在一起,让人眼花缭乱,分不清楚。今天,我们就用这篇文章给大家彻底讲清楚两者的关系。

  1. 大家用的遥控器品牌千差万别,每个遥控器上各个摇杆、拨动开关、旋钮等的行程是多少?是否反向?哪个摇杆是控制油门的?这些设置也千差万别,因此飞控需要知道你的遥控器各个通道的设置信息,于是产生了以“RC”为前缀的如下参数:
    • RCx_MAX:遥控器通道“x”的最大值,单位:us;
    • RCx_MIN:遥控器通道“x”的最小值,单位:us;
    • RCx_TRIM:遥控器通道“x”的中位值,单位:us;
    • RCx_DZ:遥控器通道“x”在中位值附近的“死区范围”,单位:us。即(RCx_TRIM – RCx_DZ)到(RCx_TRIM + RCx_DZ)范围的值都认为是中位值;
    • RCx_REVERSED:遥控器通道“x”的值是否进行反向。这个反向是在遥控器自身反向功能的基础上进一步进行的反向;
    • RCx_OPTION:遥控器通道“x”是用来控制什么功能的。注意,对飞控来说,遥控器的每一个通道都是“地位相同”的,你可以通过“RCx_OPTION”参数指定任意一个通道来控制“油门”、“俯仰”等,也就是说,哪怕你打算用一个开关控制油门,飞控都认。
  2. 飞控各个PWM输出针脚输出的PWM信号的行程是多少?各自是控制什么的(几号电调?哪个部位的舵机?云台的哪个轴?)?于是产生了以“SERVO”为前缀的如下参数:
    • SERVOx_MAX:通道“x”输出的PWM波的高脉冲宽度的最大值,单位:us;
    • SERVOx_MIN:通道“x”输出的PWM波的高脉冲宽度的最小值,单位:us;
    • SERVOx_TRIM:通道“x”输出的PWM波的高脉冲宽度的中位值,单位:us;
    • SERVOx_REVERSED:通道“x”输出的PWM波的高脉冲宽度值是否反向(最大值当最小值用);
    • SERVOx_FUNCTION:通道“x”输出的PWM波是用来控制什么的。同样,对于飞控来讲,各个输出通道也是“地位相同”的,你甚至可以将14个输出通道都设置成控制“1号电机”。

 下图可以更加直观地描述出这两类参数的关系:

 根据上图以及飞控代码可以明确如下几点:

  1. 飞控收到遥控器的信号后,根据“RC”类参数,将各个通道的值从“1100~1900”这种PWM值归一化为“-1.0~1.0”这种标准值,从而对于后面的飞控模式控制代码来讲,已经无需关注用户使用的是哪款遥控器,通道行程设置的是多少;
  2. 飞控“飞控模式控制”模块输出的也是归一化的通道控制值(范围:-1.0~1.0),然后最终输出前通过“SERVO”这类参数从“-1.0~1.0”这种值映射到“1100~1900”这种PWM值。

 综上所述:这两类参数一个是针对用户控制输入的,一个是针对执行机构控制输出的,中间夹了个“飞控控制算法”,因此​没有直接联系。


无人机调试,飞控硬件定制、固件修改,日志分析,请QQ联系:3500985284

京ICP备19049723号   |   京公网安备 11010502039327号