OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3461|回复: 7

问一下大家,超声波测距接收到的回波,大家对这些混乱的回波是怎么处理的啊?

[复制链接]

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-27
在线时间
29 小时
发表于 2017-7-10 17:15:23 | 显示全部楼层 |阅读模式
超声波测距传感器,传感器在发射出超声波之后,一定时间之后接收到回波,回波的波形并不稳定,需要对这个回波进行处理,才可以准确的测量距离,请问这个回波是怎么处理的。就是峰值低于某个数据的波形,忽略掉它的标准是什么,是连续的多次低于,比如说3次;还是说测量10次,10次里面低于的情况出现4到5次,并不一定是连续的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2014-11-29
在线时间
39 小时
发表于 2017-7-17 14:11:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-27
在线时间
29 小时
 楼主| 发表于 2017-7-17 16:33:40 | 显示全部楼层
xu_zhh 发表于 2017-7-17 14:11
上图上图上图上图

额,这个我已经解决了
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-27
在线时间
29 小时
 楼主| 发表于 2017-7-17 16:34:22 | 显示全部楼层
        int        End_time,times;
        static        int flag=0;
        static int Canput,Neverput;       
        Peak_value=ADC_Convert();
        if(Peak_value>5000)
                {
                        Peak_value=0;
                }
        Canput++;
        if(Peak_value>1500)
        {
               
                j++;
                if(j==1)//ÿ2éÑù10′Σ¬jÖ»·ûoÏò»′Σ¬¿aê¼ê±¼äò»Ö±2»»á±ä
                {
                        Strat_time=absolute_micro_time();//¿aê¼ê±¼ä
                }
                if(Peak_value>Max_Peak_value)
                {
                        Max_Peak_value=Peak_value;//Õò3ö×î′óμÄμÄ·åÖμ
                }
                if(Canput>=10)
                {
                        End_time=absolute_micro_time();//2éÑù10′Îoó½áêø£¬¼Ç¼½áêøê±¼ä
                        times=(End_time-Strat_time);        //·ûoÏìõ¼tμÄ2éÑùê±¼ä
                        Three_arry[index1][0]=Strat_time;//¿aê¼ê±¼ä
                        Three_arry[index1][1]=times;                        //2éÑùê±¼ä
                        Three_arry[index1][2]=Max_Peak_value;//×î′ó·åÖμ
                        index1++;
                        if(index1>19)
                        {               
                                index1=0;
                        }
                        Canput=0;//ÖØD¼Æêy
                        flag=0;
                        Neverput=0;
                        j=0;
                }
               
        }
        else
        {
                Neverput++;//ò»μ©·åÖμ1yμí£¬Neverput¾í»á×Ô¼ó
                if((Neverput-flag)==0)//′óNeverputóëflagμÄ2î¿éμÃÖaNeverputêÇ·ñ×Ô¼ó£¬ò2¾íêÇ·åÖμêÇ·ñ1yμí
                {
                        Neverput=flag=0;//èç1ûûóD±ä£¬èÃNeverputóëflag¶¼1éáã
                }
                flag=Neverput;
                if(Neverput>=3)//èç1û·åÖμ1yμí£¬2¢Çòá¬Dø3¬1yèy′Î
                {
                        Canput=0;//ÖØD¼Æêy£¬ËùóD±ê־λÇåáã
                        flag=0;
                        Neverput=0;
                        j=0;
                }
        }

}
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-27
在线时间
29 小时
 楼主| 发表于 2017-7-17 16:38:41 | 显示全部楼层
通过ADC获取峰值,来达到目的
8VX32~4RXPC(]MD~(C{~T6S.png
U7HSIMAWSTBNW@SRM8N~FV1.png
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-27
在线时间
29 小时
 楼主| 发表于 2017-7-25 17:12:55 | 显示全部楼层
开发着开发着又发现了一些问题,首先是这个余震的问题,超声波的发射探头在震动的时候,也会带动接收探头的震动;在关闭发射探头之后,余震会持续一段时间,尤其是接收探头;对于这段时间,没有办法消除,只能尽量的减小这个时间;再有余震,处理方案实在是想不出来;有关最后的回波的处理,上述代码并不完全,因为波形是起伏不定的,不过手上实在没有相关的数据资料,公司也以前也没有相关的项目,只能是搁置了
回复 支持 反对

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2014-11-29
在线时间
39 小时
发表于 2017-8-4 13:34:44 | 显示全部楼层
我也在弄超声波这块,但合适尺寸的没找到,可能得定制才行。
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-27
在线时间
29 小时
 楼主| 发表于 2017-8-4 15:15:12 | 显示全部楼层
xu_zhh 发表于 2017-8-4 13:34
我也在弄超声波这块,但合适尺寸的没找到,可能得定制才行。

搞超声波的话,硬件要求要高一点,不然余震影响会很大,盲区也会很大
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-20 06:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表