久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用Arduino擴(kuò)展無人飛行器+普及無人機(jī)知識,,不會算法的人必看

 7點5造 2015-11-15
相信大多數(shù)arduino愛好者想做一個自己的無人機(jī),,但很多人都被四元數(shù),卡爾曼濾波,,PID等需要花功夫才能搞定的東西難住,。。,。不想去研究復(fù)雜的算法和硬件同時也能用arduino做出自己滿意的無人飛行器,?那么你就來對地方了!  現(xiàn)在,,我們從零開始,!
1,購買航模零件()/////對航模熟悉的人可跳過此段,!
      {
         機(jī)架:我采用的是ATG-700AL-X6,,淘寶有賣,玻纖版本的180左右,,也有炭纖版本接近400,,軸距700mm,軸桿為10×10mm的鋁合金材質(zhì),,支持2212/2216/2814的無刷電機(jī),,穩(wěn)定的kv建議值為880-1000kv(由于剛剛接觸航模的人可能不清楚這些數(shù)字的意思,,我在這里做一個簡單解釋:2212/221是無刷電機(jī)的規(guī)格,,2212表示線圈外徑22毫米,電機(jī)高度12毫米,,Kv1000表示空載下每增加1V電壓轉(zhuǎn)速大約提高1000rpm,,夠清楚明白吧,!)推薦的理由是這款機(jī)架在大尺寸6軸是信價比較高的,價格便宜又好用對于初次接觸飛行器的人來說當(dāng)然是首選,,再來就是結(jié)構(gòu)簡單,,擴(kuò)展非常方便,還有就是我覺得這個機(jī)架還比較帥,。,。。



////////////////////////////////////////////////
       電機(jī):我采用的是郎宇2216 880kv無刷電機(jī),,淘寶有賣,,109元/個,小貴 ,,cnc做工精細(xì),,動靜平衡好,,穩(wěn)定,如果需要購買這款電機(jī)建議不要買太便宜的,,因為郎宇電機(jī)假貨多,,電機(jī)非常重要,所以不要再重要部件上太省,,如果感覺此款電機(jī)太貴可以選擇:新西達(dá)2212 1000kv的電機(jī),,好處就是便宜,壞處是震動大,,淘寶30塊錢拿下,,還是很不錯的,新手首選,,摔壞了也不心疼,,自己動手焊接頭,電機(jī)就不多說了,,下面說說電調(diào),。

////////////////////////////////////////////////
       電調(diào):電調(diào)我的選擇是    好盈   天行者系列 SkyWalker  40A。電調(diào)就是電子調(diào)速器,,簡單說就是把直流電變成交流電,,然后用PWM信號控制電機(jī)轉(zhuǎn)速 ,電調(diào)都是可以用arduino舵機(jī)庫使用的,,非常方便,,函數(shù)賦值的角度越大,電機(jī)轉(zhuǎn)速越快,,但是行程不是0-180,,有問題?別急,,下文會細(xì)說,。這個電調(diào)淘寶55元/個,同樣幾軸就需要幾個,,一個電機(jī)配一個電調(diào),,至于電流大小要根據(jù)電機(jī)來看,這類電機(jī)配30A的也可以不過價格差距太小了選個40A的保守點嘛,。品牌也可以選擇新西達(dá)電調(diào),,便宜。,。,。也能用。

///////////////////////////////////////////////////
      槳:槳我選擇的是ATG  1147,,這款槳價格合理,,平衡很好,,配合郎宇2216 880kv是黃金組合,1147的意思是槳長度11英寸(1英寸=2.54cm),,47好像是中間洞洞的大小,,重要的是槳的長度是不能隨便選的,記?。涸介L的槳就要配kv值越低的電機(jī),然而槳越大,,推力也越大,,也相對越省電,力效就高,,880kv一般最好的組合就是11英寸合理,,1000kv就是配10寸的合理,如果你是做固定翼飛機(jī)的,,(固定翼就是飛機(jī)翅膀是不轉(zhuǎn)的,,我們座的航班就是固定翼,直升機(jī)就是旋翼)那么kv值就要很高甚至是兩千多kv的才行了,,這個我也沒玩過就不說了,,這里主要說多旋翼無人機(jī)。
//////////////////////////////////////////////////////
      電池:電池的重要程度甚至高于電機(jī),,很多炸機(jī)(就是飛機(jī)掉下來摔了)的就是因為電池的原因,,如果是4軸選容量2200mah-4000mah比較合適,6軸的話建議5300mah以上,,4軸2200mah電池一般能飛6-7分鐘,,但這個僅供參考,航模電池上寫有20C ,,30C,,40c。,。,。。如果我沒記錯的話,,這個是電池的放電能力的表現(xiàn),,比如你的電池是5000mah,30c的,,那么你電池的最大放電能力就是5000×30=150000ma=150A,,一般來說無人機(jī)30C的電池是標(biāo)配,還有個數(shù)字是1s   2s   3s    6s 等等,, 這個意思是你的鋰電池電芯數(shù)量,,一個電芯電壓大約是3.7v,,那么3s的電池3×3.7v=11.1v的電壓,6s的電池就是6×3.7v=22.2v,,以此類推,,電池的電壓要看參考電機(jī)電調(diào)來買,這里我用的電池是30C   3s的鋰電,,因為電機(jī)是11v的,,容量的話根據(jù)自己需要的飛行時間和飛機(jī)載重來買。品牌推薦ACE(格氏電池),,5300mah,,3s的價格 400元左右,名牌,,用的人也多,,淘寶有旗艦店可放心購買,另外便宜點的獅子電池也不錯,,淘寶也有,。
///////////////////////////////////////////////////////////
       飛控:這個東西是飛機(jī)的控制核心,平衡全靠它,,品種繁多,,有開源飛控:kk,APM,,MWC,,pix,等等,商業(yè)飛控:比較出名的有大疆的naza ,,A2,。零度智控的雙子星等,飛控一般價格越高的越穩(wěn),,價格最低的70元左右,,貴的上萬也有。在這里我用qq飛控,,qq飛控是閉源飛控,,有自穩(wěn)功,價格不超過100,,淘寶也有,,最多支持六軸,不用調(diào)參,,簡單易用,。
(我也非常奇怪為什么qq飛控的背后有個foobar2000的logo。。,。)
     ////////////////////////////////////////////////////////
        遙控器:我采用的是信價比較高的天地飛7,,行貨450左右,7個通道,,配一個接收機(jī),,遙控距離500m,如果需要更遠(yuǎn)的遙控可以買增距器,,或者叫遙控信號增益器,,可以將遙控距離增加到幾公里甚至更遠(yuǎn),然后最好買模擬器(電腦上模擬開飛機(jī)的一套系統(tǒng)包括硬件和軟件),,否則很難在第一次操控好無人機(jī),,比較自信的或者玩過航模的也可以不用模擬器。遙控器品種繁多,,也有較好的futaba遙控器,價格3000+,,新手建議天地飛6或天地飛7,,天地飛6不帶顯示屏,淘寶很多,。

}
//////////////////////////////////////////////////////////////
幾個基本的東西都說完了,,其他小配件就不在這里多講了,接下來我們一起造飛機(jī)
//////////////////////////////////////////////////////
2,開始造飛機(jī)
{
     我看帖子都比較喜歡看圖,,所以咱們上圖講,!
     第一步,將準(zhǔn)備好的硅膠電線取合適的長度穿進(jìn)機(jī)架的軸桿,,這里用的為16AWG的電線,,其實18AWG就夠了(這個東數(shù)值越小那么電線就越粗,承載能力就越強(qiáng),,一般干線用12AWG-14AWG粗一點的,,電機(jī)的分線用18AWG-16AWG的也就合適)
     
每根軸桿里面有三根電線用想香蕉頭焊接好,然后用熱縮管包好

部好電線后就可以開始安裝電機(jī)了
電機(jī)安裝好后開始焊接電線另一頭


用香蕉頭公頭焊好方便連接電調(diào),,在用電池粘把電調(diào)粘在機(jī)架中心板上
效果已經(jīng)出來了
電機(jī)的位置,,電機(jī)的出線處剛好是進(jìn)入軸桿內(nèi)部的,和事先預(yù)留在管內(nèi)的電線連接
電機(jī)很漂亮

現(xiàn)在開始焊接電調(diào),,因6個電調(diào)的輸入端都是并聯(lián),,可以使用電調(diào)板焊接,最后匯總干線直接接電池,!
按照正負(fù)焊接好電調(diào),,這里一定要注意正負(fù),否則后果很嚴(yán)重

好了,,大功告成


裝上QQ飛控,,M1-M6電機(jī)分別按照說明書位置和6個電調(diào)連接,,(注意在此之前需要做油門行程校準(zhǔn),此步驟這里不做詳細(xì)解答,,電調(diào)說明書上有確切的步驟,,需要強(qiáng)調(diào)的是,電調(diào)油門行程校準(zhǔn)不是在連接飛控后進(jìn)行的,,意思就是說直接將接收機(jī)的油門通道連接電調(diào)進(jìn)行油門行程校準(zhǔn)?。?/font>
此步驟全部完成后進(jìn)行飛控的中心點校準(zhǔn),和遙控器行程校準(zhǔn),,在這里不做詳細(xì)解答,,最后試飛!,,也就是說在用arduino擴(kuò)展之前需要飛機(jī)能飛,!
到這里你應(yīng)該能明白,飛控和接收機(jī)的電源是電調(diào)的控制線輸出的,,電調(diào)的電源來自電池,,這里就有一個問題,電調(diào)輸出的電壓是多少,?這個在電調(diào)上會寫出,,一般是5v,剛好也是arduino的輸出電壓,,這套系統(tǒng)的全稱叫做BEC,,全程為battey elimination circuit 中文翻譯成免電池電路 在電調(diào)里設(shè)置了一個電路模塊,將11V電池輸出的電壓轉(zhuǎn)換到5V給接收機(jī)和舵機(jī)飛控等電子設(shè)備使用(當(dāng)然電機(jī)還是用11V供電的)這樣就省去了那個5V電池這就是BEC(免電池電路)名稱的由來,。
}
此時此刻,,飛機(jī)已經(jīng)可以玩了,,那么我們就開始上主角Arduino,!
這里我采用的是Mega2560,別急,,我們先不談擴(kuò)展,我們先讓arduino融入到無人機(jī)的控制系統(tǒng)中去,,特洛伊木馬也是先潛入再動手腳的嘛,,這里的Arduino就是個特洛伊木馬

那么接線怎么接,我慢慢給大家說清楚,,首選在接收機(jī)的任意一個空置插口引出一個vcc和GND,,直接連接arduino 5v 和GND,,這時你的arduino就和飛機(jī)連成了一套系統(tǒng),,可以共同工作了,接下來把接收機(jī)供給飛控的四根信號線從飛控上卸下,,連接在arduino上的任意數(shù)字端口,,我連接的是22,24,,26,,28,而這四根線的作用分別是AIL副翼,,ELE升降,,THR油門,RUD方向,,這是干嘛用的呢,,其實這些詞都是固定翼飛機(jī)的,那么在多旋翼無人機(jī)上的意思是什么呢,,很簡單,AIL副翼信號就是控制飛機(jī)在水平面俯仰的,,也就是說當(dāng)飛機(jī)俯下去的時候,,飛機(jī)會產(chǎn)生一個向前的分解力,就會向前飛,,向后仰的時候會分解一個向后的力飛機(jī)向后飛,。同樣這個ELE升降其實不是真正控制無人機(jī)升降的,是和副翼一樣,,不過是向左傾斜和向右傾斜而已,,飛機(jī)就向左向右飛。而這個THR油門,,其實是控制飛機(jī)起飛和下降的,,油門大飛機(jī)就直升,油門小了就將下來了,。RUD方向是控制飛機(jī)水平轉(zhuǎn)動的,,左轉(zhuǎn)右轉(zhuǎn),飛機(jī)的方向改變,,但位置不會變,。把這幾個接口接上arduino后,我們開始用arduino來看看這個信號的奧秘,其實它就是PWM信號,,不信你直接接一個舵機(jī)去試試,,舵機(jī)會隨著遙控的控制而轉(zhuǎn)動,那么怎么讀取這個PWM信號呢,,我們從源代碼開始講,!上源代碼
#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);

}
好了,代碼非常簡單,,讀取PWM信號的代碼我已用紅字標(biāo)出,,我用到了 pluseIn()函數(shù),這個函數(shù)可以讀取指定端口的電平脈沖時間,,沒錯,,那就是PWM的寬度,接下來我用串口輸出了這個時間到底是多少我們一起看大屏幕,。
此時我的油門處于最低位,,我們可以看見THR油門的值在1000左右,先不管其他的值,。

緊接著我吧油門推到最高我們看看又是多少

很巧,,2000左右,那么區(qū)間大約是1000-2000,,接著我又試著吧其他的幾個搖桿搬動,,發(fā)現(xiàn)最小值和最大值都是在1000-2000,那么可以說明遙控的行程都是一樣的,,每個通道發(fā)出的PWM信號也是一樣的范圍,,好的,那么我們現(xiàn)在可以把這個PWM信號原封不動的輸出到飛控,,這樣的話arduino就完全融入了這個系統(tǒng)中,,那么問題來了,怎么輸出PWM呢,。,。。,。呵呵,,還記得我在介紹電調(diào)的時候說過嗎,電調(diào)可以直接用arduino 的舵機(jī)庫的舵機(jī)函數(shù)來控制,,好的,,那么請看代碼藍(lán)色部分。//////////////////////////////
看完了藍(lán)色部分,,有人看出了,,OUTTHR = map(INTHR,1010,2007,47,144); 這是個縮放函數(shù),,讓1010-2007縮放為47-144,這里有人會問,,為什么是1010-2007,,為什么是47-144,我再來和同學(xué)們講解,,剛剛在取樣的時候我們發(fā)現(xiàn)arduino讀取的PWM寬度在1000-2000之間,,但是有些值是大于2000的,那么我取了一個更大的區(qū)間,,來“裝”PWM的區(qū)間,,所以是1000-2007,但是為什么要讓舵機(jī)輸出47-144度呢,。這里要用點小技巧,,羊毛出在羊身上,沒錯我們讓arduino自己給自己測脈沖時間,,我們可以寫一個很簡單的代碼,,還記得剛剛那個pluseIn()函數(shù)嗎,我們讓任意一個端口輸出一個90度的舵機(jī)角度值,,也就是xxxx.write(90); 然后把這個端口接在arduino其他任意一個數(shù)字端口上,,用pluseIn()去測這個90度的脈寬是多少,比如90度測出來脈沖時間是1500,,大了,,我們要找的是1000-2000范圍的那個舵機(jī)角度,我們再來一個30度,,或者170度,,就這樣把范圍越縮越小,最后,,我找出了他們之間的關(guān)系,47度的舵機(jī)輸出,,用pluseIn()去測量剛好在1000左右,,那么地、低位就找到了,,同樣高位在144度上 脈沖寬度時間是2000左右,,那么接下來代碼大家都看懂了吧?,,這里的arduino就原封不動的把接收機(jī)的信號吃進(jìn)去了,,又吐出來給飛控,至此,,arduino已經(jīng)完全潛入飛機(jī)控制系統(tǒng),,那么接下來,,沒錯,試飛,!視頻連接:
http://www./media/232728596
嘿嘿,,現(xiàn)在想干嘛不行呢,這種想象空間就交給大家啦,!可以看出我寫的代碼中有一個是測量電調(diào)溫度的,,我們看看圖

沒錯,就是那個小小的LM35D溫度傳感器,。好了,,我的飛機(jī)目前狀態(tài)也和此帖保持一樣的進(jìn)度,但是在這里還是要向大家提出幾個實驗中發(fā)現(xiàn)的問題,,1:由于用pluseIn()函數(shù)讀出接收機(jī)的脈沖時間是一個會波動的數(shù),,我們可以想一個辦法濾波讓數(shù)值更加穩(wěn)定。2:在arduino用pluseIn()函數(shù)測試自己輸出的舵機(jī)角度端口脈沖值的時候,,用求斜率的辦法得出斜率K1=47/1010=0.0465346534653465.K2=144/2007=0.0717488789237668,。K1不等于K2,也就是說他們之間的關(guān)系是非線性的,,我并不知道這是為什么,,希望有知道問題所在的大神求解,未完待續(xù),。,。。,。




上一篇:Flexbot申請通過了
下一篇:新人小白請問各位大神arduino控制飛行器的問題

QQ截圖20150130172033.png (513.47 KB, 下載次數(shù): 7)

QQ截圖20150130172033.png

QQ截圖20150130212116.png (900.59 KB, 下載次數(shù): 2)

QQ截圖20150130212116.png

QQ截圖20150130212143.png (1001.01 KB, 下載次數(shù): 6)

QQ截圖20150130212143.png

QQ截圖20150130212201.png (367.75 KB, 下載次數(shù): 1)

QQ截圖20150130212201.png

QQ截圖20150130212209.png (907.54 KB, 下載次數(shù): 6)

QQ截圖20150130212209.png
相信大多數(shù)arduino愛好者想做一個自己的無人機(jī),,但很多人都被四元數(shù),卡爾曼濾波,,PID等需要花功夫才能搞定的東西難住,。。,。不想去研究復(fù)雜的算法和硬件同時也能用arduino做出自己滿意的無人飛行器,?那么你就來對地方了!  現(xiàn)在,,我們從零開始,!
1,購買航模零件()/////對航模熟悉的人可跳過此段,!
      {
         機(jī)架:我采用的是ATG-700AL-X6,,淘寶有賣,玻纖版本的180左右,,也有炭纖版本接近400,,軸距700mm,,軸桿為10×10mm的鋁合金材質(zhì),支持2212/2216/2814的無刷電機(jī),,穩(wěn)定的kv建議值為880-1000kv(由于剛剛接觸航模的人可能不清楚這些數(shù)字的意思,,我在這里做一個簡單解釋:2212/221是無刷電機(jī)的規(guī)格,2212表示線圈外徑22毫米,,電機(jī)高度12毫米,,Kv1000表示空載下每增加1V電壓轉(zhuǎn)速大約提高1000rpm,夠清楚明白吧,!)推薦的理由是這款機(jī)架在大尺寸6軸是信價比較高的,,價格便宜又好用對于初次接觸飛行器的人來說當(dāng)然是首選,再來就是結(jié)構(gòu)簡單,,擴(kuò)展非常方便,,還有就是我覺得這個機(jī)架還比較帥。,。,。



////////////////////////////////////////////////
       電機(jī):我采用的是郎宇2216 880kv無刷電機(jī),淘寶有賣,,109元/個,,小貴 ,cnc做工精細(xì),,動靜平衡好,,穩(wěn)定,如果需要購買這款電機(jī)建議不要買太便宜的,,因為郎宇電機(jī)假貨多,,電機(jī)非常重要,所以不要再重要部件上太省,,如果感覺此款電機(jī)太貴可以選擇:新西達(dá)2212 1000kv的電機(jī),,好處就是便宜,壞處是震動大,,淘寶30塊錢拿下,,還是很不錯的,新手首選,,摔壞了也不心疼,自己動手焊接頭,,電機(jī)就不多說了,,下面說說電調(diào)。

////////////////////////////////////////////////
       電調(diào):電調(diào)我的選擇是    好盈   天行者系列 SkyWalker  40A,。電調(diào)就是電子調(diào)速器,,簡單說就是把直流電變成交流電,,然后用PWM信號控制電機(jī)轉(zhuǎn)速 ,電調(diào)都是可以用arduino舵機(jī)庫使用的,,非常方便,,函數(shù)賦值的角度越大,電機(jī)轉(zhuǎn)速越快,,但是行程不是0-180,,有問題?別急,,下文會細(xì)說,。這個電調(diào)淘寶55元/個,同樣幾軸就需要幾個,,一個電機(jī)配一個電調(diào),,至于電流大小要根據(jù)電機(jī)來看,這類電機(jī)配30A的也可以不過價格差距太小了選個40A的保守點嘛,。品牌也可以選擇新西達(dá)電調(diào),,便宜。,。,。也能用。

///////////////////////////////////////////////////
      槳:槳我選擇的是ATG  1147,,這款槳價格合理,,平衡很好,配合郎宇2216 880kv是黃金組合,,1147的意思是槳長度11英寸(1英寸=2.54cm),,47好像是中間洞洞的大小,重要的是槳的長度是不能隨便選的,,記?。涸介L的槳就要配kv值越低的電機(jī),然而槳越大,,推力也越大,,也相對越省電,力效就高,,880kv一般最好的組合就是11英寸合理,,1000kv就是配10寸的合理,如果你是做固定翼飛機(jī)的,,(固定翼就是飛機(jī)翅膀是不轉(zhuǎn)的,,我們座的航班就是固定翼,直升機(jī)就是旋翼)那么kv值就要很高甚至是兩千多kv的才行了,,這個我也沒玩過就不說了,,這里主要說多旋翼無人機(jī),。
//////////////////////////////////////////////////////
      電池:電池的重要程度甚至高于電機(jī),很多炸機(jī)(就是飛機(jī)掉下來摔了)的就是因為電池的原因,,如果是4軸選容量2200mah-4000mah比較合適,,6軸的話建議5300mah以上,4軸2200mah電池一般能飛6-7分鐘,,但這個僅供參考,,航模電池上寫有20C ,30C,,40c,。。,。,。如果我沒記錯的話,這個是電池的放電能力的表現(xiàn),,比如你的電池是5000mah,,30c的,那么你電池的最大放電能力就是5000×30=150000ma=150A,,一般來說無人機(jī)30C的電池是標(biāo)配,,還有個數(shù)字是1s   2s   3s    6s 等等, 這個意思是你的鋰電池電芯數(shù)量,,一個電芯電壓大約是3.7v,,那么3s的電池3×3.7v=11.1v的電壓,6s的電池就是6×3.7v=22.2v,,以此類推,,電池的電壓要看參考電機(jī)電調(diào)來買,這里我用的電池是30C   3s的鋰電,,因為電機(jī)是11v的,,容量的話根據(jù)自己需要的飛行時間和飛機(jī)載重來買。品牌推薦ACE(格氏電池),,5300mah,,3s的價格 400元左右,名牌,,用的人也多,,淘寶有旗艦店可放心購買,另外便宜點的獅子電池也不錯,,淘寶也有,。
///////////////////////////////////////////////////////////
       飛控:這個東西是飛機(jī)的控制核心,平衡全靠它,品種繁多,,有開源飛控:kk,APM,,MWC,,pix,等等,商業(yè)飛控:比較出名的有大疆的naza ,,A2,。零度智控的雙子星等,飛控一般價格越高的越穩(wěn),,價格最低的70元左右,,貴的上萬也有。在這里我用qq飛控,,qq飛控是閉源飛控,,有自穩(wěn)功,價格不超過100,,淘寶也有,,最多支持六軸,不用調(diào)參,,簡單易用,。
(我也非常奇怪為什么qq飛控的背后有個foobar2000的logo。,。,。)
     ////////////////////////////////////////////////////////
        遙控器:我采用的是信價比較高的天地飛7,行貨450左右,,7個通道,,配一個接收機(jī),遙控距離500m,,如果需要更遠(yuǎn)的遙控可以買增距器,,或者叫遙控信號增益器,可以將遙控距離增加到幾公里甚至更遠(yuǎn),,然后最好買模擬器(電腦上模擬開飛機(jī)的一套系統(tǒng)包括硬件和軟件),,否則很難在第一次操控好無人機(jī),比較自信的或者玩過航模的也可以不用模擬器,。遙控器品種繁多,,也有較好的futaba遙控器,價格3000+,,新手建議天地飛6或天地飛7,,天地飛6不帶顯示屏,淘寶很多。

}
//////////////////////////////////////////////////////////////
幾個基本的東西都說完了,,其他小配件就不在這里多講了,,接下來我們一起造飛機(jī)
//////////////////////////////////////////////////////
2,開始造飛機(jī)
{
     我看帖子都比較喜歡看圖,所以咱們上圖講,!
     第一步,,將準(zhǔn)備好的硅膠電線取合適的長度穿進(jìn)機(jī)架的軸桿,這里用的為16AWG的電線,,其實18AWG就夠了(這個東數(shù)值越小那么電線就越粗,,承載能力就越強(qiáng),一般干線用12AWG-14AWG粗一點的,,電機(jī)的分線用18AWG-16AWG的也就合適)
     
每根軸桿里面有三根電線用想香蕉頭焊接好,,然后用熱縮管包好

部好電線后就可以開始安裝電機(jī)了
電機(jī)安裝好后開始焊接電線另一頭


用香蕉頭公頭焊好方便連接電調(diào),在用電池粘把電調(diào)粘在機(jī)架中心板上
效果已經(jīng)出來了
電機(jī)的位置,,電機(jī)的出線處剛好是進(jìn)入軸桿內(nèi)部的,,和事先預(yù)留在管內(nèi)的電線連接
電機(jī)很漂亮

現(xiàn)在開始焊接電調(diào),因6個電調(diào)的輸入端都是并聯(lián),,可以使用電調(diào)板焊接,,最后匯總干線直接接電池!
按照正負(fù)焊接好電調(diào),,這里一定要注意正負(fù),,否則后果很嚴(yán)重

好了,大功告成


裝上QQ飛控,,M1-M6電機(jī)分別按照說明書位置和6個電調(diào)連接,,(注意在此之前需要做油門行程校準(zhǔn),此步驟這里不做詳細(xì)解答,,電調(diào)說明書上有確切的步驟,,需要強(qiáng)調(diào)的是,電調(diào)油門行程校準(zhǔn)不是在連接飛控后進(jìn)行的,,意思就是說直接將接收機(jī)的油門通道連接電調(diào)進(jìn)行油門行程校準(zhǔn)?。?/font>
此步驟全部完成后進(jìn)行飛控的中心點校準(zhǔn),和遙控器行程校準(zhǔn),,在這里不做詳細(xì)解答,,最后試飛!,,也就是說在用arduino擴(kuò)展之前需要飛機(jī)能飛,!
到這里你應(yīng)該能明白,飛控和接收機(jī)的電源是電調(diào)的控制線輸出的,,電調(diào)的電源來自電池,,這里就有一個問題,電調(diào)輸出的電壓是多少?這個在電調(diào)上會寫出,,一般是5v,,剛好也是arduino的輸出電壓,這套系統(tǒng)的全稱叫做BEC,,全程為battey elimination circuit 中文翻譯成免電池電路 在電調(diào)里設(shè)置了一個電路模塊,,將11V電池輸出的電壓轉(zhuǎn)換到5V給接收機(jī)和舵機(jī)飛控等電子設(shè)備使用(當(dāng)然電機(jī)還是用11V供電的)這樣就省去了那個5V電池這就是BEC(免電池電路)名稱的由來。
}
此時此刻,,飛機(jī)已經(jīng)可以玩了,那么我們就開始上主角Arduino,!
這里我采用的是Mega2560,,別急,我們先不談擴(kuò)展,,我們先讓arduino融入到無人機(jī)的控制系統(tǒng)中去,,特洛伊木馬也是先潛入再動手腳的嘛,這里的Arduino就是個特洛伊木馬

那么接線怎么接,,我慢慢給大家說清楚,,首選在接收機(jī)的任意一個空置插口引出一個vcc和GND,直接連接arduino 5v 和GND,,這時你的arduino就和飛機(jī)連成了一套系統(tǒng),,可以共同工作了,接下來把接收機(jī)供給飛控的四根信號線從飛控上卸下,,連接在arduino上的任意數(shù)字端口,,我連接的是22,24,,26,,28,而這四根線的作用分別是AIL副翼,,ELE升降,,THR油門,RUD方向,,這是干嘛用的呢,,其實這些詞都是固定翼飛機(jī)的,那么在多旋翼無人機(jī)上的意思是什么呢,,很簡單,,AIL副翼信號就是控制飛機(jī)在水平面俯仰的,也就是說當(dāng)飛機(jī)俯下去的時候,,飛機(jī)會產(chǎn)生一個向前的分解力,,就會向前飛,向后仰的時候會分解一個向后的力飛機(jī)向后飛。同樣這個ELE升降其實不是真正控制無人機(jī)升降的,,是和副翼一樣,,不過是向左傾斜和向右傾斜而已,飛機(jī)就向左向右飛,。而這個THR油門,,其實是控制飛機(jī)起飛和下降的,油門大飛機(jī)就直升,,油門小了就將下來了,。RUD方向是控制飛機(jī)水平轉(zhuǎn)動的,左轉(zhuǎn)右轉(zhuǎn),,飛機(jī)的方向改變,,但位置不會變。把這幾個接口接上arduino后,,我們開始用arduino來看看這個信號的奧秘,,其實它就是PWM信號,不信你直接接一個舵機(jī)去試試,,舵機(jī)會隨著遙控的控制而轉(zhuǎn)動,,那么怎么讀取這個PWM信號呢,我們從源代碼開始講,!上源代碼
#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);

}
好了,,代碼非常簡單,讀取PWM信號的代碼我已用紅字標(biāo)出,,我用到了 pluseIn()函數(shù),,這個函數(shù)可以讀取指定端口的電平脈沖時間,沒錯,,那就是PWM的寬度,,接下來我用串口輸出了這個時間到底是多少我們一起看大屏幕。
此時我的油門處于最低位,,我們可以看見THR油門的值在1000左右,,先不管其他的值。

緊接著我吧油門推到最高我們看看又是多少

很巧,,2000左右,,那么區(qū)間大約是1000-2000,接著我又試著吧其他的幾個搖桿搬動,,發(fā)現(xiàn)最小值和最大值都是在1000-2000,,那么可以說明遙控的行程都是一樣的,每個通道發(fā)出的PWM信號也是一樣的范圍,,好的,,那么我們現(xiàn)在可以把這個PWM信號原封不動的輸出到飛控,,這樣的話arduino就完全融入了這個系統(tǒng)中,那么問題來了,,怎么輸出PWM呢,。。,。,。呵呵,還記得我在介紹電調(diào)的時候說過嗎,,電調(diào)可以直接用arduino 的舵機(jī)庫的舵機(jī)函數(shù)來控制,,好的,那么請看代碼藍(lán)色部分,。//////////////////////////////
看完了藍(lán)色部分,,有人看出了,OUTTHR = map(INTHR,1010,2007,47,144); 這是個縮放函數(shù),,讓1010-2007縮放為47-144,這里有人會問,,為什么是1010-2007,,為什么是47-144,我再來和同學(xué)們講解,,剛剛在取樣的時候我們發(fā)現(xiàn)arduino讀取的PWM寬度在1000-2000之間,,但是有些值是大于2000的,那么我取了一個更大的區(qū)間,,來“裝”PWM的區(qū)間,,所以是1000-2007,但是為什么要讓舵機(jī)輸出47-144度呢,。這里要用點小技巧,,羊毛出在羊身上,沒錯我們讓arduino自己給自己測脈沖時間,,我們可以寫一個很簡單的代碼,,還記得剛剛那個pluseIn()函數(shù)嗎,我們讓任意一個端口輸出一個90度的舵機(jī)角度值,,也就是xxxx.write(90); 然后把這個端口接在arduino其他任意一個數(shù)字端口上,,用pluseIn()去測這個90度的脈寬是多少,比如90度測出來脈沖時間是1500,,大了,,我們要找的是1000-2000范圍的那個舵機(jī)角度,我們再來一個30度,,或者170度,,就這樣把范圍越縮越小,,最后,我找出了他們之間的關(guān)系,,47度的舵機(jī)輸出,,用pluseIn()去測量剛好在1000左右,那么地,、低位就找到了,,同樣高位在144度上 脈沖寬度時間是2000左右,那么接下來代碼大家都看懂了吧,?,,這里的arduino就原封不動的把接收機(jī)的信號吃進(jìn)去了,又吐出來給飛控,,至此,,arduino已經(jīng)完全潛入飛機(jī)控制系統(tǒng),那么接下來,,沒錯,,試飛!視頻連接:
http://www./media/232728596
嘿嘿,,現(xiàn)在想干嘛不行呢,,這種想象空間就交給大家啦!可以看出我寫的代碼中有一個是測量電調(diào)溫度的,,我們看看圖

沒錯,,就是那個小小的LM35D溫度傳感器。好了,,我的飛機(jī)目前狀態(tài)也和此帖保持一樣的進(jìn)度,,但是在這里還是要向大家提出幾個實驗中發(fā)現(xiàn)的問題,1:由于用pluseIn()函數(shù)讀出接收機(jī)的脈沖時間是一個會波動的數(shù),,我們可以想一個辦法濾波讓數(shù)值更加穩(wěn)定,。2:在arduino用pluseIn()函數(shù)測試自己輸出的舵機(jī)角度端口脈沖值的時候,用求斜率的辦法得出斜率K1=47/1010=0.0465346534653465.K2=144/2007=0.0717488789237668,。K1不等于K2,,也就是說他們之間的關(guān)系是非線性的,我并不知道這是為什么,,希望有知道問題所在的大神求解,,未完待續(xù)。,。,。。




上一篇:Flexbot申請通過了
下一篇:新人小白請問各位大神arduino控制飛行器的問題

QQ截圖20150130172033.png (513.47 KB, 下載次數(shù): 7)

QQ截圖20150130172033.png

QQ截圖20150130212116.png (900.59 KB, 下載次數(shù): 2)

QQ截圖20150130212116.png

QQ截圖20150130212143.png (1001.01 KB, 下載次數(shù): 6)

QQ截圖20150130212143.png

QQ截圖20150130212201.png (367.75 KB, 下載次數(shù): 1)

QQ截圖20150130212201.png

QQ截圖20150130212209.png (907.54 KB, 下載次數(shù): 6)

QQ截圖20150130212209.png

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多