OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 4038|回复: 29

看腻了MPU6050的姿态解算,准备换个别的芯片LSM6DS3试试!

[复制链接]

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
发表于 2016-10-15 21:45:28 | 显示全部楼层 |阅读模式
正点原子公众号
本帖最后由 dasuantou 于 2016-10-15 21:49 编辑

现在想做一些姿态控制就不可避免地涉及到陀螺仪和加速度计的使用,牛逼的叫法称作"融合"、"滤波"等等。。。
因为尽人皆知的MPU6050里面藏有DMP协处理器,所以也没法知道外面卖的号称卡尔曼滤波的是不是真的,唯一的证明,可能就是让他换个芯片,看他能否没事走两步。。。走两步试试。。。

最近有ST的哥们给了我一块ST出的内含3轴陀螺仪和3轴加速度计的芯片,LSM6DS3,说它的价格比较便宜,这让我想起《食神》中吴孟达告诉周星驰最近有一批非常不错的便宜牛肉,KAO,我就问他,那性能怎么样,哥们很实在地笑了笑,性能比起MPU6050还是差了点,但强调了一下,只是一点点而已,而且还说,MPU6050去年炒货炒到17块人民币,我懂了,又不是做火箭,也轮不到我们做火箭啊!做点小东西就得了呗,所以就拿了个样品有心试试。

这个芯片最恶心的地方就是封装比较特异,是什么LGA-14L封装,DATASHEET里面还没有PCB 封装的数据,搞什么玩意,直接QQ那个哥们得到了制作数据,既然有了评估板,就不用苦逼用热风枪了,因为以前一直用英飞凌的XMC1300,被ST的固件库搞的有心理阴影了,为了破除这个魔咒,我直接使用最恶心的封装UFQFPN28,画这个封装花了一个下午,眼睛都花了。

现在的工作就是画个基于STM32F031G6U6+LSM6DS3的姿态解算模块,使用方便的串口输出,输出速度搞个250HZ吧,搞多了是自己跟自己过不去,何必呢,何苦呢?
(现在准备延续在阿mo论坛的风格,也就是“实践派”风格)

这次做姿态的目标,是搞个像CUBLI一样的自平衡玩意,来让检验一下自己的自控水平有没有老化。反正也没有什么开源的,就自己慢慢磨吧!
为了这个目标,预计要做到:
1.不错的姿态算法
2.基于磁编码器的有感FOC驱动,现在用无刷是方便的,毕竟做了较长的无感方波和FOC,家里一大堆的电机。
3.稳定的控制效果,先做个单轮的,也就是像村田顽童那样的效果,终于有机会敢试试了,那个轮子只是偶尔转动一下,不是像那些做的摆来摆去的拙劣的模仿品。
3.可以通过蓝牙实时上传和下载显示的数据和设定的参数,得做个简单的界面。说到这个,不得不说,做界面的经历真的是他妈的曲折,试过VB,C#,LABWINDOWS等等,都被微软这个孙子搞的什么.NET架构整的不行,后来,一个偶然的机会,看到极客工坊里有人用一个电位器通过串口就可以简单的让屏幕上的小红球移动,立即被吸引了,这个软件就是PROCESSING!真的很好用!
4.最麻烦的就是加工那个惯性轮。
。。。

今天花了一天终于画了一块姿态解算的板子(兄弟不才,用的4层板,哈哈),发送华强PCB,估计4,5天后会到,这几天把程序搞搞。
这个是PCB的效果图:
TOP.png

BOT.png


回复

使用道具 举报

  离线 

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2016-10-17
在线时间
18 小时
发表于 2016-10-17 17:51:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-10-25 11:48:50 | 显示全部楼层
本帖最后由 dasuantou 于 2016-10-25 12:16 编辑

打板回来了,手工焊了几块,本来以为LSM6DS3会很难焊的,但以老司机的功力还是妥妥的搞定。 IMG_0570.jpg
为了便于使用别的单片机来解算,就把I2C的两条线给引了出来,另外还有UART的TX,RX也引了出来,方便接蓝牙。
bot.jpg

使用的是STM32F031G6U6的单片机,便宜好用,体积够小,引脚足够。不太相信内部的RC振荡器,就加了一个小小的8M陶瓷振荡器,心里舒服多了。
IMG_0573.jpg
准备写两个程序,也就是找些开源的代码修修改改就行了,一个是全3D的姿态显示,但有Z轴的漂移,另一个是水平面的倾角测量,没有Z轴漂移,方便做倒立摆之类的玩意。


回复 支持 反对

使用道具 举报

  离线 

0

主题

10

帖子

0

精华

新手上路

Rank: 1

积分
41
金钱
41
注册时间
2013-8-26
在线时间
1 小时
发表于 2016-10-28 17:18:24 | 显示全部楼层
dasuantou 发表于 2016-10-25 11:48
打板回来了,手工焊了几块,本来以为LSM6DS3会很难焊的,但以老司机的功力还是妥妥的搞定。
为了便于使用 ...

现在在用这块骗子,遇到点问题,说不定楼主可能会遇到。能帮忙问下ST的兄弟么?
具体是这样的:
IO口模拟的SPI驱动,极少数情况下,LSM6DS3读0F寄存器的值,读不到0x69,甚至一直读不到数据。往0x12写reset也不管用,只有重新上电才能正常读取数据。有没有软件办法能让LSM6DS3恢复正常?
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-10-28 17:48:57 | 显示全部楼层
本帖最后由 dasuantou 于 2016-10-28 17:50 编辑
bbslhb 发表于 2016-10-28 17:18
现在在用这块骗子,遇到点问题,说不定楼主可能会遇到。能帮忙问下ST的兄弟么?
具体是这样的:
IO口模 ...

对于LSM6DS3,我用的是硬件I2C的方式,对于软件IO模拟I2C,我是从来不用的。
使用STM32F031的硬件I2C,我从来没有遇到过不正常的问题。
为了与原来的MPU6050接口兼容,就没有使用SPI接口了。ST那边的兄弟一般不会回答这些问题,我都是自己啃DATASHEET搞的,不好意思没帮上忙。
回复 支持 反对

使用道具 举报

  离线 

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-10-30
在线时间
5 小时
发表于 2016-10-30 19:46:08 | 显示全部楼层
不错,做的还可以。
大鹏一日同风起,扶摇直上九万里。
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-10-31 17:18:25 | 显示全部楼层
闪耀的空白 发表于 2016-10-30 19:46
不错,做的还可以。

有兴趣的朋友可以送几个,这个去掉2个电阻后可以自己用单片机读取的,就相当于扩展板了,方便自己玩。
回复 支持 反对

使用道具 举报

  离线 

4

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2016-9-8
在线时间
21 小时
发表于 2016-10-31 20:25:22 | 显示全部楼层
可以做计步器么?
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-10-31 20:42:40 | 显示全部楼层
xrq1995 发表于 2016-10-31 20:25
可以做计步器么?

有了3轴陀螺仪和3轴加速度计,绝对可以做了。
这个应该是很早的应用了,不过要做好也不易,任何东西做个初步应用都简单,但做到真正靠谱就没有那么容易了。
回复 支持 反对

使用道具 举报

  离线 

0

主题

10

帖子

0

精华

新手上路

Rank: 1

积分
41
金钱
41
注册时间
2013-8-26
在线时间
1 小时
发表于 2016-11-1 13:32:26 | 显示全部楼层
dasuantou 发表于 2016-10-28 17:48
对于LSM6DS3,我用的是硬件I2C的方式,对于软件IO模拟I2C,我是从来不用的。
使用STM32F031的硬件I2C,我 ...

没事,多谢提醒,我用的是ATMEL的G55,硬件SPI一直没调通,所以用软件模拟的。可能是驱动出了点问题。驱动一直用着没事,新贴的一些板子,平常用着挺好的,突然出现故障,很难复现,好囧。
回复 支持 反对

使用道具 举报

  离线 

0

主题

10

帖子

0

精华

新手上路

Rank: 1

积分
41
金钱
41
注册时间
2013-8-26
在线时间
1 小时
发表于 2016-11-1 13:37:18 | 显示全部楼层
xrq1995 发表于 2016-10-31 20:25
可以做计步器么?

15h这个寄存器和计步有关系,可以研究一下。应该有结果出来,但是真正能用还得慢慢调校。还得考虑动作的幅度和阈值。
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-11-1 17:10:45 | 显示全部楼层
本帖最后由 dasuantou 于 2016-11-1 17:33 编辑
bbslhb 发表于 2016-11-1 13:32
没事,多谢提醒,我用的是ATMEL的G55,硬件SPI一直没调通,所以用软件模拟的。可能是驱动出了点问题。驱 ...
G55有什么亮点吗?支持怎么样?(指相关开发环境,国内的技术支持都是比较扯蛋的),价钱如何?好搞到不?
回复 支持 反对

使用道具 举报

  离线 

0

主题

10

帖子

0

精华

新手上路

Rank: 1

积分
41
金钱
41
注册时间
2013-8-26
在线时间
1 小时
发表于 2016-11-3 14:45:00 | 显示全部楼层
dasuantou 发表于 2016-11-1 17:10
G55有什么亮点吗?支持怎么样?(指相关开发环境,国内的技术支持都是比较扯蛋的),价钱如何?好搞到不?
...

就RAM比较大,主打低功耗的。自带有AtmelStudio开发环境,ASF里面的例程很多,开发板也有,两三百就能买到。Atmel的支持基本为0,全靠**商。
Nordic的比较好,自带RF可以做BLE。功耗好像能更低点。
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-11-3 18:31:11 | 显示全部楼层
本帖最后由 dasuantou 于 2016-11-3 18:35 编辑
bbslhb 发表于 2016-11-3 14:45
就RAM比较大,主打低功耗的。自带有AtmelStudio开发环境,ASF里面的例程很多,开发板也有,两三百就能买 ...

不想学来学去了,现在基本就用英飞凌和STM32,主要是英飞凌用的多些,说实话,现在用KEIL+JLINK+ARM核的基本算是绝佳开发体验了。英飞凌的RAM也很大的,像它的M0核,虽说是32M速度,但实际比ST的M0都不差,而且都是16KB的大RAM,很爽的。
个人非常讨厌什么基于eclipse的开发环境,也不装逼的使用什么IAR的开发环境。

现在刚刚加工了一个惯性轮,到手后就可以着手开发惯性轮倒立摆了,不知道有没有高手做过?


回复 支持 反对

使用道具 举报

  离线 

4

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2016-9-8
在线时间
21 小时
发表于 2016-11-4 16:51:15 | 显示全部楼层
dasuantou 发表于 2016-10-31 20:42
有了3轴陀螺仪和3轴加速度计,绝对可以做了。
这个应该是很早的应用了,不过要做好也不易,任何东西做个 ...

兄弟能搞个么
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2016-11-4 18:13:33 | 显示全部楼层

这个玩意做的话,没有太大意义,手头还有活,得有空了才考虑。手机下个APP不就完了?
回复 支持 反对

使用道具 举报

  离线 

0

主题

9

帖子

0

精华

新手上路

Rank: 1

积分
26
金钱
26
注册时间
2016-9-3
在线时间
4 小时
发表于 2016-11-15 07:32:56 | 显示全部楼层
支持宝宝大师!
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
7
金钱
7
注册时间
2016-11-16
在线时间
0 小时
发表于 2016-11-16 16:36:52 | 显示全部楼层
半个凳子,看楼主做出来的姿态解算效果。
回复 支持 反对

使用道具 举报

sencezhang 该用户已被删除
发表于 2017-1-9 18:20:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  离线 

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2016-4-3
在线时间
144 小时
 楼主| 发表于 2017-1-9 18:39:57 | 显示全部楼层
sencezhang 发表于 2017-1-9 18:20
第一次接触陀螺仪,坐等看效果

这个早就给朋友了,效果还是可以的。我就懒得拍视频了,不过可以看看我刚刚做的一个机器人总线舵机DEMO.
回复 支持 反对

使用道具 举报

dlhsok 该用户已被删除
发表于 2017-1-15 13:01:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  离线 

8

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2015-3-12
在线时间
95 小时
发表于 2017-1-31 10:06:14 | 显示全部楼层
话说,这个真的便宜?淘宝一下看看
回复 支持 反对

使用道具 举报

  离线 

25

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2015-5-2
在线时间
54 小时
发表于 2017-4-20 09:57:57 | 显示全部楼层
正在研究LSM6DS3这款芯片,想把他移植到STM8上,请问楼主或者论坛朋友可以分享下stm32的驱动DEMO么?stm8移植成功后立马分享,谢谢哈
回复 支持 反对

使用道具 举报

  离线 

25

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2015-5-2
在线时间
54 小时
发表于 2017-4-20 09:58:59 | 显示全部楼层
正在研究LSM6DS3这款芯片,想把他移植到STM8上,请问楼主可以分享下DEMO么?
回复 支持 反对

使用道具 举报

  离线 

25

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2015-5-2
在线时间
54 小时
发表于 2017-4-21 15:17:05 | 显示全部楼层
dasuantou 发表于 2016-10-28 17:48
对于LSM6DS3,我用的是硬件I2C的方式,对于软件IO模拟I2C,我是从来不用的。
使用STM32F031的硬件I2C,我 ...

你好,我正在使用LSM6DS3,但是驱动不了,没有应答,请问可以指点下么?
回复 支持 反对

使用道具 举报

  离线 

27

主题

78

帖子

0

精华

新手上路

Rank: 1

积分
225
金钱
225
注册时间
2015-12-17
在线时间
44 小时
发表于 2017-5-9 15:37:34 | 显示全部楼层
您好   目前在调试LSM6DS0这款芯片,驱动I2C的读写没问题,就是有点不明白需要对芯片进行哪些基本的配置,我只要读出三个加速度和角速度原始值就可以。基本配置有哪些呢?请指教。
回复 支持 反对

使用道具 举报

  离线 

27

主题

78

帖子

0

精华

新手上路

Rank: 1

积分
225
金钱
225
注册时间
2015-12-17
在线时间
44 小时
发表于 2017-5-22 15:58:41 | 显示全部楼层
楼主请教您一下  我最近也在调试LSM6DS0,就想先实现最基本的读取三轴数据,需要哪些基本的配置呢?I2C驱动没问题,可以对该芯片读写,但是我读出来的值总感觉不对  求指教。谢谢
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
18
金钱
18
注册时间
2017-9-19
在线时间
1 小时
发表于 2017-9-19 15:10:25 | 显示全部楼层
Draway 发表于 2017-4-20 09:58
正在研究LSM6DS3这款芯片,想把他移植到STM8上,请问楼主可以分享下DEMO么?

你好,我刚拿到LSM6DS3,板子已经做好了,请问你可以提供下你的驱动代码做参考吗?谢谢
回复 支持 反对

使用道具 举报

  离线 

1

主题

7

帖子

0

精华

新手上路

Rank: 1

积分
33
金钱
33
注册时间
2017-12-28
在线时间
20 小时
发表于 2018-1-5 17:56:06 | 显示全部楼层
怎么不把源码贴出来 lsm6ds3的stm32驱动源码还是挺少的 楼主分享啊
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
13
金钱
13
注册时间
2018-1-23
在线时间
0 小时
发表于 昨天 09:47 | 显示全部楼层
z843757475 发表于 2018-1-5 17:56
怎么不把源码贴出来 lsm6ds3的stm32驱动源码还是挺少的 楼主分享啊

感謝樓主的幫忙,我還蠻需要6050以及lsm6ds3的比較的。
剛好看到有人需要lsm6ds3的驅動,所以來幫樓主添磚加瓦一下。

這是github上的lsm6ds3 for stm32 driver,但是其實我沒用過。
https://github.com/cnoviello/stm32-nucleo144-f7-iks01a1/tree/master/Middlewares/Components/lsm6ds3
反而是下面這個arduino library source code,我有用過,基本上你可以用arduino當測試以及參照,然後把這個驅動嫁接到你自己的裝置即可。
https://github.com/sparkfun/SparkFun_LSM6DS3_Arduino_Library

這顆在使用上我個人有一點心得分享一下,附件一定要仔細研讀。

1.一般使用就不多談,直接去對應的register取用你要的資料即可,然後在initial lsm6ds3時的部
份可以參考上面的驅動即可。

2.如果你同時取用的資訊很多,最經典的就是四軸機的應用,你應該會需要6筆資料共12Byte,如果照一般方式取用,你需要去6個不同的register取用資料,這會衍生一個問題,那就是速度
可能不夠快。這種情況您應該使用FIFO,FIFO有提供一個滾動讀取的功能,你可以對同一個register連續讀取6次,每次2個Byte,這樣速度就會快上許多。

3.使用FIFO時要注意,因為這顆FIFO比較大,所以必需控制FIFO內的資料長度,以確保讀取到的資料是最新的,而不是N個ms前就放置在FIFO的資料,這部份不注意的話,會造成計算出的角度或速度在時間軸上落後的情形。

4.這顆FIFO清空的速度超快,所以有第3項情形發生時,直接清空FIFO。

5.用輪詢的方式比較浪費資源,所以如果使用FIFO而且sample rate又比較高,然後主控的運算
資源有限時,最好還是把中斷開啟。

lsm6ds3DataSheet.pdf

1.41 MB, 下载次数: 0

lsm6ds3AppNote.pdf

1.55 MB, 下载次数: 1

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-24 09:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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