PX4 board_adc模块理解

drivers下面包含很多传感器和一个adc文件
adc文件下有ads1115和board_adc
这就说明飞控是有自己的adc留给我们用的

#define PX4_ADC_INTERNAL_TEMP_SENSOR_CHANNEL 18
这里宏定义了一个通道 是18表示是温度传感器的通道

读取adc使用了多少个通道

	/* allocate the sample array */
	for (unsigned i = 0; i < ADC_TOTAL_CHANNELS; i++) {
		if (channels & (1 << i)) {
			_channel_count++;
		}
	}

比如一共是32通道 i遍历32 然后 1<<i表示生成第i位(0-31位)的数字和channel做与
如果那个通道是1 那就说明启用了 给_channel_count++

未完 先做点测试吧

<think>嗯,用户现在遇到了AP的PreArm错误,提示“Board (4.3v) out of range 4.3-5.8v”。首先,我需要弄清楚这个错误的具体原因。AP应该是指ArduPilot,PreArm检查是飞控在解锁前的自检程序。这里的电压问题显示板子的电压是4.3V,但允许范围是4.3到5.8V,所以看起来刚好在最低阈值。不过用户可能疑惑为什么刚好在临界值还会报错,或者可能存在其他问题。 首先,我应该检查这个电压指的是哪个部分的电压。通常飞控板的供电电压,可能来自BEC或者电源模块。错误提示中的Board电压可能是指飞控的主电源输入。根据ArduPilot的文档,PreArm检查会验证各个传感器的状态和电压是否在安全范围内。如果电压低于或高于设定范围,就会阻止解锁。 用户可能的情况是,他们的飞控板供电电压刚好在4.3V,触发了PreArm检查的警告。虽然4.3V是范围的下限,但可能系统检测到的是刚好等于下限,或者有测量误差导致稍微低于下限。需要确认电压测量的准确性。 接下来,可能的解决方法包括检查电源线路是否正常,比如BEC的输出是否稳定,是否有电压跌落的情况。或者电源模块是否老化,导致输出电压不足。此外,线路中的接触电阻也可能导致电压降低,尤其是在大电流情况下。用户可能需要用万用表实际测量飞控的供电电压,确认是否真的在4.3V,或者是否飞控的传感器读数有误。 另外,飞控的参数设置是否正确也很重要。比如,参数ARMING_CHECK是否包含了电压检查,或者是否有电压补偿参数需要调整。用户可能需要调整允许的电压范围,或者暂时禁用电压检查,但这并不推荐,因为存在安全隐患。 还可能存在硬件问题,比如电源模块损坏,或者飞控板的电压传感器故障。这时候可能需要更换电源模块或者飞控进行测试。 需要逐步引导用户检查这些问题,首先建议他们用万用表测量实际电压,确认是否与飞控报告的一致。如果不一致,可能需要校准电压传感器。如果实际电压确实低,就需要检查电源系统,比如BEC的输出是否足够,或者电池电压是否过低导致BEC无法维持5V输出。 另外,用户可能是在使用某些特定设备时遇到这个问题,比如某些摄像头或其他外设导致电源负载过大,从而拉低电压。这时候需要检查外设的功耗,或者增加电容缓冲。 最后,需要提醒用户不要忽视这个警告,因为电压不足可能导致飞控或其他设备工作不稳定,引发飞行事故。安全措施是非常重要的,必须确保供电系统正常后再进行解锁飞行。</think>--- ### **AP: PreArm: Board (4.3V) out of range 4.3-5.8V 问题解析** 此错误是 **ArduPilot/PX4 飞控**在解锁前(PreArm)的硬件自检中,检测到飞控主板的供电电压超出安全范围(4.3V-5.8V)。以下从**原因分析**到**解决方案**逐步说明: --- ### **1. 问题原因** - **核心问题**:飞控板(Flight Controller)的输入电压为 **4.3V**,但飞控要求电压在 **4.3V~5.8V** 之间才能解锁。 - **看似矛盾**:为何 4.3V(等于下限)仍触发警告? - 实际可能是传感器测量误差(如电压波动导致瞬时值略低于 4.3V)。 - 部分飞控固件版本对阈值判断存在严格边界(如 `>=4.3V` 可能被误判为 `<4.3V`)。 - **常见诱因**: 1. **电源模块(BEC)故障**:电源模块输出电压不足或波动。 2. **线路接触不良**:电源线接头氧化、虚焊导致压降。 3. **电池电量过低**:电池电压不足时,BEC 输出的 5V 可能衰减。 4. **飞控电压传感器误差**:需校准 ADC(模数转换器)。 --- ### **2. 诊断步骤** #### **步骤 1:测量实际电压** - 使用万用表直接测量飞控的 **5V 输入引脚**(如 `5V` 和 `GND` 端子): - 若实测电压 **≥4.3V**,则可能是飞控传感器读数偏差。 - 若实测电压 **<4.3V**,需检查电源系统。 #### **步骤 2:检查电源系统** - **电源模块(BEC)**: - BEC 标称输出应为 5V 或 5.3V(如降压模块或电调内置 BEC)。 - 负载状态下(接飞控、外设)用万用表测量输出是否稳定。 - **线路压降**: - 检查电源线是否过长、过细或接触不良(如 XT60 接头氧化)。 - 尝试更换电源线或缩短长度。 #### **步骤 3:校准飞控电压传感器** - 在 Mission Planner/QGroundControl 中执行传感器校准: - **Mission Planner 操作**: ```plaintext Config/Tuning → 标准参数 → 电压校准(VOLT_DIVIDER) ``` - **QGC 操作**: ```plaintext 传感器设置 → 电源校准 → 输入实测电压值 ``` #### **步骤 4:调整 PreArm 检查参数(临时方案)** - 若不急于飞行,**不建议跳过电压检查**! - 修改参数 `ARMING_CHECK`: - 取消勾选 `Power` 检查(仅限测试): ```bash ARMING_CHECK = 0 # 禁用所有 PreArm 检查(危险!) ARMING_CHECK = 145407 # 保留其他检查,仅禁用电压检查(具体值需按位计算) ``` - **警告**:此操作可能导致安全隐患! --- ### **3. 解决方案** #### **方案 1:修复电源系统** - **更换 BEC**:选择输出稳定的 BEC(如 5V 3A)。 - **增加电容**:在飞控 5V 输入端并联 **低 ESR 电容**(如 470μF 16V),减少电压波动。 - **独立供电**:为飞控和外设(如图传、摄像头)提供独立电源,避免负载过大拉低电压。 #### **方案 2:校准电压传感器** - 以 **实测电压值** 校准飞控的 ADC 读数(参考上文步骤 3)。 #### **方案 3:更新固件** - 某些固件版本可能存在电压检测逻辑问题,升级到最新版本: ```bash Mission Planner → 初始设置 → 安装固件 → 选择最新稳定版 ``` --- ### **4. 典型场景示例** - **案例 1**:无人机使用劣质 BEC,满油门时电压跌至 4.2V,触发 PreArm 失败。 - **解决**:更换为高质量 BEC,并缩短电源线长度。 - **案例 2**:飞控电压传感器未校准,显示 4.3V,实际电压为 4.8V。 - **解决**:通过 Mission Planner 输入实测 4.8V 完成校准。 --- ### **5. 注意事项** - **安全第一**:禁止绕过 PreArm 检查强行解锁!低电压可能导致飞控重启或失控。 - **多设备排查**:若外接设备(如 LED 灯、舵机)功耗过大,需单独供电。 - **参数备份**:修改参数前,保存当前配置(`*.param` 文件)。 --- ### **总结** - **根本原因**:飞控供电电压不稳定或传感器读数偏差。 - **核心解决步骤**:实测电压 → 修复电源 → 校准传感器 → 更新固件。 - **预防措施**:定期检查电源系统,避免使用劣质 BEC 或过长电源线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值