PR

Arduinoでドライバ内蔵ステッピングモーターを制御

記事内に広告が含まれています。

 姿勢制御に使うリアクションホイールに使用するモーターを選定中です。いろいろ先人たちの情報を見ているとブラシレスDCモーター(BLDC)やステッピングモーターの使用例が多い感じです。

 ただこの類のモーターはDCモーターとは違い通電すれば回転するというわけでなく、別途駆動回路が必要で回転させるには多少面倒。DCモーターでも正転、逆転、速度制御などをする場合は手間なのであまり変わらないかもしれませんが、。

 モーターを探していたら、ドライバ内蔵(駆動回路内蔵)のステッピングモーターがあるのを発見。さっそくいくつか入手してみました。

スポンサーリンク

入手したステッピングモーター

 ブラシレスDCモーターと思って入手したつもりだったのすが、動かしてみたら(たぶん)ステッピングモーターな雰囲気の制御感。商品タイトルにはブラシレスサーボモーターとあったので、もういろいろ勘違いやら紛らわしいやらでごっちゃな感じになってしまいました。

ピン配置

 型番から調べたのですが、ほとんど情報が出てこなかったので商品ページからの写真です。PWM信号とあったのと商品名にブラシレスとあったのでこの時点では完全にBLDCモーターと思ってます。モーター用の電源線(+12vとGND)が2線ずつあるのが不明。細いから?こういうものなのでしょうか。。

 中央4本がフィードバックとなってるのと商品説明から恐らくエンコーダから回転数が検出できる物と思われます。が商品説明では▼

 フィードバック信号については詳細不明、、紫線だけはGNDと判明しているとのこと。まぁ適当に出力信号調べればなんとかなりそうなのでフィードバックはいったん無視して進めます。

スポンサーリンク

結線とスケッチ

 さっそくピン配置通りにArduinoと結線です。電源は安定化電源より供給。

モーター側Arduino側内容
+12v安定化電源モーター電源
DirectionArduino 5vピン回転方向切替
BrakeArduino 5vピンEnable/Disable
Start/StopArduino 5vピン回転/停止
PWMArduino 3番ピン速度制御
GndArduino GndGnd

 フィードバックの信号線は不明のため使用せずにテスト。

▼ソース▼

#include "pwm.h"

PwmOut pwm3(3);

void setup() {
  pwm3.begin(50, 25); //周期  50us = 20kHz; パルス幅 25us = 50%
}

void loop() {}

 3番ピンからPWM出力しているだけのソース。モーターは定速回転するはずです。UNO R3には無い関数を使っているためこのスケッチはR4にしか使えません。

稼働確認

 先ほどのスケッチで特に問題無く回転することを確認。正転逆転を手動で切り替えてます。この後、PWMのディーティ比を変えて回転速度制御を試したのですが、なぜか回転速度が変わりません。。

 よくよく商品ページ確認すると回転速度について以下のように記述が。

 回転速度は周波数?で制御するようです。これ計算すると0.9°/パルスになります。ステッピングモーター(パルスモーター)と同じ要領ですね。試しに以下のスケッチで回転を確認してみました。

void setup() {
  pinMode(3, OUTPUT);
}

void loop() {
  for (uint32_t i = 0; i < 800; i++) {
    digitalWrite(3, !digitalRead(3));
    delay(1);
  }
  delay(1000);
}

 3番ピンからパルス信号送ります。1週(400パルス)回ったら1秒のインターバルを入れてるだけのスケッチで試してみたら、予想通りの回転しました、、、。

 ブラシレスDCモーターかと思って入手したのですが、勘違いしていたようです。商品にもきちんとサーボと記載がありましたしよく見ないとだめですね。ブラシレス/ステッピング/サーボの違いが良く分からなくなってきました。

 あと、フィードバック信号をいろいろ試してみたのですが結局使い方はわからないまま。。回転数検出は今のところ断念。個人的に回転速度を周波数(パルス)で制御するのはちょっと好まないです。もう一つ似たようなモーターを入手しているのでそちらの使い勝手も見てみたいと思います。

スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました