YAMAHA地磁感測器YAS532B應用小記

2021-06-21 21:14:00 字數 3382 閱讀 5476

一、簡介

這款地磁感測器能夠測量三個座標軸的磁場大小,在x,y軸上精度能夠達到0.15ut/count,在z軸上能夠達到0.25ut/count,有很高的靈敏度,支援iic通訊,工作在從裝置模式,工作速率100kbps/400kbps可調,非常小的封裝,非常低的功耗,測量完能夠自動進入power-down模式,測量結果支援中斷輸出,也支援迴圈測量。

1 供電

模組供電電壓vdd為 1.7v~3.6v可選,資料通訊口電壓iovdd的電壓是1.7v~vdd可選,不能超過vdd,可以相等

2 工作溫度

-40℃到+95℃,其中測量的結果會受溫度的影響,在後邊將會介紹到,需要對溫度進行乙個補償,內部有溫度測量模組

3 功耗

在供電電壓vdd=2.6v,測量過程中的電流消耗為4ma,非工作過程中的靜態功耗為32ua 

4 測量耗時

通常情況,磁場測量加上溫度測量總耗時為1ms

二、硬體連線

如圖所示,兩個iic介面需要上拉

三、操作步驟

1、上電初始化,所涉及的步驟如下:

(1)設定test暫存器,向test1r與test2r暫存器中寫入0x00

(2)讀取儲存在cal暫存器中的值,這裡邊的值將會在後邊計算測量結果的時候使用,可以讀一次,然後存在你的微控制器的flash裡,這樣就可以不用每次都讀取這個值,上電的時候,把這部分值初始化到你的計算公式裡就行了,感覺這裡應該是每個感測器晶元都是唯一固定的,將會在最後的計算裡將,x,y1,y2轉換成x,y,z三個座標軸的資訊,用途應該在那裡,這裡的值得具體格式在後邊介紹

(3)設定config暫存器,主要包括以下幾個部分:一是是否使用中斷,二是中斷輸出是高電平還是低電平,三就是cck的設定,這裡的cck的值其實也在上邊的cal中存著,可以在上乙個步驟中讀取這個值,賦到這裡邊

(4)設定intrvlr暫存器

當裝置工作在延時採集模式的時候,需要在這個暫存器裡設定取樣間隔,當工作在延時測量模式的時候,使用中斷來判斷採集完成。

(5)啟用resetcoil

啟用這個東西就是說,如果你在測量的時候,磁感測器受到了強烈的磁干擾,比如說有磁鐵東西靠近,使這個東西的讀數變化的太大了,回不去了,就跟卡在那兒是的,可以用這個東西復位一下,每次初始化都復位一下就得了。

(6)設定offset control的值

這東西用途比較大,是乙個硬體的偏移量,設定好這個東西之後,他會在測量結果上直接去掉這裡設定的值,感覺這個值並不是乙個絕對量,或者說是,這個值其實是乙個很小的量,不過會對結果有乙個比例關係的影響吧,不是很清楚,具體的取值過程,還有設定方法,在後邊介紹。

2、採集過程

延時採集模式:每寫一次cmdr暫存器,就會啟動一次採集,本例以工作在延時採集模式為例,延時採集模式下,採集轉換完成不會產生中斷,你需要掃瞄讀取datar裡邊的值,這個地方有8byte的資料,其中第乙個byte裡的資料的bit8是是否採集完成的乙個標誌位,需要檢測這個位的值,當為0時表示轉換完成,1代表忙狀態。

中斷模式:寫一次cmdr暫存器,等待中斷產生即可

3、計算公式

採集轉換完成的資料儲存在datar暫存器裡,如下圖所示

tem_data = (((int)temp[26] << 3) & 0x3f8) | ((temp[27] >> 5) & 0x07);
x_data = (int)(((int)temp[28] << 6) & 0x1fc0) | ((temp[29] >> 2) & 0x3f);

y1_data = (int)(((int)temp[30] << 6) & 0x1fc0) | ((temp[31] >> 2) & 0x3f);

y2_data = (int)(((int)temp[32] << 6) & 0x1fc0) | ((temp[33] >> 2) & 0x3f);

另外說一下calr暫存器裡邊的值的提取:

可用如下程式提取:

cx = (int)temp[11];

cy1 = (int)temp[12];

cy2 = (int)temp[13];

a2c = (int)((temp[14] >> 2) & 0x03f);

a3c = (int)(((temp[14] << 2 ) & 0x0c) | ((temp[15] >> 6) & 0x03));

a4c = (int)(temp[15] & 0x3f);

a5c = (int)((temp[16] >> 2) & 0x3f);

a6c = (int)(((temp[16] << 4) & 0x30) | ((temp[17] >> 4) & 0x0f));

a7c = (int)(((temp[17] << 3) & 0x78) | ((temp[18] >> 5) & 0x07));

a8c = (int)(((temp[18] << 1) & 0x3e) | ((temp[19] >> 7) & 0x01));

a9c = (int)(((temp[19] << 1) & 0xfe) | ((temp[20] >> 7) & 0x01));

kc = (int)((temp[20] >> 2) & 0x1f);

然後還不能進行計算,cal裡邊的值還有乙個轉換,就是說這個也不是最終的值,有乙個轉換公式,下表記錄:

把取到的值計算好以後,然後就可以進行計算了,計算公式如下

sx = x_data;sy = y1_data - y2_data;sz = -y1_data - y2_data;

然後就是乙個矩陣計算:

這裡邊的hx,hy,hz就是單位為ut的磁場結果了。

在前面還要去掉溫度的關係,這裡 sx = dx - cxt,sy1 = dy1 - cy1t, sy2 = dy2 - cy2t

這就結了

出來的值就是實際值了,可還有需要設定乙個偏置,就是以後的變化值只是在這個值得附近變化,就是說,你在任何乙個方向設定乙個靜止值,然後把這個作為總偏置,軟體減掉就可以了。

然後說一下那個硬體偏置的設定,直接看程式吧:

void calib_axes(uint8_t whit)

; uint8_t buf_temp[3];

uint8_t i;

buf_temp[0] = 0x00;

for(i = 0; i < 5; i++)

if(whit ==1)

if(whit ==2)

get_mag_data();

if(mag_data[whit]>4096)

if(mag_data[whit]<4096)

if(mag_data[whit]==4096)}}

這是一段c語言程式,內容應該一看就明白很簡單...

未詳盡之處,可以問我,有錯的話,請不吝賜教,謝謝

感測器 5 壓電式力學感測器

壓電感測器 依據電介質壓電效應研製的感測器 具有壓電效應的晶體 壓電晶體 具有壓電效應的電介質材料 壓電材料 電介質在外加電場下都可極化,其中二十種晶體結構可產生壓電效應。晶體結構中無對稱中心是產生壓電效應的必要條件 正壓電效應 指某些介質在力的作用下產生形變引起介質表面帶電的現象 形變產生電 逆壓...

HMC5883L地磁感測器學習總結

hmc5883l採用iic匯流排通訊 hmc5883l地磁感測器iic操作總結 寫指令 0x3c 讀指令 0x3d hmc5883l的暫存器 hmc5883l暫存器位址對映 define hmc5883l cra base 0x00 配置暫存器a configuration register a d...

電化學感測器(5) 氧氣感測器

氧氣通過毛細管擴散到達感測電極的表面。採用這種方法,進入感測器的氣體量由擴散控制。到達感測電極的氧氣減少,因此消耗電子,導致電流。對電極通過氧化水來平衡感測電極的反應。由此在對電極處產生質子。這些通過電解質向感測電極遷移。恆電位電路將感應電極的電位維持在 600mv相對於參考電極電位。這種負偏置電位...