Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1059989
  • 博文数量: 71
  • 博客积分: 3078
  • 博客等级: 少校
  • 技术积分: 945
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-16 20:10
个人简介

此博客已停用 个人博客: Mangogeek.com

文章分类
文章存档

2016年(1)

2015年(32)

2014年(25)

2011年(13)

分类: 嵌入式

2011-07-09 09:54:21

CXA20106制作2CM-400CM的超声波(已出实物)

小弟最近玩超声波,最初参考网上最常用的CXA20106电路制作信号接收回路,发现以下典型问题:

1.CXA20106接收增益很大,导致发射探头衍射的波会第一个到达接收电路,示意图如下

由于发射和接收探头距离大约是5mm10mm左右,导致发射探头输出8个超声波后,会由于衍射作用(很微弱)直接进入接收探头,导致接收到如图r1一样的回波,但这个波不是我们所需要的,我们需要测量的是t1r2之间经过的时间。R1的存在也导致了cxa20106制作接收有很大盲区的问题(笔者按这种方法制作的盲区大约在10cm--25cm左右)。如果测量物体很近,导致r2r1重叠,无法分辨的原因,根本解决方法是将r1消除掉。

2.网上大多数卖的都是需要单片机配合定时器来采集数据,有一个TRIG,还有一个out,通过trig一个高电平,测量直到out输出低电平的时间,得到距离,但这样有个问题,比如主单片机在所有定时器占用情况下,会导致无法测量数据或者测量变得很棘手。

发现上述问题,小弟设计一款超声波电路,能很好的解决以上两个问题。不说废话了,上图

 

 

 

    先说第一个问题如何解决的,此次设计的超声波接收电路依然是cxa20106,与普遍超声波电路不同的是这个芯片的2脚多接了个两个电阻,U1芯片2脚是控制整体接收增益的,笔者试验如果只用C1R1可以降低很多增益,使接收只能从2cm-30cm,再远的话由于返回的超声波太弱而无法接收,适当减小R1的值可以提高增益,这样我们如果通过R2Ra串联接负极的话(相当于减小了R1的值,提高了增益),测量距离会编程15cm-400cm左右,有时好的话会变成500cm,这里小弟设计打算用stm8PC7接口来控制整体增益。

    第二个问题对于很多人来说肯定想到如何解决了,既然超声波上用到了单片机,那串口输出数据就很简单了!对,小弟这里用的就是串口来输出数据。9600bps8数据位1停止位。在终端里面打印如下,单位是毫米mm

 

说说整体工作过程。上述电路加电后,单片机将PD3PD2口初始化为推挽模式,PD2PD3是直接驱动发射探头。经过发射840Khz超声波后,将PC7口设置为高阻态,此时整机处于低增益模式下,打开Tim21通道捕获中断,等待回波,此时单片机有件很重要的事儿就是当波传出后,等待2ms,让接收探头躲过第一次衍射的波!打开高增益(PC7=0),来接收距离远物体返回的波。一旦接收到波,捕获模式会自动保存定时器的数据到捕获寄存器,此时就可以将数据转变为距离了。

用单片机的捕获中断做的稳定性不错在1m内,固定距离测量,串口输出数据精确度在1mm左右,在3m距离下,测量结果大约有2mm跳变

 

 超声波.zip    CSB.pdf   

阅读(3334) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~