天天看點

【STM32 .Net MF開發闆學習-22】超音波測距子產品研究

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

目前市面上的超音波子產品有兩種硬體接口,一種是觸發和脈沖輸出方式,一種是序列槽通信(RS232),後一種編寫通信接口程式比較簡單,就是簡單的序列槽程式設計,不過售價比較高。前一種對實時性要求很高,其測量精度和你的程式實作相關。

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

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

(2)子產品自動發送8個40khz的方波,自動檢測是否有信号傳回;

(3)有信号傳回,通過IO輸出一高電平,高電平持續的時間就是超音波從發射到傳回的時間.

測試距離=(高電平時間*聲速(340M/S))/2;

從超音波子產品的工作原理我們就可以知道,測距和高電平持續的時間相關,我們隻要能準确擷取高電平的持續時間,就可以精确獲得探測的距離。

當然如此高精度,用C#托管代碼是無法直接開發的,需要我們采用C/C++代碼開發,并且必須用時鐘進行信号采集,然後封裝成一個接口供上層托管代碼調用。

【STM32 .Net MF開發闆學習-22】超音波測距子產品研究

(實際測試發現,該超音波的測量精度還是蠻高的,是3mm級别的)

接線方式如下:

【STM32 .Net MF開發闆學習-22】超音波測距子產品研究
封裝後的托管庫如下:

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函數就可以擷取超音波子產品的測距值了,是以這裡就不過多介紹了,如果和智能小車配合使用,其安裝後的效果圖如下:

【STM32 .Net MF開發闆學習-22】超音波測距子產品研究

和智能小車相配合,而表現出一定智能的代碼,我們在後續的博文中再進行介紹,不過相關這部分的示例源碼已經在本文的末尾列出,性急的網友可以先參考一下。

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

繼續閱讀