文章目录
前言
36.1 RPM库如何工作(TYPE = AUXPIN)
36.2 霍尔效应传感器
36.3 电调遥测 - 电机平均转速
36.4 电气换向传感器
36.5 光学传感器
36.6 谐波陷波中心频率
前言
ArduPilot 支持使用众多类型的转速传感器。它们通常用于传统的直升机,测量主旋翼速度和电机/发动机转速。对于那些希望使用直升机闭环油门调节器功能的人来说,转速传感器是必须的。此外,采用二冲程和四冲程内燃机(ICE)的飞行器使用转速传感器进行点火计时。同样的转速传感器可以用来记录 ArduPilot 中的发动机转速。
可以在 ArduPilot 中使用的常见的转速传感器类型:
- Hall effect
- ESC Telemetry
- Electrical commutation
- Optical
此外,一个报告动态谐波陷波滤波器中心频率的伪转速传感器也是一个选项。
任何输出电压的阶跃变化作为 RPM 函数的 RPM 传感器都可以与 ArduPilot 一起使用。简要解释一下 RPM 库是如何工作的。接下来是如何设置不同类型的 RPM 传感器的说明。最多可以使用两个 RPM 传感器。
36.1 RPM库如何工作(TYPE = AUXPIN)
ArduPilot 中的 RPM 库监控指定信号引脚的电压。下面的图片显示了一个典型的转速传感器的输出电压:
可以看出,电压在 0V 和 5V 之间震荡。电压下降要么是由磁铁通过霍尔效应传感器引起的,要么是不同类型的传感器(如光学)的输出。当检测到一个"下降沿"时,时间被储存起来。当电压再次下降时,可以计算出下降沿之间的时间差。电压下降之间的时间与转速成正比。将下降沿之间的时间和转速联系起来的比例值取决于所使用的设置和设备。在本指南的后面将给出具体设备的比例参数建议。
在这个例子中,输出是来自一个电气换向传感器,连接到一个 4极 的电机。转速可以按以下方式计算:
其中 dt 是下降边缘之间的时间(单位:s),S 是比例系数。在这个例子中,4 个磁极意味着每转有 4 个波段。因此,缩放系数将是 0.25,得出的转速将是 5282。这是一个关于 ArduPilot 如何计算转速的有点简单的观点,但它说明了关键的基本概念。
36.2 霍尔效应传感器
硬件设置
也许是最常用的,霍尔效应传感器在有足够强磁场的情况下会改变其输出电压。一个磁铁需要固定在要测量的旋转部件上。对于直升机来说,这需要在自动浮动尾部驱动轮上开一个孔或凹槽,然后将磁铁粘在那里(如下图)。对于 ICE,磁铁将被安装在输出轴上。
磁铁的极性很重要。只有一极才能产生所需的电压变化。为了确保磁铁被贴在正确的方向上,可以使用示波器或这里找到的 Arduino 草图(Arduino sketch found here)。如果使用示波器,本指南假定你有足够的知识来设置这个测试。如果使用所提供链接中的 Arduino 草图方法,在草图的开头有一套全面的说明注释。在编写和测试草图时,使用了 Arduino Uno,建议使用它。
!Note
大多数用于无线电控制飞行器的霍尔效应传感器将需要一些额外的修改。通常,它们需要在 Vcc 和信号线之间增加一个额外的上拉电阻。在某些情况下,它们的 Vcc、gnd 和信号线与电线的颜色编码不一致。因此,建议使用所提供的 Arduino 草图和面包板进行实验,以确定传感器的引脚方向。
为了获得可靠的转速信号,霍尔效应拾音器应该安装在离磁铁很近的地方。下面的图片显示了一个安装在直升机上的例子。
然后应将这三根线插到自动驾驶仪上。这通常使用一个标准的伺服插头。接地到 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 引脚。写下该参数并重新启动自动驾驶仪。
!Note
在 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 文件中找到引脚号码。这些可以在这里(here)找到。在你的板子的文件中,你需要找到 GPIO(*) 的定义所在。该引脚必须有一个指定的定时器。通常情况下,这些都是 PWM 伺服/电机输出,被指定为 GPIO 而不是 PWM 输出。参见 GPIOs,了解更多信息。
例如,如果我们将 AUX 端口 5 设置为 GPIO,其 GPIO 编号与引脚 54 相对应,54 必须被输入到 RPM2_PIN 参数中,用于转速传感器。
参数 RPM2SCALING 将与使用的磁铁数量相对应。大多数情况下只使用一块磁铁,该参数被设置为1。有些装置使用 2 块磁铁,相位相差 180 度。在这种情况下,该参数应设置为 0.5。
最初,建议将参数 RPM2_MIN、RPM2_MAX 和 RPM2_MIN_QUAL 保留为默认值。如果一个 RPM 信号超过了这些限制中的任何一个,那么在地面站和日志中报告的数值就是零。因此,只有在你确认你的转速传感器按预期工作后,才可以调整这些值,否则,如果没有任何报告,会使调试更加困难。
!Note
如果使用两个速度传感器,最小、最大和质量参数对两个速度传感器都有效。在这种情况下,请确保这些值被设置为包括两个传感器的速度范围。
最后,为了测试一切是否正常,你可以在任务规划器的快速选项卡或实时调整窗口中使用 rpm1/rpm2 的实时反馈。另外,也可以在日志中查看转速历史。
36.3 电调遥测 - 电机平均转速
转速库也可以用来设置一个"转速传感器",计算并记录飞行器上由 BLHeli_32 或 BLHeli_S 电调控制的选定电机的平均转速。首先需要设置电调遥测。请看 BLHeli 遥测(BLHeli Telemetry),了解如何做。一旦完成,将 RPMx_TYPE 设置为 5,并将参数写入 ArduPilot。然后刷新/获取参数。你会发现一些额外的参数现在对该实例是可用的。找到并设置 RPMx_ESC_MASK 来添加你想包括在平均值中的 ESC 通道。例如,对于第二个 RPM 实例:
RPM2_ESC_MASK 是一个比特掩码,每个比特对应一个通道。如果你想知道电机 1 到 4 的平均转速,你可以设置 RPM2_ESC_MASK = 1 + 2 + 4 + 8 = 15。
36.4 电气换向传感器
电动换向转速传感器可以使用像 Hobbywing 无刷转速传感器这样的东西进行追溯性添加。一些电调,如 Castle Creations Edge 系列,有一个辅助输出,可以被配置为每次换向时输出一个脉冲。
为了澄清起见,这与可通过串行遥测与电调传递的转速不一样。关于如何用有能力的电调设置转速报告的信息,见电调遥测(ESC Telemetry)。
电气换向转速传感器的设置与霍尔效应传感器基本相同,因此上述步骤也适用。唯一不同的是要在 RP2_SCALING 参数中输入的比例值。现在,比例值是电机中极数的函数,应该是极数的倒数。例如,一个 4 极的电机需要一个 0.25 的比例值。
36.5 光学传感器
同样,光学传感器的设置与霍尔效应传感器基本相同。唯一的区别是缩放值。RPM2_SCALING 应该被设置为在一次旋转中通过传感器的反射性障碍物数量的倒数。
36.6 谐波陷波中心频率
如果 RPMx_TYPE = 4,那么报告的是谐波陷波的中心频率。关于如何获得这个值,请看用动态谐波陷波滤波器管理陀螺仪噪声(Managing Gyro Noise with the Dynamic Harmonic Notch Filters)。