搜索
bottom↓
回复: 135
打印 上一主题 下一主题

STM32F103 硬件I2C ADXL345 L3G4200 LSM303 调试成功

  [复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2012-8-20 12:49:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 john800422 于 2012-8-20 12:50 编辑

STM32F103之前调试成功了
I2C DMA部分是使用
"相信这是ouravr共享中,目前最完美的STM32读写EEPROM驱动,硬件I2C中断加DMA方式(原创)"
做修改的

目前在制作4轴

打算换成STM32F405
请问有人有成功调试过STM32F4的I2C吗??
试了几个礼拜
模拟I2C 硬件I2C ( 从STM21F1移植 )
都失败

不知道是不是因为是自己焊的关系
是否有人可以提供STM32F4 I2C可运行的程式做测试吗??




本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

来自 2楼
 楼主| 发表于 2012-8-22 00:00:10 | 只看该作者
本帖最后由 john800422 于 2012-8-22 00:02 编辑

上传一下STM32F1 ADXL345的完整测试程序

做初始化和ID验证

没有人调试STM32F4的I2C成功过吗??

本帖子中包含更多资源

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

x

出0入0汤圆

来自 3楼
 楼主| 发表于 2012-8-27 22:01:29 | 只看该作者
wuguoyan 发表于 2012-8-23 21:22
在你下的 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F4xx_StdPeriph_Examples\I2C\EEPROM这个就 ...

已经可以了

谢谢~

在这里把官方范例修改后的档案上传

STM32F4 硬件I2C 使用DMA

本帖子中包含更多资源

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

x

出0入0汤圆

来自 4楼
 楼主| 发表于 2013-4-17 00:11:52 | 只看该作者
本帖最后由 john800422 于 2013-4-17 00:19 编辑
oldbreadman 发表于 2013-4-16 22:19
楼主啊,请教一下你的飞控开发成功了吗?

我也是用的stm32f103rct6+l3g4200d+adxl345,但IMU和PID算法始终 ...


最近要考試和交報告沒什麼時間
所以我就附上我自己的資料, 自己參考吧

------------------------------------------------------
******飛控板
MCU:STM32F405RG
RF:nRF24L01P + PA + LNA
Sensor:L3G4200 + LSM303


******遙控板
MCU:STM32F407VG
RF:nRF24L01P + PA + LNA
TFT:4.3' SSD1963(奮鬥板的4.3")






******四軸
980KV
1045槳
11.1v 25C 2200mAh



四軸目前還需要調整PID

以下是資料
因為是測試, 所以程式還蠻亂的



本帖子中包含更多资源

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

x

出0入0汤圆

5
发表于 2012-8-20 16:30:46 | 只看该作者
想用STM32啊。

出0入0汤圆

6
 楼主| 发表于 2012-8-21 13:03:35 | 只看该作者
js200300953 发表于 2012-8-20 16:30
想用STM32啊。

那就用阿
STM32的资料蛮多的
自学容易

出0入0汤圆

7
发表于 2012-8-21 16:46:33 | 只看该作者
很好~模拟的太低效了~

出0入0汤圆

8
发表于 2012-8-21 17:00:12 | 只看该作者
顶  一下   

出0入0汤圆

9
发表于 2012-8-22 01:52:28 | 只看该作者
绑定一下                                                                                                                                                 

出0入0汤圆

10
发表于 2012-8-23 12:40:17 来自手机 | 只看该作者
楼主好人totally!

出0入0汤圆

11
 楼主| 发表于 2012-8-23 19:10:51 | 只看该作者
lxl_lw 发表于 2012-8-23 12:40
楼主好人totally!


可以正常读取了吗??

出0入0汤圆

12
发表于 2012-8-23 19:26:56 | 只看该作者
请问楼主lsm303如何手工焊  我焊hmc5883焊坏了三块板子的焊盘了

出0入0汤圆

13
发表于 2012-8-23 19:34:37 | 只看该作者
STM32F4和F1的I2C有点不一样的,ST对I2C改进过,可以参照库里面自带的例程~

出0入0汤圆

14
 楼主| 发表于 2012-8-23 21:07:43 | 只看该作者
40342zz 发表于 2012-8-23 19:26
请问楼主lsm303如何手工焊  我焊hmc5883焊坏了三块板子的焊盘了

lsm303是买焊好的

出0入0汤圆

15
 楼主| 发表于 2012-8-23 21:18:09 | 只看该作者
wuguoyan 发表于 2012-8-23 19:34
STM32F4和F1的I2C有点不一样的,ST对I2C改进过,可以参照库里面自带的例程~


ST官方的F4例程
除了CPAL的之外
找不到其他I2C的...

是否提供明确的地方??

出0入0汤圆

16
发表于 2012-8-23 21:22:16 | 只看该作者
john800422 发表于 2012-8-23 21:18
ST官方的F4例程
除了CPAL的之外
找不到其他I2C的...

在你下的 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F4xx_StdPeriph_Examples\I2C\EEPROM这个就是I2C操作EEPROM的例程
实际还到的文件有
\STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Utilities\STM32_EVAL\STM3240_41_G_EVAL 目录下的 stm324xg_eval_i2c_ee.c

出0入0汤圆

17
 楼主| 发表于 2012-8-24 13:11:35 | 只看该作者
wuguoyan 发表于 2012-8-23 21:22
在你下的 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F4xx_StdPeriph_Examples\I2C\EEPROM这个就 ...

谢谢你
我试试看
这个EXAMPLE没有建好的PROJECT吗?

出0入0汤圆

18
 楼主| 发表于 2012-8-24 13:13:59 | 只看该作者
seanwood 发表于 2012-8-24 09:03
用CPAL吧,I2C开最高中断。否则会出问题的。
开DMA,尽量减少I2C对其他中断的影响。
官方的驱动,总觉得牢 ...

CPAL看不是很懂...

出0入0汤圆

19
 楼主| 发表于 2012-8-24 13:16:17 | 只看该作者
seanwood 发表于 2012-8-24 09:07
另外F4里面要注意的是GPIO必须用GPIO_PinAFConfig初始化成I2C功能。不象F1开了I2C时钟就行了。 ...


STM32F1移植到STM32F4
ADC EXTI SPI FSMC ... 等等都成功过
就是I2C不行

应该不是GPIO_PinAFConfig的问题

不过还是谢谢回复

出0入0汤圆

20
发表于 2012-8-27 22:46:31 | 只看该作者
john800422 发表于 2012-8-27 22:01
已经可以了

谢谢~

很好,恭喜楼主~~

出0入0汤圆

21
发表于 2012-9-20 17:24:26 | 只看该作者
john800422 发表于 2012-8-27 22:01
已经可以了

谢谢~

你好,我直接用你的stm32f4的这两个文件,系统的RTT

其中stm32f4_system.h找不到,请问这个文件是什么啊?
把stm32f4_system.h改为stm32f4xx.h,编译通过
可是运行到这句的时候出问题:         DMA_ClearFlag(DMA1_Stream0, DMA_FLAG_FEIF0 | DMA_FLAG_DMEIF0 | DMA_FLAG_TEIF0 |
                                                                                                                DMA_FLAG_HTIF0 | DMA_FLAG_TCIF0);
错误为: Wrong parameter value detected on

            file  Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dma.c

            line  1059
仿真跟踪发现是在对DMA_Flag参数进行检修的时候出错的:assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));

请问这是什么原因呢?

对I2C不是很了解,模拟的能用,一直想用硬件的,对于硬件的那个应答机制不了解,能和我讲讲吗,谢谢

出0入0汤圆

22
 楼主| 发表于 2012-9-20 18:19:39 | 只看该作者
本帖最后由 john800422 于 2012-9-20 18:22 编辑
苦行僧 发表于 2012-9-20 17:24
你好,我直接用你的stm32f4的这两个文件,系统的RTT

其中stm32f4_system.h找不到,请问这个文件是什么啊 ...

void I2C1_Send_DMA_IRQ( void )
void I2C1_Recv_DMA_IRQ( void )
以上两个副程式是否有分别放至DMA的发送&接收中断里吗??

如以下
void DMA1_Stream0_IRQHandler( void )
{
        I2C1_Recv_DMA_IRQ();
}
void DMA1_Stream6_IRQHandler( void )
{
        I2C1_Send_DMA_IRQ();
}

stm32f4_system 的功能是引用官方的函式库

出0入0汤圆

23
发表于 2012-9-20 18:28:46 | 只看该作者
顶一下~~~

出0入0汤圆

24
发表于 2012-9-20 18:46:21 | 只看该作者
john800422 发表于 2012-9-20 18:19
void I2C1_Send_DMA_IRQ( void )
void I2C1_Recv_DMA_IRQ( void )
以上两个副程式是否有分别放至DMA的发送 ...

好的,我再试试,谢谢

出0入0汤圆

25
发表于 2012-9-20 19:06:49 | 只看该作者
额...好像发送完地址,然后查询I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED,
之后就TIme Out了,对这个应答什么的不是很了解

出0入0汤圆

26
 楼主| 发表于 2012-9-21 11:41:48 | 只看该作者
苦行僧 发表于 2012-9-20 19:06
额...好像发送完地址,然后查询I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED,
之后就TIme Out了,对这个应 ...

有设定正确I2C的IO吗

这里用的是I2C1
I2C_Config( void )是设定

还有I2C的IO要加上拉电阻

出0入0汤圆

27
发表于 2012-9-21 12:09:20 | 只看该作者
john800422 发表于 2012-9-21 11:41
有设定正确I2C的IO吗

这里用的是I2C1

设置了,哎...没逻辑分析仪,有的话可以看看,我在研究研究

出0入0汤圆

28
发表于 2012-9-24 22:43:54 | 只看该作者
本帖最后由 cctsao1008 于 2012-9-24 22:46 编辑

STM32_CPAL_Driver for stm2f4.

PS : do not forget to define  STM32F4XX



本帖子中包含更多资源

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

x

出0入0汤圆

29
发表于 2012-9-24 23:38:04 | 只看该作者
40342zz 发表于 2012-8-23 19:26
请问楼主lsm303如何手工焊  我焊hmc5883焊坏了三块板子的焊盘了

L883焊接不难,先把焊盘上锡,再把元器件反过来也上锡,对准放好,热风枪开260度,吹一下,大约3秒,搞定收工!

出0入0汤圆

30
发表于 2012-10-26 13:00:23 | 只看该作者
学习了!

出0入0汤圆

31
发表于 2012-10-27 03:24:55 | 只看该作者
好贴顶上去

出0入0汤圆

32
发表于 2012-10-27 12:03:16 | 只看该作者
期待mark

出0入0汤圆

33
发表于 2012-11-4 16:57:03 | 只看该作者
cctsao1008 发表于 2012-9-24 22:43
STM32_CPAL_Driver for stm2f4.

PS : do not forget to define  STM32F4XX

请问F4部分是自己改的,还是ST公司提供的。
我在ST网站下载的驱动包里,只有F1和F2没有F4的。

出0入0汤圆

34
发表于 2012-11-4 17:02:53 | 只看该作者
lwqhdzx 发表于 2012-11-4 16:57
请问F4部分是自己改的,还是ST公司提供的。
我在ST网站下载的驱动包里,只有F1和F2没有F4的。 ...

自己改的

出0入0汤圆

35
发表于 2013-3-1 16:37:23 | 只看该作者
这块硬骨头终于有人来啃了!楼主V5!

出0入0汤圆

36
发表于 2013-3-1 21:28:32 | 只看该作者
Thanks for sharing!

出0入0汤圆

37
发表于 2013-3-5 13:33:03 | 只看该作者
中文显示乱码怎么解决?

出0入0汤圆

38
发表于 2013-3-5 22:10:43 | 只看该作者
能再问一下基础的问题么,配置ADXL345的寄存器后,为什么还要延时1ms

出0入0汤圆

39
 楼主| 发表于 2013-3-6 02:07:17 | 只看该作者
darcyju1 发表于 2013-3-5 22:10
能再问一下基础的问题么,配置ADXL345的寄存器后,为什么还要延时1ms

註解是用繁體寫的, 改編碼看看吧

延遲是為了確保寄存器設定成功

出0入0汤圆

40
发表于 2013-3-9 14:42:51 | 只看该作者
john800422 发表于 2012-8-22 00:00
上传一下STM32F1 ADXL345的完整测试程序

做初始化和ID验证

能给我lsm303和l3g4200d的完整测试程序吗??我也刚刚开始搞这个没多久!我对lsm303的加速度和测磁场不是很了解,而且我还不知道怎么转换数据啊!求大师指点迷津!!
我邮箱913339741@qq.com,  可以发我邮箱也可以放到论坛里来!  最好加qq一起讨论吧 ! Thank you very much!

出0入0汤圆

41
发表于 2013-3-11 14:24:21 | 只看该作者
好东西,谢谢了,特别要是我早发现就好了,搞了好几个晚上才搞好。

出0入0汤圆

42
发表于 2013-3-11 17:55:03 | 只看该作者
顶一下,,太好了哦,,,

出0入0汤圆

43
发表于 2013-3-27 11:56:42 | 只看该作者
mark

出0入0汤圆

44
发表于 2013-3-27 22:11:08 | 只看该作者
mark

出0入0汤圆

45
发表于 2013-3-28 21:47:42 | 只看该作者
好东西,谢谢了,

出0入0汤圆

46
发表于 2013-3-29 15:05:44 | 只看该作者
谢谢楼主,正好需要i2c的adl345

出0入0汤圆

47
发表于 2013-4-6 16:16:18 | 只看该作者
楼主你测得的head准确么,有没有经过校正?

出0入0汤圆

48
 楼主| 发表于 2013-4-6 16:34:18 | 只看该作者
lyballack 发表于 2013-4-6 16:16
楼主你测得的head准确么,有没有经过校正?

不懂你的意思
head??

出0入0汤圆

49
发表于 2013-4-6 16:50:00 | 只看该作者
john800422 发表于 2013-4-6 16:34
不懂你的意思
head??

就是x轴正方向与正北方向的夹角,定位用的

出0入0汤圆

50
 楼主| 发表于 2013-4-6 16:54:20 | 只看该作者
參考下這兩個吧
http://www.amobbs.com/thread-5524913-1-1.html
http://www.amobbs.com/thread-5526236-1-1.html

出0入0汤圆

51
发表于 2013-4-7 22:32:10 | 只看该作者
john800422 发表于 2013-4-6 16:54
參考下這兩個吧
http://www.amobbs.com/thread-5524913-1-1.html
http://www.amobbs.com/thread-5526236-1- ...


那你的在没有校正前是不是测的head也是不准的?就那种偏差很大的?我没有校准直接测当Xb指向正北的时候居然是-45度……另外我想问,读出来的原始值是不是应该除以对应量程的灵敏度值才会得到以gauss为单位的值?就那个表格里给的这些:

本帖子中包含更多资源

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

x

出0入0汤圆

52
 楼主| 发表于 2013-4-8 00:33:51 | 只看该作者
lyballack 发表于 2013-4-7 22:32
那你的在没有校正前是不是测的head也是不准的?就那种偏差很大的?我没有校准直接测当Xb指向正北的时候居 ...

那你的在没有校正前是不是测的head也是不准的?就那种偏差很大的?
→是的,因為磁場不是水平的,會有磁傾角,還有其他干擾

读出来的原始值是不是应该除以对应量程的灵敏度值才会得到以gauss为单位的值?就那个表格里给的这些
→沒錯,依選用的靈敏度做轉換

出0入0汤圆

53
发表于 2013-4-8 10:43:03 | 只看该作者
john800422 发表于 2013-4-8 00:33
那你的在没有校正前是不是测的head也是不准的?就那种偏差很大的?
→是的,因為磁場不是水平的,會有磁 ...

那校正后的数据怎么样?我试着用说明书上给的方法,用matlab软件处理了一下,发现到了矩阵求逆那一块就计算不下去了……可能也是我的方法有误,你提供的资料我也想好好研读一下

出0入0汤圆

54
 楼主| 发表于 2013-4-8 10:53:40 | 只看该作者
lyballack 发表于 2013-4-8 10:43
那校正后的数据怎么样?我试着用说明书上给的方法,用matlab软件处理了一下,发现到了矩阵求逆那一块就计 ...

主要是需要先做偏移校正
因為假設數據永遠都大於零或永遠都小於零的話
使用atan求出來的角度就會不準
所以需要先校正到原點

另外是磁場變形的問題
理想上是圓形的(使用磁力計的X, Y軸值當成座標)
帶實際上就會受硬磁與軟磁干擾, 就不是圓形了

最近自己做的校正, 有附推導

使用橢圓擬合做電子羅盤校正
http://www.amobbs.com/thread-5527851-1-1.html

出0入0汤圆

55
发表于 2013-4-8 10:59:52 | 只看该作者
john800422 发表于 2013-4-8 10:53
主要是需要先做偏移校正
因為假設數據永遠都大於零或永遠都小於零的話
使用atan求出來的角度就會不準

十分感谢,先研读你的资料有问题再请教你

出0入0汤圆

56
发表于 2013-4-8 19:10:38 | 只看该作者
好帖,留名。

出0入0汤圆

57
发表于 2013-4-9 12:33:49 | 只看该作者
本帖最后由 lyballack 于 2013-4-9 12:50 编辑
john800422 发表于 2013-4-8 10:53
主要是需要先做偏移校正
因為假設數據永遠都大於零或永遠都小於零的話
使用atan求出來的角度就會不準


不过在校正前我还有个疑问,说明书上规定数据输出是F800-07FF,不管我选择哪个量程,我拿它测的数据三个方向中其中两个方向一般都达到比如FEA9这么大的,经过int符号强制转化后成-343,这么超过它规定的范围也对么?还是我对它的范围理解有错了?

本帖子中包含更多资源

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

x

出0入0汤圆

58
 楼主| 发表于 2013-4-9 15:38:26 | 只看该作者
lyballack 发表于 2013-4-9 12:33
不过在校正前我还有个疑问,说明书上规定数据输出是F800-07FF,不管我选择哪个量程,我拿它测的数据三个方 ...

之前沒有考慮後面的Range
只有乘上量程(Guess/LSB)
就直接處理了

出0入0汤圆

59
发表于 2013-4-9 17:03:12 | 只看该作者
john800422 发表于 2013-4-9 15:38
之前沒有考慮後面的Range
只有乘上量程(Guess/LSB)
就直接處理了

哦,那也基本上不超过正负400多了?出来的结果准确么,用校正后的数据算的航向角?

出0入0汤圆

60
 楼主| 发表于 2013-4-9 18:20:11 | 只看该作者
本帖最后由 john800422 于 2013-4-9 18:21 编辑
lyballack 发表于 2013-4-9 17:03
哦,那也基本上不超过正负400多了?出来的结果准确么,用校正后的数据算的航向角? ...


資料是16Bit的
出來就是+-15bit=+-2^15

校正後航向還蠻正確的

出0入0汤圆

61
发表于 2013-4-9 23:55:19 | 只看该作者
john800422 发表于 2013-4-9 18:20
資料是16Bit的
出來就是+-15bit=+-2^15

之前我没注意到它Y轴Z轴两个数据寄存器是反的,今天再测发现误差沒那么大, 最多十多度的样子,最小三度,说明还是需要校正的

出0入0汤圆

62
发表于 2013-4-10 15:22:48 | 只看该作者
john800422 发表于 2013-4-9 15:38
之前沒有考慮後面的Range
只有乘上量程(Guess/LSB)
就直接處理了

不过得出来的数据是xyz三维的,用椭圆拟合的方法是怎么能协调三个轴的使得原来的椭球变成一个圆球,像说明书上的那样?

出0入0汤圆

63
发表于 2013-4-10 16:51:27 | 只看该作者
john800422 发表于 2013-4-8 10:53
主要是需要先做偏移校正
因為假設數據永遠都大於零或永遠都小於零的話
使用atan求出來的角度就會不準

我感觉官方给的校正方法其实蛮繁琐的……现在才看懂,收集三个轴转360度XYZ的数据再放到那个矩阵里,话说matlab已经是处理矩阵这方面的好手了只是不知道那么大个矩阵能不能处理得过来……

出0入0汤圆

64
 楼主| 发表于 2013-4-10 18:06:32 | 只看该作者
lyballack 发表于 2013-4-10 15:22
不过得出来的数据是xyz三维的,用椭圆拟合的方法是怎么能协调三个轴的使得原来的椭球变成一个圆球,像说 ...

橢圓擬合目前只有做2維的
3維會複雜許多

出0入0汤圆

65
发表于 2013-4-12 21:35:57 | 只看该作者
john800422 发表于 2013-4-10 18:06
橢圓擬合目前只有做2維的
3維會複雜許多

你的误差在校正后一般都在几度内?

出0入0汤圆

66
发表于 2013-4-15 22:50:00 | 只看该作者
john800422 发表于 2013-4-10 18:06
橢圓擬合目前只有做2維的
3維會複雜許多

说明书上说一旦在加速度计上存在加速度的话对磁场的倾角补偿影响就比较大,因为俯仰角跟横滚角测不准了,为了解算准确的俯仰角跟横滚角是要陀螺仪跟加速度计互相补偿么?我不大明白陀螺仪测出的角加速度跟加速度计测出的数据是怎么互补的,望指点一二

出0入0汤圆

67
 楼主| 发表于 2013-4-16 02:12:45 | 只看该作者
lyballack 发表于 2013-4-12 21:35
你的误差在校正后一般都在几度内?

之前測好像是3度內, 不太確定

出0入0汤圆

68
 楼主| 发表于 2013-4-16 02:15:48 | 只看该作者
lyballack 发表于 2013-4-15 22:50
说明书上说一旦在加速度计上存在加速度的话对磁场的倾角补偿影响就比较大,因为俯仰角跟横滚角测不准了, ...

可以參考下這篇
http://www.amobbs.com/thread-5492189-1-1.html

或是搜尋下互補濾波

出0入0汤圆

69
发表于 2013-4-16 22:19:13 | 只看该作者
楼主啊,请教一下你的飞控开发成功了吗?

我也是用的stm32f103rct6+l3g4200d+adxl345,但IMU和PID算法始终没有找到过合适的,试过三种开源飞控的算法了,但一直没飞起来,到底是原因想了好久也没想明白。
电调我已经升级到支持200hz PWM信号了,震动的问题我请教了其他的朋友,也和他们的差不多,算法上想起来好像也没有什么问题,但就是工作不太正常,如果可能的话,可否介绍介绍你的算法或者分享一下有关IMU和PID的相关程序?

出0入0汤圆

70
发表于 2013-4-17 21:44:39 | 只看该作者
谢谢楼主,资料已下载了,非常感谢楼主的无私!

向楼主学习,特此声明,如飞控成功,在此楼公布源码。

出0入0汤圆

71
发表于 2013-4-17 23:37:57 | 只看该作者
好东西,学习中。。

出0入0汤圆

72
 楼主| 发表于 2013-4-18 10:08:40 | 只看该作者
oldbreadman 发表于 2013-4-17 21:44
谢谢楼主,资料已下载了,非常感谢楼主的无私!

向楼主学习,特此声明,如飞控成功,在此楼公布源码。 ...

學到東西最重要~
加油吧

出0入0汤圆

73
发表于 2013-4-18 18:40:51 | 只看该作者
MARKMARKMARK

出0入0汤圆

74
发表于 2013-4-19 21:31:13 | 只看该作者
john800422 发表于 2013-4-16 02:15
可以參考下這篇
http://www.amobbs.com/thread-5492189-1-1.html

想再请教你几个问题:1.陀螺仪得到的原始数据除以对应量程的LSB就得到单位时间内三轴的旋转角度了?2.静止时候的零漂是怎么处理的?我的一般会有小于正负1度的输出,即使陀螺仪处于静止状态时 3.我找到一篇算法:http://www.geek-workshop.com/thread-1695-1-1.html 不知道这个算是什么滤波,加权指数是固定的,根据自己的情况来定,最后是三个方向上的加速度矢量加上陀螺仪的校正矢量再除以加权指数得到姿态变换后的三个方向的加速度矢量,利用计算出的加速度矢量就能消除由于外部加速度导致的pitch跟roll计算不准以至于航向角也计算不准的问题?貌似第三个问题还得烦请你看这个网页里的东西,确实蛮麻烦……

出0入0汤圆

75
 楼主| 发表于 2013-4-19 23:30:54 | 只看该作者
本帖最后由 john800422 于 2013-4-19 23:33 编辑
lyballack 发表于 2013-4-19 21:31
想再请教你几个问题:1.陀螺仪得到的原始数据除以对应量程的LSB就得到单位时间内三轴的旋转角度了?2.静 ...


1.陀螺仪得到的原始数据除以对应量程的LSB就得到单位时间内三轴的旋转角度了?
___ 角速度 = deg/s = GyroData*(dps/LSB) = GyroData/(LSB/dps)

2.静止时候的零漂是怎么处理的?我的一般会有小于正负1度的输出,即使陀螺仪处于静止状态时
___ A. 靜止時, 陀螺儀輸出會一直在0附近變動是正常的, 這是每個陀螺儀都會有的問題
___ B. 若是一直在XX數值附近變動, 那就將陀螺儀的輸出減掉XX數值, 校正至0, 可以使用平均數獲得XX數值

3.我找到一篇算法:http://www.geek-workshop.com/thread-1695-1-1.html 不知道这个算是什么滤波,
加权指数是固定的,根据自己的情况来定,最后是三个方向上的加速度矢量加上陀螺仪的校正矢量再除以加权指数得到姿态变换后的三个方向的加速度矢量,
___ 這應該只是卡爾曼濾波的簡化版吧
___ 文中有提到
___ "此算法和卡尔曼滤波最主要的差别是它的权重是相对固定的,而卡尔曼滤波中的权重会随着加速度计读取的噪声而改变。
___ 卡尔曼滤波注重给你一个“最好”的理论结果,而此算法给你的是实际项目中“够用”的结果。"

利用计算出的加速度矢量就能消除由于外部加速度导致的pitch跟roll计算不准以至于航向角也计算不准的问题?
___ 不知道想表達什麼?

出0入0汤圆

76
发表于 2013-4-22 19:16:02 | 只看该作者
john800422 发表于 2013-4-19 23:30
1.陀螺仪得到的原始数据除以对应量程的LSB就得到单位时间内三轴的旋转角度了?
___ 角速度 = deg/s = Gyr ...

第3个问题就是说静止的时候能计算出比较精确的俯仰角与翻滚角,如果加速度计本身运动起来了俯仰角与翻滚角就测不准了,进而影响到航向角的计算,是用上述方式可以减小因外部附加的加速度造成俯仰角和翻滚角测不准的影响么?

出0入0汤圆

77
发表于 2013-4-23 11:41:06 | 只看该作者
john800422 发表于 2013-3-6 02:07
註解是用繁體寫的, 改編碼看看吧

延遲是為了確保寄存器設定成功

u32 I2C_TimeOut( void )
{
  while(1) {
  }
}

这是个死循环啊

出0入0汤圆

78
发表于 2013-4-23 15:48:09 | 只看该作者
john800422 发表于 2013-4-19 23:30
1.陀螺仪得到的原始数据除以对应量程的LSB就得到单位时间内三轴的旋转角度了?
___ 角速度 = deg/s = Gyr ...


在没有经过椭圆拟合校正之前你的航向角在经过倾角补偿时候测的准么?我发现我的在水平情况下用水平计算公式计算出的航向角还算准确,但是在倾斜的情况下用了倾角补偿的公式反而就不准了,十分不解……

出0入0汤圆

79
 楼主| 发表于 2013-4-23 16:38:22 | 只看该作者
lyballack 发表于 2013-4-22 19:16
第3个问题就是说静止的时候能计算出比较精确的俯仰角与翻滚角,如果加速度计本身运动起来了俯仰角与翻滚 ...

文中有提到

"你可能会问自己一个问题,如果加速度计已经告诉我们Axr,Ayr,Azr的倾角,为什么还要费事去得到陀螺仪的数据?
答案很简单:加速度计的数据不是100%准确的。有几个原因,还记加速度计测量的是惯性力,这个力可以由重力引起(理想情况只受重力影响),
当也可能由设备的加速度(运动)引起。因此,就算加速度计处于一个相对比较平稳的状态,它对一般的震动和机械噪声很敏感。
这就是为什么大部分的IMU系统都需要陀螺仪来使加速度计的输出更平滑。"

所以我認為是的

出0入0汤圆

80
 楼主| 发表于 2013-4-23 16:39:24 | 只看该作者
nirvanasyl 发表于 2013-4-23 11:41
u32 I2C_TimeOut( void )
{
  while(1) {

這跟ADXL345延遲有甚麼關係?

出0入0汤圆

81
 楼主| 发表于 2013-4-23 16:41:53 | 只看该作者
lyballack 发表于 2013-4-23 15:48
在没有经过椭圆拟合校正之前你的航向角在经过倾角补偿时候测的准么?我发现我的在水平情况下用水平计算公 ...


因為有電池馬達等等的影響
直接讀出來的磁場幾乎都是正值

沒經過橢圓擬合求出來的誤差很大
所以就沒試後面了

出0入0汤圆

82
发表于 2013-4-23 17:38:59 | 只看该作者
john800422 发表于 2013-4-23 16:39
這跟ADXL345延遲有甚麼關係?

和ADXL345没关系~~我把I2C1的驱动改成I2C3了~~但是每次都掉进这个死循环~~大神能留个联系方式么?

出0入0汤圆

83
 楼主| 发表于 2013-4-23 22:12:37 | 只看该作者
nirvanasyl 发表于 2013-4-23 17:38
和ADXL345没关系~~我把I2C1的驱动改成I2C3了~~但是每次都掉进这个死循环~~大神能留个联系方式么? ...


先確定硬件是否OK吧
需要接上拉電阻

理論上沒問題的話是不會進的

出0入0汤圆

84
发表于 2013-5-3 21:45:31 | 只看该作者
john800422 发表于 2012-8-22 00:00
上传一下STM32F1 ADXL345的完整测试程序

做初始化和ID验证

楼主你好!

我使用楼主的工程用STM32来读取ADXL345的ID,你的I2C地址是0XA6,我的是0X3A 。我需要在什么地方做一些修改?

谢谢!

出0入0汤圆

85
 楼主| 发表于 2013-5-3 22:41:01 | 只看该作者
lxl_lw 发表于 2013-5-3 21:45
楼主你好!

我使用楼主的工程用STM32来读取ADXL345的ID,你的I2C地址是0XA6,我的是0X3A 。我 ...

datasheet上都有說明

出0入0汤圆

86
发表于 2013-5-7 10:21:28 | 只看该作者
收下 备用

出0入0汤圆

87
发表于 2013-5-19 20:10:17 | 只看该作者
现在我的四轴摇摇晃晃已经可以飞起来了,虽然飞得不怎么好,但毕竟飞起来了,向楼主学习,公布源码。
硬件是STM32F103RCT6+L3G4200D+ADXL345,基于硬件I2C读写。
由于本人偶尔会需要在CSDN上下载,但长期没账号,所以放在CSDN上面了,请有CSDN账号的朋友直接下载,也算支持我一下。
http://download.csdn.net/detail/u010510855/5315936
对于实在没有账号的朋友,本着学习楼主的无私奉献精神,请短信我邮箱,我有空的时候发送到邮箱里去。

再次声明,是向楼主学习!

出0入0汤圆

88
发表于 2013-5-22 11:26:18 | 只看该作者
LZ大大大大大好人

出0入0汤圆

89
发表于 2013-5-22 18:12:49 | 只看该作者
wuguoyan 发表于 2012-8-23 19:34
STM32F4和F1的I2C有点不一样的,ST对I2C改进过,可以参照库里面自带的例程~

改进之后,还没有F1的那个BUG啊?

出0入0汤圆

90
发表于 2013-5-23 11:51:23 | 只看该作者
L3G4200DTR 后继升级板是L3GD20TR,性能更强大。楼主考虑设计下,有需要可以跟我联系:李生:13724308556. QQ :1836587319.

出0入0汤圆

91
发表于 2013-5-27 00:53:12 | 只看该作者
为初始话蛋疼好久了,谢谢楼主

出0入0汤圆

92
发表于 2013-5-27 11:06:50 | 只看该作者
mark                           

出0入0汤圆

93
发表于 2013-5-27 11:09:55 | 只看该作者
oldbreadman 发表于 2013-5-19 20:10
现在我的四轴摇摇晃晃已经可以飞起来了,虽然飞得不怎么好,但毕竟飞起来了,向楼主学习,公布源码。
硬件 ...

直接传上来比较好!

出0入0汤圆

94
发表于 2013-5-27 11:32:05 | 只看该作者
谢谢分享,正在学习。不知道能不能提供完整程序。如果可以请发送到我邮箱,324155286@qq.com,谢谢

出0入0汤圆

95
发表于 2013-5-30 17:29:20 | 只看该作者
真好,下载了

出0入0汤圆

96
发表于 2013-5-30 19:13:46 | 只看该作者
不错,赞一个。

出0入0汤圆

97
发表于 2013-7-11 15:22:18 | 只看该作者
john800422 发表于 2013-4-23 16:38
文中有提到

"你可能会问自己一个问题,如果加速度计已经告诉我们Axr,Ayr,Azr的倾角,为什么还要费事去 ...

请问有没有出现过倾角补偿后不准的情况?LSM303我经过椭球校正后发现倾角补偿得到的数据不准确,但水平的时候测的很准,不明白是怎么一回事……

出0入0汤圆

98
发表于 2013-7-11 15:50:58 | 只看该作者
标记一下,好东西要收藏的。

出0入0汤圆

99
发表于 2013-7-31 13:47:17 | 只看该作者
记下,以后用!谢谢楼主!

出0入0汤圆

100
发表于 2013-8-14 17:06:48 | 只看该作者
第一次接触这个东西,要慢慢来
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 09:25

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

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