MG996R 的標準規格是-90度到90度,有少部份的商家有販售可以360度旋轉的版本。標準的規格可以精準地控制想要的角度,適用於舵機、雲台和機械手臂等 地方。但是,如果想要放在自走車中,因為需要能夠360度旋轉,如果你買到的是標準的180度版本,除了買新的之外,也可以選擇自行改裝。本文即說明簡單的改裝方法。
首先,來看一下範例影片:
以下是這部影片中執行的Arduino程式碼:
#include <Servo.h> Servo myservo; int stop_degree = 96; void setup() { myservo.attach(9); } void loop() { myservo.write(0); delay(2000); myservo.write(stop_degree); delay(2000); myservo.write(180); delay(2000); myservo.write(stop_degree); delay(2000); }
伺服馬達之所以能夠控制角度,主要是在內部有一組電路,此電路透過馬達齒輪所連動的可變電阻器回傳目前的旋轉角度,如果到達設定的定點則停止旋轉。因此,要讓此伺服馬達不受旋轉角度的控制,讓該可變電阻失去回傳的能力是第一要務。此外,為了防止轉過頭,在齒輪上也會有一個阻擋用的鐵柱,這個也要一併拆除。首先,是到馬達底部拆下4個螺絲:
這四根螺絲很長,要小心移除,然後在上方以及下方的外殻就可以分別拆下來,在轉軸處的上蓋要小心移除,因為齒輪並沒有固定地非常牢固,只要角度不對,有可能齒輪就會四散而去。上蓋拆下來的樣子如下:
其中右方那個最大的齒輪上方就有一個小小的鐵柱,如下所示:
只要使用尖嘴鉗稍微用一點力氣就可以把它拔下來了。接著小心地把所有的齒輪一個一個取下放好,然後打開下蓋把電路板取出:
其中可變電阻(那個有黑色柱子的)其柱子是突出到上方的蓋子,原本是和齒輪的軸心放在一起的,目的就是為了在齒輪轉動的時候可以讓電路知道目前轉動的位置 ,是為是卡在盒子上,所以要花上一些力氣,用力把它壓出來才有辦法把可變電阻移出到盒子外,取下之後,那個地方就是空的,如下所示:
接下來就要接上電路,進行測試。測試的目的是找出那個可變電阻讓馬達停止所在的位置。所以,需要在Arduino中需要以下的這段程式碼:
#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); } void loop() { myservo.write(90); delay(150); }
此段程式碼是讓伺服馬達寫入90度,習慣上,如果是360度轉動的伺服馬達,我們都是使用90度當做是停止,大於90度正轉,小於90度反轉。當Arduino使用這個角度輸出時,可以去試著轉動可變電阻,你就會發現有時候會正轉,有時候會反轉,請找出那個讓馬達停下來的點就可以了。
找到了停止點之後,再把所有的電路板和可變電阻塞回去,記得那個可變電阻只要塞進盒子中就可以了,不需要再讓可變電阻和齒輪連動了,因為角度對我們來說已經不重要了。所有的東西都鎖好上緊之後,就大功告成囉。
此時就可以拿本文最前面的程式碼來測試一下,使用180度可以正轉,而0度是反轉。另外,照理講應該是90度可以停止的,可是後來我發現停不了,有可能是在塞進去電路板的時候不小心碰到可變電阻了,所以就在90度附近的地方找此值試試,總有一個數值會讓馬達停下來,而在我的例子中試到的停止值是96。
另外,由於MG 996R需要比較大的電力,所以不能直接利用Arduino上的電源,不然經常會導致Arduino重新當機而無法連線。而在連接外部電源的時候有一點一定要注意,就是MG 996R伺服馬達的地線GND,除了連接外接電源的GND之外,也要同時連線到Arduino的GND,整個系統才能夠順利運作喔。以下是硬體的連線圖:
(7334)
近期留言