機器人綜合項目實踐教程 課件 第4、5章 Arduino平臺機器人實戰(zhàn);MSP430平臺機器人實戰(zhàn)_第1頁
機器人綜合項目實踐教程 課件 第4、5章 Arduino平臺機器人實戰(zhàn);MSP430平臺機器人實戰(zhàn)_第2頁
機器人綜合項目實踐教程 課件 第4、5章 Arduino平臺機器人實戰(zhàn);MSP430平臺機器人實戰(zhàn)_第3頁
機器人綜合項目實踐教程 課件 第4、5章 Arduino平臺機器人實戰(zhàn);MSP430平臺機器人實戰(zhàn)_第4頁
機器人綜合項目實踐教程 課件 第4、5章 Arduino平臺機器人實戰(zhàn);MSP430平臺機器人實戰(zhàn)_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四章Arduino平臺機器人實戰(zhàn)4.1

Arduino機器人的硬件庫4.2

Arduino平臺循跡功能機器人實戰(zhàn)4.3

Arduino平臺視覺機器人實戰(zhàn)4.4

Arduino平臺人臉面部表情識別模仿機器人

4.1

Arduino機器人的硬件庫

4.1.1使用庫要在Arduino框架中使用庫,則需要告訴編譯器要用哪個庫和函數(shù),采用的方法是可以在框架開始處使用#include預處理指令去指定庫文件的名字。注意預處理指令語句不是用分號結束的。如程序4.1所示代碼為使用庫程序的語句代碼。

4.1.2舵機庫

前面介紹了硬件庫的調用能實現(xiàn)在LCD顯示屏上呈現(xiàn)文本?,F(xiàn)在介紹如何讓物體動起來。用Arduino移動一個物體最好的辦法就是使用舵機/電機。Arduino平臺有一個專門驅動典型舵機/電機的庫,簡稱之為舵機庫。

舵機庫可以在ArduinoUNO平臺上的任何數(shù)字引腳上最多控制12個舵機,但是這個功能不可用數(shù)字引腳9和10上的PWM。舵機端口部分有三根不同顏色的輸出線。其中,紅色為電源線,其連接供電電壓范圍是+4.8?V~6?V;黑色線材是電源地線,為公共地接地線;黃色線材為舵機的控制端(也就是信號線),其邏輯信號電壓保持范圍為+3?V~5?V,而信號線與單片機信號輸出端口相連。如圖4.1所示為一個或多個舵機與Arduino單片機硬件連線示意圖,每個舵機都可以使用PWM控制波形,實現(xiàn)舵機位置的目標控制。圖4.1一個或多個舵機與Arduino單片機硬件連線示意圖圖4.1一個或多個舵機與Arduino單片機硬件連線示意圖

設計舵機組合控制方式時,應當考慮到控制多個舵機可能需要超過100?mA的電流,以及Arduino單片機與各種硬件器件或電路連接軟件的連接配置。Arduino有多種方式可以產生PWM控制舵機,有通過Arduino的普通數(shù)字傳感器接口產生占空比不同的方波,模擬產生PWM信號進行舵機定位,如圖4.2(a)所示;還有直接利用Arduino自帶的Servo函數(shù)進行舵機控制的,如圖4.2(b)所示。在舵機的連接部分直接使用黏合劑固定并連接需要連接的舵機,因為SG90舵機的扭力相對較小,所以不會對連接部分產生非常大的扭力,不會影響舵機的運動。圖4.2舵機組合控制場景照片

具體實現(xiàn)舵機控制例程代碼的方法有以下三種:

1)?第一種方法

第一種方法是用analogWrite(pin,val)命令,其中函數(shù)參數(shù)pin是引腳的編號,測試只能用3、5、6、9、10、11這幾條;val指的是0~655的整數(shù)值,對應電壓從0到+5V。例如ArduinoMega168就支持0~13共14個PWM輸出。(注意:幾個引腳的編號指的是pin編號,Arduino板子會用這幾個管腳支持PWM輸出。)?程序4.2為Arduino調用analogWrite(pin,val)命令輸出脈沖寬度調制信號程序代碼。

2)第二種方法

第二種方法是手動設置實現(xiàn)Arduino平臺輸出脈沖寬度調制信號的代碼。如程序4.3所示為Arduino手動實現(xiàn)輸出脈沖寬度調制信號的程序代碼。

3)?第三種方法

第三種方法是直接利用Arduino自帶的Servo函數(shù)進行舵機的控制,如程序4.4為Arduino調用庫函數(shù)servo.h的程序代碼,代碼中展示了調用庫函數(shù)servo.h后,采用不同舵機的調用函數(shù)設置。

程序4.4中主函數(shù)loop函數(shù)體內部調用write()函數(shù),用來實現(xiàn)控制舵機的運動。該函數(shù)參數(shù)是用角度數(shù)為單位簡單指定一個角度,舵機就會以默認速度運動到這個角度,并在每個運動之間延時;這里考慮舵機只以一個固定的速度運動,當需要減慢舵機角度變化的速度時,我們需要把大的位置變化分成一些小的運動,并在每個運動之間延時;程序4.4中的標準for循環(huán)讓舵機開始時在0°位置,每10?ms增加1°,直到舵機達到90°位置。

以上說明的Arduino平臺舵機組合控制實驗中,調試過程中需要注意解決以下三個易出故障的問題。

1)?舵機回到中間的初始化問題

2)?供電問題

3)?線材長度問題

綜上所述,舵機是一種簡單的旋轉運動電機,即一種位置(角度)伺服驅動器,適用于那些需要角度不斷變化并可以保持的系統(tǒng)。對于有些項目需用到同樣的運動位置精確控制的其他硬件,可以結合具體硬件器件數(shù)據(jù)文件,生成一個新的硬件庫實例,進行相應函數(shù)參數(shù)設置控制。

4.2

Arduino平臺循跡功能機器人實戰(zhàn)

基于Arduino控制器平臺設計的循跡功能機器人,能沿著地面上黑色軌跡實現(xiàn)循跡功能,也能檢測跑道兩側的擋板,沿擋板行駛實現(xiàn)避障功能。Arduino循跡避障機器人基本功能是:當前方沒有障礙物的時候,兩邊紅外傳感器燈不亮,表示前方無障礙,機器人前行沿著地面黑白線的黑線循跡前進。

在機器人的制作中,在循跡模塊上,由于黑白線地板對光線的反射系數(shù)不同,因此傳感器依據(jù)接收到的反射光強弱來判斷機器人小車前進方向。本節(jié)采用TCRT5000紅外對管檢測黑線,實現(xiàn)機器人識別并能沿著地面測試區(qū)域的黑白線中黑線行走;在避障模塊設計上,采用中間一個超聲波探頭HC-SR04超聲波傳感器發(fā)射和接收超聲波,實現(xiàn)障礙物距離的測量。整個機器人組成部分有主控電路模塊、電源、紅外檢測模塊、電機及驅動模塊等。若設計為兩個或三個紅外傳感器,則其邏輯布局可參考表4.1所示的紅外傳感器控制策略組合表。

采用差速換向控制機器人左右輪,實現(xiàn)機器人的左右轉、前進后退等電機控制動作,實現(xiàn)輪式機器人循跡和避障效果。圖4.3為機器人小車循跡的程序流程設計圖,其中圖4.3(a)為兩路傳感器循跡的流程圖,圖4.3(b)為三路傳感器循跡的流程圖。圖4.3機器人小車循跡的程序流程設計圖

在實驗室搭建的循跡和避障機器人,用基于Arduino控制器開發(fā)的機器人小車能夠實現(xiàn)發(fā)現(xiàn)并避開障礙物的功能,能夠完成在封閉橢圓形曲線或“8”字形曲線上的黑線循跡,如圖4.4所示為黑線循跡的機器人小車運行場景。圖4.4機器人小車循跡黑線路徑的運行場景

4.3

Arduino平臺視覺機器人實戰(zhàn)

1.圖像處理基本軟件方案

1)?Python

Python是一種面向對象、解釋型程序語言,在1989年發(fā)明并且1991年發(fā)行第一個公開發(fā)行版。Python是純粹的自由軟件、源代碼和解釋器,Python遵循GPL(GeneralPublicLicense)協(xié)議。Python語法簡潔清晰,特色之一是強制用空白符(WhiteSpace)作為語句縮進。Python具有豐富和強大的庫。Python常被稱為“膠水”語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結在一起。

2)?PIL(PythonImageLibrary)

PythonImagingLibrary(PIL)是PythonWare公司提供的免費的圖像處理工具包,是Python下的圖像處理模塊,支持多種格式,并提供強大的圖形與圖像處理功能。雖然在這個軟件包上要實現(xiàn)類似Matlab中的復雜的圖像處理算法并不太適合,但是Python的快速開發(fā)能力以及面向對象等諸多特點使得它非常適合用來進行原型開發(fā)。對于簡單的圖像處理或者大批量的簡單圖像處理任務,Python+PIL是很好的選擇。PIL庫僅適用于簡單的圖像處理,因為圖像處理要涉及Canny邊緣檢測、霍夫變換等較為復雜的圖像處理算法,而這是PIL庫所不具備的,所以我們考慮配合使用OpenCVforPython。

3)?OpenCV

OpenCV的全稱是OpenSourceComputerVisionLibrary。OpenCV是一個基于BSD許

可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows和MacOS操作系統(tǒng)上。它輕量級而且高效,即由一系列C函數(shù)和少量C++類構成,同時提供了與Python、Ruby、Matlab等的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。

2.圖像信息處理

1)?圖像信息傳輸?shù)耐ㄐ胚B接模塊

在Arduino平臺視覺機器人實戰(zhàn)中,首先需要設計將攝像頭采集到的圖像信息進行處理后再進行傳輸?shù)耐ㄐ胚B接模塊,這里介紹兩種方法,一種是采用藍牙無線模塊進行連接實現(xiàn),另一種是采用按鍵精靈中間件通信連接模塊進行連接實現(xiàn)。

(1)?使用藍牙無線通信模塊,具體連接測試過程是:

首先安裝Python的Pyserial庫;再使用HC-06模塊,引出接口包括VCC、GND、TXD、RXD,預留LED狀態(tài)輸出腳的狀態(tài)值,判斷藍牙是否已經連接到單片機上。

②LED指示藍牙連接狀態(tài),閃爍表示沒有藍牙連接,常亮表示藍牙已連接并打開了端口。

測量輸入電壓范圍為3.6~6V,未配對時電流約為30?mA,配對后電流約為10?mA,輸入電壓禁止超過7?V??梢灾苯舆B接各種5?V供電單片機(51、AVR、PIC、ARM、MSP430等)。

在未建立藍牙連接時,支持通過AT指令設置波特率、名稱、配對密碼,設置的參數(shù)可以掉電保存。當藍牙連接以后,從機能與各種帶藍牙功能的電腦、藍牙主機、大部分帶藍牙的手機、Android、PDA、PSP等智能終端配對,從機之間不能配對。

(2)?使用按鍵精靈中間件通信模塊,具體連接測試過程是:通過第三方程序——按鍵精靈腳本,將Python與OpenCV處理得到的結果從txt文本中傳輸?shù)紸rduinoIDE的串口監(jiān)視器中,需要保證txt文本數(shù)據(jù)與第三方程序、腳本在同一個文件里面。程序4.5為按鍵精靈腳本程序代碼。

2)?圖像信息傳輸通信過程

下面介紹視覺機器人圖像處理配置硬件上位機環(huán)境,例如基于VS2013的OpenCV視覺庫以及Arduino單片機結合來實現(xiàn)舵機組合控制。有以下兩種解決方案。

第一種解決方案:安裝好軟件VS2013與函數(shù)庫OpenCV相匹配的版本,在VS2013界面選擇工具選項卡,選擇擴展和更新選項,彈出一個窗口,在左側選擇聯(lián)機,在網(wǎng)上搜索VS2013官方提供的可用插件,然后在右側選擇ArduinoIDEforVisualStudio下載安裝即可。安裝后運行VisualStudio,會提示指定Arduino安裝地址(如“E:\Arduino-1.8.2”);待后面常規(guī)選項設置完成以后會收到Toolchainupdatecomplete的提示,這樣配置就生效了。

第二種解決方案:利用USB-TTL轉換插頭以及Arduino單片機的端口讀取功能實現(xiàn),將USB-TTL模塊連接在電腦上,用杜邦線分別連接單片機到模塊上的電源口、輸入端RX、輸出端TX以及地線。安裝驅動利用USB串口調試器調試完畢后直接將返回值輸出到TTL模塊并經過杜邦傳輸?shù)絾纹瑱C上。在VS上同樣有USB-TTL插件,下載好后,調用命令通過轉換模塊將返回值發(fā)送出去,通過單片機的模擬端口讀取功能在Arduino中讀取對應端口返回值;使用條件判斷語句判斷偏移方向設置函數(shù)以改變舵機角度,實現(xiàn)攝像頭的動態(tài)跟蹤功能。

以Arduino單片機為例的攝像頭機器人小車循跡系統(tǒng)主要部分的運行過程如下:首先,攝像頭的數(shù)據(jù)端口通過無線連接計算機上位機,并將攝像頭實物安裝在Arduino平臺機器人上;在計算機里面打開整個系統(tǒng)的上位機,在上面運行攝像頭,讀取循跡圖片,進行二值化,像素點提取計算讀值,并以txt文件形式輸出;然后,依托計算機強大的計算能力完成圖像處理數(shù)據(jù)決策,并生成決策編碼數(shù)據(jù)指令;最后,利用USB-TTL模塊連接到藍牙通信模塊,將發(fā)送的編碼數(shù)據(jù)指令傳輸?shù)较挛粰C藍牙模塊接收解碼。圖4.5所示為Arduino單片機、藍牙模塊間的通信連接,從而實現(xiàn)運行舵機、電機控制程序。圖4.5

Arduino單片機、藍牙模塊間的通信連接

3)?圖像像素閾值處理過程

圖像處理是計算機視覺處理最關鍵的步驟,用以去除圖像中的無關信息及噪聲,突出所需要的信息,如綜合用到的二值化,包括像素點提取、計算、讀值。一般地,一幅圖像包括目標物體、背景及噪聲。

3.?圖像像素點矩陣化

利用Python中numpy庫和scipy庫,可以進行圖像像素點矩陣化的數(shù)據(jù)操作和科學計算。這里首先需要導入基于Python、PIL、OpenCVforPython等一系列的頭文件和具體圖像處理程序實現(xiàn)的語句,如攝像頭調用指令:importcv2;importnumpyasnp;importtime。我們可以通過pip來直接安裝這兩個庫:pipinstallnumpy和pipinstallscipy。在Python中進行數(shù)字圖像處理,需要導入數(shù)據(jù)包操作,代碼fromPILimportImageimportnumpyasnpimportmatplotlib.pyplotasplt用于打開圖像并將其轉化為數(shù)字矩陣,系統(tǒng)顯示如程序4.6所示。

程序4.6所示代碼中調用numpy中的array()函數(shù)就可以將PIL對象轉換為數(shù)組對象。查看圖片信息,可用如下的方法實現(xiàn):

?printimg.shapeprintimg.dtypeprintimg.sizeprinttype(img)

如果是RGB圖片,那么轉換為array之后,就變成了一個rows?×?cols?×?channels的三維矩陣。因此,可以使用img[i,j,k]來訪問像素值。圖4.6所示為圖像“二值化”的結果。圖4.6圖像“二值化”的結果

4.數(shù)值讀入txt文件

將圖4.6所示的圖像像素點矩陣化的txt數(shù)據(jù)文件讀入處理的調用命令有open命令和讀文件命令。

1)?open命令

使用open打開文件后一定要記得調用文件對象的close()方法。比如可以用try/finally語句來確保最后能關閉文件,如程序4.7中代碼所示。

這里不能把open語句放在try塊里,因為當打開文件出現(xiàn)異常時,文件對象file_object無法執(zhí)行close()方法。

2)?讀文件命令

file在python中是一個特殊的類型,它用于在python程序中對外部的文件進行操作。在python中一切都是對象,file也不例外,file有它的方法和屬性。

4.4

Arduino平臺人臉面部表情識別模仿機器人

本節(jié)介紹作者所在創(chuàng)新團隊研究的基于機器學習的人臉面部表情識別系統(tǒng)。機器學習是研究計算機模擬人類學習行為的學科。其中,人臉表情識別結果是采用Arduino平臺控制的LED點陣屏來“模仿”,呈現(xiàn)已識別的人臉面部表情系統(tǒng)。

如圖4.7所示,采集提取每個人臉的68個特征點,采取Dlib工具包的shape_predictor_68_face_landmarks.dat.bz2模型文件中ibug300-W數(shù)據(jù)集訓練人臉特征點,提取模型,可識別多個人臉。圖4.7人臉68個特征點

圖4.8~圖4.12所示為在普通真實環(huán)境條件下,設計一個測試基于真實環(huán)境條件下出現(xiàn)的人臉表情識別的實驗。采用普通手機配置攝像頭,實時采集并提取每個人臉的68個特征點進行人臉檢測,基于shape_predictor_68_face_landmarks.dat.bz2模型文件中ibug300-W數(shù)據(jù)集訓練每一幀人臉畫面,提取人臉特征點模型,進行表情識別。圖4.8~圖4.12所示分別為測試程序無法識別人臉以及程序識別四種人臉表情結果輸出的五種不同情況,采用Arduino平臺控制的LED點陣屏均能正確顯示相應不同內容。

1.?程序未啟動或未識別到人臉

如圖4.8所示,攝像頭面對的人臉被遮擋,上位機人臉識別程序判斷為未啟動程序或未識別到人臉,相應LED點陣屏顯示出提前編寫相應內容的提示符。

圖4.8程序未啟動或未識別到人臉的測試效果

2.人臉愉快表情的識別

圖4.9顯示,攝像頭面對的人臉為愉快表情,上位機人臉識別程序判斷為未啟動程序或未識別到人臉,相應LED點陣屏顯示出提前編寫相應內容的提示符。圖4.9愉快表情人臉特征識別測試效果

3.人臉驚訝表情的識別

圖4.10顯示,攝像頭面對的人臉為驚訝表情,上位機人臉識別程序判斷為未啟動程序或未識別到人臉,相應LED點陣屏顯示出提前編寫相應內容的提示符。

圖4.10驚訝表情人臉特征識別測試效果

4.人臉憤怒表情的識別

圖4.11顯示,攝像頭面對的人臉為憤怒表情,上位機人臉識別程序判斷為未啟動程序或未識別到人臉,相應LED點陣屏顯示出提前編寫相應內容的提示符。圖4.11憤怒表情人臉特征識別測試效果

5.?人臉平靜表情的識別

圖4.12顯示,攝像頭面對的人臉為平靜表情,上位機人臉識別程序判斷為未啟動程序或未識別到人臉,相應LED點陣屏顯示出提前編寫相應內容的提示符。

圖4.12平靜表情人臉特征識別測試效果第五章MSP430平臺機器人實戰(zhàn)5.1

MSP430微控制器基礎5.2

MSP430平臺例程實戰(zhàn)5.3基于MSP430平臺的循跡功能機器人實戰(zhàn)

5.1

MSP430微控制器基礎5.1.1

MSP430簡介

MSP430系列單片機是TI公司1996年推向市場的一種16位超低功耗的混合信號處理器(MixedSignalProcessor)。MSP430系列單片機主要針對實際應用需求,把模擬電路、數(shù)字電路和微處理器集成到一個芯片上,提供“單片”解決方案的平臺。MSP430系列單片機種類繁多,并有特定的命名規(guī)則,詳細的命名規(guī)則可以查詢手冊。其中,片內存儲器類型有POM(C)、EPROM(E)、FLASH(F)、OTP(P)、USER(U)等。

各類型存儲器特性如表5.1所示。

MSP430系列單片機性能卓越,發(fā)展迅速,應用日趨廣泛。MSP430系列單片機的主要特點有:

(1)?超低功耗。

(2)?強大的處理能力。

(3)?高性能模擬技術及豐富的片內外設。

(4)?系統(tǒng)工作穩(wěn)定。

(5)?方便高效的開發(fā)環(huán)境。

5.1.2

MSP430的集成開發(fā)環(huán)境

1.?IAR簡介

目前MSP430系列單片機最常用的兩個集成開發(fā)環(huán)境為IARForMSP430和CCS。IAR是全球領先的嵌入式系統(tǒng)開發(fā)工具和服務的供應商。公司成立于1983年,迄今已近40年,提供的產品和服務涉及嵌入式系統(tǒng)的設計、開發(fā)和測試的每一個階段,包括帶有C/C++編譯器和調試器的集成開發(fā)環(huán)境(IDE)、實時操作系統(tǒng)和中間件、開發(fā)套件、硬件仿真器以及狀態(tài)機建模工具。

IAR最著名的產品是C編譯器IAREmbeddedWorkbench,該編譯器支持眾多知名半導體公司的微處理器。許多全球著名的公司都在使用IARSYSTEMS提供的開發(fā)工具開發(fā)他們的前沿產品,從消費電子、工業(yè)控制、汽車應用、醫(yī)療、航空航天到手機應用系統(tǒng)都可見IAR的應用。IAR的主要特點包含以下幾個方面:

·集成工程管理工具和編輯器,不需要外部編輯器。

·支持C和C++,針對MSP430做了優(yōu)化。

·自動檢查MISRA-C:2004標準。

·針對所有的MSP430都有配置文件,方便所有型號的開發(fā)。

·支持硬件調試。

·支持匯編重定位。

·具備鏈接器和庫管理工具。

·支持C-SPY的調試仿真。

2.?CCS簡介

CCS(CodeComposerStudio)是TI公司的DSP、微處理器和應用處理器的集成開發(fā)環(huán)境。CCS包含一整套用于開發(fā)和調試嵌入式應用的工具。它包含適用于每個TI器件系列的編譯器、源碼編輯器、項目構建環(huán)境、調試器、描述器、仿真器以及多種其他功能。CCSIDE提供了單個用戶界面,可幫助您完成應用開發(fā)流程的每個步驟。借助于精密的高效工具,用戶能夠利用熟悉的工具和界面快速上手并將功能添加至他們的應用中。

CCS的主要特點包含以下幾個方面:

(1)?CCS4.0版本之后的CCS支持TI公司的整個產品線,包括DSP、ARM和MSP430。

(2)?硬件調試與仿真功能強大。CCS支持IEEE1149.1(JTAG)和邊界掃描,支持JTAG調試,可以非插入式的方式訪問寄存器和存儲器。

(3)?實時模式,可調試與不可禁用的中斷進行交互的代碼。實時模式使您能夠在事件中斷時暫停背景代碼,并可繼續(xù)執(zhí)行對時間要求極其嚴格的中斷服務例程。

(4)?多內核操作,例如同步運行、步進和中止,包括內核間觸發(fā),實現(xiàn)一個內核觸發(fā)其他內核中止的功能。

(5)?CCS對于我們所用的MSP430具備圖形化的配置工具GRACE,GRACE容易進行參數(shù)設定,不需要手動編寫代碼;CCS具備低功耗專家,這個插件可以幫助你選擇合理的低功耗模式,為系統(tǒng)設計降低功耗。

3.?編程語言特點

MSP430單片機解決具體問題時可以用匯編語言或者C語言來編寫程序。相對于匯編語言,C語言存在以下優(yōu)點:

·對于單片機的指令系統(tǒng)不要求了解,對存儲器結構簡單了解即可;

·CPU內寄存器的分配、不同存儲器的尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理;

·程序由函數(shù)構成,程序結構化;

·可調用系統(tǒng)提供的許多標準子函數(shù);

·編程及調試時間縮短,效率提高;

·移植性比較好用。

5.2

MSP430平臺例程實戰(zhàn)

5.2.1花樣LED的控制實戰(zhàn)本小節(jié)將利用MSP430單片機的端口模塊控制數(shù)碼管,實現(xiàn)按下按鍵S1,數(shù)碼管的顯示數(shù)字依次增加;按下按鍵S2,數(shù)碼管的顯示數(shù)字依次遞減。通過控制點亮LED燈,熟練使用MSP430單片機開發(fā)版;熟悉單片機內部結構;熟練掌握單片機程序在線調試方法;熟悉單片機端口模塊的輸入輸出功能;熟悉單片機端口寄存器的使用;可以使用MSP430單片機實現(xiàn)數(shù)碼管的控制。

查看所使用的MSP430單片機的端口資源。端口相關寄存器有:PxDIR、PxIN、PxOUT、PxIFG、PxIE、PxIES、PxSEL、PxREN、PxDS、PxIV。完成上面的任務主要使用PxDIR、PxIN、PxOUT、PxREN四個寄存器。

1)?PxDIR寄存器

PxDIR寄存器相互獨立的8位分別定義了8個引腳的輸入/輸出方向。8位在PUC后被復位。0:輸入模式;1:輸出模式。

2)?PxIN寄存器

PxIN寄存器為輸入寄存器式只讀寄存器,用戶不能對其寫入,只能通過讀取該寄存器內容知道I/O端口的輸入信號。

3)?PxOUT寄存器

PxOUT寄存器為I/O端口的輸出緩沖寄存器。0:?引腳輸出低電平;1:?引腳輸出高電平。

4)?PxREN寄存器

PxREN寄存器為I/O端口的上/下拉電阻使能寄存器。0:?上/下拉電阻禁止;1:?上/下拉電阻使能。在上/下拉電阻使能的情況下,該寄存器需配合PxOUT寄存器一起使用。PxOUT置1則設置為上拉電阻使能,PxOUT置0則設置為下拉電阻使能。

針對任務設計硬件連接電路,如圖5.1所示為控制數(shù)碼管中顯示不同數(shù)字的硬件連接電路。電路中包括單片機開發(fā)板與數(shù)碼管、按鍵三個部分。圖5.1控制數(shù)碼管中顯示不同數(shù)字的硬件連接電路

如圖5.2所示為LED十六進制編碼的硬件連接顯示圖,其數(shù)碼管為共陽極數(shù)碼管,當單片機的P1.0~P1.7輸出了低電平時,點亮相應的LED燈。因此,設置P1端口為輸出引腳(P1DIR=0XFF),P1.0~P1.5對應的引腳輸出低電平(P1OUT=0X48),數(shù)碼管則顯示數(shù)字“0”,以此類推,通過控制MSP430F5529的P1端口實現(xiàn)數(shù)碼管的數(shù)字顯示,如圖5.2所示。按鍵S1、S2連接單片機的P2.1和P2.2引腳,設置P2端口的P2.1、P2.2引腳為輸入引腳(默認),且設置內置上拉電阻,使P2.1、P2.2引腳默認輸入高電平(P2REN=0x0A,P2OUT=0x0A),這樣可通過判斷P2.1、P2.2輸入的是高電平還是低電平來判斷按鍵是否按下(if((P2IN&BIT1)==0))。圖5.2

LED十六進制編碼的硬件連接顯示圖

閱讀程序5.1的MSP430的數(shù)碼管顯示程序代碼,嘗試總結程序的功能。理解程序5.1給出的例程,在IAREW430軟件/CCS軟件編寫程序中編寫程序。在電腦上安裝BSL驅動程序,連接單片機開發(fā)板與PC機,在設備管理器中可查看單片機端口號??墒褂肂SL編譯軟件將程序燒寫到單片機中,觀察按下按鍵S1,數(shù)碼管中顯示數(shù)字是否依次增加(如圖5.2所示)。如果開發(fā)板上有在線仿真模塊,也可以進行在線調試,如程序5.1中代碼所示。程序5.1代碼例程中給出數(shù)碼管能夠顯示依次增加的數(shù)字,自己可以結合任務要求自行編寫程序。實現(xiàn)按下按鍵S1后數(shù)碼管中顯示數(shù)字依次增加;按下按鍵S2后數(shù)碼管中顯示數(shù)字依次遞減。

5.2.2中斷控制花樣LED顯示

本小節(jié)利用MSP430單片機的端口模塊中斷功能控制數(shù)碼管。實現(xiàn)按下按鍵S1后數(shù)碼管中顯示數(shù)字依次增加;按下按鍵S2后數(shù)碼管中顯示數(shù)字依次遞減。通過中斷控制點亮LED的順序,熟悉單片機端口模塊的中斷功能;熟悉單片機端口寄存器的使用;使用MSP430單片機實現(xiàn)數(shù)碼管的控制。

MSP430系列單片機內數(shù)據(jù)模塊有多個端口(P1~Px)。一般只有P1、P2端口具有中斷功能。相關寄存器主要有PxDIR、PxIN、PxOUT、PxIFG、PxIE、PxIES、PxSEL、PxREN;本小節(jié)我們主要使用PxIE、PxIES、PxIFG三個寄存器。

1)?PxIE寄存器

PxIE寄存器為I/O端口的中斷使能寄存器。Px口的每一個引腳都有一位用于控制該引腳是否允許中斷,其中,0:禁止中斷;1:允許中斷。

2)?PxIES寄存器

PxIES寄存器為I/O端口的中斷觸發(fā)沿,屬于選擇寄存器。其中,0:上升沿,使相應的標志位置位;1:下降沿,使相應的標志位置位。

3)?PxIFG寄存器

PxIFG寄存器為I/O端口的中斷標志寄存器。該寄存器為8個標志位,標志相應引腳是否有待處理中斷的信息,即相應引腳是否有中斷請求。其中,0:沒有中斷請求;1:有中斷請求。

閱讀下面的程序5.2所給示例代碼,嘗試總結程序的功能,并理解下面給出的例程,編寫并調試程序,將程序燒寫到單片機中,觀察按下按鍵S1后數(shù)碼管中顯示數(shù)字是否依次增加。

參考程序5.2中的例程,結合任務要求,自己編寫程序?;谥袛鄬崿F(xiàn)按下按鍵S1后數(shù)碼管中顯示數(shù)字依次增加;按下按鍵S2后數(shù)碼管中顯示數(shù)字依次遞減。對比上一節(jié)的程序與本節(jié)的程序所實現(xiàn)的功能,體會中斷的功能。

5.2.3調用定時器/寄存器的實戰(zhàn)

本小節(jié)將利用MSP430單片機的定時器A產生方波和PWM信號,通過完成本任務,熟悉單片機16位定時器A的工作原理。本任務要使用MSP430單片機的定時器和寄存器。MSP430單片機的一般寄存器說明如表5.2所示。

1.?MSP430單片機內的定時器和寄存器

MSP430單片機內定時器A內部結構一般包含一個定時器模塊(TimerBlock)和多個捕獲比較模塊(CCR0~CCRx),所有的捕獲比較模塊具有相同的結構。定時器模塊相關的寄存器有TACTL、TAR、CCR0~CCR2、TACCTL0~TACCTL2。其中TACTL、TACCTL0~TACCTL2為控制寄存器(不同型號的寄存器的名稱會略有不同,請查閱各型號單片機的用戶手冊,手冊中可以查閱并給出MSP430F149系列的定時器A的內部結構圖)。其一般說明如表5.2控制寄存器各位定義示例。

2.?Protues軟件仿真

如果沒有硬件條件,可以使用Protues軟件來模擬整個實踐過程。本小節(jié)將引導大家在沒有硬件條件的基礎上模擬使用MSP430單片機。通過以下幾個步驟可以實現(xiàn)Protues軟件仿真:

(1)?安裝Protues軟件。

(2)?添加元器件。

點擊,然后點擊,搜索RES添加電阻,搜索CRYSTAL添加晶振,搜索LED-RED添加二極管,搜索CAP添加電容。

點擊,其中POWER為5V電壓,GROUND為接地端。

點擊,其中OSCILLOSCOPE為示波器。

(3)?填寫低頻晶振的頻率32?768?Hz,填寫高頻晶振的頻率8?MHz。

(4)?雙擊芯片,在仿真環(huán)境中設置系統(tǒng)時鐘。

(5)?打開軟件IAR430。在IAR430中新建一個項目文件,參考下列程序5.3編寫代碼,實現(xiàn)P1.0輸出一定頻率的方波信號。(程序5.3所示為MSP430實現(xiàn)P1.0輸出一定頻率的方波信號的程序代碼。)

分析程序中哪個中斷服務程序會被執(zhí)行,參考程序5.3,可以修改寄存器設置,重復多次并記錄結果。分析定時器時鐘源、CCR0、與方波周期之間的關系。有條件的同學可以將程序燒寫到MSP430開發(fā)板,外接示波器觀察輸出的方波信號。

程序5.4為MSP430的PWM輸出程序代碼,請閱讀該程序并嘗試總結程序的功能。理解下面給出的例程,編寫并調試程序,將程序燒寫到Protues項目或單片機中,從示波器觀察輸出波形。在程序5.4所示代碼中設置CCR0的值,觀察輸出的PWM信號,記錄輸出波形的周期;改變CCR0的值,觀察輸出的PWM信號,記錄輸出波形的周期。設置CCR1的值,觀察輸出的PWM信號,記錄輸出波形的占空比。改變CCR0的值,觀察輸出的PWM信號,記錄輸出波形的占空比。分析CCR0、CCR1與PWM周期和信號之間的關系。

(6)?若要生成Protues中可用的程序,需對項目文件輸出的文件重新進行設置。

(7)?點擊Make,在根目錄Debug文件夾內的exe文件夾內生成.hex文件。

在Protues軟件硬件電路圖中雙擊芯片MSP430F249,將生成的.hex文件加載到programfiles內。

(8)?單擊按鈕進行仿真運行。在示波器中查看并記錄產生的方波信號。

通過定時器A的輸出模塊產生PWM信號。PWM信號是一種具有固定周期不定占空比的數(shù)字信號。當定時器A工作在MC0增計數(shù)方式及OUTMOD_7(復位、置位模式)時,定時器A的輸出模塊可輸出PWM信號。其中,CCR0控制PWM的周期,CCR1/CCR2控制PWM的占空比。

5.3基于MSP430平臺的循跡功能機器人實戰(zhàn)

5.3.1機器人循跡功能的整體方案設計基于MPS430單片機的智能機器人小車,主要以舵機、電機、五個傳感器組成其主要核心部分。圖5.3為基于MSP430的智能循跡機器人小車實物照片,其前端由2~6個紅外光電傳感器構成,排成一排,構成對車輛偏差的模糊檢測。智能車為四輪結構,舵機作轉向機,其轉向功能由16位精度的PWM信號控制。智能車后輪由2組減速電機驅動,2路8位精度的PWM信號和驅動器一起控制電機的轉速。圖5.3基于MSP430的智能循跡機器人小車實物照片

對于圖5.3所示的基于MSP430的智能循跡機器人小車,基于MSP430控制器實現(xiàn)其循跡功能的具體要點如下:

(1)?循跡檢測模塊,由4個紅外光電傳感器構成的前端探測路徑,可以排成不均勻間隔的1排,實現(xiàn)對車輛偏差的模糊檢測。

(2)?控制執(zhí)行模塊,把MSP430控制器輸出的16位精度的PWM信號作為轉向機的舵機控制執(zhí)行信號,實現(xiàn)前輪2組電機的轉向執(zhí)行功能;采用2路8位精度的PWM信號與驅動器一起控制兩個后輪的電機轉速,實現(xiàn)循跡轉速的功能。

(3)?機器人小車控制器采用MSP430F5529單片機,這是TI公司出品的超低功耗高性能單片機。

(4)?設計好的智能車實時采集紅外傳感器的信號以檢測車輛的偏差,修正舵機位置偏差,驅動后輪電機行進。

5.3.2循跡機器人的硬件設計

1.?舵機模塊

本實驗用機器人小車采用PWM直流調速系統(tǒng),直流電機型號可自選,指標滿足DC10~15V、200~1000?r/min、5~20?W即可。圖5.4所示為循跡機器人小車信息傳輸控制原理示意圖,舵機的力矩輸出臂帶動位置輸出伺服舵機機械部件,使輪胎轉向,而伺服舵機機械部件正確安裝在車輛轉彎的執(zhí)行部件的轉向前橋上。圖5.4循跡機器人小車信息傳輸控制原理示意圖

多個紅外傳感器用于檢測軌跡,將采集到的路徑信息從P6.0~P6.4輸入,紅外傳感器檢測到黑色軌跡時,輸入低電平0,檢測到白色軌跡時輸入高電平1。采用定時器TA1.1(定時器A1的CCR1模塊的輸出引腳),其對應的引腳為P2.0,連接舵機信號線。采用定時器TA2.1和TA2.2輸出驅動兩個電機的PWM信號,對應的輸出引腳為P2.4、P2.3。其硬件連接示意圖如圖5.5所示。圖5.5硬件連接示意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論