DIY機械手臂(Part 4):以Arduino操控

七月 23, 2015
Facebook
Twitter
本專題是機器手臂教學的第四部分。在第一部份示範的是如何設計手臂,第二部分是設計底座,而第三部分是設計支架
完成所有之前關於製作機械手臂的文章(如上方連結)中電腦輔助製圖(CAD)和3D模型設計後,我們可以開始探索控制機械手臂的方法了。要控制機械手臂有很多方法。實際控制手臂動作的是步進馬達,而控制步進馬達的最佳方法是透過微控制器。你可能已經熟悉幾種微控制器(有很多好用的選擇);而因為步進馬達的使用相對簡單,可以將它們導入由Arduino、Raspberry Pi甚至Beaglebone Black等較複雜的控制器所驅動的專題。
針對這組機械手臂,我將專注於Arduino,因為它雖然簡單,仍然可進行動態整合。我喜歡Arduino還因為所有需要的外部設備只有一臺電腦和一條連接線。雖然這對經驗比較豐富的Maker而言會很基礎,但瞭解電腦用來控制手臂的最基本邏輯是很重要的。瞭解它的基本功能可以讓你在之後有需要時將專題擴充、加入旋轉編碼器或給機器人較有限的反應式控制的按鈕。
一步步增加複雜性的另一個好處是,如果發生失誤或計算錯誤,不會一直延續到很難挽救的地步。這也是我們先用麵包板接線再焊接及安裝的主要原因之一。有個很好的例子是我高估了底座馬達的力量,也就是說它無法同時讓整個手臂活動,只有頂端部分可以。如果我已經增加了不必要的複雜性,就要多花很多工夫去修正錯誤。現在我有了選擇:可以減輕手臂重量或換裝更強大的馬達。

我們之後還會探討這個問題。目前手臂的上部可以活動,所以我們來學習如何以Arduino給予動作指令、控制馬達。

第一步:H橋

图片

  • 第一步是取得H橋,它是一種雙極性步進馬達驅動器。
  • H橋有幾種選擇。多數人使用L293D積體晶片,但我用的是SN754410積體電路。雖然有些微差異,他們有相同的接腳排列和相同的功能。

第二步:電源及接地

  • 現在我們開始連接麵包板和Arduino的線路。我在Arduino的腳位插入了4種不同的線,用來傳送信號到馬達。
  • 我也把4個電壓接腳插入電壓軌,接著把電壓軌插入Arduino5V腳位。電壓接腳為18916
    註:讀取積體電路上的接腳時,從緊鄰上方小凹陷的左側開始、左邊往下、跨過另一面,再從右邊上來。這個順序很重要。如果搞混了,請參考電路圖。
  • 最後,我從Arduino的接地連一條線到H橋的4個接地接腳之一。

第三步:將馬達插入H橋

  • 將馬達插入H橋。我已經確認我的線的顏色和馬達的線的顏色有對應。
  • 藍色插入H橋第3腳位
    註:圖中顏色不符,請注意。
  • 黃色插入H橋第6腳位
    註: 圖中顏色不符,請注意。
  • 粉紅/紫色插入H橋第11腳位 
    註: 圖中顏色不符,請注意。
  • 橘色插入H橋第14腳位
    註: 圖中顏色不符,請注意。

第四步:將Arduino插入H橋

  • 最後,把Arduino插入H橋。這時我們也要依照特定順序來插入,因為在程式碼中需要宣告每個腳位。
    • 12腳位插入H橋第2腳位
    • 11腳位插入H橋第7腳位
    • 10腳位插入H橋第10腳位
    • 9腳位插入H橋第15腳位
  • 現在全部都接好了,把Arduino接上電腦並開啟Arduino IDE

第五步:程式碼和控制

  • 複製以下程式碼:

    /*
     Stepper Motor Control 

     Moving and command giving 
     */ 

    #include 

    const int stepsPerRevolution = 100; //變更為適合你的馬達的每轉步數

    // 初始化第8到第11腳位的步進資料庫:
    Stepper myStepper(stepsPerRevolution, 9, 10, 11, 12); 

    void setup() {
      // 設速度為60rpm
      myStepper.setSpeed(50);
      //
    初使化序列埠:
      Serial.begin(9600);

    void loop() {
      // 單方向第一步旋轉:
      Serial.println(“clockwise”);
      myStepper.step(stepsPerRevolution);
      delay(500); 

      //另一方向第一步旋轉:
      Serial.println(“counterclockwise”);
      myStepper.step(-stepsPerRevolution);
      delay(500);
    }

  • 接著點選自動格式化(這會把程式碼格式化成跟我的一樣)。
  • 我在第二張圖反白的是控制旋轉的方法。用這個變數可以依需要在機械手臂導入邏輯。建議你先嘗試這個簡單的程式碼,再加入邏輯來看看轉一圈需要幾步。

結論

在所有模型設計、列印和工作後,看到完成而且可以運作的成品真是太好了。然而,這只是製作實用機器人的第一步。所有機器人剛開始都很簡單和粗糙,而有趣的是Maker(像我們這樣)會用這些想法創新和把他們變得更好玩。

希望這個專題能激勵你製作自己的機器人!

(譯:屠建明)
[原文]

Social media & sharing icons powered by UltimatelySocial