改进式软硬件的四旋翼飞行器系统
2021-03-22刘顺财施培植
刘顺财 施培植
(1.福州理工学院计算与信息科学学院;2.福州理工学院移动通信和物联网福建省高校工程研究中心福建福州 350014)
在空中飞行需要克服众多因素,要克服地球的吸引力,以及保持旋转惯力和空气的阻力等。此外还需要考虑电池续航、飞行过程中的乱发乱窜等问题,这些都需要精密的算法与硬件结合。
一、系统方案
系统采用STM32F103为核心芯片,以MPU6050六轴传感器的芯片作为测量角速率、加速度等主要装置,遥控部分则通过NRF24L01(2.4G)线通信模块实现遥控端和飞控端的数据传输,通过多个算法对数据进行处理,产生PWM波调速信号驱动空心杯电机,实现四旋翼飞行器的垂直运动,前后运动,侧向运动,偏航运动,俯仰运动等运动,系统如图1所示。
图1 系统框架图
(一)传感器模块。STM32F103C8T6有3个16位定时器,设置定时器成为4路用于捕获/比较/PWM的功能通道,支持2个I2C接口、3个USART接口和2个SPI接口和DMA直接内存存取用于快速数据交换[1]。
MPU6050内置一个16位的ADC,能将三轴陀螺仪和三轴加速度计的数据转换成数字量,编程高频滤波器程序过滤不需要的信号,以提高系统稳定性。配置内部低通滤波器进行数据滤波。STM32以集成电路总线通信的方式与MPU6050通信,最高的数据传输速率可达400kHz。通过芯片内部的数字运动处理模块DMP可减小MCU对于姿态融合运算的负荷。驱动IIC总线,对MPU6050的一系列寄存器进行初始化,再从中读取数据。
(二)通信模块。NRF24L01是一种传输效率高,损耗极低,能在低压正常运行的射频收发器。发射功率可配制成0dBm、-6dBm、-12dBm和-18dBm[2]。数据传输速率有两种选择分别为1Mbps和2Mbps,具有125个通信通道和6个数据通道,数据包每次可传输最多32个字节的数据,通信速率最高10Mbps。使用SPI接口设置输出功率频道和传输协议、工作频率、传输速率、通信地址和数据包长度,可以通过IRQ引脚触发MCU来判断是否完成数据接收和发送。
二、四旋翼飞行器原理与硬件
(一)飞控板硬件电路。STM32F103C8T6、8M晶振和常规的电阻电容器件构成飞控板硬件。8M晶振可通过芯片内部PLL锁相环倍频电路将工作频率提高到72M,以满足四旋翼飞行器需要的运行速度。
电源电路采用3.7V的动力航模锂电池,高于STM32工作电压3.3V。为了能使飞行器更持久的飞行,需要充分利用完锂电池的内部能量,设计先升压再降压的电路。升压芯片为BL8530,该芯片采用47uH电感作为储能元件。内部电路工作原理类似BOOST升压电路,而SS34肖特基二极管充当续流二极管。3.3V稳压电路采用662K稳压芯片,为MCU和传感器供电。飞行器在飞行过程中,电池电量会不断下降。如果单纯使用662K降压电路,当电池电量低于3.3V时,稳压芯片无法正常工作。采用先升压电路,可为后级降压电路提供较持久的电压差,保证四旋翼飞行时间。电源电路如图2所示。
图2 电源电路
电机采用的是8520空心杯电机,以PWM调速信号控制2302的nMOS管的导通,达到控制转速。2302的开启电压是3.3V时,导通电流可达3A以上。假设8520空心杯电机的消耗电流为1A,导通瞬间电流以2倍正常工作电流来计算。MOS管的承受电流大于2A,所以2302可以满足8520空心杯电机的正常工作。电路中100欧姆电阻起到限流作用,当MOS管导通瞬间,防止电流过大会加大MOS管负荷,缩短使用寿命。10K电阻的作用是当芯片复位时,IO口为浮空输入状态,IO电平受外界影响,故加上10K下拉电阻防止MOS管异常导通,使电机异常工作。104电容的作用是吸收电机产生的高频干扰噪声。电机驱动电路如图3所示。
图3 电机驱动电路
由于制板工艺所限,电路设计使用单面板,白线部分为飞线。在飞控板的PCB设计上耗费大量时间,多次修改并重新制作。在设计PCB时要解决当四个空心杯电机同时工作时,电流最大可达2A,必须合理地为电机驱动部分设计对地回路。当四个空心杯电机高速旋转时,对飞控板产生的强度很大的电磁干扰,影响电路板上电子元器件的正常工作。NRF24L01(2.4G)无线通信模块对印刷电路板的走线布局非常严格。模块上的印刷天线附近不能存在走线。2.4G模块对供电电源的纯度要求严格,所以必须将模块尽量靠近稳压电源输出,以保证供电电源的纯净和稳定。飞控板硬件电路PCB如图4所示。
图4 飞控板PCB
(二)遥控板硬件电路。遥控电路的最小系统电路跟飞控板的电路类似,也是8M晶振和电阻、电容元件。此外还添加了一个复位开关,当遥控设备与飞控设备通信异常的情况需要进行复位。
遥控电源供电部分采用的是MIC5219降压芯片,将3.7V航模电池的电压降压为3.3V,以供MCU和传感器使用。MIC5219是一种带载能力强、输出电流大、输出电压精度高、超低噪声输出、接近零关断电流的电压调节器。电路如图5所示。
图5 遥控板电源
摇杆电位器实质由滑动变阻器组合而成,通过STM32F103内部的ADC采样电路采集两个摇杆电位器的电阻分压值,归一化后转换为油门控制值和姿态角控制值。
三、飞控与遥控软件设计
系统初始化,包括IIC、SPI通信接口以及MPU6050、NRF24L01设备初始化。接收上位机发送过来的指令,用LED指示灯显示系统当前的运行状态。当进入中断时,使用IIC通信接口读取MPU6050数据,将读取到的数据经过卡尔曼滤波算法程序,通过四元数姿态解算程序计算出当前的姿态信息。再通过PID算法对姿态数据进行控制,更新控制四个空心杯电机的PWM调速信号来调整四旋翼飞行器的姿态,飞行控制软件包括姿态算法和姿态控制。
GPIO模拟IIC通信协议对MPU6050进行通信。GPIO初始化时配置为开漏输出。在进行信道信息传送时,数据引脚的数据必须在时钟引脚高电平期间保持不变。在数据引脚的电位状态变换的过程中,只有电位为0的时候才开始改变。起始信号由当时钟线为高电平时,数据线由高电平向低电平切换。停止信号是当时钟线是高电平时,数据发生从低电平到高电平的跳变。应答信号则是主控制器将数据线释放(拉高),在响应时间要求内,从机将数据线拉低,表示一个有效的应答信号,若从机没有将数据线拉低,则表示为非应答信号。软件流程图如图6所示。
图6 软件流程图
MPU6050设备的初始化:设置三轴陀螺仪采样率为500Hz,设置低通滤波器频率为42Hz,设置陀螺仪测量范围为±2000deg/s,设置三轴加速度计测量范围为±4G。
SMPLRT_DIV[7:0]是8位无符号数值。设置该数值将陀螺仪的输出分频,作为MPU6050的采样频率。传感器的输出、FIFO输出以及DMP采样都是基于这个采样率数值。采样完后锁存器将复位到初始的FSYNC状态。DLPF_CFG[2:0]是3位无符号数值,用来配置陀螺仪和加速度计的数字低通滤波器。
串行外设接口是单片机和外置设备之间的一种约定速率下的同步传输,发送和接收端都实时做数据交流。对NRF24L01初始化,设置通信频段号,器件有125个频段通道可供选择。将通道设置为通道0,设置通信频率,使能通道0的自动应答,设置通道0的接收地址和有效数据宽度,写发送节点地址和接收节点地址,配置循环自动请求和最大限制重新发送请求频率以及TX发送的传输数据。当NRF24L01发送或接收到数据时,会在外部中断引脚产生一个低电平中断,通过外部中断引脚的状态来判断无线通信模块当前收发数据的完成与否,然后将状态标志位清除,继续下一次通信。
卡尔曼滤波是关于连续离散信号的递归滤波算法,卡尔曼滤波算法利用上个时刻的估算值和当前时刻的测量值来计算出下一刻的估计值。将卡尔曼滤波算法结合四旋翼飞行器进行阐述。如果想知道飞行器的一个姿态或速度等信息,就要从飞行器机架上的检测装置获取。或者通过以牛顿惯性定律为原理的导航进行数学逻辑与语言构建的模型来运算。将两个值通过计算优化后得到的优化值。通过将该优化值与数学模型计算出来的数值进行比较,就知道哪种途径计算出来的数值更接近优化值。下次计算时,应该给予该途径计算出的数值更大的权重,通过反复的计算,从而得到一个相对较为实际的数值。利用卡尔曼滤波算法进行滤波处理后可提高接收信号的准确性[3-5]。程序函数如下所示:
PID是基于数学的比例、积分、微分算法组成的反馈控制器。当发生误差时,控制系统立即纠正误差,并且在两波之后姿态角将保持在稳定水平并最终返回到平衡位置。控制器把当前的数据和设定的参考数据进行比较,然后将差值用于新的计算输入,最终使系统的输出达到设定的目标值,P代表比例控制,I代表积分控制,D代表微分控制[6-8]。比例控制越大,对误差的调节会过于猛烈,会使系统不稳定。如果比例调节较小,则误差出现时,控制器的响应较慢,对误差的修正力度较弱。积分控制会促使系统趋近设定值,消除单纯只有比例控制的稳态误差。积分控制量越大,趋近设定值的速度越快,但也有可能使反馈出现过冲的情况。微分控制是考虑未来误差,计算误差的变化率来对系统的改变做出反应[9-10]。微分的结果越大,表明系统对误差能做出更加快速的反应。程序函数如下所示:
遥控软件的功能是MCU采集摇杆电位器的四路电压值转换成控制指令,通过NRF24L01给飞行控制板发送指令,飞控板根据指令采取相应的动作。
四、系统整机调试
借助匿名科创地面站平台对四旋翼飞行器进行调试。当前后、左右、上下移动时ACC-X、ACC-Y、ACC-Z都有相应的数据变化,表明加速度计正常工作。当飞行器朝3个轴向摆动时,会看到PITCH、ROLL、YAW的数据同步更新,代表陀螺仪正常工作。地面站中还有一个飞行器的模型能根据实际飞行器的姿态同步更新。借助该平台来调试PID控制器中比例、积分、微分三个参数。在地面站写入对四轴新的PID参数,设置不同的PID参数组合,从而使飞行器响应快又可较稳定的达到平衡。
(一)整机联调。通过不断地对PID参数进行调整,使四旋翼飞行器能够较好地抵抗外接干扰,根据遥控指令作出响应并准确飞行。当系统未能使四旋翼飞行器垂直起飞,起飞时会有偏移现象存在,具体调试步骤如下:先调PITCH和ROLL的内环P。慢慢加大P,使得四旋翼飞行器能平稳起飞。然后继续增大P,直到四旋翼飞行器开始轻微抖动。再把P值降低,使得四旋翼飞行器能平稳起飞。然后再加一点D值抑制振荡。调节PITCH和ROLL的外环P。使P慢慢增大,会感觉四旋翼抑制偏移的力量越来越大,但是会有振荡现象存在。此时一样加入D抑制振荡,再调节一下参数I就可以使四旋翼飞行器工作地较为流畅稳定。
在调节四旋翼飞行器的过程中,经常会出现通信突然异常,飞控板不受遥控控制,飞行器出现乱飞乱窜的现象。通过调试发现原因是空心杯电机高速旋转时带来的电磁干扰。为此重新设计飞控板PCB设计,对每一个电机的电流回路都做了相应的处理,使电机运转产生的大电流有单独的对地回路,并且增大对地回路的面积。而后又将NRF24L01无线通信模块单独通过飞线固定在板外。降低电机产生的电磁干扰影响。通过以上设置之后,后续的调试过程中,没有产生通信异常等状况,作品如图7所示。
图7 成品电路图
五、结语
改进式软硬件的四旋翼飞行器系统,实验调试总结如下:
(一)如果利用直接3.3稳压芯片的供电电路,随着锂电池低于3.3V时,系统因为办法稳压导致飞行器没有办法飞行。对比设计一个先升压再降压,并稳定3.3V的供电电压,可以基本用完锂电池的能量。
(二)如果不考虑高频和地线线宽的布线,直接随机等宽自动布线时,系统因为电流和电磁场的干扰导致飞控板不受遥控控制,飞行器出现乱飞乱窜的现象。对比按照高频信号、抗电磁场和大电流的要求设计一个合理的PCB,基本上没有在出现乱飞乱窜的现象。
(三)通过卡尔曼滤波算法进行滤波处理后可提高接收信号的准确性。
(四)通过在地面站写入对四轴新的PID参数,设置不同的PID参数组合,从而使飞行器响应快又可较稳定的达到平衡。