掌控板教程 | 想要掌控超声波传感器?可能没你想的那么简单!

网友投稿 2019-07-22 14:25

# 问题来源

在创客教育教学过程中,超声波传感器是最常用的元器件。但是一不小心也容易出现一些问题,甚至某些问题还比较隐蔽,没有经验的话可能要查很久才能查到问题所在。

前几天就有几个老师来问我,为什么掌控板连接超声波传感器,测出来的距离总是不准呢?如下图所示,测出来的距离,四舍五入后基本都是为 0。

https://cdn.china-scratch.com/timg/190724/1425041I5-0.gif

# 问题探究

这个问题很有趣,现在大家习惯了 Arduino,在玩 Arduino 的时候很少会出现这个问题,不出现这个问题的话可能大部分人都没意识到。正好前两天拿到了掌控板的扩展板“掌控宝”,就拿超声波传感器来献祭一下吧。

我们先来看一下上面动图中对应的程序,该程序是在 mPython X 0.3.3 版本上编写。好像也没啥毛病啊?可是在掌控板上为啥就不行了呢?难道是掌控板的软件底层有 bug?

https://cdn.china-scratch.com/timg/190724/1425351N7-1.jpg

我们来看一下 mPython X 图形化编程软件上对应的超声波模块型号:HC-SR04,这也是我们在教学中最常用超声波传感器型号。

https://cdn.china-scratch.com/timg/190724/1425362113-2.jpg

HC-SR04 超声波模块外观对应如下图所示:

https://cdn.china-scratch.com/timg/190724/14253I001-3.jpg

再来看一下这个模块的技术参数,从下表中可以看到,它的工作电压一栏写着 5V,好像也没有什么问题啊,Arduino 的工作电压不就是 5V 么?

https://cdn.china-scratch.com/timg/190724/14253K449-4.jpg

可是再回到掌控板,我们从掌控板的官方 wiki 上可以看到它的技术参数,在它的“工作电压”这一栏上赫然写着 3.3V,似乎找到了问题所在。

https://cdn.china-scratch.com/timg/190724/14253G396-5.jpg

# 问题解决

那有没有办法解决这个问题呢?一般有几个办法:

  • 方法一(不推荐):使用一个 3.3-5V 电压转换模块,将它们的电压转换一致即可,可是这种方法对课堂教学来说可能很不方便;

  • 方法二(不推荐):使用引脚电压是 5V 的扩展板,但是也可能会跟其他传感器冲突;

  • 方法三(推荐):使用同时兼容 3.3V、5V 的宽电压版超声波传感器模块或其他兼容掌控板的超声波传感器模块。

我们可以从淘宝上找到相应的模块,价格和普通的 HC-SR04 超声波模块也差不多,这种超声波模块,一般型号名称为 HC-SR04+,后面多了一个“+”号,但有些店家的模块,名称上面也没有“+”号,具体还得看技术参数。

https://cdn.china-scratch.com/timg/190724/14253VC0-6.jpg

当然市面上还有其他兼容 3.3V 的超声波模块,此处仅以宽电压版本的 HC-SR04+ 为例。同样的程序,换上 HC-SR04+ 这个超声波模块后,效果就正常了,如下图所示。

https://cdn.china-scratch.com/Public/Home/images/grey.gif

# 扩展思考

其实这个问题除了在掌控板上会出现之外,在使用 micro:bit 的过程中我们可能也会碰到类似的问题,另外在其他基于 ESP32 或 ESP8266 芯片的主控板上也有同样的问题,因为这些主控板的工作电压都是 3.3V。在笔者和裘老师一起写的新书“物联网 So Easy”中(即将上架),我们就使用了基于 ESP8266 芯片的物联网主控板,工作电压也是 3.3V,使用的也是宽电压版本的超声波模块,届时请大家多多关注!

https://cdn.china-scratch.com/timg/190724/14254112J-8.jpg


--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com