无人机相关技术与故障排除笔记
无人机相关技术与故障排除笔记
本文档整理了关于无人机电调、电机、通信协议、传感器以及硬件故障排除相关的笔记和解释。
1. 电调 (ESC) PWM 输出初始化设置
初始化电调(电子调速器)的 PWM 输出功能时,设置 频率 400Hz、分辨率 10000、初始占空比 0,可以理解为:
-
频率 400Hz: 每秒钟发送 400 次“开关信号”到电调,每次“开关周期”时长 2.5 毫秒(1 秒 / 400 次)。
-
分辨率 10000: 每次“开关周期”内,能将高电平时间细分为 10000 个等级,最小调节精度为 0.01%(例如,占空比 50% 对应高电平持续 5000 个等级)。
-
初始占空比 0: 初始状态下,PWM 信号始终为低电平(无输出),电机处于停转状态。
这组参数的意义在于:
-
高频率: 确保电机响应快速且运行平稳(高频减少电流波动和噪音);
-
高分辨率: 实现精细的转速控制(例如无人机姿态微调);
-
初始占空比 0: 防止上电瞬间电机意外启动(安全保护机制)。
实现原理
-
硬件基础
-
电调通过 MOS 管桥电路(如三相全桥)将直流电转换为三相交流电,驱动无刷电机。
-
微控制器(如 STM32)的定时器模块生成 PWM 信号,控制 MOS 管的通断顺序。
-
-
参数配置流程
-
频率设置:
定时器时钟分频后,设定计数器周期为 时钟频率 / 400Hz。例如,若主频 72MHz,分频系数 720,则计数器周期为 72MHz / (720 * 400) = 250,即每 2.5ms 完成一次周期。
-
分辨率 10000:
将计数器最大值设为 10000,占空比范围为 0~10000。例如,占空比 5000 对应高电平占 50% 的周期时长(1.25ms 高电平 + 1.25ms 低电平)。
-
初始占空比 0:
初始化时,PWM 输出引脚保持低电平,电调未通电,电机静止。
-
-
控制逻辑
电调根据 PWM 占空比调整输出电压的平均值:占空比越大,等效电压越高,电机转速越快。通过霍尔传感器或反电动势检测转子位置,触发换相(六步换向法),维持磁场与转子的同步。
面试常见问题及答案
-
为什么选择 400Hz 的 PWM 频率?
答案: 400Hz 平衡了控制精度与硬件负载。频率过低(如 50Hz)会导致电机振动和噪音;频率过高(如 20kHz)会增加 MOS 管开关损耗和电磁干扰。400Hz 适合中低速场景(如无人机电机),兼顾响应速度与效率。将 PWM 输出的频率设置在 400Hz 是为了便于计算周期和 PWM 分辨率,以及控制油门时换算出来是整数。
-
分辨率 10000 的作用是什么?
答案: 高分辨率允许更精细的转速调节。例如,10000 级分辨率下,占空比每变化 1 级,等效电压变化仅 0.01%,适合需要精密控制的应用(如机器人关节电机)。但分辨率过高可能增加微控制器计算负担。
-
初始占空比为何设为 0?
答案: 防止电调上电瞬间因误信号导致电机意外启动(安全保护)。需先完成电调初始化(如校准油门行程),再逐步增加占空比。
-
如何通过 PWM 实现电机反转?
答案: 无刷电机需通过改变换相顺序实现反转。例如,将三相绕组通电顺序从 AB→AC→BC 改为 BA→CA→CB,或通过电调参数设置反转模式(需支持双向控制)。
-
PWM 频率与电机极对数的关系?
答案: PWM 频率需高于电机换向频率。例如,若电机极对数为 4,转速为 10000rpm,换向频率为 (10000rpm * 4极对数) / 60 ≈ 666Hz。此时 PWM 频率需显著高于 666Hz 以避免失步,通常选择 2~5 倍值(如 2kHz)。
总结
-
核心逻辑: 通过微控制器生成高精度 PWM 信号,控制电调输出电压,驱动无刷电机按需运转。
-
关键参数: 频率决定响应速度,分辨率影响控制精度,初始占空比保障安全性。
-
实际应用: 无人机、机器人、工业自动化等领域依赖此类参数实现精准动力控制。
2. 无刷电机 (BLDC) 工作原理与六步换向法
核心原理
无刷电机通过电子换向取代传统电机的机械电刷,由定子(线圈绕组)和转子(永磁体)组成。定子通电产生磁场,吸引转子转动;通过六步换向法改变通电顺序,形成旋转磁场,推动转子持续旋转。
六步换向法详解
-
为什么要六步换向?
三相无刷电机有 3 组绕组(A/B/C),每次通电需选择其中两相,共 6 种组合:AB→AC→BC→BA→CA→CB(正向旋转)。通过这 6 种状态的循环切换,形成步进式旋转磁场,使转子连续转动。
-
如何实现换向?
-
MOS 管控制: 每组绕组连接一对 MOS 管(上桥和下桥),通过开关组合控制电流方向。例如,通电状态“AB”表示 A 相上桥导通、B 相下桥导通,电流从 A 流到 B。
-
换向时机: 根据转子位置切换通电组合。若使用霍尔传感器(安装在定子上),可实时检测转子磁场变化,触发换向信号。
-
-
无传感器驱动怎么办?
通过检测未通电绕组的反电动势判断转子位置,但启动时需先通过高频脉冲“盲推”转子转动,再逐步切换到反电动势检测模式。
外转子与内转子的区别
-
外转子电机
-
结构: 永磁体包裹在电机外侧,定子在内侧,结构紧凑。
-
特点: 极数多、转矩大、转速低(几千转/分),适合航模、机器人关节等需要大扭矩的场景。
-
-
内转子电机
-
结构: 永磁体在内部,定子在外侧,散热更好。
-
特点: 极数少、转速高(可达上万转/分)、转矩小,适合无人机、高速风扇。
-
航模为何选外转子?
航模螺旋桨需要大扭矩直接驱动,外转子结构无需减速齿轮,同时节省空间和重量。
面试常见问题及答案
-
六步换向为何需要霍尔传感器?
答案: 霍尔传感器检测转子位置,确保换向时机与磁场同步。若未对齐,可能导致电机抖动或失步。
-
如何通过霍尔信号判断换向顺序?
答案: 三个霍尔传感器间隔 120° 电角度安装,输出 6 种组合(如 001、011 等),每种组合对应一个换向步骤(如 AB、AC 等)。
-
外转子电机为何扭矩更大?
答案: 外转子结构增大了永磁体与定子的作用半径,磁力臂更长,因此输出力矩更大。
-
如何实现电机反转?
答案: 反转时换向顺序反向(如 AB→CB→CA→…),或通过调整霍尔信号相位。
-
无传感器驱动的难点是什么?
答案: 启动时需强制转子转动以产生反电动势,且低速时反电动势微弱,易导致控制失效。需结合高频注入或观测器算法。
总结
-
核心逻辑: 通过电子换向和磁场同步实现无刷电机高效运转,外转子适合大扭矩场景,内转子适合高转速场景。
-
技术关键: 霍尔传感器定位、六步换向顺序、MOS 管驱动电路设计。
3. SPI 协议与 IIC 协议对比
核心原因 (SPI 比 IIC 快)
SPI 协议的速度优势主要源于其硬件设计和通信机制的特点:
-
全双工通信
SPI 使用独立的 MOSI(主发从收) 和 MISO(主收从发) 数据线,可同时发送和接收数据,实现 双向实时传输。IIC 仅通过一根 SDA 线半双工通信,同一时间只能单向传输数据。
-
无协议层开销
SPI 的通信流程简单,无需 地址帧 和 应答机制,直接传输数据。IIC 每次传输需先发送设备地址、读写位,且每个字节后必须等待从机应答(ACK/NACK),增加了时间开销。
-
时钟频率更高
SPI 的时钟频率由主机自由设定,理论上仅受硬件限制(可达几十 MHz 甚至更高)。IIC 的速率被协议严格限制:标准模式 100kHz、快速模式 400kHz、高速模式 3.4MHz。
-
同步通信优化
SPI 通过主控时钟(SCLK)严格同步数据传输,数据位直接由时钟边沿触发,无需等待总线空闲。IIC 需通过起始/停止信号协调总线占用,且时钟线(SCL)需与数据线(SDA)配合仲裁,降低效率。
通俗易懂的比喻
-
SPI 像高速公路: 双向车道(全双工),不限速(时钟频率高),收费站直接放行(无地址和应答)。
-
IIC 像市区道路: 单车道(半双工),限速(协议限制),每过一个路口要停车检查证件(地址和应答)。
实现原理对比
特性 | SPI | IIC |
通信方式 | 全双工(同时收发) | 半双工(单向交替传输) |
时钟控制 | 主机独占时钟,无速率限制 | 主机生成时钟,速率受协议限制 |
数据帧结构 | 纯数据位(无地址、应答) | 地址帧 + 数据帧 + 应答位 |
硬件复杂度 | 需要 4 根线(SCLK, MOSI, MISO, CS) | 仅需 2 根线(SDA, SCL) |
多设备支持 | 需多根片选线(CS),扩展性差 | 通过地址寻址,支持多设备共享总线 |
面试常见问题及答案
-
为什么 SPI 比 IIC 快?
答案: SPI 的全双工通信和无协议层开销是核心原因。具体包括:
-
双向同时传输数据(IIC 只能单向交替传输);
-
无需设备地址和应答机制,直接传输有效数据;
-
时钟频率由硬件决定,无协议限制(IIC 最高仅 3.4MHz)。
-
-
SPI 和 IIC 如何选择?
答案:
-
选 SPI: 需要高速(如 Flash 存储、显示屏)、全双工(如实时传感器数据交互)或硬件资源充足(能接受多引脚)的场景。
-
选 IIC: 设备数量多(地址寻址)、引脚资源紧张(仅需 2 根线)或对功耗敏感(IIC 空闲时自动进入低功耗)的场景。
-
-
SPI 的缺点是什么?
答案:
-
引脚占用多: 每增加一个从设备需额外片选线(CS);
-
无错误检测: 无硬件级应答机制,需软件实现校验;
-
无多主机支持: 仅支持单一主机控制总线。
-
-
IIC 如何实现多设备通信?
答案: 通过 7 位/10 位地址寻址。主设备发送目标从机地址,总线上所有从机比对地址,匹配者响应。例如:主设备发送地址 0x68,仅地址为 0x68 的从机应答并传输数据。
-
SPI 如何提升传输速度?
答案:
-
提高时钟频率: 在硬件支持的范围内提升 SCLK 频率(如从 1MHz 提升到 10MHz);
-
使用增强模式: 如 Dual SPI(双线传输)或 Quad SPI(四线传输),每个时钟周期传输 2/4 位数据;
-
减少片选切换: 通过优化硬件设计减少 CS 线切换延迟。
-
总结
SPI 凭借全双工、高时钟频率和精简协议实现高速传输,适合对速度要求高的场景;IIC 则通过地址寻址和低引脚数更适合多设备、低功耗应用。理解两者的底层机制是优化通信设计的关键。
4. 气压传感器高度不准确的原因
利用气压传感器的气压数据和气压高度公式换算出来的高度不准确的原因是什么?
因为大气压强不仅与海拔高度有关,还与湿度,气温,晴阴,空气流动等因素有关,当我们使用固定的 P0 去计算是不对的,如果需要计算出准确的高度,我们需要实时联网去获取所在地区的 P0 值(这个值一般是开放的)然后带入公式计算。
5. 静态加速度传感器与飞机姿态
利用静态加速度传感器的数据能计算出来飞机的姿态信息吗?
可以,利用重力加速度正交分解可以得到飞机姿态的 Yaw(偏航),Pitch(俯仰),Roll(滚转)信息。
6. 无人机硬件故障排除与干扰分析
电机驱动板元件焊接(MOSFET, 二极管, 电阻)
电机驱动板 4 组 SMD 或表面贴装元件焊接 MOSFET 和肖特基续流二极管 10k 欧姆下拉电阻,MPU6050 直接与电源供电以获得稳定的电源。
通俗易懂解释:为什么要这样焊接 MOSFET 和二极管?
-
MOSFET 的作用:电路的"电子开关"
想象 MOSFET 就像一个自动水龙头:
-
栅极 (G): 控制水流的开关按钮
-
源极 (S): 水源(地线)
-
漏极 (D): 出水口(连接负载)
当你在栅极加电压时,水龙头打开;没电压时关闭。这就是用它控制电流流动的方式。
-
-
肖特基二极管的作用:电路的"安全气囊"
二极管就像家里的保险丝:
-
当电流突然反向流动时(比如电机急停产生感应电),它会快速导通把多余电流引走
-
防止电流"逆流"损坏其他元件(类似汽车安全气囊在碰撞时瞬间弹出保护乘客)
-
-
10K 电阻的作用:电路的"稳定器"
这个电阻像是个"守门人":
-
始终让栅极和源极之间有个微弱连接(保持 MOSFET 关闭状态)
-
防止电路干扰导致 MOSFET 意外开启(就像给门装个弹簧防止风吹自动开)
-
-
整体连接的意义
-
所有源极接一起: 就像多个水龙头共用同一个水箱,保证水位一致
-
二极管阴极相连: 确保所有元件的"安全气囊"并联工作,共同分担过压风险
-
红线接电源: 统一供电入口,方便管理
-
-
实际场景举例
假设你要控制三个 LED 灯轮流闪烁:
-
每个 MOSFET 相当于控制一个灯的开关
-
二极管保护灯不会因为突然断电而烧坏
-
10K 电阻确保开关不会自己乱动
-
所有灯共享同一个地线(就像家里所有电器插头都有地线孔)
-
-
为什么不能省略这些步骤?
-
如果没有二极管:电机急停时产生的高压可能直接击穿 MOSFET
-
如果没有下拉电阻:电路板静电可能导致 MOSFET 误触发
-
如果不共地:不同部分的电压基准不一致,可能导致部分元件无法正常工作
-
类比总结:
这整套连接方式就像:
-
MOSFET = 自动水龙头(精准控制)
-
二极管 = 安全阀(防止爆炸)
-
电阻 = 保险栓(防止误触)
-
共地/共电源 = 统一供水系统(保证压力均衡)
通过这样的设计,你的电路既能精准控制,又能安全稳定运行,就像给机器装上了智能又安全的神经系统。
通俗易懂解释:肖特基二极管续流是什么?
-
先说什么是"续流"?
想象你用手捏住水管关水龙头:
-
当你突然松手时,水管里的水不会立刻停下,而是会继续冲一会儿(这就是"续流")
-
在电路里,电流就像水流,当电源突然断开时,已经流动的电流需要"找个出口"继续流动
-
-
肖特基二极管的作用
肖特基二极管就像一个"安全泄洪道":
-
当电路正常工作时,它完全"隐形"(几乎不导电)
-
当电路突然断电时,它立刻"打开",让电流找到出路
-
防止电流"憋坏"其他元件(比如电感突然断电会产生高压)
-
-
实际场景举例
例子 1:继电器线圈
-
继电器里有线圈(类似电磁铁)
-
断电时线圈会产生反向电动势(想维持电流)
-
肖特基二极管此时导通,让电流从二极管流走,保护驱动电路
例子 2:电机控制
-
电机转动时相当于电感负载
-
突然停转时电流会冲击电路
-
二极管提供"逃生通道",让电流慢慢消失
-
-
为什么叫"续流"?
-
"续" = 继续
-
"流" = 电流
就是让电流在断电后能"继续流动"一段时间,而不是突然中断
-
-
肖特基二极管的特殊优势
-
速度快: 反应比普通二极管快 10 倍(像短跑冠军)
-
低压降: 导电时损失的电压很小(像省油的跑车)
-
适合高频: 能应付快速开关的电路(像电竞选手的反应速度)
-
-
类比总结
-
普通二极管 = 普通水闸(反应慢,有漏水)
-
肖特基二极管 = 高速电动水闸(瞬间开启,几乎不漏水)
-
续流过程 = 水坝泄洪(有序引导水流,避免决堤)
-
-
如果没有续流会怎样?
-
电感(如电机、线圈)会产生高压尖峰
-
可能击穿其他元件(像水管爆裂)
-
电路可能产生噪音/干扰(像水管抖动发出巨响)
-
一句话总结:
肖特基二极管续流就是在电路突然断电时,提供一个"安全出口"让电流继续流动,保护电路不被高压损坏,就像给急刹车的水流装个缓冲池。
无人机重置与干扰分析
您提出了一个非常关键的观察点!确实,无人机重置的根源通常是电源问题,但在这个具体场景中,我们需要区分两个现象:
重置的本质 vs 表现症状
(1)真正的重置(电源问题)
-
现象: Arduino 突然断电重启(LED 闪烁、串口中断)
-
原因: 电源不稳定(电压骤降/噪声干扰)
-
验证方法: 用示波器监测 VCC 引脚,观察是否有毛刺
(2)姿态失控导致的"假重置"
-
现象: 无人机像喝醉一样胡乱摆动,最终可能触发软件保护机制(类似"假死")
-
原因: 陀螺仪被干扰后输出错误数据,控制器误判姿态
-
关键区别: 此时 Arduino 仍在运行,但控制逻辑已混乱
为什么抬高陀螺仪能"阻止重置"?
场景还原
当电机干扰严重时:
-
陀螺仪数据疯狂跳动 → 控制器误判姿态
-
发出错误指令 → 电机剧烈抖动
-
电机抖动加剧电源波动 → 最终触发真正的重置
抬高陀螺仪的作用
-
短期效果: 切断干扰源 → 陀螺仪数据稳定 → 控制器不再发疯
-
长期隐患: 姿态感知延迟 → 引发摆动(如前文所述)
根本解决方案
需要同时解决电源稳定性和传感器抗干扰问题。
为什么无人机开始左右摆动?
因为陀螺仪虽然"听不到"噪音了,但也失去了与电机的正确对话:
-
原本的协作关系:
电机转动 → 机身倾斜 → 陀螺仪感知倾斜 → 发送信号给控制器调整
-
现在的问题:
陀螺仪位置太高 → 感知到的倾斜角度比实际慢半拍(像隔着枕头感受震动)
控制器收到错误信号 → 不断反向修正 → 导致左右摆动(类似醉汉走路)
类比场景:
你蒙着眼睛站在晃动的船上,如果只靠头顶的传感器判断平衡,反而会走不稳!
铜片接地的双刃剑效应
✅ 好的一面:
铜片像电磁波的"吸尘器",吸走了干扰信号,让陀螺仪更专注工作
❌ 坏的一面:
如果铜片面积太大或位置不当,可能:
-
屏蔽了正常信号: 把有用的姿态数据也挡住了
-
改变了电磁场分布: 影响电机与控制器的"默契配合"
如何解决摆动问题?
方法 1:微调陀螺仪高度
像调节望远镜焦距一样,找到最佳位置:
-
太低 → 仍受干扰
-
太高 → 反应迟钝
-
黄金位置: 离电机 1-2 厘米,且与电机轴线垂直
方法 2:优化铜片设计
把铜片剪成**"C 型"**:
-
包围陀螺仪但不完全封闭(留个缺口朝向电机)
-
既屏蔽噪音,又允许正常信号通过
方法 3:软件补偿
给控制器写个"纠错程序":
// 伪代码:根据摆动幅度动态调整修正力度
if(摆动超过阈值) {修正系数 = 0.8; // 减小修正强度
} else {修正系数 = 1.0;
}
关键经验
-
传感器位置: 比你想象的更重要!就像狙击手的位置决定射击精度
-
屏蔽要精准: 不是越多越好,而是"恰到好处"
-
动态平衡: 硬件调整后必须配合软件优化
建议操作步骤
-
先用纸片临时固定陀螺仪在不同高度测试
-
铜片剪成 C 型后用胶水临时固定测试
-
记录摆动幅度变化,找到最佳位置
-
最后用热熔胶永久固定
这样既能防干扰,又能保持稳定飞行! 🚁
为什么电源问题通常更常见?
统计数据
-
70%的无人机重置源于电源(尤其电机启动时)
-
30%源于传感器干扰(需结合具体现象判断)
快速诊断技巧
现象 | 可能原因 | 检测方法 |
重置前 LED 闪烁 | 电源电压骤降 | 示波器测 VCC |
重置后程序从头运行 | 看门狗触发 | 检查代码逻辑 |
重置前电机异响 | 电流尖峰 | 钳形表测电流 |
重置前姿态失控 | 传感器噪声 | 观察串口数据 |
完整解决方案流程图
关键结论
-
重置 ≠ 姿态失控:
-
真正的重置是系统级崩溃(电源/看门狗触发)
-
姿态失控可能导致逻辑错误,但不一定是硬件重置
-
-
抬高陀螺仪的双重作用:
-
短期:减少干扰 → 防止控制器发疯
-
长期:需配合电源加固才能根治
-
-
诊断优先级:
pietitle 重置原因占比"电源问题" : 70"传感器干扰" : 20"软件BUG" : 10
建议操作步骤:
-
先用示波器确认是否真有电源重置。
-
如果没有硬件重启,则专注解决姿态问题。
-
最终目标:让无人机在电源和传感器双重稳固的基础上稳定飞行。
这样就能准确区分"真重置"和"假重置",针对性解决问题! 🚁💡
制作带有 FPV 相机的微型 Arduino 无人机 |Elektor 杂志