打印

用Arduino扩展无人飞行器+普及四轴飞行器知识,不会算法的人必看

[复制链接]
1913|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yunlingh|  楼主 | 2016-4-9 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,购买航模零件()/////对航模熟悉的人可跳过此段!
      {
         机架:我采用的是ATG-700AL-X6,淘宝有卖,玻纤版本的180左右,也有炭纤版本接近400,轴距700mm,轴杆为10×10mm的铝合金材质,支持2212/2216/2814的无刷电机,稳定的kv建议值为880-1000kv(由于刚刚接触航模的人可能不清楚这些数字的意思,我在这里做一个简单解释:2212/221是无刷电机的规格,2212表示线圈外径22毫米,电机高度12毫米,Kv1000表示空载下每增加1V电压转速大约提高1000rpm,够清楚明白吧!)推荐的理由是这款机架在大尺寸6轴是信价比较高的,价格便宜又好用对于初次接触飞行器的人来说当然是首选,再来就是结构简单,扩展非常方便,还有就是我觉得这个机架还比较帅。。。




////////////////////////////////////////////////
       电机:我采用的是郎宇2216 880kv无刷电机,淘宝有卖,109元/个,小贵 ,cnc做工精细,动静平衡好,稳定,如果需要购买这款电机建议不要买太便宜的,因为郎宇电机假货多,电机非常重要,所以不要再重要部件上太省,如果感觉此款电机太贵可以选择:新西达2212 1000kv的电机,好处就是便宜,坏处是震动大,淘宝30块钱拿下,还是很不错的,新手首选,摔坏了也不心疼,自己动手焊接头,电机就不多说了,下面说说电调。




////////////////////////////////////////////////
       电调:电调我的选择是    好盈   天行者系列 SkyWalker  40A。电调就是电子调速器,简单说就是把直流电变成交流电,然后用PWM信号控制电机转速 ,电调都是可以用arduino舵机库使用的,非常方便,函数赋值的角度越大,电机转速越快,但是行程不是0-180,有问题?别急,下文会细说。这个电调淘宝55元/个,同样几轴就需要几个,一个电机配一个电调,至于电流大小要根据电机来看,这类电机配30A的也可以不过价格差距太小了选个40A的保守点嘛。品牌也可以选择新西达电调,便宜。。。也能用。


///////////////////////////////////////////////////
      桨:桨我选择的是ATG  1147,这款桨价格合理,平衡很好,配合郎宇2216 880kv是黄金组合,1147的意思是桨长度11英寸(1英寸=2.54cm),47是螺旋桨的螺距,重要的是桨的长度是不能随便选的,记住:越长的桨就要配kv值越低的电机,然而桨越大,推力也越大,也相对越省电,力效就高,880kv一般最好的组合就是11英寸合理,1000kv就是配10寸的合理,如果你是做固定翼飞机的,(固定翼就是飞机翅膀是不转的,我们座的航班就是固定翼,直升机就是旋翼)那么kv值就要很高甚至是两千多kv的才行了,这个我也没玩过就不说了,这里主要说多旋翼无人机。
//////////////////////////////////////////////////////
      电池:电池的重要程度甚至高于电机,很多炸机(就是飞机掉下来摔了)的就是因为电池的原因,如果是4轴选容量2200mah-4000mah比较合适,6轴的话建议5300mah以上,4轴2200mah电池一般能飞6-7分钟,但这个仅供参考,航模电池上写有20C ,30C,40c。。。。如果我没记错的话,这个是电池的放电能力的表现,比如你的电池是5000mah,30c的,那么你电池的最大放电能力就是5000×30=150000ma=150A,一般来说无人机30C的电池是标配,还有个数字是1s   2s   3s    6s 等等, 这个意思是你的锂电池电芯数量,一个电芯电压大约是3.7v,那么3s的电池3×3.7v=11.1v的电压,6s的电池就是6×3.7v=22.2v,以此类推,电池的电压要看参考电机电调来买,这里我用的电池是30C   3s的锂电,因为电机是11v的,容量的话根据自己需要的飞行时间和飞机载重来买。品牌推荐ACE(格氏电池),5300mah,3s的价格 400元左右,名牌,用的人也多,淘宝有旗舰店可放心购买,另外便宜点的狮子电池也不错,淘宝也有。
///////////////////////////////////////////////////////////
       飞控:这个东西是飞机的控制核心,平衡全靠它,品种繁多,有开源飞控:kk,APM,MWC,pix,等等,商业飞控:比较出名的有大疆的naza ,A2。零度智控的双子星等,飞控一般价格越高的越稳,价格最低的70元左右,贵的上万也有。在这里我用qq飞控,qq飞控是闭源飞控,有自稳功,价格不超过100,淘宝也有,最多支持六轴,不用调参,简单易用。

(我也非常奇怪为什么qq飞控的背后有个foobar2000的logo。。。)
     ////////////////////////////////////////////////////////
        遥控器:我采用的是信价比较高的天地飞7,行货450左右,7个通道,配一个接收机,遥控距离500m,如果需要更远的遥控可以买增距器,或者叫遥控信号增益器,可以将遥控距离增加到几公里甚至更远,然后最好买模拟器(电脑上模拟开飞机的一套系统包括硬件和软件),否则很难在第一次操控好无人机,比较自信的或者玩过航模的也可以不用模拟器。遥控器品种繁多,也有较好的futaba遥控器,价格3000+,新手建议天地飞6或天地飞7,天地飞6不带显示屏,淘宝很多。


}
//////////////////////////////////////////////////////////////
几个基本的东西都说完了,其他小配件就不在这里多讲了,接下来我们一起造飞机{:soso_e130:}
//////////////////////////////////////////////////////
2,开始造飞机
{
     我看帖子都比较喜欢看图,所以咱们上图讲!
     第一步,将准备好的硅胶电线取合适的长度穿进机架的轴杆,这里用的为16AWG的电线,其实18AWG就够了(这个东数值越小那么电线就越粗,承载能力就越强,一般干线用12AWG-14AWG粗一点的,电机的分线用18AWG-16AWG的也就合适)

      
每根轴杆里面有三根电线用想香蕉头焊接好,然后用热缩管包好




部好电线后就可以开始安装电机了



电机安装好后开始焊接电线另一头




用香蕉头公头焊好方便连接电调,在用电池粘把电调粘在机架中心板上



效果已经出来了

电机的位置,电机的出线处刚好是进入轴杆内部的,和事先预留在管内的电线连接

电机很漂亮


现在开始焊接电调,因6个电调的输入端都是并联,可以使用电调板焊接,最后汇总干线直接接电池!

按照正负焊接好电调,这里一定要注意正负,否则后果很严重


好了,大功告成




装上QQ飞控,M1-M6电机分别按照说明书位置和6个电调连接,(注意在此之前需要做油门行程校准,此步骤这里不做详细解答,电调说明书上有确切的步骤,需要强调的是,电调油门行程校准不是在连接飞控后进行的,意思就是说直接将接收机的油门通道连接电调进行油门行程校准!)
此步骤全部完成后进行飞控的中心点校准,和遥控器行程校准,在这里不做详细解答,最后试飞!,也就是说在用arduino扩展之前需要飞机能飞!
到这里你应该能明白,飞控和接收机的电源是电调的控制线输出的,电调的电源来自电池,这里就有一个问题,电调输出的电压是多少?这个在电调上会写出,一般是5v,刚好也是arduino的输出电压,这套系统的全称叫做BEC,全程为battey elimination circuit 中文翻译成免电池电路 在电调里设置了一个电路模块,将11V电池输出的电压转换到5V给接收机和舵机飞控等电子设备使用(当然电机还是用11V供电的)这样就省去了那个5V电池这就是BEC(免电池电路)名称的由来。
}
此时此刻,飞机已经可以玩了,那么我们就开始上主角Arduino!
这里我采用的是Mega2560,别急,我们先不谈扩展,我们先让arduino融入到无人机的控制系统中去,特洛伊木马也是先潜入再动手脚的嘛,这里的Arduino就是个特洛伊木马{:soso_e113:}



首选在接收机的任意一个空置插口引出一个vcc和GND,直接连接arduino 5v 和GND,这时你的arduino就和飞机连成了一套系统,可以共同工作了,接下来把接收机供给飞控的四根信号线从飞控上卸下,连接在arduino上的任意数字端口,我连接的是22,24,26,28,而这四根线的作用分别是AIL副翼,ELE升降,THR油门,RUD方向,这是干嘛用的呢,其实这些词都是固定翼飞机的,那么在多旋翼无人机上的意思是什么呢,很简单,AIL副翼信号就是控制飞机在水平面俯仰的,也就是说当飞机俯下去的时候,飞机会产生一个向前的分解力,就会向前飞,向后仰的时候会分解一个向后的力飞机向后飞。同样这个ELE升降其实不是真正控制无人机升降的,是和副翼一样,不过是向左倾斜和向右倾斜而已,飞机就向左向右飞。而这个THR油门,其实是控制飞机起飞和下降的,油门大飞机就直升,油门小了就将下来了。RUD方向是控制飞机水平转动的,左转右转,飞机的方向改变,但位置不会变。把这几个接口接上arduino后,我们开始用arduino来看看这个信号的奥秘,其实它就是PWM信号,不信你直接接一个舵机去试试,舵机会随着遥控的控制而转动,那么怎么读取这个PWM信号呢,我们从源代码开始讲!上源代码{:soso_e112:}
#include<Servo.h>;
#define AIL1  22   //AIL fuyi
#define ELE2  24   //ELE shengjiang
#define THR3  26   //THR youmen
#define RUD4  28   //RUD fangxiang
#define LED   13
unsigned long INAIL;
unsigned long INELE;
unsigned long INTHR;
unsigned long INRUD;
int OUTAIL;
int OUTELE;
int OUTTHR;
int OUTRUD;
Servo AIL;
Servo ELE;
Servo THR;
Servo RUD;

void setup()
{  
  pinMode(AIL1,0);
  pinMode(ELE2,0);
  pinMode(THR3,0);
  pinMode(RUD4,0);
  pinMode(LED,1);

AIL.attach(4);
  ELE.attach(5);
  THR.attach(6);
  RUD.attach(7);

  Serial.begin(9600);
}
void loop()
{
  digitalWrite(LED,1);
  INAIL = pulseIn(AIL1, 1);
  INELE = pulseIn(ELE2, 1);
  INTHR = pulseIn(THR3, 1);
  INRUD = pulseIn(RUD4, 1);

OUTAIL = map(INAIL,1010,2007,47,144);
  OUTELE = map(INELE,1010,2007,47,144);
  OUTTHR = map(INTHR,1010,2007,47,144);
  OUTRUD = map(INRUD,1010,2007,47,144);
  
  AIL.write(OUTAIL);
  ELE.write(OUTELE);
  THR.write(OUTTHR);
  RUD.write(OUTRUD);

  int dianya = analogRead(A0);
  float wendu = dianya * (5.0 / 1023.0*100);  
  Serial.print("AIL=");
  Serial.print(INAIL);
  Serial.print(" ELE=");
  Serial.print(INELE);
  Serial.print(" THR=");
  Serial.print(INTHR);
  Serial.print(" RUD=");
  Serial.print(INRUD);
  Serial.print(" wendu=");
  Serial.println(wendu);      

  digitalWrite(LED,0);
  delay(5);

}


相关帖子

沙发
mmuuss586| | 2016-4-10 15:42 | 只看该作者

不错,支持下;

使用特权

评论回复
板凳
shermyzhou| | 2016-4-12 10:16 | 只看该作者

使用特权

评论回复
地板
关关| | 2016-7-26 20:33 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝