1 應用背景及硬、軟體要求

1.1應用背景

基於模型的設計在汽車、航空等產業得到了廣泛應用,它的圖形化設計、早期驗證、代碼生成及文檔自動化等應用大大縮短了產品開發周期,同時也對日益膨脹的軟體規模有著天然的適應力。而Simulink中提供了許多硬體支持包,可以有效地幫助我們了解和初步掌握基於模型的設計方法以及嵌入式

控制系統的開發。

1.2 硬、軟體的要求

(1)硬體要求

Simulink中提供了許多硬體支持包,可以在Mathworks官網中查看,如下圖1.1所示。這裡選擇了基於ArduinoUno的智能小車,通過Simulink對Arduino的支持能更加有效地、快捷地設計智能小車的控制軟體。

圖1.1 Simulink的硬體支持

(2)軟體要求

如上圖1.1所示,對Arduino硬體支持的最早Smulink版本是R2012a,這裡選擇了R2017b。主要原因是R2017b能夠成功下載和安裝Arduino硬體支持包(R2015b沒有成功,其他的沒有試過)。如下圖1.2所示為R2017b Simulink關於Arduino的模型例子。

圖1.2 Simulink關於Arduino的模型例子


2 超聲波感測器驅動控制及距離檢測的設計

2.1超聲波感測器的型號及基本原理

應用的超聲波感測器的型號是HC-SR04,該型號的感測器性能穩定,測度距離精確,模塊精度高,盲區小。其基本工作原理為:

(1)採用IO口的Trig觸發測距,給至少10us的高電平;

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

(3)有信號返回,通過IO口Echo輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間;

(4)測試距離計算:(高電平持續時間*聲速)/2。

2.2超聲波感測器驅動控制的設計

根據超聲波感測器的工作原理,將其驅動控制程序分為兩個部分:1、感測器的Echo信號上升沿識別和下降沿識別;2、感測器的Trig信號發送控制及高電平持續時間計算。

2.2.1 超聲波感測器Echo信號識別功能設計

根據實際中感測器Echo信號的類型,設計了如下圖2.1所示的Echo信號識別功能的控制流程圖,其中Flag表示Echo信號的三種狀態(1:上升沿;2:下降沿;其他:無)。為了保證Echo信號識別的準確性增加了上、下沿處的電平差必須大於10的過濾處理,如圖2.2所示。

圖2.1 Echo信號識別功能的流程圖
圖2.2 Echo信號識別功能的模型

2.2.2 超聲波感測器Trig信號發送控制及距離計算功能設計

根據超聲波感測器Trig信號發送的要求,基於simulink設計出如下圖2.3所示的控制狀態圖,其中在ON狀態中設計了Trig發送高電平的High狀態和計算Echo高電平持續時間的CalDistance狀態,結合Echo信號識別功能模塊能有效地計算出障礙物的距離。

圖2.3 Trig信號控制及距離計算的狀態圖

3 電機轉動方向及轉速控制的設計

3.1 Arduino Uno的電機轉動方向控制

如下圖3.1所示為Arduino Uno板的示意圖,目前需要關注的是數字信號引腳,其中引腳13、12、8、7、4、2是數字信號,而11、10、9、6、5是可以輸入PWM調製脈衝信號的。所使用的小車是左右各兩個串聯的電機,其右側兩個電機是通過引腳8、7來進行開關控制,即當引腳8為高電平,引腳7為低電平時電機正轉;當引腳8為低電平,引腳7為高電平時電機反轉;當引腳8、7是相同電平時電機不轉(電機正轉代表小車前進)。如下表3-1是電機轉動控制的各引腳的控制:

表3-1 電機轉動引腳控制表

圖3.1 Arduino Uno電路示意圖

3.2 Arduino Uno的電機轉速控制

小車的電機驅動晶元是通過控制電樞電壓的大小來控制電機的轉速。而電樞電壓是採用開關驅動方式,即使功率器件工作在開關狀態,通過脈衝調整PWM來控制的。在本小車的電機驅動電路是通過連接Arduino Uno的PWM引腳5、6分別控制右側和左側電機的電樞電壓,從而控制電機的轉速。

由於PWM的範圍是0~225,因此通過下式來控制PWM的輸出:

其模型如下:

圖3.2 Arduino Uno電機調速控制模型圖

實際中可能由於左、右兩側電機參數不一致或者輪胎不平整導致小車跑偏的現象,如本小車會存在向右跑偏的現象。針對這個問題,可以分別通過軟體和硬體的方式來解決:

(1)硬體方式,主要是對換兩側某一個電機,由於小車拆裝麻煩,沒有採用該方法。

(2)軟體方式,減弱動力較強的一側電機的PWM。本文中通過標定查表的方式確定出左右側電機能夠平衡運行的PWM控制量。


4 超聲波避障控制軟體設計

4.1 避障控制邏輯規則設計

目前所設計的避障功能需求是當檢測前方障礙物距離小於減速限值時,對小車進行減速控制;當檢測前方障礙物距離小於停止限值時,停止小車;而在停車狀態時,若連續檢測到前方障礙物距離大於前進限值10次後,重新讓小車運行。

根據上述的功能需求,設計如下避障控制邏輯流程,如圖4.1所示。基於Simulink/Stateflow完成超聲波避障控制策略的搭建,如圖4.2所示。

圖4.1 避障控制邏輯流程圖
圖4.2 避障控制策略模型

4.2 避障小車控制軟體設計及實現

根據小車後期的可擴展性,對避障小車控制軟體的整體框架進行了設計,如下圖4.3所示。主要包含信號讀取、控制策略和信號寫入三大部分。在信號讀取模塊中,可以根據擴展的功能增加相應的信號;在控制策略模塊中,同樣可以根據擴展的功能增加相應的策略;在信號寫入模塊中,類似處理。

根據所設計的控制軟體框架,以及前文中所設計控制程序,在Simulink中完成了避障小車控制軟體的設計,如下圖4.4所示。

圖4.3 避障控制邏輯流程圖
圖4.2 避障控制策略模型

5 超聲波避障小車展示

將所設計的避障小車控制軟體下載到Arduino上,並進行展示,如下所示。

視頻封面

00:08
推薦閱讀:
相关文章