以無MCU實現兩軸機械臂控制器

作者 : Anas Ajaj,Embedded.com特約作者

本文案例將建構一個包括兩個旋轉關節的機器手臂。這些關節將由來自操縱桿的類比訊號進行控制…

機器手臂被廣泛用於機器人應用中,它們可以做出類似於人手的動作。機器手臂可以是一個獨立的應用,也可以是更大機器人系統的一部分。機器手臂在工業領域中主要用於物品的取放,而在行動保全攝影機和玩具中亦有應用。

機器手臂通常包括數個可以旋轉的關節,以及與之相連的連桿。本文案例將建構一個包括兩個旋轉關節的機器手臂,一個用於x軸,另一個用於y軸。這些關節將由來自操縱桿的類比訊號進行控制。該電路設計包括一個GreenPAK SLG46620晶片、兩個Tower Pro SG90伺服馬達和一個類比操縱桿。系統框架圖和電路示意圖分別如圖1和圖2所示。

 

圖1:系統框架圖。

(來源:瑞薩電子)

 

圖2:電路示意圖。

(來源:瑞薩電子)

 

本案例不需要微控制器(MCU),因為GreenPAK晶片本身已包含了建構能夠獨立控制伺服馬達的靜態IC所需的全部元素。

工作原理

GreenPAK晶片可以執行系統的所有功能。它先接收來自操縱桿x軸輸出的類比訊號,然後在內部進行數位化後用作伺服馬達的PWM訊號,接著將輸入通道更改為讀取來自操縱桿的y軸輸出,這個過程不斷重複。每10ms讀取類比訊號一次,並在x和y輸出之間交替,相當於每個訊號隔20ms讀取一次,因此輸出頻率為50Hz,這正好適用於伺服馬達的操作。

伺服馬達

兩個Tower Pro SG90伺服馬達(圖3)用於建構機器手臂。馬達需要一個PWM訊號來控制旋轉角度,旋轉角度位於0°~180°之間。當輸入0.5ms脈衝寬度時,馬達旋轉到0°,而當脈衝寬度等於2.5ms時,馬達旋轉到180°。因此,每隔20ms時間,將會出現一個位於0.5~2.5ms之間的脈衝寬度,以獲取與之對應的、位於0°和180°之間的某個旋轉角度。

 

圖3:Tower Pro SG90伺服馬達。

(來源:瑞薩電子)

 

類比操縱桿

類比操縱桿因其價格低廉和易於連接而被廣泛用於機器人應用。操縱桿由兩個交叉放置的電位器組成(圖4)。它提供三個輸出:x、y和中間按鈕,本例中的操縱桿亦可提供伺服系統的手動控制。

 

圖4:類比操縱桿模組。

(來源:瑞薩電子)

 

為了獲得適合GreenPAK ADC工作的範圍,操縱桿將使用晶片的VREF,而不是連接外部分壓器,這樣可以減少外部元件的使用數量。

GreenPAK設計

GreenPAK設計是在基於GUI的免費GreenPAK Designer軟體中創建,該軟體是Go Configure軟體中心的一部分(連結到設計檔),設計由幾個部分組成(圖5)。

 

圖5:GreenPAK設計——矩陣0。

(來源:瑞薩電子)

 

類比多工器根據定義好的時間間隔接收來自兩個不同的輸出訊號。頻率為100Hz的脈衝產生器每10ms發出一個脈衝,在前一個10ms接收x訊號,在下一個10ms接收y訊號。

Pin8和Pin9配置為類比輸入端,連接到配置為類比多工器的PGA。來自Pin16的訊號控制兩個通道之間的切換。當訊號CH Selector設置為HIGH時,讀訊號來自Pin8,當設置為LOW時,讀訊號來自Pin9。類比訊號轉換為數位訊號後,再從FSM0讀取。FSM0的輸入來自ADC模組的輸出(ADC資料),FSM0配置為下降邊緣DLY。

  • 延遲時間= (計數器值+1)/時脈
  • 時脈= 256/2ms = 128kHz

FSM0的CLK接腳透過EXT CLK0連接到CNT5輸出,得到的時脈頻率為128kHz,當從ADC接收到255的值時,輸出的脈衝寬度為2ms。因此,CNT5的輸出訊號週期為7.8125μs,對應的CNT5的資料為210。

2-L0反相器和CNT6組成100Hz產生器,產生器每隔10ms發出一個脈衝,目的是每隔20ms向兩個伺服馬達輸出PWM訊號。產生器的輸出訊號觸發CNT9,它被配置為下降邊緣DLY,延遲時間為0.5ms。CNT9輸出觸發FSM0輸出一個寬度為FSM資料+0.5的訊號,該訊號寬度位於0.5和2.5ms之間,然後透過LUT傳遞給對應的伺服系統。

每個工作週期內,CNT0提供一個寬度為2.5毫秒的脈衝,作為發送到伺服馬達(每個馬達依次輪換)輸出訊號的最大時間框,以防止出現任何錯誤。DFF0、2-L1、3-L2用於控制輸入通道,使其每10ms在PGA的通道1和通道2之間進行週期性切換。Pin6透過外部連接到Pin16,後者再連接到PGA的CH Selector引腳。

4位元LUT0、3位元LUT0、3位元LUT1和2-L2構成解多工器,將PWM訊號傳遞給對應的伺服馬達(圖6)。

 

圖6:LUT配置。

(來源:瑞薩電子)

 

當CH Selector訊號為HIGH時,讀訊號來自通道1,中間會經過Pin8,處理後的PWM訊號再透過Pin4傳送給x——伺服馬達。當CH選擇器設置為LOW時,讀訊號來自通道2,該訊號先傳送給Pin5,再到y——伺服馬達。

從迴圈週期開始經過2.5ms後,通道隨著CNT0輸出的下降邊緣而改變,並在下一個週期開始時輸出脈衝(圖7)。這為訊號的讀取和穩定性提供了充足的時間。

 

圖7:時序。

(來源:瑞薩電子)

 

為防止訊號較小(小於40mV)時ADC工作出錯,用DCMP0對ADC值與寄存器0進行比較。如果值小於9,角度將被視為0°,則直接將CNT9的輸出傳送給對應的伺服馬達。

操縱桿的源訊號來自GreenPAK晶片內部的VREF0,因此操縱桿讀取的訊號在ADC的工作範圍內。VREF0連接到Pin19,此處的源選擇器設置為ACMP0,並已調整為1,200mV。操縱桿包含一個可用於提供附加功能的按鈕,CNT8用於建構去抖動器,經去抖動改善後的訊號透過Pin20輸出。Pin12配置為低壓數位輸入,因為操縱桿電壓為1,200mV (圖8)。

 

圖8:GreenPAK設計——矩陣1。

(來源:瑞薩電子)

 

為了對設計進行測試,可以用GreenPAK Designer的訊號嚮導,施加不同的訊號到輸入端上(圖9),然後觀察輸出結果(圖10)。

 

圖9:生成鋸齒波。

(來源:瑞薩電子)

 

圖10:不同端子上的輸出訊號(Pin8-黃色、Pin9-藍色、Pin5-紅色、Pin6-綠色)。

(來源:瑞薩電子)

 

小結

本文使用GreenPAK SLG46620晶片建構了一個控制電路,該電路利用兩個透過類比操縱桿操控的伺服馬達,來控制機器手臂的x和y兩個關節。該晶片高效地將所有電路的重要元件整合在一個較小的體積內,不需要外部微控制器,只需要使用很少的外部元件。該設計透過連接多個晶片和伺服馬達,可以擴展建構自由度更大的機器手臂,這樣的系統可以應用於許多不同的工業應用。

(參考原文:Implementing a two-axis robot arm controller without an MCU,by Anas Ajaj)

本文同步刊登於《電子工程專輯》雜誌2022年6月號

 

 

 

 

 

加入我們官方帳號LINE@,最新消息一手掌握!

發表評論