前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BF固件:Multi WiiCopterh固件(PID调参)

BF固件:Multi WiiCopterh固件(PID调参)

作者头像
云深无际
发布2022-11-25 17:29:04
1.2K0
发布2022-11-25 17:29:04
举报
文章被收录于专栏:云深之无迹云深之无迹

这里就写一下MW Wiki里面我觉得不错的东西。

如果你在户外玩,你的 flyng rc 模型必须是抗风的。

1.越重越好——动量和惯性越大

2.越小越好 -暴露在风中的表面越少

此外,具有更快(更高 Kv)电机的小型道具将比更大的道具更抗风。

这个是我们要看的代码,很少的代码

MultiWii 的第一个配置是在固件源的config.h文件中完成的。使用 Arduino 等编程 IDE 或简单的文本编辑器,可以更改多旋翼飞行器、飞翼或直升机的多个选项。

这是通过添加或删除#define参数前面的//来完成的,该参数注释或取消注释该行,以便它包含或不包含在最终固件中。

例如,在配置文件中选择多旋翼的类型、电机的最小油门、i2c 速度、内部上拉电阻(如果需要)、至少带有陀螺仪的控制器板,删除#define前面的//就可以了在ACRO模式下飞行的最简单配置。无需更改任何其他行:

代码语言:javascript
复制
#define QUADX
#define MINTHROTTLE 1180
#define I2C_SPEED 400000L
#define CRIUS_SE

下一步是使用 Arduino IDE 或其他方式(如 ISP 编程器)将固件上传到控制器板.

飞控内存使用:

需要注意的是,可以在 config.h 中启用许多选项,这些选项会影响编译代码的最终大小以及运行时使用的 RAM。当使用基于 ATmega 328p 的 multiwii 飞行控制器时,在 config.h 中选择要启用的内容时应特别小心,以免超出可用程序内存或 RAM。目前 Arduino IDE 将无法编译超过程序内存大小的固件,但它只会警告可能的低 RAM。

这样就是开启了

代码语言:javascript
复制
http://www.multiwii.com/wiki/index.php?title=Config.h

这个是对宏定义的一个简单的说明。

这里只能选择一个飞机的类型

可以在这里看到不同的气动布局

电机的最小油门

这是在启动电机时选择的最低油门速度。你必须根据你的 ESC(速度控制器)和电机配置该值。此设置将防止电机在飞行中停止并发生碰撞。测试该值是否正常,电机在没有螺旋桨的情况下运行并移动飞机以查看在改变速度时是否有任何电机停止。

独立传感器

RC控制,你这里看,就找到BF用的人多了,都是按钮,一点就好,这里得看半天。

MultiWii 使用闭环控制器来确保其稳定性和可操作性。与大多数多旋翼一样,它使用比例积分微分 (PID) 控制器。

当 MultiRotor 方向在任何俯仰/滚动/偏航轴上发生变化时,陀螺仪会指示其初始位置的角度变化。MultiRotor 控制器尝试纠正控制器输出测量值(由陀螺仪测量)和输入设定点(摇杆位置)之间计算的误差,并驱动电机尝试将 MultiRotor 返回到其初始位置。

这种测量的角度偏差和随时间变化的采样的组合为控制器提供了足够的信息来驱动电机仅使用陀螺仪返回平衡:这是默认的Acro 模式。

使用陀螺仪,飞行控制器将使用角速度来保持当前姿态。对可达到的态度没有限制。所有其他飞行模式均基于此模式。在使用其他飞行模式之前,需要在特技模式下实现稳定的行为。

找到飞机的重心,把电池移动到这里,接着,把RC杆打一半,电机功率的50%。

P 是 PID 的主要部分,可以让你了解良好的飞行特性。

1.将 PID 设置为其默认值

2.将 MultiRotor 牢牢固定在空中

3.将油门增加到开始感觉轻的悬停点

4.尝试将 MultiRotor 向下倾斜到每个电机轴上

5.应该感觉到对每个轴的压力的反应。

6.改变 P 直到难以对抗反应。

7。现在尝试沿 Pitch 轴(从前到后)摇动 MultiRotor。增加 P 直到它开始振荡,然后减少触摸。对偏航轴重复。现在应该适合飞行。

高级调优 - 了解 P、I 和 D 的影响:

P : 这是用于将 MultiRotor 返回到其初始位置的校正力的大小。

力的大小与初始位置的偏差减去控制器输入的任何改变方向的命令的组合成正比。较高的 P 值将产生更强的力来抵抗任何改变其位置的尝试。如果 P 值过高,在返回初始位置时,会出现过冲,需要反作用力进行补偿。这会产生振荡效应,直到最终达到稳定性或在严重的情况下变得完全不稳定。

增加 P 的值:

它会变得更加稳固/稳定,直到 P 太高,它开始振荡并失去控制。

你会注意到对移动 MultiRotor 的任何尝试都有很强的抵抗力。

P 的递减值:

它会在控制中开始漂移,直到 P 变得非常不稳定时太低。

对任何改变方向的尝试的抵抗力都会降低。

特技飞行:需要稍高的P值

轻柔平稳的飞行:需要稍低的P值

I :这是对角度变化进行采样和平均的时间段

施加到返回初始位置的力的量增加了 I 因子,偏差存在的时间越长,直到达到最大力值。更高的 I 将增加角度保持能力。

为 I 增加值:

增加保持整体初始位置的能力并减少漂移,但也会增加返回初始位置的延迟。

也会降低P的重要性。

I 的递减值:

会改善对变化的反应,但会增加漂移并降低保持姿势的能力。

也会增加P的重要性。

特技飞行:需要稍低的 I

平缓平稳飞行:需要稍高的 I

D:这是 MultiRotor 返回到其原始位置的速度。

增加 D 的值:提高恢复偏差的速度

快速恢复速度带来更高的过冲和振荡概率

也会增加P的效果

D 的递减值:

在将任何偏差返回到其初始位置时减少振荡

恢复到初始位置变得更慢

也会降低P的效果

特技飞行:增加D

平缓飞行:减小 D

用于特技飞行

增加 P 的值直到振荡开始,然后稍微后退

更改 I 的值,直到悬停漂移不可接受,然后稍微增加

增加 D 的值,直到从剧烈的控制变化中恢复导致不可接受的恢复振荡

P现在可能需要稍微降低

稳定飞行 (RC)

增加 P 的值直到振荡开始,然后稍微后退

更改 I 的值,直到无法从偏差中恢复,然后稍微增加

减小 D 的值,直到从剧烈的控制变化中恢复变得太慢。然后稍微增加 D

P现在可能需要稍微降低

稳定飞行(AP / FPV)

增加 P 的值直到振荡开始,然后稍微后退

更改 I 的值,直到无法从偏差中恢复,然后稍微增加

减小 D 的值,直到从剧烈的控制变化中恢复变得太慢。然后稍微增加 D

P现在可能需要稍微降低。

有个简单的调参窗口

其次支持的各种传感器有:

陀螺仪:

L3G4200D

ITG3200

MPU6050

MPU3050

IDG-650、ISZ-650(Wii Motion Plus)

加速度计:

LIS3L02AL

MMA7455

ADXL345

BMA180a

BMA020

LIS3LV02

LSM303DLx

MPU6050

MPU3050

气压计/高度计:

BMP085

MS561101BA

磁力计

MAG3110

HMC5843

HMC5883

AK8975

全球定位系统

带串行输出的 GPS,支持以下协议:

UBLOX

NMEA

MTK 二进制(v1.6 和 v1.9)

i2c 全球定位系统

这个飞控还带给了我们一个串行的协议:

好东西

MSP 消息的一般格式为:

<前导>,<方向>,<大小>,<命令>,,<crc>

在哪里:

preamble = ASCII 字符 '$M'

direction = ASCII 字符“<”如果到 MWC 或“>”如果来自 MWC

size = 数据字节数,二进制。在向 MWC 提出数据请求的情况下可以为零

command = message_id 根据下表

data = 如下表。UINT16 值是 LSB 在前。

crc = <size>、<command> 和每个数据字节的 XOR 到一个零。

插表格太难看了

有需要看源网站

原来,MW是以这样的一种方式活到了现代

代码语言:javascript
复制
http://www.multiwii.com/wiki/index.php?title=Mods#STM32_32-bit

有一个STM32的分支

代码语言:javascript
复制
https://github.com/multiwii/baseflight/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档