久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4603|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

STM32四軸飛行器和飛控遙控器 原理圖PCB源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
多的不說直接上資料

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



單片機(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.         
  118. //                moto[1] = moto1 & 0xFF;
  119. //          moto[0] = (moto1>>8) & 0xFF;
  120. //                moto[3] = moto2 & 0xFF;
  121. //          moto[2] = (moto2>>8) & 0xFF;
  122. //                moto[5] = moto3 & 0xFF;
  123. //          moto[4] = (moto3>>8) & 0xFF;
  124. //                moto[7] = moto4 & 0xFF;
  125. //          moto[6] = (moto4>>8) & 0xFF;        
  126.     //Uart1_Send_Buf(moto,8);               
  127.         if(ARMED)        Moto_PwmRflash(moto1,moto2,moto3,moto4);        //未解鎖則空心杯不轉(zhuǎn)        ARMED=1則解鎖
  128.         else                        Moto_PwmRflash(0,0,0,0);
  129. }
復(fù)制代碼

PCB和代碼 51hei附件下載(網(wǎng)上收集整理的資料 僅供參考):
PCB和代碼.7z (2.44 MB, 下載次數(shù): 186)

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏18 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:417546 發(fā)表于 2022-5-6 16:57 | 只看該作者
有人復(fù)刻嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:1118144 發(fā)表于 2024-5-7 18:56 | 只看該作者
確確實(shí)實(shí)被震撼到了,真的很厲害
回復(fù)

使用道具 舉報(bào)

地板
ID:1118144 發(fā)表于 2024-5-7 18:58 | 只看該作者
求實(shí)物!
回復(fù)

使用道具 舉報(bào)

5#
ID:1118144 發(fā)表于 2024-5-10 12:58 | 只看該作者
求仿真、實(shí)物。感謝!
回復(fù)

使用道具 舉報(bào)

6#
ID:320250 發(fā)表于 2024-5-16 09:08 | 只看該作者
有人做出來的吧,好像大家不玩這個(gè)了
回復(fù)

使用道具 舉報(bào)

7#
ID:320250 發(fā)表于 2024-5-16 09:32 | 只看該作者
那4個(gè)電機(jī)不是無刷電機(jī)的?看原理圖像是有刷電機(jī)
回復(fù)

使用道具 舉報(bào)

8#
ID:542270 發(fā)表于 2024-6-12 15:01 | 只看該作者
等我復(fù)刻
回復(fù)

使用道具 舉報(bào)

9#
ID:25103 發(fā)表于 2024-7-10 16:42 | 只看該作者
感謝樓主分享,謝謝!!
回復(fù)

使用道具 舉報(bào)

10#
ID:1051190 發(fā)表于 2025-1-8 15:59 | 只看該作者
非常好的資料。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频免费观看 | 欧美一级在线观看 | 久久久精 | 不卡av在线 | 少妇一级淫片 | 欧美视频久久 | 中文字幕一区在线 | 欧美福利在线观看 | 色吧综合 | 亚洲在线一区 | 色片在线 | 97超碰资源总站 | 午夜影院在线免费观看 | 成人国产在线观看 | 日本黄色三级视频 | 蜜臀久久99精品久久久久宅男 | 日韩精品一区二区三区中文在线 | 免费黄色小说网站 | 日韩精品一二三 | 久久久久久毛片 | 国产精品一区二区在线播放 | 91丝袜一区在线观看 | 日韩福利一区 | 国产成人免费在线视频 | 久久久久成人网 | 美女操操操 | 中文文字幕文字幕高清 | 在线成人免费视频 | 日韩欧美在线观看 | 久久cao | 国产区在线 | 午夜视频一区二区三区 | 午夜影片 | 日韩视频专区 | 亚洲精品网站在线观看 | 香蕉视频一区二区三区 | 国产欧美久久久 | 中文字幕一区二区三区视频 | 韩国理论在线 | 精品一区在线播放 | 日韩在线中文字幕 |