转速测量

ArduPilot 支持使用多种类型的转速传感器。它们通常用于传统旋翼飞行器,以测量主旋翼速度和电机/发动机转速。对于希望使用旋翼飞行器可用的闭环节气门调速器功能的人来说,转速传感器是必须的。此外,采用二冲程和四冲程内燃机 (ICE) 的载具也使用转速传感器进行点火定时。相同的转速传感器可用于在 ArduPilot 中记录发动机转速。

可在 ArduPilot 中使用的常见转速传感器类型:

  • 霍尔效应

  • 电调遥测

  • 电气换向

  • 光学

此外,还可选配一个伪转速传感器,用于报告动态谐波带阻滤波器的中心频率。

任何可输出与转速相关的阶跃变化电压的转速传感器都可与 ArduPilot 配合使用。下面将简要说明 RPM 库的工作原理。随后说明了如何设置不同类型的转速传感器。最多可使用两个转速传感器。

RPM 库如何工作(TYPE = AUXPIN)

ArduPilot 中的 RPM 库监控指定信号引脚的电压。下图显示了转速传感器的典型输出电压:

../_images/Commutation_RPM_Sensor.png

可以看到,电压在 0V 和 5V 之间摆动。电压下降要么是磁铁通过霍尔效应传感器造成的,要么是不同类型传感器(如光学传感器)的输出。当检测到 "下降沿 "时,时间将被储存。当电压再次下降时,可以计算出下降沿之间的时间差。电压下降之间的时间与转速成正比。将下降沿之间的时间与转速相关联的比例值取决于所使用的设置和设备。本指南稍后将给出关于缩放参数的特定设备建议。

在本例中,输出来自连接到 4 极电机的换向电传感器。转速计算如下

../_images/RPM_Equation.png

其中,dt 是下降沿之间的时间(秒),S 是比例因子。在本例中,4 个极点意味着每转一圈将有 4 个波形周期。因此,缩放因子为 0.25,得出的转速为 5282。这只是 ArduPilot 计算转速的一个略显简单的视图,但却说明了关键的基本概念。

霍尔效应传感器

硬件设置

霍尔效应传感器可能是最常用的传感器,在足够强的磁场作用下,其输出电压会发生变化。磁铁需要固定在需要测量的旋转部件上。对于旋翼飞行器来说,这就需要在自动旋转尾翼驱动轮上开孔或凹槽,然后将磁铁粘贴到位(如下图所示)。对于 ICE,磁铁将安装在输出轴上。

../_images/Autorotation_Wheel_Magnet.jpg

磁铁的极性很重要。只有一个磁极会产生所需的电压变化。要确保磁铁的安装方向正确,可以使用示波器或 "磁性 "工具。 Arduino 草图可在此处找到 可以使用示波器。如果使用示波器,本指南假定您已具备足够的知识来设置此测试。如果使用所提供链接中的 Arduino 草图方法,草图开头注释了一套全面的说明。建议在编写和测试草图时使用 Arduino Uno。

备注

大多数用于无线电遥控载具的霍尔效应传感器都需要进行一些额外的改装。通常,它们需要在 Vcc 和信号线之间添加一个额外的上拉电阻。在某些情况下,它们的 Vcc、地线和信号线与导线的颜色编码不一致。因此,建议使用提供的 Arduino 草图和面包板进行试验,以确定传感器引脚的方向。

为获得可靠的转速信号,霍尔效应拾音器应安装在非常靠近磁铁的位置。下图是安装在旋翼飞行器上的示例。

../_images/Installed_Hall_Effect_Sensor.jpg

然后将这三根导线插入(飞行)控制器。这通常使用标准伺服插头。地线连接至 Gnd,Vcc 连接至 5V,信号线需要连接至 GPIO 引脚。在大多数小型电路板上,这将是伺服轨上的任何一个 PWM 引脚。在 Pixhawk 上,这必须是 AUX 端口之一。出于后面解释的原因,建议首先使用最高编号的引脚。例如,Pixhawk/Cube 上的 AUX 6 或 MatekF405-Wing 上的 PWM 9。

参数设置

首先需要对电路板进行配置,允许将 PWM 引脚设置为 GPIO。使用参数 BRD_PWM_COUNT .减少 PWM 计数可腾出一个引脚用于 GPIO。在非 Pixhawk 电路板上,PWM 计数将包括所有 PWM 输出。在 Pixhawk 电路板上,该参数仅影响 AUX 引脚。写入参数并重新启动(飞行)控制器。

备注

在固件 4.2 及更高版本中,将 PWM/SERVO/MOTOR 输出设置为 GPIO 功能的方法有所改变。而不是 BRD_PWM_COUNT 个人 SERVOx_FUNCTION 参数仅设置为"-1"。如果设置为 "0",则仍为 PWM 输出,未指定功能,并在电路板安全未激活时输出该输出的微调值。如果舵机功能被 "镜像 "到远程设备(如 DroneCAN 或 KDECAN ESC),那么要将自动驾驶板的相应输出引脚改为 GPIO,但允许 SERVOx_FUNCTION 仍分配给远程设备,则 servo_gpio_mask 参数可用于将电路板引脚指定为 GPIO,而不影响 SERVOx_FUNCTION 远程设备的分配。

现在必须启用 RPM 库。在下面的章节中,我们将使用 RPM 传感器的第二个实例来进行参数示例。

设置参数 RPM2_TYPE 为 1,用于基于 GPIO 引脚的传感器。将参数写入 ArduPilot,然后刷新/获取参数。现在您会发现 RPM 实例(如 RPM2)有许多其他参数可供编辑,从而完成设置。

现在,需要告诉(飞行)控制器在哪个引脚上找到转速信号。为此,您需要在电路板的 hwdef.dat 文件中找到针脚编号。可以找到 这里.您需要在电路板文件中找到 GPIO(*) 定义的位置。该引脚必须分配一个定时器。通常,这些引脚是 PWM 伺服/电机输出,已被指定为 GPIO 而不是 PWM 输出。参见 GPIO了解更多信息。

例如,如果我们将 AUX 端口 5 设置为 GPIO,而其 GPIO 编号与引脚 54 相对应,则必须将 54 输入参数 RPM2_PIN 用于转速传感器。

参数 RPM2SCALING 将与使用的磁铁数量相对应。大多数情况下只使用一块磁铁,该参数设置为 1。在这种情况下,该参数应设置为 0.5。

起初,建议保留参数 RPM2_MIN, RPM2_MAXRPM2_MIN_QUAL 作为默认值。如果转速信号超过这些限制中的任何一个,则地面站和日志中报告的值为零。因此,只有在确认转速传感器工作符合预期后,才能调整这些值,否则,如果没有任何报告,会增加调试难度。

备注

如果使用两个转速传感器,最小、最大和质量参数对两个转速传感器都有效。在这种情况下,请务必将这些值设置为包含两个传感器的转速范围。

最后,要测试一切是否正常,您可以使用Mission Planner地面站中快速选项卡或实时调整窗口中的 rpm1/rpm2 实时馈送。此外,还可以在日志中查看转速历史记录。

电调遥测 - 电机平均转速

转速库还可用于设置一个 "转速传感器",用于计算和记录载具上由 BLHeli_32 或 BLHeli_S 电调控制的选定电机的平均转速。首先需要设置电调遥测。请参见 BLHeli 遥测技术 了解详细操作方法。完成设置后 RPMx_TYPE 至 5,并将参数写入 ArduPilot。然后刷新/获取参数。您会发现该实例现在又多了一些参数。查找并设置 RPMx_ESC_MASK 来添加您希望包含在平均值中的电调通道。例如第二个转速实例:

RPM2_ESC_MASK 是一个位掩码,每个位对应一个通道。如果您想要电机 1 至 4 的平均转速,可以设置 RPM2_ESC_MASK = 1 + 2 + 4 + 8 = 15.

电子换向传感器

可以使用类似 Hobbywing 无刷转速传感器这样的产品来添加电子换向转速传感器。某些电调(如 Castle Creations Edge 系列)具有辅助输出,可配置为每次换向输出一个脉冲。

需要说明的是,这与电调通过串行遥测传递的转速不同。有关如何使用有功能的电调设置转速报告的信息,请参阅 电调遥测.

电气换向转速传感器的设置与霍尔效应传感器大致相同,因此上述步骤也适用。唯一不同的是要在 RP2_SCALING 参数。缩放值是电机极数的函数,应为极数的倒数。例如,4 极电机的比例值为 0.25。

光学传感器

同样,光学传感器的设置与霍尔效应传感器大致相同。唯一不同的是刻度值。 RPM2_SCALING 的倒数。

谐波带阻滤波中心频率

如果 RPMx_TYPE = 4,则报告谐波带阻滤波的中心频率。参见 利用动态谐波带阻滤波器管理陀螺仪噪声 以了解如何获得该值。

已知可与 ArduPilot 协同工作的 Heli 磁传感器