关于加速度计和陀螺仪的转换公式和工作原理介绍,浅显易懂。参考附件
助赢电子直立调试使用手册下 感谢你使用助赢 2合一或者3合一传感器。 本手册内容是店主学习过程中得 资料总结,参考了网上很多资料,互相交流仅供参考,不文明者请绕行。 前言: 2014年智能车官方提出陀螺仪型号不限制。故而很多同学在寻求更好的陀螺仪,装备上自己的爱车上。在店主寻求和使用陀螺仪的过程中特整理此版本,仅供参考,学习交流! 一、 陀螺仪分类 陀螺仪有很多种按结构分:1机械陀螺 2 MEMS硅陀螺 3MEMS石英陀螺 4 激光陀螺 5 静电陀螺 陀螺仪按接口分:数字和模拟。数字输出就接到IO口 I2C 或SPI 。模拟的输出接AD 关于使用模拟还是数字传感器,个人推荐在摄像头直立组用模拟。 二、 加速度计、陀螺仪的原理 好多同学对这两个总是分不清楚,不知是个什么东西,特别是怎样将采集的数据转换成角度。 我将概括这么几个基本并且重要的话题: 加速度计(accelerometer)原理是什么,检测什么 陀螺仪(gyroscope,也称作 gyro)原理是什么,检测什么 如何将传感器 ADC读取的数据转换为物理单位(加速度计单位是g,陀螺仪的是 度/秒) 在整篇文章中我尽量将数学运算降低到最少,高中水平即可!如果你知道什么是正弦、余弦、正切函数,那无论你的项目使用哪种平台你应该都会明白和运用这篇文章中的思想,如 freescale芯片、Arduino、Propeller、Basic Stamp、Ateml芯片、PIC芯片等等。 ①元方你怎么看加速度计模块? file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg我们先从加速度计开始。当我们在想象一个加速度计的时候我们可以把它想作一个圆球在一个方盒子中。如图1所示。 我们假定这个盒子不在重力场中或者其他任何会影响球的位置 的场中,就当做一个真空环境好了。球处于盒子的正中央。想 象盒子在外太空中,远离任何天体,如果很难想象,那就当做 盒子在航天飞机中,一切东西都处于无重力状态。在右面的图 中你可以看到我们给每个轴分配了一对墙(我们移除了Y+以 此来观察里面的情况)。设想每面墙都能感测压力。如果我们 突然把盒子向左移动(加速度为1g=9.8m/s^2),那么球会撞 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image004.jpg上X-墙。然后我们检测球撞击墙面产生的压力,X轴输出值为-1g。 图1 加速度计是个球 图2 x轴的受力情况 请注意加速度计检测到得力的方向与它本身加速度的方向是相反的。这种力量通常被称为惯性力或假想力 。在这个模型中你你应该学到加速度计是通过间接测量力对一个墙面的作用来测量加速度的,在实际应用中,可能通过弹簧或者杠杆等装置来测量力,如果你有废弃的enc03-mb你可以解开她的衣服,内部构造是一个大杠杆,类似于张衡地动仪!。这个力可以是加速度引起的,但在下面的例子中,我们会发现它不一定是加速度引起的。 如果我们把模型放在地球上,球会落在Z-墙面上并对其施加一个1g的力,见下图3: file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image006.jpg 位的 ADC 值转成电压值,我们使用下列公式: VoltsRx= AdcRx * VREF / 1023 AdcRx就是采集的数据,公式的基本含义就是把参考电压VREF分成了1023份,采集的数据和1023的比值就是模拟输出和参考电压的比值!小注:8 位 ADC 的最大值是 255 = 2 ^ 8 -1,12位 ADC最大值是4095 = 2 ^ 12 -1。 将 3 个轴的值代入上式,得到: VoltsRx= 586 * 3.3 / 1023 =~1.89V(结果取两位小数) VoltsRy= 630 * 3.3 / 1023 =~2.03VVoltsRz= 561 * 3.3 / 1023 =~1.81V每个加速度计都有一个零加速度的电压值,你可以在它的说明书中找到,这个电压值对应于加速度为 0g。通过计算相对 0g 电压的偏移量我们可以得到一个有符号的电压值。比方说,0g电压值 VzeroG= 1.65V,通过下面的方式可以得到相对 0g 电压的偏移量: DeltaVoltsRx= 1.89V - 1.65V = 0.24V DeltaVoltsRy= 2.03V - 1.65V = 0.38V DeltaVoltsRz= 1.81V - 1.65V = 0.16V 现在我们得到了加速度计的电压值,但它的单位还不是 g(9.8m/s^2),最后的转换,我们还需要引入加速度计的灵敏度(Sensitivity),单位通常是 mV/g。比方说,加速度计的灵敏度 Sensitivity= 478.5mV / g =0.4785V /g。灵敏度值可以在加速度计说明书中找到。要获得最后的单位为 g 的加速度,我们使用下列公式计算: RX =DeltaVoltsRx /Sensitivity RX =0.24V / 0.4785V / G =~0.5g RY =0.38V / 0.4785V / G =~0.79g RZ =0.16V / 0.4785V / G =~0.33g 当然,我们可以把所有的步骤全部放在一个式子里,但我想通过介绍每一个步骤以便让你了解怎么读取一个 ADC值并将其转换为单位为g 的矢量力的分量。 Rx =(AdcRx * Vref / 1023 –VzeroG) / Sensitivity (公式 2) Ry =(AdcRy * Vref / 1023 – VzeroG) / Sensitivity Rz =(AdcRz * Vref / 1023 – VzeroG) / Sensitivity现在我们得到了惯性力矢量的三个分量,如果设备除了重力外不受任何外力影响,那我们就可以认为这个方向就是重力矢量的方向。如果你想计算设备相对于地面的倾角,可以计算这个矢量和Z轴之间的夹角。如果你对每个轴的倾角都感兴趣,你可以把这个结果分为两个分量:X轴、Y轴倾角,这可以通过计算重力矢量和X、Y轴的夹角得到。计算这些角度比你想象的简单,现在我们已经算出了Rx,Ry,Rzfile:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/03/clip_image002.jpg的值,让我们回到我们的上一个加速度模型,再加一些标注上去见图6:
|