笔者目前在读研究生,研究的方向正是飞行器的定位与导航。去年10月份开始设计的微型四旋翼,近日才完成整个系统的设计并且飞机可以较为稳定的悬停在空中。
下面就将笔者最近整理的制作过程梳理一遍,还希望与有兴趣的网友共同讨论。
笔者将分为硬件设计与软件设计两大部分来分别阐述系统的构成:
硬件设计:
总体思路:
整个机架采用PCB板,将四个电机固定在PCB板的四个角,外接电池。
硬件模块:
单片机、惯性测量模块(IMU)、无线通讯模块、电机驱动模块、续流二极管、电源管理模块(稳压与充放电)、直流有刷电机、大电流放电电池、遥控器。
硬件选型:
模块名称 |
元件名称 |
数量 |
|
单片机 |
STM32F103CBT6 |
1 |
|
惯性测量模块(IMU) |
MPU6050(三轴加速度计+三轴陀螺仪) |
1 |
|
无线通讯模块 |
NRF24L01 |
1 |
|
电机驱动模块 |
AO3400 5.8A |
4 |
|
续流二极管 |
SS34 3A |
4 |
|
电源管理模块 |
稳压 |
TPS79333 3.3V |
1 |
充放电 |
TP4057 USB兼容5V充电 |
1 |
|
直流有刷电机 |
空心杯有刷直流电机7*16mm |
4 |
|
大电流放电电池 |
250mAh 20C |
1 |
|
遥控器 |
JOYPAD游戏手柄 |
1 |
硬件工作综述:
单片机负责整个系统的协调工作;惯性测量模块(IMU)负责测量四旋翼的姿态;无线通讯模块负责四旋翼与遥控器的通讯;电机驱动模块负责驱动电机;续流二极管负责对电机进行续流;电源管理模块中的稳压模块负责整个系统的供电,电源管理模块中的充放电模块负责对电池充电;有刷电机负责提供四旋翼的飞行动力;大电流放电电池负责四旋翼的能量来源;遥控器负责对四旋翼进行遥控和控制。
硬件设计功能模块图:
实际效果图与相关参数:
尺寸:对角电机轴距10x10cm
重量:33.2g(带电池)
软件设计:
总体思路:
惯性测量模块(IMU)测量出当前飞机的三轴加速度与三轴角速度并传送给单片机处理,由单片机进行基于四元数的姿态解算,求解出当前飞机的pitch、roll、yaw三个角度值,然后根据这三个角度经过PID控制运算,输出四路PWM控制四个直流有刷电机的加减速从而达到飞机的平衡悬停。
其中,惯性测量模块(IMU)的加速度计由于噪声比较大,所以需要对其进行滤波处理;而遥控器则是对飞机进行实时的姿态控制;最后由于四旋翼制作的特殊性,在调试PID参数阶段会频繁的烧写程序,鉴于此,笔者开发了基于NRF24L01的Bootloader技术,免除了烧写Flash的物理连线限制,可实现远程程序一键下载。
姿态解算:
姿态解算属于四旋翼制作的核心部分,如果姿态解算能够实时的反应出飞机的状态,那么对于控制来讲就相对来说比较容易了。而姿态结算所要做的事情就是两个坐标系之间的正确转化(地理坐标系与载体坐标系),这种转化有很多种表示方法,例如欧拉角法、方向余弦矩阵法、四元数法、旋转矢量法等。笔者采用的是应用广泛的四元数法,而旋转矢量法则是一种基于