OpenEdv-开源电子网

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

关于超声波测距的疑问

[复制链接]

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
发表于 2014-8-7 23:30:04 | 显示全部楼层 |阅读模式
5金钱
本人使用的是原子的MINI版, 移植论坛的HSR-04的超声波模块程序后,自己加入了LCD显示和串口数据发送。

调试过程中遇到的麻烦就是 1米以内测试 准确度在 0.02m左右
超过1米  误差 达到  5cm 
超过 1.3米  误差 达到 20cm

求助用过这个模块的同志 这个是什么原因呢?

贴上主程序和超声波库的源码(已修改后)

[mw_shl_code=c,true]void Ultra_Ranging(float *p) { u8 i; u32 j; float Ultr_Temp; for(i=0;i<3;i++) { TRIG_Send=1; delay_ms(10); TRIG_Send=0; while(!ECHO_Reci); while(ECHO_Reci) { delay_us(10); j++; } Ultr_Temp+=355/2*j*10;// 模块最大可测距3m j=0; delay_ms(150);//防止发射信号对回响信号的影响 } *p=Ultr_Temp/3/1000000; }[/mw_shl_code]

[mw_shl_code=c,true]#include "LCD5110.h" #include "ultrasonic.h" #include "delay.h" #include "usart.h" #include "stdio.h" #include "lcd.h" int main() { u8 Dis[10]; float temp; SystemInit(); delay_init(72); Ultran_Init(); uart_init(9600); LCD_Init(); POINT_COLOR=RED; LCD_ShowString(30,00,200,16,16,"Distance Measure"); LCD_ShowString(80,20,200,16,16,"m"); while(1) { Ultra_Ranging(&temp); printf("%1.4f\n",temp); sprintf((char *)Dis,"%1.4f",temp); LCD_ShowString(30,20,200,16,16,Dis); delay_ms(100); } } [/mw_shl_code]

ULTRASONIC.rar

4.86 MB, 下载次数: 122

Stm32 F0/F103
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-8 09:41:03 | 显示全部楼层
Stm32 F0/F103
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-8 12:34:08 | 显示全部楼层
再顶顶  ...
Stm32 F0/F103
回复

使用道具 举报

8

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-27
在线时间
120 小时
发表于 2014-8-8 13:18:32 | 显示全部楼层
修改声波速度试试,常用值340
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-8 13:27:14 | 显示全部楼层
回复【4楼】红木甲板:
---------------------------------
调整过   还是不太行
Stm32 F0/F103
回复

使用道具 举报

8

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-27
在线时间
120 小时
发表于 2014-8-8 14:46:18 | 显示全部楼层
回复【5楼】psrazil:
---------------------------------
你再试下用输入捕获测量,那个至少测高电平时间要更精确些,代码参考原子的输入捕获实验
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-8 14:52:54 | 显示全部楼层
回复【6楼】红木甲板:
---------------------------------
好的 谢谢啊
Stm32 F0/F103
回复

使用道具 举报

226

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1680
注册时间
2012-4-10
在线时间
105 小时
发表于 2014-8-8 15:17:19 | 显示全部楼层
不行的哦,需要加入LMS算法的,不然测量距离是不准确的。
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-8 15:54:41 | 显示全部楼层
回复【8楼】344864311:
---------------------------------
谢谢,我研究一下。     自己用人为的校准误差基本可以实现,如果加上算法应该会更精准
Stm32 F0/F103
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 02:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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