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

QQ登錄

只需一步,快速開(kāi)始

搜索

STC51單片機(jī)四軸飛控開(kāi)源項(xiàng)目原理圖與源碼資料分享

查看數(shù): 26901 | 評(píng)論數(shù): 33 | 收藏 32
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2017-11-26 11:19

正文摘要:

四軸飛控-STC8A8K64S4A12-LQFP44-PPM-V10,來(lái)源于STC發(fā)布,按需取用 控制信號(hào)排針要靠在一起布線成3排針3*9*2.54 P1~P4對(duì)應(yīng)接收機(jī)的俯仰、橫滾、油門(mén)、航向PPM信號(hào)。M1~M4輸出到4個(gè)電調(diào)的信號(hào)。P5備用。 四個(gè)電機(jī) ...

回復(fù)

ID:925561 發(fā)表于 2021-6-11 11:29
分享一下調(diào)試經(jīng)驗(yàn)
1.起飛后會(huì)飛斜:在水平的地板上將四軸放平,開(kāi)啟遙控,油門(mén)打到最低,串口以文本輸入a,開(kāi)始串口打印X,Y的角度,大概是+-2左右,將這個(gè)數(shù)記下來(lái),然后在程序這里加補(bǔ)償(紅字的部分),然后重新編譯后下載程序,然后在開(kāi)啟串口打印,這時(shí)輸出一般都在0-0.1這兒穩(wěn)定了,起飛后,無(wú)風(fēng)的情況下不會(huì)亂飛。
        AngleX = asin(2*(q0*q2 - q1*q3 )) * 57.2957795f+1.9; // 俯仰   換算成度
        AngleY = asin(2*(q0*q1 + q2*q3 )) * 57.2957795f+0.8; // 橫滾

2.遙控器通道正反要按資料上的圖片來(lái)?yè)�,資料要求美國(guó)手,我買(mǎi)的日本手,實(shí)則都能用。用日本手要改接收機(jī)和單片機(jī)線的位置,用萬(wàn)用表對(duì)照程序注釋一看便知。
3.這個(gè)程序配合MC6遙控器十分好用方便,可是把程序改成串口無(wú)線控制會(huì)發(fā)生一些問(wèn)題,感覺(jué)是串口接受數(shù)據(jù)多,中斷頻率較高,而PWM中斷等級(jí)較低,老是打斷PWM中斷,然后現(xiàn)象是某個(gè)固定的腳PWM輸出會(huì)比其他高很多,串口改一下波特率或者發(fā)射加個(gè)延時(shí),這個(gè)現(xiàn)象又轉(zhuǎn)移到其他PWM引腳,目前還在優(yōu)化中,,,,,,
4.前人栽樹(shù)后人乘涼,由心的感謝程序作者無(wú)私的分享。


評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:1103557 發(fā)表于 2024-3-11 14:13

謝謝分享,有時(shí)間做一個(gè)玩
ID:704640 發(fā)表于 2022-5-25 08:23
哈哈,剛在官網(wǎng)上看到,然后在家里又看到,更想做一臺(tái)來(lái)玩了
ID:925561 發(fā)表于 2022-1-1 10:49
putiz 發(fā)表于 2021-12-26 18:05
大佬,可以加下好友交流一下嗎
2410025784

你好,已加未見(jiàn)回復(fù),因?yàn)椴磺宄隳沁吷肚闆r,就這邊回復(fù)一下我大概的調(diào)試過(guò)程吧
1.程序里面有個(gè)電池電壓檢測(cè)(ADC部分),要保證這邊沒(méi)問(wèn)題,檢測(cè)電壓低是啟動(dòng)不了的,我這邊是直接把該端口和VCC接一起的。(因?yàn)槲矣玫母綦x電源,不能和鋰電池共地)
2.然后你的電路是否用的資料提供的電路?還是略有修改?PCA輸入假如用光耦隔離的話,受光側(cè)上拉電阻取值會(huì)影響波形的好壞,我這用的521光耦,原本用的103電阻,發(fā)現(xiàn)也是無(wú)法啟動(dòng),換成102就可以了,實(shí)際上要更小才合適。
3.先看看程序有沒(méi)有進(jìn)入循環(huán),還是卡在油門(mén)最小等待這一步,我在這兒加上串口打印配合調(diào)試
  PrintString1("注意準(zhǔn)備等待油門(mén)最小了\r\n");
        while(cnt_start < 25)        //等待油門(mén)最小        20ms * 25 = 500ms
        {
                if(B_PPM3_OK)        //油門(mén)
                {
                        B_PPM3_OK = 0;
                        if(PPM3_Cap <= 1200)        cnt_start++;
                }
                delay_ms(1);
        }
        PrintString1("油門(mén)最小測(cè)試通過(guò)\r\n");
當(dāng)油門(mén)通過(guò)后就是主要的工作啦,用串口不停地查看接收的數(shù)據(jù)是否與遙控一起在變化,
void        Return_Message(void)
{
        TX1_write2buff('V');
        TX1_write2buff('=');
        TX1_write2buff(Battery/1000 + '0');
        TX1_write2buff((Battery%1000)/100 + '0');
        TX1_write2buff('.');
        TX1_write2buff((Battery%100)/10 + '0');
        TX1_write2buff(Battery%10 + '0');
        TX1_write2buff(' ');
        TX1_write2buff(' ');
        //從這兒開(kāi)始
        PrintString1("PPM1=");
        TX1_int_value((int)(PPM1 * 10));
        PrintString1("PPM2=");
        TX1_int_value((int)(PPM2 * 10));
        PrintString1("PPM3=");
        TX1_int_value((int)(PPM3 * 10));
        PrintString1("PPM4=");
        TX1_int_value((int)(PPM4 * 10));
/*     PrintString1("AngleX=");
        TX1_int_value((int)(AngleX * 10));
        PrintString1("AngleY=");
        TX1_int_value((int)(AngleY * 10));
        PrintString1("AngleZ=");
        TX1_int_value((int)(Angle_gz * 10));
*/
        PrintString1("a_x=");
        TX1_int_value(a_x * 10);
        PrintString1("a_y=");
        TX1_int_value(a_y * 10);
        PrintString1("g_z=");
        TX1_int_value(g_z * 10);
        TX1_cnt = 0;
        TX1_write2buff(0x0d);
        TX1_write2buff(0x0a);
}
這樣就可以很直觀的看出來(lái)遙控的接收情況了,即使線接反了,也可以看出實(shí)時(shí)的數(shù)據(jù)變化,找出對(duì)應(yīng)的搖桿,因?yàn)檫@樣很方便,我把買(mǎi)的日本手該成了中國(guó)手。。。。。
4.然后晶振頻率和EEPROM大小不能錯(cuò),遙控器通道正反要按資料圖片來(lái)?yè)埽渌麤](méi)什么了,串口這兒就可以看出很多情況了,最后LQFP44我用的G版本
ID:975881 發(fā)表于 2021-12-26 18:05
CHNO 發(fā)表于 2021-6-5 17:11
從宏晶官網(wǎng)下載,然后打過(guò)板子,四軸可以平穩(wěn)飛行,就是油門(mén)開(kāi)大后不能穩(wěn)定的停在原地,會(huì)偏,正在查找原因 ...

大佬,可以加下好友交流一下嗎
2410025784
ID:975881 發(fā)表于 2021-12-26 17:41
CHNO 發(fā)表于 2021-6-11 11:29
分享一下調(diào)試經(jīng)驗(yàn)
1.起飛后會(huì)飛斜:在水平的地板上將四軸放平,開(kāi)啟遙控,油門(mén)打到最低,串口以文本輸入a ...

大佬,可以加下聯(lián)系方式嗎?
自己遇到了一些問(wèn)題,想向您請(qǐng)教一下
ID:975881 發(fā)表于 2021-12-26 17:38
大家好,我看了幾天的代碼了,也嘗試打印了一些數(shù)據(jù)來(lái)分析。
現(xiàn)狀是剛開(kāi)始啟動(dòng)后,電機(jī)不會(huì)啟動(dòng),不會(huì)低速旋轉(zhuǎn)。即使偶爾有幾個(gè)會(huì)旋轉(zhuǎn),也不會(huì)受遙控器的控制。
經(jīng)過(guò)打印一些信息發(fā)現(xiàn):
  1.         SW2_tmp = P_SW2;        //保存SW2設(shè)置
  2.         EAXSFR();        //訪問(wèn)XFR
  3.         PWM0T2 = (u16)(PWM0 * 2);
  4.         PWM1T2 = (u16)(PWM1 * 2);
  5.         PWM2T2 = (u16)(PWM2 * 2);       
  6.         PWM3T2 = (u16)(PWM3 * 2);        //進(jìn)行輸出脈沖信號(hào)更新
  7.         P_SW2  = SW2_tmp;        //恢復(fù)SW2設(shè)置
復(fù)制代碼

這樣的代碼,這些值不會(huì)發(fā)生變化和更新
  1.         PWM0T1 = 4000;//第一個(gè)翻轉(zhuǎn)點(diǎn) 4000
  2.         PWM1T1 = 4000;
  3.         PWM2T1 = 4000;
  4.         PWM3T1 = 4000;
  5. //        PWM4T1 = 4000;
  6. //        PWM5T1 = 4000;
  7. //        PWM6T1 = 4000;
  8. //        PWM7T1 = 4000;

  9.         PWM0T2 = 2000;  //第二個(gè)翻轉(zhuǎn)點(diǎn) 2000
  10.         PWM1T2 = 2000;
  11.         PWM2T2 = 2000;
  12.         PWM3T2 = 2000;
  13. //        PWM4T2 = 2000;
  14. //        PWM5T2 = 2000;
  15. //        PWM6T2 = 2000;
  16. //        PWM7T2 = 2000;
復(fù)制代碼

在這樣的初始化后打印出來(lái)的數(shù)據(jù)卻是0 4000 8000 12337(PWM0T1 PWM1T1 PWM2T1 PWM3T1)
和初始化結(jié)果也是不一樣的。
為什么我找這樣的信息呢,因?yàn)槲腋杏X(jué)首先遙控器不能控制波形的輸出,剛開(kāi)始輸出的波形也不能讓電動(dòng)機(jī)啟動(dòng)。
因此我想試著找找這個(gè)原因,但是這個(gè)值不知道為什么不會(huì)發(fā)生變化
請(qǐng)問(wèn)大佬可以回復(fù)下嗎?真的不知道怎么辦
ID:925561 發(fā)表于 2021-6-11 10:32
lzl12399 發(fā)表于 2021-6-10 11:45
板子打樣,自己畫(huà)得還是有現(xiàn)成得,小弟也想玩玩

我是自己畫(huà)的
ID:97350 發(fā)表于 2021-6-10 11:45
CHNO 發(fā)表于 2021-6-5 17:11
從宏晶官網(wǎng)下載,然后打過(guò)板子,四軸可以平穩(wěn)飛行,就是油門(mén)開(kāi)大后不能穩(wěn)定的停在原地,會(huì)偏,正在查找原因 ...

板子打樣,自己畫(huà)得還是有現(xiàn)成得,小弟也想玩玩
ID:925561 發(fā)表于 2021-6-5 17:11
從宏晶官網(wǎng)下載,然后打過(guò)板子,四軸可以平穩(wěn)飛行,就是油門(mén)開(kāi)大后不能穩(wěn)定的停在原地,會(huì)偏,正在查找原因中,
ID:63317 發(fā)表于 2021-5-23 19:48
學(xué)習(xí)無(wú)人機(jī),謝謝你的分享
ID:915207 發(fā)表于 2021-5-14 22:27
感謝樓主分享,小白一名前來(lái)膜拜學(xué)習(xí)
ID:906597 發(fā)表于 2021-4-30 22:28
這個(gè)厲害啊,想學(xué)但是沒(méi)怎么看懂哈哈
ID:385637 發(fā)表于 2021-4-22 08:05
關(guān)鍵還是軟件算法
ID:628703 發(fā)表于 2020-3-18 15:11
謝謝分享
ID:517004 發(fā)表于 2020-2-10 17:26
請(qǐng)問(wèn)您有飛行的視頻么
ID:11546 發(fā)表于 2020-2-5 11:30
感謝分享,想問(wèn)下,如果機(jī)身水平不變四個(gè)螺旋槳前后左右偏轉(zhuǎn)改變飛行方向是否可行?機(jī)身姿態(tài)與控制方向非耦合狀態(tài),同時(shí)機(jī)身可在空中改變角度懸停。
ID:266164 發(fā)表于 2020-1-16 16:55
正在學(xué)習(xí)無(wú)人機(jī),謝謝你的分享
ID:490427 發(fā)表于 2019-11-2 18:18
下載下來(lái)好好學(xué)習(xí)一下代碼
ID:186764 發(fā)表于 2019-9-29 23:08
下載下來(lái)學(xué)習(xí)學(xué)習(xí)
ID:282431 發(fā)表于 2019-7-28 17:02
謝謝分享,學(xué)著做一個(gè)四軸飛控
ID:591598 發(fā)表于 2019-7-28 14:28
感謝樓主分享
ID:272906 發(fā)表于 2019-6-9 10:08
謝謝樓主分享!
ID:119159 發(fā)表于 2019-5-7 11:22
感謝~~~
ID:508475 發(fā)表于 2019-4-16 09:24
樓主,可否加個(gè)QQ,跟你學(xué)習(xí)下,我的QQ 75750462
ID:403129 發(fā)表于 2018-9-27 16:05
謝謝你的分享
ID:291952 發(fā)表于 2018-9-25 09:12
感謝分享,對(duì)于學(xué)習(xí)很有幫助
ID:394146 發(fā)表于 2018-9-5 16:57
關(guān)于玩四軸,我認(rèn)為深入的玩法就是研究軟硬件,特別是軟件,如果只是組裝比人的成品,沒(méi)啥成就感;本著此想法所以下載學(xué)習(xí)此算法!
ID:380499 發(fā)表于 2018-7-29 16:26
為什么怎么也下不完呢,是有問(wèn)題?
ID:149866 發(fā)表于 2018-5-6 22:02
感謝分享,支持原創(chuàng),
ID:155817 發(fā)表于 2018-1-5 14:40
感謝分享,有空學(xué)習(xí)下
ID:243748 發(fā)表于 2017-12-4 14:52
謝謝分享,有時(shí)間做一個(gè)玩下
ID:61218 發(fā)表于 2017-11-28 11:24
下來(lái)試試...

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

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

快速回復(fù) 返回頂部 返回列表