玩转X-CTR100 l STM32F4 l HMC5983/HMC5883L三轴磁力计传感器

我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】

本文介绍X-CTR100控制器 扩展HMC5983三轴磁力计传感器,模块型号为GY-282,淘宝上可以买到。
三轴磁力计可测量设备周围磁场强度,结合地球磁场可以计算获取水平指向,常用于电子罗盘、数字指南针。
原理
电子罗盘,也叫数字指南针,是利用地磁场来定北向的一种方法。电子罗盘作为一种重要的导航定向工具,正越来越多的应用于导航和定向系统。当前大多数的导航系统都使用电子罗盘来指示方向。电子罗盘通过对地球磁场和重力场等信息的计算、精确输出航向(Azimuth)、俯仰(pitch)、横滚(Roll)等参数。
地磁传感器在一些运动系统中,有时需要进行精确的方向控制,虽然测量方向的方法 有多种,但最便利、通用性最强的还是测量地球的磁场。利用地磁作为参考, 通过传感器测量出与地磁线之间的夹角就可以得到方位角的数据,从而实现精确的方向控制。这里就来讨论一下地磁传感器(又称为数字罗盘或电子罗盘) 及其使用方法。常用的地磁传感器主要有FreeScale(飞思卡尔)的MAG 系列和 Honeywell(霍尼韦尔)的HMC系列。
HMC5883 是一种表面贴装的高集成度、带有IIC 数字接口的弱磁传感器芯 片。它内含有最先进的高分辨率HMC118X 系列磁阻传感器,并附带霍尼韦尔 专利的集成电路(包括有放大器、自动消磁驱动器和偏差校准等),具有12 位 模数转换器能使罗盘精度控制在1°~2°之间。霍尼韦尔的磁传感器在低磁场 传感器行业中是灵敏度最高和可靠性最好的传感器。其测量范围能从毫高斯到 8 高斯(gauss)。HMC5883 的工作电压在2.16V~3.6V 之间,典型为3.3V。虽然工作电压为 低电压方式,但数据端口的电压可通过VDDIO 口来指定。
HMC5983是HMC5883L的升级版磁场传感器,相比于HMC5883,具有如下优势。
1. 可支持IIC以及SPI协议传输;
2. 自动进行温度补偿;
3. 数据更新速率可达220Hz
霍尼韦尔三轴电子罗盘HMC5983是一个温度补偿的三轴集成电路罗盘,一种表面贴装的高集成模块,用于测量磁场,被广泛应用在磁场检测,手机、平板、上网本、消费电子、自动导航和个人导航设备等领域。
Honeywell 公司的先进的工艺,内置高分辨的HMC118X 系列的磁阻传感器加上ASIC,还有放大器,自动消磁带、偏置带和一个12bitADC,这款是5983 航向角的精确度达到1-2 度。I2C 个SPI 串行通信总线,尺寸为3.0*3.0*0.9 表面16 引脚贴片封装。HMC5983 利用霍尼韦尔的AMR 技术,该技术领先于其他的磁传感器技术,这种各向异性传感器具有在轴向高灵敏度和线性高精度的特点,传感器具有对正交轴的低灵敏度的固相结构能用于测量地球磁场的方向和大小,其测量范围从毫高斯到8 高斯。霍尼韦尔的磁传感器在地磁场传感器行业中是灵敏度最高和可靠性最好的传感器。
温度补偿,测量磁感应数据的温度补偿都已经在出厂的时候设置过了,通过芯片内部的温度传感器测量温度来补充由于温度变化产生的传感器灵敏度的变化,这依据传感器典型的敏感温度系数。补偿数据将会被自动放置到数据输出寄存器中,如果想要补偿功能工作,那么必须设置使温度传感器工作(设置CRA7=1)。
例程
初始化HMC5983,采集三轴磁力值并输出显示。
硬件说明
硬件资源:
- 串口UART1
- LF接口(IIC2接口)
- 扩展模块HMC5883L或HMC5983L三轴地磁传感器(需自备)
硬件连接:
模块连接到LF IIC2接口,连接如下图所示。

软件生态
X-SOFT软件生态,X-API文件如下。
ax_hmc5983.c——X-CTR100 扩展HMC5983L磁力传感器源文件
ax_hmc5983.h——X-CTR100 扩展HMC5983L磁力传感器头文件
操作函数如下:
|
void AX_HMC5983_Init(void); //HMC5983传感器初始化 void AX_HMC5983_GetRawMagData(int16_t *pbuf); //HMC5983获取磁场强度值 |
软件说明
主程序代码如下。
|
int main(void) { int16_t magdata[3];
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 HMC5983三轴磁力传感器例程***\r\n\r\n");
//模块初始化及配置 AX_HMC5983_Init();
while (1) { AX_HMC5983_GetRawMagData(magdata);
printf("磁力寄存器数据 X:%d Y:%d Z:%d \r\n", magdata[0], magdata[1], magdata[2]);
AX_Delayms(500); AX_LEDG_Toggle(); } } |
实现效果
运行效果如下图所示。

玩转X-CTR100 l STM32F4 l HMC5983/HMC5883L三轴磁力计传感器的更多相关文章
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...
- 玩转X-CTR100 l STM32F4 l 舵机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器控制步进电机 ...
- 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器基础板载资源 ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...
- 玩转X-CTR100 l STM32F4 l DSP指令集性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 DSP库的 ...
- 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器如何开启ST ...
随机推荐
- C#窗体之间事件传值
//第二个窗体 public delegate void DAddress(string address); public event DAddress ESignAddress; pr ...
- Unity3D学习笔记(十一):布料和协程
延迟函数:动态资源加载:T:Resources.Load<T>(string path);Assets - Resources,Resources是一个资源管理的工具类,预制体放在Reso ...
- FAST UA API
参考: FAST_UA 编程手册 FAST DATA STRUCTURE fast_packet fast_metadata fast_rule fast_flow FAST UA API 1.fas ...
- LA 4080 战争和物流(最短路树)
https://vjudge.net/problem/UVALive-4080 题意:给出一个n个结点m条边的无向图,每条边上有一个正权.令c等于每对结点的最短路长度之和.不连通的两点的最短路长度视为 ...
- python 生成元组
#create a tuple l = [(,), (,), (,)] print(list(zip(*l)))
- Ubuntu 14.04 定时任务
如何在Ubuntu上启动一个定时任务,使得可以定时删除机器上的日志 首先, #查看cron状态 service cron status 如果提示没有安装 #安装cron服务 apt-get ins ...
- 理解Fragment的生命周期
与活动类似,Fragment也有自己的生命周期.理解Fragment的生命周期有助于在Fragment销毁时能恰当地保存其实例,然后在重新创建时能够将其恢复至之前的状态. 下面的“试一试”将研究Fra ...
- js如何创建JSON对象
js如何创建JSON对象 一.总结 一句话总结:直接创建js数组和js对象即可,然后JSON.stringify就可以获取json字符串,js中的一切都是对象,而且js中的对象都是json对象 js ...
- ubuntu10.04 交叉编译 aria2 总结
1) google之后,找到 这个 https://github.com/z24/pitv/tree/master/cross 的脚本, 觉得非常好. 于是准备用来进行编译 2) 安装交叉编译器 su ...
- 关于 [TNS-12516 TNS:listener could not find instance with matching protocol stack ]
Title: Intermittent TNS-12516 or TNS-12519 Errors Connecting Via Net Symptom(s) ~~~~~~~~~~ Client co ...