連百萬(wàn),韓靜卜,周樂(lè)濤
(西京學(xué)院,陜西 西安 710123)
工業(yè)機(jī)器人技術(shù)迅速發(fā)展,越來(lái)越多地用于機(jī)械、電子、汽車(chē)等行業(yè)。在工業(yè)加工中使用機(jī)械臂不僅能提高生產(chǎn)率,而且還能降低工人的勞動(dòng)密度[1]。
本文提出一種四自由度機(jī)械臂的設(shè)計(jì),以Arduino為核心,通過(guò)按鍵模塊檢測(cè)用戶(hù)的控制信號(hào),當(dāng)Arduino對(duì)控制信號(hào)進(jìn)行識(shí)別后,驅(qū)動(dòng)舵機(jī)控制模塊來(lái)操作相應(yīng)的舵機(jī)轉(zhuǎn)動(dòng),從而帶動(dòng)整個(gè)機(jī)械臂的運(yùn)動(dòng)[2]。硬件部分主要有Arduino UN3、PWM舵機(jī)(MG996R,MG90S)、舵機(jī)驅(qū)動(dòng)模塊PCA9685、5V3A開(kāi)關(guān)電源、輕觸按鍵。使用本文設(shè)計(jì)的基于Arduino的機(jī)械臂可以對(duì)機(jī)械臂進(jìn)行多關(guān)節(jié)的控制,并且能夠利用按鍵控制其抓取一定體積的物體??傮w設(shè)計(jì)框架如圖1所示。
圖1 總體設(shè)計(jì)框架
本文基于Arduino的機(jī)械臂的設(shè)計(jì),實(shí)現(xiàn)了機(jī)械臂的控制功能,完整的功能包括以下3點(diǎn):
(1)按鍵控制功能。
基于Arduino的機(jī)械臂需要通過(guò)輸入器件(按鍵模塊)來(lái)獲取用戶(hù)的操作要求,再根據(jù)按鍵信號(hào)的種類(lèi)驅(qū)動(dòng)外圍電路進(jìn)行控制。
(2)機(jī)械臂四自由度控制功能。
系統(tǒng)的機(jī)械臂采用4個(gè)舵機(jī)進(jìn)行轉(zhuǎn)軸控制,可以實(shí)現(xiàn)機(jī)械臂的四自由度控制。
(3)抓取物體功能。
機(jī)械臂組件中頂部的舵機(jī)用于對(duì)金屬爪子進(jìn)行控制,通過(guò)控制金屬爪子,對(duì)應(yīng)舵機(jī)轉(zhuǎn)動(dòng)便可控制其抓取一定體積的物體。
本文設(shè)計(jì)的基于Arduino的四自由度機(jī)械臂無(wú)須進(jìn)行復(fù)雜的算法運(yùn)算,只需要檢測(cè)用戶(hù)的按鍵輸入信號(hào)以及輸出控制信號(hào)到舵機(jī)驅(qū)動(dòng)電路。選用的Arduino主控模塊使用的單片機(jī)型號(hào)為ATmega328,采用最小系統(tǒng)實(shí)現(xiàn)基本的控制功能,包括主控芯片、時(shí)鐘電路、復(fù)位電路。其中復(fù)位電路如圖2所示。
圖2 復(fù)位電路
本文選用的是PWM舵機(jī),控制舵機(jī)轉(zhuǎn)動(dòng)時(shí)需要向舵機(jī)輸入PWM信號(hào)。常見(jiàn)的PWM舵機(jī)控制方式有兩種:
(1)處理器使用IO直接輸出PWM信號(hào)控制。
該方式需要處理器選擇具有信號(hào)輸出功能的IO連接PWM舵機(jī)的控制引腳,通過(guò)軟件編程輸出特定的PWM信號(hào)。
(2)使用舵機(jī)驅(qū)動(dòng)模塊控制。
舵機(jī)驅(qū)動(dòng)模塊內(nèi)部具有驅(qū)動(dòng)器實(shí)現(xiàn)對(duì)舵機(jī)的精準(zhǔn)控制,當(dāng)控制PWM舵機(jī)時(shí),PWM信號(hào)由舵機(jī)驅(qū)動(dòng)模塊產(chǎn)生。當(dāng)處理器通過(guò)舵機(jī)驅(qū)動(dòng)模塊,間接對(duì)PWM舵機(jī)進(jìn)行控制時(shí),處理器無(wú)須與每一路的PWM舵機(jī)進(jìn)行連接,舵機(jī)直接與舵機(jī)驅(qū)動(dòng)模塊連接,處理器只需與舵機(jī)驅(qū)動(dòng)模塊的數(shù)字通信接口連接,然后根據(jù)特定的控制協(xié)議向舵機(jī)驅(qū)動(dòng)模塊發(fā)送控制指令,便可實(shí)現(xiàn)舵機(jī)的簡(jiǎn)單控制。處理器通過(guò)舵機(jī)驅(qū)動(dòng)模塊控制舵機(jī)轉(zhuǎn)動(dòng)時(shí),一個(gè)角度只需發(fā)送一次控制指令便可,無(wú)須持續(xù)發(fā)送占用系統(tǒng)資源。同時(shí)舵機(jī)驅(qū)動(dòng)模塊由于主要工作是負(fù)責(zé)PWM舵機(jī)的控制,因此常常支持多路PWM舵機(jī)的控制。
本文選擇使用的是:舵機(jī)驅(qū)動(dòng)模塊對(duì)PWM舵機(jī)進(jìn)行控制,模塊使用的舵機(jī)驅(qū)動(dòng)芯片為PCA9685。
PCA9685使用的通信協(xié)議是I2C,所以Arduino只需要使用兩個(gè)IO口與PCA9685芯片進(jìn)行連接。PCA9685是一個(gè)最大輸出十六路PWM信號(hào)的驅(qū)動(dòng)芯片[3],并且每一路的PWM信號(hào)分辨率都能達(dá)到12位。PCA9685舵機(jī)驅(qū)動(dòng)電路的電源電路是為模塊提供穩(wěn)定電源的首要電路,主要包括兩部分電路,MP1584電路以及RT9193-33電路。其中MP1584電路如圖3所示。
圖3 MP1584電路
通過(guò)輕觸按鍵來(lái)獲取用戶(hù)的控制需求,由于需要控制4個(gè)舵機(jī),每個(gè)舵機(jī)需要對(duì)機(jī)械臂進(jìn)行順時(shí)針和逆時(shí)針的轉(zhuǎn)動(dòng)控制,因此四自由度共需要8個(gè)輕觸按鍵來(lái)獲取用戶(hù)的控制信號(hào)。當(dāng)按下輕觸按鍵時(shí),只需要將其中一個(gè)按鍵觸點(diǎn)連接到處理器的IO口,同一自由度的另一個(gè)按鍵觸點(diǎn)連接到電源或者GND,通過(guò)軟件判斷處理器的IO電平高低,便可識(shí)別當(dāng)前輕觸按鍵處于按下或是彈起的狀態(tài)。按鍵電路如圖4所示。
圖4 按鍵電路
作品包含了系統(tǒng)初始化軟件設(shè)計(jì)、主循環(huán)軟件設(shè)計(jì)、Arduino按鍵IO軟件設(shè)計(jì)、舵機(jī)控制軟件設(shè)計(jì)等,軟件設(shè)計(jì)流程如圖5所示。
圖5 軟件設(shè)計(jì)流程
本設(shè)計(jì)中系統(tǒng)軟件的初始化程序?yàn)檩p觸按鍵初始化、舵機(jī)驅(qū)動(dòng)模塊初始化和TTL串行口初始化。由于舵機(jī)驅(qū)動(dòng)模塊(PCA9685)與Arduino使用I2C的協(xié)議來(lái)進(jìn)行通信,因此舵機(jī)驅(qū)動(dòng)模塊的初始化是將PCA9685芯片與I2C接口連接的,Arduino的接口設(shè)置為I2C模式,然后通過(guò)I2C通信協(xié)議來(lái)設(shè)定模塊的工作頻率,最后為了實(shí)現(xiàn)每次系統(tǒng)上電,機(jī)械臂可以恢復(fù)到初始化狀態(tài),將在舵機(jī)驅(qū)動(dòng)模塊初始化中,為每一路舵機(jī)設(shè)置一個(gè)默認(rèn)的初始擺動(dòng)角度。為了方便整個(gè)系統(tǒng)的運(yùn)行調(diào)試,本文為Arduino主控模塊編寫(xiě)了串口調(diào)試信息輸出功能,因此在初始化軟件中需要設(shè)置調(diào)試的TTL串行接口。串行通信需要通信方均設(shè)置同樣的數(shù)據(jù)傳輸速率后,才能進(jìn)行通信。在TTL串行口通信的數(shù)據(jù)傳輸速率稱(chēng)為波特率。TTL串口初始化主要是將Arduino主控模塊的TTL串行口的通信波特率設(shè)置為與PC進(jìn)行通信時(shí)相同波特率,而常用的通信波特率為9 600 bps,則Arduino主控模塊系統(tǒng)軟件的TTL串行口初始化,主要將串行口通信波特率設(shè)置為9 600 bps。
在整個(gè)軟硬件系統(tǒng)搭建完成后,需要測(cè)試每個(gè)舵機(jī)對(duì)機(jī)械臂的控制精度,從而了解整個(gè)機(jī)械臂的控制精準(zhǔn)度[4]。具體測(cè)試時(shí),實(shí)現(xiàn)使用8個(gè)輕觸按鍵分別控制4個(gè)舵機(jī)按特定角度進(jìn)行轉(zhuǎn)動(dòng),記錄每個(gè)舵機(jī)的理論控制角度和實(shí)際控制角度,統(tǒng)計(jì)成表后對(duì)數(shù)據(jù)進(jìn)行分析。其中一路舵機(jī)的測(cè)試數(shù)據(jù)如表1所示,實(shí)際控制角度為多組數(shù)據(jù)中的最大值。
表1 舵機(jī)精度測(cè)試
由表1可以看出,整個(gè)Arduino軟件的舵機(jī)控制精度均保持在95%以上。因此,本文設(shè)計(jì)的基于Arduino的機(jī)械臂,控制精準(zhǔn)度較高,能夠滿(mǎn)足實(shí)際使用需求。