01說(shuō)在前面的話
1. 有不少朋友在做項(xiàng)目的時(shí)候經(jīng)常涉及到加速度計(jì)和陀螺儀的原始數(shù)據(jù)轉(zhuǎn)換為其他的單位的問題,這篇文章梳理和推導(dǎo)一下。
1)加速度計(jì)的原始數(shù)據(jù) 在應(yīng)用時(shí)常見的轉(zhuǎn)換單位有: g、m/s^2 、角度
2)陀螺儀的原始數(shù)據(jù) 在應(yīng)用時(shí)常見的轉(zhuǎn)換單位有:°/s、red/s、角度
2. 是對(duì)《幾種常用的加速傳感參數(shù)比較》這篇文件更新,在這篇文章中將不同參加的傳感器參數(shù)對(duì)比和精度參數(shù)寫在一起,本文專講精度參數(shù)和單位換算
02測(cè)量范圍和精度
在MEMS 傳感的數(shù)據(jù)手冊(cè)中都給出了加速度計(jì)和陀螺儀的測(cè)量范圍和測(cè)量精度。有測(cè)量范圍是可以推算出測(cè)量精度的。
不論是加速還是陀螺儀,數(shù)據(jù)寄存器都是16位的,由于最高位是符號(hào)位,故而數(shù)據(jù)寄存器的輸出范圍是 -7FFF~7FFF (-32767~32767)。
陀螺儀:
假如,我們選擇陀螺儀的測(cè)量范圍是 ±2000,在數(shù)據(jù)手冊(cè)中 16.4 LSB/(°/s)是 32767/2000 = 16.4 計(jì)算出來(lái)的
那么寄存器的數(shù)字和測(cè)量范圍的對(duì)應(yīng)關(guān)系:
-32767 | 32767 |
-2000(°/s) | 2000(°/s) |
比如,通過寄存器讀取陀螺儀的值是1000的,那么我們求角速度 X
加速度:
同樣假如,我們選擇加速度的測(cè)量范圍是 ±16,在數(shù)據(jù)手冊(cè)中 2048 LSB/g 是 32767/16 = 2048 計(jì)算出來(lái)的
那么寄存器的數(shù)字和測(cè)量范圍的對(duì)應(yīng)關(guān)系:
-32767 | 32767 |
-16g | 16g |
比如,通過寄存器讀取陀螺儀的值是1000的,那么我們求重力加速度 X X = 1000 / 2048 = 0.49g
03單位換算
1. 不同量程下精度的計(jì)算
加速度計(jì)量程為:±2g
獲取到的加速度計(jì)數(shù)據(jù) 除以16384
加速度計(jì)量程為:±4g
獲取到的加速度計(jì)數(shù)據(jù) 除以8192
加速度計(jì)量程為:±8g
獲取到的加速度計(jì)數(shù)據(jù) 除以4096
加速度計(jì)量程為:±16g
獲取到的加速度計(jì)數(shù)據(jù) 除以2048
2.可以轉(zhuǎn)化為帶物理單位的數(shù)據(jù),單位:g(m/s^2)
3. 可以通過三角關(guān)系轉(zhuǎn)換為角度
float tanalpha = 0,tanbeta = 0,tangamma = 0; tanalpha = (float)data->rawx / sqrt( ((float)data->rawy * (float)data->rawy + (float)data->rawz * (float)data->rawz) ); data->anglex = (float)atan(tanalpha)*57.3; tanbeta = (float)data->rawy / sqrt( ((float)data->rawx * (float)data->rawx + (float)data->rawz * (float)data->rawz) ); data->angley = (float)atan(tanbeta)*57.3; tangamma = (float)data->rawz / sqrt( ((float)data->rawy * (float)data->rawy + (float)data->rawx * (float)data->rawx) ); data->anglez = (float)atan(tangamma)*57.3;
1. 不同量程下精度的計(jì)算
陀螺儀量程為:±250 dps
獲取到的陀螺儀數(shù)據(jù)除以131
陀螺儀量程為:±500 dps
獲取到的陀螺儀數(shù)據(jù)除以65.5
陀螺儀量程為:±1000dps
獲取到的陀螺儀數(shù)據(jù)除以32.8
陀螺儀量程為:±2000dps
獲取到的陀螺儀數(shù)據(jù)除以16.4
2.可以轉(zhuǎn)化為帶物理單位的數(shù)據(jù),單位:rad/s
//原始數(shù)據(jù) raw_data[AXIS_X] = (buf[0] << 8) | buf[1]; raw_data[AXIS_Y] = (buf[2] << 8) | buf[3]; raw_data[AXIS_Z] = (buf[4] << 8) | buf[5]; //坐標(biāo)map轉(zhuǎn)換 remap_data[icm_dev.cvt.axis[AXIS_X]] = icm_dev.cvt.sign[AXIS_X] * raw_data[AXIS_X]; remap_data[icm_dev.cvt.axis[AXIS_Y]] = icm_dev.cvt.sign[AXIS_Y] * raw_data[AXIS_Y]; remap_data[icm_dev.cvt.axis[AXIS_Z]] = icm_dev.cvt.sign[AXIS_Z] * raw_data[AXIS_Z]; //重力加速度計(jì)算 unit: m/s2 data->x = (float)remap_data[AXIS_X] * KSCALE_ACC_16G_RANGE; data->y = (float)remap_data[AXIS_Y] * KSCALE_ACC_16G_RANGE; data->z = (float)remap_data[AXIS_Z] * KSCALE_ACC_16G_RANGE; //red/s data->x = (float)remap_data[AXIS_X] * KSCALE_GYRO_2000_RANGE; data->y = (float)remap_data[AXIS_Y] * KSCALE_GYRO_2000_RANGE; data->z = (float)remap_data[AXIS_Z] * KSCALE_GYRO_2000_RANGE;
審核編輯:湯梓紅
-
傳感器
+關(guān)注
關(guān)注
2551文章
51097瀏覽量
753523 -
陀螺儀
+關(guān)注
關(guān)注
44文章
784瀏覽量
98709 -
加速度計(jì)
+關(guān)注
關(guān)注
6文章
702瀏覽量
45897
原文標(biāo)題:MEMS 慣性傳感器 - 加速度計(jì)&陀螺儀原始數(shù)據(jù)到不同單位的轉(zhuǎn)換
文章出處:【微信號(hào):SmartHWFW,微信公眾號(hào):SmartHWFW】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論