基于stm32的超声波数据(卡尔曼滤波处理数据)

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "beep.h"
#include "bmp.h"
#include "oled.h"

u8 table1[]={0X03,0XFC};//µ÷²¨ÉèÖÃ
u8 table2[]={0XFC,0X03};

extern u8  TIM5CH1_CAPTURE_STA;		//ÊäÈ벶»ñ״̬		    				
extern u32	TIM5CH1_CAPTURE_VAL;	//ÊäÈ벶»ñÖµ  
long long temp=0;//²â¾àʱ¼ä
long long S=0,s1=0,t=0,Sm=0,Sa=0;//¾àÀë²ÎÊý
int table[]={1,10,100,1000};
/*************½ÓÊÕÊý¾Ý******************
len ´®¿Ú½ÓÊÕµ½µÄÊý¾Ý³¤¶È
s1  ¾­¹ýASIICÂëת»»ºóµÃµ½µÄÊý×Ö£¨·§Öµ£©  
t   ´«µÝÖµ£¬½«s1¸³¸øt£¬È¥Ö´ÐÐÆäËû³ÌÐò
***************************************/
float recevie()
{
	u8 i;
	u8 len;	 
	if(USART_RX_STA&0x8000)//Èç¹û½ÓÊÕµ½Êý¾Ý
		{					   
			len=USART_RX_STA&0x3fff;//µÃµ½´Ë´Î½ÓÊÕµ½µÄÊý¾Ý³¤¶È
			for(i=0;i<len;i++)
			{
			   s1+=(USART_RX_BUF[len-1-i]-48)*table[i];
			}
			t=s1;//½«½ÓÊÕµ½µÄÊý¾Ý¸øµ½t
			s1=0;//s1³õʼ»¯
			USART_RX_STA=0;//״̬λÇåÁã
		}
		printf("\r\nÉèÖõÄ×îС¾àÀëΪ:%lld\r\n",t);
		return t;
}

/***************ÅжϺ¯Êý****************
S  ²âÁ¿µÃµ½µÄ¾àÀë
t  ͨ¹ý´®¿ÚÉèÖõķ§Öµ
***************************************/
float judge()
{ 
	  if(S<t)
		{
			 printf("\r\nÉèÖõÄ×îС¾àÀëΪ:%lld\r\n",t);
		   printf("\r\n error!!!¡\\n");
			 LED1=!LED1;//³¬¹ý·§Öµ£¬±¨¾¯
			 delay_ms(5);
		}
		else
		{   
			  printf("\r\nÉèÖõÄ×îС¾àÀëΪ:%lld\r\n",t);
		    printf("distance:%lld mm\r\n",Sm);//´òÓ¡¾àÀë
			  delay_ms(5);
		}
		return t;
}

/*******************¼ÆËã¾àÀë*****************
temp  ͨ¹ýÊäÈ벶»ñµÃµ½µÄ¸ßµçƽ³ÖÐøʱ¼ä
S     ¾àÀë
*********************************************/
float Count()
{
	 long long a=0;
   if(TIM5CH1_CAPTURE_STA&0X80)        //³É¹¦²¶»ñµ½ÁËÒ»´Î¸ßµçƽ
		{
			temp=TIM5CH1_CAPTURE_STA&0X3F; 
			temp*=0XFFFFFFFF;		 		         //Òç³öʱ¼ä×ܺÍ
			temp+=TIM5CH1_CAPTURE_VAL;		   //µÃµ½×ܵĸߵçƽʱ¼ä
			a=temp;
			S=0.17*a;
			Sa=S;
			TIM5CH1_CAPTUR
  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于Arduino超声波传感器的卡尔曼滤波卡尔曼滤波是一种用于滤波的算法,其主要功能是减少噪声和干扰对数据测量的影响。通过使用卡尔曼滤波,可以对模拟量进行滤波处理,以便更好地利用数据卡尔曼滤波的原理是基于对系统状态的估计和观测值的融合。它通过一个递归的过程,根据系统的动态模型和观测模型,结合先验信息和实际观测值,不断更新对系统状态的估计值,从而得到更准确的结果。 在使用Arduino超声波传感器进行测量时,可以通过引入卡尔曼滤波算法来对传感器输出的模拟量进行滤波处理。这样可以消除噪声和干扰,提高测量精度和稳定性。通过将卡尔曼滤波算法与Arduino编程语言结合,可以实现对超声波传感器数据的滤波处理卡尔曼滤波的具体实现可以使用Python等编程语言来编写代码。在代码中,需要定义系统的动态模型、观测模型以及初始状态和协方差矩阵等参数,并通过递归计算得到滤波后的结果。 总而言之,卡尔曼滤波是一种用于滤波的算法,在Arduino超声波传感器中可以应用卡尔曼滤波来对模拟量进行滤波处理,以提高测量的准确性和稳定性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [数据处理小技巧1——卡尔曼滤波的通俗理解及其python代码实现](https://blog.csdn.net/weixin_44791964/article/details/103094059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值