標(biāo)題: mini四軸飛行器、遙控器電路原理圖、PCB文件與STM32單片機(jī)源程序 [打印本頁]

作者: mokangxin    時(shí)間: 2017-12-17 15:31
標(biāo)題: mini四軸飛行器、遙控器電路原理圖、PCB文件與STM32單片機(jī)源程序
最近在搞四軸,搜了一些資料,跟大家分享下。開源分享飛豬源程序,設(shè)計(jì)資料僅供參考!


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


遙控器部分:





mini四軸飛行器的STM32單片機(jī)源程序如下:
  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. {                                                //當(dāng)前姿態(tài)角,,,目標(biāo)姿態(tài)角
  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;                        //積分限幅,積分值不超過當(dāng)前油門值的一半
  32.         PID_ROL.IMAX = Get_MxMi(PID_ROL.IMAX,1000,0);        //限制積分結(jié)果為,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.         {                        //防止角度大了,積分超調(diào)//目標(biāo)姿態(tài)角水平,姿態(tài)角幾乎水平,油門值不太低
  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);                //對(duì)輸出的積分限幅
  44.                 PID_PIT.iout = Get_MxMi(PID_PIT.iout,PID_PIT.IMAX,-PID_PIT.IMAX);
  45.         }
  46.         else if(throttle<200)
  47.         {                        //油門值較小時(shí),積分項(xiàng)清零
  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)        //給遙控加死區(qū)(偏航角的死區(qū))
  70.         {
  71.                 yaw_d = MPU6050_GYRO_LAST.Z + (Rc_Get.YAW-1500)*10;        //用Z軸角速度及目標(biāo)偏航角值進(jìn)行四軸運(yùn)動(dòng)的預(yù)判
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
mini四軸飛行器、遙控器電路原理圖、PCB、源程序.zip (11.03 MB, 下載次數(shù): 921)




作者: wuxishun    時(shí)間: 2017-12-23 12:34
學(xué)習(xí)了,謝謝分享
作者: wuxishun    時(shí)間: 2017-12-23 14:52
非常強(qiáng)大的資料,正準(zhǔn)備做一個(gè)玩下
作者: wuxishun    時(shí)間: 2017-12-23 14:55
非常強(qiáng)大的資料,正準(zhǔn)備做一個(gè)玩下
作者: wuxishun    時(shí)間: 2017-12-23 23:57
樓主gy 521陀螺儀模塊能用嗎?
作者: wuxishun    時(shí)間: 2017-12-28 00:31
照樓主的資料搭好線了,但遙控板屏沒顯示,也無任何反應(yīng),接單片機(jī)的燈也沒亮,樓主可以幫解答一下嗎?
作者: 打打殺殺    時(shí)間: 2018-4-14 11:04
謝謝,真的不錯(cuò)
作者: tomlys    時(shí)間: 2018-4-18 17:15
謝謝分享

作者: 84218421    時(shí)間: 2018-5-4 09:15
謝謝你的分享,值得學(xué)習(xí)下載!
作者: 果寶寶    時(shí)間: 2018-5-5 11:39
謝謝分享
作者: J.K.Who    時(shí)間: 2018-5-8 11:02
不錯(cuò)的資料,謝謝分享
作者: jdz8888    時(shí)間: 2018-5-9 12:28
樓主分享的很好,不知道能不能下載
作者: jdz8888    時(shí)間: 2018-5-10 08:45
現(xiàn)在飛行器超過250g的重量,都要實(shí)名登記,所以玩250克以下的,應(yīng)該會(huì)越來越多,且不限于兒童,謝謝樓主,謝謝版主分享!
作者: BJK    時(shí)間: 2018-5-23 12:24
謝謝樓主分享
作者: dukecheng    時(shí)間: 2018-5-23 16:17
謝謝,真的不錯(cuò)
作者: wangtianbao    時(shí)間: 2018-6-12 08:59
你也為你發(fā)出來我就能看得懂了嗎,差的太多了哎--
作者: 堯大王    時(shí)間: 2018-6-21 20:59
下載下來看看,謝謝分享
作者: 啊啦啦啦啊    時(shí)間: 2018-7-5 21:31
請(qǐng)問需要買哪些東西啊啊
作者: LZY5200    時(shí)間: 2018-7-6 18:03
正想自己做一個(gè)                                                                        
作者: 牧田    時(shí)間: 2018-7-9 15:17
學(xué)習(xí)了,謝謝分享
作者: hungyu36    時(shí)間: 2018-7-21 12:35
謝謝,真的不錯(cuò)
找了很久 手上剛好有元器件 下來學(xué)習(xí)

作者: QQ1132    時(shí)間: 2018-7-26 10:09
非常強(qiáng)大的資料,資料很全,學(xué)習(xí)一下
作者: 一本正經(jīng)說胡話    時(shí)間: 2018-7-27 08:52
謝謝樓主資料分享,正在學(xué)習(xí)中。
作者: xsj1877578806    時(shí)間: 2018-8-1 14:13
收藏學(xué)習(xí)一下
作者: hf6    時(shí)間: 2018-8-1 15:54
好東西
作者: hf6    時(shí)間: 2018-8-2 09:58
謝謝樓主資料分享,正在學(xué)習(xí)中。
作者: maomao12    時(shí)間: 2018-8-5 00:33
厲害,謝謝樓主分享
作者: sir.li    時(shí)間: 2018-8-20 11:34
用的什么電機(jī)啊
作者: chaosg998    時(shí)間: 2018-8-22 19:19
非常強(qiáng)大的資料,正準(zhǔn)備做一個(gè)玩下

作者: colorYY    時(shí)間: 2018-9-20 09:25

非常強(qiáng)大的資料,正準(zhǔn)備做一個(gè)玩下
作者: 莫帆    時(shí)間: 2018-10-7 17:03
謝謝大佬哈哈哈

作者: imxzq    時(shí)間: 2018-10-11 15:20
非常強(qiáng)大 最近在學(xué)習(xí)四軸呢 這個(gè)好像是小馬哥的那套吧。非常贊!
作者: imxzq    時(shí)間: 2018-10-11 15:37
這電源這塊是怎么回事。

無標(biāo)題.png (48.92 KB, 下載次數(shù): 234)

四軸原理圖

四軸原理圖

作者: panzhenan    時(shí)間: 2018-10-22 17:19
想看看好不好,沒黑幣
作者: wjxu    時(shí)間: 2018-10-28 09:50
謝謝樓主分享

作者: 會(huì)飛的曉曉鳥    時(shí)間: 2018-10-31 14:58
pcb可以拿來練習(xí)一下,謝謝樓主
作者: Ω囿圉Ω    時(shí)間: 2018-12-16 22:18
學(xué)習(xí)一下
作者: hacehi    時(shí)間: 2018-12-24 20:05
各位,有誰照著這個(gè)資料做成功的嗎?我也想做一個(gè)。

作者: zhlip    時(shí)間: 2018-12-30 21:55
不錯(cuò),收藏了
作者: feiniu    時(shí)間: 2019-1-25 11:35
謝謝分享
作者: zhlip    時(shí)間: 2019-1-26 07:26
謝謝分享
作者: 開開一方    時(shí)間: 2019-3-10 03:37
學(xué)習(xí)一下
作者: 假如遇到JQ    時(shí)間: 2019-3-12 23:23
看著好厲害
作者: FENGJLONG    時(shí)間: 2019-3-26 02:25
謝謝樓主分享。。W(xué)習(xí)了!
作者: 1657813591    時(shí)間: 2019-4-29 18:41
學(xué)習(xí)了,謝謝分享
作者: 1657813591    時(shí)間: 2019-4-29 18:56
謝謝你的分享,值得學(xué)習(xí)下載!
作者: dfgvgghjhvhg    時(shí)間: 2019-5-21 09:09
作為一個(gè)新手的我,這個(gè)非常好,
作者: tianshenxiafan    時(shí)間: 2019-5-22 12:06
先收藏一波...
作者: wy_l    時(shí)間: 2019-5-24 21:58
厲害厲害
作者: e04610225    時(shí)間: 2019-6-11 15:11
不錯(cuò),學(xué)習(xí)了
作者: 狂野的野馬    時(shí)間: 2019-6-12 18:57
感謝分享,有時(shí)間好好研究下
作者: 1+1=6    時(shí)間: 2019-6-13 16:53
正在學(xué)習(xí),謝謝分享
作者: ljcaaa2008    時(shí)間: 2019-6-18 22:36
謝謝,就是下載積分有點(diǎn)高了
作者: xiaodaishu    時(shí)間: 2019-7-15 18:47
強(qiáng)大的資料,資料很全,學(xué)習(xí)一下
作者: liu668    時(shí)間: 2019-7-18 10:25
下來學(xué)習(xí)下,謝謝分享。
作者: DanMg    時(shí)間: 2019-11-17 20:11
感謝樓主
作者: mm1113512    時(shí)間: 2019-11-26 21:06
學(xué)習(xí)了,謝謝分享
作者: bryan_guan    時(shí)間: 2019-11-27 14:38
有誰照著這個(gè)資料做成功的嗎?我也想做一個(gè)
作者: 小大孩    時(shí)間: 2020-1-27 18:58
51黑有你更精彩!!
作者: chx00912    時(shí)間: 2020-2-16 22:40
感謝分享,拿走了
作者: sxycjjxw31    時(shí)間: 2020-8-12 17:45
謝謝樓主資料分享,正在學(xué)習(xí)中。
作者: 15040578243    時(shí)間: 2021-1-21 07:18
wuxishun 發(fā)表于 2017-12-28 00:31
照樓主的資料搭好線了,但遙控板屏沒顯示,也無任何反應(yīng),接單片機(jī)的燈也沒亮,樓主可以幫解答一下嗎?

您做成功了嗎
作者: 云游天    時(shí)間: 2021-1-21 14:40
這個(gè)下載學(xué)習(xí)一下,謝謝分享
作者: liaoquewuhen    時(shí)間: 2021-10-12 15:37
我最近也畫了一下飛行器的板子,但畫完原理圖發(fā)現(xiàn)MPU6050,HMC5883,BMP085這些芯片是以插針的形式引出來的,所以這幾個(gè)芯片是在另一塊獨(dú)立的板子上嗎,這樣的話不是更加加重了無人機(jī)的重量嗎
作者: 1123qqw    時(shí)間: 2023-3-22 14:53
樓主,你好。我在原理圖中看到飛行器和遙控器,都采用的是BAT供電,這個(gè)是電池嗎?我在飛行器和遙控器的PCB上并沒有找到電池的安放位置。
作者: 1123qqw    時(shí)間: 2023-3-22 14:56
樓主,您好。我在原理圖中發(fā)現(xiàn)遙控器和飛行器采用的都是BAT供電,這個(gè)是電池嗎?但在原理圖中,我并沒有發(fā)現(xiàn)電池的安放位置,只找到了一個(gè)SP1的位置,想問一下飛行器和遙控器怎么供電的?
作者: dj3365191    時(shí)間: 2024-6-9 17:36
樓主你好,請(qǐng)問遙控器的P4連接的是什么模塊
作者: pcf2000    時(shí)間: 2024-10-15 15:04
請(qǐng)問樓主,資料是完整版的嗎,
資料不是完整版怕是要害苦好多人啊
作者: ganlingzhizun    時(shí)間: 2024-10-15 17:04
下載學(xué)習(xí)下,感謝分享
作者: aeqw    時(shí)間: 2025-3-17 10:21
好奇最后能不能順利起降??




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1