燃油流量和液位传感器

在固件 4.0 及更高版本中,ArduPilot 除电池监控器外,还能使用燃油流量和液位传感器。支持脉冲输出燃油流量传感器、PWM 输出燃油液位传感器和模拟输出燃油液位传感器。正如模拟电池监控器可提供电流测量值,并由(飞行)控制器计算容量状态一样,这些传感器可提供燃料使用或液位状态测量值,从而为液体燃料系统提供相同的报告和监控功能。

燃油流量传感器

燃油流量传感器可为每个单位的燃油消耗提供一个脉冲,例如 如下图所示,它可以像 ArduPilot 中的电池一样使用,具有监控、显示、故障保护等功能。

../_images/fuelflow-sensor.jpg

图片来源 生物技术

消耗的安培数和毫安时的显示/记录/限制现在实际上是消耗的升/小时和毫升。电压将始终报告为 1.0V。

连接(飞行)控制器

上的任何 GPIO 引脚 (飞行)控制器 可用于连接传感器的输出端。如果是集电极开路输出,则需要一个 10kOhm 的外部电阻将电压上拉至 3.3V。对于 Pixhawk 式(飞行)控制器,可以使用任何 AUX 引脚。对于大多数其他(飞行)控制器,可以使用上 PWM 输出。无论是哪种情况,都必须通过设置 BRD_PWM_COUNT 低于可用于 PWM 的输出端总数。

备注

在固件 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 远程设备的分配。

例如,如果电路板正常提供 6 个输出,则设置 BRD_PWM_COUNT 改为 5 将使 PWM 输出 6 可用作 GPIO。将该输出用作 GPIO 时,需要从其 hwdef.dat 文件中确定分配给该输出的引脚编号,该文件位于 这里 如下图所示,其中 PWM6 用作 GPIO 引脚 55:

../_images/gpio.png

备注

这些传感器有时会因振动而提供错误数据。这会导致(飞行)控制器认为通过传感器的燃油量高于油箱消耗的燃油量。

油位传感器

PWM 油位传感器

油位传感器可输出与油箱中剩余燃油量成正比的 PWM 信号,例如由以下公司提供的传感器 Foxtech 支持下图所示的

../_images/fuel level-sensor.jpg

毫安时消耗量的显示/记录/限制现在实际上是毫升消耗量,1100 毫秒 PWM 输入表示空,1900 毫秒 PWM 输入表示满。电压将始终报告为 1.0V。电流未定义。

任何支持 GPIO 的引脚都可用作传感器的 PWM 输入。

参数设置

与模拟电池电流和容量监测一样,主要参数包括

  • BATT_MONITOR 设置传感器类型。在本例中,11 型用于脉冲燃油流量传感器,12 型用于 PWM 燃油液位传感器。

  • BATT_CURR_PIN 这是连接传感器的 GPIO 引脚。

  • batt_amp_pervlt 对于燃油流量传感器,单位为毫升/脉冲。

  • 电池电量 这是以毫升为单位的容量。

  • BATT_LOW_MAH 单位是毫升,而不是毫安时。

  • BATT_CRT_MAH 单位是毫升,而不是毫安时。

模拟油位传感器

ArduPilot 4.3 及更高版本支持输出电压的油位传感器。这类传感器有时也被称为燃油发送器,许多制造商都有提供。与 PWM 型传感器一样,油箱中的油量估计值显示为 mAh,而实际上是毫升。

任何具有模拟功能的引脚都可用作传感器的输入。请仔细考虑所选 ADC 引脚能够测量和承受的最大电压。可能需要添加一个外部分压器。为了帮助校准这些类型的传感器,ArduPilot 在模拟引脚上看到的电压会显示在电池电压字段中。

低通滤波器功能可减少油箱晃动对测量油位的影响。电池电流区域显示通过低通滤波器的电压。低通滤波器的建议范围为 0.2 Hz 至 0.5 Hz。将滤波器值设置为-1 将使其失效,并使用模拟引脚的未滤波电压。即使禁用滤波器,也会记录截止频率为 0.3 Hz 的滤波电压值。

../_images/FuelLevelAnalogFilteredAndUnfiltered.png

备注

该功能假定油箱形状为线形,且油箱中的燃料分布均匀。它不会考虑非均匀形状的油箱或倾斜的油位。在设置故障安全值时应考虑到这一点。

参数设置

  • BATT_MONITOR 设置传感器类型。在这种情况下,模拟油位传感器使用类型 24。

  • 电池电量 这是以毫升为单位的容量。

  • batt_fl_vlt_min 这是油箱空时模拟引脚上的最小电压。

  • BATT_FL_V_MULT 这是一个使用模拟引脚上测得的最小和最大电压计算得出的乘数。计算公式为 1 / (Voltage_Full - Voltage_Empty)。

  • BATT_FL_FLTR 这是低通滤波器的频率,单位为赫兹。值为 -1 时将禁用滤波器,使用未经滤波的电压来确定油位。

  • BATT_FL_PIN 这是连接传感器的模拟引脚。

高级参数设置

油位通常是通过油位与传感器报告的模拟电压之间的线性关系来计算的。但是,某些传感器的输出与油位之间存在非线性关系。ArduPilot 通过更改以下参数的默认值(即线性拟合),可提供多达三阶多项式曲线拟合:

所示示例为第一个电池监测器 - BATT_FL_FF 一阶多项式拟合项 - BATT_FL_FS 二阶多项式拟合项 - BATT_FL_FT 三阶多项式拟合项 - BATT_FL_OFF 抵消条款

传感器的每个电压采样都会被修改为

传感器测量电压 = vm

修改后的电压 = (BATT_FL_FT * vm^3 + BATT_FL_FS * vm^2 + BATT_FL_FF * vm) + BATT_FL_OFF

这样就可以对非线性进行补偿。这些参数值应酌情从传感器制造商处获取。