(16)燃油流量和液位传感器

news/2024/7/10 19:57:17 标签: 开源, 无人机, 外设硬件, Copter, ArduPilot

文章目录

        前言

16.1 燃油流量传感器

16.1.1 连接到自动驾驶仪

16.2 燃油液位传感器

16.2.1 PWM油位传感器

16.2.2 模拟油位传感器


前言

4.0 及以后的固件版本中,ArduPilot 提供了使用燃油流量液位传感器的能力,此外还有电池监控器。支持脉冲输出燃油流量传感器、PWM 输出燃油液位传感器和模拟输出燃油液位传感器。正如模拟电池监测器提供电流测量,并由自动驾驶仪计算容量状态一样,这些传感器提供燃料使用或液位状态测量,以实现液体燃料系统的相同报告和监测。


16.1 燃油流量传感器

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

图片来源:BIO-TECH

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

16.1.1 连接到自动驾驶仪

自动驾驶仪(autopilot)上的任何 GPIO 引脚都可以用来连接到传感器的输出。如果是集电极开路输出,则需要一个 10kOhm 的外部电阻上拉到 3.3V。对于 Pixhawk 风格的自动驾驶仪,任何 AUX 引脚都可以使用。对于大多数其他自动驾驶仪,可以使用上部的 PWM 输出。在这两种情况下,必须通过设置 BRD_PWM_COUNT 低于可用于 PWM 的输出总数,使其不再作为 PWM 输出使用。

Note

4.2 及以后的固件版本中,设置 PWM/SERVO/MOTOR 输出为 GPIO 功能的方法有所改变。不再使用 BRD_PWM_COUNT,而是将单个 SERVOx_FUNCTION 参数设置为"-1"。如果设置为"0",它仍然是一个 PWM 输出,没有被分配到一个功能,并且在电路板安全没有激活时输出该输出的微调值。如果伺服功能被"镜像"到远程设备上,如 DroneCANKDECAN ESC,那么为了将自动驾驶仪板的相应输出引脚改为 GPIO,但允许 SERVOx_FUNCTION 仍被分配给远程设备,可以使用 SERVO_GPIO_MASK 参数将板上的引脚分配为 GPIO,而不影响远程设备的 SERVOx_FUNCTION 的分配。

例如,如果板子通常提供 6 个输出,将 BRD_PWM_COUNT 设置为 5 将使 PWM 输出 6 可以作为 GPIO 使用。当作为 GPIO 使用时,分配给该输出的引脚号码需要从其 hwdef.dat 文件中确定,如下图所示(here),当作为 GPIO 使用时,PWM6 被分配为 GPIO 引脚 55

Note

这些传感器有时会因为振动而提供错误的数据。这将导致自动驾驶仪认为通过传感器的燃油量高于从油箱消耗的燃油量。

16.2 燃油液位传感器

16.2.1 PWM油位传感器

支持输出与油箱中剩余油量成比例的 PWM 信号的油位传感器,如下面所示的由福克斯(Foxtech)科技提供的传感器。

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

任何具有 GPIO 功能的引脚都可以作为传感器的 PWM 输入。

参数设置

与模拟电池电流和容量监测一样,关键参数是:

  • BATT_MONITOR这设置了传感器的类型。在这种情况下,11 型为脉冲燃油流量传感器,12 型为 PWM 燃油液位传感器;
  • BATT_CURR_PIN:这是连接传感器的 GPIO 引脚;
  • BATT_AMP_PERVLT:对于燃油流量传感器来说,这是以每脉冲毫升为单位设置的;
  • BATT_CAPACITY:这是以毫升为单位的容量;
  • BATT_LOW_MAH:这是以毫升而不是以毫安时为单位设置的;
  • BATT_CRT_MAH:这是以毫升而不是以毫安时为单位设置的。

16.2.2 模拟油位传感器

ArduPilot 4.3 及以后的版本支持输出电压的油位传感器。这些类型的传感器有时也被称为燃油发送器,并且从许多制造商那里广泛获得。就像 PWM 类型的传感器一样,油箱中估计的液体体积显示为毫安时,而现在实际上是毫升数。

任何具有模拟功能的引脚都可以作为传感器的输入。仔细考虑所选 ADC 引脚能够测量和容忍的最大电压。添加一个外部分压器可能是必要的。为了帮助校准这些类型的传感器,ArduPilot 在模拟引脚上看到的电压显示在电池电压区域。

有一个低通滤波器的功能,以减少油箱晃动对测量油位的影响。电池电流栏显示的是通过低通滤波器的电压。建议低通滤波器的范围在 0.2Hz0.5Hz 之间。将滤波器设置为 -1 的值将禁用它,并使用来自模拟引脚的未经过滤的电压。即使过滤器被禁用,过滤后的电压值也将以 0.3Hz 的截止频率被记录下来。

Note

该功能假设油箱形状为线性,油箱中的燃料分布均匀。它不会考虑到非均匀形状的油箱或倾斜的燃料水平。在设置失控保护值时,应考虑到这一点。

参数设置

  • BATT_MONITOR设置传感器的类型。在这种情况下,对模拟油位传感器使用 24 型;
  • BATT_CAPACITY:这是以毫升为单位的容量;
  • BATT_FL_VLT_MIN:这是油箱为空时在模拟引脚上看到的最小电压;
  • BATT_FL_V_MULT:这是用模拟引脚上测得的最小和最大电压计算的乘数。它的计算方法是1/(满电压-空电压);
  • BATT_FL_FLTR:这是低通滤波器的频率,单位是赫兹。数值为 -1 时,滤波器失效,未经过滤的电压被用来确定燃料水平;
  • BATT_FL_PIN:这是连接传感器的模拟引脚。

http://www.niftyadmin.cn/n/1006535.html

相关文章

Python L2: String、Class、Json

定义一个Python class class Node:def __init__(self):self.ip ""self.pods []self.count 0 Json 对象(instance) 转 dict 和字符串 n Node() n.count 1 n.ip "127.0.0.1" n.pods ["pod-x", "pod-y", "pod…

PHP --- 基础(01)

简单介绍 &#xff08;1&#xff09;PHP基本语法操作 <?php $iphone13 5880; // 变量首字母不能是数字&#xff0c;同时变量区分大小写 $iphone12 5000; // 变量名尽量有意义 $shen $iphone13 $iphone12 echo $shen; // echo是在php中常用的输出、显示功能的命令 ?&…

【ISO26262】汽车功能安全第3部分:概念阶段

GB/T34590《道路车辆 功能安全》分为以下部分: 需要文档的朋友,可以和我联系! tommi_wei@163.com GB/T34590的本部分规定了车辆在概念阶段的要求: ———相关项定义; ———安全生命周期启动; ———危害分析和风险评估;及 ———功能安全概念。 危害事件分类 对于每一个…

C/C++基础(二)

1 auto auto相当于 char *、double * 等等。 比如声明一个变量&#xff1a; std::vector<double> data{0.1,0.2,0.3} 通过auto关键字遍历data的所有元素 for(auto p:data) //注意此处是赋值不是引用&#xff0c;改变p不会改变data的数值 {std::cout<<p<<…

力扣 98. 验证二叉搜索树

题目来源&#xff1a;https://leetcode.cn/problems/validate-binary-search-tree/description/ C题解1&#xff1a;中序遍历&#xff0c;递归法。获取数组&#xff0c;如果是递增则返回true&#xff0c;否则返回false。 class Solution { public:void zhongxu(TreeNode* node…

问题解决系列:pillow 安装失败,提示: fatal error: Python.h: No such file or directory

问题原因 在安装 Pillow 库时遇到 fatal error: Python.h: No such file or directory 错误时&#xff0c;这通常是因为缺少 Python 的开发文件导致的。这些文件包括 Python.h 和其他一些头文件&#xff0c;这些文件通常包含在 Python 的开发包中。 解决方案 要解决此问题&a…

ModuleNotFoundError: No module named ‘tensorflow.contrib‘ 解决方案

问题描述 今天在执行以下代码时&#xff1a; from tensorflow.contrib.layers.python import layers as tf_layers 出现了以下错误&#xff1a; ModuleNotFoundError: No module named tensorflow.contrib 看网上说应当是使用tensorflow2.x运行tensorflow1.x的代码导致的。…

快速入门 TypeScript 基础

TypeScript是一种静态类型的编程语言&#xff0c;它是JavaScript的超集&#xff0c;为JavaScript添加了静态类型检查和一些新的语言特性。下面是对TypeScript的小结&#xff1a; TypeScript提供了静态类型检查&#xff0c;可以在编译时捕获类型错误&#xff0c;减少运行时错误…