劉義杰,王艷梅
(沈陽理工大學(xué),沈陽 110159)
隨著社會(huì)的不斷進(jìn)步,在農(nóng)業(yè)和工業(yè)生產(chǎn)中經(jīng)常應(yīng)用到的機(jī)械手臂,而如何使機(jī)械手臂像人類的手臂一樣靈活地隨意運(yùn)動(dòng),受限于現(xiàn)有的科學(xué)工具和技術(shù)手段。由處理器控制的機(jī)械手臂可以根據(jù)程序完成一系列特定的工作,更加靈活,精度也有所提高[1,2]。
本文設(shè)計(jì)了三維機(jī)械手臂控制器,主控芯片采用STM32F103C8T6,使用ISP 串口通訊,實(shí)現(xiàn)對(duì)4 路舵機(jī)的控制;舵機(jī)使用SG90 用來控制機(jī)械手臂的各個(gè)方向的運(yùn)動(dòng)控制;使用了8MB 的FLASH 存儲(chǔ)器W25Q64 作為程序擴(kuò)展存儲(chǔ)器;三維機(jī)械手臂的工作方式設(shè)計(jì)了遙控工作方式和自動(dòng)工作方式兩種工作方式。
三維機(jī)械臂控制器主要用來控制三維機(jī)械手臂的運(yùn)動(dòng),通過控制器的控制,可以實(shí)現(xiàn)手臂的上下、前后、左右的三維立體運(yùn)動(dòng),其結(jié)構(gòu)框圖詳見圖1 所示。
圖1 三維機(jī)械手臂控制器結(jié)構(gòu)框圖
STM32F103C8T6 作為主控芯片具有耗能低、性能高、處理速度快、硬件資源豐富以及價(jià)格便宜等優(yōu)點(diǎn)。STM32F103C8T6 有48kB 的靜態(tài)隨機(jī)存儲(chǔ)器和256kB 的閃存,同時(shí)還擁有11 個(gè)定時(shí)器,2 個(gè)I2C 通信接口,5 個(gè)串口,1 個(gè)USB,3 個(gè)串行外設(shè)接口,3 個(gè)12 位模數(shù)轉(zhuǎn)換接口,2 個(gè)12 位數(shù)模轉(zhuǎn)換接口和51個(gè)通用輸入輸出口。
電源模塊:舵機(jī)供電需要7.4 V 的直流電源,外圍芯片需要5 V 直流電源,主控制芯片需要使用3.3 V 直流電源。所以電源模塊將7.4 V 電源通過AMS1117 調(diào)壓器件轉(zhuǎn)換成5 V 電壓,供需要的外圍器件使用,然后使用SPX5205M5-L3.3 將5 V 轉(zhuǎn)換成3.3 V 電源給處理器使用。
機(jī)械手臂各個(gè)方向的運(yùn)動(dòng)采用舵機(jī)控制,選用SG90 舵機(jī),SG90 接收脈寬調(diào)制信號(hào)轉(zhuǎn)動(dòng)一定的角度實(shí)現(xiàn)某個(gè)方向的運(yùn)動(dòng)。
系統(tǒng)擴(kuò)展了FLASH 存儲(chǔ)器,W25Q64 是支持串行外設(shè)接口閃存芯片,容量是8MB;工作速度是普通閃存的數(shù)倍以上,而且能耗低,同時(shí)還具有連續(xù)讀取的模式。
無線手柄用于完成遙控工作方式的系統(tǒng)管理、發(fā)送指令、運(yùn)動(dòng)軌跡規(guī)劃等。無線手柄通過按鍵將指令發(fā)送給處理器,處理器根據(jù)從無線手柄得到的指令輸出脈沖寬度調(diào)制矩形波,進(jìn)而控制機(jī)械臂的各個(gè)關(guān)節(jié)的運(yùn)動(dòng),進(jìn)而使其按照預(yù)定的軌跡完成運(yùn)動(dòng)。
對(duì)系統(tǒng)供電電源電壓進(jìn)行分壓后進(jìn)行A/D 轉(zhuǎn)換,監(jiān)測(cè)電源的供電情況,電壓過低時(shí)報(bào)警電路啟動(dòng)。
STM32 單片機(jī)支持使用ISP 串口下載、SWD 下載和JTAG 下載,為方便下載調(diào)試,采用ISP 串口下載,STM32F103C8T6 上電復(fù)位后默認(rèn)啟動(dòng)JTAG 模式,需要關(guān)閉該模式。
三維機(jī)械手臂是通過調(diào)節(jié)脈沖寬度調(diào)制波的占空比來控制舵機(jī)從而調(diào)節(jié)其運(yùn)動(dòng)的。利用處理器STM32 實(shí)現(xiàn)同時(shí)控制4 路舵機(jī)的功能,需對(duì)定時(shí)器使用分時(shí)復(fù)用的方法,通過算法分配不同的引腳電平的高低從而實(shí)現(xiàn)同時(shí)控制4 路舵機(jī)的功能。
STM32 芯片內(nèi)部集成了多個(gè)定時(shí)器,有用來為嵌入式系統(tǒng)提供定時(shí)服務(wù)的SysTick 定時(shí)器,還有用來提供復(fù)位功能的WDT 和分別擁有4 路和6 路輸出脈寬調(diào)制波的通用定時(shí)器和高級(jí)定時(shí)器。而基本定時(shí)器通常只用來實(shí)現(xiàn)計(jì)數(shù)的功能。
相比于模擬控制來說,PWM 有著許多的優(yōu)勢(shì)可以優(yōu)化系統(tǒng)。如從處理控制器一直到系統(tǒng)中的信號(hào)傳輸全由數(shù)字信號(hào)進(jìn)行傳遞,這是PWM 的一個(gè)優(yōu)勢(shì),這也就意味著不需要再花成本進(jìn)行信號(hào)轉(zhuǎn)換,這樣使得環(huán)境比較安靜。在這種情況下,噪聲對(duì)系統(tǒng)的影響只有在可以更改邏輯方式時(shí)才會(huì)產(chǎn)生影響,這也就說明使用PWM 這種技術(shù)可以使得環(huán)境噪音減小,使得系統(tǒng)的運(yùn)行更加符合要求。正因?yàn)檫@些優(yōu)勢(shì),使得這種類型已經(jīng)廣泛的應(yīng)用于當(dāng)前生活中,使用在通信之中時(shí)可以使得距離得到升級(jí)。在接收信號(hào)的過程中,這類處理器一般的可以其選擇性地修改為模擬信號(hào)[3]。
由于舵機(jī)需要一個(gè)時(shí)間基準(zhǔn)控制信號(hào)的周期為20 ms,舵機(jī)的控制信號(hào)高電平持續(xù)時(shí)間通常為0.5 ms~2.5 ms。因此可以控制線性變化的機(jī)械手臂做水平運(yùn)動(dòng)呈線性,具有良好的跟隨性能指標(biāo)。由于舵機(jī)是一種位置伺服驅(qū)動(dòng)器。因此它會(huì)將輸入信號(hào)和基準(zhǔn)信號(hào)進(jìn)行比較,從而判斷方向和大小,最終得到兩個(gè)信號(hào)的壓差,從而決定電機(jī)的轉(zhuǎn)動(dòng)。由于舵機(jī)的控制信號(hào)是時(shí)間基準(zhǔn)脈沖信號(hào),根據(jù)時(shí)基信號(hào)的特性,并且機(jī)械手臂是180°擺動(dòng),因此相對(duì)應(yīng)的角度關(guān)系是:0.5ms-0° ;1.0ms-45° ;1.5ms-90° ;2.0ms-135° ;2.5ms-180°。
為了實(shí)現(xiàn)三自由度同時(shí)帶動(dòng)四個(gè)舵機(jī)運(yùn)行,必須對(duì)定時(shí)器的利用率達(dá)到最大。由于單個(gè)舵機(jī)的脈沖寬度最多持續(xù)時(shí)間是2.5 ms,而其控制信號(hào)的周期為20 ms,因此可以將一個(gè)周期分成8 份,配合使用中斷指令,即可控制每一份,采用分時(shí)復(fù)用的方法,當(dāng)?shù)谝粋€(gè)舵機(jī)的受控時(shí)間為定時(shí)器第一次發(fā)生溢出中斷時(shí),中斷程序會(huì)對(duì)定時(shí)器寄存重新賦值,同時(shí)將所有的I/O 口變?yōu)楦唠娖?,直到定時(shí)器發(fā)生第二次溢出中斷時(shí)重復(fù)以上操作。因此在理論上一個(gè)信號(hào)周期內(nèi)最多可完成8 個(gè)舵機(jī)同時(shí)受控。因此完全可以達(dá)到要求的三自由度即同時(shí)控制四個(gè)舵機(jī)運(yùn)行的要求。
本控制器主要是通過STM32 芯片輸出PWM 波形給舵機(jī),從而調(diào)節(jié)機(jī)械臂的運(yùn)動(dòng),程序框圖如圖2所示。當(dāng)7.4 V 鋰電池給三維機(jī)械手臂供電后。機(jī)械臂將通過上電復(fù)位的功能,將整個(gè)系統(tǒng)所有端口初始化同時(shí)包括定時(shí)器初始化使從而控制舵機(jī),使機(jī)械臂擺動(dòng)的角度也恢復(fù)到初始狀態(tài)。本系統(tǒng)使用通用定時(shí)器TIM2 和TIM3 定時(shí)器,一個(gè)用來做脈寬調(diào)制波的輸出,一個(gè)用來做定時(shí)功能。定時(shí)器功能流程圖如圖3。此時(shí)無線手柄同樣也準(zhǔn)備就緒,當(dāng)按下任意按鍵后,將按鍵的變化轉(zhuǎn)換為電信號(hào)寫入存儲(chǔ)器模塊之中,然后將相關(guān)的指令傳送給定時(shí)器控制的舵機(jī),使其按照預(yù)定的位置進(jìn)行擺動(dòng)[4,5]。
圖2 機(jī)械手臂程序流程圖
圖3 定時(shí)器功能流程圖
本文設(shè)計(jì)三維機(jī)械臂用于驗(yàn)證三維機(jī)械臂控制器的運(yùn)行情況,選用多關(guān)節(jié)型的機(jī)械臂,它具有動(dòng)作角度大的優(yōu)點(diǎn),還可以使機(jī)械臂在更大的空間內(nèi)的運(yùn)動(dòng),由底座、U 型支架和機(jī)械爪組成。機(jī)械手臂的底座負(fù)責(zé)主要的支撐,安裝一個(gè)舵機(jī),負(fù)責(zé)轉(zhuǎn)向;U型支架,實(shí)現(xiàn)的功能是控制機(jī)械手臂的長度,也是比較重要的一個(gè)部位,要注意連接處的安裝,有可能是活動(dòng)部位要保證關(guān)節(jié)的靈活,還要注意支架和舵機(jī)的安裝方向,另外舵機(jī)在安裝的時(shí)候必須復(fù)位,即讓舵機(jī)處于中間位置;機(jī)械爪部分是最直觀的執(zhí)行部分,是機(jī)械手臂的末尾,主要負(fù)責(zé)張開合適的角度夾取物件,由對(duì)稱的兩部分組成。
通過實(shí)驗(yàn),主控制器輸出脈寬調(diào)制矩形波實(shí)現(xiàn)三軸的控制,實(shí)現(xiàn)了三個(gè)方向的機(jī)械手臂的運(yùn)動(dòng)控制設(shè)計(jì),圖4 表現(xiàn)了機(jī)械手臂U 框型架的運(yùn)動(dòng)情況。
圖4 三維機(jī)械手臂U 型框架的運(yùn)動(dòng)
基于三維運(yùn)動(dòng)的機(jī)械手臂控制器主控制芯片為STM32F103C8T6,SG90 舵機(jī)帶動(dòng)機(jī)械臂作為受控對(duì)象,使得該機(jī)械臂可以在三個(gè)方向完成空間運(yùn)動(dòng),舵機(jī)輸出精度較高,可以夾取一些質(zhì)量較輕的物體到指定位置。但在設(shè)計(jì)過程中依然發(fā)現(xiàn)了很多不足和困難,三軸運(yùn)動(dòng)的機(jī)械手臂要想實(shí)現(xiàn)仿生功能很困難,三維機(jī)械手臂的靈敏度和強(qiáng)度不夠,無法執(zhí)行高強(qiáng)度的任務(wù)。如果選用材料的性能更加優(yōu)秀,選用的舵機(jī)的參數(shù)更加優(yōu)越,同時(shí)設(shè)計(jì)得更加合理,三維機(jī)械手臂將完全可以完成在教學(xué)、生活中使用的功能。