搜索
bottom↓
12
返回列表 发新帖
楼主: zhanwang_sky

DIY飞控(STM32+MPU9150),试飞成功 !附PID及互补滤波代码

  [复制链接]

出0入0汤圆

发表于 2014-10-7 16:53:15 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2014-10-7 17:29:44 | 显示全部楼层
楼主太久了,楼主可否弄成一个教程,哈哈哈,学习

出0入4汤圆

发表于 2014-10-7 17:37:27 | 显示全部楼层
效果相当好啊

出0入0汤圆

发表于 2014-10-7 17:48:10 | 显示全部楼层
赞一个。

出0入0汤圆

发表于 2014-10-10 01:05:30 | 显示全部楼层
标记一个

出0入0汤圆

发表于 2014-10-10 09:04:12 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2014-10-10 10:41:30 | 显示全部楼层
路过支持下,32用的什么型号?

出0入0汤圆

发表于 2014-10-10 10:53:53 | 显示全部楼层
这个x-io是什么网站?

出0入0汤圆

发表于 2014-10-10 12:34:19 | 显示全部楼层
给楼主点赞  帅到极致

出0入0汤圆

发表于 2014-10-10 12:45:53 | 显示全部楼层
看见飞控就Mark

出0入0汤圆

发表于 2014-10-10 14:14:44 | 显示全部楼层
顶楼主

出0入0汤圆

发表于 2014-10-10 14:16:47 | 显示全部楼层

赞一个

出0入0汤圆

发表于 2014-10-10 14:46:20 | 显示全部楼层
控制放在循环里不好吧。离散控制的时间要求是固定的呢,要放在定时器中断里跑。

出0入0汤圆

发表于 2014-10-10 15:46:12 | 显示全部楼层
mark。。。

出0入0汤圆

 楼主| 发表于 2014-10-10 20:29:30 | 显示全部楼层
crazyrat 发表于 2014-10-10 14:46
控制放在循环里不好吧。离散控制的时间要求是固定的呢,要放在定时器中断里跑。 ...

主循环是5ms一次,MPU6050的data ready中断后读传感器数据,然后解姿态,再PID控制...周期当然是固定的,要不怎么PID...

出0入0汤圆

 楼主| 发表于 2014-10-10 20:32:46 | 显示全部楼层
wangmengqiwo 发表于 2014-10-10 10:53
这个x-io是什么网站?

我是搜互补滤波搜到的这个

出0入0汤圆

发表于 2014-10-11 23:23:56 | 显示全部楼层
zhanwang_sky 发表于 2014-10-10 20:32
我是搜互补滤波搜到的这个

额,好吧。。。但是貌似挺好的

出0入0汤圆

发表于 2014-10-16 23:34:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-10-16 23:52:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-10-17 15:37:31 | 显示全部楼层
四轴都是土豪玩的

出0入0汤圆

发表于 2014-10-20 02:35:23 | 显示全部楼层
学习了,顶一个

出0入0汤圆

发表于 2014-10-22 19:19:31 | 显示全部楼层
请教楼主遥控自己做的还是???

出0入0汤圆

发表于 2014-10-22 19:53:05 | 显示全部楼层
最近航模很火啊

出0入0汤圆

发表于 2014-10-22 19:53:21 | 显示全部楼层
最近航模很火啊

出0入0汤圆

发表于 2014-10-22 19:55:29 | 显示全部楼层
好贴,mark

出0入0汤圆

发表于 2014-10-22 20:51:14 | 显示全部楼层
想知道用的什么电调

出0入0汤圆

 楼主| 发表于 2014-10-25 14:31:09 | 显示全部楼层
麦田有怪圈 发表于 2014-10-22 20:51
想知道用的什么电调

好盈飞腾30A的

出0入0汤圆

发表于 2014-10-25 16:41:35 | 显示全部楼层
标记一下,赞一个

出0入0汤圆

发表于 2014-10-25 17:54:36 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-10-25 18:14:22 | 显示全部楼层
不错不错,能自适应么?

出0入0汤圆

发表于 2014-10-25 19:01:45 | 显示全部楼层
收藏了谢谢

出0入0汤圆

发表于 2014-10-25 19:33:12 | 显示全部楼层
不错,mark!

出0入0汤圆

发表于 2014-10-27 18:54:15 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-10-27 19:26:15 | 显示全部楼层
mark,,谢谢分享

出0入0汤圆

发表于 2014-10-27 19:30:40 | 显示全部楼层
强烈支持~!!!

出0入0汤圆

发表于 2014-10-27 19:31:34 | 显示全部楼层
收藏学习,感谢楼主

出0入0汤圆

发表于 2014-10-27 19:52:21 | 显示全部楼层
楼主牛人,mark下!!!

出0入0汤圆

发表于 2014-10-27 20:37:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-10-28 10:39:55 | 显示全部楼层
赞赞赞

出0入0汤圆

发表于 2015-3-12 14:44:26 | 显示全部楼层
赞一个

出0入0汤圆

发表于 2015-3-13 14:54:32 | 显示全部楼层
帮顶

出0入0汤圆

发表于 2015-3-13 19:58:12 | 显示全部楼层
写的很详细 支持一个

出0入0汤圆

发表于 2015-3-13 20:06:29 | 显示全部楼层
酷!楼主赞一个

出0入0汤圆

发表于 2015-3-21 22:14:37 | 显示全部楼层
楼主好厉害啊,mark

出0入0汤圆

发表于 2015-3-22 00:10:58 | 显示全部楼层
支持一下!

出0入0汤圆

发表于 2015-3-22 12:43:14 | 显示全部楼层
好东西,学习了! 也在用32做飞控中

出0入0汤圆

发表于 2015-3-22 23:37:30 | 显示全部楼层
呵呵,谢谢大神分享!

出0入0汤圆

发表于 2015-3-23 08:06:09 | 显示全部楼层
东西不错,谢谢lz,最近也在做这个,

出0入0汤圆

发表于 2015-3-27 16:17:37 | 显示全部楼层
你好楼主,我也在开始学四轴,现在开始写PID,非常感谢楼主的代码。我想问下,在代码里面不是有

heading_int_value += error * h_i_gain;
                        if(heading_int_value > HEAD_INT_LIMI_US_F)
                                heading_int_value = HEAD_INT_LIMI_US_F;
                        else if(heading_int_value < - HEAD_INT_LIMI_US_F)
                                heading_int_value = - HEAD_INT_LIMI_US_F;

这一段么,这一段不是积分项么?为什么说没有加积分项呢?

出0入0汤圆

发表于 2015-3-27 16:28:30 | 显示全部楼层
這段代碼是限制 "heading_int_value" 不能大於 HEAD_INT_LIM_US_F 和小於 - HEAD_INT_LIM_US_F。是加积分項的後處理

出0入0汤圆

发表于 2015-4-30 15:14:13 | 显示全部楼层
有谁遇过读AK8975时能正确读出ID,且低8位数据有变化,而高8位却没变化的么?(X的高8位固定为00,y的为255)。。。。

出0入0汤圆

发表于 2015-4-30 15:18:14 | 显示全部楼层
收藏了,开源就是好。。。

出0入0汤圆

发表于 2015-4-30 17:01:57 | 显示全部楼层

出0入0汤圆

发表于 2015-5-1 10:47:45 | 显示全部楼层
楼主的代码基本能看懂,我这有个小问题需要向你请教。在PID中,YAW方向的控制不太明白,最近纠结了很久

在楼主的程序中
                        error = relative_error(desired_heading, current_heading);
                        heading_int_value += error * h_i_gain;
                        if(heading_int_value > HEAD_INT_LIMI_US_F)
                                heading_int_value = HEAD_INT_LIMI_US_F;
                        else if(heading_int_value < - HEAD_INT_LIMI_US_F)
                                heading_int_value = - HEAD_INT_LIMI_US_F;
                        heading_trim = (error * h_p_gain) + heading_int_value - (relative_error(current_heading, last_heading) * h_d_gain);
                        last_heading = current_heading;
这里error得到的我猜测应该是期望角度和实际角度的误差,那么问题来了,这里的期望角度应该设为什么,实际角度是解算出的航向角吗?
如何才能做到锁定航向呢?relative_error(desired_heading, current_heading)函数里是怎么实现的
希望楼主不吝赐教,航向PID这块我一直没想清楚该怎么写。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-5-1 20:14:14 | 显示全部楼层
楼主,想请教一下互补滤波里面的参数设定需要注意什么?移植时产生什么影响?谢谢指教
#define sampleFreq        512.0f                        // sample frequency in Hz
#define twoKpDef        (2.0f * 0.5f)        // 2 * proportional gain
#define twoKiDef        (2.0f * 0.0f)        // 2 * integral gain

//---------------------------------------------------------------------------------------------------
// Variable definitions

volatile float twoKp = twoKpDef;                                                                                        // 2 * proportional gain (Kp)
volatile float twoKi = twoKiDef;                                                                                        // 2 * integral gain (Ki)
volatile float q0 = 1.0f, q1 = 0.0f, q2 = 0.0f, q3 = 0.0f;                                        // quaternion of sensor frame relative to auxiliary frame
volatile float integralFBx = 0.0f,  integralFBy = 0.0f, integralFBz = 0.0f;        // integral error terms scaled by Ki

出0入0汤圆

发表于 2015-5-2 08:00:34 | 显示全部楼层
楼主好赞,必须收藏

出0入0汤圆

发表于 2015-5-3 09:30:17 | 显示全部楼层
支持一下!

出0入0汤圆

发表于 2015-5-3 17:40:40 | 显示全部楼层
厉害啊 最近正在学四轴,多谢分享啊

出0入0汤圆

发表于 2015-5-3 19:44:43 | 显示全部楼层
对四轴飞行也很有兴趣,正准备下手去做一个呢,问一下楼主,做成你这样大概投资多少了?

出0入0汤圆

发表于 2015-5-4 15:15:44 | 显示全部楼层
这个必须顶!

出0入0汤圆

发表于 2015-5-4 15:28:38 | 显示全部楼层
支持一下!

出0入0汤圆

发表于 2015-5-4 15:38:24 | 显示全部楼层
帮顶!!!!

出0入0汤圆

发表于 2015-5-5 13:25:35 | 显示全部楼层
飞控源码,方案

出0入0汤圆

发表于 2015-5-5 14:06:52 | 显示全部楼层
收藏了学习学习

出0入0汤圆

发表于 2015-5-5 14:29:52 | 显示全部楼层
\(^o^)/~必须顶,来学习学习

出0入0汤圆

发表于 2015-5-5 17:03:34 | 显示全部楼层
silence2455 发表于 2014-4-2 09:26
楼主大哥,我也用的9150,移植AHRS那个算法融合陀螺仪,加计,磁力计。
现在Yaw不太正常,确定是磁力计出了 ...

请问这个问题你是怎样解决的 我的问题和你一样 也是磁力计的id能读出来 低8位数据会变化 高8位的情况就和你的一样了  怎么破啊?

出0入0汤圆

发表于 2015-5-5 17:14:48 | 显示全部楼层
silence2455 发表于 2014-4-2 09:26
楼主大哥,我也用的9150,移植AHRS那个算法融合陀螺仪,加计,磁力计。
现在Yaw不太正常,确定是磁力计出了 ...

你好,请问你之前mpu9150中的AK8975是调好了么?我现在也遇到你当时的情况,就是id能读出来,低8位数据会变动,就是高8位数据要么是0 要么是255.可以分享一下方法么?

出0入0汤圆

发表于 2015-5-5 18:35:26 | 显示全部楼层
支持楼主,谢谢分享。

出0入0汤圆

发表于 2015-5-5 22:52:32 | 显示全部楼层
牛人值得学习,

出0入0汤圆

发表于 2015-5-5 22:59:44 | 显示全部楼层
学习下!谢谢分享~

出0入0汤圆

发表于 2015-5-8 05:31:43 | 显示全部楼层
你好  能告诉我你的qq号吗  有个问题想请教一下。我 qq 707600247

出0入0汤圆

发表于 2015-5-8 12:24:17 | 显示全部楼层
不错的样子

出0入0汤圆

发表于 2015-8-10 09:41:39 | 显示全部楼层
zhanwang_sky 发表于 2014-2-21 22:01
就是100K,其实99K也能读到了,但是注意信号是要经过反相的,得接个反相器或者三极管也行。
初始化串口的 ...

您好,请问0-2048是指pwm信号的占空比吗,还是什么数据呢!

出0入0汤圆

发表于 2015-8-10 09:51:46 | 显示全部楼层
高大上,mark一下,准备有时间了解了解~

出0入0汤圆

发表于 2015-8-10 20:40:54 | 显示全部楼层
收藏,以后我也要做一个

出0入0汤圆

发表于 2015-8-11 22:04:24 | 显示全部楼层
受益匪浅,多谢楼主

出0入0汤圆

发表于 2015-10-15 09:58:45 | 显示全部楼层
LZ请教一下,我用的是MPU9150,我如果只用ACC和GRYO的数据姿态解出来是对的,只是会慢慢的飘,但是我将磁力计MAG的数据如果一起融合进去,YAW这个方向角就不对了,不知道是什么原因,请教

出0入0汤圆

发表于 2015-10-15 14:26:42 | 显示全部楼层
我也想玩啊!
就是没时间捣鼓,要学的东西还挺多的!!!

出0入13汤圆

发表于 2015-10-15 17:22:42 | 显示全部楼层
谢谢好享这么好的资料

出0入0汤圆

发表于 2015-10-16 15:33:50 | 显示全部楼层
LZ,请问磁力计读出来的原始数据怎么修正才能应用呢,看了一些代码是MX=M * GAIN + OFFSET, 这个GAIN和OFFSET怎么得来的呢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 03:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表