当前位置:   article > 正文

基于STM32的四旋翼无人机开发设计_csdn无人机飞控程序设计

csdn无人机飞控程序设计

已知技术参数和设计要求:

1.功能要求

       本次课程设计涉及的四旋翼无人机设计方案,采用STM32F103为上位机,外加直流电机、WIFI模块、MPU6050九轴运动处理传感器等实现四旋翼无人机飞行及其控制功能。

2. 运行环境要求

       四旋翼无人机:基于STM32F103的专用开发板,含直流电机及其驱动模块、WIFI模块、MPU6050九轴运动处理传感器模块等。

3.技术要求

       掌握STM32单片机原理及应用开发技术,包括单片机GPIO、PWM、UART、IIC、FLASH等接口技术,以及项目编程框架、设计方法、调试技巧等。

4.   设计要求

         本次课程设计涉及的四旋翼无人机设计方案,采用STM32F103为上位机,外加直流电机、WIFI模块、MPU6050九轴运动处理传感器等实现四旋翼无人机飞行及其控制功能。

功能模块

       要实现通过手机蓝牙控制无人机平稳飞行的需求而开发嵌入式系统,这个系统主要包括电机模块,串口通信模块和IIC通信模块三个大模块,另外还涉及到PID算法。

各模块关系图如下:

设计环境

       软件环境:Windows,Keil 5, Source lnsight 4.0

工作原理

       控制无人机四个电机的转速相同使无人机能够平稳起飞,调节各个电机的转速,可以改变无人机的俯仰角,横滚角和偏航角。俯仰角控制无人机向前后是向后飞行,横滚角是控制无人机向左或是向右飞行,而偏航角控制无人机的旋转。当四个电机转速相同的,并且不考虑误差的情况下,通过控制油门,无人机可以做到垂直起降,空中悬停。当前面两个电机转速小于后面时,此刻俯仰角小于0,无人机向前飞行。向左右飞行与这原理相同。            

       在无人机在飞行过程中,MPU6050传感器会根据无人机的飞行状态,获取加速度,角速度的数据,为了确保无人机的稳定飞行状态,MPU6050会线将数据进行处理,并将处理后的数据以IIC通信的方式传送给主设备STM32主控芯片,然后主控芯片会控制各个电机转速达到平衡状态。我们在通过手机蓝牙遥控无人机飞行时,STM32通过串口接收数据。STM32内置PID算法,将接受到的数据进行处理,然后发送跟电机,做出相应的飞行动作。

硬件系统设计

       设计图如下所示:

     

系统功能结构

       本系统主要包括电机模块,串口通信模块,IIC通信模块

电机控制模块

       本模块主要功能是初始化和配置GPIO引脚,给电机上电,然后配置定时器4的时基单元何输出比较器,通过设置CCR可以调节占空比从而达到控制电机转速。

           

 

串口通信模块

       串口通信模块有两个功能,即Uart1和Uart2,串口1的作用时STM32和主机的通信,通过串口发送数据给主机,并在串口助手上显示。本次设计主要用到的功能时串口2,串口2时手机通过蓝牙发送数据给STM32主控芯片,控制无人机的飞行。

                      

 IIC通信模块

       本模块是用于STM32主控芯片和MPU6050之间的通信。在IIC通信中,STM32作为主设备,而MPU6050作为从设备,STM32会读取MPU6050在飞行过程中产生的数据,从而控制电机的平稳飞行。

电机控制模块测试

实验预期:本模块的功能是给电机上点,通过调解占空比来调节电机的转速。

实验结果:将程序下载到STM32开发板上后,打开开关,无人机的四旋翼开始转动,当将占空比调大时,四旋翼的转速增大。随后我们调节了四个电机各自的占空比,尽量让无人机能刚刚起飞并处于平衡状态。

实验测试视频截图: 

                      

串口通信模块测试

       串口通信分为两部分,串口1和串口2,串口1的功能是,STM32向串口助手发送数据。串口2的功能是,手机通过蓝牙向STM32发送数据。

串口1实验截图:

描述:每隔1秒向串口助手发送一次“hello world...”。

             

串口2实验截图:

       描述:如图为手机遥控器软件截图,图中的加速度,陀螺仪的x,y,z值都是通过串口2发送给手机并显示处理的。而控制数据,是由蓝牙发送给STM32,进行飞行控制。

                

IIC通信模块模块测试

描述:MPU6050在无人机的飞行过程中会获取角速度和加速度等数据,并通过IIC通信的方式,将这些数据传输给STM32主控芯片。

实验结果描述:为了能看STM32和MPU6050之间的IIC通信,将STM32获取到的数据通过串口通信,打印在串口助手上。下图展示的是MPU6050初始化之前的打印结果。在初始化MPU6050之后,角速度和角速度的值可以获取,并如上图所示打印出相应的结果。

         

总 结

       本次课题设计实现了手机通过蓝牙对无人机飞行进行控制的功能,此刻设计的重难点在于PID算法的设计,对于PID算法是怎么设计的,我个人还是不大清楚。另外,保证无人机能平稳起飞的一个重要原件是MPU6050传感器,它能在无人机飞行过程中采集数据,内置的陀螺仪算法能处理采集到的数据,STM32主控芯片你会读取该数据,并发送给电机使无人机能保持平稳状态。对于PID算法,我个人的理解是,我们使用手机通过蓝牙给主控芯片发送数,STM32接受到数据后会将该数据用PID算法进行处理。从而达到控制,俯仰角度和滚转角度,进而改变飞行状态,并且可以控制在一个安全的范围之内,这样一来,我们的无人机既可以完成各种动作,又能保持平衡。

       本次我们小组完成了设计的全部类容,可以通过手机遥控无人机进行平稳的飞行,并且能做到向各个方向飞行。虽然实验代码老师都会给我们,但是我还是感觉在此次课程设计中学到了很多,对于新的知识有了涉猎,对以前学过的又加深了印象。尤其是在IIC通信模块设计的学习中收获颇多。根据时序图编写功能函数,之前是没有这样做过,但是现在会了。以后在编写程序时,我会往这个方面思考。总而言之,这次实验学得很踏实,能掌握的基本都学会了,至于PID算法这部分确实有点力所不能及。

最终效果展示 :

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/403002
推荐阅读
相关标签
  

闽ICP备14008679号