单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7302|回复: 58
收起左侧

mini四轴飞行器、遥控器电路原理图、PCB文件与STM32单片机源程序

  [复制链接]
mokangxin 发表于 2017-12-17 15:31 | 显示全部楼层 |阅读模式
最近在搞四轴,搜了一些资料,跟大家分享下。开源分享飞猪源程序,设计资料仅供参考!

飞控和遥控器外观

飞控和遥控器外观


Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
0.jpg 0.jpg

遥控器部分:
0.jpg 0.jpg

飞控文件

飞控文件


遥控文件

遥控文件


mini四轴飞行器的STM32单片机源程序如下:
  1. #include "control.h"
  2. #include "BSP.H"
  3. #include "rc.h"
  4. #include "imu.h"
  5. #include "uart1.h"
  6. PID PID_ROL,PID_PIT,PID_YAW;
  7. u8 ARMED = 0;
  8. extern vs16 QH,ZY,XZ;

  9. float Get_MxMi(float num,float max,float min)
  10. {
  11.         if(num>max)
  12.                 return max;
  13.         else if(num<min)
  14.                 return min;
  15.         else
  16.                 return num;
  17. }

  18. void CONTROL(float rol_now, float pit_now, float yaw_now, float rol_tar, float pit_tar, float yaw_tar)       
  19. {                                                //当前姿态角,,,目标姿态角
  20.         u16 moto1=0,moto2=0,moto3=0,moto4=0;
  21.         vs16 throttle;
  22. //        u8 moto[8];
  23.        
  24.         float rol = rol_tar + rol_now;
  25.         float pit = pit_tar + pit_now;
  26.         float yaw = yaw_tar + yaw_now;
  27.        
  28.         throttle = Rc_Get.THROTTLE - 1000;        //1000<遥控油门值<2000
  29.         if(throttle<0)        throttle=0;
  30.        
  31.         PID_ROL.IMAX = throttle/10;                        //积分限幅,积分值不超过当前油门值的一半
  32.         PID_ROL.IMAX = Get_MxMi(PID_ROL.IMAX,1000,0);        //限制积分结果为,0到1000       
  33.         PID_PIT.IMAX = PID_ROL.IMAX;
  34.        
  35.         PID_ROL.pout = PID_ROL.P * rol;
  36.         PID_PIT.pout = PID_PIT.P * pit;
  37. //////////////////、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、       
  38.         /////////////0.1  0.1   30  30
  39.         if(rol_tar*rol_tar<1 && pit_tar*pit_tar<1 && rol_now*rol_now<100 && pit_now*pit_now<100 && throttle>300)
  40.         {                        //防止角度大了,积分超调//目标姿态角水平,姿态角几乎水平,油门值不太低
  41.                 PID_ROL.iout += PID_ROL.I * rol;
  42.                 PID_PIT.iout += PID_PIT.I * pit;
  43.                 PID_ROL.iout = Get_MxMi(PID_ROL.iout,PID_ROL.IMAX,-PID_ROL.IMAX);                //对输出的积分限幅
  44.                 PID_PIT.iout = Get_MxMi(PID_PIT.iout,PID_PIT.IMAX,-PID_PIT.IMAX);
  45.         }
  46.         else if(throttle<200)
  47.         {                        //油门值较小时,积分项清零
  48.                 PID_ROL.iout = 0;
  49.                 PID_PIT.iout = 0;
  50.         }
  51. //////////////////、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、       

  52. //        rc_roll_d = rol_tar - getlast_roll;
  53. //        getlast_roll = rol_tar;
  54. //        PID_ROL.dout = PID_ROL.D * (MPU6050_GYRO_LAST.X+rc_roll_d*300);//角速度+控制误差微分
  55. //       
  56. //        rc_pitch_d = pit_tar - getlast_pitch;
  57. //        getlast_pitch = pit_tar;
  58. //        PID_PIT.dout = PID_PIT.D * (MPU6050_GYRO_LAST.Y+rc_pitch_d*300);//角速度+控制误差微分
  59.        
  60.         PID_ROL.dout = PID_ROL.D * MPU6050_GYRO_LAST.X;               
  61.         PID_PIT.dout = PID_PIT.D * MPU6050_GYRO_LAST.Y;
  62. /////////////////////////////////////////////////////////////////////
  63.         PID_YAW.pout = PID_YAW.P * yaw;
  64.         //若 *yaw_now;锁尾模式!!!!
  65.         //若 *yaw;  非锁尾模式!!!!
  66. /////////////////////////////////////////////////////////////////////
  67.         vs16 yaw_d;
  68.         /////////////////////////////////////////////////////////////////////
  69.         if(1480>Rc_Get.YAW || Rc_Get.YAW>1520)        //给遥控加死区(偏航角的死区)
  70.         {
  71.                 yaw_d = MPU6050_GYRO_LAST.Z + (Rc_Get.YAW-1500)*10;        //用Z轴角速度及目标偏航角值进行四轴运动的预判
  72.                 GYRO_I.Z = 0;
  73.         }
  74.         else
  75.                 yaw_d =  MPU6050_GYRO_LAST.Z;
  76.        
  77.         PID_YAW.dout = PID_YAW.D * yaw_d;
  78. /////////////////////////////////////////////////////////////////////       
  79.         PID_ROL.OUT = PID_ROL.pout + PID_ROL.iout + PID_ROL.dout;
  80.         PID_PIT.OUT = PID_PIT.pout + PID_PIT.iout + PID_PIT.dout;
  81.         PID_YAW.OUT = PID_YAW.pout + PID_YAW.iout + PID_YAW.dout;
  82.        
  83.         if(throttle>200)        //油门值大于200才起飞        (遥控油门值大于1200)
  84.         {               
  85. //                moto1 = throttle  - PID_ROL.OUT - PID_PIT.OUT + PID_YAW.OUT;
  86. //                moto2 = throttle  - PID_ROL.OUT + PID_PIT.OUT - PID_YAW.OUT;
  87. //                moto3 = throttle  + PID_ROL.OUT - PID_PIT.OUT - PID_YAW.OUT;
  88. //                moto4 = throttle  + PID_ROL.OUT + PID_PIT.OUT + PID_YAW.OUT;

  89. //                moto4 = throttle  - PID_ROL.OUT - PID_PIT.OUT + PID_YAW.OUT;
  90. //                moto3 = throttle  - PID_ROL.OUT + PID_PIT.OUT - PID_YAW.OUT;
  91. //                moto2 = throttle  + PID_ROL.OUT - PID_PIT.OUT - PID_YAW.OUT;
  92. //                moto1 = throttle  + PID_ROL.OUT + PID_PIT.OUT + PID_YAW.OUT;               
  93.                
  94.                
  95. //                moto1 = throttle -  25 + QH + ZY - XZ - PID_ROL.OUT - PID_PIT.OUT + PID_YAW.OUT;
  96. //                moto2 = throttle -  25 + QH - ZY + XZ - PID_ROL.OUT + PID_PIT.OUT - PID_YAW.OUT;
  97. //                moto3 = throttle -  25 - QH + ZY + XZ + PID_ROL.OUT - PID_PIT.OUT - PID_YAW.OUT;
  98. //                moto4 = throttle +  75 - QH - ZY - XZ + PID_ROL.OUT + PID_PIT.OUT + PID_YAW.OUT;
  99.                
  100.                 moto4 = throttle + QH + ZY - XZ - PID_ROL.OUT - PID_PIT.OUT + PID_YAW.OUT;
  101.                 moto3 = throttle + QH - ZY + XZ - PID_ROL.OUT + PID_PIT.OUT - PID_YAW.OUT;
  102.                 moto2 = throttle - QH + ZY + XZ + PID_ROL.OUT - PID_PIT.OUT - PID_YAW.OUT;
  103.                 moto1 = throttle - QH - ZY - XZ + PID_ROL.OUT + PID_PIT.OUT + PID_YAW.OUT;
  104.                
  105. //                moto1 = throttle;
  106. //                moto2 = throttle;
  107. //                moto3 = throttle;
  108. //                moto4 = throttle;
  109.         }
  110.         else
  111.         {
  112.                 moto1 = 0;
  113.                 moto2 = 0;
  114.                 moto3 = 0;
  115.                 moto4 = 0;
  116. ……………………

  117. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
mini四轴飞行器、遥控器电路原理图、PCB、源程序.zip (11.03 MB, 下载次数: 493)
回复

使用道具 举报

wuxishun 发表于 2017-12-23 12:34 来自手机 | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

wuxishun 发表于 2017-12-23 14:52 来自手机 | 显示全部楼层
非常强大的资料,正准备做一个玩下
回复

使用道具 举报

wuxishun 发表于 2017-12-23 14:55 来自手机 | 显示全部楼层
非常强大的资料,正准备做一个玩下
回复

使用道具 举报

wuxishun 发表于 2017-12-23 23:57 来自手机 | 显示全部楼层
楼主gy 521陀螺仪模块能用吗?
回复

使用道具 举报

wuxishun 发表于 2017-12-28 00:31 来自手机 | 显示全部楼层
照楼主的资料搭好线了,但遥控板屏没显示,也无任何反应,接单片机的灯也没亮,楼主可以帮解答一下吗?
回复

使用道具 举报

打打杀杀 发表于 2018-4-14 11:04 | 显示全部楼层
谢谢,真的不错
回复

使用道具 举报

tomlys 发表于 2018-4-18 17:15 | 显示全部楼层
谢谢分享
回复

使用道具 举报

84218421 发表于 2018-5-4 09:15 | 显示全部楼层
谢谢你的分享,值得学习下载!
回复

使用道具 举报

果宝宝 发表于 2018-5-5 11:39 | 显示全部楼层
谢谢分享
回复

使用道具 举报

J.K.Who 发表于 2018-5-8 11:02 | 显示全部楼层
不错的资料,谢谢分享
回复

使用道具 举报

jdz8888 发表于 2018-5-9 12:28 | 显示全部楼层
楼主分享的很好,不知道能不能下载
回复

使用道具 举报

jdz8888 发表于 2018-5-10 08:45 | 显示全部楼层
现在飞行器超过250g的重量,都要实名登记,所以玩250克以下的,应该会越来越多,且不限于儿童,谢谢楼主,谢谢版主分享!
回复

使用道具 举报

BJK 发表于 2018-5-23 12:24 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

dukecheng 发表于 2018-5-23 16:17 | 显示全部楼层
谢谢,真的不错
回复

使用道具 举报

wangtianbao 发表于 2018-6-12 08:59 | 显示全部楼层
你也为你发出来我就能看得懂了吗,差的太多了哎--
回复

使用道具 举报

尧大王 发表于 2018-6-21 20:59 | 显示全部楼层
下载下来看看,谢谢分享
回复

使用道具 举报

啊啦啦啦啊 发表于 2018-7-5 21:31 | 显示全部楼层
请问需要买哪些东西啊啊
回复

使用道具 举报

LZY5200 发表于 2018-7-6 18:03 | 显示全部楼层
正想自己做一个                                                                        
回复

使用道具 举报

牧田 发表于 2018-7-9 15:17 | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

hungyu36 发表于 2018-7-21 12:35 | 显示全部楼层
谢谢,真的不错
回复

使用道具 举报

QQ1132 发表于 2018-7-26 10:09 | 显示全部楼层
非常强大的资料,资料很全,学习一下
回复

使用道具 举报

一本正经说胡话 发表于 2018-7-27 08:52 | 显示全部楼层
谢谢楼主资料分享,正在学习中。
回复

使用道具 举报

铜色的子弹 发表于 2018-7-28 16:45 | 显示全部楼层
找了很久 手上刚好有元器件 下来学习
回复

使用道具 举报

xsj1877578806 发表于 2018-8-1 14:13 来自手机 | 显示全部楼层
收藏学习一下
回复

使用道具 举报

hf6 发表于 2018-8-1 15:54 | 显示全部楼层
好东西
回复

使用道具 举报

hf6 发表于 2018-8-2 09:58 | 显示全部楼层
谢谢楼主资料分享,正在学习中。
回复

使用道具 举报

maomao12 发表于 2018-8-5 00:33 | 显示全部楼层
厉害,谢谢楼主分享
回复

使用道具 举报

sir.li 发表于 2018-8-20 11:34 | 显示全部楼层
用的什么电机啊
回复

使用道具 举报

chaosg998 发表于 2018-8-22 19:19 | 显示全部楼层
非常强大的资料,正准备做一个玩下
回复

使用道具 举报

colorYY 发表于 2018-9-20 09:25 | 显示全部楼层

非常强大的资料,正准备做一个玩下
回复

使用道具 举报

莫帆 发表于 2018-10-7 17:03 | 显示全部楼层
谢谢大佬哈哈哈
回复

使用道具 举报

imxzq 发表于 2018-10-11 15:20 | 显示全部楼层
非常强大 最近在学习四轴呢 这个好像是小马哥的那套吧。非常赞!
回复

使用道具 举报

imxzq 发表于 2018-10-11 15:37 | 显示全部楼层
这电源这块是怎么回事。

四轴原理图

四轴原理图
回复

使用道具 举报

panzhenan 发表于 2018-10-22 17:19 | 显示全部楼层
想看看好不好,没黑币
回复

使用道具 举报

wjxu 发表于 2018-10-28 09:50 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

会飞的晓晓鸟 发表于 2018-10-31 14:58 来自手机 | 显示全部楼层
pcb可以拿来练习一下,谢谢楼主
回复

使用道具 举报

Ω囿圉Ω 发表于 2018-12-16 22:18 | 显示全部楼层
学习一下
回复

使用道具 举报

hacehi 发表于 2018-12-24 20:05 | 显示全部楼层
各位,有谁照着这个资料做成功的吗?我也想做一个。
回复

使用道具 举报

zhlip 发表于 2018-12-30 21:55 来自手机 | 显示全部楼层
不错,收藏了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 QQ 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

快速回复 返回顶部 返回列表