如果这篇博客帮助到你,那么希望你今天开心~
CC BY 4.0 (除特别声明或转载文章外)
VG910 & VG103PT
- 设备说明
VG910和VG103PT是高精度光纤陀螺仪,是14年从陕西长城测控买的。VG910+采集板在两万八左右,VG103PT+采集板价格在两万四左右,采集板五千左右。目前队里有两套VG910和一套VG103PT,使用的时候务必小心。
需要掌握的知识
光纤陀螺仪基本原理及构造:参考官网和pcb图
- 陀螺仪的基本参数
陀螺仪通信接口:VG910是usart通信,VG103PT通过spi采集数据。了解下两种通信原理,学会用编程语言写通信接口
陀螺仪的安装位置:陀螺仪必须和车绝缘,尽可能安装在车中心,防止机构可能对它造成的伤害
常见的滤波器
卡尔曼滤波(一阶卡尔曼滤波、二阶扩展卡尔曼滤波)、带通滤波、二阶滤波等
陀螺仪标定的原理
光纤陀螺仪是基于Sagnac效应检测角速度的装置 。陀螺仪将角速度转换为陀螺仪电压,再经过AD、采集转换输出信号量。
graph LR A[角速度] --> |Scale Factor| C[陀螺仪电压值] C --> |AD差分转换| E[AD值] E --> |Scale| A
可以看出,陀螺仪直接输出的是AD值,我们需要对AD值进行转换才能得到当前的角速度,进而积分得到角度。
因此,我们定义积分系数
\[Scale = \frac{AD}{\omega}\] 由于积分系数与角速度相关,需要在不同转速下测定积分系数与角速度的关系。我们用二次曲线拟合不同转速下测定积分系数与角速度的数据,得到
\[Scale = A*\omega^2 + B*\omega + C\] 单片机运算能力不足,不能实时根据角速度计算积分系数,故我们引入filted_rate变量,对表达式进行修改
\[filted\_rate = AD*Sample\_Time\] 然后用二次曲线拟合filted_rate和Scale的关系,即
\[Scale = a*filted\_rate^2 + b*filted\_rate + c\] 采取牺牲空间的查表法,得到filted_rate从1~1500变化时对应的积分系数值,于是
\[\theta = \sum filted\_rate/ Scale(filted\_rate)\]- UCOS系统了解
代码使用说明
在使用陀螺仪之前,必须看懂代码,知道Angle_Task从采集AD值到转换的一系列流程,这里涉及到UCOS的调度,需要大家提前掌握。
以下是一些需要重点注意的变量。
采样周期 Sample Time : ADC完成数字量转换并读取的时间,计算方法参考
- 阈值Threshold:在采样时间内陀螺仪能检测到的最大AD值,即陀螺仪在采样时间内检测到的最小角速度对应的AD值
- 零点Zero Point:陀螺仪静止时输出的AD值
积分系数Scale:转动角速度与当前AD值的比例,且 \(\omega=AD/Scale\)
- 中间变量filted_rate: \(filted\_rate = AD*Sample\_Time\)
同时,我们也需要关注几个重要的步骤,也就是ANGLE_TASK任务和相应的外设接口
- 陀螺仪零点的采集方法
- 陀螺仪零点的采集时间
- 陀螺仪数据的采集接口
- 陀螺仪的数据经历了哪些滤波