【RM2020-供开源飞控】E2000动力系统部分性能曲线函数拟合
这周在用开源飞控+DJI E2000Pro动力系统过程中遇到的一些问题,在这里和大家分享一下原因和解决办法。
先上问题视频
[media=x,760,570]https://v.youku.com/v_show/id_XNDk2NjQ0Mjg2OA==[/media]
从视频中可以看到飞机姿态在起飞阶段过程较为平稳。起飞后打杆进行方位飞行后,四轴飞行器姿态迅速改变以轴心为基准晃动。
现象分析:飞机在起飞阶段姿态较为平稳,因为不涉及姿态改变,4个电机输出值较为接近。起飞后打杆飞机晃动,因为姿态改变,各个电机输出需改变,飞控未能输出正确的参数值,使得未能飞机未能达到目标姿态。

问题分析:DJI E2000动力系统是速度闭环,油门和转速是线性关系,导致油门和拉力成二次方关系,油门-拉力动力曲线下凹。而普通PWM电调+电机,油门和拉力成线性关系。导致电机输出拉力值低于期望拉力值。

解决方案一:更换电调,成本较高,且E2000Pro为一体化设计,更换复杂。

解决方案二:在程序中最后输出每个电机油门的地方,转换成比较凸的曲线,补偿电调本身比较凹的曲线。

考虑解决方案二,成本较低,易实现。于是利用电子称自制简易拉力测试设备,如下图

IMG_20201116_133144.jpg



鉴于电子称精度较低,最小分度值为50g,因此拟合出来的数据稍有出入。
下面上数据

2X)R`QL[]FAA¥{JFVGID8MB.png





求得拟合油门-拉力拟合函数

图片1.png



取油门-拉力首个点和最后一个点作为期望拟合得到的油门-拉力线性关系。
推出补偿函数

图片2.png





代码实现:在程序中找到飞控配置pwm输出前,最终每个电机油门输出的数组。我的代码里是先有motor_step【i】数组然后限幅后再传给motor【i】。因此我选择在motor_step这里进行补偿,然后传递给motor【i】再进行输出。(实际上在motor_step或者motor数组进行补偿没什么区别,因为代码要求0油门对应0输出值,油门量范围为0-1000,单位0.1%,因此简化补偿函数,如代码)

SFI%GY%~RG]E`E@2RRJKCER.png



最后附赠一个转速-拉力曲线。通过计算E2000手册中的动力曲线像素点算出来的,还挺准的

图片10.png



图片11.png





请问这篇文章对你有用吗?
【RM2020-供开源飞控】E2000动力系统部分性能曲线函数拟合
所有评论
暂无更多
暂无更多
关于作者
Kevin_JF
Kevin_JF
0 关注Ta
0 文章
0 经验值
0 获赞