包天本 張甫頻 楊運強



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