小四轴首飞,全套ST方案,全部开源,希望大家一起完善。
本帖最后由 jiangtianyu007 于 2014-5-22 09:41 编辑二话不说先上视频,整理完资料,明天全部开源。
第一次试飞,效果不是很好,大家请多多包涵,所以开源出来希望大家一起来优化这个ST平台的四轴。
主控用的STM32W108,主频有点低,24M,但是飞控和通信一块芯片就可以完成了。
AHRS系统用的是ST的LSM9DS0,九轴的,但是磁没用,因为离电池太近受到干扰太严重了。
今晚整理好资料,就开源给大家,希望大家一起努力,完善这个ST平台的四轴。
http://player.youku.com/player.php/sid/XNzE1MDQ4ODA0/v.swf
再次还要感谢论坛给予我的帮助,小四轴参考了很多论坛大神的代码,小弟在此感激不尽。
源码以及相关资料会集中在一楼,大家有什么问题,直接回帖就可以了,能够回答的我会尽力回答的。
STM32W108这款芯片其实比较难用,因为它是由一颗射频芯片和一颗MCU封装在一起,而且射频芯片也不是ST做的,所以一些底层的寄存器并没有开放,不适合大家去研究底层的东西,源码中的HAL都是由ST官方写的,大家只需要依葫芦画瓢就可以用了,不必深究。
LSM9DS0是一颗九轴陀螺仪芯片,出来没多久,申请到的样片,所以就试了一下。但是只用到了六轴,所以大家如果真的要用ST的MEMS器件,用LSM330DLC就可以了,六轴的,我也写过相应的代码,AHRS部分如果大家要的话,我也可以放出来。
本帖最后由 jiangtianyu007 于 2014-5-22 11:30 编辑
四轴机体是X型的,电机是有刷的。机架我直接买了美嘉欣的X100四轴,然后拆掉了他的板子。
遥控器与飞控板的硬件软件全部开源。
遥控器的硬件分为两个部门,一个是底板,上面包括电位器等东东,另一个就是一个小的收发模块,直接插在底板上就可以了。如果大家想要用STM32W108进行组网通信的话,直接打样那个小模块就可以了,之前就是用这个模块进行组网的。
飞控板上面是一颗九轴的陀螺仪LSM9DS0,但是由于磁力计受到电池的干扰比较严重,所以暂时没有使用,只用了六轴。飞控板上还有一颗ST的气压计,暂时还没有用到,因为主芯片主频有点低,有点计算不过来。
画的那张图是为了让坛友们进行PID控制电机的时候,能更好的把硬件和代码对应起来,1234对应的是四个PWM通道,并且标明了电机的旋转方向以及机体坐标系(右手),大家根据机体坐标系就可以判断出姿态角的正负了。 地板…… 牛逼啊,绝对是ST的铁杆粉丝。 nongxiaoming 发表于 2014-5-21 17:05
牛逼啊,绝对是ST的铁杆粉丝。
也不算是,主要大家MPU6050用多了,我就来开辟一片新天地,大家可以尝试尝试新的芯片。 视频在哪里??? chenyun 发表于 2014-5-21 17:12
视频在哪里???
youku还在转码,稍等。。。。。 观摩来了,不过楼主速度太慢了 哇哦。不错,进来学习了。哈哈 来个开源套件吧买个成品玩玩 很牛逼 占位 楼主做这个一共花了多少时间? 楼主,请问是无刷马达,还是有刷,资料速度开源呀{:lol:} stm32W组网的节奏 刘明,学习 很不错哦 坐等资料。 {:lol:}这么炫酷 我操{:lol:} 看起来好靓啊,
求代码~~ 赶紧顶一个。
看完视频,再顶一个。
LSM9DS0哪里买的,我都找不到呢?{:lol:} 支持楼主~~~~犀利!! 楼主视频在哪里? 求stm32代码 如果楼主开源的话,说不定能拿到今年的第一个精华帖诶。支持楼主。 不错啊 期待开源,这机架应该是美嘉欣的机架吧,俺也有一架,整好改装玩玩。
有刷电机。 看起来非常不错,方案也很靓。期待进一步资料,楼主做了多久? 期待资料~~~ 火钳刘明!{:lol:} 占位,学习! 站位 学习
有套件 我也支持一把 {:victory:}{:victory:}{:victory:} 强烈MARK!!!!!!!!!!!!!! 标题还是加上“征求完善建议”或“共同完善”为好。
JQ_Lin 发表于 2014-5-22 09:19
标题还是加上“征求完善建议”或“共同完善”为好。
谢谢指点。 这个必须顶..... zhuangxxchn@163 发表于 2014-5-21 17:26
楼主做这个一共花了多少时间?
1个多月吧。。。所以还有很多东西需要优化,人多力量大,发上来先给大家看看。 yht0312 发表于 2014-5-22 08:01
期待开源,这机架应该是美嘉欣的机架吧,俺也有一架,整好改装玩玩。
有刷电机。 ...
是的,X100的,买来玩的不错就被我拆了。。。嘻嘻 moon891207 发表于 2014-5-21 17:42
楼主,请问是无刷马达,还是有刷,资料速度开源呀
有刷的,就是美嘉欣X100的飞机,被我拆了。。 好么,太期待了~ Jordan?? 发表于 2014-5-21 21:40
这么炫酷 我操
看来你听到了拍摄者YD的声线。。。。 linghu2 发表于 2014-5-22 00:02
LSM9DS0哪里买的,我都找不到呢?
我是ST申请的,X宝上还是有的,只是贵了一点。
ST的惯性MEMS都贵。。。。 这个用啥电池啊?续航多久呢??
对了,这东东在室外,被大风吹下会怎么样呀?? skynet 发表于 2014-5-22 09:47
这个用啥电池啊?续航多久呢??
对了,这东东在室外,被大风吹下会怎么样呀??
电池300mAH的,能飞个十分钟吧,这么小的四轴也就室内飞一下了,室外大风的话肯定吹走了。 不错,过硬技艺.... 前辈用的是什么算法解算姿态的啊?看了你的程序,好像和其他大师用的有些不同 疯狂的锤头100 发表于 2014-5-22 11:07
前辈用的是什么算法解算姿态的啊?看了你的程序,好像和其他大师用的有些不同 ...
自己修改了一点,但是最主要的还是用的那个差乘的算法。
互补滤波,梯度下降,卡尔曼滤波都试过,综合计算效率和精度,还是选了这个好一点。 jiangtianyu007 发表于 2014-5-22 11:15
自己修改了一点,但是最主要的还是用的那个差乘的算法。
互补滤波,梯度下降,卡尔曼滤波都试过,综合计 ...
嗯嗯 我自己也尝试移植梯度下降算法,但是没成功,互补滤波也试了下,但是效果没叉乘的效果好,谢谢分享啊 9DS0 58元一个,比9250贵了一点点,还有9DS0的数据寄存器地址不连续,读起来比9250麻烦一点,9250的地址是连续的。但是9250的配置很麻烦。 不错,大公无私! 看看,准备做个玩玩 楼主真好,话说这样一套下来,成本得多少? georslin 发表于 2014-5-22 18:39
楼主真好,话说这样一套下来,成本得多少?
没有仔细算过,应该不贵吧。 支持!!!!! 顶帖,楼主好人 好贴,顶楼主!{:victory:} 四轴MARK 空心杯电机啊,正好用的上。 强贴留名…… 有时间也想玩 学习一下 jiangtianyu007 发表于 2014-5-21 17:03
四轴机体是X型的,电机是有刷的。机架我直接买了美嘉欣的X100四轴,然后拆掉了他的板子。
遥控器与飞控板 ...
楼主不错,牛X,一直想空了整一套垂直起飞,超高高度可以搞航拍的飞行器,楼主能不能跟点意见 hejiang177 发表于 2014-6-25 10:14
楼主不错,牛X,一直想空了整一套垂直起飞,超高高度可以搞航拍的飞行器,楼主能不能跟点意见 ...
我觉得还是踏实一点,从简单的做起。
先搞一套能够六轴的飞行器,操控够好,航向有点偏也没事,做个玩具级别的。
然后再搞九轴的,把航向搞定,这样基本上能够秒杀各类玩具了。
接着就是上GPS和气压计,实现定高 ,定点。这时候操控性能也会提高,这样走入专业航模的圈子了。
最后要实现航拍的话,那就组个队吧,那种存SD卡然后放出来玩的都是小打小闹的,没什么意思。要做就要加上云台,图像的实时传输。 楼主能否推荐个九轴的传感器或则陀螺仪传感器,我想将其用在随钻测量中,测钻孔轨迹的用的,有振动和电磁干扰下使用 留下记号 顶顶 下来学习学习 忘了说,谢谢了 梦中花雨 发表于 2014-6-28 11:27
楼主能否推荐个九轴的传感器或则陀螺仪传感器,我想将其用在随钻测量中,测钻孔轨迹的用的,有振动和电磁干 ...
是需要MEMS工艺的么?
如果要求小的话,选择MEMS工艺的。
精度要求很高的话,就ADI的吧。
感觉您的这个应用貌似要求很高,需要做出轨迹的话,靠惯性器件有点难。 高手呢 学习一下mark jiangtianyu007 发表于 2014-5-21 17:03
四轴机体是X型的,电机是有刷的。机架我直接买了美嘉欣的X100四轴,然后拆掉了他的板子。
遥控器与飞控板 ...
楼主您好,最近我也在用lsm9d这个imu,很幸运看到了您的代码,并且移植了可以用了,加速度、陀螺仪的数据都正常,但是磁力计的数据始终为零,
我试图修改打开磁力计,但是我查阅整个手册文档也没具体找到那个寄存器可以使能磁力计的三轴数据?请问楼主知道修改那个寄存器吗?
下面是您的代码,怎么修改才能使能磁力计呢?
/*
Gyrosensor Configuration
*/
I2C_ByteWrite(ADDR_LSM9DS0_G, CTRL_REG2_G, 0x00);
while( I2C_ByteRead(ADDR_LSM9DS0_G, CTRL_REG2_G)!=0x00 );
I2C_ByteWrite(ADDR_LSM9DS0_G, CTRL_REG3_G, 0x00);
while( I2C_ByteRead(ADDR_LSM9DS0_G, CTRL_REG3_G)!=0x00 );
// Disable Interrupt
I2C_ByteWrite(ADDR_LSM9DS0_G, CTRL_REG4_G, 0x20); // GYRO_FS = +-2000dpsBDU EnableLittle Endian
while( I2C_ByteRead(ADDR_LSM9DS0_G, CTRL_REG4_G)!=0x20 );
I2C_ByteWrite(ADDR_LSM9DS0_G, CTRL_REG5_G, 0x00);
while( I2C_ByteRead(ADDR_LSM9DS0_G, CTRL_REG5_G)!=0x00 );
//Gyroscope Enable
I2C_ByteWrite(ADDR_LSM9DS0_G, CTRL_REG1_G, 0xFF); // GYRO_ODR: 760Hz Cut-Off100
while( I2C_ByteRead(ADDR_LSM9DS0_G, CTRL_REG1_G)!=0xFF );
/*
AccelerometerandMagnetometer Configuration
*/
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG0_XM, 0x00);
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG0_XM)!=0x00 );
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG2_XM, 0x00); // ACC_FS = +-2g
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG2_XM)!=0x00 );
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG3_XM, 0x00);
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG3_XM)!=0x00 );
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG4_XM, 0x00);
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG4_XM)!=0x00 );
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG5_XM, 0x60); //MAG_ODR: 3.125Hz High Resolution
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG5_XM)!=0x60 );
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG6_XM, 0x00); //MAG_FS = +-2 gauss
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG6_XM)!=0x00 );
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG7_XM, 0x00); //Magnetic sensor mode: Continuous-conversion mode
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG7_XM)!=0x00 );
//Accelerometer Enable
I2C_ByteWrite(ADDR_LSM9DS0_XM, CTRL_REG1_XM, 0x87); // ACC_ODR: 400Hz
while( I2C_ByteRead(ADDR_LSM9DS0_XM, CTRL_REG1_XM)!=0x87 ); good good study day day up! jiaohaitao 发表于 2014-7-23 12:08
楼主您好,最近我也在用lsm9d这个imu,很幸运看到了您的代码,并且移植了可以用了,加速度、陀螺仪的数据 ...
按照我的代码,磁力计应该就是工作的啊。。。
目前代码已经更新了,I2C可以连续读取,效率更高了一点。 太帅了支持一个! 学习下 jiangtianyu007 发表于 2014-7-24 09:00
按照我的代码,磁力计应该就是工作的啊。。。
目前代码已经更新了,I2C可以连续读取,效率更高了一点。 ...
嗯,多谢回复,现在我读出的磁力计数据,很不正常,自己无规律在零点附近小范围变化。不知楼主当时是否测试了磁力计的数据? 感谢LZ的开源,正想做一台,这下可以参考了 jiaohaitao 发表于 2014-7-24 09:50
嗯,多谢回复,现在我读出的磁力计数据,很不正常,自己无规律在零点附近小范围变化。不知楼主当时是否测 ...
测试了。。。之前融合用上了磁力计,后来受电池干扰,所以就不用了。 mark 是不是ST的传感器会比目前火热的6050+5883要好很多啊?淘宝上查了一下,现成的模块要160,价差太大了..... 学习学习,MARK! 学习学习,MARK! 飞得挺稳的,挺不错的 过来给楼主顶一个,谢谢开源~ 好牛啊,顶一下!
666666666666666666666666666 嗨,非常感谢楼主的无私帮助,非常感谢! 想问一下陀螺仪和加速度是怎么样做校准的? 顶起来,真是好人啊{:biggrin:} jiaohaitao 发表于 2014-7-23 12:08
楼主您好,最近我也在用lsm9d这个imu,很幸运看到了您的代码,并且移植了可以用了,加速度、陀螺仪的数据 ...
你好,我最近也在用的这个片子,有两个问题想请教下,还希望大神指导
一是,我读原始数据的代码是通过官方代码移植的,通过移动传感器看原始数据是对的,但是使用我自己的融合算法想解算出欧拉角始终不对,然后看到你们的代码,移植了下确全是0
二是,传感器是不是只用接vcc gnd 和scl sda四根线,我读的iic地址和你们的不同,#define LSM9DS0_ADDRESS_ACCELMAG (0x3A) #define LSM9DS0_ADDRESS_GYRO (0xD6)我只有这两个地址可以读到数据,这是怎么回事 你好,我最近也在用的这个片子,有两个问题想请教下,还希望大神指导
一是,我读原始数据的代码是通过官方代码移植的,通过移动传感器看原始数据是对的,但是使用我自己的融合算法想解算出欧拉角始终不对,然后看到你们的代码,移植了下确全是0
二是,传感器是不是只用接vcc gnd 和scl sda四根线,我读的iic地址和你们的不同,#define LSM9DS0_ADDRESS_ACCELMAG (0x3A) #define LSM9DS0_ADDRESS_GYRO (0xD6)我只有这两个地址可以读到数据,这是怎么回事 麻烦问下,气压计用的什么型号?
效果如何? 发现受电池干扰,是换成外接电源就没问题了吗?有没有试过加电容滤波。 谢谢,学习学习 好强大,无线也集成了。 很详细的开源资料,谢谢楼主了! 羡慕呀! 这个不错{:victory:},很稳呀。对于电工做的可以玩的东东,看到一定要顶,谢谢分享 {:lol:}楼主流弊
页:
[1]
2