基于ARM的嵌入式系統(tǒng)在機(jī)器人控制系統(tǒng)中的應(yīng)用
3.2 系統(tǒng)設(shè)計
此系統(tǒng)的設(shè)計主要是為了能夠滿足多種機(jī)器人控制需求,同時兼顧機(jī)器人對控制器體積、重量、功耗等敏感的特性。
上位機(jī)CPU選用Samsung公司的基于ARM920T[5,6]核(適用于實時環(huán)境)的低功耗、16/32 bit、高性能RISC微控制器S3C2410,它的主頻為266MHz;操作系統(tǒng)選用源碼公開、專為ARM設(shè)計的、可靠性高的實時、多任務(wù)內(nèi)核arm- Linux;下位機(jī)選用Ti公司的具有低功耗、靈活指令集、內(nèi)部操作靈活、高速的運算能力等性能的DSP-TMS320LF2407。
3.2.1 體系結(jié)構(gòu)
基于ARM、DSP和arm-Linux的機(jī)器人控制系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。
圖1 機(jī)器人控制器硬件結(jié)構(gòu)
上位機(jī)主要解決算法問題,處理各個傳感器送回的信號,根據(jù)各個信號,向下位機(jī)發(fā)送控制命令,同時,上位機(jī)接收來自下位機(jī)的信號,判斷下位機(jī)的狀態(tài),以便發(fā)送相應(yīng)的數(shù)據(jù)和命令。下位機(jī)主要是對電機(jī)的控制,根據(jù)上位機(jī)發(fā)送過來的命令和數(shù)據(jù),結(jié)合前饋算法和PID算法,對電機(jī)進(jìn)行速度、位置等控制。
不同類型的機(jī)器人,其主要區(qū)別在于上位機(jī)的算法編寫,上位機(jī)的算法與具體的機(jī)器人所要求完成的任務(wù)有關(guān)。在一個機(jī)器人系統(tǒng)中,只需一個上位機(jī),作為機(jī)器人的“大腦”;下位機(jī)的個數(shù)則根據(jù)機(jī)器人需要而定。
3.2.2 硬件設(shè)計
硬件設(shè)計的原則是:部件模塊化,接口標(biāo)準(zhǔn)化,互換性、擴(kuò)展性好,可靠性高。
硬件可劃分為CPU模塊、外設(shè)模塊。兩個模塊層可疊在一起,機(jī)械上可拆分,相互之間有接口相連,便于互換和維護(hù)。
1)CPU模塊:上位機(jī)包括S3C2410、SDRAM、NAND FLASH、晶振等系統(tǒng)運行的基本要素;下位機(jī)包括TMS320LF2407、SDRAM、晶振等系統(tǒng)運行的基本要素。
2)外設(shè)模塊:上位機(jī)包括電源接口、485總線接口、A/D接口、I/O接口、PWM接口、下位機(jī)通訊接口、USB HOST接口、USB SLAVE 接口、LCD接口等,同時它也是傳感器模塊和CPU模塊連接的橋梁;下位機(jī)包括電源接口、485總線接口、I/O接口、PWM接口、光電編碼器接口、上位機(jī)通訊接口、A/D接口,F(xiàn)LASH等。
S3C2410芯片本身集成了一些通用的外圍器件,所以像A/D、USB、I/O等通道直接利用其資源。片內(nèi)的2個UART分別用作485總線及與下位機(jī)通訊接口,這兩個串口屬于對外連接口,為了避免引入外界干擾,用高速光隔HCPL2630進(jìn)行隔離。 TMS320LF2407芯片本身也集成了一些通用的外圍器件,可直接利用PWM、A/D、I/O、光電編碼器接口等資源。片內(nèi)UART用作與上位機(jī)通訊接口,也用了光電隔離。
針對不同的機(jī)器人,硬件部分只需做簡單的接口調(diào)整或傳感器增刪。
控制器集成尺寸:上位機(jī)模塊為60mm×45mm×35mm,總功耗約為5V ×200mA,其中CPU模塊功耗盡為3.3V×30mA;下位機(jī)模塊尺寸60mm×40mm×30mm,功耗也是很低的,而一般的PC104總線CPU模塊功耗約為5V×1000mA。
3.2.3 軟件設(shè)計
軟件設(shè)計的基本原則是:軟件結(jié)構(gòu)化,驅(qū)動標(biāo)準(zhǔn)化,系統(tǒng)可定制[13]。
軟件設(shè)計的主要工作是操作系統(tǒng)的移植、驅(qū)動程序的設(shè)計、常用API函數(shù)的封裝、多任務(wù)的分解與設(shè)計、上位機(jī)算法的編寫和下位機(jī)驅(qū)動程序與算法的編寫等。其中關(guān)鍵在于上下位機(jī)的同步性,當(dāng)多個控制器一起工作時,同步問題更加重要了。上位機(jī)把數(shù)據(jù)傳送給下位機(jī),先把控制器的標(biāo)號給傳下去,只有與此號碼相對應(yīng)模塊才能接收下面的數(shù)據(jù),當(dāng)下位機(jī)接收到信號后,需要向上位機(jī)發(fā)送一個確認(rèn)信號。需要同步多個處理器,分別占用總線。為了使多機(jī)通訊同步,不發(fā)生信號沖突,在設(shè)計硬件時,每個微處理器使用了一個I/O口,并把每個處理器的I/O口用線連在一起。當(dāng)一個控制器接收或發(fā)送數(shù)據(jù)時,向其它處理器發(fā)送一個高信號,來說明自己正在使用總線。接受到該信號的處理器得知總線正在忙,不再發(fā)送數(shù)據(jù),可避免總線沖突。事實證明這種方法是可行的,不會發(fā)生總線沖突,多處理器工作時同步性很好。
評論