程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 【STM32 .Net MF開發板學習-22】超聲波測距模塊研究

【STM32 .Net MF開發板學習-22】超聲波測距模塊研究

編輯:關於C語言

智能小車目前已經可以通過各種方式進行遙控了,不過做到這一步還遠遠不夠,我們需要智能小車有自己的“思維”,根據需要進行進退、轉向或停止。要做到這一步,必須讓智能小車有自己的感知“器官”,第一步我們先添加測距傳感器,以後我們會陸續研究尋際、攝像頭等傳感器,讓所謂的智能小車,更加“智能”。

目前市面上的超聲波模塊有兩種硬件接口,一種是觸發和脈沖輸出方式,一種是串口通信RS232),後一種編寫通信接口程序比較簡單,就是簡單的串口編程,不過售價比較高。前一種對實時性要求很高,其測量精度和你的程序實現相關。

我們僅介紹前一種通信方式,模塊的工作原理如下:

(1)采用IO觸發測距,給至少10us的高電平信號;

(2)模塊自動發送8個40khz的方波,自動檢測是否有信號返回;

(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()

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved