MWC 多方案DIY 经验教程.docx
- 文档编号:9717459
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:15
- 大小:424.10KB
MWC 多方案DIY 经验教程.docx
《MWC 多方案DIY 经验教程.docx》由会员分享,可在线阅读,更多相关《MWC 多方案DIY 经验教程.docx(15页珍藏版)》请在冰豆网上搜索。
MWC多方案DIY经验教程
QQ:
110671958
2类板子:
1.14路数字输入输出口:
工作电压为3.3V或者5V,每一路能输出和接入最大电流为40mA。
每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。
除此之外,有些引脚有特定的功能
▪串口信号RX(0号)、TX(1号):
提供TTL电压水平的串口接收信号,可以与6脚Header通孔相连。
▪外部中断(2号和3号):
触发中断引脚,可设成上升沿、下降沿或同时触发。
▪脉冲宽度调制PWM(3、5、6、9、10、11):
提供6路8位PWM输出。
▪SPI(10(SS),11(MOSI),12(MISO),13(SCK)):
SPI通信接口。
▪LED(13号):
Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
2.6路模拟输入A0到A5:
每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。
除此之外,有些引脚有特定功能
▪TWI接口(SDAA4和SCLA5):
支持通信接口(兼容I2C总线)。
3.Reset:
信号为低时复位单片机芯片。
如果采用以下10DOF,
GY-8610DOFMS5611HMC5883LMPU6050模块MWC飞控传感器模块
资料下载地址:
或
10DOF模块(三轴陀螺仪+三轴加速度+三轴磁场+气压)
采用沉金PCB工艺
使用芯片:
MPU6050+HMC5883L+MS5611
供电电源:
3-5v
通信方式:
IIC通信协议(完全兼容3-5v系统,含LLC电路)
尺寸:
2.2cm*1.7cm
请打开
#defineGY_86//Chinese10DOFwithMPU6050HMC5883LMS5611,LLC
(1)如果使用PPM遥控器,则连接PPM的8个通道:
首先看定义def.h
//RXPINassignmentinsidetheport//forPORTD
#defineTHROTTLEPIN2
#defineROLLPIN4
#definePITCHPIN5
#defineYAWPIN6
#defineAUX1PIN7
#defineAUX2PIN0//optionalPIN8orPIN12
#defineAUX3PIN1//unused
#defineAUX4PIN3//unused
如果打算在promini上使用AUX2,那么打开
#defineRCAUXPIN8
或者//#defineRCAUXPIN12
连接好PPM接受芯片的PIN到上述PIN.
那么数据的获取在RX.ino
//predefinedPCpinblock(thankstolianj)-Versionwithoutfailsafe
#defineRX_PIN_CHECK(pin_pos,rc_value_pos)\
if(mask&PCInt_RX_Pins[pin_pos]){\
if(!
(pin&PCInt_RX_Pins[pin_pos])){\
dTime=cTime-edgeTime[pin_pos];\
if(900 rcValue[rc_value_pos]=dTime;\ }\ }elseedgeTime[pin_pos]=cTime;\ } ISR(RX_PC_INTERRUPT){ …. RX_PIN_CHECK(); } rcValue的数值就是各个PIN的数值。 读取流程: loop()computeRC()readRawRC() data=rcValue[rcChannel[chan]];/ISR(RX_PC_INTERRUPT){RX_PIN_CHECK();} 如果使用PPM在一根PIN上(PPMsumsignal,ondigitalPIN2),则修改config.h #defineSERIAL_SUM_PPM具体SUMSIGNAL中通道顺序需要看PPM接收器编码规则。 (2)如果使用蓝牙串口数传及控制飞机: 首先在config.h定义#defineRCSERIAL并且不要定义FAILSAFE: //#defineFAILSAFE 读取流程: Loop()computeIMU()annexCode()serialCom() c=SerialRead();evaluateCommand(); voidevaluateCommand(){ switch(cmdMSP[CURRENTPORT]){ caseMSP_SET_RAW_RC: for(uint8_ti=0;i<8;i++){ rcData[i]=read16(); } headSerialReply(0); break; ……. } 从而得到rcData; 在PC的上位机上使用,则发现HOST上位机并没有实现MSP_SET_RAW_RC,网上有一个例子,是用游戏手柄来控制电脑的上位机软件,进而通过串口操作飞控。 MultiWiiConf_2_1JoyStick 其添加的关键代码如下: if((time-time5)>40){ time5=time; payload=newArrayList payload.add(char((int)rightX%256)); payload.add(char((int)rightX/256)); payload.add(char((int)rightY%256)); payload.add(char((int)rightY/256)); payload.add(char((int)leftX%256)); payload.add(char((int)leftX/256)); payload.add(char((int)leftY%256)); payload.add(char((int)leftY/256)); payload.add(char(1500%256)); payload.add(char(1500/256)); payload.add(char(1500%256)); payload.add(char(1500/256)); payload.add(char(1500%256)); payload.add(char(1500/256)); payload.add(char(1500%256)); payload.add(char(1500/256)); sendRequestMSP(requestMSP(MSP_SET_RAW_RC,payload.toArray(newCharacter[payload.size()]))); } 当然有一款安卓APK,也是实现了此MSP_SET_RAW_RC, MultiWiiEZ-GUI QQ: 110671958,我简单修改了EZ-GUI的使用方式及软件兼容性问题,有需要的联系我. (3)如果使用有刷电机,比如空心杯电机: 引脚定义参见Output.ino: uint8_tPWM_PIN[8]={3,9,11,10,6,5,A2,12};//foraquad+: rear,right,left,front 首先在config.h定义#defineEXT_MOTOR_RANGE 这样的话行程由PPM的[1000;2000]=>PWM的[0;250]。 这是针对328P单片机的,其它型号的单片机请自行研究更改。 关于无刷改有刷的问题: 无刷信号是1ms-2ms脉宽的PPM信号,而有刷信号是0-100%占空比PWM的信号,两者是不兼容的。 2、一上电马达就旋转的问题: 328P的PWM输出脚D9/D10/D11/D3接下拉电阻10k即可。 (4)如果使用无刷电机,则ESC电子调速控制器的连接及参数如下: 引脚定义参见Output.ino: uint8_tPWM_PIN[8]={3,9,11,10,6,5,A2,12};//foraquad+: rear,right,left,front 对电调的校准方法: 去掉//#defineESC_CALIB_CANNOT_FLY这句代码前面的两条斜线,启用这句代码,并将改过的程序烧录到飞控板里。 烧录完成后,拔掉FTDI,接上电池,这时你会听到一段奇怪的音调,等待一分钟左右,拔掉电池,重新插上FTDI,将#defineESC_CALIB_CANNOT_FLY这句代码注释掉,再次烧录到飞控板里,至此校准电调完成。 (5)解锁/枷锁ARMED/DISARM 解锁前,必须对CALIB_ACC/CALIB_MAG进行校准,写入保存。 默认情况下 使用油门最低+方向YAW最高,就是解锁,然后油门最低+方向最低,是枷锁。 如果你的遥控器,或者游戏手柄不太顺手,你可以更改用油门+ROLL组合来实现相同的方式, 请修改config.h为: //#defineALLOW_ARM_DISARM_VIA_TX_YAW #defineALLOW_ARM_DISARM_VIA_TX_ROLL 如果想实现,简单的油门最低,就是停止电机,则修改config.h为: #defineMOTOR_STOP (5)打开GPSFollowme功能 修改config.h #defineUSE_MSP_WP 当然还有GPS_HOLD,定点悬停。 GPS_HOME,找回功能。 飞控调试经验总结: (1)桨的振动影响很大的,压住飞机,推油门,如果桨会摆动那就不用飞了,没法控制的! 的MWC开始也是狂跳舞,没有怎么改程序。 根本原因,四轴震动问题。 换了机架和电机后,稳。 (2)MWC自旋/开自稳晃动问题的解决: 下面这个最关键: 很多人搞MWC,发现打开自稳后飞行器晃动,我以前也是这个样子,纠结了好久,最后测底研究代码,发现了问题所在,共享出来给大家。 连上上位机,转动传感板,向前转动,也就是机头下沉,ACC里PITCH应该变正数,值和角度有关,GYRO里PITCH应该变正,停止转动时归零,反向转动抬高机头,则ACC.PITCH变负的,GYRO.PITCH变负,停止转动归零。 机头向前,向右倾斜,ACC.ROLL变正,值和倾斜角度相关,GYRO.ROLL变正,停止转动归零,反向同理数值相反。 如果有哪项的数值变化方向不对,打开config.h 找到类似如下的地方: #defineGYRO_ORIENTATION(X,Y,Z){gyroADC[ROLL]= Y;gyroADC[PITCH]=-X;gyroADC[YAW]=-Z;} #defineACC_ORIENTATION(X,Y,Z) {accADC[ROLL] =-X;accADC[PITCH] =-Y;accADC[YAW] = Z;} 哪项不对,就改哪项的符号(X或Y前面的负号),例如发现ACC里PITCH方向不对,那就把上面的accADC[PITCH] =-Y改成accADC[PITCH] =Y,其他同理。 改好后,重新刷进去,适当减小PID,开自稳,爽飞吧。 MAG里各项的变化也保持和GYRO相同,方法相同。 : 也就是说,如果你找不到config.h里的标准传感器组合,那么自己单独打开某个传感器时,比如MPU6050,那么一定记住检查上述是否一致,不一致就要改#defineGYRO_ORIENTATION等等。 (3)自旋问题: 四个电机的输出值不一致,解决了就是你说的LEVEL的I值 我改成0.000-0.001就好了。 陀螺仪的z轴反向看看。 之前我也是这个问题。 哈哈,你有没有在安装控制板的时候使用铁质的螺丝,螺母? 我就被这个给坑了。 电调是否和控设定了最大油门和最小油门-这个比较重要,我之前就换了控,没从新设定,导致旋转。 电机轴松动、浆不水平,高度不一样都会造成自旋。 真个飞机的浆方向搞错,也会自旋。 试试方向YAW可对,比如让机架水平左旋,看GUI图里那个机架也向左旋,要是不对,应该改改config.h里的#defineMAG_ORIENTATION(X,Y,Z) {accA等。 建议: 首先不用飞控板子,直接把四个电机连到一起,同时接到接收器的油门通道上,然后测试。 这样能保证机架、电机、浆的平衡。 重点看上述 (2) (4)定高问题: 气压定高操作方法: 刚起飞时,关闭气压定高BAR开关,等飞到一定高度,然后打开它,就OK了。 GPS定高方法: 起飞前用安卓地面站在地图上选一点,长按地图,出现对话框,输入高度,然后选HOLD。 之后起飞,飞机自动飞到那个坐标及高度。 (5)失控保护FailSafe问题: 这个一定要打开: config.h #defineFAILSAFE 测试步骤: 拿下所有浆,解锁、开油门让电机转起来(稍微快点也可以),关闭遥控器电源,等待1秒,发现电机转速会降低,然后等20秒,电机应该停止转动,并自动上锁。 使用GPS方法: i2c-gps-sonar-nav板子 ArduinobasedGPSandNAVco-processorwithI2Cprotocol 使用导航板前,需要在Multiwii固件中启用I2C-GPS功能(建议MWC固件版本2.1或以上): #defineI2C_GPS//EnableI2C-GPS 使用导航板前,请在MWC固件中填写地磁偏移量,如果忽略此步骤,磁阻的罗盘度数与GPS罗盘度数可能会产生误差,影响自动返航时航向的准确性。 不同地区的地磁偏移量差异很大,请根据实际情况自行设置。 例: #defineMAG_DECLINIATION3.96f ARM: 解锁指示(解锁成功后会变成绿色) ANGLE: 自稳功能(2.2以前的固件显示为ACC.需要加速度计,MWC-2012MWC-MEGA都支持) HORIZON: 3D模式(激活后自动关闭ANGLE功能,请初级玩家慎用) BARO: 高度保持功能(需要气压计,MWC-2012MWC-MEGA都支持) MAG: 航向保持功能(需要磁阻,MWC-2012MWC-MEGA都支持) HEADFREE: CF功能,也就是俗称的无头功能(需要同时激活MAG) CAMSTAB: 云台自稳功能(需要在固件中开启云台功能) GPSHOME: 自动回航功能(需要GPS模块,并且同时激活MAG) GPSHOLD: 定点功能(需要GPS模块) Arco是特技飞行动作,不开启自稳(也就是Angle的对立)Horizon是先进自稳模式,只有在满摇杆输入时暂时取消自稳,摇杆输入柔和时自动维持自稳,属于Angle和Arco的结合。 在MWC官方Wiki上给出的说明说Angle模式已经过时了,以后可能会取消,建议使用Horizon模式。 Baro是气压计定高模式,开启后飞行器将维持当前高度。 Mag是锁尾模式,用来抑制自旋漂移;HeadFree是无头模式,在解锁时刻记录当前指向,并以此指向作为二维坐标轴,无论YAW如何,前后左右的朝向均不变;HeadAdj是空中重定义无头,以开启的瞬间飞机的正方向重新定义无头参考系(这个功能除非你是老手否则不建议用,脑子一不清楚很容易搞不清方向然后炸机) MAG: 航向保持功能,是指通过磁阻来保持航向,可以避免飞行器的非操控原因的自旋,第一次打开时,机头会自动转向(指向解锁时还是上电时或真北我没注意,因为我们的飞场三个方向是一样的)。 HEADFREE: CF功能,也就是俗称的无头功能,不需要同时激活MAG,是指飞行器的倾斜与横滚根据飞行器解锁时机头指向关联,与飞行器实际的机头指向无关。 例如,无论飞行时机头如何指向,往前推杆,飞行器就向解锁时机头指向的前方飞去。 注意,是解锁时机头指向。 (具体无头模式功能的详细说明你可以看其他帖子) 另外,打开GPSHOME或GPSHOLD时,都需要磁阻的辅助,不需要同时打开MAG,也不会自动打开MAG。 但需要打开ANGLE功能,否则不工作。 在GPSHOME时,打开MAG,机头会自动转向HOME点方向后开始返航,到HOME点后,机头再转向到解锁时的方向。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MWC 多方案DIY 经验教程 多方 DIY 经验 教程