【STM32 .Net MF开发板学习-22】超声波测距模块研究

简介:

智能小车目前已经可以通过各种方式进行遥控了,不过做到这一步还远远不够,我们需要智能小车有自己的“思维”,根据需要进行进退、转向或停止。要做到这一步,必须让智能小车有自己的感知“器官”,第一步我们先添加测距传感器,以后我们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。

目前市面上的超声波模块有两种硬件接口,一种是触发和脉冲输出方式,一种是串口通信(RS232),后一种编写通信接口程序比较简单,就是简单的串口编程,不过售价比较高。前一种对实时性要求很高,其测量精度和你的程序实现相关。

我们仅介绍前一种通信方式,模块的工作原理如下:

(1)采用IO触发测距,给至少10us的高电平信号;

(2)模块自动发送840khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.

测试距离=(高电平时间*声速(340M/S))/2;

从超声波模块的工作原理我们就可以知道,测距和高电平持续的时间相关,我们只要能准确获取高电平的持续时间,就可以精确获得探测的距离。

当然如此高精度,用C#托管代码是无法直接开发的,需要我们采用C/C++代码开发,并且必须用时钟进行信号采集,然后封装成一个接口供上层托管代码调用。

 

    (实际测试发现,该超声波的测量精度还是蛮高的,是3mm级别的)

接线方式如下:

序号

超声波模块

.NET MF开发板

1

Echo

PA0

2

Trig

PC4

3

GND

GND

4

VCC

3.3v

 

封装后的托管库如下:

using System;

namespace YFSoft.Hardware

{

        public sealed class Ultrasonic

        {

           public Ultrasonic(byte timer, int pin);

        public uint GetValue();

        }

}

 

相关的测试代码如下:

   public static void Main()

    { 

            //超声波探头

            //Timer2 - 1(必须是1) PA0(必须是PA0) - Echo PC4(可以任选一个空闲Pin脚) - Trig

            Ultrasonic ultrasonic = new Ultrasonic(1, (int)GPIO_NAMES.PC4);

            uint value = 0;

            Graphics.Clear(Color.Black);      

            while (true)

            {  

                value = ultrasonic.GetValue();

                Debug.Print(value.ToString());  

               // Graphics.SuspendLayout();

                Graphics.FillRectangle(100, 100, 50, 20, Color.Black);

                Graphics.DrawString(100, 100, value.ToString(), Color.Yellow);

               // Graphics.ResumeLayout();

                Thread.Sleep(100);

            }                  

    }           

   使用非常简单,通过一个简单的GetValue函数就可以获取超声波模块的测距值了,所以这里就不过多介绍了,如果和智能小车配合使用,其安装后的效果图如下:

  

    和智能小车相配合,而表现出一定智能的代码,我们在后续的博文中再进行介绍,不过相关这部分的示例源码已经在本文的末尾列出,性急的网友可以先参考一下。

 

1)、小车底盘

 http://item.taobao.com/item.htm?id=7218838776

2)、四路直流电机驱动器

http://item.taobao.com/item.htm?id=7218717808

3)、.NET Micro Framework开发板

 http://item.taobao.com/item.htm?id=7117999726

4)、超声波模块

 http://item.taobao.com/item.htm?id=8596342452

 

   注:需要红牛开发板固件在 V1.1.0以上

本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/UltrasonicTest.rar

本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/MF_Car_01.rar

本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/ PC_Control_01.rar

MF快速参考: .NET Micro Framework 快速入门

MF中文讨论组:http://space.cnblogs.com/group/MFSoft/

最近参加了2010中国十大杰出IT博客大赛,请大家投票支持一下,谢谢!

http://2010blog.51cto.com/1635641







本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/437989,如需转载请自行联系原作者

相关文章
【STM32 .Net MF开发板学习-22】超声波测距模块研究
智能小车目前已经可以通过各种方式进行遥控了,不过做到这一步还远远不够,我们需要智能小车有自己的“思维”,根据需要进行进退、转向或停止。要做到这一步,必须让智能小车有自己的感知“器官”,第一步我们先添加测距传感器,以后我们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。
558 0
【STM32 .Net MF开发板学习-15】红外遥控智能小车
我前段时间写了《用PWM驱动智能小车》和《红外遥控器编码识别》两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车。
698 0
【STM32 .Net MF开发板学习-24】激光防盗模型
在各种以高科技偷盗为主题的电影中,我们常可以看到激光防盗系统,一根根红色的激光线构成了三维立体防盗体系。今天我们就借助红外激光头和光敏电阻做一个这样的防盗模型,当红外线被阻断后,开发板板上的蜂鸣器就会报警。
407 0
|
芯片
【STM32 .Net MF开发板学习-13】用PWM驱动智能小车
以前对步进电机和直流电机的控制了解不深,以为仅对步进电机而言,才能进行PWM控制,及到购买相关的驱动板和步进电机后,才发现由于驱动板的原因,控制步进电机的方向、速度只能通过IO控制
604 0
【STM32 .Net MF开发板学习-14】红外遥控器编码识别
.NET Micro Framework开发板如何获取红外遥控信息,下一篇文章将介绍用遥控器驱动智能小车相关实现细节。
643 0
|
物联网
STM32 .Net MF开发板学习-16】Zigbee遥控智能小车
Zigbee技术目前在物联网领域和RFID一样,受关注度非常高。日前中科院上海微系统与信息技术研究所、无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628、WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.1
732 0
|
物联网 网络协议
【STM32 .Net MF开发板学习-17】Wifi遥控智能小车
对我们开发者来说,Wifi和普通的网线接口一样,都是Socket编程。我们只需用在PDA上构建一个简单的TCP Client端,在PC构建一个TCP Server端即可,PDA发送相关指令,PC接收后通过Zigbee转发给智能小车。
744 0
|
芯片
【STM32 .Net MF开发板学习-09】AD模拟量采集
AD/DA输入输出、PWM及其它底层硬件控制,.Net Micro Framework官方底层驱动代码及上层C#库并没有对这些功能进行封装,所以要想添加这类硬件的控制接口,需要从下到上进行全方位设计。
613 0
【STM32 .Net MF开发板学习-02】GPIO测试
示例很简单,主要是按钮和LED灯的测试,红牛和EM-STM3210E的按钮和LED有所不同,所以有针对性的对二者pin都做了定义(这些信息,你可以直接看开发板相对应的原理图,很容易就可以获得相关Pin脚的定义)。
476 0
|
网络协议
【STM32 .Net MF开发板学习-27】GPRS通信实现
GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输。我们基于.NET Micro Framework 4.1平台,开发了YFSoft.Hardware.GPRS库,通过该库,用户简单调用相关接口,就可以实现GPRS通信。
1021 0

热门文章

最新文章