一、簡介
這款地磁感測器能夠測量三個座標軸的磁場大小,在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相對於參考電極電位。這種負偏置電位...