天天看點

FoodDelivered-Robot---送餐機器人(六)子產品驅動代碼---IO采集部分(三)循迹子產品

一、循迹子產品的選用:

FoodDelivered-Robot---送餐機器人(六)子產品驅動代碼---IO采集部分(三)循迹子產品
FoodDelivered-Robot---送餐機器人(六)子產品驅動代碼---IO采集部分(三)循迹子產品

二、産品特點:

       該傳感器子產品對環境光線适應能力強,其具有一對紅外線發射與接收管,發射管發射出一定頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經過比較器電路處理之後,綠色訓示燈會亮起,同時信号輸出接口輸出數字信号(一個低電平信号),可通過電位器旋鈕調節檢測距離,有效距離範圍 2~30cm,工作電壓為 3.3V-5V。該傳感器的探測距離可以通過電位器調節、具有幹擾小、便于裝配、使用友善等特點,可以廣泛應用于機器人避障、避障小車、流水線計數及黑白線循迹等衆多場合。

三、子產品參數說明:

1、當子產品檢測到前方障礙物信号時,電路闆上綠色訓示燈點亮電平,同時 OUT端口持續輸出低電平信号,該子產品檢測距離 2~30cm,檢測角度 35°,檢測距離可以通過電位器進行調節,順時針調電位器,檢測距離增加;逆時針調電位器,檢測距離減少。

2、傳感器主動紅外線反射探測,是以目标的反射率和形狀是探測距離的關鍵。其中黑色探測距離最小,白色最大;小面積物體距離小,大面積距離大。

3、傳感器子產品輸出端口 OUT 可直接與單片機 IO 口連接配接即可,也可以直接驅動一個 5V 繼電器;連接配接方式:VCC-VCC;GND-GND;OUT-IO。

4、比較器采用 LM393,工作穩定;

5、可采用 3-5V 直流電源對子產品進行供電。當電源接通時,紅色電源訓示燈點亮;

6、具有 3mm 的螺絲孔,便于固定、安裝;

7、電路闆尺寸:3.2CM*1.4CM。

8、每個子產品在發貨已經将門檻值比較電壓通過電位器調節好,非特殊情況,請勿随意調節電位器。

四、子產品接口說明:

1、VCC 外接 3.3V-5V 電壓(可以直接與 5v 單片機和 3.3v 單片機相連);

2、GND 外接 GND;

3、OUT 小闆數字量輸出接口(0 和 1)。

五、循迹子產品程式(STM32):

/*******************************************************************************
================================================================================
【平    台】stm32f103zet6_sumjess平台
【編    寫】sumjess
【E-mail  】[email protected]
【軟體版本】V2.0
【最後更新】2018年09月06日
【相關資訊參考下列位址】
【網    站】
           https://blog.csdn.net/qq_38351824
           http://www.openedv.com/
           http://www.stmcu.org/
					 http://www.firebbs.cn/forum.php
---------------------------------------------------------------------------------
【dev.env.】MDK5.14及以上版本
【Target  】stm32f103zet6
第一次修訂:2017/11/09
第二次修訂:2018/01/21
第三次修訂:2018/09/06
---------------------------------------------------------------------------------
沒有完美的代碼,隻有不斷的奉獻,大家一起努力;
贈人玫瑰手留餘香,歡迎大家回報bug!
================================================================================
********************************************************************************/	

//循迹子產品初始化
///初始化PB8-11為輸出口.并使能這兩個口的時鐘	    

void track_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能PE端口時鐘
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|             //循迹子產品PE2~PE9端口配置
	                             GPIO_Pin_3|
															 GPIO_Pin_4|
															 GPIO_Pin_5|
	                             GPIO_Pin_6|
															 GPIO_Pin_7|
															 GPIO_Pin_8|
															 GPIO_Pin_9; 
 GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN_FLOATING;//浮空輸入
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度為50MHz
 GPIO_Init(GPIOE, &GPIO_InitStructure);					       //根據設定參數初始化GPIOE

}


//--------------------------------------------------------------------------------------------//