熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(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ī) ... |
分享一下調(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ú)私的分享。 ![]() |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
謝謝分享,有時(shí)間做一個(gè)玩 |
哈哈,剛在官網(wǎng)上看到,然后在家里又看到,更想做一臺(tái)來(lái)玩了 |
putiz 發(fā)表于 2021-12-26 18:05 你好,已加未見(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版本 |
CHNO 發(fā)表于 2021-6-5 17:11 大佬,可以加下好友交流一下嗎 2410025784 |
CHNO 發(fā)表于 2021-6-11 11:29 大佬,可以加下聯(lián)系方式嗎? 自己遇到了一些問(wèn)題,想向您請(qǐng)教一下 |
大家好,我看了幾天的代碼了,也嘗試打印了一些數(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):
這樣的代碼,這些值不會(huì)發(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ù)下嗎?真的不知道怎么辦 |
lzl12399 發(fā)表于 2021-6-10 11:45 我是自己畫(huà)的 |
CHNO 發(fā)表于 2021-6-5 17:11 板子打樣,自己畫(huà)得還是有現(xiàn)成得,小弟也想玩玩 |
從宏晶官網(wǎng)下載,然后打過(guò)板子,四軸可以平穩(wěn)飛行,就是油門(mén)開(kāi)大后不能穩(wěn)定的停在原地,會(huì)偏,正在查找原因中, |
學(xué)習(xí)無(wú)人機(jī),謝謝你的分享 |
感謝樓主分享,小白一名前來(lái)膜拜學(xué)習(xí) |
這個(gè)厲害啊,想學(xué)但是沒(méi)怎么看懂哈哈 |
關(guān)鍵還是軟件算法 |
謝謝分享 |
請(qǐng)問(wèn)您有飛行的視頻么 |
感謝分享,想問(wèn)下,如果機(jī)身水平不變四個(gè)螺旋槳前后左右偏轉(zhuǎn)改變飛行方向是否可行?機(jī)身姿態(tài)與控制方向非耦合狀態(tài),同時(shí)機(jī)身可在空中改變角度懸停。 |
正在學(xué)習(xí)無(wú)人機(jī),謝謝你的分享 |
下載下來(lái)好好學(xué)習(xí)一下代碼 |
下載下來(lái)學(xué)習(xí)學(xué)習(xí) |
謝謝分享,學(xué)著做一個(gè)四軸飛控 |
感謝樓主分享 |
謝謝樓主分享! |
感謝~~~ |
樓主,可否加個(gè)QQ,跟你學(xué)習(xí)下,我的QQ 75750462 |
謝謝你的分享 |
感謝分享,對(duì)于學(xué)習(xí)很有幫助 |
關(guān)于玩四軸,我認(rèn)為深入的玩法就是研究軟硬件,特別是軟件,如果只是組裝比人的成品,沒(méi)啥成就感;本著此想法所以下載學(xué)習(xí)此算法! |
為什么怎么也下不完呢,是有問(wèn)題? |
感謝分享,支持原創(chuàng), |
感謝分享,有空學(xué)習(xí)下 |
謝謝分享,有時(shí)間做一個(gè)玩下 |
下來(lái)試試... |
Powered by 單片機(jī)教程網(wǎng)