孟慶仙
(云南機電職業技術學院 云南省昆明市 650203)
在機器人控制系統設計中,目前大多數控制系統仍然采用單片機或者ARM 等比較簡單的控制器,而本文采用當前比較流行的控制器件FPGA,對于多個I/O 控制也更加靈活方便。機器人在運動過程中的控制是由各個自由度由各種電機完成,而現在的最多的是伺服電機(舵機)。舵機由直流電機、電機控制器、電位器和減速器等構成,整體封裝在一個便于安裝的外殼里的伺服單元。能夠利用簡單的輸入信號比較精確的轉動給定角度的電機系統。舵機安裝了一個電位器(或角度傳感器)檢測輸出軸轉動角度,控制板根據電位器(或角度傳感器)的信息對輸出軸的角度進行控制盒調節,形成一個閉環的控制系統。為了降低成本,在本控制系統的設計中,驅動各關節的電機均采用舵機。
機器人是一種多自由度的機械,傳統的控制系統占用控制I/O口較多,且實現舵機的速度調節也占用大量的CPU 時間。系統結構如圖1所示。
機器人控制系統主要由FPGA 和舵機組成,FPGA 接收到來自于壓力傳感器傳遞過來的動作指令信號,將其轉化為能驅動舵機的PWM 波,通過改變它的占空比,來改變舵機所轉的度數,并且通過地址線的選擇來定位哪個舵機工作。FPGA 是整個控制系統的控制核心,也是整個系統最重要的組成部分。控制系統的軟件主要包括了通信模塊和動作譯碼模塊。通信模塊主要用來接受上位機傳來的動作定位信息,而動作譯碼模塊主要是對接收到的信息進行處理,根據定位信息來產生舵機的控制信號,讓機器人的各個關節協調運動,并且根據輸入信號的不同實時的調整舵機的角度。
基于FPGA 微處理器的仿人機器人控制系統與一般控制系統主要的差別是實現32 位的嵌入式系統操作,將存儲器、I/O 接口等外設嵌入到FPGA 中,組成一個可編程芯片系統。另外,利用SOPC設計中可復用的IP 核技術,大大降低了系統的成本、體積和功耗,完全能滿足機器人控制系統的要求。
本文選擇的舵機主要參數如下:可控轉角范圍-90°~90°??刂泼}寬范圍0.5 ~2.5ms,周期20ms,最大扭矩/堵轉扭矩1.0kgcm,最大速度/空載速度10rad/s。舵機采用的驅動信號是脈沖寬度調制信號(PWM),即在20ms 的周期內,輸入0.5 ~2.5ms 的脈沖寬度,對應的轉角范圍從-90°~90°,脈沖寬度與轉角基本呈線性關系。
在本論文中將利用FPGA 的SOPC 技術自行定義實現PWM 功能的IP 核,來實現基于NiosII 軟核處理器對機器人各個關節舵機的控制。

圖1:仿人機器人控制系統結構

圖2:下位機軟件設計流程

圖3
由壓力傳感器將驅動信號輸出到相對應的FPGA 引腳上,3 位地址線選擇控制9 個舵機,2 位數據線控制相應的動作(即舵機角度的變化)。
下位機軟件設計主要針對fpga 控制器的編程,主要是在quartusII10.0 中開發的。征途設計流程分為設計輸入,設計編譯,設計定時分析,設計仿真,器件編程5 個過程,下位機軟件主要包括了通信模塊和動作譯碼模塊。通信模塊主要用來接收上位機傳來的動作定位信息,而動作譯碼模塊主要是對接收到的信息進行處理,根據定位信息來產生舵機的控制信號,讓機器人的各個關節協調運動,做出我們想要的或事先編排好的類人的動作。下位機軟件設計程序主要流程如圖2所示。
上位機中壓力傳感器由于重力的變化引起了輸出電壓的變化,將電壓信號發送到下位機中。動作譯碼模塊主要功能就是在接收到的編碼信號后,對信號進行分析,判斷按鍵的動作,并進行舵機的選擇。根據動作的不同產生了控制8 路舵機的PWM 波形變化,進而控制機器人各個關節的運動,進行動作的編排。
機器人的所有動作都是根據重力變化不同而進行實時的調整,它是在一定的時間與序列上的位置和姿態的組合,所以一旦選中某個舵機運動,那么后面所有的操作都針對該選中的舵機,直到有信號輸入顯示需要更換舵機,復位操作除外。地址譯碼輸出控制選擇舵機動作,作用是將舵機在當前狀態下的基礎上轉動相應的度數。
系統實現對舵機輸出角度的控制,必須首先完成兩個任務:首先是產生基本的PWM 周期信號,此處是產生20ms 的周期信號;其次是脈寬的調整,即模擬PWM 信號的輸出,并且調整占空比。
由于控制舵機脈沖寬度為0.5 ~2.5ms,對應的轉角范圍從-90°~90°,脈沖寬度與轉角基本呈線性關系。通過程序控制,能使舵機勻速或變速轉動。論文中運用的時鐘信號為50MHZ,每次最小的角度變化量定義為0.9 度,其對應的最小的脈寬變化量為0.01ms,
為了保證機器人在運動過程能夠勻速并且流暢的完成自己的動作,根據式子(1):

即將舵機的滿量程180 度及其移動時間分成250 等分,則舵機每移動1 度需時100/9μs,每分步所需時間為8μs。從而得到公式(2):

將舵機分步為0.72°/步,令θ 為0.72 的整數倍,即k=θ/0.72(k=0,1,2,...,250),得公式(3):

由于將角度量化,該公式的簡化使控制器非常方便地控制舵機的動作流暢性。
在程序中,主要是通過對PWM 的寄存器設置來產生不同占空比的PWM 信號的。PWM 波的寄存器主要有PWM 周期寄存器和占空比寄存器。我們需要20ms 的周期信號和占空比的各種信號。由于時鐘信號為50MHz,要得到20ms 的周期信號需將周期信號寄存器的值設為1000000,占空比寄存器的值分別設為25000 到125000 之間就能分得到脈沖寬度為0.5 ~2.5ms 占空比的PWM 信號。通過角度量化,將舵機的滿量程180 度及其移動時間分成250等分,得到每一步0.9°改變占空比寄存器里的值為500。通過控制占空比寄存器里以500 為步長的遞增或遞減的時間間隔來達到舵機的速度調節。
本論文主要運用的FPGA 控制舵機,產生所需的脈沖信號。由于實驗條件有限,為了清楚的看到仿真波形的變化,我們就把程序里所有的數字都除以500,那樣就可以縮短仿真時間。論文中一次45 度角的變化,是通過每次變化0.9 度,共50 次,每次變化中間間隔2 個周期(40ms)來完成的,所以,這個間隔應該50 * 20000* 2 = 2 * 10^6ns = 2ms。所以,為了波形的完整性和可對比性,在波形變化之前,應該保證有一個完整的波,即確認操作之前,應該留足一個完整的周期(20ms),但除以500 后,又因為CLK 的周期改成10ns,所以應該是20000ns。第二次確認操作后也留足2ms。(這次是控制了多個舵機)第三次操作是復原操作。(因為前面沒有針對同一個舵機兩次操作,所以2ms 也夠了。)
因此總共是6.02ms。

間隔:2,2,2,4,1990,4,200000,2,2,4,2,2,4,2,2,4,2,2,2,4,2,4,200000,2,4,200000 其中間隔的單位是周期的個數。
論文針對嵌入式機器人控制器諸多優點,設計了一個基于FPGA 微處理器的結構開放、模塊化、實時性好、多任務處理機器人控制系統,完成了PWM 信號程序設計,實現了對機器人舵機的角度的精確控制。實現了仿人機器人精準控制,達到了預期目標。仿人機器人實物如圖3所示。