文章以MSP430系列單片機(jī)為核心,提出了一種輪式移動(dòng)機(jī)器人的軟硬件設(shè)計(jì)方案,闡述了其通過(guò)傳感器網(wǎng)絡(luò)來(lái)進(jìn)行避障、遍歷等自主控制,并實(shí)現(xiàn)機(jī)器人與PC機(jī)間無(wú)線(xiàn)控制的方法。 1 引言 自主式移動(dòng)機(jī)器人是指能根據(jù)任務(wù)及環(huán)境信息做出全局路徑規(guī)劃,可在行進(jìn)中不斷感知局部環(huán)境信息并自主作出決策,從而能夠安全行駛并到達(dá)目標(biāo)的智能系統(tǒng)。移動(dòng)機(jī)器人可廣泛應(yīng)用于工業(yè)、國(guó)防以及服務(wù)性行業(yè)。如自動(dòng)割草機(jī)、洗塵機(jī)器人、教育機(jī)器人等。本文以MSP430單片機(jī)為核心介紹了一種移動(dòng)機(jī)器人的設(shè)計(jì)雛形,該系統(tǒng)利用各種傳感器感知周?chē)h(huán)境,并在計(jì)算機(jī)與單片機(jī)之間實(shí)現(xiàn)無(wú)線(xiàn)通信,從而以無(wú)線(xiàn)方式控制移動(dòng)機(jī)器人。 MSP430是美國(guó)TI公司推出的16位高性能系列單片機(jī),其高效16位精簡(jiǎn)指令結(jié)構(gòu)可以確保任務(wù)的快速執(zhí)行,大多數(shù)指令可以在一個(gè)時(shí)鐘周期里完成,且具有高級(jí)語(yǔ)言編程能力,配套友好方便的集成開(kāi)發(fā)環(huán)境足可加速軟件的開(kāi)發(fā)。由于MSP430采用了JTAG技術(shù)、FLASH 在線(xiàn)編程技術(shù)、BOOT-STRAP等諸多先進(jìn)技術(shù),因此具有很高的性?xún)r(jià)比,并有超低的功耗和豐富的片上外圍資源,很適合作為移動(dòng)設(shè)備的微控制器來(lái)用。 2 硬件結(jié)構(gòu) 筆者選用的MSP430F1232內(nèi)含8kB可重復(fù)編程快閃存儲(chǔ)器、256字節(jié)只讀存儲(chǔ)器(RAM)、多通道脈寬調(diào)制?PWM計(jì)時(shí)器、看門(mén)狗計(jì)時(shí)器和USART通訊模塊等,采用28腳TSSOP封裝,因此易于進(jìn)行小型化設(shè)計(jì)。MSP430F1232主要用來(lái)產(chǎn)生兩路PWM信號(hào),以對(duì)傳感器信息進(jìn)行處理。同時(shí),筆者還選用電機(jī)驅(qū)動(dòng)芯片L293D來(lái)驅(qū)動(dòng)直流電機(jī),并利用霍爾元件來(lái)檢測(cè)電機(jī)速度;此外還安裝了紅外避障和光敏傳感器以獲取環(huán)境信息,并利用語(yǔ)音電路ISD25120來(lái)進(jìn)行交互,而通過(guò)微控制器的UART經(jīng)232接口芯片后利用無(wú)線(xiàn)模塊PTR2000可與PC機(jī)端的無(wú)線(xiàn)模塊進(jìn)行通訊。圖1所示為其系統(tǒng)框圖。 2.1 PWM脈寬調(diào)制 MSP430單片機(jī)的Timer_A是一個(gè)非常有用的定時(shí)器,它可支持同時(shí)進(jìn)行的多種時(shí)序控制、多個(gè)捕獲/比較功能以及多種輸出波形,也可以支持上述功能的組合。這里用Timer_A來(lái)產(chǎn)生兩路PWM信號(hào),并分別接L293D的12EN和34EN,以用來(lái)控制兩個(gè)電機(jī)的起停、轉(zhuǎn)向及速度。定時(shí)器工作在增計(jì)數(shù)模式時(shí),可由捕獲/比較寄存器CCR0確定周期T,而由CCR1和CCR2產(chǎn)生兩路PWM信號(hào)。輸出單元選擇模式2。改變CCR1和CCR2的值,即可改變PWM信號(hào)的占空比,從而改變電機(jī)轉(zhuǎn)速。 L293D的芯片電壓為5V,電機(jī)驅(qū)動(dòng)電壓VCC2為11.4V?可通過(guò)3節(jié)3.8V的鋰電池提供,5V電壓經(jīng)整流橋后可由穩(wěn)壓器LDO7805提供,MSP430F1232的3.3V供電電壓可由LM33穩(wěn)壓輸出。L293D與單片機(jī)的連接圖如圖2所示。 2.2 語(yǔ)音電路 語(yǔ)音電路采用120秒的語(yǔ)音芯片ISD25120來(lái)實(shí)現(xiàn),該芯片有多種封裝,本設(shè)計(jì)采用小巧的28SOIC封裝,它控制簡(jiǎn)單,其P/T引腳為錄放控制端,CE引腳為放音/暫停控制端,PD為RESET信號(hào),這些RE-SET信號(hào)端可接單片機(jī)的I/O口P2.0、2.1、2.2,地址位的最高兩位A8和A9均為高時(shí),地址/模式輸入端為模式選擇,否則為地址輸入。在與MSP430F1232連接時(shí),A6、A8、A9接P3.6,A0接P3.7,其余地址引腳接地,這樣就可方便地對(duì)ISD25120進(jìn)行地址選段選擇或模式控制。 2.3 充電電路 充電電路采用無(wú)需控制器的智能快速充電器MAX1758來(lái)實(shí)現(xiàn),MAX1758可對(duì)1~4節(jié)鋰電池進(jìn)行充電,輸入電壓范圍在4~28V,電池充電電壓可通過(guò)VADJ引腳進(jìn)行設(shè)置,并通過(guò)外接電容設(shè)置預(yù)充和快充的充電時(shí)間,同時(shí)可通過(guò)LED來(lái)指示當(dāng)前的充電狀態(tài)。充電電源采用24V直流電源。 2.4 無(wú)線(xiàn)通信模塊 考慮到自主機(jī)器人的特點(diǎn),計(jì)算機(jī)與機(jī)器人的通信采用無(wú)線(xiàn)通信方式較為適宜。筆者選用微小型、低功耗、高速率、19.2K無(wú)線(xiàn)收發(fā)數(shù)傳MODEM芯片PRT2000來(lái)完成計(jì)算機(jī)與機(jī)器的無(wú)線(xiàn)通信,該MODEM的工作頻率為國(guó)際通用的數(shù)傳頻段433MHz,采用FSK調(diào)制,可連接到計(jì)算機(jī)RS232接口。因?yàn)闆](méi)有信號(hào)時(shí),PTR2000的串口會(huì)輸出隨機(jī)數(shù)據(jù),因此需要定義一個(gè)簡(jiǎn)單的指令協(xié)議,設(shè)計(jì)時(shí)可加開(kāi)始字符、校驗(yàn)位、結(jié)束標(biāo)志等,校驗(yàn)采用CRC校驗(yàn)。傳輸協(xié)議定義為: [開(kāi)始字符][數(shù)據(jù)1][數(shù)據(jù)2][8位校驗(yàn)][結(jié)束字符] 在各種校驗(yàn)方法中,奇偶校驗(yàn)容易實(shí)現(xiàn),但不太可靠,因其只能發(fā)現(xiàn)奇數(shù)個(gè)錯(cuò)誤;校驗(yàn)和不能發(fā)現(xiàn)次序錯(cuò)誤,相比之下,CRC更可靠些。系統(tǒng)首先生成多項(xiàng)式G(X)=X8+X6+X2+1?然后生成8位CRC校驗(yàn)數(shù)據(jù)。 MSP430F1232中集成的高速通用同步-異步收發(fā)器(USART)可設(shè)置成用于UART或串行外設(shè)接口(SPI)中的任一模式,本例采用UART異步模式。MSP430的USART與PTR2000連接時(shí),PTR2000的DO和DI直接與單片機(jī)的URXD0和UTXD0連接,計(jì)算機(jī)串口的RXD和TXD需經(jīng)電平轉(zhuǎn)換?MAX232與PTR2000相連。計(jì)算機(jī)端可采用VisualBasic編寫(xiě)程序,以實(shí)現(xiàn)對(duì)機(jī)器人的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、暫停及速度調(diào)節(jié)等基本控制。對(duì)于收發(fā)狀態(tài)的控制,單片機(jī)端可直接通過(guò)將一輸出口置1或置0來(lái)將無(wú)線(xiàn)收發(fā)模塊置于發(fā)射或接收狀態(tài),而對(duì)計(jì)算機(jī)串口的控制則可通過(guò)VB內(nèi)MSComm控件的RTSEnable屬性來(lái)實(shí)現(xiàn)。 3 軟件設(shè)計(jì) 系統(tǒng)軟件根據(jù)任務(wù)不同一般會(huì)有所差別。本系統(tǒng)軟件在啟動(dòng)后先初始化,然后通過(guò)紅外傳感器以及霍爾元件等傳感器將環(huán)境循環(huán)掃描一周。需指出的是,完成一周需要有傳感器信號(hào)來(lái)指示,然后才能遍歷實(shí)驗(yàn)環(huán)境,遍歷環(huán)境采用先橫向走遍整個(gè)環(huán)境,再縱向遍歷的方法。在無(wú)線(xiàn)控制信息時(shí),系統(tǒng)將通過(guò)中斷進(jìn)行相應(yīng)處理。機(jī)器人還可以通過(guò)傳感器實(shí)現(xiàn)循跡(黑線(xiàn))行走和尋找光源等功能。在PC端,用VB編的一個(gè)簡(jiǎn)單的機(jī)器人控制界面可非常方便的設(shè)定機(jī)器人的平移速度和旋轉(zhuǎn)速度,實(shí)時(shí)控制機(jī)器人前行、后退、左轉(zhuǎn)、右轉(zhuǎn)以及運(yùn)動(dòng)停止等。 圖3給出了單片機(jī)端的程序流程圖以及串行中斷子程序。 4 結(jié)束語(yǔ) 本文介紹了一種輪式移動(dòng)機(jī)器人的設(shè)計(jì)方案,該系統(tǒng)的程序和PC端的無(wú)線(xiàn)控制相對(duì)獨(dú)立,無(wú)線(xiàn)控制只是完成一些簡(jiǎn)單的動(dòng)作控制。在此基礎(chǔ)上,可進(jìn)一步研究移動(dòng)機(jī)器人在未知環(huán)境中如何感知、學(xué)習(xí)、分析及處理周?chē)h(huán)境信息,并運(yùn)用神經(jīng)網(wǎng)絡(luò)及遺傳算法等進(jìn)行規(guī)劃來(lái)實(shí)現(xiàn)自學(xué)習(xí)功能的方法。這樣,人為指令就可以完全由計(jì)算機(jī)在分析、處理后自動(dòng)發(fā)出,從而實(shí)現(xiàn)真正意義上的機(jī)器人自主行為。 |