上一节我们已经研究了超声波接收模块并自己设计了一个超声波接收模块,在此基础上又尝试用单片机加反相器构成生成40KHz的超声波发射电路,可是发现采用这种设计的发射电路存在严重的发射功率太低问题,对齐的情况下最多只有10CM。本节主要介绍并制造一种大功率超声波发射装置~
目录
一、浪里淘金,寻找最简超声波功率提高方案
1.1、优化波形发生程序
1.2、尝试各种其他超声模块方案
1.3、用三极管放大信号
1.4、MAX232放大信号方案
二、步步为营,打造高效准确超声测距算法
2.1、接收MCU区分接收头信号并统计时差算法初试
2.2、折衷——单MCU上集成收发模块实现测距
2.3、命中注定——分手的时候到了
三、阶段小结
>_<"上节讲到的利用反相器加单片机生成40KHz的超声波发射装置存在严重的功率问题,然后在上次之后的研究中我发现通过调节定时器的定时,功率会有稍微的提高,但还是比较弱~(因为条件限制,根本买不起示波器这种神器,所有只有酷比的调试代码啦!)下面的代码即改进后的51单片机代码,这次定时器采用的是定时器2,16位重装模式~
>_<"一个偶然的发现某同学的毕业设计中的方案:他介绍在脉冲发生电路和脉冲发射电路中加一个三极管来放大信号,觉得这个简单易行,我在面包板上简单的用一个2N3904三极管,照着模拟电路书本上简单放大电路连接好,将上述产生40KHz的单片机脉冲发生电路的引脚和三极管的基极相连,集电极加载一个12V的电压,测试结果发现可以很有效地提高发射功率,但是只成功了一小会,然后再怎么实验都无法再收到超声波了(我怀疑是把三极管弄坏了),所以该方案又失败了~
>_<"通过上面的各种尝试,我发现上面发射部分设计方案有一个共同的特点:都需要较高的驱动电压。但是我购买的HC-SR04超过声波测距模块却只需要用5V就能发射功率很强的成声波,这点引起了我的思考。于是直接找来HC-SR04的设计图:
通过研究发现:其发射部分采用STC系列单片机作为40KHz的脉冲发生器,然后把13、14两路(他一定是让这两路提供反向电平作为输出)链接到MAX232的两个输入端!一看到MAX232瞬间就明白了:MAX232是经常用在串口通信中用于将串口信号放大来传播更远距离的芯片,他这里采用MAX232这个特点用于将信号放大,然后在输出端直接驱动发射头!非常机智!于是我利用手头上的串口转TTL模块做一个简单的实验,结果令人振奋,果然能够对信号进行很强的放大:
于是一鼓作气,重新设计一个信号更强劲的方案,并把电路焊接成发射模块:这次采用MAX232的2个输入和输出通道,将两个方波同时放大,将产生更加强劲的效果!
>_<"到上面为止我们已经完美地把超声波发射与接收模块都做好了,那么现在就要研究下如何利用他们进行测距了~(PS:嘻嘻这里俺可不是简单的用一个发送模块一个接收模块进行直线空间上的测距,这种东西早都比较成熟了,网上一搜一把,而且非常便宜!我要做的是利用2个接收模块及一个接收模块在二维平面上对物体进行定位!)
1/*-------------------------------------------2简单的串口通信{接收}3-------------------------------------------*/4#include
上面的代码将数据发送给上位机的过程放大中断中去处理不是太好,于是就将串口数据发送改到main函数中了,优化后的代码如下:
>_<"上面我们已经实现了在一个MCU上实现了一个发射模块两个接收模块分别测距,但是将发射和接收放在同一个模块上是很不理想的一种折衷,那么现在是时候来一个高超的手术了!