包天本 張甫頻 楊運(yùn)強(qiáng)
摘要:基于Arduino電子平臺(tái)設(shè)計(jì),融合藍(lán)牙通信技術(shù),以42步進(jìn)電機(jī)作為原動(dòng)機(jī),采用高精度光電編碼器檢測(cè)角度。系統(tǒng)分上位機(jī)和下位機(jī),采用人機(jī)交互工作模式,用戶操縱上位機(jī)進(jìn)行示教動(dòng)作,通過(guò)離線編程給下位機(jī)下達(dá)運(yùn)動(dòng)指令,使下位機(jī)“復(fù)制”上位機(jī)的動(dòng)作,完成與上位機(jī)運(yùn)動(dòng)軌跡相同的動(dòng)作。
關(guān)鍵詞:主從控制;人機(jī)交互;Arduino;藍(lán)牙通信;離線編程
中圖分類號(hào):TP275? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)19-0064-03
Abstract: The system is based on Arduino electronic platform, integrates Bluetooth communication technology, takes 42 step motor as prime mover, and adopts high precision photoelectric encoder to detect angle. It is divided into upper computer and lower computer, using human-computer interaction mode. The user controls the upper computer to carry out the teaching action, and gives the motion instruction to the lower computer through off-line programming, so that the lower computer can "copy" the action of the upper computer and complete the same movement track.
Key words: master-slave control; human-computer interaction; Arduino; bluetooth communication; off-line programming
1 背景
近幾年機(jī)器人技術(shù)發(fā)展迅猛,特別是人工智能方向發(fā)展得如火如荼。機(jī)器人發(fā)展雖然在向人工智能方向發(fā)展, 但由于受到現(xiàn)有技術(shù)的限制, 大都只能稱之為“半智能化”的機(jī)器人[1]。對(duì)于高危環(huán)境下的任務(wù),需要機(jī)器人代替人類完成,但面對(duì)更復(fù)雜的工作要求,機(jī)器人需要人的輔助來(lái)完成。主從式控制是一種很好的人機(jī)交互方式,以人為指揮中心,機(jī)器人作為執(zhí)行機(jī)構(gòu)。主從控制方式采用離線編程,可避免傳統(tǒng)機(jī)械手規(guī)劃運(yùn)動(dòng)軌跡的復(fù)雜計(jì)算,且控制靈活,利于多種生產(chǎn)方式,提高生產(chǎn)效率。比如, 目前發(fā)達(dá)國(guó)家普遍采用主從式機(jī)器人技術(shù)來(lái)解決水下核反應(yīng)堆和乏燃料池的維護(hù)工作[2]。所以,發(fā)展專用機(jī)械手的同時(shí),也要發(fā)展示教式的主從機(jī)械手。發(fā)展主從式機(jī)械手,不僅要改進(jìn)機(jī)械手結(jié)構(gòu),更應(yīng)結(jié)合傳感器與檢測(cè)技術(shù)、電力電子技術(shù)、通訊技術(shù)等先進(jìn)科學(xué)技術(shù),發(fā)展主從控制系統(tǒng)。
2 總體方案設(shè)計(jì)
2.1 系統(tǒng)元件
上位機(jī)的硬件主要由Arduino控制板、光電編碼器、藍(lán)牙模塊組成;下位機(jī)硬件由Arduino控制板、42行星減速步進(jìn)電機(jī)、42步進(jìn)電機(jī)驅(qū)動(dòng)器、藍(lán)牙模塊、供電電源組成。
2.2 工作方案
1)給系統(tǒng)供電開始工作;
2) 光電編碼器檢測(cè)角度變化;
3) 上位機(jī)Arduino主板讀取編碼器脈沖數(shù),并將數(shù)據(jù)通過(guò)藍(lán)牙發(fā)送到從手;
4)下位機(jī)Arduino主板從藍(lán)牙模塊獲取數(shù)據(jù),通過(guò)驅(qū)動(dòng)器控制42步進(jìn)電機(jī)工作。
3 主要硬件介紹
3.1 Arduino mega2560控制板
Arduino是一種開源電子平臺(tái)。該平臺(tái)起源于意大利,主要基于AVR單片機(jī)微控制器和相應(yīng)的開發(fā)軟件而設(shè)計(jì),其具有高度的模塊化特點(diǎn), 因此有時(shí)叫它“電子積木”[3]。
本系統(tǒng)采用型號(hào)為mega2560的控制板,改型號(hào)使用 ATmega2560芯片,具有54路數(shù)字接口,16路模擬接口,4路通信串口,晶振16MHz,6個(gè)外部中斷引腳。其中外部中斷引腳int 0,int 1,int 2,int 3,int 4,int 5實(shí)際為數(shù)字引腳2,3,21,20,19,18。
3.2 藍(lán)牙模塊
系統(tǒng)采用HC-05 藍(lán)牙串口通信模塊,該模塊基于 Bluetooth Specification V2.0 帶 EDR 藍(lán)牙協(xié)議的數(shù)傳模塊,只支持一對(duì)一配對(duì),可以實(shí)現(xiàn)10米距離通信。
3.3 光電編碼器
增量式編碼器是一種旋轉(zhuǎn)式脈沖發(fā)生器,也稱脈沖盤式編碼器,能把機(jī)械轉(zhuǎn)角變成電脈沖[4]。本系統(tǒng)采用500線AB相增量型光電編碼器,每轉(zhuǎn)動(dòng)一圈時(shí)AB每相均輸出500個(gè)脈沖。
3.4 42步進(jìn)電機(jī)及其驅(qū)動(dòng)器
系統(tǒng)使用42行星減速步進(jìn)電機(jī)為4線2相式,減速比為1:10。
Arduino控制板不能直接驅(qū)動(dòng)42步進(jìn)電機(jī),需要相配套的42步進(jìn)電機(jī)驅(qū)動(dòng)器。通過(guò)驅(qū)動(dòng)器可以設(shè)置步進(jìn)電機(jī)的步距角大小,本文設(shè)置200個(gè)細(xì)分角,即電機(jī)轉(zhuǎn)動(dòng)360°時(shí)走過(guò)200個(gè)步距角,則步距角為1.8°,此時(shí)控制板只需輸入200個(gè)脈沖激勵(lì)信號(hào)。
4 電路設(shè)計(jì)
4.1 上位機(jī)電路
使用中斷引腳int 0、int 1、int 2即數(shù)字引腳2、3、21,分別接到編碼器1、2、3的A相;B相分別接到數(shù)字引腳8、9、10;藍(lán)牙模塊RXD引腳接到數(shù)字引腳1,TXD可不接;所有元件的VCC引腳一起接到控制板的5V接口,GND一起接到控制板負(fù)極。
4.2 下位機(jī)電路圖
驅(qū)動(dòng)器由24V直流電源供電,采用共陽(yáng)極接法,所有驅(qū)動(dòng)器的DIR+、PUL+引腳均接到控制板5V接口,其DIR-、PUL-引腳按順序依次接到數(shù)字引腳8、9、10、11、12、13,A-A+B-B+等引腳分別與電機(jī)對(duì)應(yīng)的A-A+B-B+引腳相接;藍(lán)牙模塊的TXD與數(shù)字接口0相接,引腳RXD可不接。
5 系統(tǒng)程序設(shè)計(jì)
5.1 上位機(jī)程序設(shè)計(jì)
檢測(cè)上位機(jī)動(dòng)作信息主要是獲得相應(yīng)電機(jī)的旋轉(zhuǎn)角度及轉(zhuǎn)向,這一任務(wù)由光電編碼器來(lái)完成。本文使用的編碼器只有A、B兩相,可直接由脈沖數(shù)量來(lái)計(jì)算角度大小,但轉(zhuǎn)向的判定需要比較AB相的相位關(guān)系。編碼器輸出的波形是方波,具有上升沿、高電平、下降沿、低電平四種狀態(tài)。AB相的相位關(guān)系如下圖所示:
5.1.2 整理并發(fā)送數(shù)據(jù)
由于三個(gè)編碼器會(huì)產(chǎn)生三組脈沖數(shù)據(jù),從手接收數(shù)據(jù)時(shí)進(jìn)行判別來(lái)源,這就要求建立 一個(gè)通訊協(xié)議。為方便測(cè)試,本文設(shè)定機(jī)械手每個(gè)自由度的轉(zhuǎn)動(dòng)角度最大不超過(guò)360°,所以編碼器產(chǎn)生的脈沖數(shù)小于1000。
首先給編碼器編號(hào)1、2、3,相應(yīng)也給從手電機(jī)編號(hào)1、2、3,然后在發(fā)送數(shù)據(jù)時(shí)分別給編碼器1獲取的脈沖數(shù)加上1000,編碼器2獲取的脈沖數(shù)加上2000,編碼器3獲取的脈沖數(shù)加上3000。這樣,所有的數(shù)據(jù)大小均為4位數(shù),即字符數(shù)有4個(gè)。可通過(guò)比較數(shù)據(jù)的千位的大小來(lái)判斷數(shù)據(jù)來(lái)源于哪一個(gè)編碼器。
5.2 下位機(jī)程序設(shè)計(jì)
5.2.1串口接收數(shù)據(jù)
首先定義整型數(shù)組A[],把通過(guò)while(){}循環(huán)將讀取的數(shù)據(jù)賦給數(shù)組,然后計(jì)算大小。
應(yīng)當(dāng)注意,Arduino的數(shù)據(jù)通信是以ASCII碼為交換標(biāo)準(zhǔn)的。而用語(yǔ)句print()和println()發(fā)送數(shù)據(jù)時(shí),會(huì)在數(shù)據(jù)后隨帶兩個(gè)結(jié)束字符,其十進(jìn)制大小分別為“13”和“10”,“10”在末尾。while(){}每循環(huán)一次只能讀取一個(gè)字符,而每個(gè)數(shù)據(jù)為4位十進(jìn)制數(shù),每一位數(shù)字都是一個(gè)字符,加上結(jié)束字符一共有6個(gè)字符,所以數(shù)組長(zhǎng)度定義6個(gè)即可。第一個(gè)讀取的字符是千位數(shù),接下來(lái)分別為百位數(shù),十位數(shù),個(gè)位數(shù),結(jié)束字符“13”,結(jié)束字符“10”。
5.2.2 計(jì)算角度并控制電機(jī)工作
電機(jī)工作代碼以電機(jī)1(用“Sm_1”表示)示例,電機(jī)2和電機(jī)3的代碼原理同電機(jī)1,只需改變相應(yīng)的變量和數(shù)字接口。代碼如下:
6 結(jié)束語(yǔ)
基于Arduino設(shè)計(jì)的以步進(jìn)電機(jī)為原動(dòng)機(jī)的三自由度主從控制系統(tǒng),通過(guò)實(shí)驗(yàn)證明,下位機(jī)電機(jī)的工作角度與上位機(jī)光電編碼器的轉(zhuǎn)動(dòng)角度大小幾乎相等,效果良好。本系統(tǒng)可以應(yīng)用于以步進(jìn)電機(jī)為原動(dòng)機(jī)的主從式機(jī)器,如三自由度的主從機(jī)械手。采用藍(lán)牙通信,使得裝置體積更小,安裝更靈活,比起傳統(tǒng)的有線通信優(yōu)勢(shì)明顯。對(duì)于更高自由度上的主從控制,本文也提供了開發(fā)思路。
參考文獻(xiàn):
[1] 羅孔昭, 葉磊. 淺談我國(guó)機(jī)器人發(fā)展現(xiàn)狀與問(wèn)題及應(yīng)對(duì)措施[J]. 科技資訊, 2018, 16(1): 74-75.
[2] 王剛, 王法承, 張星星, 等. 核電站檢修主從式水下作業(yè)機(jī)械手研究[J]. 高技術(shù)通訊, 2017, 27(5): 442-449.
[3] 李結(jié)松. Arduino在工科低年級(jí)開放實(shí)驗(yàn)項(xiàng)目中的實(shí)踐探討[J]. 大學(xué)教育, 2019(6): 85-87.
[4] 楊運(yùn)強(qiáng), 王儀玥, 唐力偉, 等. 傳感器與測(cè)試技術(shù)[M]. 北京: 冶金工業(yè)出版社, 2016: 152-153.
【通聯(lián)編輯:謝媛媛】