用途:測量地磁方向,測量物體靜止時候的方向,測量傳感器周圍磁力線的方向。注意,測量地磁時候容易受到周圍磁場影響,主芯片HMC5883 三軸磁阻傳感器特點(抄自網(wǎng)上):
1,數(shù)字量輸出:I2C 數(shù)字量輸出接口,設(shè)計使用非常方便。
2,尺寸小: 3x3x0.9mm LCC 封裝,適合大規(guī)模量產(chǎn)使用。
3,精度高:1-2 度,內(nèi)置12 位A/D,OFFSET, SET/RESET 電路,不會出現(xiàn)磁飽和現(xiàn)象,不會有累加誤差。
4,支持自動校準(zhǔn)程序,簡化使用步驟,終端產(chǎn)品使用非常方便。
5,內(nèi)置自測試電路,方便量產(chǎn)測試,無需增加額外昂貴的測試設(shè)備。
6,功耗低:供電電壓1.8V, 功耗睡眠模式-2.5uA 測量模式-0.6mA
連接方法:
只要連接VCC,GND,SDA,SDL 四條線。
Arduino GND -> HMC5883L GND
Arduino 3.3V -> HMC5883L VCC
Arduino A4 (SDA) -> HMC5883L SDA
Arduino A5 (SCL) -> HMC5883L SCL
(注意,接線是A4,A5,不是D4,D5)
源程序:
#include <Wire.h>
#include <HMC5883L.h>
HMC5883Lcompass;
voidsetup()
{
Serial.begin(9600);
Wire.begin();
compass = HMC5883L();
compass.SetScale(1.3);
compass.SetMeasurementMode(Measurement_Continuous);
}
voidloop()
{
MagnetometerRaw raw = compass.ReadRawAxis();
MagnetometerScaled scaled = compass.ReadScaledAxis();
float xHeading = atan2(scaled.YAxis, scaled.XAxis);
float yHeading = atan2(scaled.ZAxis, scaled.XAxis);
float zHeading = atan2(scaled.ZAxis, scaled.YAxis);
if(xHeading < 0) xHeading += 2*PI;
if(xHeading > 2*PI) xHeading -= 2*PI;
if(yHeading < 0) yHeading += 2*PI;
if(yHeading > 2*PI) yHeading -= 2*PI;
if(zHeading < 0) zHeading += 2*PI;
if(zHeading > 2*PI) zHeading -= 2*PI;
float xDegrees = xHeading * 180/M_PI;
float yDegrees = yHeading * 180/M_PI;
float zDegrees = zHeading * 180/M_PI;
Serial.print(xDegrees);
Serial.print(",");
Serial.print(yDegrees);
Serial.print(",");
Serial.print(zDegrees);
Serial.println(";");
delay(100);
}
標(biāo)簽:
Arduino
5883L
5883
HMC
上傳時間:
2014-03-20
上傳用戶:tianyi223