以明諾林研發的ADXL335模組為例說明
方法/步驟
1.產品介紹
ADXL335是美國模擬器件公司(ADI)推出的一款帶有訊號調理電路的高精度模擬三軸加速度感測器,它可以使用於測量傾斜檢測應用中的靜態重力加速度,以及運動、衝擊或振動導致的動態加速度等。
特性
1、工作溫度範圍:-40 to 85°C 2、靈敏度:300mv/g
3、靈敏度(%):±10 4、輸出型別:模擬量輸出
5、工作電壓:DC 5V 6、功耗低
7、典型頻寬:500HZ(X,Y,Z端上外接100nF的電容)
8、滿量程加速度測量範圍為±3 g
ADXL335上有一ST(self test)腳,可以用來測試晶片是否工作正常,把ST腳接Vs,檢視三軸的加速度值。
2.應用
ADXL335感測器模組水平放置時,X、Y軸方向的加速度為0,Z軸上為1。當你順著某個方向旋轉90度時,其加速度加1,反向則為負1。
注意事項:
(A)該模組VCC供電5V,ADXL335的Vs為3.3V,可以通過明諾林提供的原理圖檢視。
(B)理解如下幾個程式碼中涉及到的變數,具體細節閱讀《產品參考文件》中的“ADXL335.pdf”
zero_G = 512.0;
靜止時,輸出的加速度等同於電壓Vs/2等效值,Manduino UNO 10bit ADC範圍是(0~1023),AD最大時,三軸線上的電壓時Vs.
scale = 102.3 ; 330*1023/3.3/1000=330(mv/g) *1023/ (3300mv)
330mV/g , 代表的是解析度
3.3V/1024 代表的是 10bit ADC值所代表的電壓,( ADC值 * 3.3V/1024) 代表得到的電壓,再將上值 / 0.33 得到它的 g 值,則因子scale單位為1/g
3.在Manduino UNO板上驗證,測試程式碼如下
/*
ADXL335
note:vcc-->5v ,but ADXL335 Vs is 3.3V
The circuit:
5V: VCC
analog 1: x-axis
analog 2: y-axis
analog 3: z-axis
*/
const int xpin = 1; // x-axis of the accelerometer
const int ypin = 2; // y-axis
const int zpin = 3; // z-axis (only on 3-axis models)
void setup()
{
// initialize the serial communications:
Serial.begin(9600);
}
void loop()
{
int x = analogRead(xpin);
delay(1); //
int y = analogRead(ypin); //
delay(1);
int z = analogRead(zpin);
float zero_G = 512.0; //ADC is 0~1023 the zero g output equal to Vs/2
//ADXL335 power supply by Vs 3.3V
float scale = 102.3; //ADXL335330 Sensitivity is 330mv/g
//330 * 1024/3.3/1000
Serial.print(((float)x - zero_G)/scale);
Serial.print("\t");
Serial.print(((float)y - zero_G)/scale);
Serial.print("\t");
Serial.print(((float)z - zero_G)/scale);
Serial.print("\n");
delay(500);
}
模組水平放置,Xg、Yg、Zg理論值(0、0、1)
順時針旋轉90度
或逆時針旋轉90度