小七

小七

1个粉丝

5

问答

0

专栏

0

资料

小七  发布于  2024-08-14 10:32:16
采纳率 0%
5个问答
323

QMC6308读取数据异常

我这里使用的QMC6308地磁的芯片,读取xyz的分量数据,然后计算方位角的内容。
数据手册中介绍的是,每个轴16位数据,范围是-32786到32767,最高位是符号位,以二进制补码存放。
reg_data.x_data = (data[1] << 8) | data[0];这是我处理两个寄存器,使其合并为x轴数据的部分。y和z轴同理。
该模块,我设置的是连续模式,正负2Gauss,10HZ等等这些内容。(具体是0x0b寄存器设置为0x30,0x0a寄存器设置为0xc3)
我只是用平行于地面的两个轴,x和y轴数据计算方位角,具体部分如下
float calculate_angle(float x, float y) {
float angle = atan2f(y, x) 180.0f / M_PI;
if (angle < 0.0f) {
angle += 360.0f;
}
return angle;
}
但是现在的情况是,得到的方位角的角度,确实是360°变动,但是xy轴数据有些奇怪,并且实际上模块转动90°,但是角度变化有时候不足90,有时候远超90,甚至达到了170°。
接下来是说数据的情况了,x轴数据,读取到reg_data.x_data这里后,直接printf打印(用%d,直接打印出原码,并用于计算),但是x轴的值,会在200到-460之间变化,到200后,就减小,到-460就增大,无论左右,就这样循环往复。
y轴数据情况相同,只不过是-560到150。
计算角度的数据是经过处理的,也就是
float convert_to_gauss(int16_t raw_data) {
// 将二进制补码转换为浮点数
float gauss = (float)raw_data /32767 2000.0;
return gauss;
} 这样,将数据转为gauss的单位在进行计算。
下面是角度变化,
以向东为基准,是150°,
逆时针旋转90°,变为210°,仅增加60°,此时指向北
在逆时针旋转90°,变为20°,增加170°,此时指向西,(超过360°后,从0开始)
在逆时针旋转90°,变为100°,增加80°,此时指向南
再逆时针旋转90°。变为150°,增加50°,此时指向动(到初始位置)
以上大致就说全部的内容了,实在是不知道为什么xy轴数据会那样变化,也不知道这个角度变化为什么这么没有规律,有使用过这个同型号的芯片,或者类似的吗,这种情况是什么原因导致的?有什么解决办法吗?

我来回答
回答3个
时间排序
认可量排序

小七

1个粉丝

5

问答

0

专栏

0

资料

小七 2024-08-14 11:35:13
认可0

我认为有可能是外界的影响,但是我不知道怎么确定,所以刚刚我使用了螺丝刀,绕着模块转动,然后方位角的角度就会受这个影响,然后疯狂转动,甚至跟模块自己转动差不多是一样的效果了

黄浩

1个粉丝

3

问答

0

专栏

0

资料

黄浩 2024-08-19 15:47:30
认可0

我们也用到过这个芯片,效果也是很差

小七
小七   回复   黄浩  2024-08-26 10:02:09
0

这个我找经销商要了技术支持。如果自己做,可以用最小二乘法来校准(但是我不会写),我自己的校准方式是,获得平行于地面的两个轴的最大和最小值(这俩轴,就是按照自己基准来选的,不知道选什么,直接三个都找最大最小值,后面看用哪两个轴计算就行了),然后最大最小值相加/2,得到一个值,暂时就叫偏移量吧。然后后续获得的xyz的地磁强度的数据,分别减去xyz的偏移量,用这个新得到的值,进行计算方位角,但是这个只能临时用,有非常大的弊端,可以说,只能用着玩的,但是确实有校准功效。然后我没有用这个,也不会写最小二乘法的校准代码,就找了经销商要技术支持,他们给的库和函数接口,我直接调用的,没办法,萌新一个,实在是写不出来了,只能找他们要技术支持了。如果只能自己写的情况下,建议多查查最小二乘法校准,用加速度和地磁数据拟合,进行校准。

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区