十年專注單片機方案開發的方案公司英銳恩,分享基于運動控制單片機芯片的機械手控制系統設計。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
基于運動控制芯片的機械手控制系統設計
作者: 北方工業大學 劉仕良 方建軍
摘要:針對平面關節型機械手各關節聯動的特點,研制和開發了基于PIC16F877單片機和運動芯片LM629的底層控制系統。采用LM629這樣的集成運動芯片,簡化整個控制系統的硬件電路結構,提高系統的可靠性和控制精度。
關鍵詞:機械手 PIC單片機 LM629 L298N 控制器
引 言
平面關節型機械手是應用最廣泛的機械手類型之一,既可以用于實際生產,又可以用于教學實驗和科學研究。用于實際生產,它能夠滿足裝配作業內容改變頻繁的要求;用于教學實驗,它能夠使人直觀地了解機器人結構組成、動作原理等[1],所以開發設計和研究平面關節型機械手具有最廣泛的實際意義和應用前景。
LM629是美國國家半導體公司生產的可編程全數字運動控制芯片[2],它具有32位的位置、速度和加速度寄存器,內置PID算法,其參數可以修改;支持實時讀取和設定速度、加速度以及位置等運動參數,內置的梯形圖發生器能夠自動生成速度曲線,平穩地加速、減速;支持增量式光電碼盤的4倍頻輸入;芯片的主頻為6MHz和8MHz。因此,本文采用LM629和PIC16F877構成機械手的伺服控制系統。
1 機械手結構
本文設計的平面關節型機械手的實物照片如圖1所示,其主要包括三個旋轉關節(分別控制機械大臂和小臂旋轉以及手抓張合)和一個移動關節(控制手腕伸縮),圖2為機械手簡化模型。各關節均采用直流電機作為驅動裝置,在機械大臂和小臂的旋轉關節上還裝配有增量式光電編碼器,提供半閉環控制所需的反饋信號。直流電機的運動控制采用自行開發的基于LM629和PIC16F877構成的多關節控制卡,并編制了能滿足運動控制要求的軟件,實現對機械手的速度、位置以及4關節聯動控制。由于機械手4個關節電機的控制系統基本類似,因此在下文中,筆者將以單個關節電機為例向讀者介紹平面關節型機械手的控制系統設計過程。
注:1—機身;2—大臂電機;3—光電編碼器;4—大臂;5—小臂電機
6—同步帶;7—光電編碼器;8—小臂;9—手腕升降電機;
10—手抓電機;11—手抓。
圖2機械手簡化模型
2 控制系統設計
2.1控制系統的工作原理
基于LM629芯片和PIC16F877單片機構成的單個關節直流電機伺服驅動系統如圖3所示。
運動芯片LM629通過8位數據線和6根控制線與單片機PIC16F877的I/O口相連。單片機通過數據線向LM629發送位置或速度命令、設定PID調節參數,并從LM629中讀取速度、加速度等數值。LM629輸出的脈寬調制幅度信號和方向信號直接驅動L298N,經過功率放大后驅動直流電機。增量式光電編碼器提供半閉環控制所需的反饋信號(A、B、IN),梯形圖發生器計算出位置或速度模式下所需控制的運動軌跡。PIC16F877為LM629提供加速度、速度和目標位置量,在每個采樣周期用這些值來計算出新的命令和位置給定值,將其作為指令值。由增量式光電編碼器檢測電機的實際位置,其輸出信號經過LM629四倍頻后進行解碼,形成位置反饋值。指令值與反饋值的差值作為數字PID校正環節的輸入。通過數字調節器PID計算,LM629輸出脈寬調制信號PWMM和方向信號PWMS用于控制功率芯片L298N,進而驅動電機運動到指定的位置。LM629在進行位置控制的同時,還對速度進行控制。LM629在接受到主機送來的位置信號后,按梯形圖生成加速、勻速、減速的速度曲線,曲線與坐標橫軸所包圍的面積就是指定的位置。PID算法中的比例、積分和微分系數有時需要進行修改,因此將它們存儲在單片機的E2PROM中。單片機和PC機通過無線發射和接收模塊進行串行通信。
2.2控制系統的硬件設計
本文所研究的平面關節型機械手的控制系統硬件結構主要包括運動模塊、功率放大模塊、位置檢測模塊和通信模塊。
(1) 運動與功率放大模塊
運動與功率放大模塊如圖4所示。運動模塊的核心芯片是LM629。LM629的8位數據口D0~D7與PIC單片機的RD0~RD7口相連,RC0~RC3分別和LM629的CS、RD、WR、PS相連,用于控制片選、數據的流向等。LM629接收來自單片機的位置、速度或加速度數據,經過內部梯形圖發生器和PID調節器的運算,輸出脈寬調制信號和方向信號,由引腳PWMM和PWMS輸出。功率放大模塊主要由L298N芯片和電流泄放回路組成。L298N是雙極性H橋功率放大電路,與LM629輸出信號PWMM和PWMS通過一個邏輯門電路相連,控制直流電機的正、反轉和停止。在芯片LM629和L298N之間增加光電耦合器4N25,進行電氣隔離,保護單片機和運動芯片并減少強電干擾。由于直流電機是感性負載,因此選用功率二極管DIN5391組成電流泄放回路,以保護功率芯片L298N。
位置檢測模塊主要通過檢測與電機軸相連的增量式光電編碼器,從而實現檢測并獲取各關節電機軸位置的目的。圖5所示的電路將增量式光電編碼器輸出的差動信號(A+、A-、B+、B-、IN+、IN-)經過75175合成單端信號A、B、IN(圖5中只畫出一路信號的合成)。合成后的單端信號A、B、IN分別與LM629的引腳A、B、IN相連。利用差動信號傳輸,可以有效地解決干擾和遠距離傳輸問題。為了進一步消除干擾,在輸入端每根線上都加上了一個濾波電容,在兩根差動的信號線之間接了一個用于線路阻抗匹配的電阻。增量式碼盤反饋的脈沖信號經過4倍頻后,提高了分辨率。A和B的邏輯狀態每改變一次,LM629的位置寄存器就加(減)1。當碼盤的A、B、IN都為低電平時,產生一個Index信號送入寄存器,記錄電機的絕對位置。
(2) 通信模塊
通信模塊主要解決人機接口問題[4]。在本文設計的控制系統中,沒有設計顯示模塊和鍵盤輸入模塊。但在實際應用中,常常需要輸入一些參數,如PID參數等。利用PC機豐富的資源和良好的用戶界面,通過串行口通信來解決控制系統的參數輸入和顯示。
2.3控制系統的軟件設計
控制系統的軟件部分主要包括初始化模塊、運動控制模塊、位置檢測模塊和通信模塊。單片機根據位置檢測模塊獲取的信息,確定機械手各關節的速度、加速度和位置,將這些信息傳入LM629,由速度梯形圖生成速度曲線,進行位置控制。PID調節器根據輸入指令和反饋信息來補償閉環系統。式(1)表示LM629輸出的控制信號。
在程序編制過程中,通常采用增量式PID算法。
通信模塊建立單片機和PC機之間的通信。在PC機端,利用Visual C++編寫串行通信程序和參數輸入界面。在PIC16F877端,用匯編語言編寫通信程序,實現PC機和單片機之間的雙向通信。圖6表示主程序和中斷子程序的流程。
結語
本文介紹了平面關節型機械手的位置伺服控制板的設計方法,采用LM629和PIC16F877構成機械手各關節的伺服系統,同單純用單片機來實現機械手控制系統相比,具有硬件電路結構簡單、可靠性高、成本低廉以及單片機CPU負擔小,控制的實時性好等優點。這種自行開發制作的控制電路板應用面較廣,在移動機器人中也能取得很好的應用效果。