|
發(fā)布時間: 2017-11-26 11:19
正文摘要:四軸飛控-STC8A8K64S4A12-LQFP44-PPM-V10,來源于STC發(fā)布,按需取用 控制信號排針要靠在一起布線成3排針3*9*2.54 P1~P4對應接收機的俯仰、橫滾、油門、航向PPM信號。M1~M4輸出到4個電調的信號。P5備用。 四個電機 ... |
|
分享一下調試經驗 1.起飛后會飛斜:在水平的地板上將四軸放平,開啟遙控,油門打到最低,串口以文本輸入a,開始串口打印X,Y的角度,大概是+-2左右,將這個數記下來,然后在程序這里加補償(紅字的部分),然后重新編譯后下載程序,然后在開啟串口打印,這時輸出一般都在0-0.1這兒穩(wěn)定了,起飛后,無風的情況下不會亂飛。 AngleX = asin(2*(q0*q2 - q1*q3 )) * 57.2957795f+1.9; // 俯仰 換算成度 AngleY = asin(2*(q0*q1 + q2*q3 )) * 57.2957795f+0.8; // 橫滾 2.遙控器通道正反要按資料上的圖片來撥,資料要求美國手,我買的日本手,實則都能用。用日本手要改接收機和單片機線的位置,用萬用表對照程序注釋一看便知。 3.這個程序配合MC6遙控器十分好用方便,可是把程序改成串口無線控制會發(fā)生一些問題,感覺是串口接受數據多,中斷頻率較高,而PWM中斷等級較低,老是打斷PWM中斷,然后現象是某個固定的腳PWM輸出會比其他高很多,串口改一下波特率或者發(fā)射加個延時,這個現象又轉移到其他PWM引腳,目前還在優(yōu)化中,,,,,, 4.前人栽樹后人乘涼,由心的感謝程序作者無私的分享。
|
| 原來51的性能足夠跑飛控 |
| 26年了還有人嗎 |
|
謝謝分享,有時間做一個玩 |
| 哈哈,剛在官網上看到,然后在家里又看到,更想做一臺來玩了 |
putiz 發(fā)表于 2021-12-26 18:05 你好,已加未見回復,因為不清楚你那邊啥情況,就這邊回復一下我大概的調試過程吧 1.程序里面有個電池電壓檢測(ADC部分),要保證這邊沒問題,檢測電壓低是啟動不了的,我這邊是直接把該端口和VCC接一起的。(因為我用的隔離電源,不能和鋰電池共地) 2.然后你的電路是否用的資料提供的電路?還是略有修改?PCA輸入假如用光耦隔離的話,受光側上拉電阻取值會影響波形的好壞,我這用的521光耦,原本用的103電阻,發(fā)現也是無法啟動,換成102就可以了,實際上要更小才合適。 3.先看看程序有沒有進入循環(huán),還是卡在油門最小等待這一步,我在這兒加上串口打印配合調試 PrintString1("注意準備等待油門最小了\r\n"); while(cnt_start < 25) //等待油門最小 20ms * 25 = 500ms { if(B_PPM3_OK) //油門 { B_PPM3_OK = 0; if(PPM3_Cap <= 1200) cnt_start++; } delay_ms(1); } PrintString1("油門最小測試通過\r\n"); 當油門通過后就是主要的工作啦,用串口不停地查看接收的數據是否與遙控一起在變化, 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(' '); //從這兒開始 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); } 這樣就可以很直觀的看出來遙控的接收情況了,即使線接反了,也可以看出實時的數據變化,找出對應的搖桿,因為這樣很方便,我把買的日本手該成了中國手。。。。。 4.然后晶振頻率和EEPROM大小不能錯,遙控器通道正反要按資料圖片來撥,其他沒什么了,串口這兒就可以看出很多情況了,最后LQFP44我用的G版本 |
CHNO 發(fā)表于 2021-6-5 17:11 大佬,可以加下好友交流一下嗎 2410025784 |
CHNO 發(fā)表于 2021-6-11 11:29 大佬,可以加下聯系方式嗎? 自己遇到了一些問題,想向您請教一下 |
|
大家好,我看了幾天的代碼了,也嘗試打印了一些數據來分析。 現狀是剛開始啟動后,電機不會啟動,不會低速旋轉。即使偶爾有幾個會旋轉,也不會受遙控器的控制。 經過打印一些信息發(fā)現:
這樣的代碼,這些值不會發(fā)生變化和更新
在這樣的初始化后打印出來的數據卻是0 4000 8000 12337(PWM0T1 PWM1T1 PWM2T1 PWM3T1) 和初始化結果也是不一樣的。 為什么我找這樣的信息呢,因為我感覺首先遙控器不能控制波形的輸出,剛開始輸出的波形也不能讓電動機啟動。 因此我想試著找找這個原因,但是這個值不知道為什么不會發(fā)生變化 請問大佬可以回復下嗎?真的不知道怎么辦 |
lzl12399 發(fā)表于 2021-6-10 11:45 我是自己畫的 |
CHNO 發(fā)表于 2021-6-5 17:11 板子打樣,自己畫得還是有現成得,小弟也想玩玩 |
| 從宏晶官網下載,然后打過板子,四軸可以平穩(wěn)飛行,就是油門開大后不能穩(wěn)定的停在原地,會偏,正在查找原因中, |
| 學習無人機,謝謝你的分享 |
| 感謝樓主分享,小白一名前來膜拜學習 |
| 這個厲害啊,想學但是沒怎么看懂哈哈 |
| 關鍵還是軟件算法 |
| 謝謝分享 |
| 請問您有飛行的視頻么 |
| 感謝分享,想問下,如果機身水平不變四個螺旋槳前后左右偏轉改變飛行方向是否可行?機身姿態(tài)與控制方向非耦合狀態(tài),同時機身可在空中改變角度懸停。 |
| 正在學習無人機,謝謝你的分享 |
| 下載下來好好學習一下代碼 |
| 下載下來學習學習 |
| 謝謝分享,學著做一個四軸飛控 |
|
感謝樓主分享 |
| 謝謝樓主分享! |
| 感謝~~~ |
| 樓主,可否加個QQ,跟你學習下,我的QQ 75750462 |
| 謝謝你的分享 |
| 感謝分享,對于學習很有幫助 |
| 關于玩四軸,我認為深入的玩法就是研究軟硬件,特別是軟件,如果只是組裝比人的成品,沒啥成就感;本著此想法所以下載學習此算法! |
| 為什么怎么也下不完呢,是有問題? |
| 感謝分享,支持原創(chuàng), |
| 感謝分享,有空學習下 |
| 謝謝分享,有時間做一個玩下 |
| 下來試試... |