2015年5月16日 星期六

新機械臂設計・五


《AMIGO Arm》的外殻部份已經完成,接著便是電子及軟件部份。

原本打算用 Futaba S3003 伺服馬達,但 TowerPro 的 MG995 也有一大堆,而且力量比 S3003 大,於是改用 MG995。MG995 伺服馬達在幾年前購入,在還沒測試好的情況下已經安裝到手臂上,要寫個簡單的程式測試它們是否運作正常。其實我都打算用 Arduino Nano 作為主板,索性寫個 Arduino 程式來測試:
//------------------------------------------------------------------------------
//  AMIGO Arm for Arduino Nano
//  Copyright Pacess HO, 2015.  All rights reserved.
//------------------------------------------------------------------------------

#include <Servo.h> 

//------------------------------------------------------------------------------
//  Global variables
Servo _servoAlpha;
Servo _servoBeta;
Servo _servoGamma;
Servo _servoZeta;

//  Pin or port used for servo
int _pinAlpha = 11;
int _pinBeta = 10;
int _pinGamma = 9;
int _pinZeta = 6;

//  Initialise angles
int _angleAlpha = 90;
int _angleBeta = 180;
int _angleGamma = 135;
int _angleZeta = 90;

int _status;

//==============================================================================
void setup()  {
    _status = 0;

    _pinAlpha = 11;
    _pinBeta = 10;
    _pinGamma = 9;
    _pinZeta = 6;

    _angleAlpha = 90;
    _angleBeta = _angleAlpha;
    _angleGamma = _angleAlpha;
    _angleZeta = _angleAlpha;

    Serial.begin(115200);

    _servoAlpha.attach(_pinAlpha);
    _servoBeta.attach(_pinBeta);
    _servoGamma.attach(_pinGamma);
    _servoZeta.attach(_pinZeta);

    _servoAlpha.write(_angleAlpha);
    _servoBeta.write(_angleBeta);
    _servoGamma.write(_angleGamma);
    _servoZeta.write(_angleZeta);
} 

//------------------------------------------------------------------------------
void loop()  {

    int delta = 1;
    while (true)  {

    _angleAlpha += delta;
    _angleBeta += delta;
    _angleGamma += delta;

    if (_angleAlpha >= 140)  {delta = -1;}
    if (_angleAlpha <= 40)  {delta = 1;}
    Serial.print(_angleAlpha);
    Serial.print("\n");

    _servoAlpha.write(_angleAlpha);
    _servoBeta.write(_angleBeta);
    _servoGamma.write(_angleGamma);
    _servoZeta.write(_angleZeta);
    delay(20);
    }
}

不過結果很奇怪。MG995 在程式開動時沒有動作,需要人手外加旋轉才能開始轉動。Arduino Nano 及伺服馬達使用不同電源,兩者都是 5v,理應運作順利。要是換上 S3003 的話卻能正常運作。查閱過 MG995 的 Datasheet 也說明了工作電壓 4.8v - 6.0v。一切看似正常,難度要提升到 6v?需要點工具才能準備得到...。

沒有留言: