玩轉X-CTR100 l STM32F4 l HMC5983/HMC5883L三軸磁力計傳感器

我造輪子,你造車,創客一塊兒造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 函數

    

本文介紹X-CTR100控制器 擴展HMC5983三軸磁力計傳感器,模塊型號爲GY-282,淘寶上能夠買到。 工具

三軸磁力計可測量設備周圍磁場強度,結合地球磁場能夠計算獲取水平指向,經常使用於電子羅盤、數字指南針。 spa

原理

電子羅盤,也叫數字指南針,是利用地磁場來定北向的一種方法。電子羅盤做爲一種重要的導航定向工具,正愈來愈多的應用於導航和定向系統。當前大多數的導航系統都使用電子羅盤來指示方向。電子羅盤經過對地球磁場和重力場等信息的計算、精確輸出航向(Azimuth)、俯仰(pitch)、橫滾(Roll)等參數。 3d

地磁傳感器在一些運動系統中,有時須要進行精確的方向控制,雖然測量方向的方法 有多種,但最便利、通用性最強的仍是測量地球的磁場。利用地磁做爲參考, 經過傳感器測量出與地磁線之間的夾角就能夠獲得方位角的數據,從而實現精確的方向控制。這裏就來討論一下地磁傳感器(又稱爲數字羅盤或電子羅盤) 及其使用方法。經常使用的地磁傳感器主要有FreeScale(飛思卡爾)的MAG 系列和 Honeywell(霍尼韋爾)的HMC系列。 blog

HMC5883 是一種表面貼裝的高集成度、帶有IIC 數字接口的弱磁傳感器芯 片。它內含有最早進的高分辨率HMC118X 系列磁阻傳感器,並附帶霍尼韋爾 專利的集成電路(包括有放大器、自動消磁驅動器和誤差校準等),具備12 位 模數轉換器能使羅盤精度控制在1°~2°之間。霍尼韋爾的磁傳感器在低磁場 傳感器行業中是靈敏度最高和可靠性最好的傳感器。其測量範圍能從毫高斯到 8 高斯(gauss)。HMC5883 的工做電壓在2.16V~3.6V 之間,典型爲3.3V。雖然工做電壓爲 低電壓方式,但數據端口的電壓可經過VDDIO 口來指定。 接口

HMC5983是HMC5883L的升級版磁場傳感器,相比於HMC5883,具備以下優點。 資源

1. 可支持IIC以及SPI協議傳輸; get

2. 自動進行溫度補償; 博客

3. 數據更新速率可達220Hz it

霍尼韋爾三軸電子羅盤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();

    }

}

實現效果

運行效果以下圖所示。

    

相關文章
相關標籤/搜索