你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32-遥感数据处理

[复制链接]
STMCU小助手 发布时间:2022-8-20 16:00
一. 简介  |+ P$ A% B6 a2 Y/ p8 H! t
在上篇文章中,以及知道如何采集遥感数据了,可是采集到的数据是0-4096范围内的,实际上,下边界不为0,上边界也不为4096。为了方便后续的处理,本文将采集到的遥感数据归一到0-100范围内。
9 Q9 ?- @8 v4 s9 M$ ~* P
) Q: h8 r7 C. ^' x( r$ z' P二. 遥感数据校准
  I( J/ r; ?2 E$ M+ Z2 V& a这个部分是必要的,可以确定真实情况下上下边界的数据。其具体做法为,连续采集一些边界数据,求和,取平均就可以了。具体做法如下。当采集到的数据靠近我们认为的边界时,就认为是有效数据,否则丢弃,其他四个边界的做法也是如此。& a/ }6 \& s, k

6 D' _5 l8 {3 g8 F
  1. /*XL方向校准*/
    ' k7 I  W) Q6 ?
  2. void Rocker1CalibrationXL(void)
    8 o) r! \! q4 v' Y% k: d; D
  3. {
    7 w! f, T) Z) _, ^& C; U
  4.     uint8_t i;' k' H  z0 I- r/ a1 p* e
  5.     uint32_t valueSum = 0;
    & j' N& J  M# M
  6.     for(i = 0 ;i < 400; )6 O' @+ l. k" Q/ J& J6 U
  7.     {
    5 \8 k7 h4 J3 |" h1 w
  8.         uint16_t value = getX1Value();
      I. r+ v2 U4 n% O  U( T7 Q
  9.         if(value > 0xf600)7 f8 U0 k# Y+ a' j# F, o
  10.         {
    , }" x5 \5 t" \5 `! t
  11.             valueSum += value;6 c8 g9 L: v7 w- `
  12.             i++;
    1 T# O& n) G4 z! n
  13.         }
    4 V2 |  S& S- j4 f. L$ f
  14.     }7 @  P( X& }+ R5 k% B  c$ }
  15.     XOffSetL = valueSum / 400;! ^2 n; z" \: N) u
  16. }
复制代码
9 I6 z7 E4 P; v: b8 Y, O
三. 数据归一化
! T+ {7 ?; d- F1 k这部分也是关键的一步。其具体做法分为如下几个步骤:* N) o$ |& A6 t3 Z/ a) K$ U) K

; s4 z1 N* d1 `( l1.获取原始数据
8 `' g2 ~  c0 q7 q3 }2.计算原始数据到对应两边界直接的距离(也就是相减)
* z- Z) n7 w3 i, x$ g' P3 I3.将计算得到的结果扩大100倍,然后除以两边界的差值
, ^8 A  U1 ~+ ~6 Q' B# i5 q8 l4.左 边加(100-右边) 除以二,得到最终结果
& D7 i* d* N  x6 N9 p2 K4 Y具体代码实现如下
7 k" T- a4 C9 ^3 {" @$ {; g
  1. XValue =  getX1Value();  //获取X方向遥感数值
    3 |" _) d0 P: R2 b; ^7 O7 n5 u
  2. if(XValue > XOffSetL)
    & z0 m) W8 ^$ J2 c" ]6 M+ f0 |
  3.       XtempL = 0;  /*小于左边界,直接复制为0*/
    ! i% y  I8 }) B
  4.   else+ K' S4 z$ ]3 ^" o+ ?$ |* a
  5.       XtempL = XOffSetL - XValue ;
    ( q& c; Z1 m* D# U& F
  6. if(XValue < XOffSetR)
    ! Y$ o. h, y4 d" R
  7.       XtempR = 0;  /*大于右边界,直接复制为0*/
    - z1 l9 _$ v9 c
  8.   else: Z" e+ _& N$ \' T/ F2 a
  9.       XtempR = XValue - XOffSetR;0 ~$ w# e1 w, \* W3 ?- W
  10. uint32_t XtL = XtempL * 100;
    5 z; G8 J5 u4 l- Y+ z& i7 z) y  k# @
  11. uint32_t XtR = XtempR * 100;
    ; o% o  O* A2 G! E# {  x1 C
  12. XtL = XtL / (XOffSetL - XOffSetR);
    8 c# K# o; w, D1 h
  13. XtR = XtR / (XOffSetL - XOffSetR);
    " N4 w; |' X% g1 v
  14. X = (XtL + (100 - XtR)) / 2;  /*结果为遥感到左边界的距离,0 - 100*/
复制代码
: n! b  R5 r* o2 V) w. z
至此就完成啦。
) h* i0 I( V- h  V: W
$ S9 F" r- Z: Y. a! _  q1 n1 P5 B: k0 M, |
赞 收藏 评论0 发布时间:2022-8-20 16:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版