文档库 最新最全的文档下载
当前位置:文档库 › 加速度磁力计

加速度磁力计

加速度磁力计
加速度磁力计

LSM303DLHC应用单片机程序-----STM32F303

1.单片机端口配置初始化

以STM32F303程序为例

static void LSM303DLHC_LowLevel_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

I2C_InitTypeDef I2C_InitStructure;

/* Enable the I2C periph */

RCC_APB1PeriphClockCmd(LSM303DLHC_I2C_CLK, ENABLE);

/* Enable SCK and SDA GPIO clocks */

RCC_AHBPeriphClockCmd(LSM303DLHC_I2C_SCK_GPIO_CLK | LSM303DLHC_I2C_SDA_GPIO_CLK , ENABLE);

/* Enable INT1 GPIO clock */

RCC_AHBPeriphClockCmd(LSM303DLHC_I2C_INT1_GPIO_CLK, ENABLE);

/* Enable INT2 GPIO clock */

RCC_AHBPeriphClockCmd(LSM303DLHC_I2C_INT2_GPIO_CLK, ENABLE);

/* Enable DRDY clock */

RCC_AHBPeriphClockCmd(LSM303DLHC_DRDY_GPIO_CLK, ENABLE);

GPIO_PinAFConfig(LSM303DLHC_I2C_SCK_GPIO_PORT,

LSM303DLHC_I2C_SCK_SOURCE, LSM303DLHC_I2C_SCK_AF);

GPIO_PinAFConfig(LSM303DLHC_I2C_SDA_GPIO_PORT,

LSM303DLHC_I2C_SDA_SOURCE, LSM303DLHC_I2C_SDA_AF);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

/* I2C SCK pin configuration */

GPIO_InitStructure.GPIO_Pin = LSM303DLHC_I2C_SCK_PIN;

GPIO_Init(LSM303DLHC_I2C_SCK_GPIO_PORT, &GPIO_InitStructure);

/* I2C SDA pin configuration */

GPIO_InitStructure.GPIO_Pin = LSM303DLHC_I2C_SDA_PIN;

GPIO_Init(LSM303DLHC_I2C_SDA_GPIO_PORT, &GPIO_InitStructure);

/* Mems DRDY */

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

/* Mems DRDY pin configuration */

GPIO_InitStructure.GPIO_Pin = LSM303DLHC_DRDY_PIN;

GPIO_Init(LSM303DLHC_DRDY_GPIO_PORT, &GPIO_InitStructure);

/* Connect EXTI Line to Mems DRDY Pin */

SYSCFG_EXTILineConfig(LSM303DLHC_DRDY_EXTI_PORT_SOURCE,

LSM303DLHC_DRDY_EXTI_PIN_SOURCE);

EXTI_InitStructure.EXTI_Line = LSM303DLHC_DRDY_EXTI_LINE;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

/* I2C configuration -------------------------------------------------------*/

I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;

I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;

I2C_InitStructure.I2C_DigitalFilter = 0x00;

I2C_InitStructure.I2C_OwnAddress1 = 0x00;

I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;

I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;

I2C_InitStructure.I2C_Timing = 0x00902025;

/* Apply LSM303DLHC_I2C configuration after enabling it */

I2C_Init(LSM303DLHC_I2C, &I2C_InitStructure);

/* LSM303DLHC_I2C Peripheral Enable */

I2C_Cmd(LSM303DLHC_I2C, ENABLE);

/* Configure GPIO PINs to detect Interrupts */

GPIO_InitStructure.GPIO_Pin = LSM303DLHC_I2C_INT1_PIN;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(LSM303DLHC_I2C_INT1_GPIO_PORT, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = LSM303DLHC_I2C_INT2_PIN;

GPIO_Init(LSM303DLHC_I2C_INT2_GPIO_PORT, &GPIO_InitStructure);

}

2.LSM303DLHC芯片初始化MAG(磁力)寄存器函数

给地址寄存器写值及功能参见LSM303DLHC数据手册

void LSM303DLHC_MagInit(LSM303DLHCMag_InitTypeDef *LSM303DLHC_InitStruct) {

uint8_t cra_regm = 0x00, crb_regm = 0x00, mr_regm = 0x00;

/* Configure the low level interface ---------------------------------------*/

LSM303DLHC_InitStructure.Temperature_Sensor = LSM303DLHC_TEMPSENSOR_DISABLE; //配置值0x00

LSM303DLHC_InitStructure.MagOutput_DataRate =LSM303DLHC_ODR_30_HZ ;

//配置值0x14

LSM303DLHC_InitStructure.MagFull_Scale = LSM303DLHC_FS_8_1_GA; //配置值0xE0

LSM303DLHC_InitStructure.Working_Mode = LSM303DLHC_CONTINUOS_CONVERSION;

//配置值0x00

LSM303DLHC_LowLevel_Init();

/* Configure MEMS: temp and Data rate */

cra_regm |= (uint8_t) (LSM303DLHC_InitStruct->Temperature_Sensor | LSM303DLHC_InitStruct->MagOutput_DataRate);

/* Configure MEMS: full Scale */

crb_regm |= (uint8_t) (LSM303DLHC_InitStruct->MagFull_Scale);

/* Configure MEMS: working mode */

mr_regm |= (uint8_t) (LSM303DLHC_InitStruct->Working_Mode);

/* Write value to Mag MEMS CRA_REG regsister */

LSM303DLHC_Write(MAG_I2C_ADDRESS, LSM303DLHC_CRA_REG_M, &cra_regm); /* Write value to Mag MEMS CRB_REG regsister */

LSM303DLHC_Write(MAG_I2C_ADDRESS, LSM303DLHC_CRB_REG_M, &crb_regm); /* Write value to Mag MEMS MR_REG regsister */

LSM303DLHC_Write(MAG_I2C_ADDRESS, LSM303DLHC_MR_REG_M, &mr_regm);

}

3.LSM303DLHC芯片初始化ACC(加速度)寄存器函数

void LSM303DLHC_AccInit(LSM303DLHCAcc_InitTypeDef *LSM303DLHC_InitStruct) {

uint8_t ctrl1 = 0x00, ctrl4 = 0x00;

/* Configure the low level interface ---------------------------------------*/

LSM303DLHCAcc_InitStructure.Power_Mode = LSM303DLHC_NORMAL_MODE; //配置值0x00

LSM303DLHCAcc_InitStructure.AccOutput_DataRate = LSM303DLHC_ODR_50_HZ; //配置值0x40

LSM303DLHCAcc_InitStructure.Axes_Enable= LSM303DLHC_AXES_ENABLE; //配置值0x07

LSM303DLHCAcc_InitStructure.AccFull_Scale = LSM303DLHC_FULLSCALE_2G; //配置值0x00

LSM303DLHCAcc_InitStructure.BlockData_Update = LSM303DLHC_BlockUpdate_Continous; //配置值0x00

LSM303DLHCAcc_InitStructure.Endianness=LSM303DLHC_BLE_LSB; //配置值0x00

LSM303DLHCAcc_InitStructure.High_Resolution=LSM303DLHC_HR_ENABLE; //配置值0x08

LSM303DLHC_LowLevel_Init();

/* Configure MEMS: data rate, power mode, full scale and axes */

ctrl1 |= (uint8_t) (LSM303DLHC_InitStruct->Power_Mode | LSM303DLHC_InitStruct->AccOutput_DataRate | \

LSM303DLHC_InitStruct->Axes_Enable);

ctrl4 |= (uint8_t) (LSM303DLHC_InitStruct->BlockData_Update | LSM303DLHC_InitStruct->Endianness | \

LSM303DLHC_InitStruct->AccFull_Scale|LSM303DLHC_InitStruct->High_Resolution);

/* Write value to ACC MEMS CTRL_REG1 regsister */

LSM303DLHC_Write(ACC_I2C_ADDRESS, LSM303DLHC_CTRL_REG1_A, &ctrl1);

/* Write value to ACC MEMS CTRL_REG4 regsister */

LSM303DLHC_Write(ACC_I2C_ADDRESS, LSM303DLHC_CTRL_REG4_A, &ctrl4);

}

/* Fill the accelerometer LPF structure */

LSM303DLHCFilter_InitStructure.HighPassFilter_Mode_Selection

=LSM303DLHC_HPM_NORMAL_MODE; //配置值0x80

LSM303DLHCFilter_InitStructure.HighPassFilter_CutOff_Frequency = LSM303DLHC_HPFCF_16; //配置值0x10

LSM303DLHCFilter_InitStructure.HighPassFilter_AOI1 = LSM303DLHC_HPF_AOI1_DISABLE; //配置值0x00

LSM303DLHCFilter_InitStructure.HighPassFilter_AOI2 = LSM303DLHC_HPF_AOI2_DISABLE; //配置值0x00

/* Configure the accelerometer LPF main parameters */

LSM303DLHC_AccFilterConfig(&LSM303DLHCFilter_InitStructure);

4.I2C通信读、写LSM303DLHC芯片寄存器封装函数

I2C读取寄存器封装函数

uint16_t LSM303DLHC_Read(uint8_t DeviceAddr, uint8_t RegAddr, uint8_t* pBuffer, uint16_t NumByteToRead)

{

/* Test on BUSY Flag */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_BUSY) != RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Configure slave address, nbytes, reload, end mode and start or stop generation */

I2C_TransferHandling(LSM303DLHC_I2C, DeviceAddr, 1, I2C_SoftEnd_Mode, I2C_Generate_Start_Write);

/* Wait until TXIS flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_TXIS) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

if(NumByteToRead>1)

RegAddr |= 0x80;

/* Send Register address */

I2C_SendData(LSM303DLHC_I2C, (uint8_t)RegAddr);

/* Wait until TC flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_TC) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Configure slave address, nbytes, reload, end mode and start or stop generation */

I2C_TransferHandling(LSM303DLHC_I2C, DeviceAddr, NumByteToRead, I2C_AutoEnd_Mode, I2C_Generate_Start_Read);

/* Wait until all data are received */

while (NumByteToRead)

{

/* Wait until RXNE flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_RXNE) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Read data from RXDR */

*pBuffer = I2C_ReceiveData(LSM303DLHC_I2C);

/* Point to the next location where the byte read will be saved */

pBuffer++;

/* Decrement the read bytes counter */

NumByteToRead--;

}

/* Wait until STOPF flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_STOPF) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Clear STOPF flag */

I2C_ClearFlag(LSM303DLHC_I2C, I2C_ICR_STOPCF);

/* If all operations OK */

return LSM303DLHC_OK;

}

I2C写寄存器封装函数

uint16_t LSM303DLHC_Write(uint8_t DeviceAddr, uint8_t RegAddr, uint8_t* pBuffer)

{

/* Test on BUSY Flag */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_BUSY) != RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Configure slave address, nbytes, reload, end mode and start or stop generation */

I2C_TransferHandling(LSM303DLHC_I2C, DeviceAddr, 1, I2C_Reload_Mode, I2C_Generate_Start_Write);

/* Wait until TXIS flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_TXIS) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Send Register address */

I2C_SendData(LSM303DLHC_I2C, (uint8_t) RegAddr);

/* Wait until TCR flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_TCR) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Configure slave address, nbytes, reload, end mode and start or stop generation */

I2C_TransferHandling(LSM303DLHC_I2C, DeviceAddr, 1, I2C_AutoEnd_Mode, I2C_No_StartStop);

/* Wait until TXIS flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_TXIS) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Write data to TXDR */

I2C_SendData(LSM303DLHC_I2C, *pBuffer);

/* Wait until STOPF flag is set */

LSM303DLHC_Timeout = LSM303DLHC_LONG_TIMEOUT;

while(I2C_GetFlagStatus(LSM303DLHC_I2C, I2C_ISR_STOPF) == RESET)

{

if((LSM303DLHC_Timeout--) == 0) return LSM303DLHC_TIMEOUT_UserCallback();

}

/* Clear STOPF flag */

I2C_ClearFlag(LSM303DLHC_I2C, I2C_ICR_STOPCF);

return LSM303DLHC_OK;

}

5.从LSM303DLHC取出3轴磁力数值(Mag),并进行单位处理。

void Demo_CompassReadMag (float* pfData)

{

static uint8_t buffer[6] = {0};

uint8_t CTRLB = 0;

uint16_t Magn_Sensitivity_XY = 0, Magn_Sensitivity_Z = 0;

uint8_t i =0;

LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_CRB_REG_M, &CTRLB, 1);

LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_OUT_X_H_M, buffer, 1); LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_OUT_X_L_M, buffer+1, 1); LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_OUT_Y_H_M, buffer+2, 1); LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_OUT_Y_L_M, buffer+3, 1); LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_OUT_Z_H_M, buffer+4, 1); LSM303DLHC_Read(MAG_I2C_ADDRESS, LSM303DLHC_OUT_Z_L_M, buffer+5, 1); /* Switch the sensitivity set in the CRTLB*/

switch(CTRLB & 0xE0)

{

case LSM303DLHC_FS_1_3_GA:

/*!< magnetometer X Y axes sensitivity for 1.3 Ga full scale [LSB/Ga] */

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_1_3Ga; //数值1100

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_1_3Ga; //数值980

break;

case LSM303DLHC_FS_1_9_GA:

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_1_9Ga;//数值855

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_1_9Ga; //数值760

break;

case LSM303DLHC_FS_2_5_GA:

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_2_5Ga; //数值670

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_2_5Ga; //数值600

break;

case LSM303DLHC_FS_4_0_GA:

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_4Ga; //数值450

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_4Ga; //数值400

break;

case LSM303DLHC_FS_4_7_GA:

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_4_7Ga; //数值400

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_4_7Ga;//数值355

break;

case LSM303DLHC_FS_5_6_GA:

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_5_6Ga;//数值330

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_5_6Ga;//数值295

break;

case LSM303DLHC_FS_8_1_GA:

Magn_Sensitivity_XY = LSM303DLHC_M_SENSITIVITY_XY_8_1Ga;//数值230

Magn_Sensitivity_Z = LSM303DLHC_M_SENSITIVITY_Z_8_1Ga;//数值205

break;

}

/* 将数据从寄存器读出后*1000转换为mg然后除以量程*/

for(i=0; i<2; i++)

{

pfData[i]=(float)((int16_t)(((uint16_t)buffer[2*i] << 8) + buffer[2*i+1])*1000)/Magn_Sensitivity_XY;

}

pfData[2]=(float)((int16_t)(((uint16_t)buffer[4] << 8) + buffer[5])*1000)/Magn_Sensitivity_Z; }

6.从LSM303DLHC取出3轴加速度数值,并进行处理。

void Demo_CompassReadAcc(float* pfData)

{

int16_t pnRawData[3];

uint8_t ctrlx[2];

uint8_t buffer[6], cDivider;

uint8_t i = 0;

float LSM_Acc_Sensitivity = LSM_Acc_Sensitivity_2g;

/* Read the register content */

LSM303DLHC_Read(ACC_I2C_ADDRESS, LSM303DLHC_CTRL_REG4_A, ctrlx,2); LSM303DLHC_Read(ACC_I2C_ADDRESS, LSM303DLHC_OUT_X_L_A, buffer, 6);

if(ctrlx[1]&0x40)

cDivider=64;//大端

else

cDivider=16; //小端

/* check in the control register4 the data alignment*/

/*从寄存器读出的数据按照大小端格式进行数据转换*/

if(!(ctrlx[0] & 0x40) || (ctrlx[1] & 0x40)) /* Little Endian Mode or FIFO mode */

{

for(i=0; i<3; i++)

{

pnRawData[i]=((int16_t)((uint16_t)buffer[2*i+1] << 8) + buffer[2*i])/cDivider;

}

}

else /* Big Endian Mode */

{

for(i=0; i<3; i++)

pnRawData[i]=((int16_t)((uint16_t)buffer[2*i] << 8) + buffer[2*i+1])/cDivider;

}

/* Read the register content */

LSM303DLHC_Read(ACC_I2C_ADDRESS, LSM303DLHC_CTRL_REG4_A, ctrlx,2);

if(ctrlx[1]&0x40)

{

/* FIFO mode */

LSM_Acc_Sensitivity = 0.25;

}

else

{

/* normal mode */

/* switch the sensitivity value set in the CRTL4*/

switch(ctrlx[0] & 0x30)

{

case LSM303DLHC_FULLSCALE_2G:

LSM_Acc_Sensitivity = LSM_Acc_Sensitivity_2g; //1.0f

break;

case LSM303DLHC_FULLSCALE_4G:

LSM_Acc_Sensitivity = LSM_Acc_Sensitivity_4g; //0.5f

break;

case LSM303DLHC_FULLSCALE_8G:

LSM_Acc_Sensitivity = LSM_Acc_Sensitivity_8g; //0.25f

break;

case LSM303DLHC_FULLSCALE_16G:

LSM_Acc_Sensitivity = LSM_Acc_Sensitivity_16g; //0.0834f

break;

}

}

/* Obtain the mg value for the three axis */

/* 转换为格式的数据除以量程*/

for(i=0; i<3; i++)

{

pfData[i]=(float)pnRawData[i]/LSM_Acc_Sensitivity;

}

}

for(i=0;i<3;i++)

AccBuffer[i] /= 100.0f;

7.LSM303DLHC加速度值计算角度公式函数

X轴旋转表示Pitch----俯仰角

Y轴旋转表示Yaw----航向角

Z轴旋转表示Roll

1. 计算角加速度的矢量模长|A|=根号下(X*X+Y*Y+Z*Z)

/* 加速度的矢量模长|A|=根号下(X*X+Y*Y+Z*Z)*/

fNormAcc = sqrt((AccBuffer[0]*AccBuffer[0])+(AccBuffer[1]*AccBuffer[1])+(AccBuffer[2]*AccBuffer[2]));

2. 计算Roll (Z轴旋转)横滚角Pitch(X轴)正弦、余弦值俯仰角

/* 正弦sinRoll=-Y/|A| */

fSinRoll = -AccBuffer[1]/fNormAcc;

/* 余弦CosRoll=根号下(1-sinRoll*sinRoll)*/

fCosRoll = sqrt(1.0-(fSinRoll * fSinRoll));

/* 正弦sinPitch=X/|A| */

fSinPitch = AccBuffer[0]/fNormAcc;

/* 余弦CosPitch=根号下(1-sinPitch*sinPitch)*/

fCosPitch = sqrt(1.0-(fSinPitch * fSinPitch));

8.根据加速度正弦余弦值来判断角度

RollAng -----横滚角(绕Z轴转)

PitchAng-----俯仰角(绕X轴转)

if ( fSinRoll >0)

{

if (fCosRoll>0)

{

RollAng = acos(fCosRoll)*180/PI;

}

else

{

RollAng = acos(fCosRoll)*180/PI + 180;

}

}

else

{

if (fCosRoll>0)

{

RollAng = acos(fCosRoll)*180/PI + 360;

}

else

{

RollAng = acos(fCosRoll)*180/PI + 180;

}

}

if ( fSinPitch >0)

{

if (fCosPitch>0)

{

PitchAng = acos(fCosPitch)*180/PI;

}

else

{

PitchAng = acos(fCosPitch)*180/PI + 180;

}

}

else

{

if (fCosPitch>0)

{

PitchAng = acos(fCosPitch)*180/PI + 360;

}

else

{

PitchAng = acos(fCosPitch)*180/PI + 180;

}

}

if (RollAng >=360)

{

RollAng = RollAng - 360;

}

if (PitchAng >=360)

{

PitchAng = PitchAng - 360;

}

if (RollAng >=360)

{

RollAng = RollAng - 360;

}

if (PitchAng >=360)

{

PitchAng = PitchAng - 360;

}

9.航向角计算

航向角是指移动物体前进方向和正北方向之间的夹角。以顺时针方向为正角度。HeadingValue---航向角(范围:0~360度)

fTiltedX = MagBuffer[0]*fCosPitch+MagBuffer[2]*fSinPitch;

fTiltedY = MagBuffer[0]*fSinRoll*fSinPitch+MagBuffer[1]*fCosRoll-MagBuffer[1]*fSinRoll*fCosPitch;

航向角:Y轴与X轴的正切(atan2f)

HeadingValue = (float) ((atan2f((float)fTiltedY,(float)fTiltedX))*180)/PI;

if (HeadingValue < 0)

{

HeadingValue = HeadingValue + 360;

}

在平面坐标系中载体的方向定义与X、Y、Z三轴是对应关系如下:

X轴----E(东),Y轴----N(北),Z轴-----天

10.

基于压电加速度计速度测量信号调理电路设计要点

课程设计报告 题目基于单片机的压电加速度传感器 低频信号采集系统的设计 2014-2015 第二学期 专业班级2012级电气5班 姓名赵倩 学号201295014196 指导教师马鸣 教学单位电子电气工程学院 2015年7月6日

课程设计任务书 1.设计目的: ①掌握电子系统的一般设计方法和设计流程;并完成加速器低频信号的理论设计。 ②掌握应用电路的multisim等软件对所设计的电路进行仿真,通过仿真结果验 证设计的正确性,完成电路设计。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):压电式加速度传感器作为一种微型传感器,其输出信号比较微弱,通常为几十个毫伏或几百个微伏。所以有必要对其输出电压进行信号调理。主要包括电源模块、放大模块、滤波模块等组成。 3.设计工作任务及工作量的要求: (1)查阅相关资料,完成系统总体方案设计; (2)完成系统硬件设计; (3)对所设计的电路进行仿真; (4)按照要求撰写设计说明书;

一、压电式加速度传感器的概要 (4) 二、信号采集系统的总设计方案 (5) 三、信号采集系统分析 (6) 1、电荷转换部分: (6) 2、适调放大部分 (6) 3、低通滤波部分: (7) 4、输出放大部分 (7) 5、积分器部分: (8) 四、单片机软件设计 (8) 五、Multisim仿真分析 (10) 1.仿真电路图 (10) 2.仿真波形及分析 (11) 六、误差分析 (11) 1、连接电缆的固定 (11) 2、接地点选择 (12) 3、湿度的影响 (12) 4、环境温度的影响 (12) 七、改进措施 (12) 六、心得体会 (12) 七、参考文献 (13)

压电式传感器测量加速度

压 电 式 加 速 度 测 试 系 统 姓名:张书峰 学号:201003140125 学院:机电学院 班级:机自101 指导教师:王玮

一设计概论 压电传感器是一种可逆性传感器,既可以将机械能转换为电能,又可以将机械能转换为电能。它是利用某些物质(如石英、钛酸钡或压电陶瓷、高分子材料等)的压电效应来工作的。在外力作用下,在电介质表面产生电荷,从而实现非电量测量的目的。因此是一种典型的自发电式传感器。压电传感器是力敏感元件,它可以测量最终能变换为力的那些非电物理量,例如,动态力、动态压力、振动加速度等 现有测试系统的各个组成部分常常以信息流的过程来划分。一般可以分为:信息的获得,信息的转换,信息的显示、信息的处理。作为一个完整的非电量电测系统,也包括了信息的获得、转换、显示和处理等几个部分。因为它首先要获得被测量的信息,把它变换成电量,然后通过信息的转换,把获得的信息变换、放大,再用指示仪或记录仪将信息显示出来,有的还需要把信息加以处理。因此非电量电测系统,具体来说,一般包括传感器(信息的获得)、测量电路(信息的转换)、放大器、指示器、记录仪(信息的显示)等几部分有时还有数据处理仪器(信息的处理)。它们间的 关系可 用右框 图来表 示。 其中传感器是一个把被测的非电物理变换成电量的装置,因此是一种获得信息的手段,它在非电量电测系统中占有重要的位 置。它获得信息 的正确与否,直 接影响到整个 测量系统的测 量效果。测量电 路的作用是把 传感器的输出

变量变成易于处理的电压或电流信号,使信号能在指示仪上显示或在记录仪中记录。测量电路的种类由传感器的类型而定。压电加速度传感器常用的测量电路是电荷放大器。常用的压电加速度传感器的动态测量系统如图1.2 二整体设计方案 1、测量的示意图 2、设计的原理 压电式加速度传感器属于惯性式传感器,工作原理是以某些物质的压电效应为基础,在加速度计受振时,加在压电元件上的力也随之变化。当被测振动频率远低于加速度计的固有频率时,则力的变化与被测加速度成正比,可以把被测的非电物理量加速度转化为电量。由于压电式传感器的输出电信号是微弱的电荷,而且传感器本身有很大内阻,故输出能量甚微,这给后接电路带来一定困难。为此,通常器信号选用电荷放大器作为电信号的测量电路。 3、方框图

加速度传感器原理与应用简介

加速度传感器原理与应用简介 1、什么是加速度传感器 加速度传感器是一种能够测量加速力的电子设备。加速力就是当物体在加速过程中作用在物体上的力,就好比地球引力,也就是重力。加速力可以是个常量,比如g,也可以是变量。 加速度计有两种:一种是角加速度计,是由陀螺仪(角速度传感器)的改进的。另一种就是线加速度计。 2、加速度传感器一般用在哪里 通过测量由于重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。通过分析动态加速度,你可以分析出设备移动的方式。但是刚开始的时候,你会发现光测量倾角和加速度好像不是很有用。但是,现在工程师们已经想出了很多方法获得更多的有用的信息。 加速度传感器可以帮助你的机器人了解它现在身处的环境。是在爬山?还是在走下坡,摔倒了没有?或者对于飞行类的机器人来说,对于控制姿态也是至关重要的。更要确保的是,你的机器人没有带着炸弹自己前往人群密集处。一个好的程序员能够使用加速度传感器来回答所有上述问题。加速度传感器甚至可以用来分析发动机的振动。 目前最新IBM Thinkpad手提电脑里就内置了加速度传感器,能够动态的监测出笔记本在使用中的振动,并根据这些振动数据,系统会智能的选择关闭硬盘还是让其继续运行,这样可以最大程度的保护由于振动,比如颠簸的工作环境,或者不小心摔了电脑做造成的硬盘损害,最大程度的保护里面的数据。另外一个用处就是目前用的数码相机和摄像机里,也有加速度传感器,用来检测拍摄时候的手部的振动,并根据这些振动,自动调节相机的聚焦。 概括起来,加速度传感器可应用在控制,手柄振动和摇晃,仪器仪表,汽车制动启动检测,地震检测,报警系统,玩具,结构物、环境监视,工程测振、地质勘探、铁路、桥梁、大坝的振动测试与分析;鼠标,高层建筑结构动态特性和安全保卫振动侦察上。 3、加速度传感器是如何工作的 线加速度计的原理是惯性原理,也就是力的平衡,A(加速度)=F(惯性力)/M(质量)我们只需要测量F就可以了。怎么测量F?用电磁力去平衡这个力就可以了。就可以得到F 对应于电流的关系。只需要用实验去标定这个比例系数就行了。当然中间的信号传输、放大、滤波就是电路的事了。 现代科技要求加速度传感器廉价、性能优越、易于大批量生产。在诸如军工、空间系统、科学测量等领域,需要使用体积小、重量轻、性能稳定的加速度传感器。以传统加工方法制造的加速度传感器难以全面满足这些要求。于是应用新兴的微机械加工技术制作的微加速度传感器应运而生。这种传感器体积小、重量轻、功耗小、启动快、成本低、可靠性高、易于实现数字化和智能化。而且,由于微机械结构制作精确、重复性好、易于集成化、适于大批量生产,它的性能价格比很高。可以预见在不久的将来,它将在加速度传感器市场中占主导地位。 微加速度传感器有压阻式、压电式、电容式等形式。 ·压电式 压电式传感器是利用弹簧质量系统原理。敏感芯体质量受振动加速度作用后产生一个与加速度成正比的力,压电材料受此力作用后沿其表面形成与这一力成正比的电荷信号。压电式加速度传感器具有动态范围大、频率范围宽、坚固耐用、受外界干扰小以及压电材料受力自产生电荷信号不需要任何外界电源等特点,是被最为广泛使用的振动测量传感器。虽然压

速度、加速度的测定和牛顿运动定律的验证

中国石油大学(华东)现代远程教育 实验报告 课程名称:大学物理() 实验名 称: 速度、加速度的测定和牛顿运动定律的验证 实验形式:在线模拟+现场实践 提交形式:提交书面实验报告 学生姓学号: 年级专业层次:高起专 学习中心:________ 提交时间:2016 年6 月15 日

、实验目的 1.了解气垫导轨的构造和性能,熟悉气垫导轨的调节和使用方法。 2?了解光电计时系统的基本工作原理,学会用光电计时系统测量短暂时间的方法。 3.掌握在气垫导轨上测定速度、加速度的原理和方法。 4?从实验上验证F=ma的关系式,加深对牛顿第二定律的理解。 5?掌握验证物理规律的基本实验方法。 二、实验原理 1速度的测量 一个作直线运动的物体,如果在t~t+ △时间内通过的位移为\x x~x+ Ax ,则该物体在 1F =—— At时间内的平均速度为亠,△越小,平均速度就越接近于t时刻的实际速度。当 A t T 时,平均速度的极限值就是t时刻(或x位置)的瞬时速度 ir = lim ------------------——— (1) 实际测量中,计时装置不可能记下 A t T0勺时间来,因而直接用式(1)测量某点的速 度就难以实现。但在一定误差范围内,只要取很小的位移Ax测量对应时间间隔At就可 以用平均速度订近似代替t时刻到达x点的瞬时速度r。本实验中取Ax为定值(约10mm ), 用光电计时系统测出通过Ax所需的极短时间A,较好地解决了瞬时速度的测量问题。 2.加速度的测量 在气垫导轨上相距一定距离S的两个位置处各放置一个光电门,分别测出滑块经过这两 个位置时的速度v1和v2。对于匀加速直线运动问题,通过加速度、速度、位移及运动时间之间的关系,就可以实现加速度a的测量。 (1)由■- "-+■-测量加速度 在气垫导轨上滑块运动经过相隔一定距离的两个光电门时的速度分别为v1和v2,经过 两个光电门之间的时间为t21,则加速度a为 (2) (2)根据式(2)即可计算出滑块的加速度。 (3)由厂测量加速度 设v1和v2为滑块经过两个光电门的速度,S是两个光电门之间距离,则加速度a为 根据式(3)也可以计算出作匀加速直线运动滑块的加速度。

加速度测试系统设计

机械工程测试技术基础

目录 1.简介 2.测试方案设计 3.测试系统组成 3.1压电加速度传感器 3.1.1组成 3.1.2工作原理 3.1.3灵敏度 3.2电荷放大器 3.2.1测试电路图 3.2.2数据计算处理 3.3动态信号分析仪 4.实验测试流程 5.说明总结 6.参考文献

压电加速度测试系统 1.简介 现代工业和自动化生产过程中,非电物理量的测量和控制技术会涉及大量的动态测试问题。所谓动态测试是指量的瞬时值以及它随时间而变化的值的确定,即被测量为变量的连续测量过程。它以动态信号为特征,研究了测试系统的动态特性问题,而动态测试中振动和冲击的精确测量尤其重要。振动与冲击测量的核心是传感器,常用压电加速度传感器来获取冲击和振动信号。 压电式传感器是基于某些介质材料的压电效应,当材料受力作用而变形时,其表面会有电荷产生,从而实现非电量测量。压电式传感器具有体积小,质量轻,工作频带宽,结构简单,成本低,性能稳定等特点,因此在各种动态力、机械冲击与振动的测量以及声学、医学、力学、宇航等方面都得到了非常广泛的应用。 所以在此设计了一种压电式加速度测试系统,能够满足测试0—3G的低频率加速度测试。 2.测试方案设计 系统组成:压电加速度传感器、电荷放大器、动态信号分析仪 被测对象的振动加速度信号经传感器拾振,由传感器电缆将加速度信号送入该系统电荷放大器,电荷放大器将信号转换成电压信号并放大,通过数据采集测试仪采样,便实现对信号的采集。

最后在PC 端对实验数据进行处理并显示。 如下图所示 3.测试系统组成 3.1压电加速度传感器 3.1.1组成 由质量块、压电元件、支座以及引线组成 如下图所示 3.1.2工作原理 压电加速度传感器采用具有压电效应的压电材料作基本元件,是以压电材料受力后在其表面产生电荷的压电效应为转换原理的传感器。这些压电材料,当沿着一定方向对其施力而使它变形时,内部就产生极化现象 ,同时在它的两个相对的表面上便 产生符号相反的电荷;当外力去掉后,又重新恢复不带电的状质压电 元件支座输出引线

加速度测量仪的设计

<<综合课程设计>> 课程设计报告 题目:加速度测量仪的设计专业:电子信息工程 年级:2010级 学号: 学生姓名: 联系电话: 指导老师: 完成日期:2013年 12月10日

摘要 利用ADXL345模块、STC89C52RC、LCD1602、12MHZ晶振等元件,制作加速度测量仪,实现能够测量静态下的重力加速度值和物体的倾角。经测试,系统达到课程设计的基本要求,具有易于操作,制作成本低的优点。 关键词:ADXL345模块;STC89C52RC;LCD1602;加速度测量仪;重力加速度;倾角

ABSTRACT Using the ADXL345 module, STC89C52RC, LCD1602, 12MHZ crystal element, making acceleration measurement instrument, and can dip angle acceleration of gravity measuring static values and objects. After testing, the system to meet the basic requirements of curriculum design, has the advantages of easy operation, advantages of low production cost. Key Words:the ADXL345 module; STC89C52RC; LCD1602; accelerometer; gravity acceleration; angle

加速度计校准数据处理系统设计

龙源期刊网 https://www.wendangku.net/doc/ff19095794.html, 加速度计校准数据处理系统设计 作者:刘莹解启瞻魏玫 来源:《科技创新导报》2017年第33期 摘要:为满足大批量加速度计校准数据处理的高可靠性、高准确度和高效率的需求,基 于虚拟仪器技术和计算机技术,依据加速度计检定规程,设计了一种加速度计校准数据处理系统。测试结果表明:系统人机交互界面友好,能够快速处理大批量加速度计校准数据,大大节省了加速度计校准数据处理、证书出具和原始记录出具的人力和时间资源,实用性强。 关键词:加速度计校准数据处理虚拟仪器 中图分类号:TP2 文献标识码:A 文章编号:1674-098X(2017)11(c)-0007-03 Abstract:To meet the high reliability, high accuracy and high efficiency need of calibration data processing for mass accelerometer, based on VI and computer technology, according to the V.R of accelerometer calibration, a kind of calibration data processing system for mass accelerometer has been developed. Testing results show that, the system has a friendly man-machine surface, and can quickly process large quantities of accelerometer calibration data. The system has very strong practicability. Key Words:Accelerometer; Calibration; Data processing; VI 加速度计通常与适调仪配用,用于振动与冲击加速度的测量[1]。在直升机领域内,加速 度计常被用做监控发动机故障和结构损伤等的感知设备,在航空航天、汽车电子、地质勘探等领域内,加速度计的应用也越来越广泛。通常,为保证加速度计能够获得准确的加速度测试数据,需周期性对其进行校准,维持加速度计的准确度,避免检测时误判[2]。但随着加速度计 的应用越来越广泛,加速度计的校准工作量也越来越大,对于计量工作者而言,经常一次就需要校准几十甚至是上百枚加速度计,校准完成后将会得到大量的校准数据,还需要进一步对这些校准数据进行数据处理和分析,根据数据分析结果判定所校加速度计是否合格,并出具原始记录和校准证书。而如果用传统的数据处理方法对每一个加速度计的校准数据进行分析处理,并手动调整数据格式使其满足原始记录和校准证书的要求是非常困难的,且单个加速度计的数据处理时间长,数据处理效率低,无法满足大批量加速度计的校准需求。 为此,本文根据加速度计的校准数据处理原理,针对加速度计的多参数、大批量校准的特点,以及对高可靠、高性能、高效率提出的要求,基于虚拟仪器技术和计算机技术,依据加速度计检定规程,构建一种高自动化的加速度计校准数据处理系统。 1 加速度计校准数据处理基本原理

三轴加速度传感器的步态识别系统==

三轴加速度传感器的步态识别系统 近年来随着微机电系统的发展,加速度传感器已经广泛应用于各个领域并拥有良好的发展前景。例如在智能家居、手势识别、步态识别、跌倒检测等领域,都可以通过加速度传感器实时获得行为数据从而判断出用户的行为情况。 目前许多智能手机都内置多种传感器,通过预装软件就能够获得较精确的原始数据。本文提出一种基于三轴加速度传感器,用智能手机采集用户数据,对数据进行处理及特征提取获得特征矩阵并分类识别的方法,有效地识别了站立、走、跑、跳四种动作。 人体动作识别处理过程主要包含数据采集、预处理、特征提取和分类器识别数据采集数据采集和发送模块安装在用户端,另一个数据接收模块接在电脑终端上。 由于我们制作的采集模块很轻、很小,所以方便佩戴。当用户运动时,三轴加速度传感器会将据采集并通过无线方式发送给电脑接收模块,再通过电脑上的软件部分对采集到的数据进行分析处理,将结果输出,显示用户的实时状态。 本文使用的加速度传感器数据来自于共计60个样本。传感器统一佩戴于腰间。本文选取了其中一位采集者的数据用于主要分析研究,其余两位采集者的数据则用于验证由第一位采集者数据研究所得的结论,这样的做法既减小了数据处理的繁杂又能保证最终结果的准确性。预处理应用程序设置的采集时间间隔为0.1s,对每一个动作的采集时间为25s。考虑到用户在采集数据一开始与将要结束时的动作

不平稳可能对数据带来较大影响,前2s2s采集的数据将被舍弃不予分析。因原始加速度信号一般都含有噪声,为了提高数据分析结果的准确性,通常在原始加速度信号进行特征提取前对其进行去躁、归一化、加窗等预处理。通过加窗处理,不仅规整了加速度信号的长度,而且方便研究人员按照需要选择适宜的信号长度,这样有利于后续的特征提取。 许多研究人员使所示。研究人员采集的加速度传感器信号由于采集者的动作力度不同造成加速度信号的幅度差异较大,这会对之后的分类识别造成负面影响,归一化技术可以调整加速度信号的幅度,按照一定的归一化算法可以使加速度信号的幅度限定在某一数值范围内,文献[2]在识别跑、站立、跳和走路这四种动作时对四种动作的加速度信号进行了归一化;文献[3]在进行手势识别时对手势动作的加速度信号进行了归一化处理。特征提取特征提取和选择模块的作用在于从加速度信号中提取出那些表征人体行为的特征向量,处于预处理模块和分类器模块之间,是人体行为识别过程中的一个重要环节,直接影响分类识别的效果。特征的提取方法具有多样性,对于不同的识别目的,研究人员会提取不同的特征,例如为了识别分类站立和跑步,研究人员通常会选取方差和标准差这类能够反映加速度信号变化大小的特征,而为了识别分类走路和跑步,研究人员通常会选取能量和均值这类能够反映加速度信号大小的特征。使用不同的特征表征行为会对分类识别效果产生不同的影响,因此寻找更加有效的特征一直是研宄人员关注的一个课题。通过查阅大量的文献,大致可以把加速度信

压电加速度测量系统的设计

收稿日期:2007 10 17 作者简介:邢丽娟(1973 ),女,内蒙古包头市人,讲师,硕士,主要从事智能仪器及计算机过程控制的研究与应用。 文章编号:1004 2474(2009)02 0215 03压电加速度测量系统的设计 邢丽娟,杨世忠 (青岛理工大学自动化工程学院,山东青岛266520) 摘 要:现代工业和自动化生产过程中,动态测试中振动和冲击的精确测量很重要。常用压电加速度传感器 来获取冲击和振动信号。在研究压电加速度传感器的基础上,分析了测量的工作原理,提出加速度测量的设计方法;加入温敏元件,进行温度补偿,使其应用温度范围扩大。给出适合该类传感器的信号检测电路和加速度测量系统组成。此设计方法具有较高的准确性和应用推广价值,并具有结构简单,成本低,性能稳定等优点。 关键词:压电加速度传感器;测量;设计中图分类号:T P212 文献标识码:A Design for Piezoelectric Accelerometer Measurement System XING Li juan,YANG Shi zhong (College of Automation En gineering,Qingdao T echnological University,Qingdao 266520,Chin a) Abstract:In modern industry and automatic pro ductio n,the accurate measurement of the v ibration and str ike in test ing dynamically seems especially import ant.Fo r the acquisit ion of signal,the mo st co mmon used sensor is piezoe lect ric accelero meter.On the basis o f researching piezo electric acceler ometer senso r,this paper analyzed the w o rk pr inciple o f measurement,pro po sed a kind o f acceler ometer measur ement desig n method.A dding temperature sensor to com pensat e t emperat ur e,the applied temperature rang could be w ider.Detectio n cir cuit suiting this kind of sensor and the sy stem co mpo sitio n o f acceler ometer measurement was also g iv en in the paper.T his desig n metho d w as ac curate w ith hig h v alue for application and ext ensio n.A lso the st ruct ur e w as simple,the pr ice was lo wer and the per fo rmance w as stable. Key words:piezoelect ric accelero meter senso r;measurement;design 现代工业和自动化生产过程中,非电物理量的测量和控制技术会涉及大量的动态测试问题。所谓动态测试是指量的瞬时值以及它随时间而变化的值的确定,即被测量为变量的连续测量过程。它以动态信号为特征,研究了测试系统的动态特性问题,而动态测试中振动和冲击的精确测量尤其重要。振动与冲击测量的核心是传感器,常用压电加速度传感器来获取冲击和振动信号。压电式传感器是基于某些介质材料的压电效应[1],当材料受力作用而变形时,其表面会有电荷产生,从而实现非电量测量。压电式传感器具有体积小,质量轻,工作频带宽等特点,因此在各种动态力、机械冲击与振动的测量以及声学、医学、力学、宇航等方面都得到了非常广泛的应用。 1 测量原理 压电加速度传感器采用具有压电效应的压电材料作基本元件,是以压电材料受力后在其表面产生电荷的压电效应为转换原理的传感器。这些压电材料,当沿着一定方向对其施力而使它变形时,内部就 产生极化现象,同时在它的两个相对的表面上便产生符号相反的电荷;当外力去掉后,又重新恢复不带电的状态;当作用力的方向改变时,电荷的极性也随 着改变。 压电加速度传感器的原理如图1所示。实际测量时,将图中的支座与待测物刚性地固定在一起。当待测物运动时,支座与待测物以同一加速度运动,压电元件受到质量块与加速度相反方向的惯性力的作用,在晶体的两个表面上产生交变电荷(电压)。当振动频率远低于传感器的固有频率时,传感器的 图1 压电加速度传感器原理图 第31卷第2期压 电 与 声 光 Vo l.31No.22009年4月 PI EZO EL ECT ECT RI CS &ACO U ST OO PT ICS Apr.2009

抗高过载加速度计特性试验系统的软件设计

毕业设计说明书 抗高过载加速度计 特性实验系统的软件设计 作者: 学号: 学院(系): 专业: 指导教师: 评阅人: 20**年6月

中北大学 毕业设计(论文)任务书 学院(系): 专业: 学生姓名:学号: 设计(论文)题目:抗高过载加速度计特性试验系统软件 研究 起迄日期: 20**年3月1日~ 20**年6月15日 设计(论文)地点: 指导教师: 专业负责人: 发任务书日期: 20** 年3月1 日

毕业设计(论文)任务书 1.毕业设计(论文)课题的任务和要求: 1、学习相关原理知识; 2、实验方案确定及实验 3、查询10篇以上文献,其中至少1-2篇外文资料; 2.毕业设计(论文)课题的具体工作内容(包括原始数据、技术要求、工作要求等): 1、学习相关原理知识; 2、实验方案确定及实验 3、完成论文撰写; 4、外文资料翻译。

毕业设计(论文)任务书 3.对毕业设计(论文)课题成果的要求〔包括毕业设计(论文)、图纸、实物样品等): 1、毕业论文一份; 2、英文文献一份,相应的中文译文一份。 4.毕业设计(论文)课题工作进度计划: 起迄日期工作内容 2005年 1月15日~3月31日 4月 1日~ 5月31日6月 1日~ 6月20日6月 21日~ 6月25日系统学习,查阅资料,作开题报告实验方案确定及实验 撰写毕业论文 论文答辩 所在专业审查意见: 负责人: 年月日学院(系)意见: 院(系)领导: 年月日

抗高过载加速度计特性实验系统的软件设计 摘要: 本文介绍了一种基于虚拟仪器技术的抗高过载加速度的特性测试系统。该系统采用NI 公司的LabVIEW开发平台,实现了加速度的静态特性、动态特性及恢复特性的自动测试,完成数据采集、测试的控制、实时显示、数据存储与基本分析处理功能,提高了测试的精度和效率,为进一步分析加速度计的性能提供了有效的帮助。 关键词:加速度计,测试系统,LabVIEW,虚拟仪器

微加速度测量系统设计论文

微加速度测量系统设计论文 本系统选用石英挠性加速度计作为加速度测量传感器。国内常用的惯 性级石英挠性加速度计不能直接满足要求,为实现高精度加速度测量,需要对加速度计实行误差分析与补偿。石英挠性加速度计的测量误差 主要来自2个方面:一方面是加速度计自身结构的不完善,比如:质 量不平衡、结构的弹性变形、不等弹性等;另一方面,一些物理因素的 影响,如变化的温度场、仪表内部的杂散磁场或外部干扰磁场等。对 于前者,只能通过改进制造工艺来提升加速度计的测量精度;而对于后者,能够通过改善加速度计工作环境,为加速度计建立严格电磁屏蔽 和精密温控的环境,提升石英挠性加速度计的稳定性,从而提升测量 精度[7,8]。因为系统工作环境复杂,外界温度变化范围大,为有 效地实现加速度计高精度温度控制,设计了二级温控结构。 为有效抑制外界低频磁场干扰,设计了二级磁屏蔽结构,理论上屏蔽 的总效果在50dB以上,完全能满足石英挠性加速度计对磁场屏蔽结构 的要求。图2为本系统加速度计磁屏蔽和两级温控结构示意图。第一 级温控结构采用数字温度传感器作为温度测量传感器,半导体制冷器(TEC)作为温度控制件,改变控制电流大小和流向能够实现不同功率的 制冷或制热,将温度控制在30℃,精度控制为±0.5℃。第二级温控 结构采用Pt电阻器作为温度测量传感器,采用薄膜加热片作为温度控 制件,改变控制电流的大小实现不同功率的加热,将温度控制在50℃,与第一级温控环境保持一定温差,实现±0.1℃的控制精度。温度控 制芯片采用TIC2000系列DSP,控制算法采用积分分离的PI控制。当 系统刚开机工作时,因为偏差较大,容易产生积分饱和,所以,取消 积分作用,只采用比例控制,以加快系统的响应时间;当系统温度接近 设定值时,加入积分作用,以消除稳态误差,提升精度。虽然各误差 系数与诸物理参数有确定的函数关系,但误差系数并不是通过这些函 数关系计算出来的,而是通过实验室条件下的测试确定出来的。所以,安装好加速度计后需要通过实验室转台测试出各误差系数,对加速度 计输出数学模型实行误差补偿。

MEMS加速度计简介

MEMS加速度计简介 1、什么是MEMS加速度计? 加速度计是一种惯性传感器,能够测量物体的加速力。加速力就是当物体在加速过程中作用在物体上的力,就比如地球引力,也就是重力。加速力可以是个常量,比如g,也可以是变量。 MEMS(Micro Electro Mechanical Systems)加速度计就是使用MEMS技术制造的加速度计。由于采用了微机电系统技术,使得其尺寸大大缩小,一个MEMS加速度计只有指甲盖的几分之一大小。MEMS 加速度计具有体积小、重量轻、能耗低等优点。 2、MEMS加速度计一般用在哪里? 通过测量由于重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。通过分析动态加速度,你可以分析出设备移动的方式。现在工程师们已经想出了很多方法获得更多的有用的信息。 MEMS加速度计可以帮助你的机器人了解它现在身处的环境。是在爬山?还是在走下坡,摔倒了没有?或者对于飞行类的机器人来说,对于控制姿态也是至关重要的。更要确保的是,你的机器人没有带着炸弹自己前往人群密集处。一个好的工程师能够使用MEMS加速度计来回答所有上述问题。 目前最新IBM Thinkpad手提电脑里就内置了MEMS加速度计,能够动态的监测出笔记本在使用中的振动,并根据这些振动数据,系统会智能的选择关闭硬盘还是让其继续运行,这样可以最大程度的保护由于振动,比如颠簸的工作环境,或者不小心摔了电脑所造成的硬盘损害,最大程度地保护里面的数据。目前在一些先进的移动硬盘上也使用了这项技术。 另外一个用处就是在目前的数码相机和摄像机里,用MEMS加速度计来检测拍摄时候的手部的振动,并根据这些振动,自动调节相机的聚焦。 MEMS加速度计还可以用来分析发动机的振动。汽车防撞气囊的启动也可以由MEMS加速度计控制。 由此可见MEMS加速度计可以在我们的生活中发挥重要作用。归纳其应用主要有以下几个方面:振动检测、姿态控制、安防报警、消费应用、动作识别、状态记录等。 3、MEMS加速度计是如何工作的? 技术成熟的MEMS加速度计分为三种:压电式、容感式、热感式。压电式MEMS加速度计运用的是压电效应,在其内部有一个刚体支撑的质量块,有运动的情况下质量块会产生压力,刚体产生应变,把加速度转变成电信号输出。 容感式MEMS加速度计内部也存在一个质量块,从单个单元来看,它是标准的平板电容器。加速度的变化带动活动质量块的移动从而改变平板电容两极的间距和正对面积,通过测量电容变化量来计算加速度。 热感式MEMS加速度计内部没有任何质量块,它的中央有一个加热体,周边是温度传感器,里面是密闭的气腔,工作时在加热体的作用下,气体在内部形成一个热气团,热气团的比重和周围的冷气是有差异的,通过惯性热气团的移动形成的热场变化让感应器感应到加速度值。 由于压电式MEMS加速度计内部有刚体支撑的存在,通常情况下,压电式MEMS加速度计只能感应到“动态”加速度,而不能感应到“静态”加速度,也就是我们所说的重力加速度。而容感式和热感式既能感应“动态”加速度,又能感应“静态”加速度。

相关文档
相关文档 最新文档