前面完成了小四軸后,看上了手機(jī)控的四軸,試玩了一下,不錯(cuò),就想著DIY出來,漫漫幾個(gè)月過去了。。。。。終于可以拿出來見人了!
準(zhǔn)備全程開源,方便想玩的網(wǎng)友DIY。
板子是在小四軸基礎(chǔ)上完善出來的,在經(jīng)過幾次改板后,發(fā)現(xiàn)HMC5883的干擾大部分來自板子自身,最后用四層板結(jié)構(gòu)消除。
主控:STM32F103C8
SENSOR: MPU6050 HMC5883 MS5611
電源部分:3-18V IN,輸出MAX:750mA 以支持外接設(shè)備
外接IO: WIFI GPS PPM并行輸入(支持市場(chǎng)上成品接收機(jī)) 電機(jī)信號(hào)PPM輸出(支持商用電調(diào))以方便使用在大四軸上。
HMC部分已作消干擾處理,可以在四軸上使用指南針來糾正GIER,鎖尾效果更好。
四路LED輸出,方便指示工作狀態(tài)。
電機(jī)部分均加二極管續(xù)流(此部分在測(cè)試時(shí)發(fā)現(xiàn),小信號(hào)控制時(shí)有影響).
另,PPM輸入接口為SPI輸入,在使用WIFI控制時(shí),方便接入其它設(shè)備.
上圖:
PCBA:
手機(jī)界面:
手機(jī)軟件使用說明:
主板接口說明:
接著上傳WIFI模塊圖片:
DIY安裝:
程序架構(gòu)說明:
主要文件
main.c: 例化IO,加載驅(qū)動(dòng)
com.c:打印部分
IOI2C.C: MPU6050 HMC5883 i2c驅(qū)動(dòng)
MPU6050.C: MPU6050驅(qū)動(dòng)及數(shù)據(jù)讀入處理
HMC5883.C: HMC5883驅(qū)動(dòng)及數(shù)據(jù)讀入處理
eeprom.c: 常規(guī)數(shù)據(jù)存儲(chǔ)
fc.c: 重要,數(shù)據(jù)處理,及所有數(shù)據(jù)耦合,處理。
重要函數(shù):fc.c內(nèi)
void fly_main(void): 全局處理,協(xié)調(diào)各部分?jǐn)?shù)據(jù)調(diào)入,處理
void moto_math(void):重要,姿態(tài)數(shù)據(jù)處理,計(jì)算,輸出到電機(jī),整機(jī)計(jì)算在這里,
void PPM_main_work(void):PPM遙控?cái)?shù)據(jù)處理 供 moto_math使用
void PID_data_out(void): PID數(shù)據(jù)調(diào)出 供 moto_math使用
void WIFI_main_work(void):WIFI數(shù)據(jù)處理,供 moto_math使用
重要點(diǎn):
1,moto_math(void)內(nèi)
#ifndef moto_PPM_OUT // 未定義,PWM輸出 定義,PPM脈寬輸出
未定義,PWM輸出,控制MOS,輸出直流電機(jī)
定義的話,即為輸出PPM信號(hào),可以控制商用無刷電調(diào)
2,fc.c內(nèi)
RUN.status: //運(yùn)行狀態(tài),0無信號(hào) 1,啟動(dòng) 200.停機(jī),
3,PPM控制和WIFI控制可同時(shí)使用,
如果有WIFI控制信號(hào)時(shí),PPM自動(dòng)關(guān)閉,
如果WIFI信號(hào)丟失,自動(dòng)打開PPM控制
不想用PPM控制或WIFI控制的網(wǎng)友,只需更改將控制數(shù)據(jù)輸入到PPM[]數(shù)組即可。