發布日期:2022-10-09 點擊率:49
? ? ? ? ?2020年大三上的時候和同學們一起組隊參加了學校舉辦的機器人大賽,走的是循跡競速賽道,規則很簡單,就是看誰可以以最快的速度跑完全程,經過一個多月的學習與調試,最終我們的小車“德芙”(因為全程跑的十分絲滑)以26s的成績(領先第二名7s)獲得了第一,在此就寫一篇博客記錄記錄自己調車的經歷吧。
? ? ?我們隊在比賽中使用的是舵機加雙編碼電機的機械結構,以芯片主頻為72MHz的STM32F103ZET6為核心控制器,賽道的主要元素包括直道,環島,S彎和連續直角彎; 我們通過一字排列的光電傳感器陣列對黑線進行識別,進而檢測車身在賽道上的位置;通過編碼電機檢測智能車的實時速度;使用結合BANGBANG算法的積分分離PI控制算法調節電機的轉速,通過基于分段控制思想的舵機轉向PD控制舵機的打角,通過基礎速度和偏離速度相結合的思想實現針對不同賽道元素的速度調節,實現了智能車在運動過程中速度和方向的閉環控制。
一、路徑識別模塊的設計
? ? ? ?在選擇傳感器的時候,我們最初選擇的是TCRT5000紅外反射式開關傳感器,但是發現因為賽道和車子結構的原因,其實際的循跡效果不是特別好,經常會誤判,故而我們便改用了數字灰度傳感器,其靈敏度更高,抗干擾能力強;普通照明燈基本對其無影響,其發光源常用高度良白色聚光LED,接收管對不同的發射光的強弱進行對比處理,只要對白光發射強弱不同即可,差值越大,分辨越好,比普通的紅外傳感器抗干擾能力要強的多。
? ? ? ?其輸出為數字輸出,即1或0輸出,需要根據場地,光線等基本情況來調節基準電壓,電壓比較器有著兩個電壓輸入,一個為接受管的電壓,另一個是電位器輸入的基準電壓,需要根據接受管在2種色的電壓值來調節基準電壓,一般將電位器電壓調到2種電壓的中間值。
? ? ? ? 我們將七個傳感器按一字型非等距排列在超前于車身主體的橫桿上,正中間的傳感器在正常情況下正對于賽道的黑線,兩邊的傳感器則按間隔距離則由小到大對稱分布排列,用以確定小車與中心線的偏差大小,我們根據各個傳感器返回的01值來確定小車與中心線偏差的大小,同時我們將偏差的大小分為9級,并由參數error來表征,0代表小車循跡無偏差,不需要進行轉彎,正數代表左轉,負數代表右轉,而數字越大代表小車偏離中心的程度越大。對于十字圓環而言,所有的傳感器均會檢測到黑線,此時應題目要求是向前走直道,故而將error設定為0。當小車超過終止區域黑線時,所有的傳感器都檢測不到黑線,此時比賽完成,故而小車要停止,此時令兩個電機反轉,消除其慣性,使其迅速停下來,當檢測到實際速度為 0 時則斷開電源,實現制動的同時避免反接制動運行情況發生。
二、舵機
? ? ? ? ?該循跡系統選用的是HS-425BB型舵機,HS-425BB型舵機是一款高性能舵機,扭力大,穩定性好,角度控制準確。由于舵機所需要的電壓較大,運行過程中電流也會發生很大變化,還會帶來不同程度的干擾,因此,舵機往往采用單獨供電,舵機的輸入線有三根,其中紅色的線用于接電源,黑色的線用于接地,白色的線為信號線,對舵機的控制過程比較簡單,提供主控制器產生的PWM控制信號輸出至舵機的信號線接口,在輸出PWM波頻率不變的情況下,通過改變PWM波的占空比,就能相應地改變機器人的轉角,從而實現舵機的轉角控制。
三、電機
? ? ? ?在該系統的設計中,我們選擇了GB37-520編碼電機。電機編碼器由光電模塊和光柵組成,光電模塊輸出的信號有AB兩相。電機的主軸連接著編碼器并帶動編碼器的光柵盤轉動,光電模塊檢測其輸出的脈沖數。由于AB兩相相差90°,可通過比較A相在前還是B相在前,以判別編碼器的正轉與反轉,通過零位脈沖,可獲得編碼器的零位參考位;絕大部分的直流電機采用的是開關驅動方式,采用這種方式,半導體功率器件有開啟和關閉兩種狀態,然后用輸出可調的PWM電平實現對電機電壓的控制,實現調速功能。
四,PID算法控制
? ? ? ?PID控制是工程實際中應用最為廣泛的調節器控制規律,單位反饋的PID控制原理框圖如圖:
e(t)代表理想輸入與實際輸入的誤差,這個誤差信號被送到控制器,控制器算出誤差信號的積分值和微分值,并將它們與原誤差信號進行線性組合,得到輸出量。
? ?
其中,kp、kd、ki分別為比例系數、積分系數、微分系數。
PID各個參數作用基本介紹:
(1)比例調節(p):是按比例反應系統的偏差,系統一旦出現了偏差,比例調節立即產生調節作用,以減少偏差。比例作用大,可以加快調節,減少誤差,但是過大的比例,會使系統穩定性下降,甚至造成系統的不穩定。
(2)積分調節(I):使系統消除穩態誤差,提高無差度,因為有誤差,積分調節就進行,直至無差,積分調節停止,積分調節輸出一個常值。
(3)微分調節(D):微分作用反映系統偏差信號的變化率,具有預見性,能預見偏差變化的趨勢,因此能產生超前的控制作用,在偏差還沒有形成之前,已被微分調節作用消除。因此,可以改善系統的動態性能。在微分時間選擇合適情況下,可以減少超調,減少調節時間。微分作用對噪聲干擾有放大作用,因此過強的微分調節,對系統抗干擾不利。此外,微分反應的是變化率,而當輸入沒有變化時,微分作用輸出為零。微分作用不能單獨使用,需要與另外兩種調節規律相結合,組成 PD?或 PID?控制器。
? ? ? ? ? 以 T 作為采樣周期,則離散采樣時間對應著連續時間,用矩形法數值積分近似代替積分,用一階向后差分近似代替微分,可得到離散 PID公式為:
位置式 PID 算法具有以下優點:比例部分只與當前的偏差有關,而積分部分則是系統過去所有偏差的累積。故而位置式 PI 調節器的結構清晰,P 和 I 兩部分作用分明,參數調整簡單明了,編寫代碼更為簡單。
? ? ? ? 速度策略是影響智能車速度快慢的一個重要因素。首先速度控制必須配合方向控制,即在直道或類似直道時,應該將PWM波提到最高,讓通過主電機的電流達到最大,從而讓智能車以最快的速度行駛;當進入彎道時,應該根據彎道的曲率大小,適當的較低小車的基礎速度,使得小車不容易沖出賽道,對于該基礎速度v_set的設定,我們采用PD控制,以小車與中線的偏差大小為輸入,以速度的設定量為輸出,實現不同賽道類型下的自主速度調整。
? ? ? ? ?我們的小車轉彎方式不同于其他萬向輪轉彎的智能小車,我們采用差速轉向和舵機轉向方式相配合,相比之下其靈活性提高了很多。小車利用差速電機實現轉彎,其原理是利用兩個電機的轉速不同構成轉速差;舵機控制前輪是從動輪,不需要有轉速。舵機的位置是在兩個前輪的中間,控制兩個前輪的轉向。
? ? ? ? 整個比賽過程,從最開始的選擇車型和主控芯片到后來的編程和現場實際的調車,可以說那段時間一有空,我們就呆在調試賽道旁邊,不斷改善程序,同時因為我們是舵機和差速控制的方案,故而pid的參數較多,我們需要一個一個的慢慢整定,一遍遍的跑去確定一個合適的參數;當時的我們參數整定全靠自己的判斷和車子跑的情況,故而效率其實還是很低的,如果可以的話,其實可以運用無線模塊將每一次車子的PWM數據實時的傳送到電腦上,畫出相應的曲線,這樣的話調試會快一點,還有就是最后因為時間等緣故,我們的速度到最后其實沒有閉環,即沒有用編碼電機將實際的速度值傳送回來,這樣輸出的PWM和實際的還是會有一定的區別的,這個以后也可以加上,如果有機會的話,其實我還是想去參加一下飛思卡爾智能車比賽的,再享受一次調車的樂趣,享受看著小車一次又一次以更快的速度跑完全程的那種喜悅!
相關推薦
不得不知的生活常用七大傳感器
傳感器的靜態特性的主要指標有線性度、遲滯、重復性、靈敏度和準確度等。傳感器的動態特性則指的是對于輸入...
發表于 2018-04-02 08:14
?
118次閱讀
光電傳感器中發射器與接收器的選取
光電傳感器的輸出電流ICON是光電傳感器一個十分關鍵的參數。對槽型光電傳感器而言,在給定條件下,IC...
發表于 2018-03-23 09:02
?
42次閱讀
采用光電傳感器的太陽追蹤系統設計方案
針對固定式太陽能利用裝置的光能利用率低,設計一種太陽追蹤系統。此系統由單片機智能控制,采用光電傳感器...
發表于 2018-03-20 10:08
?
132次閱讀
光電感應器怎么調節_光電傳感器工作原理分析
本文開始介紹了光電傳感器的定義和光電傳感器的特點,其次闡述了光電傳感器的結構和光電感應器開關的調節方...
發表于 2018-03-14 17:14
?
352次閱讀
RPR220光電傳感器應用設計
LM339是一個四電壓比較器,一個芯片有四個比較器,因為我們不可能只用一個光電傳感器去尋跡,至少要三...
發表于 2018-03-14 10:16
?
96次閱讀
淺談近紅外光譜分析技術和光電傳感器的結構設計
系統要求光電傳感探測部分具有較高的檢測精度和穩定性,且實時性高,即需要對待測海水進行連續不間斷的在線...
發表于 2018-03-13 13:59
?
77次閱讀
淺談光電傳感器的原理及三種類型
光電傳感器 光電傳感器一般由光源、光學通路和光電元件三部分組成。 把被測量的變化轉換成光信號的變化...
發表于 2018-03-13 11:56
?
147次閱讀
光電傳感器怎么調節_光電傳感器使用方法
本文開始闡述了光電傳感器概念與光電傳感器特點,其次闡述了光電傳感器分類和工作方式與光電傳感器工作原理...
發表于 2018-03-06 13:58
?
381次閱讀
光電傳感器在太陽能應用領域的解析
發表于 2018-01-16 15:44
?
774次閱讀
光電傳感器的應用實例_光電傳感器工作原理_光電傳...
本文主要介紹了光電傳感器結構、光電傳感器工作原理好光電傳感器特點、最后對光電傳感器應用案例和光電傳感...
發表于 2018-01-08 15:21
?
942次閱讀
生活中應用比較廣的七大常用傳感器
發表于 2018-01-04 16:26
?
873次閱讀
光電傳感器的性能優勢及應用領域分析
發表于 2017-12-21 16:26
?
987次閱讀
光電傳感器GL6G-N1211中昊自動化sick一級代理
發表于 2017-11-06 16:03
?
368次閱讀
SICK中程距離光電傳感器DS50-P1112
發表于 2017-11-06 15:43
?
314次閱讀
中程距離光電傳感器DS35-B
發表于 2017-11-06 15:25
?
332次閱讀
宜科發布緊湊型光電傳感器,可用于汽車和印刷行業
宜科公司的光電傳感器已有多年的發展歷史,通過標準品與定制化解決方案,為許多客戶帶來了多元化的選擇,好...
發表于 2017-11-04 11:45
?
515次閱讀
想做一個檢測是否水平的裝置,各位朋友能不能推薦幾款傳感器
發表于 2017-11-03 10:10
?
279次閱讀
光纖與光電傳感器區別是什么
光纖與光電是傳感器中比較典型的產品,為了消除工業煙塵污染,首先要知道煙塵排放量,因此必須對煙塵源進行...
發表于 2017-09-27 17:27
?
421次閱讀
PM-R45(1M線)松下槽型光電傳感器
發表于 2017-09-20 19:54
?
423次閱讀
PM-T65-P松下光電傳感器中昊自動化
發表于 2017-09-20 19:49
?
467次閱讀
E3和A3這兩種自由電壓型光電開關有什么區別,哪種比較好?
發表于 2017-09-20 16:37
?
363次閱讀
光電傳感器的應用實例詳解
光電傳感器由于反應速度快, 能實現非接觸測量,而且精度高、分辨率高、可靠性好,加之光電傳感器具有體積...
發表于 2017-01-10 13:58
?
1597次閱讀
光電傳感器檢測的優越性
自動化設備和裝置中采用光電傳感器檢測先進系統,同時也是采用了先進過程控制、操作優化、節能策略的基礎。...
發表于 2017-01-01 17:31
?
196次閱讀
光電傳感器的原理與應用
在高度發達的現代社會中,科技突飛猛進,信息瞬息萬變,生產過程自動化已成為社會發展的必然趨勢。而這些必...
發表于 2017-01-01 17:28
?
1013次閱讀
光電傳感器工作原理、分類及特性詳解(收藏)
光電傳感器是一種小型電子設備,各種光電檢測系統中實現光電轉換的關鍵元件。它主要是利用光的各種性質,檢...
發表于 2016-12-13 13:38
?
629次閱讀
擦亮眼睛!看清穿戴醫療終極目標
新日本無線廣告企劃課的張挺先生表示,傳感器是任何可穿戴設備的最初必要環節,它的測量精確度直接關系到后...
發表于 2015-11-25 14:05
?
621次閱讀
采用FPGA實現的紅外密集度光電立靶測試系統
光電靶的基本原理是:當光幕內的光通量發生足夠大的變化時,光電傳感器會響應這種變化而產生電信號。##電...
發表于 2014-07-23 14:31
?
320次閱讀
一種多功能電子焊接操作臺的設計方案
本文提出了一種多功能電子焊接操作臺的設計方案,該方案以單片機作為主控芯片,通過反射式光電傳感器檢測操...
發表于 2013-10-29 10:21
?
1334次閱讀
美軍研制新型車載電子裝置光電傳感器
美國雷神公司空間與機載系統部的光電專家將幫助美軍研究者開發新型基礎航空電子設備和車載電子裝置用光電傳...
發表于 2013-10-11 10:41
?
577次閱讀
ELMOS推出用于手勢識別非接觸式光電傳感器芯片...
日前,德國艾爾默斯半導體ELMOS公司推出一款用于手勢識別的非接觸式光電傳感器E527.16。該芯片...
發表于 2013-05-08 15:16
?
1316次閱讀
一種高可靠性光電開關的電路實現
本文介紹一種高可靠性的光電開關電路,帶有穩頻調制光以抗各種干擾,具有大功率驅動電路和光電三極管的自動...
發表于 2012-08-20 14:44
?
1233次閱讀
采用光電傳感器的智能車控制研究
本文是根據第三屆全國大學生“飛思卡爾”杯智能汽車大賽要求設計自主識別道路的智能車。
發表于 2012-08-18 11:26
?
1448次閱讀
基于光電傳感器的能自主識別道路的智能車
本文主要設計的是一輛自主識別道路的智能車。整個系統采用了16位單片機mc9s12dg128,模型車本...
發表于 2012-08-07 11:33
?
1785次閱讀
可監測人體脈搏波及心率的健康鼠標
脈搏波的波形特征與心血管疾病密切相關,為此用戶需要一種簡單、實時的便攜裝置。通過安裝在正常使用鼠標時...
發表于 2012-05-17 10:35
?
6159次閱讀
光電傳感器對金屬絲楊氏模量測量方法
文章介紹了一種通過使用光電傳感器來對金屬絲楊氏模量測量的新方法。該測量的關鍵在于對金屬絲的微小長度變...
發表于 2012-02-21 10:39
?
761次閱讀
三星宣布量產光電傳感器一體化LCD
三星電子(Samsung Electronics)宣布,將開始量產的光傳感器一體化設計的大尺寸LCD...
發表于 2011-12-14 10:04
?
319次閱讀
光電傳感器實現智能燈光控制系統
文章設計了一種基于光敏電阻和光電傳感器的智能燈控系統。一旦光線強度足夠低,檢測系統啟動,MOC306...
發表于 2011-11-14 11:04
?
2364次閱讀
基于FPGA的光電抗干擾電路設計方案
光電靶的基本原理是:當光幕內的光通量發生足夠大的變化時,光電傳感器會響應這種變化而產生電信...
發表于 2011-01-03 15:09
?
282次閱讀
基于光電傳感和路徑記憶的智能車導航系統
基于路徑記憶算法的轉向及驅動控制策略,在電源管理、噪聲抑制、驅動優化等方面也都進行了研究工作,通過大...
發表于 2010-09-16 16:35
?
412次閱讀
光電傳感器式三相斷相保護電路圖
光電傳感器式三相斷相保護電路圖
發表于 2010-04-03 13:51
?
323次閱讀
光電傳感器的電磁兼容設計
光電傳感器的電磁兼容設計
引 言
廣泛應用于工業自動化領域的光電傳感器,一般是開關型的,被稱為光...
發表于 2010-03-26 12:18
?
210次閱讀
光電傳感器在機場物流行業的設計應用
隨著國內航空運輸業的持續快速發展,機場物流項目逐漸增多,技術水平不斷提高。民航總局預計...
發表于 2010-03-05 12:08
?
237次閱讀
微型光電傳感器,微型光電傳感器是什么意思
微型光電傳感器,微型光電傳感器是什么意思
微型光電傳感器概要
發表于 2010-03-03 15:39
?
711次閱讀
光電傳感器分類有哪些?
光電傳感器分類有哪些?
①按檢測方式分類(1)對射型 檢測方式
發表于 2010-03-03 14:48
?
4678次閱讀
光電傳感器,光電傳感器是什么意思
電傳感器,光電傳感器是什么意思
光電傳感器的定義
「光電傳感器」是利用光的各種性質,檢測物體的有...
發表于 2010-03-03 14:40
?
2338次閱讀
光電傳感器,光電傳感器原理
光電傳感器,光電傳感器原理
光電傳感器是指能夠將可見光轉換成某種電量的傳感器。光敏二極管是最常見...
發表于 2010-03-02 14:27
?
531次閱讀
光電傳感器在自動化生產線上的應用
光電傳感器在自動化生產線上的應用
引言 光電傳感器是采用光電元件作為檢測元件,首先把被測量的變化轉...
發表于 2009-11-25 10:07
?
566次閱讀
新型光電傳感器的原理及應用
新型光電傳感器的原理及應用
概況
隨著全球制造...
發表于 2009-11-25 09:59
?
9187次閱讀
光電傳感器
光電傳感器
發表于 2009-09-22 16:48
?
546次閱讀
光電式傳感器工作原理
光電式傳感器的英文解釋:photoelectric transducer
發表于 2008-09-22 13:54
?
4169次閱讀
光電傳感器工作原理與應用
光電式傳感器工作原理與應用
光電式傳感器 光電傳感器是采用光電元件作為檢測元件的傳...
發表于 2008-01-07 12:56
?
6898次閱讀
我會通過本系列文章,詳細介紹如何從零開始用51單片機去實現智能小車的控制,在本系列的上一篇文章中介紹了3種可用來讓小車實現避障的傳感器,本文作為本系列的第三篇文章,主要介紹如何讓車實現自動避障。
本系列文章鏈接:
-----------------------------------------------------------------------------
詳細介紹如何從零開始制作51單片機控制的智能小車(一)———讓小車動起來
詳細介紹如何從零開始制作51單片機控制的智能小車(二)———超聲波模塊、漫反射光電管、4路紅外傳感器的介紹和使用
詳細介紹如何從零開始制作51單片機控制的智能小車(三)———用超聲波模塊和漫反射光電傳感器實現小車的自動避障
詳細介紹如何從零開始制作51單片機控制的智能小車(四)———通過藍牙模塊實現數據傳輸以及通過手機藍牙實現對小車運動狀態的控制
詳細介紹如何從零開始制作51單片機控制的智能小車(五)———對本系列第四篇文章介紹的手機藍牙遙控加減速異常的錯誤的介紹及糾正
-----------------------------------------------------------------------------
一、避障思路及傳感器的選擇
1、利用4路紅外尋跡避障傳感器模塊實現避障
?可以讓一路傳感器檢測左邊的障礙物,一路傳感器檢測右邊的障礙物,兩路傳感器檢測前方的障礙物,如下圖所示:
?這種方法呢實現起來是最簡單的,對于0基礎的可以嘗試一下,障礙物檢測距離一般在20cm左右,在車速不太快,而且在室內(也就是無陽光直射)時是可行的,也可以很好的實現避障。
?缺點呢或者說不足之處,也就很明確了,在室外(或者陽光直射時)傳感器受陽光干擾可能不能正常工作,檢測距離20cm左右,車速過快時,在檢測到障礙物時,不能直接轉彎(因為車速過快,還沒來得及轉彎可能就撞上了),需要往回倒一下,再轉彎。
2、利用4個漫反射光電傳感器模塊實現避障
?可以讓一個傳感器檢測左邊的障礙物,一個傳感器檢測右邊的障礙物,兩路傳感器檢測前方的障礙物。就像上面的4路紅外尋跡避障傳感器的擺放方向一樣
?這種方法呢,避障思路跟利用4路紅外尋跡避障傳感器模塊實現避障是相同的,只是換了傳感器類型而已,但是漫反射光電傳感器抗陽光干擾能力強,克服了4路紅外尋跡避障傳感器模塊在室外(或者陽光直射時)傳感器受陽光干擾可能不能正常工作的缺點。
?缺點呢或者說不足之處,檢測距離也在20cm附近,依然沒能克服車速過快時,在檢測到障礙物時,不能直接轉彎的不足,而且呢漫反射光電傳感器模塊體積、重量、價格都要高一些。
3、利用超聲波模塊和舵機云臺實現避障
?避障思路呢大體是這樣的,正常情況下超聲波模塊檢測前方障礙物,當檢測到障礙物時,小車停止前行,舵機云臺轉動,讓超聲波模塊分別轉向小車的左右兩側檢測左右兩側是否有障礙物,來決定下一步的轉向,超聲波模塊重新超前,開始轉向。
?這種方法呢,利用超聲波模塊測距遠,一般常見的超聲波模塊測距最遠在4.5米左右,完全不用擔心車速過快來不及反應的情況,而且基本不受陽光干擾(當環境溫度升高時,聲音的傳播速度會加快,對測距產生一定的誤差,但是誤差很小很小,對于超聲波模實現避障來說完全可以忽略)也就是說超聲波模塊很好的解決了以上兩個問題
?缺點呢或者說不足之處,也很明確,從避障思路我們可以看出這種方案小車不能連續的運動,當遇到障礙物時,小車就會停下來判斷下一步該往哪個方向轉彎,除此之外,超聲波模塊用起來比前兩種難一些
4、利用超聲波模塊和2個漫反射光電傳感器實現避障(也就是本文采用的方法)
?避障思路呢就是利用超聲波模塊檢測前面的障礙物,兩個漫反射光電傳感器分別檢測左右兩側的障礙物。
?這種思路結合了這兩種傳感器的優點,互補了他們的不足,即同時克服陽光直射時傳感器不能正常工作、車速過快時,在檢測到障礙物時,不能直接轉彎、遇到障礙物需要停車判斷 這三種不足可以說是一種比較理想的方案。唯一的缺點呢,就是超聲波模塊本身用起來難度要大一些,當然對富有挑戰精神的人,也就不算缺點了
二、超聲波測距程序的編寫
1、概述
?我將在本系列第一篇博文中介紹的程序的基礎上進行超聲波測距程序的編寫的介紹,前提是理解超聲波模塊的測距的工作流程(不明白的可以去看本系列第二篇文章的介紹),我們需要用到兩個定時器,而STC89C52單片機只有兩個定時器,前面呢我們已經把定時器0中斷用來控制電機的PWM輸出,所以我們把超聲波測距的啟動信號也合并到定時器0里面,讓定時器1來檢測超聲波模塊有無信號返回。
2、I/O口觸發測距的實現程序的編寫
?超聲波模塊工作的第一步呢就是讓塊Trig 管腳所接的單片機I/O口置為高電平,而且需要持續10us以上,(本例中我采用的是讓單片機P14 I/O口 接在了超聲波模塊的Trig 管腳上,讓單片機P15 I/O口 接在了超聲波模塊的Echo管腳上,大家可以根據實際情況自己選擇,只要跟程序對應起來就行),此處有一點需要注意就是為了避免下一次超聲波模塊發出的信號,對上一次的返回信號產生影響,超聲波模塊發出信號的時間間隔要在60ms以上,本例中我配置的定時器0是每1ms產生一次中斷,設置一個變量HC_SR04_time,定時器0每產生一次中斷,該變量累加1,每當加到250時,讓該變量清零,同時讓超聲波模塊發出檢測信號,也就是說每250ms 超聲波模塊發出一次檢測信號(數值呢大家可以自行調節),發出檢測信號只需要讓Trig為高電平并且持續10us以上 ,再讓Trig為低電平,這樣超聲波模塊就會自動發出一次檢測信號了,我把這個過程寫在函數StartModule() 里面本部分相關程序如下:
3、檢測有無障礙物的程序編寫以及檢測距離的調節方法
?上面呢我們已經利用定時器0來通過 Trig口讓超聲波模塊每250ms發出一次檢測信號,接下來我們需要用定時器1來檢測有沒有信號返回,也就是前方有沒有障礙物,怎么實現呢,通過前面的介紹我們知道,只要Echo管腳為高電平就有信號返回,通過定時器1來測量高電平持續的時間,通過公式:測試距離=(高電平時間*聲速(340M/s)/2) 就可以計算障礙物距離傳感器的距離了,當Echo變為高電平時,就讓定時器1清零,并打開定時器1,開始計數,當Echo變為0時,利用公式計算障礙物距離,計算完后令定時器1清零 并關閉定時器1 這樣只要有信號返回,即只要Echo被置為1 定時器1就會被及時的清零,也就不會觸發定時器1溢出中斷,若是沒有信號返回(也就是沒有障礙物,或者障礙物超出了傳感器的測量范圍,本文用的傳感器測量最大值為4.5米),Echo就不會被置1,定時器1也就不會被清零,從而產生溢出中斷,在溢出中斷里放一個變量flag ,若產生中斷則讓其置1,這樣就通過定時器是否產生溢出中斷,即flag是否為1,來判斷是否檢測到障礙物了。
?有一點需要注意,這樣檢測的是距離傳感器最大檢測距離內有無障礙物,但是我們把它用來讓小車避障,我不能距離障礙物4.5米就讓小車轉彎吧,這就需要通過程序調節檢測距離了,只需要增加一個判斷條件就行了,我們利用公式算出來障礙物的距離S ,將flag=1或者S>我們設定的檢測距離,都視為沒有障礙物處理就可以了,如 if(flag==1||S>50) 就是把50cm作為檢測距離,檢測的是50cm內有無障礙物,50呢是暫定的,在后期調車的時候,根據實際情況進行調節
?本部分有關程序如下(完整的工程文件會在介紹完避障程序后一并給出):
三、自動避障的實現
?目前呢我們用于避障的傳感器有檢測左右兩側障礙物的漫反射光電管,檢測前方障礙物的超聲波模塊,大體思路是這樣的,當超聲波模塊沒有檢測到設定距離內的障礙物時,小車直行,當檢測到前方障礙物時,若此時左邊漫反射傳感器沒有檢測到障礙物,則左轉,當此時左邊有障礙物時,若右邊沒有障礙物則右轉,若右邊也有障礙物則后退,大家看的可能比較亂,我整理成如下的邏輯表:
?表格中的有代表有障礙物,無代表無障礙物,X代表可以有也可以沒有障礙物 若前方有障礙物則 M_sensor=0 沒有則 M_sensor=1,若左側有障礙物 ,則 L_sensor=0 ,沒有則 L_sensor=1 若右側有障礙物則 R_sensor=0 沒有則 R_sensor=1,程序如下:
?在測試中我發現,當電池電量較低時,原來的轉彎方式(一側電機停轉,另一側電機前進)轉彎效率較低,所以說把轉彎的函數修改為一側后退,另一側前進,代碼如下:
?經過測試后,這種方案呢并沒有理想的那么好,因為超聲波模塊存在一些缺陷,比如偶然會產生誤判,明明前方什么障礙物都沒有,會在一瞬間突然檢測到障礙物,又突然消失,而且在以下兩種情況下檢測不到障礙物
?如上圖的這種情況呢,超聲波模塊檢測不到返回的信號,產生誤判
?如上圖的這種情況呢,超聲波模塊檢測不到側前方的細柱型障礙物,產生誤判
? 以上兩種缺陷呢,是超聲波模塊固有的缺陷,是無法通過超聲波模塊本身去糾正的,解決方法呢,可以在超聲波模塊的兩側分別再加一個朝前的檢測前方障礙物的漫反射光電傳感器,這樣呢可以克服以上的幾個缺陷,經過我的實際測試,漫反射光電傳感器幾乎不會產生誤判,除了檢測距離有點短之外,可以說是比較好的,這樣呢就是4路漫反射光電傳感器為主,超聲波模塊呢只是輔助檢測前方的較遠的的障礙物,補充漫反射傳感器檢測距離有限的缺陷,這種方案呢我就不詳細介紹了,有興趣的可以自己嘗試一下
四、完整的各文件代碼
?main.c文件
?motor_control.c文件
?HC_SR04.c文件
?car.h文件
本文到這里就結束了,本文介紹的內容的完整的keil文件會放在附件里,需要者自取,我放的時候都是免費的,但是過段時間它會自己漲…需要的在評論區留言我可以直接發給你,歡迎大家繼續閱讀本系列的后續文章“詳細介紹如何從零開始制作51單片機控制的智能小車(四)———通過藍牙模塊實現數據傳輸以及對小車狀態的控制”
歡迎大家積極交流,本文未經允許謝絕轉載
我會通過本系列文章,詳細介紹如何從零開始用51單片機去實現智能小車的控制,在本系列的上一篇文章中介紹了如何讓小車動起來,本文作為本系列的第二篇文章,主要介紹讓小車實現自動避障所涉及的一些傳感器,如超聲波模塊、漫反射光電管、4路紅外尋跡避障傳感器的介紹及使用。
對于熟悉這些模塊的讀者,可跳過此篇文章,直接閱讀本系列的下一篇文章
本系列文章鏈接:
-----------------------------------------------------------------------------
詳細介紹如何從零開始制作51單片機控制的智能小車(一)———讓小車動起來
詳細介紹如何從零開始制作51單片機控制的智能小車(二)———超聲波模塊、漫反射光電管、4路紅外傳感器的介紹和使用
詳細介紹如何從零開始制作51單片機控制的智能小車(三)———用超聲波模塊和漫反射光電傳感器實現小車的自動避障
詳細介紹如何從零開始制作51單片機控制的智能小車(四)———通過藍牙模塊實現數據傳輸以及通過手機藍牙實現對小車運動狀態的控制
詳細介紹如何從零開始制作51單片機控制的智能小車(五)———對本系列第四篇文章介紹的手機藍牙遙控加減速異常的錯誤的介紹及糾正
-----------------------------------------------------------------------------
一、4路紅外尋跡避障傳感器模塊
1、線路連接
?傳感器與控制板之間的連接很簡單,每個傳感器與控制板都有3根線相接,即一根VCC,一根GND,還有一根信號線,傳感器和控制板上都有白色標識,連線很方便,稍微細心一下就行,別把VCC和GND接反了就行(接反了,一通電傳感器可能就燒壞了,我燒過…),控制板與單片機之間的連接,有6根線,一根VCC,一根GND,4根信號線,接法如下:DO1— 第1路TTL電平輸出,接在單片機選定的管腳上,如P10,D02—第2路TTL電 平輸出,接在單片機選定的管腳上,如P11,DO3—第3路TTL電 平輸出,接在單片機選定的管腳上,如P12,DO4—第4路TTL電平輸出,接在單片機選定的管腳上,如P13,GND— 接單片機的GND管腳,VCC— 接單片機的5V管腳
2、工作原理
?每1路的傳感器的紅外發射管不斷發射紅外線,當發射出的紅外線沒有被反射回來或被反射回來但強度不夠大時,紅外接收管一直處于關斷狀態,此時模塊的TTL輸出端為高電平,相應指示二極管一直處于熄滅狀態;當被檢測物體出現在檢測范圍內時,紅外線被反射回來且強度足夠大,紅外接收管導通,此時模塊的TTL輸出端為低電平,指示二極管被點亮。
?簡單點說,當傳感器檢測到障礙物時,對應的TTL輸出低電平,比如第一路傳感器信號線連接在單片機的P10口,當第一路傳感器檢測到障礙物時,單片機P10口就為低電平,也就是說通過讀取傳感器信號線連接的單片機I/O口的高低電平,就可以知道傳感器前方有沒有障礙物。
3、檢測距離的調節
?當模塊檢測到前方障礙物信號時,電路板上紅色指示燈點亮電平,同時oUT端口持續輸出低電平信號,也就是說,我們可以通過在傳感器前面一定距離放置障礙物,通過觀察電路板上的指示燈的亮滅,來調節檢測距離,檢測距離可以通過電位器進行調節,順時針調電位器,檢測距離增加;逆時針調電位器,檢測距離減少,官方介紹該模塊檢測距離2~30cm,但是根據我的實測在20cm以上時,隨著距離的增加會趨向不穩定,尤其是在30cm附近,車處于運動狀態時可能會由于車的震動從而使傳感器始終處于檢測到障礙物狀態,所以檢測距離一般調節在20幾厘米左右較好。
4、注意事項
?(1)使用本模塊時候,避免探頭陽光直射。光線對模塊有干擾作用。也就是說本模塊受陽光干擾嚴重,在室外傳感器大概率不能正常工作,當然可以采取一定的防護措施,但是效果有限,這也是本次我不采用這種傳感器的原因
?(2)靈敏度調節不應過高,過高的靈敏度可能引起誤觸發。
?(3)在臨界值時,會出現ED微亮,這種情況是未觸發狀態。此時輸出為高電平。
二、漫反射式傳感器
1、線路連接
? 對于我使用的這個是NPN型常開漫反射傳感器,每個傳感器有三根線,棕色的線接正極,雖然產品介紹是6v到36v的輸入電壓,我接到單片機上的5v管腳上,測試傳感器是可以正常工作的,藍色的線接單片機的負極(GND),黑色的線是信號線,接單片機的I/O口
2、關于漫反射式傳感器的簡單介紹
? 光電開關是一種具有開關量輸出的位移傳感器,輸出有NPN、PNP、常開、常閉及繼電器等,可檢測金屬(如鋼、鐵、銅)、塑料、玻璃、木頭、水、紙、磁鐵等透明和不透明物體,可與PLC、伺服控制器、變頻器、計算器、控制器相連接達到自動輸入信號的目的,廣泛應用于機械、紡織、輕工造紙、印刷、包裝等行業。
? 光電開關屬于無接觸測量傳感器,其檢測距離范圍比較寬,在計數、測距和行程控制等許多測控系統中得到廣泛應用。反射式光電開關又分為漫反射和鏡反射式光電開關
3、工作原理
? 漫反射光電開關是一種集發射器和接收器于一體的傳感器,當有被檢測物體經過時,將光電開關發射器發射的足夠量的光線反射到接收器,于是光電開關就產生了開關信號。當被檢測物體的表面光亮或其反光率極高時,漫反射式的光電開關是首選的檢測模式。
?簡單點說,就本文介紹的NPN型常開漫反射光電傳感器,當檢測到障礙物時,與黑線連接的單片機I/O口被置低電平0,也就是說通過讀取該I/O口的電平高低,就可以知道傳感器前方有沒有障礙物
4、檢測距離的調節
? 順時針調節電位器檢測距離變遠,逆時針調節檢測距離變近,當我用手充當障礙物時,在20cm處可正常工作,最終檢測距離我調節在了17cm。
三、超聲波模塊
1、線路連接
? 我使用的這種HC-SR04型號的超聲波傳感器需要4根線,VCC接單片機的5v接口(該傳感器工作電壓為5v),Trig (控制端)接單片機的I/O口(跟程序定義的管腳相同就行),是超聲波傳感器的控制管腳,Echo (接收端)接單片機的I/O口(跟程序定義的管腳相同就行),是超聲波傳感器的接收管腳、GND接單片機的GND。
2、工作原理
? (1)采用(I/O口觸發測距、給至少10us的高電平信號)
? (2)模塊自動發送8個40khz的方波、自動檢測是否有信號返回
? (3)有信號返回、通過I0輸出一高電平、高電平持續的時間就是超聲波從發射到返回的時間、測試距離=(高電平時間*聲速(340M/s)/2)
?詳細點說,它是怎么工作的呢,首先我們需要讓超聲波模塊Trig 管腳所接的單片機I/O口置為高電平,而且需要持續10us以上,這時超聲波模塊就會自動發出8個40khz的方波、自動檢測是否有信號返回,也就是檢測前方有沒有障礙物,若有障礙物則通過Echo所接的單片機I/O口將信號返回,該I/O被置為高電平1,通過測量高電平持續的時間,也可以通過公式:測試距離=(高電平時間*聲速(340M/s)/2),計算出障礙物距傳感器的距離,這個公式很容易理解吧,距離=時間X速度,除以2是因為,超聲波測距測得是一個來回的距離,也就是真實距離的兩倍,所以要除以2。
?跟前面兩種傳感器不同,前面兩種傳感器使用起來很簡單,只需要檢測傳感器信號線電平的高低就可以知道有沒有障礙物,傳感器呢 只需要接到單片機上,在程序上只需要定義個I/O口就行了,所以他們的工作原理不理解,也可以正常的使用,但是超聲波模塊不同,如果上面的工作原理不理解,或超聲波模塊工作的的過程不理解,就很難去寫或者修改超聲波模塊的程序。所以一定要理解上面的步驟,至于如何去寫超聲波測距的程序,我會在本系列下一篇博文:“詳細介紹如何從零開始制作51單片機控制的智能小車(三)———用超聲波模塊和漫反射光電傳感器實現小車的自動避障”中介紹,當然我會把超聲波模塊的一些參考例程,和相關資料放在本文附件里,需要者自取,大家可以先自己看一下。
3、檢測距離的調節
? 與前兩種傳感器不同,超聲波模塊沒有調節距離的電位器,不能通過硬件調節檢測距離,需要通過程序調節,我將會在本系列下一篇文章中介紹如何寫超聲波測距程序時介紹如何調節檢測距離,值得一說的是超聲波模塊的檢測距離比前面兩種傳感器遠得多,比如本文介紹的這種檢測距離可達450cm,即4.5米,有些型號可達7m 、15m 而且檢測精度很高誤差在3mm 1mm 甚至更小,所以說超聲波模塊還是有很多優勢的。
4、注意事項
?模塊應先插好在電路板.上再通電、避免產生高電平的誤動作,如果產生了、從新通電方可解決。
本文到這里就結束了,超聲波模塊的資料我會放在附件里,需要者自取,我放的時候都是免費的,但是過段時間它會自己漲…需要的在評論區留言我可以直接發給你,歡迎大家繼續閱讀本系列的后續文章“詳細介紹如何從零開始制作51單片機控制的智能小車(三)———用超聲波模塊和漫反射光電傳感器實現小車的自動避障”
歡迎大家積極交流,本文未經允許謝絕轉載
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原
型號:E3FARP21
價格:面議
庫存:10
訂貨號:E3FARP21
型號:E3Z-LS61 2M BY OMS
價格:面議
庫存:10
訂貨號:E3Z-LS61 2M BY OMS
型號:BOS R020K-PS-RX11-00,2-S49
價格:面議
庫存:10
訂貨號:BOS R020K-PS-RX11-00,2-S49
型號:HG-C1400
價格:面議
庫存:10
訂貨號:HG-C1400
型號:EE-SX672P
價格:面議
庫存:10
訂貨號:EE-SX672P
型號:E3Z-T61-D 2M
價格:面議
庫存:10
訂貨號:E3Z-T61-D 2M