QMC5883L磁力计介绍(硬件+软件)(附STM32程序~~~)
QMC5883L磁力计介绍
话不多说,先上代码链接
GitHub - Tuya-Community/tuya-iotos-embeded-mcu-demo-wifi-ble-electronic-compass: electronic compass of mcu sdk
QMC5883L是一款国产磁力计,与HMC5993 pin to pin 兼容,软件上只要少许改动,便可达到相同效果。鉴于网络上qmc5883l资料较少,今天小编就教大家如何使用这款传感器。
硬件介绍
首先是硬件,qmc5883硬件引脚如下
1 SCL :Serial Clock – I2C Master/Slave Clock
2 VDD :Power Supply (2.16V to 3.6V)
3 NC: Not to be Connected
4 S1 :Tie to VDDIO
5 NC: Not to be Connected
6 NC: Not to be Connected
7 NC :Not to be Connected
8 SETP: Set/Reset Strap Positive – S/R Capacitor (C2) Connection
9 GND :Supply Ground
10 C1: Reservoir Capacitor (C1) Connection
11 GND: Supply Ground
12 SETC :S/R Capacitor (C2) Connection – Driver Side
13 VDDIO: IO Power Supply (1.71V to VDD)
14 NC: Not to be Connected
15 DRDY :Data Ready, Interrupt Pin. Default low. Data ready high until data
register is read.
16 SDA: Serial Data – I2C Master/Slave Data
根据手册说明,电路可以如下设计:
这边要提以下几点:
首先是供电电压,qmc5883l的供电范围是2.16~3.6V,大家千万不要超出这个范围,否则会影响正常工作,甚至永久损坏。
还有一个是设备地址,qmc5883默认的7-bit IIC地址为0X0D:0001101
qmc5883l有一个S1引脚,
如果我们将S1接VDD,那么写地址为0X1A,读地址为0X1B(通常接VDD);
如果我们将S1接GND,那么写地址为0X18,读地址为0X19;
初始化
驱动程序方面,初始化函数可以如下
IIC_Write_Byte(QMC5883L_ADDRESS,0x0B, 0x01);
//IIC_Write_Byte(QMC5883L_ADDRESS,0x20, 0x40);
//IIC_Write_Byte(QMC5883L_ADDRESS,0x21, 0x01);
Config = OVER_SAMPLE_RATIO_512
|FULL_SCALE_2G
|OUTPUT_DATA_RATE_10HZ
|MODE_CONTROL_CONTINUOUS;
/OSR=512,RNG=+/-2G,ODR=200Hz,MODE= continuous***/
IIC_Write_Byte(QMC5883L_ADDRESS,0x09, Config);
接下来给大家讲解每个寄存器的意思
其中0x0B寄存器写01,这个设置周期,01是手册建议的写入值;
后面0x20和0x21这两个寄存器参数的写入,基本来自于网络上别的文档,但是正式的数据手册上面,并没有这两个寄存器的信息,小编试了一下,没有这两句,传感器也可以正常工作,所以大家还是以正式数据手册为主吧。
0x09寄存器,这个是重点。
主要用于设置工作模式,输出频率,量程范围和采样速率,大家可以根据自己的需求,看表格设置。
小编是设置成512采样速率,2G范围,10HZ输出,连续采样模式。其中低输出速率,可以提高一些精度。
数据读取
接下来是数据读取,数据寄存器有6个
程序如下,注意第一个数据是低八位,后面的是高八位。
IIC_ReadMulByte(QMC5883L_ADDRESS,0x00,Mag,6);
Mag_data.x= (int16_t)(Mag[1] <<8 | Mag[0]);// First byte is LSB, second byte is MSB
Mag_data.y= (int16_t)(Mag[3] << 8 | Mag[2]);
Mag_data.z= (int16_t)(Mag[5] << 8 | Mag[4]);
当然,如果出于产品化考虑,可以在获取数据前,先判断一下传感器状态。
IIC_ReadMulByte(QMC5883L_ADDRESS,0x06,&temp,1);
当传感器数据已测量完毕并准备好DRDY位被置“1”,数据寄存器一旦被读取,DRDY位将被置“0”。
当有任意一个轴的测量值超过范围,OVL将被置“1”,当下一次测量不超测量范围时,OVL将会被置“0”。
当处于连续模式下测量数据被跳过时DOR被置“1”,而当数据寄存器被读写后置“0”。
角度计算
获取地磁原始数据后,就可以通过三角函数,计算出方位角度。
data->x=atan2((double)Mag_data.y,(double)Mag_data.x)*57.3+180;
完成例程,可以通过下面链接查看
本文例程
QMC5883L磁力计介绍(硬件+软件)(附STM32程序~~~)相关推荐
- 墨水屏(电子纸)的介绍与使用(附STM32程序~~~)
电子墨水屏又被称为电子纸显示技术.电子纸显示技术(简称EPD),由美国麻省理工大学教授约瑟夫.雅各布森及其研发团队,经历30余年研发成功. 墨水屏的原理很简单,电子墨水屏是由许多电子墨水组成,电子墨水 ...
- 字库芯片介绍与使用(附STM32程序~~~)
不知道大家是否了解字库芯片(网上这方面的资料好像挺少的),今天给大家简单介绍一下字库芯片. 先举个例子,如果我们想在点阵屏或液晶屏上面显示一个88的正方形,我们该怎么做. 很简单,假设屏上面" ...
- REW软件介绍 硬件软件需求 room eq wizard 5.20.13音频测试测量软件
1.1软件介绍 Room eq wizard软件是什么?它能做什么? Rew软件是John Mulcahy制作的一个免费音频测量和eq计算软件,基于全双工声卡,可以测量:频率响应曲线(支持TST /T ...
- 史上最详细的自动驾驶汽车技术介绍【硬件+软件】
2021中国汽车软件质量峰会".将于2021年3月18-19日在上海召开,以"主题演讲+互动解疑+圆桌讨论"的形式,聚焦汽车软件质量开发与管理发展的需求点和痛点分析,致力 ...
- MAX31856多类型热电偶温度检测方案芯片详解,附可实现的STM32程序代码
背景: 热电偶的测温是工业现场常用的测温手段,但是欧洲系列的工控领域中使用的大部分都是J型热电偶,而日本以及台湾等地大部分使用的是K型热电偶.因为日本和台湾的工控产品较早地进入国内,因此国内大部分设备 ...
- 软件实现串口程序出售,9600收发毫无压力。 采用io管脚模拟,适合串口资源欠缺的芯片使用。 stm32,tms320f28xx,PIC等
软件实现串口程序出售,9600收发毫无压力. 采用io管脚模拟,适合串口资源欠缺的芯片使用. stm32,tms320f28xx,PIC等 :2130654118476267风中的蜗牛
- 一、STM32程序下载软件_FlyMCU
1.软件简介 (1)FlyMCU是一款STM32下载程序的软件. (2)FlyMCU采用ISP下载方式. (3)ISP:在线系统编程. (4)FlyMCU支持STM32F1.STM32F2.STM32 ...
- 使用JLink烧录STM32程序详细介绍
1步:在电脑->管理->设备管理器,查看JLink是否被电脑识别,没有则需要安装驱动,卖家那里会有. 2步,打开keil软件使用任意程序,点击魔术棒 之后保存并应用,至此设置成功.点击 ...
- 统计建模与R软件-附R原程序
薛毅,陈立萍<统计建模与R软件>,生物统计入门的好教材 统计建模与R软件-R原程序 转载于:https://www.cnblogs.com/xiexiaokui/archive/2008/ ...
最新文章
- mysql免安装版鞋子_MySQL创建用户及授权
- 绕过网关访问图片上传并解决跨域问题
- 算法设计与分析——回溯法——批处理作业调度
- Python常用小技巧(五)——批量读取json文件
- [转] Mou 一个Markdown工具 语法规则文档(最后)
- 数据结构之 二叉树---求二叉树后序遍历和层次遍历(先建树,再遍历)
- 《构建之法》第十一、十二章学习总结
- 信号的捕捉与sigaction函数
- 光模块SFP基础接口标准入门
- CleanMyMac X如何维护脚本 优化mac电脑系统
- 【C】【吐血整理】你们要的C语言实例大全-综合应用篇
- 计算机位置隐私保护的书,清华大学出版社-图书详情-《隐私保护数据发布:模型与算法》...
- Linux挂盘出现的问题
- 创建Python Pyramid 单文件 Web 应用程序
- Android Adapter适配器
- Python 两种POST请求的方式
- [Vim 编译出错]syntax error: unexpected end of file
- 超好玩的城市天际线中文版(支持苹果10.15.6系统)
- 【iOS紫色警告】GPUImage启动摄像头耗时
- Linux 实用命令汇总