三轴陀螺仪mpu6050测试程序

三轴陀螺仪mpu6050测试程序
三轴陀螺仪mpu6050测试程序

InvenSense公司的三轴陀螺仪MPU6050测试程序。IIC接口,51单片机驱动,LCD1602同步显示。

硬件原理图

//****************************************

// MPU6050 IIC测试程序

// 使用单片机STC89C52

// 晶振:11.0592M

// 显示:LCD1602

// 编译环境Keil uVision2

// 参考宏晶网站24c04通信程序

// 功能: 显示加速度计和陀螺仪的10位原始数据

// 时间:2013年3月1日

//****************************************

#include

#include //Keil library

#include //Keil library

#include

typedef unsigned char uchar;

typedef unsigned short ushort;

typedef unsigned int uint;

//****************************************

// 定义51单片机端口

//****************************************

#define DataPort P0 //LCD1602数据端口

sbit SCL=P1^0; //IIC时钟引脚定义

sbit SDA=P1^1; //IIC数据引脚定义

sbit LCM_RS=P2^0; //LCD1602命令端口

sbit LCM_RW=P2^1; //LCD1602命令端口

sbit LCM_EN=P2^2; //LCD1602命令端口

//****************************************

// 定义MPU6050内部地址

//****************************************

#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)

#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)

#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)

#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)

#define ACCEL_XOUT_H 0x3B

#define ACCEL_XOUT_L 0x3C

#define ACCEL_YOUT_H 0x3D

#define ACCEL_YOUT_L 0x3E

#define ACCEL_ZOUT_H 0x3F

#define ACCEL_ZOUT_L 0x40

#define TEMP_OUT_H 0x41

#define TEMP_OUT_L 0x42

#define GYRO_XOUT_H 0x43

#define GYRO_XOUT_L 0x44

#define GYRO_YOUT_H 0x45

#define GYRO_YOUT_L 0x46

#define GYRO_ZOUT_H 0x47

#define GYRO_ZOUT_L 0x48

#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)

#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)

#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取

//****************************************

//定义类型及变量

//****************************************

uchar dis[4]; //显示数字(-511至512)的字符数组

int dis_data; //变量

//int Temperature,Temp_h,Temp_l; //温度及高低位数据

//****************************************

//函数声明

//****************************************

void delay(unsigned int k); //延时

//LCD相关函数

void InitLcd(); //初始化lcd1602

void lcd_printf(uchar *s,int temp_data);

void WriteDataLCM(uchar dataW); //LCD数据

void WriteCommandLCM(uchar CMD,uchar Attribc); //LCD指令

void DisplayOneChar(uchar X,uchar Y,uchar DData); //显示一个字符

void DisplayListChar(uchar X,uchar Y,uchar *DData,L); //显示字符串

//MPU6050操作函数

void InitMPU6050(); //初始化MPU6050

void Delay5us();

void I2C_Start();

void I2C_Stop();

void I2C_SendACK(bit ack);

bit I2C_RecvACK();

void I2C_SendByte(uchar dat);

uchar I2C_RecvByte();

void I2C_ReadPage();

void I2C_WritePage();

void display_ACCEL_x();

void display_ACCEL_y();

void display_ACCEL_z();

uchar Single_ReadI2C(uchar REG_Address); //读取I2C数据

void Single_WriteI2C(uchar REG_Address,uchar REG_data); //向I2C写入数据

//****************************************

//整数转字符串

//****************************************

void lcd_printf(uchar *s,int temp_data)

{

if(temp_data<0)

{

temp_data=-temp_data;

*s='-';

}

else *s=' ';

*++s =temp_data/100+0x30;

temp_data=temp_data%100; //取余运算

*++s =temp_data/10+0x30;

temp_data=temp_data%10; //取余运算

*++s =temp_data+0x30;

}

//****************************************

//延时

//****************************************

void delay(unsigned int k)

{

unsigned int i,j;

for(i=0;i

{

for(j=0;j<121;j++);

}

}

//**************************************** //LCD1602初始化

//**************************************** void InitLcd()

{

WriteCommandLCM(0x38,1);

WriteCommandLCM(0x08,1);

WriteCommandLCM(0x01,1);

WriteCommandLCM(0x06,1);

WriteCommandLCM(0x0c,1);

DisplayOneChar(0,0,'A');

DisplayOneChar(0,1,'G');

}

//**************************************** //LCD1602写允许

//**************************************** void WaitForEnable(void)

{

DataPort=0xff;

LCM_RS=0;LCM_RW=1;_nop_();

LCM_EN=1;_nop_();_nop_();

while(DataPort&0x80);

LCM_EN=0;

}

//**************************************** //LCD1602写入命令

//**************************************** void WriteCommandLCM(uchar CMD,uchar Attribc) {

if(Attribc)WaitForEnable();

LCM_RS=0;LCM_RW=0;_nop_();

DataPort=CMD;_nop_();

LCM_EN=1;_nop_();_nop_();LCM_EN=0;

}

//**************************************** //LCD1602写入数据

//**************************************** void WriteDataLCM(uchar dataW)

{

WaitForEnable();

LCM_RS=1;LCM_RW=0;_nop_();

DataPort=dataW;_nop_();

LCM_EN=1;_nop_();_nop_();LCM_EN=0;

}

//****************************************

//LCD1602写入一个字符

//**************************************** void DisplayOneChar(uchar X,uchar Y,uchar DData) {

Y&=1;

X&=15;

if(Y)X|=0x40;

X|=0x80;

WriteCommandLCM(X,0);

WriteDataLCM(DData);

}

//****************************************

//LCD1602显示字符串

//**************************************** void DisplayListChar(uchar X,uchar Y,uchar *DData,L) {

uchar ListLength=0;

Y&=0x1;

X&=0xF;

while(L--)

{

DisplayOneChar(X,Y,DData[ListLength]);

ListLength++;

X++;

}

}

//**************************************

//延时5微秒(STC90C52RC@12M)

//不同的工作环境,需要调整此函数

//当改用1T的MCU时,请调整此延时函数

//**************************************

void Delay5us()

{

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

}

//**************************************

//I2C起始信号

//************************************** void I2C_Start()

{

SDA = 1; //拉高数据线

SCL = 1; //拉高时钟线

Delay5us(); //延时

SDA = 0; //产生下降沿

Delay5us(); //延时

SCL = 0; //拉低时钟线}

//**************************************

//I2C停止信号

//************************************** void I2C_Stop()

{

SDA = 0; //拉低数据线

SCL = 1; //拉高时钟线

Delay5us(); //延时

SDA = 1; //产生上升沿

Delay5us(); //延时

}

//**************************************

//I2C发送应答信号

//入口参数:ack (0:ACK 1:NAK)

//************************************** void I2C_SendACK(bit ack)

{

SDA = ack; //写应答信号

SCL = 1; //拉高时钟线

Delay5us(); //延时

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

//**************************************

//I2C接收应答信号

//**************************************

bit I2C_RecvACK()

{

SCL = 1; //拉高时钟线

Delay5us(); //延时

CY = SDA; //读应答信号

SCL = 0; //拉低时钟线

Delay5us(); //延时

return CY;

}

//**************************************

//向I2C总线发送一个字节数据

//**************************************

void I2C_SendByte(uchar dat)

{

uchar i;

for (i=0; i<8; i++) //8位计数器

{

dat <<= 1; //移出数据的最高位

SDA = CY; //送数据口

SCL = 1; //拉高时钟线

Delay5us(); //延时

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

I2C_RecvACK();

}

//**************************************

//从I2C总线接收一个字节数据

//**************************************

uchar I2C_RecvByte()

{

uchar i;

uchar dat = 0;

SDA = 1; //使能内部上拉,准备读取数据, for (i=0; i<8; i++) //8位计数器

{

dat <<= 1;

SCL = 1; //拉高时钟线

Delay5us(); //延时

dat |= SDA; //读数据

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

return dat;

}

//**************************************

//向I2C设备写入一个字节数据

//**************************************

void Single_WriteI2C(uchar REG_Address,uchar REG_data)

{

I2C_Start(); //起始信号

I2C_SendByte(SlaveAddress); //发送设备地址+写信号

I2C_SendByte(REG_Address); //内部寄存器地址,

I2C_SendByte(REG_data); //内部寄存器数据,

I2C_Stop(); //发送停止信号

}

//**************************************

//从I2C设备读取一个字节数据

//**************************************

uchar Single_ReadI2C(uchar REG_Address)

{

uchar REG_data;

I2C_Start(); //起始信号

I2C_SendByte(SlaveAddress); //发送设备地址+写信号

I2C_SendByte(REG_Address); //发送存储单元地址,从0开始I2C_Start(); //起始信号

I2C_SendByte(SlaveAddress+1); //发送设备地址+读信号

REG_data=I2C_RecvByte(); //读出寄存器数据

I2C_SendACK(1); //接收应答信号

I2C_Stop(); //停止信号

return REG_data;

}

//**************************************

//初始化MPU6050

//**************************************

void InitMPU6050()

{

Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态

Single_WriteI2C(SMPLRT_DIV, 0x07);

Single_WriteI2C(CONFIG, 0x06);

Single_WriteI2C(GYRO_CONFIG, 0x18);

Single_WriteI2C(ACCEL_CONFIG, 0x01);

}

//**************************************

//合成数据

//**************************************

int GetData(uchar REG_Address)

{

char H,L;

H=Single_ReadI2C(REG_Address);

L=Single_ReadI2C(REG_Address+1);

return (H<<8)+L; //合成数据

}

//**************************************

//在1602上显示10位数据

//**************************************

void Display10BitData(int value,uchar x,uchar y)

{

value/=64; //转换为10位数据

lcd_printf(dis, value); //转换数据显示

DisplayListChar(x,y,dis,4); //启始列,行,显示数组,显示长度

}

//**************************************

//显示温度

//**************************************

//void display_temp()

//{

// Temp_h=Single_ReadI2C(TEMP_OUT_H); //读取温度

// Temp_l=Single_ReadI2C(TEMP_OUT_L); //读取温度

// Temperature=Temp_h<<8|Temp_l; //合成温度

// Temperature = 35+ ((double) (Temperature + 13200)) / 280; // 计算出温度

// lcd_printf(dis,Temperature); //转换数据显示

// DisplayListChar(11,1,dis,4); //启始列,行,显示数组,显示位数

//}

//*********************************************************

//主程序

//*********************************************************

void main()

{

delay(500); //上电延时

InitLcd(); //液晶初始化

InitMPU6050(); //初始化MPU6050

delay(150);

while(1)

{

Display10BitData(GetData(ACCEL_XOUT_H),2,0); //显示X轴加速度

Display10BitData(GetData(ACCEL_YOUT_H),7,0); //显示Y轴加速度

Display10BitData(GetData(ACCEL_ZOUT_H),12,0); //显示Z轴加速度

Display10BitData(GetData(GYRO_XOUT_H),2,1); //显示X轴角速度

Display10BitData(GetData(GYRO_YOUT_H),7,1); //显示Y轴角速度

Display10BitData(GetData(GYRO_ZOUT_H),12,1); //显示Z轴角速度

delay(500);

}

}

陀螺仪技术测试用题

测试用题,请勿“题字”。用后收回。谢谢! 一、 (20分)以下每题各有四个答案,选择正确的答案,每题5分。 (1) 设自由陀螺的角动量为H ,已知进动角速度ω,陀螺力矩为M ,下列表示三者 之间关系的表达式正确的是( ) (A )H M ω=? ;(B )M H ω=?; (C )H M ω=? ;(D )M H ω=? (2) 采用伺服跟踪法进行单自由度陀螺测漂,转台轴沿当地垂线方向,地球自转角速度 15/ie h ω=?,当地纬度为30?,测得转台转速为4 3.0210 -?转/分,则陀螺漂移速 度约为(传动比是1∶1)( ) (A )0.067 /h ;(B )0.55/h ;(C )1.57/h ;(D )(A )、(B)、(C)均错; (3) 干涉式光纤陀螺光纤长1500m ,成环半径4c m ,光纤环法向角速度 1.5/h Ω=?,光波长为1580nm 。则由Sagnac 效应引起的相位差近似为( ) (A )4 7.9510-?() ;(B )0.114();(C )4 3.1410-?();(D )(A)、(B)、(C) 均错; (4) 动量矩定理的向量表达式为( ) (A ) n b nb d R d R R dt dt ω=+? ;(B ) b ib d H M H dt ω=?+ ;(C ) b n nb d R d R R dt dt ω=+?;(D )i o o d H M dt = 二、(10分)说明运动地理坐标系相对惯性空间旋转的原因,给出该旋转角速度在地理 坐标系上的分量。 三、(20分)已知坐标系b b b ox y z (b 系)与n n n ox y z (n 系)初始时重合,b 系是 n 系以转动顺序x y z →→,转角分别为α、β 、γ得到的。试:(1)求方向余 弦矩阵n I C ,b n C 和n b C ;(2)写出b 系相对n 系的瞬时角速度在b 系上的投影表达式;(3)若向量ω在b 系中的表示为T b x y z ω ωωω??=?? ,求该向量在I I I ox y z 中 的表示I ω和n n n ox y z 中的表示n ω。 五、(10分)写出单自由度陀螺的技术方程,画出其传递函数方框图;求出当初始条件为零、输入角速度1()()t t ω δ=+时积分陀螺的响应。 六、(20分)已知二自由度陀螺技术方程为x x Y Y J H M J H M βααβ?+=?-=?,且x Y J J <。试证 明当陀螺仅受到沿内环轴幅值为 A 的脉冲力矩作用时,陀螺瞬态响应曲线(βα-曲 线)为椭圆,并给出椭圆中心坐标及长短半径;求出当() 1() x Y M t M t δ=??=? 时的响应 )(),(t t βα。 (初始条件为零)。

最全的陀螺仪基础知识详解

最全的陀螺仪基础知识详解 陀螺仪,又叫角速度传感器,是用高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或二个轴的角运动检测装置,同时,利用其他原理制成的角运动检测装置起同样功能的装置也称陀螺仪。 一、陀螺仪的名字由来 陀螺仪名字的来源具有悠久的历史。据考证,1850年法国的物理学家莱昂·傅科(J.Foucault)为了研究地球自转,首先发现高速转动中地的转子(rotor),由于它具有惯性,它的旋转轴永远指向一固定方向,因此傅科用希腊字gyro(旋转)和skopein(看)两字合为“gyroscopei”一字来命名该仪器仪表。 最早的陀螺仪的简易制作方式如下:即将一个高速旋转的陀螺放到一个万向支架上,靠陀螺的方向来计算角速度。 其中,中间金色的转子即为陀螺,它因为惯性作用是不会受到影响的,周边的三个“钢圈”则会因为设备的改变姿态而跟着改变,通过这样来检测设备当前的状态,而这三个“钢圈”所在的轴,也就是三轴陀螺仪里面的“三轴”,即X轴、y轴、Z轴,三个轴围成的立体空间联合检测各种动作,然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。因此一开始,陀螺仪的最主要的作用在于可以测量角速度。 二、陀螺仪的基本组成 当前,从力学的观点近似的分析陀螺的运动时,可以把它看成是一个刚体,刚体上有一个万向支点,而陀螺可以绕着这个支点作三个自由度的转动,所以陀螺的运动是属于刚体绕一个定点的转动运动,更确切地说,一个绕对称轴高速旋转的飞轮转子叫陀螺。将陀螺安装在框架装置上,使陀螺的自转轴有角转动的自由度,这种装置的总体叫做陀螺仪。 陀螺仪的基本部件有:陀螺转子(常采用同步电机、磁滞电机、三相交流电机等拖动方法来使陀螺转子绕自转轴高速旋转,并见其转速近似为常值);内、外框架(或称内、外环,它是使陀螺自转轴获得所需角转动自由度的结构);附件(是指力矩马达、信号传感器等)。 三、陀螺仪的工作原理 陀螺仪侦测的是角速度。其工作原理基于科里奥利力的原理:当一个物体在坐标系中直线移动时,假设坐标系做一个旋转,那么在旋转的过程中,物体会感受到一个垂直的力和垂直方向的加速度。 台风的形成就是基于这个原理,地球转动带动大气转动,如果大气转动时受到一个切向力,便容易形成台风,而北半球和南半球台风转动的方向是不一样的。用一个形象的比喻解释了科里奥利力的原理。

光纤陀螺仪指标 国军标

光纤陀螺仪测试方法 1范围 本标准规定了作为姿态控制系统、角位移测量系统和角速度测量系统中敏感器使用的单轴干涉性光纤陀螺仪(以下简称光纤陀螺仪)的性能测试方法。 2规范性引用文件 下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注目期的引用文件,其随后所有的修改单(不包含勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。 GB321-1980优先数和优先系数 CB998低压电器基本实验方法 GJB585A-1998惯性技术术语 GJB151军用设备和分系统电磁发射和敏感度要求 3术语、定义和符号 GJB585A-1998确立的以及下列术语、定义和符号适用于本标准。

3.1术语和定义 3.1.1干涉型光纤陀螺仪interferometric fiber optic gyroscope 仪萨格奈克(Sagnac)效应为基础,由光纤环圈构成的干涉仪型角速度测量装置。当绕其光纤环圈等效平面的垂线旋转时,在环圈中以相反方向传输出的两束相干光间产生相位差,其大小正比于该装置相对于惯性空间的旋转角速度,通过检测输出光干涉强度即反映出角速度的变化。 3.1.2陀螺输入轴input axis of gyro 垂直于光纤环圈等效平面的轴。当光纤陀螺仪绕该轴有旋转角速度输入时,产生光纤环圈相对于惯性空间输入角速度的输出信号。 3.1.3标度因数非线性度scale factor nonlinearity 在输入角速度范围内,光纤陀螺仪输出量相对于最小二乘法拟合直线的最大偏差值与最大输出量之比。 3.1.4零偏稳定性bias stability 当输入角速度为零时,衡量光纤陀螺仪输出量围绕其均值的离散程度。以规定时间内输出量的标准偏差相应的等效输入角速度表示,也可称为零漂。

陀螺仪主要性能指标

常见的陀螺仪性能指标与解释 零偏 零偏,又称为零位漂移或零位偏移或零偏稳定性,也可简称零漂或漂移率,英文中称为drift或bias drift。零偏应理解为陀螺仪的输出信号围绕其均值的起伏或波动,习惯上用标准差(σ)或均方根(RMS)表示,一般折算为等效输入角速率(°/ h)。在角速度输入为零时,陀螺仪的输出是一条复合白噪声信号缓慢变化的曲线,曲线的峰-峰值就是零偏值(drift),如图2-6所示。在整个性能指标集中,零偏是评价陀螺仪性能优劣的最重要指标。 分辨率 陀螺仪中的分辨率是用白噪声定义的,如图2-6 中所示,可以用角随机游走来表示,可以简化为一定带宽下测得的零偏稳定性与监测带宽的平方根之比,其单位为°??1Hz,或简化为°?。角度随机游走表征了长时间累积的角

度误差。角随机游动系数反映了陀螺在此处键入公式。的研制水平,也反映了陀螺可检测的最小角速率能力,并间接反映了与光子、电子的散粒噪声效应所限定的检测极限的距离。据此可推算出采用现有方案和元器件构成的陀螺是否还有提高性能的潜力。 标度因子 标度因子是陀螺仪输出量与输入角速率变化的比值,通常用某一特定的直线斜率表示,该斜率是根据整个正(或负)输入角速率范围内测得的输入/输出数据,通过最小二乘法拟合求出的直线斜率。对应于正输入和负输入有不同的刻度因子称为刻度因子不对称,其表明输入输出之间的斜率关系在零输入点不连续。一般用刻度因子稳定性来衡量刻度因子存在的误差特性,它是指陀螺在不同输入角速率情况下能够通过标称刻度因子获得精确输出的能力。非线性往往与刻度因子相关,是指由实际输入输出关系确定的实际刻度因子与标称刻度因子相比存在的非线性特征,有时还会采用线性度,其指陀螺输入输出曲线与标称直线的偏离程度,通常以满量程输出的百分比表示。 动态范围 陀螺在正、反方向能检测到的输入角速率的最大值表示了陀螺的测量范围。该最大值除以阀值即为陀螺的动态范围,该值越大表示陀螺敏感速率的能力越强。 带宽 带宽是指陀螺能够精确测量输入角速度的频率范围,这个频段范围越大表明

陀螺仪的测试

SUCCESS BELONGS TO THE ONE WITH CLEAR AND LONG-TERM GOALS! 电子陀螺仪的角度获取测试 2013-06-07 16:11 by DarkHorse, 111 阅读, 0 评论, 收藏, 编辑 导航中经常用到电子陀螺。为了测试陀螺仪在静止下的零漂输出和运动情况下的输出角度值,做了2个实验。用的陀螺仪型号是:L3G4200DTR 是一个三轴输出的MEMS电子陀螺。 1 零漂测试 让陀螺仪静止不动,运行5分钟,记录串口输出数据,并解析出三个轴的角速度值。在matlab里面进行仿真。 function main clc; clear; dataFile = input('put file: ','s'); nCount = 0; fileHandle = fopen(dataFile,'r');

while ~feof(fileHandle) string = fgetl(fileHandle); nCount = nCount + 1; end nCount = nCount-2; frewind(fileHandle); i = 1; while ~feof(fileHandle) string = str2num(fgetl(fileHandle)); zData(i) = string(3); i = i + 1; if i > nCount break; end end fclose(fileHandle); figure(1); plot(zData,'b-'); hold on; meanZData = mean(zData); title('原始Z轴输出数据'); xlabel('ms'); ylabel('dps(degree per second)'); text(3500, 1.2, ['mean=',num2str(meanZData)]); figure(2); newData = runge_kutta_intergration(zData); plot(newData); xlabel('ms'); ylabel('degree'); title('积分输出的角度'); function newData = runge_kutta_intergration(rawData) samplePeriod = 0.1;%%100ms size = length(rawData); i=1; while (i <= size) %%%%%简单的积分累加获取角度 if(i == 1) Data(i) = rawData(i); else

陀螺仪的工作原理

陀螺仪的工作原理 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向,制造出来的东西就叫陀螺仪。我们骑自行车其实也是利用了这个原理。轮子转得越快越不容易倒,因为车轴有一股保持水平的力量。陀螺仪在工作时要给它一个力,使它快速旋转起来,一般能达到每分钟几十万转,可以工作很长时间。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。 现代陀螺仪是一种能够精确地确定运动物体的方位的仪器,它是现代航空,航海,航天和国防工业中广泛使用的一种惯性导航仪器,它的发展对一个国家的工业,国防和其它高科技的发展具有十分重要的战略意义。传统的惯性陀螺仪主要是指机械式的陀螺仪,机械式的陀螺仪对工艺结构的要求很高,结构复杂,它的精度受到了很多方面的制约。自从上个世纪七十年代以来,现代陀螺仪的发展已经进入了一个全新的阶段。1976年等提出了现代光纤陀螺仪的基本设想,到八十年代以后,现代光纤陀螺仪就得到了非常迅速的发展,与此同时激光谐振陀螺仪也有了很大的发展。由于光纤陀螺仪具有结构紧凑,灵敏度高,工作可靠等等优点,所以目前光纤陀螺仪在很多的领域已经完全取代了机械式的传统的陀螺仪,成为现代导航仪器中的关键部件。和光纤陀螺仪同时发展的除了环式激光陀螺仪外,还有现代集成式的振动陀螺仪,集成式的振动陀螺仪具有更高的集成度,体积更小,也是现代陀螺仪的一个重要的发展方向。 现代光纤陀螺仪包括干涉式陀螺仪和谐振式陀螺仪两种,它们都是根据塞格尼克的理论发展起来的。塞格尼克理论的要点是这样的:当光束在一个环形的通道中前进时,如果环形通道本身具有一个转动速度,那么光线沿着通道转动的方向前进所需要的时间要比沿着这个通道转动相反的方向前进所需要的时间要多。也就是说当光学环路转动时,在不同的前进方向上,光学环路的光程相对于环路在静止时的光程都会产生变化。利用这种光程的变化,如果使不同方向上前进的光之间产生干涉来测量环路的转动速度,这样就可以制造出干涉式光纤陀螺仪,如果利用这种环路光程的变化来实现在环路中不断循环的光之间的干涉,也就是通过调整光纤环路的光的谐振频率进而测量环路的转动速度,就可以制造出谐振式的光纤陀螺仪。从这个简单的介绍可以看出,干涉式陀螺仪在实现干涉时的光程差小,所以它所要求的光源可以有较大的频谱宽度,而谐振式的陀螺仪在实现干涉时,它的光程差较大,所以它所要求的光源必须有很好的单色性。

MEMS陀螺仪短时漂移特性实验研究-好

2007年2月 Journal of Chinese Inertial Technology Feb. 2007 文章编号:1005-6734(2007)01-0100-05 MEMS陀螺仪短时漂移特性实验研究 张海鹏1,2,房建成1 (1. 北京航空航天大学仪器科学及光电工程学院,北京 100083;2. 青岛海军潜艇学院,山东青岛 266071) 摘要:针对低精度MEMS陀螺仪适合短时间工作的特点,在不同采样频率下测试了常用MEMS陀螺仪的短时漂移,对比研究并分析讨论了各种被测MEMS陀螺仪的短时漂移特性,发现石英系列MEMS陀螺仪的短时漂移在高频采样时表现出显著的周期性,并说明测试石英MEMS陀螺仪需要高采样频率,应用时需精确标定补偿其周期特性。 关 键 词:陀螺漂移;周期项;功率谱密度;微机电陀螺仪;高频采样 中图分类号:U666.1 文献标识码:A Short-time drift characteristic of MEMS Gyroscope ZHANG Hai-peng1, FANG Jian-cheng1 (1. School of Instrument Science and Opto–electronics Engineering, Beijing University of Aeronautics and Astronautics, Beijing 100083, China; 2. Qingdao Navy Submarine Academe, Qingdao 266071, China) Abstract: Considering that MEMS gyroscope is suitable for short time working, the test experiments on gyroscope short-time drift were carried out under different sampling frequencies, and the experiments results were analyzed. It was found that the drift of quartz MEMS gyroscope had significant periodicity when the sampling frequency was high. It was shown that the test procedure of quartz MEMS gyroscopes should be performed under a high sampling frequency, and the accurate calibrating and compensation for periodic function was necessary in application. Key words: gyroscope drift; periodic function; power spectrum density; MEMS gyroscope; high sampling frequency 微机电系统(MEMS,micro electronic mechanical system)技术具有很多优势,基于此技术发展起来的MEMS陀螺仪具有体积小、重量轻、价格便宜等优点,近年来迅速得到广泛应用[1,2]。但MEMS陀螺仪性能不高,陀螺漂移是其主要的误差源,对MEMS陀螺仪漂移精确测试显得尤为重要。传统陀螺仪精度高,连续工作时间可达几小时、几天甚至几十天,其漂移测试采样频率低、时间长。例如文献[3]中光纤陀螺仪测试采样频率1 Hz,测试时间3 h;文献[4]中动力调谐陀螺仪采样频率0.167 Hz,采样时间40 h;文献[5]中采样频率0.033 Hz,采样时间6 h。目前MEMS陀螺仪的测试往往也参考已有测试标准[6–8],采样频率较低、时间较长。实际上,MEMS陀螺仪性能普遍不高[1,2],应用场合的连续工作时间很短,例如射程300 km的飞毛腿导弹飞行时间最多只有4 min[9],而射程4000 m的中口径反导炮弹只需工作4~6 s[10],工作在上述场合的MEMS陀螺仪已不适宜采样频率低、测试时间长的测试方法,而更需要研究它们的短时漂移特性。为此,本文在不同采样频率下对目前常用的几种MEMS陀螺仪的短时漂移进行了测试,分别在时域和频域下分析实验结果,发现石英系列MEMS陀螺仪与面硅和体硅MEMS陀螺仪不同,其漂移在高频采样时具有很强的周期性和规律性,为精确测试石英MEMS陀螺仪参数,提高其补偿精度和提高其惯组性能提供了又一思路。 1 MEMS陀螺仪漂移分析原理 1.1 陀螺漂移特点 陀螺仪漂移一般从宏观上分为确定部分和随机部分,确定部分是有规律的,寻找到规律性,并采用实时补偿法加以消除,如果补偿完善,可使有规律部分基本不影响陀螺仪使用精度。消除确定部分剩下的是随机部分,认为是噪声,实时补偿法对随机噪声无能为力,一般采用时间序列分析法对零漂数据进行建模,并应用卡尔曼滤波算法减小MEMS陀螺仪随机噪声的影响。因此,实际中需要尽可能多地标定其确定部分,减少随机部分。 收稿日期:2006-11-14;修回日期:2007-01-09 基金项目:国防基础研究重大项目(D2120060013),新世纪人才项目(NCET—04—0162) 作者简介:张海鹏(1977—),男,在读博士,讲师,研究方向为微小型惯性导航技术。E-mail:fdrk@https://www.360docs.net/doc/568850930.html,

光纤陀螺仪测试方法

光纤陀螺仪测试方法 1 范围 本标准规定了作为姿态控制系统、角位移测量系统和角速度测量系统中敏感器使用的单轴干涉性光纤陀螺仪(以下简称光纤陀螺仪)的性能测试方法。 2 规范性引用文件 下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注目期的引用文件,其随后所有的修改单(不包含勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。 GB 321-1980 优先数和优先系数 CB 998 低压电器基本实验方法 GJB 585A-1998 惯性技术术语 GJB 151 军用设备和分系统电磁发射和敏感度要求 3 术语、定义和符号 GJB 585A-1998确立的以及下列术语、定义和符号适用于本标准。

3.1 术语和定义 3.1.1 干涉型光纤陀螺仪 interferometric fiber optic gyroscope 仪萨格奈克(Sagnac)效应为基础,由光纤环圈构成的干涉仪型角速度测量装置。当绕其光纤环圈等效平面的垂线旋转时,在环圈中以相反方向传输出的两束相干光间产生相位差,其大小正比于该装置相对于惯性空间的旋转角速度,通过检测输出光干涉强度即反映出角速度的变化。 3.1.2 陀螺输入轴 input axis of gyro 垂直于光纤环圈等效平面的轴。当光纤陀螺仪绕该轴有旋转角速度输入时,产生光纤环圈相对于惯性空间输入角速度的输出信号。3.1.3 标度因数非线性度 scale factor nonlinearity 在输入角速度范围内,光纤陀螺仪输出量相对于最小二乘法拟合直线的最大偏差值与最大输出量之比。 3.1.4 零偏稳定性 bias stability 当输入角速度为零时,衡量光纤陀螺仪输出量围绕其均值的离散程度。以规定时间内输出量的标准偏差相应的等效输入角速度表示,也可称为零漂。

相关文档
最新文档