首页 » 科学 » QMC5883L磁力计介绍_存放器_磁力计

QMC5883L磁力计介绍_存放器_磁力计

萌界大人物 2024-12-28 23:40:12 0

扫一扫用手机浏览

文章目录 [+]

https://github.com/Tuya-Community/tuya-iotos-embeded-mcu-demo-wifi-ble-electronic-compass

QMC5883L是一款国产磁力计,与HMC5993 pin to pin 兼容,软件上只要少许改动,便可达到相同效果。
鉴于网络上qmc5883l资料较少,本日

1、硬件先容

QMC5883L磁力计介绍_存放器_磁力计 QMC5883L磁力计介绍_存放器_磁力计 科学

首先是硬件,qmc5883硬件引脚如下

QMC5883L磁力计介绍_存放器_磁力计 QMC5883L磁力计介绍_存放器_磁力计 科学
(图片来自网络侵删)

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;

2、初始化

驱动程序方面,初始化函数可以如下

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寄存器,这个是重点。

紧张用于设置事情模式,输出频率,量程范围和采样速率,大家可以根据自己的需求,看表格设置。

3、数据读取

接下来是数据读取,数据寄存器有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”。

4、角度打算

获取地磁原始数据后,就可以通过三角函数,打算出方位角度。

data->x=atan2((double)Mag_data.y,(double)Mag_data.x)57.3+180;

关于QMC5883L磁力计的根本运用先先容到这里,后续还会有关于QMC5883L磁力计在智能硬件上的运用。

三明治开拓,玩转物联网智能产品!
点击下方”理解更多“得到更多行业知识。
期望和有同样兴趣的同学有更多的磋商和互换。

相关文章

跨越语言障碍,字幕翻译技术助力全球交流

随着全球化的不断发展,人们对于跨文化交流的需求日益增长。语言差异成为了阻碍交流的一大难题。幸运的是,字幕翻译技术应运而生,为全球交...

科学 2025-01-01 阅读0 评论0

软件语言排行榜介绍,编程世界的风云变幻

在数字化时代,软件语言作为编程世界的基石,其重要性不言而喻。随着互联网的快速发展,各类编程语言层出不穷,竞争激烈。本文将根据权威机...

科学 2025-01-01 阅读0 评论0

软考高级语言,技术变革下的编程艺术

随着科技的飞速发展,编程已成为现代社会不可或缺的核心技能。在我国,软件资格考试(软考)作为衡量程序员专业能力的重要标准,备受关注。...

科学 2025-01-01 阅读0 评论0