0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HMC5883L磁力傳感器使用指南

CHANBAEK ? 作者: Jason ? 2023-04-17 18:00 ? 次閱讀

1、前言

霍尼韋爾 HMC5883L 是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤和磁場(chǎng)檢測(cè)領(lǐng)域(指南針、GPS)。

HMC5883L 包括最先進(jìn)的高分辨率 HMC118X 系列磁阻傳感器,并附帶霍尼韋爾專利的集成電路包括放大器、自動(dòng)消磁驅(qū)動(dòng)器、偏差校準(zhǔn)、能使羅盤精度控制在 1°~2°的 12 位模數(shù)轉(zhuǎn)換器.

支持 I2C,帶有 16 引腳,尺寸為 3.0 X 3.0 X 0.9mm。

HMC5883L 的所應(yīng)用領(lǐng)域有手機(jī)、筆記本電腦、消費(fèi)類電子、汽車導(dǎo)航系統(tǒng)和個(gè)人導(dǎo)航系統(tǒng)。

HMC5883L 采用霍尼韋爾各向異性磁阻(AMR)技術(shù),該技術(shù)的優(yōu)點(diǎn)是其他磁傳感器技術(shù)所無法企及。 這些各向異性傳感器具有在軸向高靈敏度和線性高精度的特點(diǎn)。 傳感器帶有的對(duì)于正交軸低敏感行的固相結(jié)構(gòu)能用于測(cè)量地球磁場(chǎng)的方向和大小,其測(cè)量范圍從毫高斯到 8 高斯(gauss)。

2、傳感器特性

  1. 三軸磁阻傳感器和 ASIC 都被封裝在 3.0 × 3.0 × 0.9mm LCC 表面裝配中
  2. 12-bit ADC 與低干擾 AMR 傳感器,能在 ±8 高斯的磁場(chǎng)中實(shí)現(xiàn) 5 毫高斯分辨率
  3. 內(nèi)置自檢功能
  4. 低電壓工作(2.16-3.6V)和超低功耗(100uA)
  5. 內(nèi)置驅(qū)動(dòng)電路
  6. I2C 數(shù)字接口
  7. 無引線封裝結(jié)構(gòu)
  8. 磁場(chǎng)范圍廣(+/-8Oe)
  9. 有相應(yīng)軟件及算法支持
  10. 最大輸出頻率可達(dá) 160Hz
  11. 4 個(gè)可編程紅外 LED 電流輸出
  12. 高環(huán)境光抑制
  13. 串?dāng)_補(bǔ)償
  14. 符合 RoHS 安全標(biāo)準(zhǔn)

優(yōu)點(diǎn)

  1. 是體積小高集成產(chǎn)品。 只需添加一個(gè)微處理器接口,外加兩個(gè)外部 SMT 電容。 專為大批量、成本敏感的 OEM 生產(chǎn)而設(shè)計(jì),易于裝配并與高速 SMT 裝配件兼容
  2. 能讓羅盤航向精度精確到 1°~2°
  3. 產(chǎn)品組裝后能進(jìn)行低成本功能性測(cè)試
  4. 適用于電池供電的應(yīng)用場(chǎng)合
  5. 帶置位/復(fù)位和偏置驅(qū)動(dòng)器用于消磁、自測(cè)和偏移補(bǔ)償
  6. 適用于消費(fèi)類電子設(shè)備應(yīng)用中通用雙線串行數(shù)據(jù)接口
  7. 符合 RoHS 標(biāo)準(zhǔn)
  8. 傳感器能在強(qiáng)磁場(chǎng)環(huán)境中羅盤航向精度達(dá)到 1°~2°
  9. 可獲得羅盤航向、硬磁、軟磁以及自動(dòng)校準(zhǔn)庫(kù)
  10. 能應(yīng)用于個(gè)人導(dǎo)航系統(tǒng)和 LBS

技術(shù)規(guī)格

25°C 時(shí)的測(cè)試

圖片圖片圖片圖片

內(nèi)部示意圖

圖片

電源參考設(shè)計(jì)

圖片

單電源參考設(shè)計(jì)

圖片

電源管理

該器件可有兩種不同的供電模式。 第一個(gè)是內(nèi)部運(yùn)作的 VDD 供電電源,第二個(gè)是為 IO 接口供電的 VDDIO 電源,當(dāng)然 VDDIO 的電壓可以與 VDD 電源電源相近; 單電源模式,或在 VDDIO 電壓低于 VDD 的情況下,HMC5883L 都能正常運(yùn)作并能與其他裝置兼容。

自測(cè)

為了檢測(cè) HMC5883L 是否正常運(yùn)行,傳感器內(nèi)部可產(chǎn)生標(biāo)準(zhǔn)磁場(chǎng)而進(jìn)行的自測(cè)試(不論是正向配置還是負(fù)向配置),再去測(cè)量此標(biāo)準(zhǔn)磁場(chǎng)強(qiáng)度并輸出。 在設(shè)置 A 寄存器上相應(yīng)位 MS 的值,就可啟動(dòng)自測(cè)功能及產(chǎn)生電壓的極性。 來自 VDD 電源的內(nèi)部電流源產(chǎn)生直流電流(大約 10 mA),然后加到磁阻傳感器的偏置帶上,這樣就在傳感器內(nèi)部產(chǎn)生了一個(gè)人為的標(biāo)準(zhǔn)磁場(chǎng)。

3、參考資料

《HMC5883L中文規(guī)格書.pdf》

《HMC5883L.pdf》

4、引腳說明

圖片

圖片

箭頭標(biāo)明磁場(chǎng)方向,該磁場(chǎng)在正常測(cè)量模式下產(chǎn)生正向輸出可讀。

封裝圖 HMC5883L(16-PIN LPCC,單位 mm)

圖片

5、工作模式

1)連續(xù)測(cè)量模式

連續(xù)測(cè)量模式,在客戶所選擇的速率下進(jìn)行連續(xù)的測(cè)量,并所測(cè)量的更新數(shù)據(jù)輸出寄存器。 如果有必要,數(shù)據(jù)可以從數(shù)據(jù)輸出寄存器重新讀取,但是,如果主機(jī)并不能確保在下次測(cè)量完成之前可以訪問數(shù)據(jù)寄存器,數(shù)據(jù)寄存器上的舊的數(shù)據(jù)會(huì)被新的測(cè)量數(shù)據(jù)取代。 為了保存測(cè)量之間的電流,該裝置被放置在一個(gè)類似閑置模式的狀態(tài),但模式寄存器沒有改變成空閑模式。 即MD[n]位不變。 配置寄存器A的設(shè)置在連續(xù)測(cè)量模式時(shí)會(huì)影響數(shù)據(jù)輸出速率(比特DO[n]) ,測(cè)量配置(bits MS[n]),和增益(bits GN[n])。 所有寄存器在連續(xù)測(cè)量模式中保留數(shù)值。 在連續(xù)測(cè)量模式下 I2C 總線可被網(wǎng)絡(luò)內(nèi)的其他裝置啟用。

2)單次測(cè)量模式

這是預(yù)設(shè)的供電模式。 在單測(cè)量模式,該裝置進(jìn)行單次測(cè)量并將測(cè)量數(shù)據(jù)更新至輸出數(shù)據(jù)寄存器中。 在完成測(cè)量和輸出數(shù)據(jù)寄存器的更新以后,通過設(shè)置MD[n] bits,該裝置被置于閑置模式,模式寄存器變更為閑置模式。 配置寄存器的設(shè)置在單一測(cè)量模式時(shí)影響測(cè)量配置(bits MS[n])。。 在單測(cè)量模式中所有寄存器保留數(shù)值。 在單測(cè)量模式下 I2C 總線可被網(wǎng)絡(luò)內(nèi)其他裝置啟用。

3)閑置模式

在此模式下,裝置可以通過 I2C 總線訪問,但主要電源能耗是禁用的,如 ADC,放大器,傳感器偏置電流,但不僅限于這些。 在空閑模式下所有寄存器保留數(shù)值。 在閑置測(cè)量模式下 I2C 總線可被網(wǎng)絡(luò)內(nèi)其他裝置啟用。

6、I2C 讀寫地址

7位地址:0x1E

8位讀取地址:0x3D

8位寫入地址:0x3C

7、寄存器

寄存器詳細(xì)解釋請(qǐng)參考數(shù)據(jù)手冊(cè)

圖片

8、代碼

博主用的是輪詢?nèi)プx數(shù)據(jù),大家也可以配置成中斷方式。

HMC5883L.H

#define HMC5883_ADDR      0X1E
 
#define HMC_CONFIG_A_REG    0X00
#define HMC_CONFIG_B_REG    0X01  
#define HMC_MODE_REG        0X02 
  
#define HMC_XMSB_REG        0X03    //X
#define HMC_XLSB_REG        0X04  
  
#define HMC_ZMSB_REG        0X05    //Z 
#define HMC_ZLSB_REG        0X06  
  
#define HMC_YMSB_REG        0X07    //Y  
#define HMC_YLSB_REG        0X08  
  
#define HMC_STATUS_REG      0X09   
  
#define HMC_CHEAK_A_REG     0X0A 
#define HMC_CHEAK_B_REG     0X0B  
#define HMC_CHEAK_C_REG     0X0C  

//value
  
#define HMC_CHECKA_VALUE    0x48
#define HMC_CHECKB_VALUE    0x34  
#define HMC_CHECKC_VALUE    0x33

HMC5883_Check

u8 HMC5883_Check(void)
{
 u8 tempA;
 u8 tempB;
 u8 tempC;
 
 tempA=I2C2_ReadOneByte(HMC5883_ADDR,HMC_CHEAK_A_REG);
 tempB=I2C2_ReadOneByte(HMC5883_ADDR,HMC_CHEAK_B_REG);
 tempC=I2C2_ReadOneByte(HMC5883_ADDR,HMC_CHEAK_C_REG);
     
 if(tempA == HMC_CHECKA_VALUE & tempB == HMC_CHECKB_VALUE & tempC == HMC_CHECKC_VALUE)
  return 0; 
 else
   return 1; 
}

void Hmc5883_Init(void)
{
 I2C2_WriteOneByte(HMC5883_ADDR,HMC_CONFIG_A_REG,0x78);  //set 75Hz
 I2C2_WriteOneByte(HMC5883_ADDR,HMC_CONFIG_B_REG,0x00);
 I2C2_WriteOneByte(HMC5883_ADDR,HMC_MODE_REG,0x00);  //cotinue mode
}

讀取數(shù)據(jù)

xValue = I2C2_ReadOneByte(HMC5883_ADDR,HMC_XLSB_REG)|(I2C2_ReadOneByte(HMC5883_ADDR,HMC_XMSB_REG)<<8);
zValue = I2C2_ReadOneByte(HMC5883_ADDR,HMC_ZLSB_REG)|(I2C2_ReadOneByte(HMC5883_ADDR,HMC_ZMSB_REG)<<8);
yValue = I2C2_ReadOneByte(HMC5883_ADDR,HMC_YLSB_REG)|(I2C2_ReadOneByte(HMC5883_ADDR,HMC_YMSB_REG)<<8);
printf("M-SENSOR:xValue:%d ,yValue:%d ,zValue:%d \\r\\n",xValue,yValue,zValue);

9、國(guó)產(chǎn)替代

HMC5883L 國(guó)產(chǎn)替代是 QMC5883L,硬件上 PIN to PIN,軟件上大致相同,寄存器有所區(qū)別,如下:

圖片

圖片

圖片

因此大家也可以用 QMC5883L。

10、傳感器集線器

自此,博主大致實(shí)現(xiàn)了一個(gè) sensorhub,在 STM32 上,用 FreeRTOS 啟用幾個(gè) task,采集傳感器數(shù)據(jù)并上報(bào)。 后面會(huì)繼續(xù)擴(kuò)展:

1、將 accgyro 從輪詢模式改成中斷模式,并從 I2C 改為 SPI 接口,應(yīng)對(duì)高速率采集場(chǎng)景。 其他三個(gè)傳感器還是輪詢模式,I2C 接口,但是不用延時(shí)實(shí)現(xiàn),用定時(shí)器去做。

2、可以動(dòng)態(tài)的 enable、disable、config、sample、calibration 各個(gè)傳感器,并且支持?jǐn)?shù)據(jù)時(shí)間戳機(jī)制。

3、為該系統(tǒng)提供一個(gè) framework 層,統(tǒng)一管控各個(gè)傳感器的 enable、disable、config 、sample、calibration 操作。

4、在 framework 層區(qū)分下命令的 user,根據(jù) user 下命令的不同,為各個(gè) user 分發(fā)不同速率的傳感器數(shù)據(jù),簡(jiǎn)稱 down sample 機(jī)制(down sample 只能以倍數(shù)實(shí)現(xiàn),如采樣 200Hz,可以分發(fā)出 50Hz,100Hz)

5、若器件數(shù)據(jù)手冊(cè)寫明支持自測(cè)功能,則增加 self_test 函數(shù),如 lsm6dso accgyro 和 HMC5883L 磁力計(jì)都支持。

6、增加虛擬傳感器功能,利用物理傳感器的數(shù)據(jù)進(jìn)行融合,實(shí)現(xiàn)如計(jì)步器、步伐檢測(cè)、設(shè)備旋轉(zhuǎn)方向等功能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50252

    瀏覽量

    750120
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    52

    文章

    8056

    瀏覽量

    145623
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8360

    瀏覽量

    150519
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1468

    瀏覽量

    122785
  • HMC5883L
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    14997
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Protues中HMC5883L尋找

    最近要做一個(gè)電子指南針,需要用到元件HMC5883L,軟件元件庫(kù)中找不到,求幫助。
    發(fā)表于 11-27 13:03

    基于MSP430F149和HMC5883L的數(shù)字指南

    基于MSP430F149和HMC5883L的數(shù)字指南
    發(fā)表于 08-09 14:06

    HMC5883L

    HMC5883L 是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤和磁場(chǎng)檢測(cè)領(lǐng)域。HMC5883L 包括最先進(jìn)的高分辨率HMC118X系列磁阻
    發(fā)表于 04-16 09:04

    基于HMC5883L的電子指南

    在I2C方面做了部分的改動(dòng)。讀取HMC5883L傳感器的讀取函數(shù)中要注意寄存器的地址和讀出來的數(shù)據(jù)所存放的緩沖器大小及位置void read_hmc5883l(void
    發(fā)表于 09-10 09:57

    請(qǐng)問怎么進(jìn)行HMC5883L數(shù)據(jù)的讀取

    最近在調(diào)試GY-86模塊,調(diào)試到HMC5883L的時(shí)候讀回來的數(shù)據(jù)都是0,仔細(xì)看原理圖發(fā)現(xiàn)HMC5883L的SDA,SCL是連接到MOU6050的XDA,XCL上的,這樣的話就是MPU6050作為
    發(fā)表于 05-08 04:16

    如何處理磁力計(jì)HMC5883L獲取的三軸數(shù)據(jù)?

    HMC5883L來矯正陀螺儀使用四元數(shù)法來求偏航角,想問問如何處理磁力計(jì)HMC5883L獲取的三軸數(shù)據(jù)?
    發(fā)表于 07-25 19:44

    HMC5883L傳感器的sampling rate tolerance指的是什么?

    我用到一個(gè)傳感器HMC5883L,有人提出必須考慮傳感器的sampling rate tolerance,可是我不明白這是什么意思???
    發(fā)表于 12-15 07:29

    GY-273 HMC5883L電子指南針羅盤

    【Realplay】GY-273 HMC5883L電子指南針羅盤模塊 三軸磁場(chǎng)傳感器
    發(fā)表于 11-10 10:44 ?80次下載

    HMC5883L中文數(shù)據(jù)手冊(cè)

    霍尼韋爾公司出品,三軸地磁傳感器HMC5883的升級(jí)版HMC5883L,用于地磁車輛檢測(cè),智能交通系統(tǒng),停車誘導(dǎo)系統(tǒng)等等。
    發(fā)表于 02-29 16:58 ?116次下載

    HMC5883L中文

    HMC5883L中文
    發(fā)表于 12-13 17:15 ?13次下載

    hmc5883l三軸電子羅盤傳感器連接arduino

    本文開始對(duì)HMC5883L進(jìn)行了介紹,其中包括了HMC5883L的主要技術(shù)參數(shù)、工作原理、應(yīng)用領(lǐng)域及尺寸說明,然后闡述了hmc5883l三軸電子羅盤傳感器連接arduino的方法及程序
    的頭像 發(fā)表于 03-08 08:46 ?1.9w次閱讀

    hmc5883l的特點(diǎn)及優(yōu)點(diǎn)_HMC5883L磁力計(jì)校準(zhǔn)方法

     霍尼韋爾 HMC5883L 是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤和磁場(chǎng)檢測(cè)領(lǐng)域。HMC5883L 包括最先進(jìn)的高分辨率HMC118X系列磁阻
    發(fā)表于 03-08 10:32 ?1.6w次閱讀

    HMC5883L應(yīng)用說明

     霍尼韋爾 HMC5883L 是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤和磁場(chǎng)檢測(cè)領(lǐng)域。HMC5883L 包括最先進(jìn)的高分辨率HMC118X系列磁阻
    發(fā)表于 03-08 10:49 ?2.8w次閱讀

    霍尼韋爾HMC5883L詳細(xì)資料下載

    霍尼韋爾HMC5883L詳細(xì)資料下載
    發(fā)表于 12-08 10:51 ?10次下載

    磁力計(jì)HMC5883L傳感器特性

    霍尼韋爾 HMC5883L 是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤和磁場(chǎng)檢測(cè)領(lǐng)域(指南針、GPS)。 HMC5883L 包括最先進(jìn)的高分辨率
    的頭像 發(fā)表于 07-20 10:40 ?1276次閱讀